+
    i7                     J   R t ^ RIHt ^ RIHtHtHt Rt]! ]4      tRt	R]	 R2t
R]
 R2tR] R	2tR] R
2t]! ]
4      t]! ]4      t]! ]4      t]! ]4      tRt. R!Ot. R"Ot. R#Ot^ t^t^t^ t^t^t^ t^t^t^t^t ^t! ! R R]"4      t# ! R R4      t$]%R8X  Ed
   ^ RI&t&]$! ]&PN                  ^,          4      t(])! RPU                  R R](PV                   2R](PX                   2R](PZ                   2R](P\                   2R](P^                   2R](P`                   2R](Pb                   2R](Pd                   2R](Pf                   2R](Ph                   2R](Pj                   2R](Pl                   2R](Pn                   2R ](Pp                   23 4       4      4       ])! ](4       R# R# )$u  Module 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
z12.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
c                   2   a a ] tR t^t oV 3R ltRtVtV ;t# )TFMExceptionc                &   < \         SV `  V4       R # N)super__init__)selfmessage	__class__s   &&p/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/fontTools/tfmLib.pyr   TFMException.__init__   s    !     )__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classcell__)r   __classdict__s   @@r   r   r      s     " "r   r   c                   2   a  ] tR t^t o R tR tR tRtV tR# )TFMc                (    V P                  V4       R # r
   )_read)r   files   &&r   r   TFM.__init__   s    

4r   c                X    R V P                    RV P                   RV P                  R R2# )z	<TFM for z in z at gzpt>)familycodingscheme
designsize)r   s   &r   __repr__TFM.__repr__   s8    KK=4$$%4??1%S*	
r   c                Z  aa a!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0 \        VR 4      '       d   VP                  4       o!M-\        VR4      ;_uu_ 4       pVP                  4       o!RRR4       S!V n        \	        S!4      \
        8  d   \        R4      h\        4       o.\        \        S!S.4       S.P                  ^ 8  d   \        R4      h\	        S!4      S.P                  ^,          8  d   \        R4      h\        S.4      P                  4        F  w  r4V^ 8  g   K  \        R4      h	  S.P                  ^8  d   \        RS.P                   R24      hS.P                  S.P                  ^,           8  g   S.P                  ^8  d'   \        R	S.P                   R
S.P                   R24      hS.P                   ^ 8X  g4   S.P"                  ^ 8X  g#   S.P$                  ^ 8X  g   S.P&                  ^ 8X  d   \        R4      hS.P(                  R8  d   \        R\(         R24      hS.P                  ^S.P                  ,           S.P                  S.P                  ,
          ^,           ,           S.P                   ,           S.P"                  ,           S.P$                  ,           S.P&                  ,           S.P*                  ,           S.P,                  ,           S.P(                  ,           S.P.                  ,           8w  d   \        R4      h^S.P                  ,           S.P                  ,
          oSS.P                  ,           ^,           o/S/S.P                   ,           o%S%S.P"                  ,           o"S"S.P$                  ,           o'S'S.P&                  ,           o*S*S.P*                  ,           o)S)S.P,                  ,           o$S$S.P(                  ,           o+V3R lo V V!3R lo0V.V03R lpV V!3R lo&V V!3R lo#V V!3R lo(V V!3R lpV V!3R lo-V,V/V03R lpV%V&V,3R lpV"V#V,3R lp	V'V(V,3R lp
V$V-3R lpV*3R lpV!3R lpV)V,3R  lpV+3R! lpR9V!3R" llo,\1        \2        ^ .\4        ,          V 4       ^pS.P                  ^,          p/ V n        V\4        8  d   \        \2        S!VR V 4      ^,          pV P8                  ^8  d_   V P8                  ^,          pV P8                  ^,          pR#V^,          ,          R$V,          ,           R%V^,          ,          ,           V n        \;        S.P                  \4        ^,          ,
          4       F,  p\        R&V^,            R'2VV P6                  4      ^,          pK.  	  M_V\<        8  d   \        \>        S!VR V 4       M?V\@        8  d   \        \B        S!VR V 4       MV\D        8  d   \        \F        S!VR V 4       \H        V n%        V PL                  PO                  4       pVPQ                  R(4      '       d   \R        V n%        M"VPQ                  R)4      '       d   \T        V n%        / V n+        \;        S.P.                  4       F  pR*V^,            2pV^8:  d   \X        V,          pMaV PJ                  \R        8X  d   V^8:  d   \Z        V^,
          ,          pM0V PJ                  \T        8X  d   V^8:  d   \\        V^,
          ,          pS,! V! V4      W0PV                  4       K  	  / pRV n/        RV n0        S.P*                  ^ 8  d   V! V! ^ 4      4      pVPb                  ^8X  d   VPd                  V n/        V! V! S.P*                  ^,
          4      4      pVPb                  ^8X  d;   RV n0        RVPf                  ,          VPh                  ,           pVVV P`                  &   / V n5        \;        S.P                  S.P                  ^,           4       EFA  pS0! V4      ^ 8  g   K  / ;V Pj                  V&   pV! V4      VR+&   S&! V4      ^ 8  d   V! V4      VR,&   S#! V4      ^ 8  d   V	! V4      VR-&   S(! V4      ^ 8  d   V
! V4      VR.&   V! V4      pV\l        8X  d   K  V\n        8X  d   S-! V4      VV&   K  V\p        8X  d   S-! V4      VR/&   K  V\r        8X  g   K  / ;VR0&   p\;        ^4       Fb  pS!V! V4      V,           ,          pV^8X  g
   V^ 8  g   K)  R1pV^ 8X  d   R2pMV^8X  d   R3pM	V^8X  d   R4pV! V4      '       d   VVV&   K]  VVV&   Kd  	  EKD  	  / V n:        / V n;        \y        VP                  4       4       EF  w  ppV! V! V4      4      pVPb                  \z        8  d%   RVPf                  ,          VPh                  ,           pVS.P*                  8  g   Ka  V! V! V4      4      pVPb                  \z        8  d   EM!VPf                  \|        8  d`   RVPf                  \|        ,
          ,          VPh                  ,           pV! V4      V Pv                  P                  V/ 4      VPd                  &   MVPf                  pV^8X  g   V^8  d   V^8w  d   TpMTR5pV^,          ^8  d
   VR6,          pVR7,          pV^,          ^ 8w  d
   VR6,          pV^8  d   VR8,          pV^,          pK  VVPh                  3V Pt                  P                  V/ 4      VPd                  &   VPb                  \z        8  d   EK  VVPb                  ^,           ,          pEK  	  R#   + '       g   i     E
L; i):readrbNzToo short input filez0The file claims to have negative or zero length!z(The file has fewer bytes than it claims!z'The subfile size: '{name}' is negative!zThe header length is only !zThe character code range z..z is illegal!z-Incomplete subfiles for character dimensions!   z
There are z extensible recipes!u0   Subfile sizes don’t add up to the stated totalc                 $   < ^SV ,           ,          #    r   )c	char_bases   &r   	char_infoTFM._read.<locals>.char_info   s    	A&&r   c                 "   < SS! V 4      ,          # r
   r   r1   r3   datas   &r   width_indexTFM._read.<locals>.width_index   s    	!%%r   c                 v   < V SP                   8  ;'       g#    V SP                  8  ;'       g    S! V 4      ^ 8H  # )    )bcec)r1   sizesr8   s   &r   noneexistentTFM._read.<locals>.noneexistent   s2    uxx<FF1uxx<FF;q>Q3FFr   c                 >   < SS! V 4      ^,           ,          ^,          #    r   r6   s   &r   height_indexTFM._read.<locals>.height_index   s    	!q()R//r   c                 >   < SS! V 4      ^,           ,          ^,          # rB   r   r6   s   &r   depth_indexTFM._read.<locals>.depth_index   s    	!q()B..r   c                 >   < SS! V 4      ^,           ,          ^,          #    r   r6   s   &r   italic_indexTFM._read.<locals>.italic_index  s    	!q()Q..r   c                 >   < SS! V 4      ^,           ,          ^,          # rJ   r   r6   s   &r   tagTFM._read.<locals>.tag  s    	!q()A--r   c                 0   < SS! V 4      ^,           ,          # )   r   r6   s   &r   	remainderTFM._read.<locals>.remainder	  s    	!q())r   c                 P   < ^SS! V 4      ,           ,          pS! VR4      R,          # r0   vr   )r1   r
read_fixed
width_baser8   s   & r   widthTFM._read.<locals>.width  (    Z+a.01Aa%c**r   c                 P   < ^SS! V 4      ,           ,          pS! VR4      R,          # rV   r   )r1   rX   height_baserD   rY   s   & r   heightTFM._read.<locals>.height  (    [<?23Aa%c**r   c                 P   < ^SS! V 4      ,           ,          pS! VR4      R,          # rV   r   )r1   rX   
depth_baserG   rY   s   & r   depthTFM._read.<locals>.depth  r]   r   c                 P   < ^SS! V 4      ,           ,          pS! VR4      R,          # rV   r   )r1   rX   italic_baserL   rY   s   & r   italicTFM._read.<locals>.italic  rb   r   c                 0   < ^SS! V 4      ,           ,          # r/   r   )r1   
exten_baserS   s   &r   extenTFM._read.<locals>.exten  s    
Yq\122r   c                 $   < ^SV ,           ,          # r/   r   )ilig_kern_bases   &r   lig_stepTFM._read.<locals>.lig_step  s    )**r   c                 D   < \        4       p\        \        SV R  V4       V# r
   )r   r   LIG_KERN_COMMAND)rp   commandr7   s   & r   lig_kern_command#TFM._read.<locals>.lig_kern_command"  s#    %'G$d12h8Nr   c                 D   < ^SV ,           ,          pS! VR4      R,          # rV   r   )rp   rX   	kern_baserY   s   & r   kernTFM._read.<locals>.kern'  s#    Y]#Aa%c**r   c                 $   < ^SV ,           ,          # r/   r   )rp   
param_bases   &r   paramTFM._read.<locals>.param+  s    
Q''r   c                 J   < \        R V R\         2SV R V4      pV^ ,          # )z>;:N)r   FIXED_FORMAT)indexkeyobjretr7   s   &&& r   rY   TFM._read.<locals>.read_fixed.  s-    Bse1\N3T%&\3GCq6Mr   MBLRIRCEz>;HEADERz:lzTEX MATH SYzTEX MATH EX	PARAMETERr[   r`   re   ri   
nextlargervarcharreptopmidbot /LIG>r
   )@hasattrr*   open_datalen
SIZES_SIZEr   r   r   SIZES_FORMATlfvarsitemslhr<   r=   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_byterS   charsNO_TAGLIG_TAGLIST_TAGEXT_TAG	ligatureskerningsorted	STOP_FLAG	KERN_FLAG
setdefault)1r   r    fpnamelengthr?   rO   r[   r`   re   ri   rm   rr   rw   r{   r   offsetrestsbrp   schemelig_kern_mapcmdrX   r1   infochar_tagr   partligr2   r3   r7   rd   rG   rl   r_   rD   rh   rL   rz   rq   r~   rY   rS   r>   rZ   r8   s1   &&                             @@@@@@@@@@@@@@@@@@r   r   	TFM._read   s   4  99;DdD!!Rwwy " 
t9z!566!dE* 88a<QRRt9uxx!|#IJJ K--/LDz"#LMM 0 88a<!;EHH:QGHH88ehhl"ehhn+EHH:RzN  88q=EHHMUXX]ehh!mNOO88c>B4/CDEE88hhxx%(("Q&( hh hh	
 hh hh hh hh hh	 hh

 QRR L588+	)A-
 588+ 588+
 588+#ehh.!EHH,	)
%((*

	'	&	G	0	/	/	.	*	+	+	+	+	3	+	
	+	(	
 	~s\148A\!>4=$?BDyy2~IIMIIN!!a%L472U16]B	588la&778!b&4dD<L<LMaP 9|#NDM48|#NDM48|#NDM48""((*]++"DM}--"DMuxxAqse$DAv"1~&(Q"W$QU+&(Q"W$QU+uQx7 ! #' "&88a<"8A;/C}}#+.==("8UXX\#;<C}}#*-'#++%589T445
uxxA.A1~!'))

1 %aW?Q&%+AYDNq>A%$)!HDM?Q&%+AYDNq6v%(&/lLO))21D&(022DOg"1X#E!HqL16TAX#(D Av',!"a',!"a',+D110104 &' /D <--/0DAq"8A;/C}}y(#++%5ehh,&x{3==9,{{i/3;;#:;cmmKHLQ//26s}}EKK6a!eR #$C"$C 1uqy #s
5LC 1uz #s
"#a% #s
 !QMMK11!R8G
 ==I-S]]Q&&I 1} "!!s   
ll*	)
r   r   r   r   r   r   r   r   r   r   N)	r   r   r   r   r   r'   r   r   r   )r   s   @r   r   r      s     
F' F'r   r   __main__Nc              #   &   "   T F  pVx  K	  	  R # 5ir
   r   ).0xs   & r   	<genexpr>r     s      
 s   ztfm.checksum=ztfm.designsize=ztfm.codingscheme=ztfm.fonttype=ztfm.family=ztfm.seven_bit_safe_flag=z	tfm.face=ztfm.extraheader=ztfm.fontdimens=ztfm.right_boundary_char=ztfm.left_boundary_char=ztfm.kerning=ztfm.ligatures=z
tfm.chars=)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)9__doc__typesr   fontTools.misc.sstructr   r   r   r   r   r   r   r   r   r   r   r   r   r   ru   r   r   r   r   r   r   UNREACHABLEPASSTHROUGH
ACCESSABLEr   r   r   r   r   r   	Exceptionr   r   r   sysargvtfmprintjoinchecksumr&   r%   r   r$   seven_bit_safe_flagr   r   r   r   r   r   r   r   r   r   r   <module>r     sN  #J " < <  l#
 ' ( 
 
  '''' $ 	
	

	


		"9 "
R' R'j z
chhqk
C			 
  ~.!#..!12#C$4$4#56~.cjj\**3+B+B*CDCHH:&"3??"34!#..!12*3+B+B*CD)#*@*@)ABs{{m, 0SYYK(
 	
* 
#J3 r   