ó
    /j-jÿ…  ã                   ó`  • S SK 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
JrJrJr  S SKJr  S SKJrJrJrJr  S SKJr  \ R.                  " \5      r " S S	5      r " S
 S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r \" S5      r!\" S5      r"\" S5      r# " S S5      r$g)é    N)Údeque)ÚBytesIO)ÚBinaryIOÚDequeÚDictÚListÚIteratorÚTupleÚUnion)ÚToUnicodeMap)ÚLexerÚTokenÚKWDÚ	PSLiteral)Únunpackc            	       óâ   • \ rS rSrSrSrSrSr\\4rSr	Sr
Sr\	\
\4r " S	 S
5      rS\S\SS4S jrS\SS4S jrS\SS4S jrS\S\4S jrS\S\\\\\4   \4   \\\\4      4   4S jrSrg)ÚCFFFontProgramé   )Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9Ú.Úeze-NÚ-(‡  z.notdefÚspaceÚexclamÚquotedblÚ
numbersignÚdollarÚpercentÚ	ampersandÚ
quoterightÚ	parenleftÚ
parenrightÚasteriskÚplusÚcommaÚhyphenÚperiodÚslashÚzeroÚoneÚtwoÚthreeÚfourÚfiveÚsixÚsevenÚeightÚnineÚcolonÚ	semicolonÚlessÚequalÚgreaterÚquestionÚatÚAÚBÚCÚDÚEÚFÚGÚHÚIÚJÚKÚLÚMÚNÚOÚPÚQÚRÚSÚTÚUÚVÚWÚXÚYÚZÚbracketleftÚ	backslashÚbracketrightÚasciicircumÚ
underscoreÚ	quoteleftÚaÚbÚcÚdr    ÚfÚgÚhÚiÚjÚkÚlÚmÚnÚoÚpÚqÚrÚsÚtÚuÚvÚwÚxÚyÚzÚ	braceleftÚbarÚ
bracerightÚ
asciitildeÚ
exclamdownÚcentÚsterlingÚfractionÚyenÚflorinÚsectionÚcurrencyÚquotesingleÚquotedblleftÚguillemotleftÚguilsinglleftÚguilsinglrightÚfiÚflÚendashÚdaggerÚ	daggerdblÚperiodcenteredÚ	paragraphÚbulletÚquotesinglbaseÚquotedblbaseÚquotedblrightÚguillemotrightÚellipsisÚperthousandÚquestiondownÚgraveÚacuteÚ
circumflexÚtildeÚmacronÚbreveÚ	dotaccentÚdieresisÚringÚcedillaÚhungarumlautÚogonekÚcaronÚemdashÚAEÚordfeminineÚLslashÚOslashÚOEÚordmasculineÚaeÚdotlessiÚlslashÚoslashÚoeÚ
germandblsÚonesuperiorÚ
logicalnotÚmuÚ	trademarkÚEthÚonehalfÚ	plusminusÚThornÚ
onequarterÚdivideÚ	brokenbarÚdegreeÚthornÚthreequartersÚtwosuperiorÚ
registeredÚminusÚethÚmultiplyÚthreesuperiorÚ	copyrightÚAacuteÚAcircumflexÚ	AdieresisÚAgraveÚAringÚAtildeÚCcedillaÚEacuteÚEcircumflexÚ	EdieresisÚEgraveÚIacuteÚIcircumflexÚ	IdieresisÚIgraveÚNtildeÚOacuteÚOcircumflexÚ	OdieresisÚOgraveÚOtildeÚScaronÚUacuteÚUcircumflexÚ	UdieresisÚUgraveÚYacuteÚ	YdieresisÚZcaronÚaacuteÚacircumflexÚ	adieresisÚagraveÚaringÚatildeÚccedillaÚeacuteÚecircumflexÚ	edieresisÚegraveÚiacuteÚicircumflexÚ	idieresisÚigraveÚntildeÚoacuteÚocircumflexÚ	odieresisÚograveÚotildeÚscaronÚuacuteÚucircumflexÚ	udieresisÚugraveÚyacuteÚ	ydieresisÚzcaronÚexclamsmallÚHungarumlautsmallÚdollaroldstyleÚdollarsuperiorÚampersandsmallÚ
AcutesmallÚparenleftsuperiorÚparenrightsuperiorÚtwodotenleaderÚonedotenleaderÚzerooldstyleÚoneoldstyleÚtwooldstyleÚthreeoldstyleÚfouroldstyleÚfiveoldstyleÚsixoldstyleÚsevenoldstyleÚeightoldstyleÚnineoldstyleÚcommasuperiorÚthreequartersemdashÚperiodsuperiorÚquestionsmallÚ	asuperiorÚ	bsuperiorÚcentsuperiorÚ	dsuperiorÚ	esuperiorÚ	isuperiorÚ	lsuperiorÚ	msuperiorÚ	nsuperiorÚ	osuperiorÚ	rsuperiorÚ	ssuperiorÚ	tsuperiorÚffÚffiÚfflÚparenleftinferiorÚparenrightinferiorÚCircumflexsmallÚhyphensuperiorÚ
GravesmallÚAsmallÚBsmallÚCsmallÚDsmallÚEsmallÚFsmallÚGsmallÚHsmallÚIsmallÚJsmallÚKsmallÚLsmallÚMsmallÚNsmallÚOsmallÚPsmallÚQsmallÚRsmallÚSsmallÚTsmallÚUsmallÚVsmallÚWsmallÚXsmallÚYsmallÚZsmallÚcolonmonetaryÚ	onefittedÚrupiahÚ
TildesmallÚexclamdownsmallÚcentoldstyleÚLslashsmallÚScaronsmallÚZcaronsmallÚDieresissmallÚ
BrevesmallÚ
CaronsmallÚDotaccentsmallÚMacronsmallÚ
figuredashÚhypheninferiorÚOgoneksmallÚ	RingsmallÚCedillasmallÚquestiondownsmallÚ	oneeighthÚthreeeighthsÚfiveeighthsÚseveneighthsÚonethirdÚ	twothirdsÚzerosuperiorÚfoursuperiorÚfivesuperiorÚsixsuperiorÚsevensuperiorÚeightsuperiorÚninesuperiorÚzeroinferiorÚoneinferiorÚtwoinferiorÚthreeinferiorÚfourinferiorÚfiveinferiorÚsixinferiorÚseveninferiorÚeightinferiorÚnineinferiorÚcentinferiorÚdollarinferiorÚperiodinferiorÚcommainferiorÚAgravesmallÚAacutesmallÚAcircumflexsmallÚAtildesmallÚAdieresissmallÚ
AringsmallÚAEsmallÚCcedillasmallÚEgravesmallÚEacutesmallÚEcircumflexsmallÚEdieresissmallÚIgravesmallÚIacutesmallÚIcircumflexsmallÚIdieresissmallÚEthsmallÚNtildesmallÚOgravesmallÚOacutesmallÚOcircumflexsmallÚOtildesmallÚOdieresissmallÚOEsmallÚOslashsmallÚUgravesmallÚUacutesmallÚUcircumflexsmallÚUdieresissmallÚYacutesmallÚ
ThornsmallÚYdieresissmallz001.000z001.001z001.002z001.003ÚBlackÚBoldÚBookÚLightÚMediumÚRegularÚRomanÚSemibold(   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   é   é   é   é   é   é   é   é   é	   é
   é   é   é   r   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é    é!   é"   é#   é$   é%   é&   é'   é(   é)   é*   é+   é,   é-   é.   é/   é0   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é>   é?   é@   éA   éB   éC   éD   éE   éF   éG   éH   éI   éJ   éK   éL   éM   éN   éO   éP   éQ   éR   éS   éT   éU   éV   éW   éX   éY   éZ   é[   é\   é]   é^   é_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   é`   éa   éb   éc   éd   ée   éf   ég   éh   éi   éj   ék   él   ém   én   r   éo   ép   éq   ér   r   és   ét   éu   év   éw   éx   éy   éz   r   é{   r   é|   é}   é~   é   é€   é�   é‚   éƒ   r   é„   é…   r   é†   é‡   éˆ   é‰   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   éŠ   r   é‹   r   r   r   r   éŒ   é�   éŽ   é�   r   r   r   r   r   é�   r   r   r   é‘   r   r   é’   é“   é”   é•   r   r   r   r   (   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r£  éå   éæ   r   éç   éè   éé   éê   éë   éì   éí   éî   r¯  r   r°  r  éï   éð   éñ   éò   éó   éô   éõ   éö   é÷   éø   r¼  r½  éù   éú   éû   éü   r   éý   éþ   éÿ   é   é  r   r   r   é  r   r   é  é  é  é  r   r   é  é  é	  r   é
  r  r  é  é  é  r   é  é  é  é  é  é  é  é  é  é  é  é  é  é  é  é  é  é  é   é!  é"  é#  é$  é%  é&  é'  é(  é)  é*  é+  é,  é-  é.  é/  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   é0  é1  é2  r   r   é3  é4  é5  é6  é7  r   é8  r   r   é9  r   r   é:  é;  r   r   é<  é=  é>  r   r   r   éž   é›   é£   é?  é@  éA  éB  éC  éD  éE  r   r   éF  é–   é¤   é©   éG  éH  éI  éJ  éK  éL  éM  éN  éO  éP  éQ  éR  éS  éT  éU  éV  éW  éX  éY  éZ  é[  é\  é]  é^  é_  é`  éa  éb  éc  éd  ée  éf  ég  éh  éi  éj  ék  él  ém  én  éo  ép  éq  ér  és  ét  éu  év  éw  éx  éy  éz  )är£  r¤  r¥  r¦  r§  r¨  r©  rª  r«  r¬  r­  r®  r¯  r   r°  r±  r²  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  r¿  rÀ  rÁ  rÂ  rÃ  rÄ  rÅ  rÆ  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  rÎ  rÏ  rÐ  rÑ  rÒ  rÓ  rÔ  rÕ  rÖ  r×  rØ  rÙ  rÚ  rÛ  rÜ  rÝ  rÞ  rß  rà  rá  râ  rã  rä  rå  ræ  rç  rè  ré  rê  rë  rì  rí  rî  rï  rð  rñ  rò  ró  rô  rõ  rö  r÷  rø  rù  rú  rû  rü  rý  rþ  rÿ  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  rœ  é—   é˜   é™   éš   r’  éœ   é�   r‘  éŸ   é    é¡   é¢   r“  r�  é¥   é¦   é§   é¨   rž  éª   é«   é¬   é­   é®   é¯   é°   é±   é²   é³   é´   éµ   é¶   é·   é¸   é¹   éº   é»   é¼   é½   é¾   é¿   éÀ   éÁ   éÂ   éÃ   éÄ   éÅ   éÆ   éÇ   éÈ   éÉ   éÊ   éË   éÌ   éÍ   éÎ   éÏ   éÐ   éÑ   éÒ   éÓ   éÔ   éÕ   éÖ   é×   éØ   éÙ   éÚ   éÛ   éÜ   éÝ   éÞ   éß   éà   éá   éâ   éã   éä   )¥r£  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  r¯  r   r°  r  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  r¼  r½  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r  r  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r€  r�  r‚  rƒ  r„  r…  r†  r‡  rˆ  r‰  rŠ  r‹  rŒ  r�  rŽ  r�  r�  r‘  r’  r“  r”  r•  r–  r—  r˜  r™  rš  r›  rœ  r�  rž  rŸ  r   r¡  r¢  r£  r¤  r¥  r¦  r§  r¨  r©  rª  r«  r¬  r­  r®  r¯  r°  r±  r²  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r»  r¼  r½  r¾  r¿  rÀ  rÁ  rÂ  rÃ  rÄ  rÅ  rÆ  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rÍ  rÎ  rÏ  rÐ  rÑ  rÒ  )Vr£  r9  r:  r=  r>  r?  r@  r¯  r   r°  r  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  r¼  r½  rK  rL  rM  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r  r  r]  r^  r_  r`  rb  r~  r  r€  rƒ  rŒ  r�  r‘  r’  r“  r•  r–  r—  r˜  r™  rš  r›  rœ  r�  rž  rŸ  r   r¡  r¢  r£  r¤  r¥  r¦  r§  r¨  r©  rª  r«  r¬  r­  r®  r¯  r°  r±  r²  c                   óh   • \ rS rSrS\SS4S jrS\4S jrS\4S jr	S\S\
4S	 jrS\\
   4S
 jrSrg)ÚCFFFontProgram.INDEXi˜  ÚfpÚreturnNc                 óF  • Xl         / U l        [        R                  " SU R                   R	                  S5      5      u  nUS:X  a  g [        R                  " SU R                   R	                  S5      5      u  n[        US-   5       H@  nU R                  R                  [        U R                   R	                  U5      5      5        MB     U R                   R                  5       S-
  U l	        U R                   R                  U R                  U R                  S   -   5        g )Nú>Hr¤  r   rD   r£  éÿÿÿÿ)r  ÚoffsetsÚstructÚunpackÚreadÚrangeÚappendr   ÚtellÚbaseÚseek)Úselfr  ÚcountÚoffsizerj   s        ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/playa/fontprogram.pyÚ__init__ÚCFFFontProgram.INDEX.__init__™  sÃ   € ØŒGØ&(ˆDŒLÜ—}’} T¨4¯7©7¯<©<¸«?Ó;‰HˆUØ˜‹zØÜŸš s¨D¯G©G¯L©L¸«OÓ<‰JˆWÜ˜5 1™9Ö%�Ø—‘×#Ñ#¤G¨D¯G©G¯L©L¸Ó,AÓ$BÖCñ &àŸ™Ÿ™›¨Ñ*ˆDŒIØ�G‰G�L‰L˜Ÿ™ T§\¡\°"Ñ%5Ñ5Õ6ó    c                 ó   • S[        U 5      -  $ )Nz<INDEX: size=%d>)Úlen©r,  s    r/  Ú__repr__ÚCFFFontProgram.INDEX.__repr__¥  s   € Ø%¬¨D«	Ñ1Ð1r2  c                 ó2   • [        U R                  5      S-
  $ ©Nr£  )r4  r#  r5  s    r/  Ú__len__ÚCFFFontProgram.INDEX.__len__¨  s   € Ü�t—|‘|Ó$ qÑ(Ð(r2  rj   c                 óâ   • U R                   R                  U R                  U R                  U   -   5        U R                   R	                  U R                  US-      U R                  U   -
  5      $ r9  )r  r+  r*  r#  r&  )r,  rj   s     r/  Ú__getitem__Ú CFFFontProgram.INDEX.__getitem__«  sP   € Ø�G‰G�L‰L˜Ÿ™ T§\¡\°!¡_Ñ4Ô5Ø—7‘7—<‘< §¡¨Q°©UÑ 3°d·l±lÀ1±oÑ EÓFÐFr2  c                 óR   ^ • [        U 4S j[        [        T 5      5       5       5      $ )Nc              3   ó.   >#   • U  H
  nTU   v •  M     g 7f)N© )Ú.0rj   r,  s     €r/  Ú	<genexpr>Ú0CFFFontProgram.INDEX.__iter__.<locals>.<genexpr>°  s   øé € Ð:Ò)9 A˜˜QžÒ)9ùs   ƒ)Úiterr'  r4  r5  s   `r/  Ú__iter__ÚCFFFontProgram.INDEX.__iter__¯  s   ø€ ÜÔ:¬¬s°4«yÔ)9Ó:Ó:Ð:r2  )r*  r  r#  )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r0  Ústrr6  Úintr:  Úbytesr=  r	   rF  Ú__static_attributes__rA  r2  r/  ÚINDEXr  ˜  sS   † ð
	7˜xð 
	7¨Dô 
	7ð	2˜cô 	2ð	)˜Sô 	)ð	G ð 	G¨ô 	Gð	;˜h u™o÷ 	;r2  rP  Únamer  r  Nc           	      ó  • Xl         X l        [        R                  " SU R                  R	                  S5      5      u  p4pVU R                  R	                  US-
  5        U R                  U R                  5      U l        U R                  U R                  5      U l        U R                  U R                  5      U l        U R                  U R                  5      U l	        U R                  U R                  S   5      U l        SU R                  ;   U l        U R                  R                  SS/5      u  nU R                  R                  SS/5      u  nU R                  R                  SS/5      u  n	U R                  R                  [        U	5      5        U R                  U R                  5      U l        [#        U R                   5      U l        U R'                  [        U5      5        U R                  (       dÀ  U R(                  R+                  5        V
Vs0 s H  u  p«U R-                  U5      U
_M     snn
U l        U R1                  [        U5      5        U R2                  R+                  5        VV
s0 s H4  u  pÊX R(                  ;   d  M  XÀR-                  U R(                  U
   5      _M6     sn
nU l        g U R(                  R+                  5        V
Vs0 s H  u  p«Xº_M	     snn
U l        g s  snn
f s  sn
nf s  snn
f )NÚBBBBr¦  r   )r®  r¿  r°  r±  r²  )rQ  r  r$  r%  r&  rP  Ú
name_indexÚ
dict_indexÚstring_indexÚ
subr_indexÚgetdictÚtop_dictÚ
is_cidfontÚgetr+  rM  Ú
charstringr4  ÚnglyphsÚ_parse_charsetÚgid2sidÚitemsÚgetstrÚname2gidÚ_parse_encodingÚcode2gidÚ	code2nameÚcid2gid)r,  rQ  r  Ú_majorÚ_minorÚhdrsizer.  Úcharset_posÚencoding_posÚcharstring_posÚgidÚsidÚcodes                r/  r0  ÚCFFFontProgram.__init__²  s3  € ØŒ	ØŒä-3¯]ª]¸6À4Ç7Á7Ç<Á<ÐPQÃ?Ó-SÑ*ˆ˜Ø�‰�‰�W˜q‘[Ô!àŸ*™* T§W¡WÓ-ˆŒàŸ*™* T§W¡WÓ-ˆŒà ŸJ™J t§w¡wÓ/ˆÔàŸ*™* T§W¡WÓ-ˆŒàŸ™ T§_¡_°QÑ%7Ó8ˆŒØ" d§m¡mÑ3ˆŒØŸ™×*Ñ*¨2°¨sÓ3‰ˆØŸ-™-×+Ñ+¨B°°Ó4‰ˆØ ŸM™M×-Ñ-¨b°1°#Ó6Ñˆà�‰�‰”S˜Ó(Ô)ØŸ*™* T§W¡WÓ-ˆŒÜ˜4Ÿ?™?Ó+ˆŒØ×ÑœC Ó,Ô-Ø��ØCGÇ<Á<×CUÑCUÔCWÔXÒCW±x°s˜TŸ[™[¨Ó-¨sÒ2ÑCWÒXˆDŒMØ× Ñ ¤ \Ó!2Ô3ð "&§¡×!4Ñ!4Ô!6ôâ!6‘I�DØŸ,™,Ñ&ó 5�—k‘k $§,¡,¨sÑ"3Ó4Ò4Ù!6òˆD�Nð 6:·\±\×5GÑ5GÔ5IÔJÒ5I©¨˜CšHÑ5IÒJˆD�Lùó Yùóùó Ks   ÈK0É6K6Ê"K6ËK<rk  c                 óv  • 0 U l         US;   ac  [        U R                  U   5       HF  u  p#U R                  R	                  U R                  U5      5      =n(       d  M8  X@R                   U'   MH     g U R                  R                  U5        U R                  R                  S5      u  nUS-  US-  pVXPl	        US:X  a…  [        R                  " SU R                  R                  S5      5      u  n[        [        R                  " SU-  U R                  R                  U5      5      SS9 H  u  pBX@R                   U'   M     O¸US:X  a¤  [        R                  " SU R                  R                  S5      5      u  nSn[        U5       H`  n[        R                  " SU R                  R                  S	5      5      u  pš[        X™U
-   S-   5       H  nX@R                   U'   US-  nM     Mb     O[        S
U-  5      eU(       a¸  [        R                  " SU R                  R                  S5      5      u  n[        U5       Hv  n[        R                  " SU R                  R                  S5      5      u  p#U R                  R	                  U R                  U5      5      =n(       d  Mh  X@R                   U'   Mx     g g )N)r   r£  r£  r!  r   r   rD   ©ÚstartÚBBr¤  zunsupported encoding format: %rz>BHr¥  )rd  Ú	enumerateÚPREDEFINED_ENCODINGSrb  r[  ra  r  r+  r&  Úencoding_formatr$  r%  r'  Ú
ValueError)r,  rk  ro  rn  rm  ÚformatÚsuppro   rj   ÚfirstÚnlefts              r/  rc  ÚCFFFontProgram._parse_encodingÖ  s  € àˆŒØ˜6Ó!Ü& t×'@Ñ'@ÀÑ'NÖO‘	�ØŸ-™-×+Ñ+¨D¯K©K¸Ó,<Ó=Ð=�3×=Ø*-—M‘M $Ó'ñ Pð Ø�‰�‰�\Ô"Ø—G‘G—L‘L “O‰	ˆØ ‘} f¨t¡mˆfØ%ÔØ�Q‹;ä—=’=  d§g¡g§l¡l°1£oÓ6‰DˆQÜ&Ü—’˜c A™g t§w¡w§|¡|°A£Ó7¸qô‘	�ð '*—‘˜dÓ#òð �q‹[ä—=’=  d§g¡g§l¡l°1£oÓ6‰DˆQØˆCÜ˜1–X�Ü!'§¢¨t°T·W±W·\±\À!³_Ó!E‘�Ü! %°©¸Ñ):Ö;�DØ*-—M‘M $Ñ'Ø˜1‘H’Có <ò ô Ð>ÀÑGÓHÐHÞÜ—=’=  d§g¡g§l¡l°1£oÓ6‰DˆQÜ˜1–X�Ü"ŸMšM¨%°·±·±¸a³ÓA‘	�ØŸ-™-×+Ñ+¨D¯K©K¸Ó,<Ó=Ð=�3×=Ø*-—M‘M $Ó'ò ð r2  rj  c           	      ór  • 0 U l         US;   aK  U R                  (       a  [        S5      e[        U R                  U   SS9 H  u  p#X0R                   U'   M     g U R
                  R                  U5        U R
                  R                  S5      u  nX@l        US:X  ah  U R                  S-
  n[        [        R                  " SSU-  -   U R
                  R                  SU-  5      5      SS9 H  u  p#X0R                   U'   M     g US	;   a   US:X  a  S
OSn[        R                  " U5      nSnX R                  :  an  [        R                  " X`R
                  R                  U5      5      u  p‰[        XˆU	-   S-   5       H  nX0R                   U'   US-  nM     X R                  :  a  Mm  g g [        SU-  5      e)N)r   r£  r¤  z(no predefined charsets for CID CFF fontsr£  rr  r   Ú>rJ   r¤  )r£  r¤  z>HBú>HHzunsupported charset format: %r)r_  rZ  rx  ru  ÚPREDEFINED_CHARSETSr  r+  r&  Úcharset_formatr]  r$  r%  Úcalcsizer'  )
r,  rj  rm  rn  ry  ro   Úrange_fÚrange_f_sizer{  r|  s
             r/  r^  ÚCFFFontProgram._parse_charsetû  sv  € àˆŒØ˜)Ó#Ø��Ü Ð!KÓLÐLÜ% d×&>Ñ&>¸{Ñ&KÐSTÔU‘�Ø$'—‘˜SÓ!ñ VàØ�‰�‰�[Ô!Ø—G‘G—L‘L “O‰	ˆØ$ÔØ�Q‹;à—‘˜qÑ ˆAÜ%Ü—’˜c C¨!¡G™m¨T¯W©W¯\©\¸!¸a¹%Ó-@ÓAÈô‘�ð %(—‘˜SÓ!òð �vÓà%¨›{‘e°ˆGÜ!Ÿ?š?¨7Ó3ˆLØˆCØŸ™Ó$Ü!'§¢¨w¿¹¿¹À\Ó8RÓ!S‘�Ü  °©¸Ñ(9Ö:�CØ(+—L‘L Ñ%Ø˜1‘H’Cñ ;ð Ÿ™×$ô Ð=ÀÑFÓGÐGr2  rn  c                 óº   • U[        U R                  5      :  a  U R                  U   $ U R                  U[        U R                  5      -
     R                  S5      $ )NÚascii)r4  ÚSTANDARD_STRINGSrV  Údecode)r,  rn  s     r/  ra  ÚCFFFontProgram.getstr  sR   € Ø”�T×*Ñ*Ó+Ó+Ø×(Ñ(¨Ñ-Ð-Ø× Ñ  ¤s¨4×+@Ñ+@Ó'AÑ!AÑB×IÑIÈ'ÓRÐRr2  Údatac                 óx  • 0 n[        U5      n/ n UR                  S5      nU(       d   U$ [        U5      nUS::  a,  US:X  a  S[        UR                  S5      5      4OUnXBU'   / nMY  US:X  am  SnSn	U	(       aV  [        UR                  S5      5      n
U
S-	  U
S-  4 H%  nUS:X  a  S	n	M  U R                  U   nUc   eXŒ-  nM'     U	(       a  MV  [	        U5      nOÌUS
:¼  a  US::  a  US-
  nOº[        UR                  S5      5      nUS:¼  a  US::  a  US-
  S-  U-   S-   nO…US:¼  a  US::  a  US-
  S-  * U-
  S-
  nOi[        UR                  S5      5      nUS:¼  a  US-  nUS:X  a	  US-  U-  nO5US-  US-  -  [
        R                  " SUR                  S5      5      S   -  nUR                  U5        GM«  )Nr£  r¶  r®  r¿  Ú Tr¦  r°  FrÁ  rH  r,  rI  rL  rª  r  rM  rP  r!  rR  r½  r¹  r±  r!  r¤  r   )r   r&  ÚordÚNIBBLESÚfloatr$  r%  r(  )r,  rŒ  rf   r  Ústackre   Úb0Úkeyrt   Úlooprd   ro   ÚnibbleÚvalueÚb1Úb2s                   r/  rX  ÚCFFFontProgram.getdict   sÛ  € ð IKˆÜ�T‹]ˆØ)+ˆØØ—‘˜“
ˆAÞØðJ ˆôI �Q“ˆBØ�R‹xØ/1°R«x�rœ3˜rŸw™w q›z›?Ñ+¸R�Ø�#‘Ø�ÙØ�R‹xØ�Ø�ÞÜ˜BŸG™G A›J›�AØ 1™f a¨"¡fÓ-˜Ø ›7Ø#(šDà%)§\¡\°!¡_˜FØ#)Ñ#5Ð5Ð#5Ø™KšAñ .÷ �dô ˜a›‘Ø�r“˜b C›iØ˜S™‘ä˜Ÿ™ ›“_�Ø˜“9  s£Ø  3™h¨1™_°Ñ2°SÑ8‘EØ˜3“Y 2¨£9Ø! C™x¨A™oÐ.°Ñ3°cÑ9‘Eä˜RŸW™W Q›Z›�BØ˜S“yØ˜c™	˜Ø˜R“xØ " a¡¨"¡™à " b¡¨2°©8Ñ 3´f·m²mÀDÈ"Ï'É'ÐRSË*Ó6UÐVWÑ6XÑ X˜Ø�L‰L˜ÔòO r2  )r‚  r\  rf  rd  re  rU  rw  r  r_  rZ  rQ  rb  rT  r]  rV  rW  rY  )rH  rI  rJ  rK  r�  r‰  ÚSTANDARD_ENCODINGÚEXPERT_ENCODINGrv  ÚISOADOBE_CHARSETÚEXPERT_CHARSETÚEXPERT_SUBSET_CHARSETr�  rP  rL  r   r0  rM  rc  r^  ra  rN  r   r   r
   r   r‘  rX  rO  rA  r2  r/  r   r      s	  † ð€Gð$HÐðTAÐðDA€OðD .¨Ð?ÐðeÐðLf€NðNWÐðp ,¨^Ð=RÐSÐ÷;ñ ;ð4"K˜Sð "K hð "K°4ô "KðH#.¨Cð #.°Dô #.ðJH¨#ð H°$ô Hð@S˜#ð S #ô Sð
.Øð.à	ˆe�E˜#˜s˜(‘O SÐ(Ñ)¨4°°e¸S°jÑ0AÑ+BÐBÑ	C÷.r2  r   c                   óF   • \ rS rSrSrS\S\SS4S jrS\\	S4   4S jr
S	rg)
ÚTrueTypeFontProgramiQ  z4Read TrueType font programs to get Unicode mappings.rQ  r  r  Nc                 ót  • Xl         X l        0 U l        UR                  S5      U l         [
        R                  " SUR                  S5      5      u  p4pV[        U5       H<  n[
        R                  " SUR                  S5      5      u  p‰p«X«4U R                  U'   M>     g ! [
        R                   a     g f = f)Nr¦  ú>HHHHrª  z>4sLLLr±  )	rQ  r  Útablesr&  Úfonttyper$  r%  r'  Úerror)r,  rQ  r  ÚntablesÚ_1Ú_2Ú_3Ú_Ú
name_bytesÚtsumÚoffsetÚlengths               r/  r0  ÚTrueTypeFontProgram.__init__T  sŸ   € ØŒ	ØŒØ46ˆŒØŸ™ ›
ˆŒð	Ü$*§M¢M°'¸2¿7¹7À1»:Ó$FÑ!ˆW˜"Ü˜7–^�Ü5;·]²]Ø˜bŸg™g b›kó6Ñ2� 6ð ,2Ð*:�—‘˜JÓ'ò	 $øô
 �|‰|ó 	ñ ð		ús   «A4B  Â B7Â6B7c                 óÀ	  • SU R                   ;  a  [        R                  S5        gU R                   S   u  pU R                  nUR	                  U5        [
        R                  " SUR                  S5      5      u  pE/ n[        U5       H8  nUR                  [
        R                  " SUR                  S5      5      5        M:     0 nU GH©  u  pšnU	S:X  d  U	S	:X  a  U
S
;   d  M  UR	                  X-   5        [
        R                  " SUR                  S5      5      u  pÍnUS:X  a@  UR                  [        [
        R                  " SUR                  S5      5      5      5        M�  US:X  GaI  [
        R                  " SUR                  S5      5      nS/S-  n[        U5       H  u  nnUUUS-  '   M     [        U5      S-  S-   n/ n[        U5       HX  n[
        R                  " SUR                  S5      5      u  nnnnUR                  UUUUUR                  5       S-
  U-   45        MZ     U H}  u  nnnnnU(       d  M  UUU   S-  -   nUR	                  U5        [        U5       H@  n[
        R                  " SUR                  S5      5      S   nU(       a  UU-  nUUUU-   '   MB     M     GMí  US:X  Ga¦  [
        R                  " SUR                  S5      5      u  nnnnUS-  n[
        R                  " SU-  UR                  SU-  5      5      n UR                  S5        [
        R                  " SU-  UR                  SU-  5      5      n![
        R                  " SU-  UR                  SU-  5      5      n"UR                  5       n[
        R                  " SU-  UR                  SU-  5      5      n#[        U U!U"U#5       H�  u  n$n%n&n'U'(       a`  UR	                  UU'-   5        [        U%U$S-   5       H7  n[
        R                  " SUR                  S5      5      S   n(U(U&-   S-  UU'   M9     Mo  [        U%U$S-   5       H  nUU&-   S-  UU'   M     M’     GMš   [        SU45      5       e   U(       d  [        R                  S5        g[!        5       n)U)R#                  SS5        UR%                  5        H  u  n*nU)R'                  UU*S5        M     U)$ )z:Recreate a ToUnicode mapping from a TrueType font program.s   cmapz.TrueType font program has no character mappingNr€  r¦  z>HHLrª  r   r¥  )r£  r¬  z>HHHr¨  z>256BrR  r¤  z>256Hi   i    r£  z>HHhHr!  r£  z>%dHz>%dhiÿÿ  Ú	Unhandledzunicode mapping is emptys     s   ÿÿ)r¤  ÚlogÚdebugr  r+  r$  r%  r&  r'  r(  Úupdateru  Úmaxr)  ÚziprL  r   Úadd_code_ranger`  Úadd_code2code)+r,  Úbase_offsetr¯  r  ÚversionÚ
nsubtablesÚ	subtablesrj   Úchar2gidÚplatform_idÚencoding_idÚ	st_offsetÚfmttypeÚfmtlenÚfmtlangÚsubheaderkeysÚ
firstbytesrl   ÚnhdrsÚhdrsÚ	firstcodeÚentcountÚdeltar®  Úposr{  re   rm  Úsegcountr¨  r©  rª  ÚecsÚscsÚiddsÚidrsÚecÚscÚiddÚidrrd   Ú	tounicodeÚchars+                                              r/  Úcreate_tounicodeÚ$TrueTypeFontProgram.create_tounicodef  s<  € à˜$Ÿ+™+Ó%Ü�I‰IÐFÔGØØ $§¡¨GÑ 4ÑˆØ�W‰WˆØ
�‰�ÔÜ &§¢¨e°R·W±W¸Q³ZÓ @ÑˆØ02ˆ	Ü�zÖ"ˆAØ×ÑœVŸ]š]¨6°2·7±7¸1³:Ó>Ö?ñ #à#%ˆä3<Ñ/ˆK ið   1Ó$¨¸Ó)9¸kÈWÓ>TÙØ�G‰G�KÑ+Ô,Ü)/¯ª°v¸r¿w¹wÀq»zÓ)JÑ&ˆW˜gØ˜!‹|Ø—‘¤	¬&¯-ª-¸ÀÇÁÈÃÓ*NÓ OÖPØ˜A”Ü &§¢¨g°r·w±w¸s³|Ó D�Ø˜S 4™Z�
Ü% mÖ4‘D�A�qØ)*�J˜q A™vÓ&ñ 5ä˜MÓ*¨aÑ/°!Ñ3�Ø=?�Ü˜už�AÜ;A¿=º=Ø §¡¨£ó<Ñ8�Y ¨%°ð —K‘K  I¨x¸ÀÇÁÃ	ÈAÁÐPVÑ@VÐ WÖXñ	 &ó
 ;?Ñ6�A�y (¨E°3Þ#Ù Ø%¨°A©¸!Ñ);Ñ<�EØ—G‘G˜C”LÜ" 8ž_˜Ü$Ÿmšm¨D°"·'±'¸!³*Ó=¸aÑ@˜ÞØ 5™L˜CØ.1˜ ¨¡Ó+ó	 -ô ;?ð ˜A”Ü)/¯ª°wÀÇÁÈÃ
Ó)KÑ&�˜2˜r 2Ø˜Q‘�Ü—m’m F¨XÑ$5°r·w±w¸qÀ8¹|Ó7LÓM�Ø—‘˜”
Ü—m’m F¨XÑ$5°r·w±w¸qÀ8¹|Ó7LÓM�Ü—}’} V¨hÑ%6¸¿¹ÀÀHÁÓ8MÓN�Ø—g‘g“i�Ü—}’} V¨hÑ%6¸¿¹ÀÀHÁÓ8MÓN�Ü(+¨C°°d¸DÖ(AÑ$�B˜˜C ÞØŸ™  c¡	Ô*Ü!& r¨2°©6Ö!2˜AÜ &§¢¨d°B·G±G¸A³JÓ ?ÀÑ B˜AØ+,¨s©7°fÑ*<˜H Q›Kó "3ô "' r¨2°©6Ö!2˜AØ+,¨s©7°fÑ*<˜H Q›Kó "3ô )Bð :œc ;°Ð"8Ó9Ó9�uñk 4=öl Ü�I‰IÐ0Ô1Øô !“Nˆ	Ø× Ñ  ¨kÔ:Ø!Ÿ™Ö)‰IˆD�#Ø×#Ñ# C¨¨qÖ1ñ *àÐr2  )r¥  r  rQ  r¤  )rH  rI  rJ  rK  Ú__doc__rL  r   r0  r   r   rØ  rO  rA  r2  r/  r¡  r¡  Q  s7   † Ù>ð˜Sð  hð °4ô ð$M %¨°dÐ(:Ñ";÷ Mr2  r¡  s   begins   ends   defs   puts   dicts   arrays   readonlys   forc                   ó>   • \ rS rSrS\SS4S jrS\\\4   4S jr	Sr
g)ÚType1FontHeaderParseriÀ  rŒ  r  Nc                 óT   • [        U5      U l        0 U l        [        / S5      U l        g )Nr¤  )r   Ú_lexerÚ	_encodingr   Ú_tokq)r,  rŒ  s     r/  r0  ÚType1FontHeaderParser.__init__Á  s!   € Ü˜D“kˆŒØ)+ˆŒÜ#(¨¨Q£<ˆ�
r2  c                 ó:  • U R                    H€  u  pU[        L aW  U R                  u  p4[        U[        5      (       a2  [        U[
        5      (       a  UR                  U R                  U'   Ma  Mc  Me  U R                  R                  U5        M‚     U R                  $ )a5  Parse the font encoding.

The Type1 font encoding maps character codes to character names. These
character names could either be standard Adobe glyph names, or
character names associated with custom CharStrings for this font. A
CharString is a sequence of operations that describe how the character
should be drawn. Currently, this function returns '' (empty string)
for character names that are associated with a CharStrings.

Reference: Adobe Systems Incorporated, Adobe Type 1 Font Format

:returns mapping of character identifiers (cid's) to unicode characters
)	rÞ  ÚKEYWORD_PUTrà  Ú
isinstancerM  r   rQ  rß  r(  )r,  r«  ÚtokÚcidrQ  s        r/  Úget_encodingÚ"Type1FontHeaderParser.get_encodingÆ  s{   € ð —k”k‰FˆAà”kÒ!Ø ŸJ™J‘	�Ü˜c¤3×'Ñ'¬J°t¼Y×,GÑ,GØ*.¯)©)�D—N‘N 3Ó'ñ -HÑ'ð —
‘
×!Ñ! #Ö&ñ "ð �~‰~Ðr2  )rß  rÞ  rà  )rH  rI  rJ  rK  rN  r0  r   rM  rL  rç  rO  rA  r2  r/  rÜ  rÜ  À  s)   † ð0˜Uð 0 tô 0ð
˜d 3¨ 8™n÷ r2  rÜ  )%Úloggingr$  Úcollectionsr   Úior   Útypingr   r   r   r   r	   r
   r   Úplaya.cmapdbr   Úplaya.parserr   r   r   r   Úplaya.utilsr   Ú	getLoggerrH  r³  r   r¡  ÚKEYWORD_BEGINÚKEYWORD_ENDÚKEYWORD_DEFrã  ÚKEYWORD_DICTÚKEYWORD_ARRAYÚKEYWORD_READONLYÚKEYWORD_FORrÜ  rA  r2  r/  Ú<module>rø     s¦   ðÛ Û Ý Ý ß F× FÑ Få %ß 5Ó 5Ý à×Ò˜Ó!€÷@ñ @÷F2bñ bñJ �H“€Ù�&‹k€Ù�&‹k€Ù�&‹k€Ù�7‹|€Ù�H“€Ù�{Ó#Ð Ù�&‹k€÷ò r2  