Files
intellecton/venv/lib/python3.12/site-packages/fontTools/__pycache__/tfmLib.cpython-312.pyc
T

147 lines
18 KiB
Plaintext
Raw Normal View History

Ë
zRj¾7ãó:dZddlmZddlmZmZmZdZee«ZdZ de dZ
de
d Z de d
Z de d Z
ee
«Zee «Zee «Zee
«Zd Zgd
¢Zgd¢Zgd¢ZdZdZdZdZdZdZdZdZdZdZdZ dZ!Gdde"«Z#Gdd«Z$e%dk(rddl&Z&e$e&jNd«Z(e)djUdde(jVde(jXde(jZde(j\de(j^d e(j`d!e(jbd"e(jdd#e(jfd$e(jhd%e(jjd&e(jld'e(jnd(e(jpfD«««e)e(«yy))u1Module for reading TFM (TeX Font Metrics) files.
The TFM format is described in the TFtoPL WEB source code, whose typeset form
can be found on `CTAN <http://mirrors.ctan.org/info/knuth-pdf/texware/tftopl.pdf>`_.
>>> from fontTools.tfmLib import TFM
>>> tfm = TFM("Tests/tfmLib/data/cmr10.tfm")
>>>
>>> # Accessing an attribute gets you metadata.
>>> tfm.checksum
1274110073
>>> tfm.designsize
10.0
>>> tfm.codingscheme
'TeX text'
>>> tfm.family
'CMR'
>>> tfm.seven_bit_safe_flag
False
>>> tfm.face
234
>>> tfm.extraheader
{}
>>> tfm.fontdimens
{'SLANT': 0.0, 'SPACE': 0.33333396911621094, 'STRETCH': 0.16666698455810547, 'SHRINK': 0.11111164093017578, 'XHEIGHT': 0.4305553436279297, 'QUAD': 1.0000028610229492, 'EXTRASPACE': 0.11111164093017578}
>>> # Accessing a character gets you its metrics.
>>> # “width†is always available, other metrics are available only when
>>> # applicable. All values are relative to “designsizeâ€.
>>> tfm.chars[ord("g")]
{'width': 0.5000019073486328, 'height': 0.4305553436279297, 'depth': 0.1944446563720703, 'italic': 0.013888359069824219}
>>> # Kerning and ligature can be accessed as well.
>>> tfm.kerning[ord("c")]
{104: -0.02777862548828125, 107: -0.02777862548828125}
>>> tfm.ligatures[ord("f")]
{105: ('LIG', 12), 102: ('LIG', 11), 108: ('LIG', 13)}
é)ÚSimpleNamespace)ÚcalcsizeÚunpackÚunpack2a
>
lf: h # length of the entire file, in words
lh: h # length of the header data, in words
bc: h # smallest character code in the font
ec: h # largest character code in the font
nw: h # number of words in the width table
nh: h # number of words in the height table
nd: h # number of words in the depth table
ni: h # number of words in the italic correction table
nl: h # number of words in the ligature/kern table
nk: h # number of words in the kern table
ne: h # number of words in the extensible character table
np: h # number of font parameter words
z12.20Fz;
>
checksum: L
designsize: ú
z
z
codingscheme: 40p
z
family: 20p
zm
seven_bit_safe_flag: ?
ignored: x
ignored: x
face: B
zI
>
skip_byte: B
next_char: B
op_byte: B
remainder: B
)ÚSLANTÚSPACEÚSTRETCHÚSHRINKÚXHEIGHTÚQUADÚ
EXTRASPACE)ÚNUM1ÚNUM2ÚNUM3ÚDENOM1ÚDENOM2ÚSUP1ÚSUP2ÚSUP3ÚSUB1ÚSUB2ÚSUPDROPÚSUBDROPÚDELIM1ÚDELIM2Ú
AXISHEIGHT)ÚDEFAULTRULETHICKNESSÚ
BIGOPSPACING1Ú
BIGOPSPACING2Ú
BIGOPSPACING3Ú
BIGOPSPACING4Ú
BIGOPSPACING5éééé€cóeZdZˆfdZˆxZS)Ú TFMExceptioncó$t||«y©N)ÚsuperÚ__init__)ÚselfÚmessageÚ __class__s €úS/home/antigravity/intellecton/venv/lib/python3.12/site-packages/fontTools/tfmLib.pyr-zTFMException.__init__šsø€Ü
јÕ)Ú__name__Ú
__module__Ú __qualname__r-Ú
__classcell__)r0s@r1r)r)s
ø„÷"r2r)cóeZdZdZdZdZy)ÚTFMcó&|j|«yr+)Ú_read)r.Úfiles r1r-z TFM.__init__ŸsØ
r2cóXd|jd|jd|jddS)Nz <TFM for z in z at Úgzpt>)ÚfamilyÚ codingschemeÚ
designsize)r.s r1Ú__repr__z TFM.__repr__¢s8ðØ—K‘K4—?? % 

r2có‡ ‡!‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-‡.‡/‡0—t|d«r|j«Š!n%t|d«5}|j«Š!ddd«‰!|_t ‰!«t
kr t
d«t«Š.tt‰!‰.«‰.jdkr t
d«t ‰!«‰.jdzkr t
d«t‰.«j«D]\}}|dksŒ t
d«‰.jd krt
d
‰.jd «‰.j‰.jd zkDs‰.jd
kDr&t
d‰.jd‰.jd«‰.j dk(s-‰.j"dk(s‰.j$dk(s‰.j&dk(r t
d«‰.j(dkDrt
dt(d«‰.jd‰.jz‰.j‰.jz
d zz‰.j z‰.j"z‰.j$z‰.j&z‰.j*z‰.j,z‰.j(z‰.j.zk7r t
d«d‰.jz‰.jz
Љ.jzd zŠ/‰/‰.j zŠ%‰%‰.j"zŠ"‰"‰.j$zŠ'‰'‰.j&zŠ*‰*‰.j*zŠ)‰)‰.j,zŠ$‰$‰.j(zŠ+ˆfdŠ ˆ ˆ!fdŠ0ˆ.ˆ0fd}ˆ ˆ!fdŠ&ˆ ˆ!fdŠ#ˆ ˆ!fdŠ(ˆ ˆ!fd}ˆ ˆ!fdŠ-ˆ,ˆ/ˆ0fd}ˆ%ˆ&ˆ,fd „}ˆ"ˆ#ˆ,fd!„} ˆ'ˆ(ˆ,fd"„}
ˆ$ˆ-fd#„} ˆ*fd$„} ˆ!fd%„}
ˆ)ˆ,fd&„}ˆ+fd'„}dFˆ!fd(„ Š,t1t2dgt4z|«d)}‰.jdz}i|_|t4k\r¦tt2‰!|d|«d }|j8d*kr:|j8d z}|j8d z}d+|d,zd-|zd.|d,zz|_t;‰.jt4dzz
«D]#}td/|d*zd0||j6«d }Œ%nY|t<k\rtt>‰!|d|«n;|t@k\rttB‰!|d|«n|tDk\rttF‰!|d|«tH|_%|jLjO«}|jQd1«r tR|_%n|jQd2«r tT|_%i|_+t;‰.j.«D]|}d3|d z}|dkr
tX|}nI|jJtRk(r|d4kr
tZ|d5z
}n$|jJtTk(r|d6kr t\|d5z
}‰,||«||jV«Œ~i}d|_/d|_0‰.j*dkD|
| d««}|jbd
k(r|jd|_/|
| ‰.j*d z
««}|jbd
k(r2d|_0d|jfz|jhz}|||j`<i|_5t;‰.j‰.jd z«D]}‰0|«dkDsŒix|jj|<}||«|d7<‰&|«dkDr ||«|d8<‰#|«dkDr | |«|d9<‰(|«dkDr |
|«|d:<||«}|tlk(rŒ€|tnk(r ‰-|«||<Œ•|tpk(r ‰-|«|d;<Œª|trk(sŒ´ix|d<<}t;d«D]G}‰!| |«|z}|d,k(s|dkDsŒd=}|dk(rd>}n|d k(rd?}n|d k(rd@}||«r|||<ŒC|||<ŒIŒi|_:i|_;ty|j««D\}}|
| |««}|jbtzkDrd|jfz|jhz}|‰.j*ksŒT|
| |««}|jbtzkDrnï|jft|k\rSd|jft|z
z|jhz}||«|jvj|i«|jd<n‰|jf}|dk(s
|d5kDr|dAk7r|}n6dB}|dzd kDr|dCz
}|dDz
}|d zdk7r|dCz
}|d,kDr|dEz
}|dz}|d,kDrŒ||jhf|jtj|i«|jd<|jbtzk\rŒz||jbd zz
}|‰.j*krŒIŒŸy#1swY Œ+xYw)GNÚreadÚrbzToo short input filerz0The file claims to have negative or zero length!éz(The file has fewer bytes than it claims!z'The subfile size: '{name}' is negative!r%zThe header length is only ú!r$éÿzThe character code range z..z is illegal!z-Incomplete subfiles for character dimensions!éz
There are z extensible recipes!éu0Subfile sizes don’t add up to the stated totalcód|zzS©NrE©)ÚcÚ char_bases €r1Ú char_infozTFM._read.<locals>.char_infoôsø€Ø˜  A™
Ñ &r2có|«Sr+rL©rMrOÚdatas €€r1Ú width_indexzTFM._read.<locals>.width_index÷sø€Ø ! Ñ %r2có^|jkxs|jkDxs |«dk(S)Nr)ÚbcÚec)rMÚsizesrSs €€r1Ú noneexistentzTFM._read.<locals>.noneexistentús,ø€Øu—xxF 1 u§x¡x¡<ÒF±;¸q³>ÀQÑ3FÐ Fr2có&|«dzdzS©Nr$érLrQs €€r1Ú height_indexzTFM._read.<locals>.height_indexýsø€Ø !  )¨RÑ /r2có&|«dzdzSrZrLrQs €€r1Ú depth_indexzTFM._read.<locals>.depth_indexsø€Ø !  )¨BÑ .r2có&|«dzdzS©Nr%rErLrQs €€r1Ú italic_indexzTFM._read.<locals>.italic_indexsø€Ø !  )¨QÑ .r2có&|«dzdzSr`rLrQs €€r1ÚtagzTFM._read.<locals>.tagsø€Ø !  )¨AÑ -r2có |«dzS)Nr&rLrQs €€r1Ú remainderzTFM._read.<locals>.remainder sø€Ø !   )r2có8d|«zz}|d«dS©NrEÚvrL)rMÚ
read_fixedÚ
width_baserSs €€€r1ÚwidthzTFM._read.<locals>.width ó(ø€ØZ¡+¨a£.Ñ1ˆAÙ˜a Ó%  *r2có8d|«zz}|d«dSrgrL)rMriÚ height_baser\rjs €€€r1ÚheightzTFM._read.<locals>.heightó(ø€Ø[¡<°£?Ñ3ˆ˜a Ó%  *r2có8d|«zz}|d«dSrgrL)rMriÚ
depth_baser^rjs €€€r1ÚdepthzTFM._read.<locals>.depthrmr2có8d|«zz}|d«dSrgrL)rMriÚ italic_baserarjs €€€r1ÚitaliczTFM._read.<locals>.italicrqr2có d|«zzSrKrL)rMÚ
exten_baseres €€r1ÚextenzTFM._read.<locals>.extensø€Ø˜
¡Y¨q£\Ñ 2r2cód|zzSrKrL)Ú
lig_kern_bases €r1Úlig_stepzTFM._read.<locals>.lig_stepsø€Ø˜
¨Ñ *r2cóDt«}tt|d|«|Sr+)rrÚLIG_KERN_COMMAND)r|ÚcommandrRs €r1Úlig_kern_commandz#TFM._read.<locals>.lig_kern_command"s#ø€Ü'ˆ Ô$ d¨1¨2 Ô ˆNr2có,d|zz}|d«dSrgrL)r|riÚ kern_baserjs €€r1ÚkernzTFM._read.<locals>.kern's#ø€ØY #ˆAÙ˜a Ó%  *r2cód|zzSrKrL)r|Ú
param_bases €r1ÚparamzTFM._read.<locals>.param+sø€Ø˜
 Q™Ñ 'r2cóBtd|dt|d|«}|dS)Nz>;ú:r)rÚ FIXED_FORMAT)ÚindexÚkeyÚobjÚretrRs €r1rjzTFM._read.<locals>.read_fixed.s-ø€Ü˜B˜s˜e 1¤\ 3°T¸%¸&°\À3ÓGˆq6ˆMr2ééÚMBLr&ÚRIÚRCEz>;HEADERz:lz TEX MATH SYz TEX MATH EXÚ PARAMETERééé rlrprtrwÚ
nextlargerÚvarcharÚrepÚtopÚmidÚboté ÚúLIGú>r+)@ÚhasattrrCÚopenÚ_dataÚlenÚ
SIZES_SIZEr)rrÚ SIZES_FORMATÚlfÚvarsÚitemsÚlhrUrVÚnwÚnhÚndÚniÚneÚnlÚnkÚnprÚHEADER_FORMAT4Ú HEADER_SIZE4Ú extraheaderÚfaceÚrangeÚ HEADER_SIZE3ÚHEADER_FORMAT3Ú HEADER_SIZE2ÚHEADER_FORMAT2Ú HEADER_SIZE1ÚHEADER_FORMAT1ÚVANILLAÚfonttyper?ÚupperÚ
startswithÚMATHSYÚMATHEXÚ
fontdimensÚ BASE_PARAMSÚ
MATHSY_PARAMSÚ
MATHEX_PARAMSÚright_boundary_charÚleft_boundary_charÚ skip_byteÚ next_charÚop_bytereÚcharsÚNO_TAGÚLIG_TAGÚLIST_TAGÚEXT_TAGÚ ligaturesÚkerningÚsortedÚ STOP_FLAGÚ KERN_FLAGÚ