
    hQ                        S r SSKrSSKJr  SSKJr  SSKJrJrJ	r	J
r
  SSKJrJrJr  SSKJr  SSKrSSKrSrS	rSr  SS
KJr  Sr " S S\5      r " S S\5      rS6S jrS7S jrSr Sr!S6S jr"S6S jr#S r$S r%S r&S6S jr'Sr(\RR                  " S\RT                  S9r+Sr,Sr-Sr.\RR                  " S 5      r/S! r0S" r1S# r2S$ r3\RR                  " S%5      r4S& r5S' r6S( r7\8" \5      r9\9Ru                  S)5        \8" \5      r;\;Ry                  S*S+/5        / S,Qr=S-r>/ S.Qr?S/r@S0rAS1rBS2S3/rCS4S5/rDg! \ a    SSKr Nf = f! \ a    Sr Nf = f)8a  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)StandardEncodingjvrz1.0b3)Res   c                       \ rS rSrSrg)T1Error0    N)__name__
__module____qualname____firstlineno____static_attributes__r       J/var/www/html/env/lib/python3.13/site-packages/fontTools/t1Lib/__init__.pyr   r   0   s    r   r   c                   `    \ rS rSrSrSS jrSS jrS rS rS r	S	 r
S
 rS rS rSS jrSrg)T1Font4   zhType 1 font class.

Uses a minimal interpeter that supports just about enough PS to parse
Type 1 fonts.
Nc                     Uc  [        U5      u  U l        nOPUS:X  a  [        U5      U l        O9US:X  a  [        U5      U l        O"US:X  a  [	        U5      U l        O[        U5      eX l        g )NLWFNPFBOTHER)readdatareadLWFNreadPFB	readOther
ValueErrorencoding)selfpathr(   kind_s        r   __init__T1Font.__init__;   s\    <:LDIqV^ DIU]DIW_!$DIT"" r   c                 8    [        XR                  5       X#5        g N)writegetData)r)   r*   typedohexs       r   saveAsT1Font.saveAsH   s    dLLND0r   c                 f    [        U S5      (       d  U R                  5       U l        U R                  $ )Nr#   )hasattr
createDatar#   r)   s    r   r2   T1Font.getDataK   s'    tV$$)DIyyr   c                     U S   $ )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:   s    r   getGlyphSetT1Font.getGlyphSetP   s     M""r   c                 b    [        U S5      (       d  U R                  5         U R                  U   $ )Nfont)r8   parserA   )r)   keys     r   __getitem__T1Font.__getitem__[   s&    tV$$JJLyy~r   c                 &   SSK Jn  SSK Jn  UR                  U R                  U R
                  5      U l        U R                  S   nU R                  S   R                  SS5      nUS:  d   eU R                  S   S   nUR                  5        H2  u  pg[        R                  " US	5      u  pxUR                  XtS  US
9X6'   M4     [        [        U5      5       H2  n	[        R                  " XY   S	5      u  pxUR                  XtS  US
9XY'   M4     U ?g )Nr   )psLib)psCharStringsr=   PrivatelenIV   Subrs  )subrs)fontTools.miscrG   rH   suckfontr#   r(   rA   getitemsr   decryptT1CharStringrangelen)
r)   rG   rH   charStringsrJ   rN   	glyphName
charStringRis
             r   rB   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           	         U R                   nSn0 n/ nUR                  U R                  SUS    35      U R                  S[        R                   S35      U R                  SUS    35      /5        SnUS-  nUS	-  n[
         H  nU[        Xa;   5      -  nM     UR                  U R                  U S
35      5        UR                  5        H  u  pgU(       a  XsU'   M  US:X  a  US   nSn[         H  n	U[        X;   5      -  nM     UR                  U R                  SU S
35      5        UR                  5        H%  u  pUR                  U R                  X5      5        M'     UR                  S5        M  U[        ;   a  XsU'   SnM  UR                  U R                  Xg5      5        M     UR                  S5        U R                  U5      nUR                  [        SU/5      5        [        S5       H#  nUR                  U R                  S5      5        M%     UR                  / SQ5        [        US5      nU$ )NFz%!FontType1-1.1: FontNamez
%t1Font: ()z%%BeginResource: font    r       dict dup beginFontInfoz
/FontInfo s   end defT   ends   currentfile eexec    @0000000000000000000000000000000000000000000000000000000000000000)s   cleartomarks   %%EndResources   %%EOF
)rA   extend_tobytes	fontToolsversionfont_dictionary_keysintappendrR   FontInfo_dictionary_keys_make_linesr   encode_eexecr   rU   )r)   sfeexec_began
eexec_dictlinessizerC   valuefisubkeysubvalueeexec_portionr,   r#   s                 r   r9   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                    / nSu  p4nSn[         n[        UR                  5       S S9nU GH`  u  pU	S:X  Ga$  US   nSn[         H  nU[	        X;   5      -  nM     UR                  S5        UR                  U R                  U S35      5        UR                  5        GH  u  pU(       d  U[        :X  a  UnO'U(       d  U[        ;   a  UnOU(       d  U[        ;   a  UnUS	:X  a  UnUS
:X  a&  UR                  U R                  [        5      5        Mu  US:X  Ga  U H  nUR                  5         M     U Vs/ s H  oR                  PM     nnUR                  S[        U5       S3R                  S5      5        [        U5       H  u  nn[         R"                  " [%        [&        S U U/5      S5      u  nnUR                  [%        U R                  SU S[        U5       SU S35      UU R                  SU 35      /5      5        M     UR                  S5        UR                  S5        GM  UR)                  U R+                  X5      5        GM     GM1  U	S:X  Ga  UR                  S5        UR                  U R                  [        US   5       S35      5        US   R                  5        H  u  nnUR                  5         [         R"                  " [%        [&        S U UR                  /5      S5      u  nnUR                  [%        U R                  SU S[        U5       SU S35      UU R                  SU 35      /5      5        M     UR                  S5        GM@  UR)                  U R+                  X5      5        GMc     UR)                  / SQ5        [%        US5      n[         R"                  " [%        [,        U/5      S5      u  nnU$ s  snf )N)NNNrK   c                     U S   S:g  $ )Nr   rI   r   )items    r   <lambda>%T1Font.encode_eexec.<locals>.<lambda>   s    $q'YBVr   )rC   rI   r`   s   dup /Privaterb   rJ   
OtherSubrsrL   z/Subrs z arrayasciirM   dup     defs   putr=   s   dup /CharStrings/s   end put)rd   s%   dup /FontName get exch definefont pops   marks   currentfile closefile
rg   q  )	std_subrssortedrR   Private_dictionary_keysrm   rn   ri   RD_value	ND_values	PD_values
hintotherscompilebytecoderV   encode	enumerater   encryptr   char_IVrh   rp   eexec_IV)r)   rt   ru   RD_keyND_keyNP_keyrJ   rN   sortedItemsrC   rw   prrv   ry   rz   subr_binr[   encrypted_subrrZ   
glyph_namechar_binencrypted_charr{   encrypted_eexecs                           r   rq   T1Font.encode_eexec   s    "2 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   9Oc           
         US:X  a  U R                  SU SU S35      /$ US;   a"  U R                  SU SU(       a  SOS S35      /$ US	:X  a  U[        :X  a  U R                  SU S
35      /$ / nUR                  S5        UR                  S5        [        S5       H6  nX$   nUS:w  d  M  UR                  U R                  SU SU S35      5        M8     UR                  S5        U$ [	        U[
        5      (       a  U R                  SU SU S35      /$ [	        U[        5      (       a"  U R                  SU SU(       a  SOS S35      /$ [	        U[        5      (       a/  U R                  SU SSR                  S U 5       5       S35      /$ [	        U[        5      (       a/  U R                  SU SSR                  S U 5       5       S35      /$ U R                  SU SU S35      /$ )Nr^   r   z /z def)isFixedPitch	ForceBold	RndStemUpr   truefalseEncodingz StandardEncoding defs   /Encoding 256 arrays'   0 1 255 {1 index exch /.notdef put} for   z.notdefr   z putr   z (z) defz [c              3   8   #    U  H  n[        U5      v   M     g 7fr0   str.0vs     r   	<genexpr>%T1Font._make_lines.<locals>.<genexpr>"  s     5Lec!ffe   z] defz {c              3   8   #    U  H  n[        U5      v   M     g 7fr0   r   r   s     r   r   r   $  s     6Mu!s1vvur   z} def)
ri   r   rn   rU   
isinstancer   boollistjointuple)r)   rC   rw   ru   r[   names         r   rp   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                 .    [        XR                  U5      $ r0   )r   r(   )r)   serrorss      r   ri   T1Font._tobytes(  s    q--00r   )r#   r(   rA   )r   NF)strict)r   r   r   r   __doc__r-   r5   r2   r>   rD   rB   r9   rq   rp   ri   r   r   r   r   r   r   4   s<    !1
	#
&3j`D:<1r   r   c                     [         R                  R                  U 5      u  p#UR                  5       n[	        U 5      u  pEUS:X  a  [        X5      S4$ US:X  a  [        X5      S4$ [        U 5      S4$ )z,reads any Type 1 font file, returns raw datar   z.pfbr    r!   )osr*   splitextlowerr   r$   r%   r&   )r*   
onlyHeaderr,   extcreatortyps         r   r"   r"   /  sl    WWd#FA
))+C'-LG
f})611
f}t(%//''r   c                 $   [        U5        UR                  5       n [        R                  " U 5        Sn US:X  a  [        X5        OUS:X  a  [        X5        O[        XU5        SnU(       a$  [        (       d   [        R                  " U 5        g g g ! [        R                   a     Nwf = f! [        R                   a     g f = f! U(       a>  [        (       d2   [        R                  " U 5        f ! [        R                   a     f f = ff f = f)Nr   r   r    r   )	assertType1upperr   removeerror	writeLWFNwritePFB
writeOtherDEBUG)r*   r#   r+   r4   errs        r   r1   r1   <  s    ::<D
		$ C6>d!U]T t5)uu		$ 3 88  88  uu		$88  3sR   B 2C ;B. B+*B+.CCDC32D3D
D	D

Di  P   c                    SSK Jn  U" U 5      n / nUR                  S/ 5       H  n[        UR                  S   5      n[        UR                  S   5      S:w  a  [        S5      eUS;   a/  U(       a  US:X  a    OUR                  UR                  SS 5        Mw  US	;   a    O]US
:X  a6  [        U S5       nUR                  UR                  5       5        SSS5        M  US:X  a  M  [        S[        U5      -   5      e   UR                  5         [        U5      n[        U5        U$ ! , (       d  f       GM  = f! UR                  5         f = f)z)reads an LWFN font file, returns raw datar   )ResourceReaderPOSTr   zcorrupt LWFN filer   ra   ra   N)r`      rK   rbbad chunk code: )fontTools.misc.macResr   rQ   r   r#   r   rn   openr"   reprcloser   r   )r*   r   r   readerr#   rescodefs           r   r$   r$   Z  s   4D!F::fb)C388A;'Dsxx{#q(122v~$!)CHHQRL)$%KK) &%04:=>>! *$ 	T?DK &% 	s$   B%D; 5 D(+D; (
D8	2	D; ;Ec                    / n[        U S5       n UR                  S5      [        S5      :w  a  [        S5      e[	        UR                  S5      5      nUS;   aN  [        UR                  S5      5      nUR                  U5      n[        U5      U:X  d   eUR                  U5        OUS:X  a  O![        S[        U5      -   5      eU(       a  OM  S	S	S	5        [        U5      n[        U5        U$ ! , (       d  f       N&= f)
z'reads a PFB font file, returns raw datar   r      zcorrupt PFB filer   rK   r`   r   N)r   r"   r   r   r   stringToLongrV   rn   r   r   r   )r*   r   r#   r   r   chunklenchunks          r   r%   r%   y  s    D	dD	QvvayGCL(011166!9%Dv~'q	2x(5zX---E"04:=>>  
  T?DK% 
	s   CC00
C>c                 X   [        U S5       nUR                  5       nSSS5        [        W5        [        U5      n/ nU HL  u  pEU(       a/  [	        USS 5      (       a  UR                  [        U5      5        M;  UR                  U5        MN     [        U5      $ ! , (       d  f       N= f)z'reads any (font) file, returns raw datar   NrK   )r   r"   r   findEncryptedChunksisHexrn   deHexStringr   )r*   r   r#   chunksisEncryptedr   s         r   r&   r&     s    	dD	Qvvx 
 &FD$5r++KKE*+KK	 %
 T? 
	s   B
B)c                 p   [         R                  " U SSS5        [         R                  " U S5      n [         R                  " U5        Sn[	        U5      nU Hv  u  pVU(       a  SnOSnU(       d  M  [         R
                  " [        U5      S-   US [        S-
   -   5      nUR                  SUS	5        U[        S-
  S  nUS-   nU(       a  M\  Mx     [         R
                  " [        S
5      S-   5      nUR                  SUS	5        [         R                  " U5        g ! [         R                  " U5        f = f)Njustr   r   ra   i  r    r    r   )
r   FSpCreateResFileFSOpenResFile
UseResFiler   Resourcer   LWFNCHUNKSIZEAddResourceCloseResFile)	r*   r#   resRef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 1AD 9D D5c           	         [        U5      n[        U S5       nU Hk  u  pEU(       a  SnOSnUR                  [        S5      [        U5      -   5        UR                  [	        [        U5      5      5        UR                  U5        Mm     UR                  [        S5      [        S5      -   5        S S S 5        g ! , (       d  f       g = f)Nwbra   r   r   r`   )r   r   r1   r   longToStringrV   )r*   r#   r   r   r   r   r   s          r   r   r     s     &F	dD	Q"(KGGGCL74=01GGLU,-GGEN #) 	
wqz)* 
		s   BB99
Cc           	         [        U5      n[        U S5       n[        S-  nU H  u  pgU(       a  SnOSnUS:X  aX  U(       aQ  U(       aH  UR                  [        R
                  " US U 5      5        UR                  S5        XuS  nU(       a  MF  Mm  Mo  UR                  U5        M     S S S 5        g ! , (       d  f       g = f)Nr   ra   r      )r   r   HEXLINELENGTHr1   r   	hexString)	r*   r#   r4   r   r   
hexlinelenr   r   r   s	            r   r   r     s     &F	dD	Q"a'
"(KqyUGGEOOE+:,>?@GGEN!+.E e
  #) 
		s   A5B1B11
B?   currentfile eexecs   (0[ 	
]*){512})flagss   currentfile closefiles   %-- eexec starts   %-- eexec ends   [0-9A-Fa-f]*$c                 0    [         R                  U 5      S L$ r0   )_ishexREmatch)texts    r   r   r     s    >>$t++r   c                    [        U 5      n/ n U GH!  u  p#U(       a  [        US S 5      (       a  [        U5      n[        R                  " US5      u  pEUSS  nU[        [        5      * S-
  S [        :w  a)  U[        [        5      * S-
  S [        :w  a  [        S5      eUS [        [        5      * S-
   S-   nU R                  [        U-   [        -   5        M  U[        [        5      * S-
  S [        :X  a(  U R                  US [        [        5      * S-
   5        GM  U R                  U5        GM$     [        U 5      $ )	NrK   r   r   ra   zinvalid end of eexec partr  )r   r   r   r   rS   rV   EEXECINTERNALENDr   rn   EEXECBEGINMARKEREEXECENDMARKER
EEXECBEGINr   )r#   r   r   r   	decryptedrZ   s         r   decryptType1r    s+    &FD$U2AY#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           	      N   / n U R                  [        5      nUS:  a  OU[        [        5      -   S-   n[        R	                  X5      nUc  [        S5      eUR                  5       nXUS-    n[        US S 5      (       a  [        U5      n[        R                  " US5      u  pgUR                  [        5      nUS:  a  [        S5      eUR                  SU S U 45        UR                  SUS U[        [        5      -   S-    45        XS  n GM  UR                  SU 45        U$ )Nr   r   zcan't find end of eexec partra   rK   r   )findr  rV   EEXECENDsearchr   startr   r   r   rS   r  rn   )	r#   r   eBeginendMatcheEnd
cypherText	plainTextrZ   	eEndLocals	            r   r   r     s#   F
:&A:#j/)A-??40899~~4!8,
BQ  $Z0J}}Z7	NN#34	q=899q$w-()q*%Ly37G3H'H1'LMNOE{% & MM1d)Mr   c                 \    [         R                  " [        U R                  5       5      5      $ r0   )r   r   r   split)	hexstrings    r   r   r     s    Yy'89::r   s   /FontType\s+1\s+defc                     S H  nU S [        U5       U:X  d  M    O   [        S5      e[        R                  U 5      (       d  [        S5      eU R	                  S5      S:  a  [        S5      eU $ )N)s   %!PS-AdobeFonts   %!FontType1znot a PostScript fontznot a Type 1 fontr  r   znot an encrypted Type 1 font)rV   r   _fontType1REr  r  )r#   heads     r   r   r   &  sp    3#d)$ 4 -..t$$)**yy%&*455Kr   c                 h    Sn[        S5       H   nU[        U SUS-  -  -  US-  -	  5      -  nM"     U$ )Nr   rK      re   )rU   r   )longr   r[   s      r   r   r   7  s?    A1X	Wddq1uo.1q5899 Hr   c                     [        U 5      S:w  a  [        S5      eSn[        S5       H  nU[        X   5      US-  -  -  nM     U$ )NrK   zstring must be 4 bytes longr   re   )rV   r'   rU   r   )r   lr[   s      r   r   r   >  sJ    
1v{677	A1X	WQT]q1u%% Hr   
FontMatrixFSType	Copyright)rL   r   UniqueID
BlueValues
OtherBluesFamilyBluesFamilyOtherBlues	BlueScale	BlueShiftBlueFuzzStdHWStdVW	StemSnapH	StemSnapVr   LanguageGrouppasswordrJ   
MinFeaturer   z/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]def)s   !s   s      s	   
s   ccccs   )stringcurrentfileexch
readstringpop)def)noaccessrB  )put)rC  rD  r   )r!   F)Er   rj   rO   r   fontTools.misc.macCreatorTyper   fontTools.misc.textToolsr   r   r   r   fontTools.misc.psOperatorsr	   r
   r   $fontTools.encodings.StandardEncodingr   r   re
__author____version__r   Carbonr   ImportErrorhaveMacSupport	Exceptionr   objectr   r"   r1   r   r  r$   r%   r&   r   r   r   r  r   Mr  r  r  r  r  r   r  r   r   r#  r   r   r   r   rl   r   ro   rh   r   r   r   r   r   r   r   r   r   r   r   <module>rR     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)   D, ,
D96D< 8D99D< <EE