+
    f7iQ  c                   s   R t ^ RIt^ RIHt ^ RIHt ^ RIHtHtH	t	H
t
 ^ RIHtHtHt ^ RIHt ^ RIt^ RItRtRt^ t  ^ R	IHt ^t ! R
 R]4      t ! R R]4      tR,R ltR-R ltRt ^Pt!R,R lt"R,R lt#R t$R t%R t&R,R lt'Rt(]PR                  ! R]PT                  R7      t+Rt,Rt-Rt.]PR                  ! R4      t/R t0R t1R  t2R! t3]PR                  ! R"4      t4R# t5R$ t6R% t7]8! ]4      t9]9Pu                  R&4       ]8! ]4      t;];Py                  R'R(.4       . R.Ot=R)t>. R/Ot?R*t@R+tAR0tBR1R2.tCR3R4.tDR#   ] d    ^ RIt Li ; i  ] d    ^ t ELi ; i)5a  fontTools.t1Lib.py -- Tools for PostScript Type 1 fonts.

Functions for reading and writing raw Type 1 data:

read(path)
        reads any Type 1 font file, returns the raw data and a type indicator:
        'LWFN', 'PFB' or 'OTHER', depending on the format of the file pointed
        to by 'path'.
        Raises an error when the file does not contain valid Type 1 data.

write(path, data, kind='OTHER', dohex=False)
        writes raw Type 1 data to the file pointed to by 'path'.
        'kind' can be one of 'LWFN', 'PFB' or 'OTHER'; it defaults to 'OTHER'.
        'dohex' is a flag which determines whether the eexec encrypted
        part should be written as hexadecimal or binary, but only if kind
        is 'OTHER'.
N)eexec)getMacCreatorAndType)bytechrbyteord	bytesjointobytes)_type1_pre_eexec_order_type1_fontinfo_order_type1_post_eexec_order)StandardEncodingZjvrz1.0b3)Resc                   s    ] tR t^0tRtR# )T1Error N)__name__
__module____qualname____firstlineno____static_attributes__r       ?/usr/lib64/python3.14/site-packages/fontTools/t1Lib/__init__.pyr   r   0   s    r   r   c                   sl   a  ] tR t^4t o RtRR ltRR ltR tR tR t	R t
R	 tR
 tR tRR ltRtV tR# )T1FontzhType 1 font class.

Uses a minimal interpeter that supports just about enough PS to parse
Type 1 fonts.
Nc                s    Vf   \        V4      w  V n        pMSVR8X  d   \        V4      V n        M;VR8X  d   \        V4      V n        M#VR8X  d   \	        V4      V n        M\        V4      hW n        R # )NLWFNPFBOTHER)readdatareadLWFNreadPFB	readOther
ValueErrorencoding)selfpathr   kind_   &&&& r   __init__ZT1Font.__init__;   s\    <:LDIqV^ DIU]DIW_!$DIT"" r   c                s:    \        WP                  4       W#4       R # N)writegetData)r   r    Ztypedohexs   &&&&r   saveAsZT1Font.saveAsH   s    dLLND0r   c                sh    \        V R 4      '       g   V P                  4       V n        V P                  # )r   )hasattr
createDatar   r      &r   r'   ZT1Font.getDataK   s'    tV$$)DIyyr   c                s    V R,          # )aR  Return a generic GlyphSet, which is a dict-like object
mapping glyph names to glyph objects. The returned glyph objects
have a .draw() method that supports the Pen protocol, and will
have an attribute named 'width', but only *after* the .draw() method
has been called.

In the case of Type 1, the GlyphSet is simply the CharStrings dict.
CharStringsr   r,   r-   r   getGlyphSetZT1Font.getGlyphSetP   s     M""r   c                sl    \        V R 4      '       g   V P                  4        V P                  V,          # )font)r*   parser0   )r   keys   &&r   __getitem__ZT1Font.__getitem__[   s&    tV$$JJLyy~r   c                s^   ^ RI Hp ^ RI Hp VP                  V P                  V P
                  4      V n        V P                  R,          pV P                  R,          P                  R^4      pV^ 8  g   Q hV P                  R,          R,          pVP                  4        F5  w  rg\        P                  ! VR4      w  rxVP                  WtR VR	7      W6&   K7  	  \        \        V4      4       F9  p	\        P                  ! WY,          R4      w  rxVP                  WtR VR	7      WY&   K;  	  V =R# )
    )psLib)psCharStringsr.   PrivatelenIVSubrs  N)subrs)fontTools.miscr5   r6   Zsuckfontr   r   r0   getitemsr    decryptZT1CharStringrangelen)
r   r5   r6   ZcharStringsr8   r;   Z	glyphNameZ
charStringRis
   &         r   r1   ZT1Font.parse`   s   (0NN499dmm<	ii.		)$((!4zz		)$W-%0%6%6%8!I!MM*d;MJ%2%?%?6"% &@ &K" &9
 s5z"A!MM%(D9MJ$11*V2DE1REH # Ir   c           	     s   V P                   pR p/ p. pVP                  V P                  RVR,           24      V P                  R\        P                   R24      V P                  RVR,           24      .4       ^pV^,          pV^,          p\
         F  pV\        Wa9   4      ,          pK  	  VP                  V P                  V R24      4       VP                  4        F  w  rgV'       d   WsV&   K  VR8X  d   VR,          p^p\         F  p	V\        W9   4      ,          pK  	  VP                  V P                  RV R24      4       VP                  4        F%  w  rVP                  V P                  W4      4       K'  	  VP                  R	4       K  V\        9   d	   WsV&   R
pK  VP                  V P                  Wg4      4       K  	  VP                  R4       V P                  V4      pVP                  \        RV.4      4       \        ^4       F#  pVP                  V P                  R4      4       K%  	  VP                  . RO4       \        VR4      pV# )Fz%!FontType1-1.1: FontNamez
%t1Font: (Z)z%%BeginResource: font  dict dup beginZFontInfoz
/FontInfo s   end defT   ends   currentfile eexec 
Z@0000000000000000000000000000000000000000000000000000000000000000)s   cleartomarks   %%EndResources   %%EOF)r0   extend_tobytes	fontToolsZversionfont_dictionary_keysintappendr>   FontInfo_dictionary_keys_make_linesr   encode_eexecr   r@   )r   ZsfZeexec_began
eexec_dictlinessizer2   valueZfisubkeysubvalueeexec_portionr"   r   s   &             r   r+   ZT1Font.createDatas   s   YY
 1"Z.1ABC
9+<+<*=Q?@ 6r*~6FGH	
 	'CC	N"D (T]]dV?#;<=((*JC"'3j 
^6FC--D 7T]]Zv_+MNO(*
$FLL!1!1&!CD )3Z(//"'3"T--c9:) %* 	V))*5Y 5}EFGqALLx01 AB%r   c                s   . pR R R rTp^p\         p\        VP                  4       R R7      pV EFz  w  rV	R8X  Ed5   VR,          p^p\         F  pV\	        W9   4      ,          pK  	  VP                  R4       VP                  V P                  V R24      4       VP                  4        EF  w  rV'       g   V\        8X  d   TpM+V'       g   V\        9   d   TpMV'       g   V\        9   d   TpVR8X  d   TpVR8X  d'   VP                  V P                  \        4      4       K}  VR8X  Ed   V F  pVP                  4        K  	  V Uu. uF  qP                  NK  	  ppVP                  R	\        V4       R
2P                  R4      4       \        V4       F  w  pp\         P"                  ! \%        \&        R V V.4      R4      w  ppVP                  \%        V P                  RV R\        V4       RV R24      VV P                  RV 24      .4      4       K  	  VP                  R4       VP                  R4       EK  VP)                  V P+                  W4      4       EK  	  EKB  V	R8X  Ed   VP                  R4       VP                  V P                  \        VR,          4       R24      4       VR,          P                  4        F  w  ppVP                  4        \         P"                  ! \%        \&        R V VP                  .4      R4      w  ppVP                  \%        V P                  RV R\        V4       RV R24      VV P                  RV 24      .4      4       K  	  VP                  R4       EKZ  VP)                  V P+                  W4      4       EK}  	  VP)                  . RO4       \%        VR4      p\         P"                  ! \%        \,        V.4      R4      w  ppV# u upi )Nc                 s    V ^ ,          R8g  # )r4   r7   r   )Zitemr-   r   Z<lambda>Z%T1Font.encode_eexec.<locals>.<lambda>   s    $q'YBVr   )r2   r7   s   dup /PrivaterE   r8   
OtherSubrsr9   z/Subrs z arrayasciir:   dup     defs   putr.   s   dup /CharStrings/s   end putrG   q  )rF   s%   dup /FontName get exch definefont pops   marks   currentfile closefile
)	std_subrsZsortedr>   Private_dictionary_keysrL   rM   rI   RD_value	ND_values	PD_values
hintotherscompileZbytecoderA   ZencodeZ	enumerater    Zencryptr   char_IVrH   rO   eexec_IV)r   rQ   rR   ZRD_keyZND_keyZNP_keyr8   r;   ZsortedItemsr2   rT   ZprrS   rU   rV   Zsubr_binrC   Zencrypted_subrrB   Z
glyph_nameZchar_binZencrypted_charrW   Zencrypted_eexecs   &&                      r   rP   ZT1Font.encode_eexec   s    "&tT Z--/5VW%JCi	*5FC--D 6_-T]]dV?+CDE(*
$F!h(&:!'#I(=!'#I(=!'( (-T]]:%>?7*(0H$,,. )1CK L8x!2!28 Lws5zl&%A%H%H%QR+4U+;KAx05 )76E?H*E F1-NA "LL )(,.21#Qs>7J6K1VHTU,V)* )7(,&l(C%&!"
	 ,< V,V,T%5%5f%GHM )3N %01MMSM)B%C$DO"TU -7},E,K,K,M(J$$&(-!76E?H4E4E"FG)%NA LL! $&'
|1S5H4I6(RS$T!" !/ $&l ;
 -N  Z(T--c9:O &R 		
 "%."]]9h5N+OQVWw !Ms   O7c           
     s   VR 8X  d   V P                  RV RV R24      .# VR9   d$   T P                  RT RV'       d   RMR R24      .# VR8X  d   V\        8X  d   V P                  RV R24      .# . pVP                  R	4       VP                  R
4       \        R4       F;  pW$,          pVR8w  g   K  VP                  V P                  RV RV R24      4       K=  	  VP                  R4       V# \	        V\
        4      '       d   V P                  RV RV R24      .# \	        V\        4      '       d$   T P                  RT RV'       d   RMR R24      .# \	        V\        4      '       d0   V P                  RV RRP                  R V 4       4       R24      .# \	        V\        4      '       d0   V P                  RV RRP                  R V 4       4       R24      .# V P                  RV RV R24      .# )rD   r]   z /z defr[   ZtrueZfalseZEncodingz StandardEncoding defs   /Encoding 256 arrays'   0 1 255 {1 index exch /.notdef put} fori   z.notdefrZ   z putr\   z (z) defz [c              3   8   "   T F  p\        V4      x  K  	  R # 5ir%   strZ.0Zv   & r   	<genexpr>%T1Font._make_lines.<locals>.<genexpr>"  s     5Lec!ffe   z] defz {c              3   rh   r%   ri   rk   rl   r   rm   rn   $  s     6Mu!s1vvuro   z} def)ZisFixedPitch	ForceBold	RndStemUp)
rI   r	   rM   r@   Z
isinstancerj   ZboollistZjoinZtuple)r   r2   rT   rR   rC   Znames   &&&   r   rO   ZT1Font._make_lines
  s   *MMAcU"UG4"89::<<MMAcU!eF+I"NOPPJ((#.C&DEFF 34GHsA 8Dy(T]]T!BtfD3I%JK $ V$eS!!MMAcU"UG5"9:;;t$$MMAcU!eF+I"NOPPt$$MMAcU"SXX5Le5L-L,MU"STUUu%%MMAcU#chh6Mu6M.M-Nf"UVWWMMAcU!E7$"7899r   c                s.    \        WP                  V4      # r%   )r   r   )r   sZerrorss   &&&r   rI   ZT1Font._tobytes(  s    q--00r   )r   r   r0   )rY   NF)Zstrict)r   r   r   r   __doc__r$   r)   r'   r/   r3   r1   r+   rP   rO   rI   r   Z__classdictcell__)Z__classdict__s   @r   r   r   4   sD     !1
	#
&3j`D:<1 1r   r   c                s    \         P                  P                  V 4      w  r#VP                  4       p\	        V 4      w  rEVR8X  d   \        W4      R3# VR8X  d   \        W4      R3# \        V 4      R3# )z,reads any Type 1 font file, returns raw datar   z.pfbr   r   )osr    ZsplitextZlowerr   r   r   r   )r    
onlyHeaderr"   ZextZcreatorZtyps   &&    r   r   r   /  sl    WWd#FA
))+C'-LG
f})611
f}t(%//''r   c                 s>   \        V4       VP                  4       p \        P                  ! V 4       ^p VR8X  d   \        W4       MVR8X  d   \        W4       M\        WV4       ^ pV'       d(   \        '       g    \        P                  ! V 4       R# R# R#   \        P                   d     Li ; i  \        P                   d     R# i ; i  T'       dA   \        '       g4    \        P                  ! T 4       i   \        P                   d     i i ; ii i ; i)   r   r   N)	assertType1Zupperrv   removeZerror	writeLWFNwritePFB
writeOtherDEBUG)r    r   r!   r(   Zerrr#   r   r&   r&   <  s    ::<D
		$ C6>d!U]T t5)uu		$ 3 88  88  uu		$88  3sR   B 4C ?B6 B32B36CCD(C?>D?DDDDi  c                s   ^ RI Hp V! V 4      p . pVP                  R. 4       F  p\        VP                  ^ ,          4      p\        VP                  ^,          4      ^ 8w  d   \        R4      hVR9   d6   V'       d
   V^8X  d    MVP                  VP                  R,          4       K  VR	9   d    MkV^8X  d?   \        V R4      ;_uu_ 4       pVP                  VP                  4       4       RRR4       K  V^ 8X  d   K  \        R\        V4      ,           4      h	  VP                  4        \        V4      p\        V4       V#   + '       g   i     EK5  ; i  TP                  4        i ; i)
z)reads an LWFN font file, returns raw data)ResourceReaderPOSTzcorrupt LWFN file:   NNrbNbad chunk code: rx   r   )i   i   )ZfontTools.misc.macResr   r=   r   r   r   rM   openr   reprZcloser   ry   )r    rw   r   Zreaderr   rescodefs   &&      r   r   r   Z  s   4D!F::fb)C388A;'Dsxx{#q(122v~$!)CHHRL)$%%KK) &%04:=>>! *$ 	T?DK &%% 	s+   A-E >AE  E/0E E
E E.c                s(   . p\        V R4      ;_uu_ 4       p VP                  ^4      \        ^4      8w  d   \        R4      h\	        VP                  ^4      4      pVR9   dP   \        VP                  ^4      4      pVP                  V4      p\        V4      V8X  g   Q hVP                  V4       M#V^8X  d   M&\        R\        V4      ,           4      hV'       g   K   RRR4       \        V4      p\        V4       V#   + '       g   i     L(; i)z'reads a PFB font file, returns raw datar   zcorrupt PFB filer   Nr   )r   r   r   r   r   stringToLongrA   rM   r   r   ry   )r    rw   r   r   r   Zchunklenchunk   &&     r   r   r   y  s    D	dD		QvvayGCL(011166!9%Dv~'q	2x(5zX---E"04:=>>z 
  T?DK% 
	s   CD DD	c                sx   \        V R4      ;_uu_ 4       pVP                  4       pRRR4       \        X4       \        V4      p. pV FR  w  rEV'       d5   \	        VR,          4      '       d   VP                  \        V4      4       KA  VP                  V4       KT  	  \        V4      #   + '       g   i     L; i)z'reads any (font) file, returns raw datar   NN   N)r   r   ry   findEncryptedChunksisHexrM   deHexStringr   )r    r   r   chunksisEncryptedr      &     r   r   r     s    	dD		Qvvx 
 &FD$5r++KKE*+KK	 %
 T? 
	s   B))B9	c                 s   \         P                  ! V R R^ 4       \         P                  ! V ^4      p \         P                  ! V4       Rp\	        V4      pV F  w  rVV'       d   ^pM^pV'       g   K  \         P
                  ! \        V4      R,           VR\        ^,
           ,           4      pVP                  RVR4       V\        ^,
          R pV^,           pKs  	  \         P
                  ! \        ^4      R,           4      pVP                  RVR4       \         P                  ! V4       R#   \         P                  ! T4       i ; i)Zjustr   i  Z Nr   Z )
r
   ZFSpCreateResFileZFSOpenResFileZ
UseResFiler   ZResourcer   LWFNCHUNKSIZEZAddResourceZCloseResFile)	r    r   ZresRefZresIDr   r   r   r   r   s	   &&       r   r{   r{     s   vvq1tQ'F!v$T*"(K%ll74=4#7%@S-RSBS:T#TUr2ma/12	 #) ll71:,-r*  s   <D/ 3B$D/ /Ec           
      s   \        V4      p\        V R 4      ;_uu_ 4       pV Fp  w  rEV'       d   ^pM^pVP                  \        ^4      \        V4      ,           4       VP                  \	        \        V4      4      4       VP                  V4       Kr  	  VP                  \        ^4      \        ^4      ,           4       RRR4       R#   + '       g   i     R# ; i)wbN)r   r   r&   r   longToStringrA   )r    r   r   r   r   r   r   r   r   r|   r|     s     &F	dD		Q"(KGGGCL74=01GGLU,-GGEN #) 	
wqz)* 
			s   B!CC	c           
      s   \        V4      p\        V R 4      ;_uu_ 4       p\        ^,          pV F{  w  rgV'       d   ^pM^pV^8X  dR   V'       dJ   V'       d@   VP                  \        P
                  ! VRV 4      4       VP                  R4       WuR pKG  Kj  VP                  V4       K}  	  RRR4       R#   + '       g   i     R# ; i)r   N   )r   r   HEXLINELENGTHr&   r    Z	hexString)	r    r   r(   r   r   Z
hexlinelenr   r   r   s	   &&&      r   r}   r}     s     &F	dD		Q"a'
"(KqyUGGEOOE+:,>?@GGEN!+.E 
  #) 
			s   0B9B9AB99C
	   currentfile eexecs   (0[ 	
]*){512})Zflagss   currentfile closefiles   %-- eexec starts   %-- eexec ends   [0-9A-Fa-f]*$c                 s0    \         P                  V 4      R J# r%   )_ishexREZmatch)Ztextr-   r   r   r     s    >>$t++r   c                 s   \        V 4      p. p V EFN  w  r#V'       d   \        VR ,          4      '       d   \        V4      p\        P                  ! VR4      w  rEVR,          pV\        \        4      ) ^,
          R \        8w  d/   V\        \        4      ) ^,
          R \        8w  d   \        R4      hVR\        \        4      ) ^,
           R,           pV P                  \        V,           \        ,           4       K  V\        \        4      ) ^,
          R \        8X  d-   V P                  VR\        \        4      ) ^,
           4       EK=  V P                  V4       EKQ  	  \        V 4      # )r   r^   :r   NNzinvalid end of eexec partNr   ii)r   r   r   r    r?   rA   EEXECINTERNALENDr   rM   EEXECBEGINMARKEREEXECENDMARKER
EEXECBEGINr   )r   r   r   r   Z	decryptedrB   r   r   decryptType1r     s'    &FD$U2Y#E* ==6LI!"I3/0014r:>NNs#344q82>BRR9::!">S)9%:$:Q$>?%GIKK(94~EFc*o%)B/:=E"8S_$4q$89:E"# %$ T?r   c           	      s   . p V P                  \        4      pV^ 8  d   EMV\        \        4      ,           ^,           p\        P	                  W4      pVf   \        R4      hVP                  4       pWV^,            p\        VR,          4      '       d   \        V4      p\        P                  ! VR4      w  rgVP                  \        4      pV^ 8  d   \        R4      hVP                  ^ V RV 34       VP                  ^VRV\        \        4      ,           ^,            34       WR p EK,  VP                  ^ V 34       V# )TNzcan't find end of eexec partr   r^   )findr   rA   EEXECENDsearchr   Zstartr   r   r    r?   r   rM   )	r   r   ZeBeginZendMatchZeEndZ
cypherTextZ	plainTextrB   Z	eEndLocals	   &        r   r   r     s   F
:&A:#j/)A-??40899~~4!8,
B  $Z0J}}Z7	NN#34	q=899q$w-()q*%Ly37G3H'H1'LMNOE{
MM1d)Mr   c                 s\    \         P                  ! \        V P                  4       4      4      # r%   )r    r   r   Zsplit)Z	hexstringr-   r   r   r     s    Yy'89::r   s   /FontType\s+1\s+defc                 s    R F  pV R\        V4       V8X  g   K   M	  \        R4      h\        P                  V 4      '       g   \        R4      hV P	                  R4      ^ 8  d   \        R4      hV # )   %!PS-AdobeFontNznot a PostScript fontznot a Type 1 fontr   znot an encrypted Type 1 font)r   s   %!FontType1)rA   r   _fontType1REr   r   )r   Zheadrl   r   ry   ry   &  sp    3#d)$ 4 -..t$$)**yy%&*455Kr   c                 s    R p\        ^4       F8  pV\        V ^V^,          ,          ,          V^,          ,	          4      ,          pK:  	  V# )r   )r@   r   )Zlongrs   rC      &  r   r   r   7  s?    A1X	Wddq1uo.1q5899 Hr   c                 s    \        V 4      ^8w  d   \        R4      h^ p\        ^4       F)  pV\        W,          4      V^,          ,          ,          pK+  	  V# )r   zstring must be 4 bytes long)rA   r   r@   r   )rs   ZlrC   r   r   r   r   >  sJ    
1v{677	A1X	WQT]q1u%% Hr   Z
FontMatrixZFSTypeZ	Copyrightz/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]defs   ccccs   rt   )r   F)r9   rX   ZUniqueIDZ
BlueValuesZ
OtherBluesZFamilyBluesZFamilyOtherBluesZ	BlueScaleZ	BlueShiftZBlueFuzzZStdHWZStdVWZ	StemSnapHZ	StemSnapVrp   ZLanguageGroupZpasswordr8   Z
MinFeaturerq   )s   !s   s   s   s	   
)ZstringZcurrentfileZexchZ
readstringZpop)def)noaccessr   )put)r   r   )Eru   rJ   r<   r    ZfontTools.misc.macCreatorTyper   ZfontTools.misc.textToolsr   r   r   r   ZfontTools.misc.psOperatorsr   r   r   Z$fontTools.encodings.StandardEncodingr	   rv   ZreZ
__author__Z__version__r~   ZCarbonr
   ZImportErrorZhaveMacSupportZ	Exceptionr   Zobjectr   r   r&   r   r   r   r   r   r{   r|   r}   r   re   ZMr   r   r   r   r   r   r   r   r   r   ry   r   r   rr   rK   rz   rN   rH   r`   rd   r_   rg   rf   ra   rb   rc   r   r   r   <module>r      s  $    > I I 
 B 	 	
	 N	i 	u1V u1v
(4 >0$!0+( "
 ::+2448+ ' #::&',02; zz12" 23    L ) 56     8P
	 
A*+	*+	A   Ns)   D0 0D>;E =D>>E 	EE