ó
    oñ:iÚ! ã                   óH  • S SK JrJrJrJrJ	r
Jr  S SKJr  S SKJrJr  S SKJrJrJrJrJr  S SKJr  S SKJrJr  SSKJrJrJ r J!r!J"r"  SS	K#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r.J/r0J1r1  S S
K2J3r3J4r4  S SK5J6r6  S SK7J8r8  S SK9r9S SK:r:S SK;J<r<  S SK=r=\=R|                  " \?5      r@S rAS rB " S S\C5      rD " S S\D5      rE " S S\E5      rF " S S\E5      rG " S S\G5      rH " S S\G5      rI " S S\I5      rJ " S S \F\I5      rK " S! S"\G5      rL " S# S$\G5      rM " S% S&\G5      rN " S' S(\G5      rO " S) S*\G5      rP " S+ S,\G5      rQ " S- S.\Q\O5      rR " S/ S0\Q\M5      rS " S1 S2\Q\I5      rT " S3 S4\E5      rU " S5 S6\E5      rV " S7 S8\V5      rW " S9 S:\M5      rX " S; S<\M5      rY " S= S>\E5      rZ " S? S@\Z5      r[ " SA SB\Z5      r\ " SC SD\\5      r] " SE SF\\5      r^ " SG SH\^5      r_ " SI SJ\_5      r` " SK SL\E5      ra " SM SN\E5      rb " SO SP\D5      rc " SQ SR\c5      rd " SS ST\c5      re " SU SV\e5      rf " SW SX\e5      rg " SY SZ\c5      rh " S[ S\\e5      ri " S] S^\f\i5      rj " S_ S`\e5      rk " Sa Sb\G5      rl " Sc Sd\l5      rm " Se Sf\D5      rn " Sg Sh\D5      ro " Si Sj\D5      rp " Sk Sl\D5      rq " Sm Sn\D5      rr " So Sp\D5      rs " Sq Sr\D5      rt " Ss St\D5      ru " Su Sv\D5      rv " Sw Sx5      rw " Sy Sz\D5      rx " S{ S|\M5      ry " S} S~\O5      rz " S S€\z5      r- " S� S‚\z5      r/0 Sƒ\N_S„\L_S…\H_S†\O_S‡\M_Sˆ\P_S‰\I_SŠ\b_S\J_S \K_SL\a_S4\U_S6\V_S8\W_S:\X_S@\[_SD\]_0 SF\^_SH\__SJ\`_S‹\c_SŒ\e_S�\f_SŽ\g_Sd\m_Sr\t_St\u_Sv\v_S|\y_S€\-_S‚\/_S<\Y_S�\6" \x\wS�9_S‘\6" \x\%S’9_E\r\s\d\d\d\pS“ S” S• S– S— S˜ S™.Er{g)šé    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚensureVersionIsLongÚversionToFixed)ÚTupleVariation)ÚnearestMultipleShortestReprÚotRound)Ú	bytesjoinÚtobytesÚtostrÚpadÚsafeEval)ÚLazyList)ÚOPTIMIZE_FONT_SPEEDÚgetSearchRangeé   )ÚCountReferenceÚFormatSwitchingBaseTableÚOTTableReaderÚOTTableWriterÚValueRecordFactory)ÚlookupTypesÚVarCompositeGlyphÚAATStateTableÚAATStateÚ	AATActionÚContextualMorphActionÚLigatureMorphActionÚInsertionMorphActionÚMorxSubtableÚ
ExtendModeÚCompositeModeÚNO_VARIATION_INDEX)Úzip_longestÚ
accumulate)Úpartial)ÚSimpleNamespaceN)ÚOptionalc                 ó"   • [        U [        5      $ ©N)Ú
isinstanceÚtuple)Úts    Úf/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/ttLib/tables/otConverters.pyÚ<lambda>r1   -   s   € ”J˜q¤%Ô(ó    c           	      ó&  • / n0 nU  GH  u  pEpgnUn	UR                  S5      (       a  US:X  d   e[        n
OœUR                  S5      (       d  US;   a  [        [        [
        S.U   n
OjUS:X  a  [        n
O]US:X  a  [        n
OPUS:X  a  [        n
OCUS	:X  a  [        n
O6US
;   a  [        n
O)U[        ;  a  SU;  a	  Un	[        n
O[        XA[        5      n
U
" XVXxS9nUR                  (       a  UR                  nO)US;   a  UR                  U5      nOUR                  U	5      nUR                  (       d  XËl        US;   aZ  US   Ul        UR                   R#                  5        H2  nUR#                  5        H  n[%        XVX~5      X>R&                  '   M     M4     US	:X  aM  US   Ul        US	   Ul        UR(                  R#                  5        H  n[%        XVX~5      X>R&                  '   M     UR-                  U5        XS;  d   U5       eX³U'   GM     X#4$ )zÌGiven a table spec from otData.py, build a converter object for each
field of the table. This is called for each table in otData.py, and
the results are assigned to the corresponding class in otTables.py.ÚValueFormatÚuint16ÚCount)ÚStructLengthÚ	MorphType)Úuint8r5   Úuint32ÚSubTableÚExtSubTableÚ	SubStructÚFeatureParams)ÚCIDGlyphMappingÚGlyphCIDMappingÚ(©Údescription)Ú	MortChainÚMortSubtableÚ	MorxChain)r;   r<   r=   r   ÚfeatureParamTypes)Ú
startswithr4   ÚendswithÚComputedUInt8ÚComputedUShortÚComputedULongr;   r<   r=   r>   ÚStructWithLengthÚconverterMappingÚStructÚevalÚ
tableClassÚgetr   ÚvaluesÚTableÚ__name__rG   ÚdefaultFeatureParamsÚappend)Ú	tableSpecÚtableNamespaceÚ
convertersÚconvertersByNameÚtpÚnameÚrepeatÚauxÚdescrÚ	tableNameÚconverterClassÚconvrQ   r/   Úclss                  r0   ÚbuildConvertersre   0   s
  € ð €JØÐÜ(1Ñ$ˆ�&˜uØˆ	Ø�?‰?˜=×)Ñ)Ø˜“>Ð!�>Ü(‰NØ�]‰]˜7×#Ñ# tÐ/LÓ'Lä&Ü(Ü'ñð ñ	‰Nð
 �ZÓÜ%‰NØ�]Ó"Ü(‰NØ�[Ó Ü&‰NØ�_Ó$Ü*‰NØÐ;Ó;Ü-‰NàÔ)Ó)¨c¸«mØ�	Ü!'‘ä!% bÔ:JÓ!K�á˜d¨CÑCˆà�?�?àŸ™‰JØÐ=Ó=Ø'×+Ñ+¨BÓ/‰Jà'×+Ñ+¨IÓ6ˆJà��Ø(ŒOàÐ;Ó;Ø-¨mÑ<ˆDÔà×%Ñ%×,Ñ,Ö.�ØŸ8™8ž:�CÜ5:¸4ÈÓ5RÐ$§\¡\Ó2ó &ñ /ð �?Ó"Ø%3Ð4GÑ%HˆDÔ"Ø(6°Ñ(GˆDÔ%Ø×-Ñ-×4Ñ4Ö6�Ü16°tÀSÓ1NÐ §¡Ó.ñ 7à×Ñ˜$ÔØÓ+Ð1¨TÓ1Ð+Ø!%˜Ôñm )2ðn Ð'Ð'r2   c                   ó�   • \ rS rSrSrSSS.S jjrS rS rS	 rS
 r	SS jr
S rS r\R                  " S5      rS\\   4S jrSrg)ÚBaseConverterép   zXBase class for converter objects. Apart from the constructor, this
is an abstract class.NÚ rB   c                óX  • Xl         X l        X0l        U R                  (       a-  U R                  (       d  [        U R                  SS5      U l        X@l        UR                  S5      =(       d    US;   U l        UR                  S5      =(       d    US:H  U l        US;   U l        XPl	        g )Nz<string>rP   r6   )ÚDesignAxisRecordSizeÚValueRecordSizeÚ
LookupTyper8   )Ú
ClassCountÚClass2CountÚ
FeatureTagÚSettingsCountÚVarRegionCountÚMappingCountÚRegionAxisCountÚDesignAxisCountrk   ÚAxisValueCountrl   Ú	AxisCountÚBaseGlyphRecordCountÚLayerRecordCountÚAxisIndicesList)
r]   r^   r_   ÚcompilerQ   rI   ÚisCountÚisLookupTypeÚisPropagatedrC   ©Úselfr]   r^   r_   rQ   rC   s         r0   Ú__init__ÚBaseConverter.__init__t   s�   € ØŒ	ØŒØŒØ�8�8˜DŸKŸKÜ˜tŸx™x¨°VÓ<ˆDŒHØ$ŒØ—}‘} WÓ-÷ 
°ð :
ñ 2
ˆŒð !ŸM™M¨,Ó7×N¸4À;Ñ;NˆÔØ ð %
ñ 
ˆÔð" 'Õr2   c                 óˆ  ^ ^^^	^
• TR                   =(       a    US:„  nU(       a  T R                  T5      m
T
[        L a  SnU(       d8  / n[        U5       H%  nUR	                  T R                  TTU5      5        M'     U$ UUU
U 4S jnU" 5       m	[        U	4S j[        U5       5       5      nTR                  UT
-  5        U$ )z(Read an array of values from the reader.é   Fc                  óX   >^^• TR                  5       mTR                  mUUUUU4S jn U $ )Nc                 óX   >• TR                  TU T-  -   5        TR                  TT0 5      $ r,   )ÚseekÚread)ÚiÚfontÚposÚreader_copyÚ
recordSizer€   s    €€€€€r0   Ú	read_itemÚABaseConverter.readArray.<locals>.get_read_item.<locals>.read_item¥   s-   ø€ Ø×$Ñ$ S¨1¨z©>Ñ%9Ô:ØŸ9™9 [°$¸Ó;Ð;r2   ©Úcopyr‹   )rŽ   r‹   rŒ   rŠ   Úreaderr�   r€   s    @@€€€€r0   Úget_read_itemÚ.BaseConverter.readArray.<locals>.get_read_item¡   s)   ú€ Ø$Ÿk™k›m�Ø—j‘j�÷<ñ <ð !Ð r2   c              3   ó(   >#   • U  H  nTv •  M	     g 7fr,   © )Ú.0r‰   rŽ   s     €r0   Ú	<genexpr>Ú*BaseConverter.readArray.<locals>.<genexpr>¬   s   øé € Ð9ªL q�ªLùs   ƒ)ÚlazyÚgetRecordSizeÚNotImplementedÚrangerW   rˆ   r   Úadvance)r€   r’   rŠ   Ú	tableDictÚcountrš   Úlr‰   r“   rŽ   r�   s   ```      @@r0   Ú	readArrayÚBaseConverter.readArray“   s¦   ü€ à�y‰y×&˜U Q™YˆÞØ×+Ñ+¨FÓ3ˆJØœ^Ò+Ø�ÞØˆAÜ˜5–\�Ø—‘˜Ÿ™ 6¨4°Ó;Ö<ñ "àˆH÷!ð !ñ &›ˆIÜÔ9¬E°%¬LÓ9Ó9ˆAØ�N‰N˜5 :Ñ-Ô.àˆHr2   c                 óH   • [        U S5      (       a  U R                  $ [        $ )NÚ
staticSize)Úhasattrr¥   rœ   ©r€   r’   s     r0   r›   ÚBaseConverter.getRecordSize±   s   € Ü�4˜×&Ñ&Ø—?‘?Ð"ÜÐr2   c                 ó   • [        U 5      e)zRead a value from the reader.©ÚNotImplementedError©r€   r’   rŠ   rŸ   s       r0   rˆ   ÚBaseConverter.read¶   ó   € ä! $Ó'Ð'r2   c                 ó¤   •  [        U5       H  u  pVU R                  XX6U5        M     g ! [         a  nUR                  W4-   Ul        e S nAff = fr,   )Ú	enumerateÚwriteÚ	ExceptionÚargs)r€   ÚwriterrŠ   rŸ   rS   r‰   ÚvalueÚes           r0   Ú
writeArrayÚBaseConverter.writeArrayº   sL   € ð	Ü% fÖ-‘�Ø—
‘
˜6¨¸1Ö=ò .øäó 	Ø—V‘V˜q˜d‘]ˆAŒFØûð	ús   ‚'* ª
A´A
Á
Ac                 ó   • [        U 5      e)zWrite a value to the writer.rª   ©r€   r´   rŠ   rŸ   rµ   ÚrepeatIndexs         r0   r±   ÚBaseConverter.writeÂ   r®   r2   c                 ó   • [        U 5      e)zRead a value from XML.rª   ©r€   ÚattrsÚcontentrŠ   s       r0   ÚxmlReadÚBaseConverter.xmlReadÆ   r®   r2   c                 ó   • [        U 5      e)zWrite a value to XML.rª   ©r€   Ú	xmlWriterrŠ   rµ   r]   r¿   s         r0   ÚxmlWriteÚBaseConverter.xmlWriteÊ   r®   r2   zVarIndexBase\s*\+\s*(\d+)Úreturnc                 ó�   • U R                   R                  U R                  5      nU(       d  g[        UR	                  S5      5      $ )zJIf description has `VarIndexBase + {offset}`, return the offset else None.Nr   )ÚvarIndexBasePlusOffsetREÚsearchrC   ÚintÚgroup)r€   Úms     r0   ÚgetVarIndexOffsetÚBaseConverter.getVarIndexOffsetÐ   s6   € à×)Ñ)×0Ñ0°×1AÑ1AÓBˆÞØÜ�1—7‘7˜1“:‹Ðr2   )r_   rC   r|   r}   r~   r]   r^   rQ   r,   )rU   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r�   r¢   r›   rˆ   r·   r±   rÁ   rÆ   Úrer{   rÊ   r*   rÌ   rÏ   Ú__static_attributes__r–   r2   r0   rg   rg   p   sX   † ñð'È"ö 'ò>ò<ò
(òô(ò(ò(ð  "ŸzšzÐ*FÓGÐð 8¨C¡=÷ r2   rg   c                   ó@   • \ rS rSr\S 5       r\S 5       rS rS rSr	g)ÚSimpleValueéØ   c                 ó   • U $ r,   r–   ©rµ   s    r0   ÚtoStringÚSimpleValue.toStringÙ   ó   € àˆr2   c                 ó   • U $ r,   r–   rÛ   s    r0   Ú
fromStringÚSimpleValue.fromStringÝ   rÞ   r2   c                 óp   • UR                  XESU R                  U5      4/-   5        UR                  5         g ©Nrµ   )Ú	simpletagrÜ   ÚnewlinerÄ   s         r0   rÆ   ÚSimpleValue.xmlWriteá   s2   € Ø×Ñ˜D¨G°T·]±]À5Ó5IÐ+JÐ*KÑ"KÔLØ×ÑÕr2   c                 ó*   • U R                  US   5      $ rã   )rà   r¾   s       r0   rÁ   ÚSimpleValue.xmlReadå   s   € Ø�‰˜u W™~Ó.Ð.r2   r–   N)
rU   rÑ   rÒ   rÓ   ÚstaticmethodrÜ   rà   rÆ   rÁ   rÖ   r–   r2   r0   rØ   rØ   Ø   s2   † Øñó ðð ñó ðòõ/r2   rØ   c                   ó$   • \ rS rSrSrS rS rSrg)ÚOptionalValueéé   Nc                 ó¨   • X0R                   :w  a"  UR                  SU R                  U5      45        UR                  XE5        UR	                  5         g rã   )ÚDEFAULTrW   rÜ   rä   rå   rÄ   s         r0   rÆ   ÚOptionalValue.xmlWriteì   s@   € Ø—L‘LÓ Ø�L‰L˜' 4§=¡=°Ó#7Ð8Ô9Ø×Ñ˜DÔ(Ø×ÑÕr2   c                 óN   • SU;   a  U R                  US   5      $ U R                  $ rã   )rà   rî   r¾   s       r0   rÁ   ÚOptionalValue.xmlReadò   s'   € Ø�eÓØ—?‘? 5¨¡>Ó2Ð2Ø�|‰|Ðr2   r–   )rU   rÑ   rÒ   rÓ   rî   rÆ   rÁ   rÖ   r–   r2   r0   rë   rë   é   s   † Ø€Gòõr2   rë   c                   ó$   • \ rS rSr\S 5       rSrg)ÚIntValueéø   c                 ó   • [        U S5      $ ©Nr   )rÌ   rÛ   s    r0   rà   ÚIntValue.fromStringù   s   € ä�5˜!‹}Ðr2   r–   N©rU   rÑ   rÒ   rÓ   ré   rà   rÖ   r–   r2   r0   ró   ró   ø   s   † Øñó ór2   ró   c                   ó4   • \ rS rSrSrS rS rS	S jrS rSr	g)
ÚLongéþ   é   c                 ó"   • UR                  5       $ r,   ©ÚreadLongr¬   s       r0   rˆ   Ú	Long.read  ó   € Ø�‰Ó Ð r2   c                 ó$   • UR                  U5      $ r,   )ÚreadLongArray©r€   r’   rŠ   rŸ   r    s        r0   r¢   ÚLong.readArray  ó   € Ø×#Ñ# EÓ*Ð*r2   Nc                 ó&   • UR                  U5        g r,   )Ú	writeLongrº   s         r0   r±   Ú
Long.write  ó   € Ø×Ñ˜Õr2   c                 ó&   • UR                  U5        g r,   )ÚwriteLongArray©r€   r´   rŠ   rŸ   rS   s        r0   r·   ÚLong.writeArray
  ó   € Ø×Ñ˜fÕ%r2   r–   r,   ©
rU   rÑ   rÒ   rÓ   r¥   rˆ   r¢   r±   r·   rÖ   r–   r2   r0   rú   rú   þ   ó   † Ø€Jò!ò+ô õ&r2   rú   c                   ó4   • \ rS rSrSrS rS rS	S jrS rSr	g)
ÚULongi  rü   c                 ó"   • UR                  5       $ r,   ©Ú	readULongr¬   s       r0   rˆ   Ú
ULong.read  ó   € Ø×ÑÓ!Ð!r2   c                 ó$   • UR                  U5      $ r,   )ÚreadULongArrayr  s        r0   r¢   ÚULong.readArray  ó   € Ø×$Ñ$ UÓ+Ð+r2   Nc                 ó&   • UR                  U5        g r,   ©Ú
writeULongrº   s         r0   r±   ÚULong.write  ó   € Ø×Ñ˜%Õ r2   c                 ó&   • UR                  U5        g r,   )ÚwriteULongArrayr  s        r0   r·   ÚULong.writeArray  ó   € Ø×Ñ˜vÕ&r2   r–   r,   r  r–   r2   r0   r  r    ó   † Ø€Jò"ò,ô!õ'r2   r  c                   ó$   • \ rS rSr\S 5       rSrg)ÚFlags32i  c                 ó   • SU -  $ )Nz0x%08Xr–   rÛ   s    r0   rÜ   ÚFlags32.toString  ó   € à˜%ÑÐr2   r–   N)rU   rÑ   rÒ   rÓ   ré   rÜ   rÖ   r–   r2   r0   r(  r(    s   † Øñ ó ó r2   r(  c                   ó   • \ rS rSr\rSrg)ÚVarIndexi$  r–   N)rU   rÑ   rÒ   rÓ   r%   rî   rÖ   r–   r2   r0   r-  r-  $  s   † Ø ƒGr2   r-  c                   ó4   • \ rS rSrSrS rS rS	S jrS rSr	g)
ÚShorti(  é   c                 ó"   • UR                  5       $ r,   )Ú	readShortr¬   s       r0   rˆ   Ú
Short.read+  r  r2   c                 ó$   • UR                  U5      $ r,   )ÚreadShortArrayr  s        r0   r¢   ÚShort.readArray.  r  r2   Nc                 ó&   • UR                  U5        g r,   )Ú
writeShortrº   s         r0   r±   ÚShort.write1  r!  r2   c                 ó&   • UR                  U5        g r,   )ÚwriteShortArrayr  s        r0   r·   ÚShort.writeArray4  r%  r2   r–   r,   r  r–   r2   r0   r/  r/  (  r&  r2   r/  c                   ó4   • \ rS rSrSrS rS rS	S jrS rSr	g)
ÚUShorti8  r0  c                 ó"   • UR                  5       $ r,   ©Ú
readUShortr¬   s       r0   rˆ   ÚUShort.read;  ó   € Ø× Ñ Ó"Ð"r2   c                 ó$   • UR                  U5      $ r,   )ÚreadUShortArrayr  s        r0   r¢   ÚUShort.readArray>  s   € Ø×%Ñ% eÓ,Ð,r2   Nc                 ó&   • UR                  U5        g r,   ©ÚwriteUShortrº   s         r0   r±   ÚUShort.writeA  ó   € Ø×Ñ˜5Õ!r2   c                 ó&   • UR                  U5        g r,   )ÚwriteUShortArrayr  s        r0   r·   ÚUShort.writeArrayD  s   € Ø×Ñ Õ'r2   r–   r,   r  r–   r2   r0   r>  r>  8  s   † Ø€Jò#ò-ô"õ(r2   r>  c                   ó4   • \ rS rSrSrS rS rS	S jrS rSr	g)
ÚInt8iH  r   c                 ó"   • UR                  5       $ r,   )ÚreadInt8r¬   s       r0   rˆ   Ú	Int8.readK  r  r2   c                 ó$   • UR                  U5      $ r,   )ÚreadInt8Arrayr  s        r0   r¢   ÚInt8.readArrayN  r  r2   Nc                 ó&   • UR                  U5        g r,   )Ú	writeInt8rº   s         r0   r±   Ú
Int8.writeQ  r
  r2   c                 ó&   • UR                  U5        g r,   )ÚwriteInt8Arrayr  s        r0   r·   ÚInt8.writeArrayT  r  r2   r–   r,   r  r–   r2   r0   rP  rP  H  r  r2   rP  c                   ó4   • \ rS rSrSrS rS rS	S jrS rSr	g)
ÚUInt8iX  r   c                 ó"   • UR                  5       $ r,   )Ú	readUInt8r¬   s       r0   rˆ   Ú
UInt8.read[  r  r2   c                 ó$   • UR                  U5      $ r,   )ÚreadUInt8Arrayr  s        r0   r¢   ÚUInt8.readArray^  r  r2   Nc                 ó&   • UR                  U5        g r,   )Ú
writeUInt8rº   s         r0   r±   ÚUInt8.writea  r!  r2   c                 ó&   • UR                  U5        g r,   )ÚwriteUInt8Arrayr  s        r0   r·   ÚUInt8.writeArrayd  r%  r2   r–   r,   r  r–   r2   r0   r^  r^  X  r&  r2   r^  c                   ó(   • \ rS rSrSrS rSS jrSrg)ÚUInt24ih  é   c                 ó"   • UR                  5       $ r,   ©Ú
readUInt24r¬   s       r0   rˆ   ÚUInt24.readk  rC  r2   Nc                 ó&   • UR                  U5        g r,   ©ÚwriteUInt24rº   s         r0   r±   ÚUInt24.writen  rK  r2   r–   r,   ©rU   rÑ   rÒ   rÓ   r¥   rˆ   r±   rÖ   r–   r2   r0   rl  rl  h  s   † Ø€Jò#÷"r2   rl  c                   ó   • \ rS rSrS rSrg)ÚComputedIntir  c                 ó\   • Ub)  UR                  U< SU< 35        UR                  5         g g )NÚ=)Úcommentrå   rÄ   s         r0   rÆ   ÚComputedInt.xmlWrites  s,   € ØÑØ×Ñ«ªuÐ5Ô6Ø×ÑÕð r2   r–   N©rU   rÑ   rÒ   rÓ   rÆ   rÖ   r–   r2   r0   rx  rx  r  s   † õ r2   rx  c                   ó   • \ rS rSrSrg)rJ   iy  r–   N©rU   rÑ   rÒ   rÓ   rÖ   r–   r2   r0   rJ   rJ   y  ó   † Úr2   rJ   c                   ó   • \ rS rSrSrg)rK   i}  r–   Nr  r–   r2   r0   rK   rK   }  r€  r2   rK   c                   ó   • \ rS rSrSrg)rL   i�  r–   Nr  r–   r2   r0   rL   rL   �  r€  r2   rL   c                   ó(   • \ rS rSrSrS rSS jrSrg)ÚTagi…  rü   c                 ó"   • UR                  5       $ r,   )ÚreadTagr¬   s       r0   rˆ   ÚTag.readˆ  s   € Ø�~‰~ÓÐr2   Nc                 ó&   • UR                  U5        g r,   )ÚwriteTagrº   s         r0   r±   Ú	Tag.write‹  s   € Ø�‰˜Õr2   r–   r,   rv  r–   r2   r0   r„  r„  …  s   † Ø€Jò ÷r2   r„  c                   ó8   • \ rS rSrSrSrS rS rS rS
S jr	S	r
g)ÚGlyphIDi�  r0  ÚHc                 ón   • UR                  UR                  U R                  U R                  U5      5      $ r,   )ÚgetGlyphNameManyr¢   Útypecoder¥   r  s        r0   r¢   ÚGlyphID.readArray“  s/   € Ø×$Ñ$Ø×Ñ˜TŸ]™]¨D¯O©O¸UÓCó
ð 	
r2   c                 ól   • UR                  UR                  U R                  U R                  5      5      $ r,   )ÚgetGlyphNameÚ	readValuer�  r¥   r¬   s       r0   rˆ   ÚGlyphID.read˜  s(   € Ø× Ñ  ×!1Ñ!1°$·-±-ÀÇÁÓ!QÓRÐRr2   c                 óZ   • UR                  U R                  UR                  U5      5        g r,   )r·   r�  ÚgetGlyphIDManyr  s        r0   r·   ÚGlyphID.writeArray›  s!   € Ø×Ñ˜$Ÿ-™-¨×)<Ñ)<¸VÓ)DÕEr2   Nc                 óZ   • UR                  U R                  UR                  U5      5        g r,   )Ú
writeValuer�  Ú
getGlyphIDrº   s         r0   r±   ÚGlyphID.writež  s   € Ø×Ñ˜$Ÿ-™-¨¯©¸Ó)?Õ@r2   r–   r,   )rU   rÑ   rÒ   rÓ   r¥   r�  r¢   rˆ   r·   r±   rÖ   r–   r2   r0   rŒ  rŒ  �  s#   † Ø€JØ€Hò
ò
SòF÷Ar2   rŒ  c                   ó   • \ rS rSrSrSrSrg)Ú	GlyphID32i¢  rü   ÚLr–   N)rU   rÑ   rÒ   rÓ   r¥   r�  rÖ   r–   r2   r0   rž  rž  ¢  s   † Ø€JØƒHr2   rž  c                   ó   • \ rS rSrS rSrg)ÚNameIDi§  c                 óf  • UR                  XESU4/-   5        U(       aƒ  U(       a|  UR                  S5      nU(       ad  UR                  U5      nUR                  S5        U(       a  UR	                  U5        O)UR	                  S5        [
        R                  SU-  5        UR                  5         g )Nrµ   r]   ú  zmissing from name tablez"name id %d missing from name table)rä   rR   ÚgetDebugNamer±   r{  ÚlogÚwarningrå   )r€   rÅ   rŠ   rµ   r]   r¿   Ú	nameTables          r0   rÆ   ÚNameID.xmlWrite¨  s�   € Ø×Ñ˜D¨G°UÐ+;Ð*<Ñ"<Ô=Þ–EØŸ™ Ó(ˆIÞØ ×-Ñ-¨eÓ4�Ø—‘ Ô%ÞØ×%Ñ% dÕ+à×%Ñ%Ð&?Ô@Ü—K‘KÐ DÀuÑ LÔMØ×ÑÕr2   r–   Nr}  r–   r2   r0   r¡  r¡  §  s   † õr2   r¡  c                   ó   • \ rS rSrS rSrg)Ú	STATFlagsi·  c                 ó2  • UR                  XESU4/-   5        / nUS-  (       a  UR                  S5        US-  (       a  UR                  S5        U(       a1  UR                  S5        UR                  SR	                  U5      5        UR                  5         g )Nrµ   r   ÚOlderSiblingFontAttributer0  ÚElidableAxisValueNamer£  Ú )rä   rW   r±   r{  Újoinrå   ©r€   rÅ   rŠ   rµ   r]   r¿   Úflagss          r0   rÆ   ÚSTATFlags.xmlWrite¸  s{   € Ø×Ñ˜D¨G°UÐ+;Ð*<Ñ"<Ô=ØˆØ�4�<Ø�L‰LÐ4Ô5Ø�4�<Ø�L‰LÐ0Ô1ÞØ�O‰O˜DÔ!Ø×Ñ˜cŸh™h u›oÔ.Ø×ÑÕr2   r–   Nr}  r–   r2   r0   rª  rª  ·  s   † õ
r2   rª  c                   ó$   • \ rS rSr\S 5       rSrg)Ú
FloatValueiÅ  c                 ó   • [        U 5      $ r,   )ÚfloatrÛ   s    r0   rà   ÚFloatValue.fromStringÆ  ó   € ä�U‹|Ðr2   r–   Nrø   r–   r2   r0   r´  r´  Å  s   † Øñó ór2   r´  c                   ó(   • \ rS rSrSrS rSS jrSrg)Ú
DeciPointsiË  r0  c                 ó(   • UR                  5       S-  $ ©Né
   r@  r¬   s       r0   rˆ   ÚDeciPoints.readÎ  s   € Ø× Ñ Ó" RÑ'Ð'r2   Nc                 ó>   • UR                  [        US-  5      5        g r¼  )rI  Úroundrº   s         r0   r±   ÚDeciPoints.writeÑ  s   € Ø×Ñœ5 ¨¡Ó,Õ-r2   r–   r,   rv  r–   r2   r0   rº  rº  Ë  s   † Ø€Jò(÷.r2   rº  c                   ót   • \ rS rSr\r\r\r\rS r	S
S jr
\S 5       r\S 5       r\S 5       r\S 5       rS	rg)ÚBaseFixedValueiÕ  c                 óT   • U R                  [        XR                  5      " 5       5      $ r,   )ÚfromIntÚgetattrÚreaderMethodr¬   s       r0   rˆ   ÚBaseFixedValue.readÛ  s   € Ø�|‰|œG F×,=Ñ,=Ô>Ó@ÓAÐAr2   Nc                 óX   • [        XR                  5      " U R                  U5      5        g r,   )rÆ  ÚwriterMethodÚtoIntrº   s         r0   r±   ÚBaseFixedValue.writeÞ  s   € Ü�×)Ñ)Ô*¨4¯:©:°eÓ+<Õ=r2   c                 ó,   • [        XR                  5      $ r,   )Úfi2flÚprecisionBits©rd   rµ   s     r0   rÅ  ÚBaseFixedValue.fromIntá  ó   € ä�U×-Ñ-Ó.Ð.r2   c                 ó,   • [        XR                  5      $ r,   )Úfl2firÏ  rÐ  s     r0   rË  ÚBaseFixedValue.toIntå  rÒ  r2   c                 ó,   • [        XR                  5      $ r,   )Ústr2flrÏ  rÐ  s     r0   rà   ÚBaseFixedValue.fromStringé  ó   € ä�e×.Ñ.Ó/Ð/r2   c                 ó,   • [        XR                  5      $ r,   )Úfl2strrÏ  rÐ  s     r0   rÜ   ÚBaseFixedValue.toStringí  rÙ  r2   r–   r,   )rU   rÑ   rÒ   rÓ   rœ   r¥   rÏ  rÇ  rÊ  rˆ   r±   ÚclassmethodrÅ  rË  rà   rÜ   rÖ   r–   r2   r0   rÃ  rÃ  Õ  sq   † Ø€JØ"€MØ!€LØ!€LòBô>ð ñ/ó ð/ð ñ/ó ð/ð ñ0ó ð0ð ñ0ó ó0r2   rÃ  c                   ó$   • \ rS rSrSrSrSrSrSrg)ÚFixediò  rü   é   rÿ   r  r–   N©	rU   rÑ   rÒ   rÓ   r¥   rÏ  rÇ  rÊ  rÖ   r–   r2   r0   rß  rß  ò  s   † Ø€JØ€MØ€LØƒLr2   rß  c                   ó$   • \ rS rSrSrSrSrSrSrg)ÚF2Dot14iù  r0  é   r2  r8  r–   Nrá  r–   r2   r0   rã  rã  ù  s   † Ø€JØ€MØ€LØƒLr2   rã  c                   óp   ^ • \ rS rSrSrSr\U 4S j5       r\U 4S j5       r\S 5       r	\S 5       r
SrU =r$ )	ÚAnglei   g        g     €†?c                 óB   >• [         TU ]  U5      U R                  -   S-  $ ©Né´   )ÚsuperrÅ  Úbias©rd   rµ   Ú	__class__s     €r0   rÅ  ÚAngle.fromInt  s    ø€ ä‘‘ Ó&¨¯©Ñ1°SÑ8Ð8r2   c                 óB   >• [         TU ]  US-  U R                  -
  5      $ rè  )rê  rË  rë  rì  s     €r0   rË  ÚAngle.toInt
  s   ø€ ä‰w‰}˜e c™k¨S¯X©XÑ5Ó6Ð6r2   c                 ó^   • [        [        U5      U R                  -  5      U R                  -  $ r,   )r   r¶  ÚfactorrÐ  s     r0   rà   ÚAngle.fromString  s%   € ô ”u˜U“| c§j¡jÑ0Ó1°C·J±JÑ>Ð>r2   c                 ó,   • [        XR                  5      $ r,   )r
   rò  rÐ  s     r0   rÜ   ÚAngle.toString  s   € ä*¨5·*±*Ó=Ð=r2   r–   )rU   rÑ   rÒ   rÓ   rë  rò  rÝ  rÅ  rË  rà   rÜ   rÖ   Ú__classcell__©rí  s   @r0   ræ  ræ     s]   ø† ð €DØ"€Fàô9ó ð9ð ô7ó ð7ð ñ?ó ð?ð ñ>ó ö>r2   ræ  c                   ó   • \ rS rSrSrSrg)ÚBiasedAnglei  g      ð?r–   N)rU   rÑ   rÒ   rÓ   rë  rÖ   r–   r2   r0   rù  rù    s	   † ð ƒDr2   rù  c                   óX   • \ rS rSrSrS rS
S jr\S 5       r\S 5       r	\S 5       r
S	rg)ÚVersioni  rü   c                 ó&   • UR                  5       nU$ r,   rþ   )r€   r’   rŠ   rŸ   rµ   s        r0   rˆ   ÚVersion.read!  s   € Ø—‘Ó!ˆØˆr2   Nc                 ó<   • [        U5      nUR                  U5        g r,   )Úfi2ver  rº   s         r0   r±   ÚVersion.write%  s   € Ü�e“ˆØ×Ñ˜Õr2   c                 ó   • [        U 5      $ r,   )Úve2firÛ   s    r0   rà   ÚVersion.fromString)  r¸  r2   c                 ó   • SU -  $ )Nú0x%08xr–   rÛ   s    r0   rÜ   ÚVersion.toString-  r+  r2   c                 ó   • [        U S5      $ )Nrà  )rÔ  )Úvs    r0   Ú	fromFloatÚVersion.fromFloat1  s   € ä�Q˜‹|Ðr2   r–   r,   )rU   rÑ   rÒ   rÓ   r¥   rˆ   r±   ré   rà   rÜ   r	  rÖ   r–   r2   r0   rû  rû    sM   † Ø€Jòô ð ñó ðð ñ ó ð ð ñó ór2   rû  c                   ó,   • \ rS rSrSrSrS rSS jrSrg)	ÚChar64i6  z�An ASCII string with up to 64 characters.

Unused character positions are filled with 0x00 bytes.
Used in Apple AAT fonts in the `gcid` table.
é@   c                 óØ   • UR                  U R                  5      nUR                  S5      nUS:¼  a  US U n[        USSS9nU[        USSS9:w  a  [        R                  SU-  5        U$ )Nó    r   ÚasciiÚreplace©ÚencodingÚerrorsÚignorez%replaced non-ASCII characters in "%s")ÚreadDatar¥   Úfindr   r¥  r¦  )r€   r’   rŠ   rŸ   ÚdataÚzeroPosÚss          r0   rˆ   ÚChar64.read?  sj   € Ø�‰˜tŸ™Ó/ˆØ—)‘)˜EÓ"ˆØ�a‹<Ø˜˜�>ˆDÜ�$ °Ñ;ˆØ”�d W°XÑ>Ó>Ü�K‰KÐ?À!ÑCÔDØˆr2   Nc                 ó@  • [        USSS9nU[        USSS9:w  a  [        R                  SU-  5        [        U5      U R                  :”  a#  [        R                  SX@R                  4-  5        USU R                  -  -   S U R                   nUR                  U5        g )Nr  r  r  r  z&replacing non-ASCII characters in "%s"z$truncating overlong "%s" to %d bytesr  )r   r¥  r¦  Úlenr¥   Ú	writeData)r€   r´   rŠ   rŸ   rµ   r»   r  s          r0   r±   ÚChar64.writeI  s�   € Ü�u w°yÑAˆØ”7˜5¨7¸8ÑDÓDÜ�K‰KÐ@À5ÑHÔIÜˆt‹9�t—‘Ó&Ü�K‰KØ6¸%ÇÁÐ9QÑQôð �u˜tŸ™Ñ.Ñ.Ð0A°$·/±/ÐBˆØ×Ñ˜Õr2   r–   r,   )	rU   rÑ   rÒ   rÓ   rÔ   r¥   rˆ   r±   rÖ   r–   r2   r0   r  r  6  s   † ñð €Jò÷	r2   r  c                   ó<   • \ rS rSrS rS rS
S jrS rS rS r	S	r
g)rO   iU  c                 ó^   • U R                   =(       a    U R                   R                  U5      $ r,   )rQ   r›   r§   s     r0   r›   ÚStruct.getRecordSizeV  s    € Ø�‰×H 4§?¡?×#@Ñ#@ÀÓ#HÐHr2   c                 óH   • U R                  5       nUR                  X5        U$ r,   )rQ   Ú	decompile)r€   r’   rŠ   rŸ   Útables        r0   rˆ   ÚStruct.readY  s   € Ø—‘Ó!ˆØ�‰˜Ô%Øˆr2   Nc                 ó&   • UR                  X5        g r,   )r{   rº   s         r0   r±   ÚStruct.write^  s   € Ø�‰�fÕ#r2   c                 ó†   • Uc.  U(       a&  UR                  XES/-   5        UR                  5         g g UR                  XXTS9  g )N)Úemptyr   )r]   )rä   rå   ÚtoXMLrÄ   s         r0   rÆ   ÚStruct.xmlWritea  s@   € Ø‰=Þð ×#Ñ# D°<°.Ñ*@ÔAØ×!Ñ!Õ#àà�K‰K˜	¨ˆKÒ:r2   c                 ó˜  • SU;   a  [        US   5      (       a  g U R                  5       nUR                  S5      nUb  [        U5      Ul        [        US5      (       + nU(       a·  SnUR                  5        H¡  nUR                  (       d  M  Sn[        US5      (       d  0 Ul        UR                  n	UR                  U	;  d   UR                  U	45       e[        XHR                  S 5        [        UR                  UR                  5      X˜R                  '   M£     U H1  n
[        U
[        5      (       a  U
u  p±nUR                  X±X#5        M1  M3     UR!                  [#        USS 5      S9  U(       aT  W(       aM  UR                  5        H9  nUR                  (       d  M  UR                  n	X˜R                  	 U	(       a  M7  U?M;     U$ )Nr*  ÚFormatÚpostReadFTÚ_propagator)Ú
propagator)r   rQ   rR   rÌ   r.  r¦   ÚgetConvertersr~   r0  r]   Úsetattrr   Ú__dict__r-   r.   ÚfromXMLÚpopulateDefaultsrÆ  )r€   r¿   rÀ   rŠ   r%  r.  Ú
noPostReadÚcleanPropagationrc   r1  Úelementr]   s               r0   rÁ   ÚStruct.xmlReadn  sˆ  € Ø�eÓ¤¨¨w©× 8Ñ 8ØØ—‘Ó!ˆØ—‘˜8Ó$ˆØÑÜ˜v›;ˆEŒLä  ¨
Ó3Ô3ˆ
Þà$ÐØ×+Ñ+Ö-�Ø×$×$Ñ$Ø'+Ð$Ü" 4¨×7Ñ7Ø+-˜Ô(Ø!%×!1Ñ!1�JØŸ9™9¨JÓ6ÐO¸¿¹ÀJÐ8OÓOÐ6Ü˜E§9¡9¨dÔ3Ü,:¸5¿>¹>È4Ï9É9Ó,U�JŸy™yÓ)ñ .ó ˆGÜ˜'¤5×)Ñ)Ø'.Ñ$�˜WØ—‘˜d¨7Ö9áñ ð 	×Ñ¬'°$¸ÀtÓ*LÐÑMæÞØ!×/Ñ/Ö1�DØ×(×(Ñ(Ø%)×%5Ñ%5˜
Ø&§y¡yÐ1ß)˜zØ $Ò 0ñ 2ð ˆr2   c                 ó2   • S[        U R                  5      -   $ )Nz
Struct of )ÚreprrQ   )r€   s    r0   Ú__repr__ÚStruct.__repr__˜  s   € Øœd 4§?¡?Ó3Ñ3Ð3r2   r–   r,   )rU   rÑ   rÒ   rÓ   r›   rˆ   r±   rÆ   rÁ   r=  rÖ   r–   r2   r0   rO   rO   U  s"   † òIòô
$ò;ò(õT4r2   rO   c                   ó$   • \ rS rSrS rSS jrSrg)rM   iœ  c                 óš   • UR                   nU R                  5       nUR                  X5        UR                  XER                  -   5        U$ r,   )r‹   rQ   r$  r‡   r7   )r€   r’   rŠ   rŸ   r‹   r%  s         r0   rˆ   ÚStructWithLength.read�  s=   € Ø�j‰jˆØ—‘Ó!ˆØ�‰˜Ô%Ø�‰�C×,Ñ,Ñ,Ô-Øˆr2   Nc                 ó,  • [        UR                  5       5       H  u  pgUR                  S:X  d  M    O   [        UR                  5      W-   n[        U[        5      (       a  US-  nSSSS.WR                     n	UR                  5       n
X”l	        UR                  X5        UR                  5       U
-
  nUR                  5       nUR                  XÂX;5        UR                  U   SS UR                   :X  d   eUR                  5       UR                  U'   g )Nr7   r   éÞ   i­Þ  ì   ï>[= )r   r0  rü   ó   Þ­¾ï)r°   r2  r]   r  Úitemsr-   r   r¥   ÚgetDataLengthr7   r{   ÚgetSubWriterr±   Ú
getAllData)r€   r´   rŠ   rŸ   rµ   r»   Ú	convIndexrc   ÚlengthIndexÚdeadbeefÚbeforeÚlengthÚlengthWriters                r0   r±   ÚStructWithLength.write¤  sø   € Ü(¨×)<Ñ)<Ó)>Ö?‰OˆIØ�y‰y˜NÕ*Ùñ  @ô ˜&Ÿ,™,Ó'¨)Ñ3ˆÜ�eÔ5×6Ñ6Ø˜1ÑˆKØ ¨:Ñ6°t·±ÑGˆà×%Ñ%Ó'ˆØ%ÔØ�‰�fÔ#Ø×%Ñ%Ó'¨&Ñ0ˆØ×*Ñ*Ó,ˆØ�
‰
�< yÔ9Ø�|‰|˜KÑ(Ð,?Ð@QÀ$Ç/Á/Ð,RÓRÐRÐRØ$0×$;Ñ$;Ó$=ˆ�‰�[Ò!r2   r–   r,   ©rU   rÑ   rÒ   rÓ   rˆ   r±   rÖ   r–   r2   r0   rM   rM   œ  s   † ò÷>r2   rM   c                   ó4   • \ rS rSrSrS rS rS rS	S jrSr	g)
rT   i·  r0  c                 ó"   • UR                  5       $ r,   r@  r§   s     r0   Ú
readOffsetÚTable.readOffsetº  rC  r2   c                 ó&   • UR                  S5        g rö   rH  ©r€   r´   s     r0   ÚwriteNullOffsetÚTable.writeNullOffset½  ó   € Ø×Ñ˜1Õr2   c                 óØ   • U R                  U5      nUS:X  a  g U R                  5       nUR                  U5      nUR                  (       a  Xl        X%l        U$ UR                  X5        U$ rö   )rT  rQ   ÚgetSubReaderrš   r’   rŠ   r$  )r€   r’   rŠ   rŸ   Úoffsetr%  s         r0   rˆ   Ú
Table.readÀ  sa   € Ø—‘ Ó(ˆØ�Q‹;ØØ—‘Ó!ˆØ×$Ñ$ VÓ,ˆØ�9�9Ø!ŒLØŒJð ˆð �O‰O˜FÔ)Øˆr2   Nc                 óÖ   • Uc  U R                  U5        g UR                  5       nU R                  Ul        Ub  XVl        UR	                  X`R
                  S9  UR                  Xb5        g )N©Ú
offsetSize)rX  rH  r]   r»   ÚwriteSubTabler¥   r{   )r€   r´   rŠ   rŸ   rµ   r»   Ú	subWriters          r0   r±   ÚTable.writeÍ  s[   € Ø‰=Ø× Ñ  Õ(à×+Ñ+Ó-ˆIØ!ŸY™YˆIŒNØÑ&Ø(3Ô%Ø× Ñ  ·±Ð ÑGØ�M‰M˜)Õ*r2   r–   r,   )
rU   rÑ   rÒ   rÓ   r¥   rT  rX  rˆ   r±   rÖ   r–   r2   r0   rT   rT   ·  s   † Ø€Jò#òò÷	+r2   rT   c                   ó$   • \ rS rSrSrS rS rSrg)ÚLTableiÙ  rü   c                 ó"   • UR                  5       $ r,   r  r§   s     r0   rT  ÚLTable.readOffsetÜ  r  r2   c                 ó&   • UR                  S5        g rö   r  rW  s     r0   rX  ÚLTable.writeNullOffsetß  s   € Ø×Ñ˜!Õr2   r–   N©rU   rÑ   rÒ   rÓ   r¥   rT  rX  rÖ   r–   r2   r0   rf  rf  Ù  s   † Ø€Jò"õr2   rf  c                   ó$   • \ rS rSrSrS rS rSrg)ÚTable24iä  rm  c                 ó"   • UR                  5       $ r,   ro  r§   s     r0   rT  ÚTable24.readOffsetç  rC  r2   c                 ó&   • UR                  S5        g rö   rs  rW  s     r0   rX  ÚTable24.writeNullOffsetê  rZ  r2   r–   Nrk  r–   r2   r0   rm  rm  ä  s   † Ø€Jò#õr2   rm  c                   ó.   ^ • \ rS rSrS rU 4S jrSrU =r$ )r=   iñ  c                 óŠ   • U R                   U   U   nU R                  U R                  U R                  U R                  U5      $ r,   ©r   rí  r]   r^   r_   ©r€   Ú	tableTypeÚ
lookupTyperQ   s       r0   ÚgetConverterÚSubStruct.getConverterò  ó8   € Ø×%Ñ% iÑ0°Ñ<ˆ
Ø�~‰~˜dŸi™i¨¯©°d·h±hÀ
ÓKÐKr2   c                 ó2   >• [         [        U ]  XUS U5        g r,   )rê  r=   rÆ   ©r€   rÅ   rŠ   rµ   r]   r¿   rí  s         €r0   rÆ   ÚSubStruct.xmlWriteö  s   ø€ ÜŒi˜Ñ'¨	¸ÀÀeÕLr2   r–   ©rU   rÑ   rÒ   rÓ   rx  rÆ   rÖ   rö  r÷  s   @r0   r=   r=   ñ  s   ø† òL÷Mó Mr2   r=   c                   ó.   ^ • \ rS rSrS rU 4S jrSrU =r$ )r;   iú  c                 óŠ   • U R                   U   U   nU R                  U R                  U R                  U R                  U5      $ r,   rt  ru  s       r0   rx  ÚSubTable.getConverterû  rz  r2   c                 ó2   >• [         [        U ]  XUS U5        g r,   )rê  r;   rÆ   r|  s         €r0   rÆ   ÚSubTable.xmlWriteÿ  s   ø€ ÜŒh˜Ñ& y¸¸tÀUÕKr2   r–   r~  r÷  s   @r0   r;   r;   ú  s   ø† òL÷Ló Lr2   r;   c                   ó   • \ rS rSrSS jrSrg)r<   i  Nc                 ó@   • SUl         [        R                  XX#XE5        g )NT)Ú	ExtensionrT   r±   rº   s         r0   r±   ÚExtSubTable.write  s   € ØˆÔÜ�‰�D $°5ÕFr2   r–   r,   )rU   rÑ   rÒ   rÓ   r±   rÖ   r–   r2   r0   r<   r<     s   † ÷Gr2   r<   c                   ó   • \ rS rSrS rSrg)r>   i	  c                 ó°   • U R                   R                  XR                  5      nU R                  U R                  U R
                  U R                  U5      $ r,   )rG   rR   rV   rí  r]   r^   r_   )r€   Ú
featureTagrQ   s      r0   rx  ÚFeatureParams.getConverter
  s?   € Ø×+Ñ+×/Ñ/°
×<UÑ<UÓVˆ
Ø�~‰~˜dŸi™i¨¯©°d·h±hÀ
ÓKÐKr2   r–   N)rU   rÑ   rÒ   rÓ   rx  rÖ   r–   r2   r0   r>   r>   	  s   † õLr2   r>   c                   ó:   • \ rS rSrSrS
SS.S jjrS rS
S jrS	rg)r4   i  r0  Nri   rB   c          	      óX   • [         R                  XX#XES9  SUS   S:X  a  SOS-   U l        g )NrB   r4   éÿÿÿÿÚ2Ú1)rg   r�   Úwhichr   s         r0   r�   ÚValueFormat.__init__  s6   € Ü×ÑØ˜ Zð 	ñ 	
ð #¨T°"©X¸«_¡cÀ#ÑFˆ�
r2   c                 óT   • UR                  5       n[        U5      XR                  '   U$ r,   )rA  r   r‘  ©r€   r’   rŠ   rŸ   Úformats        r0   rˆ   ÚValueFormat.read  s&   € Ø×"Ñ"Ó$ˆÜ/°Ó7ˆ�z‰zÑØˆr2   c                 óT   • UR                  U5        [        U5      XR                  '   g r,   )rI  r   r‘  )r€   r´   rŠ   rŸ   r•  r»   s         r0   r±   ÚValueFormat.write  s!   € Ø×Ñ˜6Ô"Ü/°Ó7ˆ�z‰zÒr2   )r‘  r,   )	rU   rÑ   rÒ   rÓ   r¥   r�   rˆ   r±   rÖ   r–   r2   r0   r4   r4     s   † Ø€JðGÈ"ö Gò÷
8r2   r4   c                   ó6   • \ rS rSrS rS rS	S jrS rS rSr	g)
ÚValueRecordi"  c                 ó6   • S[        XR                     5      -  $ ©Nr0  )r  r‘  r§   s     r0   r›   ÚValueRecord.getRecordSize#  s   € Ø”3�vŸj™jÑ)Ó*Ñ*Ð*r2   c                 ó<   • XR                      R                  X5      $ r,   )r‘  ÚreadValueRecordr¬   s       r0   rˆ   ÚValueRecord.read&  s   € Ø—j‘jÑ!×1Ñ1°&Ó?Ð?r2   Nc                 ó@   • XR                      R                  XU5        g r,   )r‘  ÚwriteValueRecordrº   s         r0   r±   ÚValueRecord.write)  s   € Ø�z‰zÑ×+Ñ+¨F¸%Õ@r2   c                 óF   • Uc  g UR                  XU R                  U5        g r,   )r+  r]   rÄ   s         r0   rÆ   ÚValueRecord.xmlWrite,  s   € Ø‰=Øà�K‰K˜	¨¯©°EÕ:r2   c                 óF   • SSK Jn  U" 5       nUR                  S XU5        U$ )Nr   )rš  )ÚotBaserš  r5  )r€   r¿   rÀ   rŠ   rš  rµ   s         r0   rÁ   ÚValueRecord.xmlRead2  s!   € Ý'á“ˆØ�‰�d˜E¨DÔ1Øˆr2   r–   r,   )
rU   rÑ   rÒ   rÓ   r›   rˆ   r±   rÆ   rÁ   rÖ   r–   r2   r0   rš  rš  "  s   † ò+ò@ôAò;õr2   rš  c                   ó    • \ rS rSrSrSS.S jrS rSS jr\S	 5       r	S
 r
S rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)Ú	AATLookupi:  r½  ri   rB   c          	      óÐ   • [         R                  XX#XES9  [        U R                  [        5      (       a  U R                  SS S S9U l        g [        SS S U R                  S9U l        g )NrB   ÚValue)r]   r^   r_   )r]   r^   r_   rQ   )rg   r�   Ú
issubclassrQ   rØ   Ú	converterrT   r   s         r0   r�   ÚAATLookup.__init__=  s^   € Ü×ÑØ˜ Zð 	ñ 	
ô �d—o‘o¤{×3Ñ3Ø!Ÿ_™_°'À$ÈD˜_ÐQˆD�Nä"Ø T¨tÀÇÁñˆD�Nr2   c                 ó  • UR                  5       nUS:X  a  U R                  X5      $ US:X  a  U R                  X5      $ US:X  a  U R                  X5      $ US:X  a  U R	                  X5      $ US:X  a  U R                  X5      $  SU-  5       e)Nr   r0  rü   é   r„   zunsupported lookup format: %d)rA  ÚreadFormat0ÚreadFormat2ÚreadFormat4ÚreadFormat6ÚreadFormat8r”  s        r0   rˆ   ÚAATLookup.readH  s˜   € Ø×"Ñ"Ó$ˆØ�Q‹;Ø×#Ñ# FÓ1Ð1Ø�q‹[Ø×#Ñ# FÓ1Ð1Ø�q‹[Ø×#Ñ# FÓ1Ð1Ø�q‹[Ø×#Ñ# FÓ1Ð1Ø�q‹[Ø×#Ñ# FÓ1Ð1àBÐ9¸FÑBÓB�5r2   Nc                 óì  • [        [        UR                  5        VVs/ s H  u  pgUR                  U5      U4PM     snn5      5      n[        [        [	        S U R                  XU5      U R                  XU5      U R                  XU5      U R                  XU5      /5      5      5      n	U	S   u  p«nUR                  5       nU" 5         UR                  5       U-
  nXê:X  d   SUU
U4-  5       eg s  snnf )Nr   z;AATLookup format %d claimed to write %d bytes, but wrote %d)
ÚlistÚsortedrF  r›  ÚfilterÚbuildFormat0ÚbuildFormat2ÚbuildFormat6ÚbuildFormat8rG  )r€   r´   rŠ   rŸ   rµ   r»   ÚglyphÚvalrS   ÚformatsÚdataSizeÚlookupFormatÚwriteMethodr‹   Ú
actualSizes                  r0   r±   ÚAATLookup.writeW  s  € ÜÜÀEÇKÁKÄMÔRÂM±j°e�T—_‘_ UÓ+¨SÓ1ÁMÒRÓSó
ˆô ÜÜØà×)Ñ)¨&¸Ó?Ø×)Ñ)¨&¸Ó?Ø×)Ñ)¨&¸Ó?Ø×)Ñ)¨&¸Ó?ð	óó
ó
ˆð /6°a©jÑ+ˆ Ø×"Ñ"Ó$ˆÙŒØ×)Ñ)Ó+¨cÑ1ˆ
àÓ"ð	
àHØØØðL
ñ 
ó	
Ù"ùó/ Ss   žC0c                 óÆ   • U R                  U5        U R                  U5        [        XS9u  p4nU R                  U5        U R                  U5        U R                  U5        g )N)ÚnÚitemSize)rI  r   )r´   ÚnumUnitsÚunitSizeÚsearchRangeÚentrySelectorÚ
rangeShifts         r0   ÚwriteBinSearchHeaderÚAATLookup.writeBinSearchHeaderw  s\   € à×Ñ˜8Ô$Ø×Ñ˜8Ô$Ü1?Øñ2
Ñ.ˆ Jð 	×Ñ˜;Ô'Ø×Ñ˜=Ô)Ø×Ñ˜:Õ&r2   c                 óª   ^ ^^^• [        TR                  5       5      n[        T5      U:w  a  g T R                  R                  nSXE-  -   SUU UU4S j4$ )Nr0  r   c                  ó*   >• TR                  TT T5      $ r,   )ÚwriteFormat0©rŠ   r€   rS   r´   s   €€€€r0   r1   Ú(AATLookup.buildFormat0.<locals>.<lambda>Š  ó   ø€ �D×%Ñ% f¨d°FÔ;r2   )r  ÚgetGlyphOrderr®  r¥   )r€   r´   rŠ   rS   Ú	numGlyphsÚ	valueSizes   ````  r0   r¼  ÚAATLookup.buildFormat0‚  sO   û€ Ü˜×*Ñ*Ó,Ó-ˆ	Üˆv‹;˜)Ó#ØØ—N‘N×-Ñ-ˆ	à�	Ñ%Ñ%Øß;ð
ð 	
r2   c           	      ót   • UR                  S5        U H!  u  pEU R                  R                  XS US S9  M#     g )Nr   ©rŸ   rµ   r»   )rI  r®  r±   )r€   r´   rŠ   rS   ÚglyphID_rµ   s         r0   rÔ  ÚAATLookup.writeFormat0�  s<   € Ø×Ñ˜1ÔÛ%‰OˆHØ�N‰N× Ñ Ø¨°EÀtð !ó ò  &r2   c                 ó@  ^ ^^^• US   u  pEUn/ mUSS   H.  u  pxXvS-   :w  d  X…:w  a  TR                  XFU45        U=pFUnM,  UnM0     TR                  XFU45        T R                  R                  n	[        T5      S-   U	S-   pºST R                  -   X«-  -   SUUU U4S j4$ )Nr   r   rü   r0  c                  ó*   >• TR                  TT T5      $ r,   )ÚwriteFormat2)rŠ   Úsegmentsr€   r´   s   €€€€r0   r1   Ú(AATLookup.buildFormat2.<locals>.<lambda>¥  s   ø€ �D×%Ñ% f¨d°HÔ=r2   )rW   r®  r¥   r  ÚBIN_SEARCH_HEADER_SIZE)r€   r´   rŠ   rS   ÚsegStartÚsegValueÚsegEndÚglyphIDÚcurValuerÚ  rË  rÌ  rã  s   ```         @r0   r½  ÚAATLookup.buildFormat2”  sº   û€ Ø# A™YÑˆØˆØˆØ!'¨¨£ÑˆGØ 1™*Ó$¨Ó(<Ø—‘ °8Ð <Ô=Ø$+Ð+�Ø#’à ’ñ ",ð 	�‰˜¨8Ð4Ô5Ø—N‘N×-Ñ-ˆ	Ü  ›]¨QÑ.°	¸A±�(à�×+Ñ+Ñ+¨hÑ.AÑAØß=ð
ð 	
r2   c           	      ó”  • UR                  S5        U R                  R                  n[        U5      US-   peU R	                  XU5        U HD  u  pxn	UR                  U5        UR                  U5        U R                  R                  XS U	S S9  MF     UR                  S5        UR                  S5        UR                  SU-  5        g )Nr0  rü   rÝ  éÿÿ  r  ©rI  r®  r¥   r  rÐ  r±   r  )
r€   r´   rŠ   rã  rÚ  rË  rÌ  Ú
firstGlyphÚ	lastGlyphrµ   s
             r0   râ  ÚAATLookup.writeFormat2¨  sº   € Ø×Ñ˜1ÔØ—N‘N×-Ñ-ˆ	Ü  ›]¨I¸©M�(Ø×!Ñ! &°HÔ=Û,4Ñ(ˆJ 5Ø×Ñ˜yÔ)Ø×Ñ˜zÔ*Ø�N‰N× Ñ Ø¨°EÀtð !ó ñ -5ð 	×Ñ˜6Ô"Ø×Ñ˜6Ô"Ø×Ñ˜ 9Ñ,Õ-r2   c                 ó˜   ^ ^^^• T R                   R                  n[        T5      US-   peST R                  -   US-   U-  -   SUU UU4S j4$ )Nr0  r   r±  c                  ó*   >• TR                  TT T5      $ r,   )ÚwriteFormat6rÕ  s   €€€€r0   r1   Ú(AATLookup.buildFormat6.<locals>.<lambda>½  r×  r2   )r®  r¥   r  rå  )r€   r´   rŠ   rS   rÚ  rË  rÌ  s   ````   r0   r¾  ÚAATLookup.buildFormat6·  sM   û€ Ø—N‘N×-Ñ-ˆ	Ü  ›[¨)°a©-�(à�×+Ñ+Ñ+¨x¸!©|¸xÑ.GÑGØß;ð
ð 	
r2   c           	      óN  • UR                  S5        U R                  R                  n[        U5      US-   peU R	                  XU5        U H2  u  pxUR                  U5        U R                  R                  XS US S9  M4     UR                  S5        UR                  SU-  5        g )Nr±  r0  rÝ  rí  r  rî  )	r€   r´   rŠ   rS   rÚ  rË  rÌ  ré  rµ   s	            r0   rô  ÚAATLookup.writeFormat6À  s›   € Ø×Ñ˜1ÔØ—N‘N×-Ñ-ˆ	Ü  ›[¨)°a©-�(Ø×!Ñ! &°HÔ=Û$‰NˆGØ×Ñ˜wÔ'Ø�N‰N× Ñ Ø¨°EÀtð !ó ñ %ð
 	×Ñ˜6Ô"Ø×Ñ˜ 9Ñ,Õ-r2   c                 ó´   ^ ^^^• TS   S   TS   S   pT[        T5      XT-
  S-   :w  a  g T R                  R                  nS[        T5      U-  -   SUU UU4S j4$ )Nr   rŽ  r   r±  r„   c                  ó*   >• TR                  TT T5      $ r,   )ÚwriteFormat8rÕ  s   €€€€r0   r1   Ú(AATLookup.buildFormat8.<locals>.<lambda>Õ  r×  r2   )r  r®  r¥   )r€   r´   rŠ   rS   Ú
minGlyphIDÚ
maxGlyphIDrÚ  s   ````   r0   r¿  ÚAATLookup.buildFormat8Í  sa   û€ Ø!'¨¡¨1¡¨v°b©z¸!©}�JÜˆv‹;˜*Ñ1°AÑ5Ó5ØØ—N‘N×-Ñ-ˆ	à”�F“˜iÑ'Ñ'Øß;ð
ð 	
r2   c           	      óÚ   • US   S   nUR                  S5        UR                  U5        UR                  [        U5      5        U H!  u  pVU R                  R                  XS US S9  M#     g )Nr   r„   rÝ  )rI  r  r®  r±   )r€   r´   rŠ   rS   ÚfirstGlyphIDÚ_rµ   s          r0   rû  ÚAATLookup.writeFormat8Ø  si   € Ø˜a‘y ‘|ˆØ×Ñ˜1ÔØ×Ñ˜<Ô(Ø×Ñœ3˜v›;Ô'Û‰HˆAØ�N‰N× Ñ Ø¨°EÀtð !ó ò r2   c                 óÖ   • [        UR                  5       5      nU R                  R                  XS US9n[	        U5       VVs0 s H  u  pVUR                  U5      U_M     snn$ s  snnf ©N©rŸ   r    )r  rØ  r®  r¢   r°   r“  )r€   r’   rŠ   rÙ  r  Úkrµ   s          r0   r²  ÚAATLookup.readFormat0â  s^   € Ü˜×*Ñ*Ó,Ó-ˆ	Ø�~‰~×'Ñ'¨ÀÈIÐ'ÐVˆÜ<EÀd¼OÔLºO±°�×!Ñ! !Ó$ eÒ+¹OÒLÐLùÓLs   ÁA%c                 óØ  • 0 nUR                   S-
  nUR                  5       UR                  5       peUSU R                  R                  -   :¼  d   U5       e[	        U5       H†  nUR                  XGU-  -   S-   5        UR                  5       nUR                  5       n	U R                  R                  XS S9n
US:w  d  M^  [	        X˜S-   5       H  nX£UR                  U5      '   M     Mˆ     U$ )Nr0  rü   é   ©rŸ   rí  r   ©r‹   rA  r®  r¥   r�   r‡   rˆ   r“  )r€   r’   rŠ   Úmappingr‹   rÌ  rË  r‰   ÚlastÚfirstrµ   r  s               r0   r³  ÚAATLookup.readFormat2ç  sÞ   € ØˆØ�j‰j˜1‰nˆØ#×.Ñ.Ó0°&×2CÑ2CÓ2E�(Ø˜1˜tŸ~™~×8Ñ8Ñ8Ó8ÐB¸(ÓBÐ8Ü�x–ˆAØ�K‰K˜ (™lÑ*¨RÑ/Ô0Ø×$Ñ$Ó&ˆDØ×%Ñ%Ó'ˆEØ—N‘N×'Ñ'¨ÀÐ'ÐEˆEØ�v�~Ü˜u¨Q¡hÖ/�AØ49˜D×-Ñ-¨aÓ0Ó1ó 0ñ !ð ˆr2   c                 ó  • 0 nUR                   S-
  nUR                  5       nUS:¼  d   U5       e[        UR                  5       5       HÁ  nUR                  XFU-  -   S-   5        UR                  5       nUR                  5       nUR                  5       n	US:w  d  MT  UR	                  S5      n
U
R                  XI-   5        U R
                  R                  X¢S Xx-
  S-   S9n[        U5       H  u  pÍXÓUR                  XŒ-   5      '   M     MÃ     U$ )Nr0  r±  r
  rí  r   r   r  )	r‹   rA  r�   r‡   r\  r®  r¢   r°   r“  )r€   r’   rŠ   r  r‹   rÌ  r‰   r  r  r]  Ú
dataReaderr  r  r  s                 r0   r´  ÚAATLookup.readFormat4ö  s  € ØˆØ�j‰j˜1‰nˆØ×$Ñ$Ó&ˆØ˜1‹}Ð&˜hÓ&ˆ}Ü�v×(Ñ(Ó*Ö+ˆAØ�K‰K˜ (™lÑ*¨RÑ/Ô0Ø×$Ñ$Ó&ˆDØ×%Ñ%Ó'ˆEØ×&Ñ&Ó(ˆFØ�v�~Ø#×0Ñ0°Ó3�
Ø—‘ ¡Ô-Ø—~‘~×/Ñ/Ø°¸D¹LÈ1Ñ<Lð 0ð �ô & džO‘D�AØ<=˜D×-Ñ-¨e©iÓ8Ó9ó ,ñ ,ð ˆr2   c                 óŒ  • 0 nUR                   S-
  nUR                  5       nUSU R                  R                  -   :¼  d   U5       e[	        UR                  5       5       Ha  nUR                  XFU-  -   S-   5        UR                  5       nU R                  R                  XS S9nUS:w  d  MN  XƒUR                  U5      '   Mc     U$ )Nr0  r
  r  rí  r  )	r€   r’   rŠ   r  r‹   rÌ  r‰   ré  rµ   s	            r0   rµ  ÚAATLookup.readFormat6
  s½   € ØˆØ�j‰j˜1‰nˆØ×$Ñ$Ó&ˆØ˜1˜tŸ~™~×8Ñ8Ñ8Ó8ÐB¸(ÓBÐ8Ü�v×(Ñ(Ó*Ö+ˆAØ�K‰K˜ (™lÑ*¨RÑ/Ô0Ø×'Ñ'Ó)ˆGØ—N‘N×'Ñ'¨ÀÐ'ÐEˆEØ˜&Õ Ø6;˜×)Ñ)¨'Ó2Ó3ñ ,ð ˆr2   c                 óè   • UR                  5       nUR                  5       nU R                  R                  XS US9n[        U5       VVs0 s H  u  pgUR	                  X6-   5      U_M     snn$ s  snnf r  )rA  r®  r¢   r°   r“  )r€   r’   rŠ   r  r    r  r  rµ   s           r0   r¶  ÚAATLookup.readFormat8  sj   € Ø×!Ñ!Ó#ˆØ×!Ñ!Ó#ˆØ�~‰~×'Ñ'¨ÀÈEÐ'ÐRˆÜFOÐPTÄoÔVÂo¹
¸�×!Ñ! %¡)Ó,¨eÒ3ÁoÒVÐVùÓVs   Á
 A.c                 ó¦   • 0 nU HH  n[        U[        5      (       d  M  Uu  pgnUS:X  d  M'  U R                  R                  XxU5      XGS   '   MJ     U$ )NÚLookuprÀ  )r-   r.   r®  rÁ   )	r€   r¿   rÀ   rŠ   rµ   r9  r]   ÚaÚ
eltContents	            r0   rÁ   ÚAATLookup.xmlRead  sT   € ØˆÛˆGÜ˜'¤5×)Ó)Ø&-Ñ#�˜Ø˜8Õ#Ø(,¯©×(>Ñ(>¸qÈdÓ(S�E˜G™*Ó%ñ	 ð
 ˆr2   c           	      ó
  • UR                  XE5        UR                  5         [        UR                  5       5       H$  u  pcU R                  R                  XUSSU4/S9  M&     UR                  U5        UR                  5         g )Nr  rÀ  )rµ   r]   r¿   )Úbegintagrå   rº  rF  r®  rÆ   Úendtag)r€   rÅ   rŠ   rµ   r]   r¿   rÀ  s          r0   rÆ   ÚAATLookup.xmlWrite&  sw   € Ø×Ñ˜4Ô'Ø×ÑÔÜ" 5§;¡;£=Ö1‰LˆEØ�N‰N×#Ñ#Ø u°8ÀWÈeÐDTÐCUð $ó ñ 2ð 	×Ñ˜ÔØ×ÑÕr2   )r®  r,   )rU   rÑ   rÒ   rÓ   rå  r�   rˆ   r±   ré   rÐ  r¼  rÔ  r½  râ  r¾  rô  r¿  rû  r²  r³  r´  rµ  r¶  rÁ   rÆ   rÖ   r–   r2   r0   rª  rª  :  s}   † ØÐàEGõ 	òCô
ð@ ñ'ó ð'ò	
òò
ò(.ò
ò.ò	
òòMò
òò(òWòõr2   rª  c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	ÚAATLookupWithDataOffseti8  c                 óV  • UR                  5       nUR                  5       nUR                  U5      n[        SS S [        5      nUR	                  XbU5      n0 n	UR                  5        H=  u  p«UR                  Xµ-   5      nU R                  5       nUR                  XÂ5        XÙU
'   M?     U	$ ©NÚDataOffsets)r  r\  rª  r>  rˆ   rF  rQ   r$  )r€   r’   rŠ   rŸ   ÚlookupOffsetÚ
dataOffsetÚlookupReaderÚlookupÚoffsetsÚresultrÀ  r]  r  Úitems                 r0   rˆ   ÚAATLookupWithDataOffset.read9  sž   € Ø×'Ñ'Ó)ˆØ×%Ñ%Ó'ˆ
Ø×*Ñ*¨<Ó8ˆÜ˜=¨$°´fÓ=ˆØ—+‘+˜l°)Ó<ˆØˆØ$Ÿ]™]ž_‰MˆEØ×,Ñ,¨VÑ-@ÓAˆJØ—?‘?Ó$ˆDØ�N‰N˜:Ô,Ø �5‹Mñ	 -ð
 ˆr2   Nc                 ó   • 0 0 Sp‡n/ n	[        XBR                  S9 Hq  n
[        5       nXJ   R                  X²5        UR	                  5       nUR                  US 5      nUS :X  a%  UnU[        U5      -   nX×U'   U	R                  U5        XÖU
'   Ms     UR                  5       n[        SS S [        5      nUR                  XâX6S 5        UR                  5       nUR                  USS9  UR                  USS9  U	 H  nUR                  U5        M     g )Nr   )Úkeyr%  rü   r`  )rº  r›  r   r{   rI  rR   r  rW   rH  rª  r>  r±   rb  r  )r€   r´   rŠ   rŸ   rµ   r»   ÚoffsetByGlyphÚoffsetByDataÚdataLenÚcompiledDatarÀ  rc  r  r]  ÚlookupWriterr)  Ú
dataWriterÚds                     r0   r±   ÚAATLookupWithDataOffset.writeG  s  € ð 02°2°q WˆØˆÜ˜E§¡Ô7ˆEÜ%›ˆIØ‰L× Ñ  Ô1Ø×'Ñ'Ó)ˆDØ!×%Ñ% d¨DÓ1ˆFØ˜‹~Ø �Ø!¤C¨£IÑ-�Ø%+˜TÑ"Ø×#Ñ# DÔ)Ø#)˜%Ó ñ 8ð ×*Ñ*Ó,ˆÜ˜=¨$°´fÓ=ˆØ�‰�\¨À4ÔHà×(Ñ(Ó*ˆ
Ø×Ñ˜\°aÐÑ8Ø×Ñ˜Z°AÐÑ6ÛˆAØ× Ñ  Ö#ò r2   c                 óV   • [        SS S U R                  5      nUR                  XU5      $ r$  )rª  rQ   rÁ   )r€   r¿   rÀ   rŠ   r)  s        r0   rÁ   ÚAATLookupWithDataOffset.xmlReadj  s'   € Ü˜=¨$°°d·o±oÓFˆØ�~‰~˜e¨dÓ3Ð3r2   c                 óZ   • [        SS S U R                  5      nUR                  XX4U5        g r$  )rª  rQ   rÆ   )r€   rÅ   rŠ   rµ   r]   r¿   r)  s          r0   rÆ   Ú AATLookupWithDataOffset.xmlWriten  s&   € Ü˜=¨$°°d·o±oÓFˆØ�‰˜	¨°eÕ<r2   r–   r,   ©	rU   rÑ   rÒ   rÓ   rˆ   r±   rÁ   rÆ   rÖ   r–   r2   r0   r"  r"  8  s   † òô!$òF4õ=r2   r"  c                   ó²   • \ rS rSrSSSSS.r\R                  5        V VVs0 s H  u  pX!_M	     snnn rSSS	.S
 jjrS rS r	S r
S rSS jrSrgs  snnn f )ÚMorxSubtableConverteris  ÚLayoutOrderÚReversedLayoutOrderÚLogicalOrderÚReversedLogicalOrder))FF)TF©FT)TTNri   rB   c          	      ó.   • [         R                  XX#XES9  g ©NrB   )rg   r�   r   s         r0   r�   ÚMorxSubtableConverter.__init__~  s   € Ü×ÑØ˜ Zð 	ò 	
r2   c                 óV   • US-  S:w  a  SUl         g US-  S:w  a  SUl         g SUl         g )Né    r   ÚAnyé€   ÚVerticalÚ
Horizontal)ÚTextDirection)r€   r±  Úsubtables      r0   Ú"_setTextDirectionFromCoverageFlagsÚ8MorxSubtableConverter._setTextDirectionFromCoverageFlagsƒ  s2   € Ø�D‰L˜QÓØ%*ˆHÕ"Ø�d‰l˜qÓ Ø%/ˆHÕ"à%1ˆHÕ"r2   c                 óz  • UR                   n[        5       nUR                  5       Ul        UR	                  5       nUS-  S:g  US-  S:g  4nU R
                  U   Ul        U R                  Xe5        UR                  5       Ul	        U=R                  US-  S-  -  sl	        UR	                  5       Ul
        UR                  5       Ul        [        S   R                  UR                  5      nUc   SUR                  -  5       eUR                   U-
  n	UR                  UR                   UR                   UR                  -   U	-
   n
[        U
5      UR                  U	-
  :X  d   e[!        X¡R"                  S9nU" 5       Ul        UR$                  R'                  X²5        UR)                  XER                  -   5        U$ )Nr  r   rà  é   Úmorxz!unsupported 'morx' lookup type %s)r  ÚtableTag)r‹   r"   r  r7   r`  Ú_PROCESSING_ORDERSÚProcessingOrderrO  rA  ÚReservedr8   ÚSubFeatureFlagsr   rR   r  r  r   rT  r=   r$  r‡   )r€   r’   rŠ   rŸ   r‹   rÎ   r±  ÚorderKeyrQ   ÚheaderLengthr  Ú	subReaders               r0   rˆ   ÚMorxSubtableConverter.read‹  sz  € Ø�j‰jˆÜ‹NˆØ×)Ñ)Ó+ˆŒØ× Ñ Ó"ˆØ˜T‘\ aÑ'¨%°$©,¸1Ñ)<Ð=ˆØ ×3Ñ3°HÑ=ˆÔØ×/Ñ/°Ô9Ø×&Ñ&Ó(ˆŒ
Ø	�
Š
�u˜s‘{ rÑ)Ñ)�
Ø×&Ñ&Ó(ˆŒØ"×,Ñ,Ó.ˆÔÜ  Ñ(×,Ñ,¨Q¯[©[Ó9ˆ
ØÑØKÐ=ÀÇÁÑKÓK�5ð —z‘z CÑ'ˆØ�{‰{˜6Ÿ:™:¨¯
©
°Q·^±^Ñ(CÀlÑ(RÐSˆÜ�4‹y˜AŸN™N¨\Ñ9Ó9Ð9Ð9Ü! t·o±oÑFˆ	Ù “lˆŒØ	�‰×Ñ˜iÔ.Ø�‰�CŸ.™.Ñ(Ô)Øˆr2   c                 óò  • UR                  XE5        UR                  5         UR                  SUR                  -  5        UR                  5         UR	                  SUR
                  S9  UR                  5         UR	                  SUR                  S9  UR                  5         UR                  S:w  a-  UR	                  SSUR                  -  S9  UR                  5         UR                  SUR                  -  5        UR                  5         UR	                  S	S
UR                  -  S9  UR                  5         UR                  R                  X5        UR                  U5        UR                  5         g )NzStructLength=%drM  rÛ   rV  r   rW  z0x%04xzMorphType=%drX  r  )r  rå   r{  r7   rä   rM  rV  rW  r8   rX  r=   r+  r  rÄ   s         r0   rÆ   ÚMorxSubtableConverter.xmlWrite¦  s;  € Ø×Ñ˜4Ô'Ø×ÑÔØ×ÑÐ+¨e×.@Ñ.@Ñ@ÔAØ×ÑÔØ×Ñ˜O°5×3FÑ3FÐÑGØ×ÑÔØ×ÑÐ-°U×5JÑ5JÐÑKØ×ÑÔØ�>‰>˜QÓØ×Ñ 
°(¸U¿^¹^Ñ2KÐÑLØ×ÑÔØ×Ñ˜.¨5¯?©?Ñ:Ô;Ø×ÑÔØ×ÑÐ-°XÀ×@UÑ@UÑ5UÐÑVØ×ÑÔØ�‰×Ñ˜iÔ.Ø×Ñ˜ÔØ×ÑÕr2   c                 óä  • [        5       nSnSUl        [        [        U5       GH-  u  pgnUS:X  aE  [	        US   5      nUS-  S:g  US-  S:g  4n	U R
                  U	   Ul        U R                  XT5        MR  US:X  a:  US   Ul        UR                  U R                  ;   d   SUR                  -  5       eM’  US:X  a0  US   Ul	        UR                  S	;   d   S
UR                  -  5       eMÈ  US:X  a  [	        US   5      Ul        Mã  US:X  a  [	        US   5      Ul
        Mþ  UR                  S5      (       a  UR                  XgXƒ5        GM)   U5       e   US-  S-  UR                  -  Ul        U$ )Nr   ÚCoverageFlagsrµ   r  rà  rV  zunknown ProcessingOrder: %srM  >   rI  rK  rL  zunknown TextDirection %srW  rX  ÚMorphrR  )r"   rW  r»  Úistupler   rU  rV  rO  Ú_PROCESSING_ORDERS_REVERSEDrM  rX  rI   r5  )
r€   r¿   rÀ   rŠ   rÎ   ÚcovFlagsÚeltNameÚeltAttrsr  rY  s
             r0   rÁ   ÚMorxSubtableConverter.xmlReadº  s€  € Ü‹NˆØˆØˆŒ
Ü-3´G¸W×-EÑ)ˆG˜zØ˜/Ó)ä# H¨WÑ$5Ó6�Ø%¨™_°Ñ2°XÀ±_ÈÑ4JÐK�Ø$(×$;Ñ$;¸HÑ$E�Ô!Ø×7Ñ7¸ÖDØÐ-Ó-Ø$,¨WÑ$5�Ô!Ø×(Ñ(¨D×,LÑ,LÓLð Ø1°A×4EÑ4EÑEóÒLð ˜OÓ+Ø"*¨7Ñ"3�”Ø—‘Ð*KÓKð Ø.°·±Ñ@óÒKð ˜JÓ&Ü% h¨wÑ&7Ó8�–
ØÐ-Ó-Ü$,¨X°gÑ->Ó$?�Ö!Ø×!Ñ! '×*Ñ*Ø—	‘	˜'¨Z×>à%˜gÓ%�uñ1 .Fð2  ‘n¨Ñ+¨a¯j©jÑ8ˆŒ
Øˆr2   c                 óT  • UR                   S-  S-	  nU R                  UR                     u  pxXdR                  S:X  a  SOS-  nXg(       a  SOS-  nXdR                  S:X  a  SOS-  nXh(       a  SOS-  nXdl        [        UR                  5      n	UR                  5       n
S	Ul        UR                   nUR                   S
-  Ul         UR                  X5        X´l         UR                  U	   S:X  d   eUR                  5       U
-
  n[        R                  " SU5      UR                  U	'   g )Ni   rà  rK  rJ  r   r  rI  rH  rD  rí  rE  z>L)rW  rc  rV  rM  r`  r  rF  rG  r7   r{   ÚstructÚpack)r€   r´   rŠ   rŸ   rµ   r»   rd  ÚreverseOrderÚlogicalOrderrK  rM  ÚorigReservedrN  s                r0   r±   ÚMorxSubtableConverter.writeÚ  s  € Ø—N‘N ZÑ/°BÑ6ˆØ%)×%EÑ%EØ×!Ñ!ñ&
Ñ"ˆð 	×/Ñ/°:Ó=‘DÀ1ÑDˆØ�L‘D¨aÑ/ˆØ×/Ñ/°5Ó8‘D¸aÑ?ˆØ�L‘D¨aÑ/ˆØ&ÔÜ˜&Ÿ,™,Ó'ˆØ×%Ñ%Ó'ˆØ'ˆÔð —~‘~ˆØŸ™¨&Ñ0ˆŒØ�‰�fÔ#Ø%ŒØ�|‰|˜KÑ(Ð,?Ó?Ð?Ð?Ø×%Ñ%Ó'¨&Ñ0ˆÜ$*§K¢K°°fÓ$=ˆ�‰�[Ò!r2   r–   r,   )rU   rÑ   rÒ   rÓ   rU  rF  rc  r�   rO  rˆ   rÆ   rÁ   r±   rÖ   )r—   r/  rÁ  s   000r0   r>  r>  s  sl   † ð &Ø,Ø%Ø,ñÐð =O×<TÑ<TÔ<VÕ"WÒ<V±° 3¢8Ñ<VÓ"WÐð
È"ö 
ò
2òò6ò(÷@>ùô} #Xs   ¢Ar>  c                   ó†   • \ rS rSrSS.S jrS rS rS rS rS	 r	SS jr
S rS rS rS rS rS rS rS rS rS rSrg
)Ú	STXHeaderiô  ri   rB   c          	      ó  • [         R                  XX#XES9  [        U R                  [        5      (       d   e[        SS S [        5      U l        [        U R                  [        5      (       a  [        SS S [        5      U l
        g S U l
        g )NrB   ÚGlyphClassesÚPerGlyphLookup)rg   r�   r­  rQ   r   rª  r>  ÚclassLookupr   rŒ  ÚperGlyphLookupr   s         r0   r�   ÚSTXHeader.__init__õ  sv   € Ü×ÑØ˜ Zð 	ñ 	
ô ˜$Ÿ/™/¬9×5Ñ5Ð5Ð5Ü$ ^°T¸4ÄÓHˆÔÜ�d—o‘oÔ'<×=Ñ=Ü"+Ð,<¸dÀDÌ'Ó"RˆDÕà"&ˆDÕr2   c                 ó²  • [        5       nUR                  nUR                  S5      nUR                  S5      nUR                  S5      nS n	S n
UR                  5       Ul        UR                  XQR                  5       -   5        UR                  XQR                  5       -   5        UR                  XQR                  5       -   5        U R                  b2  UR                  S5      nUR                  XQR                  5       -   5        [        U R                  [        5      (       aç  UR                  S5      n	U	R                  XQR                  5       -   5        UR                  S5      nUR                  XQR                  5       -   5        UR                  S5      n
U
R                  XQR                  5       -   5        U
R                  UR                  -
  S-  nUS:¼  d   eUR                  U5      Ul        U R                  X¢5      Ul        OQ[        U R                  [        5      (       a2  UR                  S5      n	U	R                  XQR                  5       -   5        U R                  R!                  XbU5      Ul        [%        UR                  UR                  -
  UR                  S-  -  5      n['        U5       Ht  n[)        5       nUR*                  R-                  U5        ['        UR                  5       H3  nUR/                  5       nU R1                  UUX)5      UR2                  U'   M5     Mv     U R                  b  U R5                  UWU5      Ul        U$ )Nr   r0  )r   r‹   r\  r  ÚGlyphClassCountr‡   ru  r­  rQ   r    rE  ÚLigComponentsÚ_readLigaturesÚ	Ligaturesr!   rt  rˆ   rr  rÌ   r�   r   ÚStatesrW   rA  Ú_readTransitionÚTransitionsÚ_readPerGlyphLookupsÚPerGlyphLookups)r€   r’   rŠ   rŸ   r%  r‹   ÚclassTableReaderÚstateArrayReaderÚentryTableReaderÚactionReaderÚligaturesReaderÚperGlyphTableReaderÚligComponentReaderÚnumLigComponentsÚ	numStatesÚ
stateIndexÚstateÚ
glyphClassÚ
entryIndexs                      r0   rˆ   ÚSTXHeader.read   sï  € Ü“ˆØ�j‰jˆØ!×.Ñ.¨qÓ1ÐØ!×.Ñ.¨qÓ1ÐØ!×.Ñ.¨qÓ1ÐØˆØˆØ &× 0Ñ 0Ó 2ˆÔØ×Ñ˜c×$4Ñ$4Ó$6Ñ6Ô7Ø×Ñ˜c×$4Ñ$4Ó$6Ñ6Ô7Ø×Ñ˜c×$4Ñ$4Ó$6Ñ6Ô7Ø×ÑÑ*Ø"(×"5Ñ"5°aÓ"8ÐØ×$Ñ$ S×+;Ñ+;Ó+=Ñ%=Ô>Ü�d—o‘oÔ':×;Ñ;Ø!×.Ñ.¨qÓ1ˆLØ×Ñ˜c×$4Ñ$4Ó$6Ñ6Ô7Ø!'×!4Ñ!4°QÓ!7ÐØ×#Ñ# C×*:Ñ*:Ó*<Ñ$<Ô=Ø$×1Ñ1°!Ó4ˆOØ× Ñ  ×'7Ñ'7Ó'9Ñ!9Ô:Ø /× 3Ñ 3Ð6H×6LÑ6LÑ LÐQRÑRÐØ# qÓ(Ð(Ð(Ø"4×"DÑ"DÐEUÓ"VˆEÔØ"×1Ñ1°/ÓHˆE�OÜ˜Ÿ™Ô)=×>Ñ>Ø!×.Ñ.¨qÓ1ˆLØ×Ñ˜c×$4Ñ$4Ó$6Ñ6Ô7Ø!×-Ñ-×2Ñ2Ð3CÈ9ÓUˆÔÜØ×!Ñ!Ð$4×$8Ñ$8Ñ8¸U×=RÑ=RÐUVÑ=VÑWó
ˆ	ô   	Ö*ˆJÜ“JˆEØ�L‰L×Ñ Ô&Ü# E×$9Ñ$9Ö:�
Ø-×8Ñ8Ó:�
Ø04×0DÑ0DØ$ j°$ó1�×!Ñ! *Ó-ó ;ñ +ð ×ÑÑ*Ø$(×$=Ñ$=ØÐ*¨Dó%ˆEÔ!ð ˆr2   c                 óž   • U R                  5       nUR                  UR                  X%R                  -  -   5      nUR	                  XcU5        U$ r,   )rQ   r\  r‹   r¥   r$  )r€   r’   r�  rŠ   r„  Ú
transitionÚentryReaders          r0   r}  ÚSTXHeader._readTransition/  sK   € Ø—_‘_Ó&ˆ
Ø×)Ñ)Ø�J‰J˜×&;Ñ&;Ñ;Ñ;ó
ˆð 	×Ñ˜[°Ô=ØÐr2   c                 óŽ   • [        UR                  5      nX1R                  -
  S-  nUR                  UR	                  U5      5      $ rœ  )r  r  r‹   r�  rE  )r€   r’   rŠ   ÚlimitÚnumLigatureGlyphss        r0   rz  ÚSTXHeader._readLigatures7  s?   € Ü�F—K‘KÓ ˆØ"§Z¡ZÑ/°AÑ5ÐØ×$Ñ$ V×%;Ñ%;Ð<MÓ%NÓOÐOr2   c                 óD  • SnUR                    H�  nUR                  R                  5        Hl  n[        U[        5      (       d  M  UR
                  S:w  a  [        X$R
                  S-   5      nUR                  S:w  d  MT  [        X$R                  S-   5      nMn     M�     U$ )Nr   rí  r   )r|  r~  rS   r-   r   Ú	MarkIndexÚmaxÚCurrentIndex)r€   r%  Ú
numLookupsr‹  r/   s        r0   Ú_countPerGlyphLookupsÚSTXHeader._countPerGlyphLookups<  sƒ   € ð
 ˆ
Ø—\”\ˆEØ×&Ñ&×-Ñ-Ö/�Ü˜aÔ!6×7Ó7Ø—{‘{ fÓ,Ü%(¨·[±[À1±_Ó%E˜
Ø—~‘~¨Õ/Ü%(¨·^±^ÀaÑ5GÓ%Hš
ó 0ñ "ð Ðr2   c                 ó  • UR                   n/ n[        U R                  U5      5       H`  nUR                  S5      nUR	                  XBR                  5       -   5        UR                  U R                  R                  Xs0 5      5        Mb     U$ rö   )	r‹   r�   rœ  r\  r‡   r  rW   ru  rˆ   )r€   r%  r’   rŠ   r‹   Úlookupsr  r(  s           r0   r  ÚSTXHeader._readPerGlyphLookupsK  sz   € Ø�j‰jˆØˆÜ�t×1Ñ1°%Ó8Ö9ˆAØ!×.Ñ.¨qÓ1ˆLØ×Ñ˜c×$4Ñ$4Ó$6Ñ6Ô7Ø�N‰N˜4×.Ñ.×3Ñ3°LÈÓKÖLñ :ð ˆr2   Nc                 ó\  • [        5       nU R                  R                  XbX4R                  S S9  [	        UR                  5       S5      n[        UR                  R                  5       5      S-   nSn	U R                  b  U	S-  n	X�R                  R                  -  n	U R                  R                  X$R                  5      u  p«U R                  X$R                  X‹5      u  pÍU	[        U5      -   nU[        U5      -   nU[        U5      -   n[	        U R                  XB5      S5      nU
b  U[        U5      -   nOS nSu  nnU R!                  XB5      nU R#                  XB5      nUb-  [        U5      S:X  d   eU[        U
5      -   nU[        U5      -   nUR%                  U5        UR%                  U	5        UR%                  U5        UR%                  U5        U R                  b  UR%                  U5        Ub  UR%                  U5        Ub"  UR%                  U5        UR%                  U5        UR'                  U5        UR'                  U5        UR'                  U5        UR'                  U5        U
b  UR'                  U
5        Ub  UR'                  U5        Ub  UR'                  U5        g g )N)r»   r0  r   rà  rü   )NNr   )r   rt  r±   rr  r   rI  r™  rS   ru  rQ   ÚactionHeaderSizeÚcompileActionsr|  Ú_compileStatesr  Ú_compilePerGlyphLookupsÚ_compileLigComponentsÚ_compileLigaturesr  r  )r€   r´   rŠ   rŸ   rµ   r»   ÚglyphClassWriterÚglyphClassDataÚglyphClassCountÚglyphClassTableOffsetÚ
actionDataÚactionIndexÚstateArrayDataÚentryTableDataÚstateArrayOffsetÚentryTableOffsetÚperGlyphOffsetÚperGlyphDataÚactionOffsetÚligaturesOffsetÚligComponentsOffsetÚligComponentsDataÚligaturesDatas                          r0   r±   ÚSTXHeader.writeT  s™  € Ü(›?ÐØ×Ñ×ÑØ I×/AÑ/AÈtð 	ñ 	
ô Ð-×8Ñ8Ó:¸AÓ>ˆÜ˜e×0Ñ0×7Ñ7Ó9Ó:¸QÑ>ˆØ "ÐØ×ÑÑ*Ø! QÑ&Ð!à§¡×!AÑ!AÑAÐØ"&§/¡/×"@Ñ"@ÀÇ|Á|Ó"TÑˆ
Ø)-×)<Ñ)<Ø—,‘, ó*
Ñ&ˆð 1´3°~Ó3FÑFÐØ+¬c°.Ó.AÑAÐØ)¬C°Ó,?Ñ?ˆÜ˜4×7Ñ7¸ÓDÀaÓHˆØÑ!Ø+¬c°.Ó.AÑA‰LàˆLà/9Ñ,ˆÐ,Ø ×6Ñ6°uÓCÐØ×.Ñ.¨uÓ;ˆØÑ(Ü�|Ó$¨Ó)Ð)Ð)Ø".´°Z³Ñ"@ÐØ1´CÐ8IÓ4JÑJˆOà×Ñ˜/Ô*Ø×ÑÐ/Ô0Ø×ÑÐ*Ô+Ø×ÑÐ*Ô+Ø×ÑÑ*Ø×Ñ˜nÔ-ØÑ#Ø×Ñ˜lÔ+ØÑ*Ø×ÑÐ1Ô2Ø×Ñ˜oÔ.Ø×Ñ˜Ô(Ø×Ñ˜Ô(Ø×Ñ˜Ô(Ø×Ñ˜Ô&ØÑ!Ø×Ñ˜ZÔ(ØÑ(Ø×ÑÐ.Ô/ØÑ$Ø×Ñ˜]Õ+ð %r2   c           	      ó:  • [        5       n/ 0 pvU H×  n[        U5       HÅ  n	UR                  U	   n
[        5       nU
R                  X±U5        UR	                  5       n[        U5      U
R                  :X  d)   S[        U
5      U
R                  [        U5      4-  5       eUR                  U5      nUc   [        U5      nX×U'   UR                  U5        UR                  U5        MÇ     MÙ     [        UR	                  5       S5      n[        [        U5      S5      nXï4$ )Nz1%s has staticSize %d, but actually wrote %d bytesrü   )r   r�   r~  r{   rI  r  r¥   r<  rR   rW   rI  r   r   )r€   rŠ   Ústatesrª  r­  ÚstateArrayWriterÚentriesÚentryIDsr‹  rŒ  r�  ÚentryWriterÚ	entryDatar�  r®  r¯  s                   r0   r¤  ÚSTXHeader._compileStates‹  s  € Ü(›?ÐØ �ÛˆEÜ# OÖ4�
Ø"×.Ñ.¨zÑ:�
Ü+›o�Ø×"Ñ" ;°kÔBØ'×2Ñ2Ó4�	ä˜	“N j×&;Ñ&;Ó;ðàIÜ˜Ó$Ø×)Ñ)Ü˜	“NðMñ óØ;ð &Ÿ\™\¨)Ó4�
ØÑ%Ü!$ W£�JØ*4˜YÑ'Ø—N‘N 9Ô-Ø ×,Ñ,¨ZÖ8ó# 5ñ ô& Ð-×8Ñ8Ó:¸AÓ>ˆÜœY wÓ/°Ó3ˆØÐ-Ð-r2   c                 ó†  • U R                   c  gU R                  U5      n[        UR                  5      U:X  d   S[        UR                  5      U4-  5       e[	        5       nUR                   HA  nUR                  5       nU R                   R                  Xb0 US 5        UR                  USS9  MC     UR                  5       $ )Nr2   zVlen(AATStateTable.PerGlyphLookups) is %d, but the actions inside the table refer to %drü   r`  )	ru  rœ  r  r€  r   rH  r±   rb  rI  )r€   r%  rŠ   r›  r´   r)  r4  s          r0   r¥  Ú!STXHeader._compilePerGlyphLookups¥  sÃ   € Ø×ÑÑ&ØØ×/Ñ/°Ó6ˆ
Ü�5×(Ñ(Ó)¨ZÓ7ð 	
ð;ä�5×(Ñ(Ó)¨:Ð6ñ7ó	
Ð7ô
 “ˆØ×+Ô+ˆFØ!×.Ñ.Ó0ˆLØ×Ñ×%Ñ% l¸"¸fÀdÔKØ× Ñ  ¸!Ð Ó<ñ ,ð × Ñ Ó"Ð"r2   c                 ó¢   • [        US5      (       d  g [        5       nUR                   H  nUR                  U5        M     UR	                  5       $ )Nry  )r¦   r   ry  rI  rI  )r€   r%  rŠ   r´   Ú	components        r0   r¦  ÚSTXHeader._compileLigComponentsµ  sF   € Ü�u˜o×.Ñ.ØÜ“ˆØ×,Ô,ˆIØ×Ñ˜yÖ)ñ -à× Ñ Ó"Ð"r2   c                 óÀ   • [        US5      (       d  g [        5       nUR                   H#  nUR                  UR	                  U5      5        M%     UR                  5       $ )Nr{  )r¦   r   r{  rI  r›  rI  )r€   r%  rŠ   r´   Ú	glyphNames        r0   r§  ÚSTXHeader._compileLigatures½  sM   € Ü�u˜k×*Ñ*ØÜ“ˆØŸœˆIØ×Ñ˜tŸ™¨yÓ9Ö:ñ )à× Ñ Ó"Ð"r2   c           	      óD  • UR                  XE5        UR                  5         UR                  SUR                  -  5        UR                  5         [	        UR
                  R                  5       5       H%  u  pgUR                  SXgS9  UR                  5         M'     [        UR                  5       H†  u  p‰UR                  SUS9  UR                  5         [	        U	R                  R                  5       5       H  u  p«UR                  UUSU
0SS9  M     UR                  S5        UR                  5         Mˆ     [        UR                  5       Hˆ  u  pÍUR                  S	US9  UR                  5         [	        UR                  5       5       H%  u  pïUR                  S
XïS9  UR                  5         M'     UR                  S	5        UR                  5         MŠ     [        US5      (       a€  UR                  S5        UR                  5         [        [        US5      5       H%  u  pÏUR                  SXÏS9  UR                  5         M'     UR                  S5        UR                  5         U R!                  XX4U5        UR                  U5        UR                  5         g )NzGlyphClassCount=%sÚ
GlyphClass©rÀ  rµ   ÚState)ÚindexÚonGlyphClassÚ
Transition)rŠ   r¿   r]   rs  r  ry  ÚLigComponent)rÎ  rµ   )r  rå   r{  rx  rº  rr  rF  rä   r°   r|  r~  r+  r  r€  r¦   rÆ  Ú_xmlWriteLigatures)r€   rÅ   rŠ   rµ   r]   r¿   ÚgÚklassrŠ  r‹  rŒ  Útransr‰   r)  rÀ  rÁ  s                   r0   rÆ   ÚSTXHeader.xmlWriteÅ  sM  € Ø×Ñ˜4Ô'Ø×ÑÔØ×ÑÐ.°×1FÑ1FÑFÔGØ×ÑÔÜ˜u×1Ñ1×7Ñ7Ó9Ö:‰HˆAØ×Ñ °AÐÑCØ×ÑÖñ ;ô "+¨5¯<©<Ö!8ÑˆJØ×Ñ˜w¨jÐÑ9Ø×ÑÔÜ%+¨E×,=Ñ,=×,CÑ,CÓ,EÖ%FÑ!�
Ø—‘ØØØ)¨:Ð6Ø%ð	 ó ñ &Gð ×Ñ˜WÔ%Ø×ÑÖñ "9ô # 5×#8Ñ#8Ö9‰IˆAØ×ÑÐ/°qÐÑ9Ø×ÑÔÜ$ V§\¡\£^Ö4‘
�Ø×#Ñ# H°EÐ#ÑEØ×!Ñ!Ö#ñ 5ð ×ÑÐ-Ô.Ø×ÑÖñ :ô �5˜/×*Ñ*Ø×Ñ˜Ô/Ø×ÑÔÜ#¤G¨E°?Ó$CÖD‘�Ø×#Ñ# N¸!Ð#ÑGØ×!Ñ!Ö#ñ Eð ×Ñ˜_Ô-Ø×ÑÔØ×Ñ 	°¸eÔDØ×Ñ˜ÔØ×ÑÕr2   c                 ó(  • [        US5      (       d  g UR                  S5        UR                  5         [        [	        US5      5       H%  u  pgUR                  SXgS9  UR                  5         M'     UR                  S5        UR                  5         g )Nr{  ÚLigature)rÎ  rÀ  )r¦   r  rå   r°   rÆ  rä   r  )r€   rÅ   rŠ   rµ   r]   r¿   r‰   rÓ  s           r0   rÒ  ÚSTXHeader._xmlWriteLigaturesí  s   € Ü�u˜k×*Ñ*ØØ×Ñ˜;Ô'Ø×ÑÔÜœg e¨[Ó9Ö:‰DˆAØ×Ñ 
°!ÐÑ=Ø×ÑÖñ ;ð 	×Ñ˜Ô%Ø×ÑÕr2   c                 ó\  • [        5       n[        [        U5       Hâ  u  pVnUS:X  a$  US   nUS   n	[        U	5      UR                  U'   M0  US:X  a/  U R                  XgU5      n
UR                  R                  U
5        Me  US:X  a9  U R                  R                  XgU5      nUR                  R                  U5        M¤  US:X  a  U R                  XgU5      Ul        MÃ  US:X  d  MË  U R                  XgU5      Ul        Mä     [        UR                  R!                  5       5      S-   Ul        U$ )	NrË  rÀ  rµ   rÍ  rs  ry  r{  r   )r   r»  rb  r   rr  Ú_xmlReadStater|  rW   ru  rÁ   r€  Ú_xmlReadLigComponentsry  Ú_xmlReadLigaturesr{  r™  rS   rx  )r€   r¿   rÀ   rŠ   r%  re  rf  r  rÀ  rµ   r‹  r)  s               r0   rÁ   ÚSTXHeader.xmlReadø  s  € Ü“ˆÜ-3´G¸WÖ-EÑ)ˆG˜zØ˜,Ó&Ø  Ñ)�Ø  Ñ)�Ü,4°U«O�×"Ñ" 5Ó)Ø˜GÓ#Ø×*Ñ*¨8ÀÓF�Ø—‘×#Ñ# EÖ*ØÐ,Ó,Ø×,Ñ,×4Ñ4°XÈ4ÓP�Ø×%Ñ%×,Ñ,¨VÖ4Ø˜OÓ+Ø&*×&@Ñ&@Ø¨$ó'�Ö#ð ˜KÕ'Ø"&×"8Ñ"8¸ÈtÓ"T�–ñ! .Fô" !$ E×$6Ñ$6×$=Ñ$=Ó$?Ó @À1Ñ DˆÔØˆr2   c                 óÚ   • [        5       n[        [        U5       HL  u  pVnUS:X  d  M  [        US   5      nU R	                  5       n	U	R                  XVXs5        X”R                  U'   MN     U$ )NrÐ  rÏ  )r   r»  rb  r   rQ   r5  r~  )
r€   r¿   rÀ   rŠ   r‹  re  rf  r  rŒ  r�  s
             r0   rÛ  ÚSTXHeader._xmlReadState  sh   € Ü“
ˆÜ-3´G¸WÖ-EÑ)ˆG˜zØ˜,Õ&Ü% h¨~Ñ&>Ó?�
Ø!Ÿ_™_Ó.�
Ø×"Ñ" 7°jÔGØ0:×!Ñ! *Ó-ñ .Fð ˆr2   c                 óˆ   • / n[        [        U5       H+  u  pVnUS:X  d  M  UR                  [        US   5      5        M-     U$ )NrÑ  rµ   )r»  rb  rW   r   )r€   r¿   rÀ   rŠ   ÚligComponentsre  rf  Ú_eltContents           r0   rÜ  ÚSTXHeader._xmlReadLigComponents  sF   € ØˆÜ.4´W¸gÖ.FÑ*ˆG˜{Ø˜.Õ(Ø×$Ñ$¤X¨h°wÑ.?Ó%@ÖAñ /Gð Ðr2   c                 óv   • / n[        [        U5       H"  u  pVnUS:X  d  M  UR                  US   5        M$     U$ )NrØ  rÀ  )r»  rb  rW   )r€   r¿   rÀ   rŠ   Úligsre  rf  rã  s           r0   rÝ  ÚSTXHeader._xmlReadLigatures  s>   € ØˆÜ.4´W¸gÖ.FÑ*ˆG˜{Ø˜*Õ$Ø—‘˜H WÑ-Ö.ñ /Gð ˆr2   )rt  ru  r,   )rU   rÑ   rÒ   rÓ   r�   rˆ   r}  rz  rœ  r  r±   r¤  r¥  r¦  r§  rÆ   rÒ  rÁ   rÛ  rÜ  rÝ  rÖ   r–   r2   r0   rp  rp  ô  s^   † ØEGõ 	'ò-ò^òPò
òô5,òn.ò4#ò #ò#ò&òP	òò,òõr2   rp  c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	ÚCIDGlyphMapi'  c                 ó¦   • UR                  5       n0 n[        UR                  U5      5       H   u  pgUS:w  d  M  UR                  U5      XV'   M"     U$ )Nrí  )rA  r°   rE  r“  )r€   r’   rŠ   rŸ   ÚnumCIDsr+  Úcidré  s           r0   rˆ   ÚCIDGlyphMap.read(  sS   € Ø×#Ñ#Ó%ˆØˆÜ% f×&<Ñ&<¸WÓ&EÖF‰LˆCØ˜&Õ Ø"×/Ñ/°Ó8�“ñ Gð ˆr2   Nc                 ó,  • UR                  5        VVs0 s H  u  pgXbR                  U5      _M     nnnU(       a  [        U5      S-   OSn	UR                  U	5        [	        U	5       H$  nUR                  UR                  US5      5        M&     g s  snnf )Nr   r   rí  ©rF  r›  r™  rI  r�   rR   )
r€   r´   rŠ   rŸ   rµ   r»   rì  rÀ  rF  r    s
             r0   r±   ÚCIDGlyphMap.write0  sv   € Ø?D¿{¹{¼}ÔMº}±°�—o‘o eÓ,Ò,¹}ˆÑMÞ"'”�E“
˜Q’¨QˆØ×Ñ˜5Ô!Ü˜–<ˆCØ×Ñ˜uŸy™y¨¨fÓ5Ö6ò  ùó Ns   ”Bc                 ó’   • 0 n[        [        U5       H0  u  pVnUS:X  d  M  US   R                  5       U[        US   5      '   M2     U$ )NÚCIDrÀ  rì  )r»  rb  Ústripr   ©r€   r¿   rÀ   rŠ   r+  ÚeNameÚeAttrsÚ	_eContents           r0   rÁ   ÚCIDGlyphMap.xmlRead7  sL   € ØˆÜ(.¬w¸Ö(@Ñ$ˆE˜9Ø˜�~Ø28¸±/×2GÑ2GÓ2I�”x  u¡Ó.Ó/ñ )Að ˆr2   c                 ó&  • UR                  XE5        UR                  5         [        UR                  5       5       H2  u  pgUc  M
  US:w  d  M  UR	                  SXgS9  UR                  5         M4     UR                  U5        UR                  5         g )Nrí  rò  )rì  rÀ  ©r  rå   rº  rF  rä   r  )r€   rÅ   rŠ   rµ   r]   r¿   rì  rÀ  s           r0   rÆ   ÚCIDGlyphMap.xmlWrite>  sz   € Ø×Ñ˜4Ô'Ø×ÑÔÜ  §¡£Ö/‰JˆCØÓ  U¨f¥_Ø×#Ñ# E¨sÐ#Ñ@Ø×!Ñ!Ö#ñ 0ð 	×Ñ˜ÔØ×ÑÕr2   r–   r,   r<  r–   r2   r0   ré  ré  '  s   † òô7òõr2   ré  c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	ÚGlyphCIDMapiI  c                 óP  • UR                  5       nUR                  5       nUR                  U5      nU[        U5      :”  a#  [        R                  SU[        U5      4-  5        0 n[        [        [        U5      [        U5      5      5       H  nXh   n	U	S:w  d  M  X—XH   '   M     U$ )NzOGlyphCIDMap has %d elements, but the font has only %d glyphs; ignoring the restrí  )rØ  rA  rE  r  r¥  r¦  r�   Úmin)
r€   r’   rŠ   rŸ   Ú
glyphOrderr    Úcidsr+  ré  rì  s
             r0   rˆ   ÚGlyphCIDMap.readJ  s¡   € Ø×'Ñ'Ó)ˆ
Ø×!Ñ!Ó#ˆØ×%Ñ% eÓ,ˆØ”3�z“?Ó"Ü�K‰Kð$à',¬c°*«oÐ&>ñ?ôð
 ˆÜœS¤ T£¬C°
«OÓ<Ö=ˆGØ‘-ˆCØ�f�}Ø.1�zÑ*Ó+ñ >ð ˆr2   Nc                 óH  • UR                  5        VVs0 s H$  u  pgUc  M
  US:w  d  M  UR                  U5      U_M&     nnnU(       a  [        U5      S-   OSn	UR                  U	5        [	        U	5       H$  n
UR                  UR                  U
S5      5        M&     g s  snnf )Nrí  r   r   rï  )r€   r´   rŠ   rŸ   rµ   r»   rÓ  rì  rF  r    ré  s              r0   r±   ÚGlyphCIDMap.write[  s˜   € ð  Ÿ+™+œ-ô
â'‘�Øó $à#&¨&¡=ó $ˆD�O‰O˜AÓ Ò#Ù'ð 	ñ 
ö
 #(”�E“
˜Q’¨QˆØ×Ñ˜5Ô!Ü˜U–|ˆGØ×Ñ˜uŸy™y¨°&Ó9Ö:ò $ùó
s   ”	B¡B©Bc                 ót   • 0 n[        [        U5       H!  u  pVnUS:X  d  M  [        US   5      XFS   '   M#     U$ )Nrò  rµ   rÀ  )r»  rb  r   rô  s           r0   rÁ   ÚGlyphCIDMap.xmlReadf  sA   € ØˆÜ(.¬w¸Ö(@Ñ$ˆE˜9Ø˜�~Ü*2°6¸'±?Ó*C�˜g‘Ó'ñ )Að ˆr2   c                 ó&  • UR                  XE5        UR                  5         [        UR                  5       5       H2  u  pgUc  M
  US:w  d  M  UR	                  SXgS9  UR                  5         M4     UR                  U5        UR                  5         g )Nrí  rò  rÌ  rú  )r€   rÅ   rŠ   rµ   r]   r¿   rÀ  rì  s           r0   rÆ   ÚGlyphCIDMap.xmlWritem  sy   € Ø×Ñ˜4Ô'Ø×ÑÔÜ  §¡£Ö/‰JˆEØ‹ 3¨&¥=Ø×#Ñ# E°Ð#ÑBØ×!Ñ!Ö#ñ 0ð 	×Ñ˜ÔØ×ÑÕr2   r–   r,   r<  r–   r2   r0   rý  rý  I  s   † òô"	;òõr2   rý  c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	Ú
DeltaValueix  c                 ó4  • US   nUS   nUS   nUS;   d   S5       eXT-
  S-   nSU-  nSU-  n	SU-  S-
  n
SUS-
  -  n/ nSu  pÞ[        U5       HE  nUS:X  a  UR                  5       S	píXè-
  nXÞ-	  U
-  nUU-  (       a  UU	-
  nUR                  U5        MG     U$ )
NÚ	StartSizeÚEndSizeÚDeltaFormat©r   r0  rm  úillegal DeltaFormatr   )r   r   r   rà  )r�   rA  rW   )r€   r’   rŠ   rŸ   r  r  r  ÚnItemsÚnBitsÚminusOffsetÚmaskÚsignMaskr
  ÚtmpÚshiftr‰   rµ   s                    r0   rˆ   ÚDeltaValue.ready  sÜ   € Ø˜kÑ*ˆ	Ø˜IÑ&ˆØ Ñ.ˆØ˜iÓ'Ð>Ð)>Ó>Ð'ØÑ$ qÑ(ˆØ�[Ñ ˆØ˜5‘jˆØ�U‘
˜aÑˆØ˜ ™Ñ#ˆàˆ
Ø‰
ˆÜ�v–ˆAØ˜‹zØ#×.Ñ.Ó0°"�UØ‘MˆEØ‘\ TÑ)ˆEØ�x×Ø Ñ+�Ø×Ñ˜eÖ$ñ ð Ðr2   Nc                 ó*  • US   nUS   nUS   nUn	US;   d   S5       eXv-
  S-   n
SU-  n[        U	5      U
:X  d   eSU-  S-
  nSu  pÞU	 H.  nXë-
  nXÔU-  U-  -  nUS:X  d  M  UR                  U5        Su  pÞM0     US	:w  a  UR                  U5        g g )
Nr  r  r  r  r  r   )r   rà  r   rà  )r  rI  )r€   r´   rŠ   rŸ   rµ   r»   r  r  r  r
  r  r  r  r  r  s                  r0   r±   ÚDeltaValue.write�  sÓ   € Ø˜kÑ*ˆ	Ø˜IÑ&ˆØ Ñ.ˆØˆ
Ø˜iÓ'Ð>Ð)>Ó>Ð'ØÑ$ qÑ(ˆØ�[Ñ ˆÜ�:‹ &Ó(Ð(Ð(Ø�U‘
˜aÑˆà‰
ˆÛˆEØ‘MˆEØ $™,¨5Ñ0Ñ1ˆCØ˜�zØ×"Ñ" 3Ô'Ø"‘
�‘Uñ  ð �B‹;Ø×Ñ˜sÕ#ð r2   c                 óR   • UR                  XESU4/-   5        UR                  5         g rã   ©rä   rå   rÄ   s         r0   rÆ   ÚDeltaValue.xmlWrite¥  ó)   € Ø×Ñ˜D¨G°UÐ+;Ð*<Ñ"<Ô=Ø×ÑÕr2   c                 ó   • [        US   5      $ rã   ©r   r¾   s       r0   rÁ   ÚDeltaValue.xmlRead©  ó   € Ü˜˜g™Ó'Ð'r2   r–   r,   ©	rU   rÑ   rÒ   rÓ   rˆ   r±   rÆ   rÁ   rÖ   r–   r2   r0   r
  r
  x  s   † òô.$ò*õ(r2   r
  c                   ó$   • \ rS rSrS rSS jrSrg)ÚVarIdxMapValuei­  c                 ó  • US   nUS   nSUS-  -   nSU-  S-
  nSU-
  nSU-
  n	SUS-  S-	  -   n
UR                   UR                  UR                  UR                  S	.U
   nU" U5       Vs/ s H  nXÈ-  U	-  XÇ-  -  PM     sn$ s  snf )
NÚEntryFormatrs   r   rR  l   ÿÿ rà  é0   rü   ©r   r0  rm  rü   ©rc  rE  ÚreadUInt24Arrayr  )r€   r’   rŠ   rŸ   Úfmtr  Ú	innerBitsÚ	innerMaskÚ	outerMaskÚ
outerShiftÚ	entrySizer¢   Úraws                r0   rˆ   ÚVarIdxMapValue.read®  sÇ   € Ø˜Ñ&ˆØ˜>Ñ*ˆà˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø Ñ*ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	à×$Ñ$Ø×%Ñ%Ø×%Ñ%Ø×$Ñ$ñ	
ð
 ñˆ	ñ ! Ô(ó
â(�ð ‰ :Ñ-°#±/ÔBÙ(ñ
ð 	
ùò 
s   Á,BNc                 óB  • US   nUnUS   R                  [        U5      5        SUS-  -   nSU-  S-
  n	SU-
  n
SUS-  S-	  -   nUR                  UR                  UR                  UR
                  S.U   nU" U Vs/ s H  nUS	-  U
-	  XÙ-  -  PM     sn5        g s  snf )
Nr'  rs   r   rR  rà  r(  rü   r)  l     þ )ÚsetValuer  ri  rM  ÚwriteUInt24Arrayr#  )r€   r´   rŠ   rŸ   rµ   r»   r,  r  r-  r.  r0  r1  r·   Úidxs                 r0   r±   ÚVarIdxMapValue.writeÄ  sÒ   € Ø˜Ñ&ˆØˆØˆ~Ñ×'Ñ'¬¨G«Ô5à˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	à×%Ñ%Ø×&Ñ&Ø×&Ñ&Ø×%Ñ%ñ	
ð
 ñˆ
ñ 	ñ #óâ"�Cð ˜Ñ#¨
Ñ2°s±ÔGÙ"ñõ	
ùòs   Á=Br–   r,   rQ  r–   r2   r0   r%  r%  ­  s   † ò
÷,
r2   r%  c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	ÚVarDataValueiÝ  c                 óL  • / nUS   nUS   n[        US-  5      nUS-  nU(       a  UR                  UR                  p˜OUR                  UR                  p˜[	        XV5      [        XV5      pºUR                  U" U
5      5        UR                  U	" Xº-
  5      5        Xµ:”  a  XES 2	 U$ )Nrr   Ú	NumShortsé €  éÿ  )Úboolr  r5  rU  rÿ  r™  Úextend)r€   r’   rŠ   rŸ   rS   ÚregionCountÚ	wordCountÚ	longWordsÚreadBigArrayÚreadSmallArrayÚn1Ún2s               r0   rˆ   ÚVarDataValue.readÞ  s¨   € ØˆàÐ 0Ñ1ˆØ˜kÑ*ˆ	ô ˜ VÑ+Ó,ˆ	Ø Ñ&ˆ	æØ+1×+?Ñ+?À×AVÑAV™.à+1×+@Ñ+@À&×BVÑBV˜.ä�[Ó,¬c°+Ó.IˆBØ�‰‘l 2Ó&Ô'Ø�‰‘n R¡WÓ-Ô.ØÓØ‘|Ð$àˆr2   Nc                 ó8  • US   nUS   n[        US-  5      nUS-  nUR                  UR                  4UR                  UR                  4S.U   u  pš[	        Xg5      [        Xg5      pËU	" US U 5        U
" XKU 5        XÆ:”  a  UR                  S/XÆ-
  -  5        g g )Nrr   r<  r=  r>  rC  r   )r?  r;  r[  r  rÿ  r™  ÚwriteSmallArray)r€   r´   rŠ   rŸ   rS   r»   rA  rB  rC  ÚwriteBigArrayrJ  rF  rG  s                r0   r±   ÚVarDataValue.writeõ  sÁ   € ØÐ 0Ñ1ˆØ˜kÑ*ˆ	ô ˜ VÑ+Ó,ˆ	Ø Ñ&ˆ	ð ×*Ñ*¨F×,AÑ,AÐBØ×(Ñ(¨&×*@Ñ*@ÐAñ,
ð ñ,Ñ(ˆô
 �[Ó,¬c°+Ó.IˆBÙ�f˜S˜b�kÔ"Ù˜ +Ð.Ô/ØÓØ×"Ñ" A 3¨"Ñ*:Ñ#;Õ<ð r2   c                 óR   • UR                  XESU4/-   5        UR                  5         g rã   r  rÄ   s         r0   rÆ   ÚVarDataValue.xmlWrite  r  r2   c                 ó   • [        US   5      $ rã   r   r¾   s       r0   rÁ   ÚVarDataValue.xmlRead  r"  r2   r–   r,   r#  r–   r2   r0   r:  r:  Ý  s   † òô.=ò&õ(r2   r:  c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	ÚTupleValuesi  c                 ó6   • [         R                  " S U5      S   $ rö   )r	   ÚdecompileDeltas_)r€   r  rŠ   s      r0   rˆ   ÚTupleValues.read  s   € Ü×.Ò.¨t°TÓ:¸1Ñ=Ð=r2   Nc                 ól   • UR                   [           n[        [        R                  " XF(       + S95      $ )N)ÚoptimizeSize)Úcfgr   Úbytesr	   ÚcompileDeltaValues_)r€   r´   rŠ   rŸ   rS   r»   ÚoptimizeSpeeds          r0   r±   ÚTupleValues.write  s/   € ØŸ™Ô!4Ñ5ˆÜÜ×.Ò.¨vÔDUÑVó
ð 	
r2   c                 ó   • [        US   5      $ rã   r   r¾   s       r0   rÁ   ÚTupleValues.xmlRead  r"  r2   c                 óR   • UR                  XESU4/-   5        UR                  5         g rã   r  rÄ   s         r0   rÆ   ÚTupleValues.xmlWrite  r  r2   r–   r,   r<  r–   r2   r0   rR  rR    s   † ò>ô
ò(õr2   rR  c                   óH   • \ rS rSr SSSSS.S jjrS rSS jrS rS	 rS
r	g)Ú	CFF2Indexi"  Nri   )Ú	itemClassÚitemConverterClassrC   c          	      óh   • [         R                  XX#XGS9  XPl        Ub  U" 5       U l        g S U l        g rE  )rg   r�   Ú
_itemClassÚ
_converter)r€   r]   r^   r_   rQ   rc  rd  rC   s           r0   r�   ÚCFF2Index.__init__#  sB   € ô 	×ÑØ˜ Zð 	ñ 	
ð $Œà$6Ñ$BÑÓ ð 	�ØHLð 	�r2   c                 óž  ^ ^^^^^• TR                  5       mTS:X  a  / $ TR                  5       mS mT" TT5      nTR                  SL=(       a    TS:„  nU(       dÐ  U" TS-   5      n/ nUR                  S5      nTR	                  US-
  5        U H–  n	X‰::  d   eTR	                  X˜-
  5      n
T R
                  b0  T R                  5       nUR                  U
TTR                  5        Un
O)T R                  b  T R                  R                  U
T5      n
UR                  U
5        U	nM˜     U$ UUUUUU 4S jnU" 5       n[        U/T-  5      nU$ )Nr   c                 óf   • U R                   U R                  U R                  U R                  S.U   $ )Nr)  r*  )r’   ÚoffSizes     r0   ÚgetReadArrayÚ$CFF2Index.read.<locals>.getReadArray<  s:   € à×(Ñ(Ø×)Ñ)Ø×)Ñ)Ø×(Ñ(ñ	ð
 ñð r2   Fr„   r   c                  óŽ   >^^^^• T	R                  5       mT	R                  mTTS-   T-  -   S-
  mT" TT5      mUUUUUUU
4S jn U $ )Nr   c                 óv  >• T	R                  TU T-  -   5        T" S5      nT	R                  TUS   -   5        T	R                  US   US   -
  5      nT
R                  b1  T
R                  5       nUR                  UTT	R                  5        UnU$ T
R
                  b  T
R
                  R                  UT5      nU$ )Nr0  r   r   )r‡   r  rf  r$  Ú
localStaterg  rˆ   )r‰   r*  r,  ÚobjÚdata_posrŠ   rk  Ú
offset_posr¢   rŒ   r€   s       €€€€€€€r0   rŽ   Ú8CFF2Index.read.<locals>.get_read_item.<locals>.read_itemc  s¶   ø€ Ø×$Ñ$ Z°!°g±+Ñ%=Ô>Ù'¨›l�GØ×$Ñ$ X°¸±
Ñ%:Ô;Ø&×/Ñ/°¸±
¸WÀQ¹ZÑ0GÓH�Dà—‘Ñ2Ø"Ÿo™oÓ/˜ØŸ™ d¨D°+×2HÑ2HÔIØ"˜ð  �Kð Ÿ™Ñ4Ø#Ÿ™×3Ñ3°D¸$Ó?˜Ø�Kr2   r�   )rŽ   rr  rs  r¢   rŒ   r    rŠ   rl  rk  r’   r€   s    @@@@€€€€€€r0   r“   Ú%CFF2Index.read.<locals>.get_read_item]  sM   ü€ Ø$Ÿk™k›m�Ø#ŸZ™Z�
Ø%¨°©°gÑ(=Ñ=ÀÑA�Ù(¨°gÓ>�	÷ ó  ð !Ð r2   )r  r`  rš   Úpopr  rf  r$  rp  rg  rˆ   rW   r   )r€   r’   rŠ   rŸ   r¢   rš   r*  rF  Ú
lastOffsetr]  r,  rq  r“   rŽ   r¡   r    rl  rk  s   ```            @@@r0   rˆ   ÚCFF2Index.read6  sC  ý€ Ø× Ñ Ó"ˆØ�A‹:ØˆIØ×"Ñ"Ó$ˆò	ñ ! ¨Ó1ˆ	à�y‰y Ð%×3¨%°!©)ˆÞÙ ¨¡	Ó*ˆGØˆEØ Ÿ™ Q›ˆJØ�O‰O˜J¨™NÔ+ã!�Ø!Ó+Ð+Ð+Ø—‘ vÑ':Ó;�à—?‘?Ñ.ØŸ/™/Ó+�CØ—M‘M $¨¨f×.?Ñ.?Ô@Ø‘DØ—_‘_Ñ0ØŸ?™?×/Ñ/°°dÓ;�Dà—‘˜TÔ"Ø#’
ñ "ð ˆL÷!ò !ñ, &›ˆIÜ˜)˜ uÑ,Ó-ˆAð ˆHr2   c                 óÌ  • UnUR                  [        U5      5        [        U5      (       d  g U R                  b!  U Vs/ s H  owR                  U5      PM     nnOGU R                  b:  [        U5       VVs/ s H"  u  p‡U R                  R                  XX7U5      PM$     nnnU Vs/ s H  n[        U5      PM     n	n[        [        U	SS95      n	U	S   n
U
S:  a  SOU
S:  a  SO	U
S:  a  SOS	nUR                  U5        UR                  UR                  UR                  UR                  S
.U   nU" U	5        U H  nUR                  U5        M     g s  snf s  snnf s  snf )Nr   )ÚinitialrŽ  é   i   r0  i   rm  rü   r)  )r  r  rf  r{   rg  r°   r±   r¹  r'   rf  ri  rM  r6  r#  r  )r€   r´   rŠ   rŸ   rS   r»   rF  r,  r‰   r*  rw  rk  r·   s                r0   r±   ÚCFF2Index.writez  sh  € Øˆà×Ñœ#˜e›*Ô%Ü�5�z‰zØà�?‰?Ñ&Ù49Ó:²E¨D—\‘\ $Ö'±EˆEÐ:ˆEØ�_‰_Ñ(ô  )¨Ô/ôâ/‘G�Að —‘×%Ñ% f°IÀQÖGÙ/ð ñ ñ
 */Ó/ª ”3�t–9©ˆÐ/Ü”z '°1Ñ5Ó6ˆà˜R‘[ˆ
ð ˜EÓ!ñ à  7Ó*‘°ZÀ)Ó5K±ÐQRð 	ð
 	×Ñ˜'Ô"ð ×%Ñ%Ø×&Ñ&Ø×&Ñ&Ø×%Ñ%ñ	
ð
 ñˆ
ñ 	�7ÔÛˆDØ×Ñ˜TÖ"ò ùò5 ;ùóùò
 0s   ¿EÁ7)EÂ'E!c                 óÌ   • U R                   b%  U R                  5       nUR                  S XU5        U$ U R                  b  U R                  R                  XU5      $ [	        5       er,   )rf  r5  rg  rÁ   r«   )r€   r¿   rÀ   rŠ   rq  s        r0   rÁ   ÚCFF2Index.xmlReadŸ  sW   € Ø�?‰?Ñ&Ø—/‘/Ó#ˆCØ�K‰K˜˜e¨dÔ3ØˆJØ�_‰_Ñ(Ø—?‘?×*Ñ*¨5¸4Ó@Ð@ä%Ó'Ð'r2   c           
      ó  • U R                   b+  [        U5       H  u  pgUR                  XSU4/U5        M     g U R                  b8  [        U5       H(  u  pgU R                  R	                  XXtUSU4/-   5        M*     g [        5       e)NrÎ  )rf  r°   r+  rg  rÆ   r«   )r€   rÅ   rŠ   rµ   r]   r¿   r‰   r,  s           r0   rÆ   ÚCFF2Index.xmlWrite©  s}   € Ø�?‰?Ñ&Ü$ UÖ+‘�Ø—
‘
˜9¨g°q¨\¨N¸DÖAò ,à�_‰_Ñ(Ü$ UÖ+‘�Ø—‘×(Ñ(Ø T°¸7ÀA¸,¸Ñ1Göò ,ô
 &Ó'Ð'r2   )rg  rf  r,   )
rU   rÑ   rÒ   rÓ   r�   rˆ   r±   rÁ   rÆ   rÖ   r–   r2   r0   rb  rb  "  s3   † ð ð
ð ØØö
ò&BôH##òJ(õ
(r2   rb  c                   ó   • \ rS rSrS rSrg)Ú
LookupFlagi¶  c                 óô  • UR                  XESU4/-   5        / nUS-  (       a  UR                  S5        US-  (       a  UR                  S5        US-  (       a  UR                  S5        US-  (       a  UR                  S	5        US
-  (       a  UR                  S5        US-  (       a  UR                  SUS-	  -  5        U(       a   UR                  SR                  U5      5        UR	                  5         g )Nrµ   r   ÚrightToLeftr0  ÚignoreBaseGlyphsrü   ÚignoreLigaturesr„   ÚignoreMarksrà  ÚuseMarkFilteringSeti ÿ  zmarkAttachmentType[%i]r®  )rä   rW   r{  r¯  rå   r°  s          r0   rÆ   ÚLookupFlag.xmlWrite·  sÆ   € Ø×Ñ˜D¨G°UÐ+;Ð*<Ñ"<Ô=ØˆØ�4�<Ø�L‰L˜Ô'Ø�4�<Ø�L‰LÐ+Ô,Ø�4�<Ø�L‰LÐ*Ô+Ø�4�<Ø�L‰L˜Ô'Ø�4�<Ø�L‰LÐ.Ô/Ø�6�>Ø�L‰LÐ1°U¸a±ZÑ@ÔAÞØ×Ñ˜cŸh™h u›oÔ.Ø×ÑÕr2   r–   Nr}  r–   r2   r0   r‚  r‚  ¶  s   † õr2   r‚  c                   óL   ^ • \ rS rSr\rU 4S jr\S 5       r\S 5       r	Sr
U =r$ )Ú
_UInt8EnumiË  c                 óB   >• U R                  [        TU ]	  XU5      5      $ r,   )Ú	enumClassrê  rˆ   )r€   r’   rŠ   rŸ   rí  s       €r0   rˆ   Ú_UInt8Enum.readÎ  s   ø€ Ø�~‰~œe™g™l¨6¸ÓCÓDÐDr2   c                 óJ   • [        U R                  UR                  5       5      $ r,   )rÆ  r�  ÚupperrÐ  s     r0   rà   Ú_UInt8Enum.fromStringÑ  s   € ä�s—}‘} e§k¡k£mÓ4Ð4r2   c                 óT   • U R                  U5      R                  R                  5       $ r,   )r�  r]   ÚlowerrÐ  s     r0   rÜ   Ú_UInt8Enum.toStringÕ  s    € à�}‰}˜UÓ#×(Ñ(×.Ñ.Ó0Ð0r2   r–   )rU   rÑ   rÒ   rÓ   rœ   r�  rˆ   rÝ  rà   rÜ   rÖ   rö  r÷  s   @r0   r‹  r‹  Ë  s6   ø† Ø€IõEð ñ5ó ð5ð ñ1ó ö1r2   r‹  c                   ó   • \ rS rSr\rSrg)r#   iÚ  r–   N)rU   rÑ   rÒ   rÓ   Ú_ExtendModer�  rÖ   r–   r2   r0   r#   r#   Ú  s   † ØƒIr2   r#   c                   ó   • \ rS rSr\rSrg)r$   iÞ  r–   N)rU   rÑ   rÒ   rÓ   Ú_CompositeModer�  rÖ   r–   r2   r0   r$   r$   Þ  s   † ØƒIr2   r$   Úint8Úint16Úint32r9   r5   Úuint24r:   Úchar64ri  ÚOffsetÚLOffsetÚOffset24Ú	TupleList)rd  ÚVarCompositeGlyphList)rc  c                 ó   • [        [        U S9$ ©N)rQ   )r(   rª  ©ÚCs    r0   r1   r1     ó   € œ7¤9¸Ò;r2   c                 ó   • [        [        U S9$ r¤  )r(   r"  r¥  s    r0   r1   r1     s   € ¬Ô1HÐUVÒ)Wr2   c                 ó   • [        [        U S9$ r¤  )r(   rp  r¥  s    r0   r1   r1     r§  r2   c                 ó   • [        [        U S9$ r¤  )r(   rT   r¥  s    r0   r1   r1     s   € œ'¤%°AÒ6r2   c                 ó   • [        [        U S9$ r¤  )r(   rf  r¥  s    r0   r1   r1     s   € œ7¤6°aÒ8r2   c                 ó   • [        [        U S9$ r¤  )r(   rm  r¥  s    r0   r1   r1     s   € œW¤W¸Ò;r2   )ré  rý  rD   rE   rF   r"   rª  r"  rp  ÚOffsetToÚ	LOffsetToÚLOffset24To)|ÚfontTools.misc.fixedToolsr   rÎ  r   rÔ  r   rÛ  r   r×  r   rÿ  r   r  Ú%fontTools.ttLib.tables.TupleVariationr	   ÚfontTools.misc.roundToolsr
   r   ÚfontTools.misc.textToolsr   r   r   r   r   ÚfontTools.misc.lazyToolsr   ÚfontTools.ttLibr   r   r§  r   r   r   r   r   ÚotTablesr   r   r   r   r   r   r    r!   r"   r#   r–  r$   r˜  r%   Ú	itertoolsr&   r'   Ú	functoolsr(   Útypesr)   rÕ   ri  Útypingr*   ÚloggingÚ	getLoggerrU   r¥  rb  re   Úobjectrg   rØ   rë   ró   rú   r  r(  r-  r/  r>  rP  r^  rl  rx  rJ   rK   rL   r„  rŒ  rž  r¡  rª  r´  rº  rÃ  rß  rã  ræ  rù  rû  r  rO   rM   rT   rf  rm  r=   r;   r<   r>   r4   rš  rª  r"  r>  rp  ré  rý  r
  r%  r:  rR  rb  r‚  r‹  rN   r–   r2   r0   Ú<module>r¾     s/  ð÷÷ õ Aß Jß MÕ MÝ -ß ?÷õ ÷÷ ÷ ó ÷ .Ý Ý !Û 	Û Ý Û ð ×Ò˜Ó!€Ù
(€ò=(ô@e�Fô eôP/�-ô /ô"�Kô ôˆ{ô ô&ˆ8ô &ô 'ˆHô 'ô  ˆeô  ô!ˆ}˜eô !ô'ˆHô 'ô (ˆXô (ô &ˆ8ô &ô 'ˆHô 'ô "ˆXô "ô �(ô  ô	�K ô 	ô	�[ &ô 	ô	�K ô 	ôˆ+ô ôAˆkô Aô&�ô ô
ˆVô ô �ô ô�ô ô.�ô .ô0�Zô 0ô:ˆNô ô ˆnô  ô>ˆGô >ô0�%ô ôˆkô ô0ˆ[ô ô>D4ˆ]ô D4ôN>�vô >ô6+ˆFô +ôDˆUô ôˆeô ôM�ô MôLˆuô LôG�&˜(ô GôL�Eô Lô8�(ô 8ô&�+ô ô0t�ô tô|8=˜mô 8=ôv|>˜Mô |>ôBp�ô pôf	�-ô ôD,�-ô ,ô^2(�ô 2(ôj-
�]ô -
ô`0(�=ô 0(÷fñ ô$Q(�ô Q(ôh�ô ô*1�ô 1ô�ô ô�Jô ð2à
ˆDð2ð ˆUð2ð ˆTð	2ð
 ˆUð2ð ˆfð2ð ˆfð2ð ˆeð2ð ˆfð2ð ˆwð2ð �ð2ð ˆwð2ð 
ˆ3ð2ð ˆwð2ð �ð2ð  ˆfð!2ð" �*ð#2ð$ ˆUñ%2ð& ˆwð'2ð( ˆUð)2ð* �;ð+2ð, ˆfð-2ð. ˆeð/2ð0 ˆvð12ð2 �ð32ð4 �;ð52ð6 �*ð72ð8 �nð92ð: �Lð;2ð< �*ð=2ð> �*ð?2ð@ �]ðA2ðB �ðC2ðD ‘˜°{ÑCðE2ðF ™W YÐ:KÑLñG2ðJ ØØ!Ø$Ø!Ø)á;ÙWÙ;Ù6Ù8Ù;òc2Ñ r2   