ó
    oñ:i^  ã                   ó°  • S SK JrJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJrJrJr  S SKJr  S SKJr  S SKJrJr  \R,                  r\\R.                  l        S	 r " S
 S\5      r\S.S jr\\R:                  l        S r\\R@                  l!        S r"\"\R.                  l#         " S S\5      r$SS\%" 5       4SS.S jjr&\&\R.                  l'        SSS.S jr(\(\R.                  l)        S r*S r+S r,\,\RZ                  l.        \,\R^                  l.        S r0S r1\1\RZ                  l2        \1\R^                  l2         " S S \5      r3 " S! S"\45      r5S(S$ jr6\6\R.                  l7        S)S& jr8\9S':X  aa  S S%K:r:\;" \:Rx                  5      S#:”  a  \:Rz                  " \8" 5       5        S S%K>r>\:Rz                  " \>R~                  " 5       R€                  5        g%g%)*é    )ÚnoRoundÚotRound©Ú	bit_count)ÚotTables)ÚsupportScalar)ÚbuildVarRegionListÚbuildVarStoreÚbuildVarRegionÚbuildVarData)Úpartial)Údefaultdict)ÚheappushÚheappopc                 óF   • [        [        U R                  5       S S95      $ )Nc                 ó   • U S   $ ©Nr   © )Úkvs    Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/varLib/varStore.pyÚ<lambda>Ú!_getLocationKey.<locals>.<lambda>   s   € °B°q²Eó    ©Úkey)ÚtupleÚsortedÚitems)Úlocs    r   Ú_getLocationKeyr       s   € Ü”˜Ÿ	™	›Ñ)9Ñ:Ó;Ð;r   c                   ór   • \ rS rSrS rS rS rSS jrSS jr\	S.S jr
\	S.S	 jr\	S.S
 jr\	S.S jrSrg)ÚOnlineVarStoreBuilderé   c                 óÊ   • Xl         0 U l        [        / U5      U l        [	        U R                  / 5      U l        S U l        S U l        S U l        0 U l	        0 U l
        S U l        g ©N)Ú	_axisTagsÚ
_regionMapr	   Ú_regionListr
   Ú_storeÚ_dataÚ_modelÚ	_supportsÚ_varDataIndicesÚ_varDataCachesÚ_cache)ÚselfÚaxisTagss     r   Ú__init__ÚOnlineVarStoreBuilder.__init__   s]   € Ø!ŒØˆŒÜ-¨b°(Ó;ˆÔÜ# D×$4Ñ$4°bÓ9ˆŒØˆŒ
ØˆŒØˆŒØ!ˆÔØ ˆÔØˆ�r   c                 óF   • U R                  UR                  5        Xl        g r%   )ÚsetSupportsÚsupportsr+   )r0   Úmodels     r   ÚsetModelÚOnlineVarStoreBuilder.setModel%   s   € Ø×Ñ˜Ÿ™Ô(Ø�r   c                 ó²   • S U l         [        U5      U l        U R                  (       a!  U R                  S   (       d  U R                  S	 S U l        S U l        g r   )r+   Úlistr,   r/   r*   )r0   r6   s     r   r5   Ú!OnlineVarStoreBuilder.setSupports)   s@   € ØˆŒÜ˜h›ˆŒØ�>�> $§.¡.°×"3Ø—‘˜qÐ!ØˆŒØˆ�
r   c                 ó^  • [        U R                  R                  5      U R                  l        [        U R                  R
                  5      U R                  l        U R                  R
                   H,  n[        UR                  5      Ul        UR                  US9  M.     U R                  $ )N©Úoptimize)
Úlenr(   ÚRegionÚRegionCountr)   ÚVarDataÚVarDataCountÚItemÚ	ItemCountÚcalculateNumShorts)r0   r?   Údatas      r   ÚfinishÚOnlineVarStoreBuilder.finish1   s|   € Ü'*¨4×+;Ñ+;×+BÑ+BÓ'Cˆ×ÑÔ$Ü#& t§{¡{×':Ñ':Ó#;ˆ�‰Ô Ø—K‘K×'Ô'ˆDÜ  §¡›^ˆDŒNØ×#Ñ#¨XÐ#Ó6ñ (ð �{‰{Ðr   c                 óÊ  • U R                   nU R                  nU R                  n/ nU H|  n[        U5      nUR	                  U5      nUcI  [        X`R                  5      n	[        UR                  5      =o‚U'   UR                  R                  U	5        UR                  U5        M~     [        U5      nU R                  R	                  U5      n
U
b`  X l        U R                  R                  U
   U l        U R                   U   U l        [        U R                  R$                  5      U-   S:”  a  S n
U
c¯  ['        U/ SS9U l        [        U R                  R                  5      U l        U R                  R                  R                  U R                  5        U R                  U R                  U'   XpR                   ;  a  0 U R                   U'   U R                   U   U l        g g )Néÿÿ  Fr>   )r'   r(   r,   r    Úgetr   r&   r@   rA   Úappendr   r-   Ú_outerr)   rC   r*   r.   r/   rE   r   )r0   Ú	num_itemsÚ	regionMapÚ
regionListÚregionsÚregionIndicesÚregionr   ÚidxÚ	varRegionÚ
varDataIdxs              r   Ú_add_VarDataÚ"OnlineVarStoreBuilder._add_VarData9   s•  € Ø—O‘Oˆ	Ø×%Ñ%ˆ
à—.‘.ˆØˆÛˆFÜ! &Ó)ˆCØ—-‘- Ó$ˆCØ‰{Ü*¨6·>±>ÓB�	Ü'*¨:×+<Ñ+<Ó'=Ð=� ‘nØ×!Ñ!×(Ñ(¨Ô3Ø× Ñ  Ö%ñ ô �MÓ"ˆØ×)Ñ)×-Ñ-¨cÓ2ˆ
ØÑ!Ø$ŒKØŸ™×,Ñ,¨ZÑ8ˆDŒJØ×-Ñ-¨cÑ2ˆDŒKÜ�4—:‘:—?‘?Ó# iÑ/°&Ó8à!�
àÑÜ% m°RÀ%ÑHˆDŒJÜ˜dŸk™k×1Ñ1Ó2ˆDŒKØ�K‰K×Ñ×&Ñ& t§z¡zÔ2Ø(,¯©ˆD× Ñ  Ñ%Ø×-Ñ-Ó-Ø+-�×#Ñ# CÑ(Ø×-Ñ-¨cÑ2ˆD�Kð r   ©Úroundc                ó€   • U R                   R                  XS9nUR                  S5      nX@R                  U[        S94$ ©Nr[   r   )r+   Ú	getDeltasÚpopÚstoreDeltasr   )r0   Úmaster_valuesr\   ÚdeltasÚbases        r   ÚstoreMastersÚ"OnlineVarStoreBuilder.storeMasters\   s?   € Ø—‘×&Ñ& }Ð&ÐBˆØ�z‰z˜!‹}ˆØ×%Ñ% f´GÐ%Ð<Ð<Ð<r   c                óÒ   • U Vs/ s H  nU R                   R                  X2S9PM     nnU Vs/ s H  oUR                  S5      PM     nnX`R                  U[        S94$ s  snf s  snf r^   )r+   r_   r`   ÚstoreDeltasManyr   )r0   Úmaster_values_listr\   rb   Údeltas_listrc   Ú	base_lists          r   ÚstoreMastersManyÚ&OnlineVarStoreBuilder.storeMastersManya   su   € ñ "4ó
â!3�ð �K‰K×!Ñ! -Ð!Ó=Ù!3ð 	ð 
ñ 2=Ó=² v—Z‘Z –]±ˆ	Ð=Ø×.Ñ.¨{Ä'Ð.ÐJÐJÐJùò
ùò >s
   …#A®A$c                ó”  • U Vs/ s H
  o2" U5      PM     nn[        U5      [        U R                  5      S-   :X  a  [        USS  5      nO/[        U5      [        U R                  5      :X  d   e[        U5      nU R                  (       d  U R	                  5         U R
                  R                  U5      nUb  U$ [        U R                  R                  5      nUS:X  a$  U R	                  5         U R                  U[        S9$ U R                  R                  U[        S9  U R                  S-  U-   nX@R
                  U'   U$ s  snf )Né   rL   r[   é   )r@   r,   r   r*   rY   r/   rM   rE   ra   r   ÚaddItemrO   )r0   rc   r\   ÚdÚvarIdxÚinners         r   ra   Ú!OnlineVarStoreBuilder.storeDeltasi   s  € Ù$*Ó+¢F˜q�%˜–(¡FˆÐ+Üˆv‹;œ#˜dŸn™nÓ-°Ñ1Ó1Ü˜6 ! "˜:Ó&‰Fä�v“;¤# d§n¡nÓ"5Ó5Ð5Ð5Ü˜6“]ˆFà�z�zØ×ÑÔà—‘—‘ Ó(ˆØÑØˆMä�D—J‘J—O‘OÓ$ˆØ�F‹?à×ÑÔØ×#Ñ# F´'Ð#Ð:Ð:Ø�
‰
×Ñ˜6¬ÐÑ1à—+‘+ Ñ# uÑ,ˆØ$�‰�FÑØˆùò/ ,s   …Ec          
      óÐ  • U VVs/ s H  o3 Vs/ s H
  oB" U5      PM     snPM     nnn[        S U 5       5      nU R                  (       d  U R                  [        U5      5        U R                  R                  U5      nUb  U$ [        U R                  R                  5      nU[        U5      -   S:”  a.  U R                  [        U5      5        U R                  U[        S9$ [        U5       HF  u  psU R                  R                  U[        S9  U R                  S-  U-   U-   nXPR                  U'   MH     U R                  S-  U-   nXPR                  U'   U$ s  snf s  snnf )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr%   )r   )Ú.0rc   s     r   Ú	<genexpr>Ú8OnlineVarStoreBuilder.storeDeltasMany.<locals>.<genexpr>…   s   é € ÐDº¨fœE &ŸM˜Mºùs   ‚rL   r[   rp   )r   r*   rY   r@   r/   rM   rE   rh   r   Ú	enumeraterq   rO   )r0   rj   r\   rc   rr   rs   rt   Úis           r   rh   Ú%OnlineVarStoreBuilder.storeDeltasManyƒ   s7  € Ù@KÔLÂ°f¨&Ó1ª& Q˜˜až©&Ô1ÁˆÑLÜÑD¹ÓDÓDˆà�z�zØ×Ñœc +Ó.Ô/à—‘—‘ Ó-ˆØÑØˆMä�D—J‘J—O‘OÓ$ˆØ”3�{Ó#Ñ# fÓ,à×Ñœc +Ó.Ô/Ø×'Ñ'¨¼7Ð'ÐCÐCÜ" ;Ö/‰IˆAØ�J‰J×Ñ˜v¬WÐÑ5à—k‘k RÑ'¨5Ñ0°1Ñ4ˆFØ"(�K‰K˜Óñ	 0ð —+‘+ Ñ# uÑ,ˆØ#)�‰�KÑ àˆùò1 2ùÓLs   †	E"�E E"ÅE")r&   r/   r*   r+   rO   r(   r'   r)   r,   r.   r-   N)T)ro   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r2   r8   r5   rI   rY   r\   re   rl   ra   rh   Ú__static_attributes__r   r   r   r"   r"      sK   † ò
òòôô!3ðF 49õ =ð
 =Bõ Kð ,1õ ð4 5:÷ ð r   r"   r[   c                ó4  • U Vs/ s H
  o2" U5      PM     nnU R                   n[        U5      nUS-   U:X  a  [        USS  5      nOXE:X  d   XE45       e[        U5      nU R                  R	                  U5        [        U R                  5      U l        g s  snf ©Nro   )ÚVarRegionCountr@   r;   rE   rN   rF   )r0   rc   r\   rr   ÚcountUsÚ	countThems         r   ÚVarData_addItemrˆ   Ÿ   s�   € Ù &Ó'¢˜1ˆe�AŽh¡€FÐ'à×!Ñ!€GÜ�F“€IØ��{�iÓÜ�f˜Q˜R�jÓ!‰àÓ#Ð9 gÐ%9Ó9Ð#Ü�f“ˆØ‡I�I×Ñ�VÔÜ˜Ÿ™“^€D…Nùò (s   …Bc                 óâ   • [        U R                  5       VVs0 s HG  u  p#UR                  S:w  d  M  X   R                  UR                  UR                  UR
                  4_MI     snn$ s  snnf r   )r{   ÚVarRegionAxisÚ	PeakCoordÚaxisTagÚ
StartCoordÚEndCoord)r0   Ú	fvar_axesr|   Úregs       r   ÚVarRegion_get_supportr‘   °   se   € ô   × 2Ñ 2Ô3ôâ3‰FˆAØ�=‰=˜AÑó 	Lˆ	‰×Ñ˜sŸ~™~¨s¯}©}¸c¿l¹lÐKÒKÙ3òð ùó s
   ™A+³4A+c                 ó,   • [        U R                  5      $ r%   )ÚboolrC   ©r0   s    r   ÚVarStore___bool__r•   »   s   € Ü�—‘ÓÐr   c                   óN   • \ rS rSr0 4S jrS rS rS r\S 5       r	S r
S rS	rg
)ÚVarStoreInstanceréÂ   c                 óØ   • X l         Ub  UR                  S:X  d   eU(       a  UR                  O/ U l        U(       a  UR                  R
                  O/ U l        U R                  U5        g r„   )r�   ÚFormatrC   Ú_varDataÚVarRegionListrA   Ú_regionsÚsetLocation)r0   Úvarstorer�   Úlocations       r   r2   ÚVarStoreInstancer.__init__Ã   sT   € Ø"ŒØÑ 8§?¡?°aÓ#7Ð7Ð7Þ,4˜×(Ò(¸"ˆŒÞ9A˜×.Ñ.×5Ò5ÀrˆŒØ×Ñ˜Õ"r   c                 óD   • [        U5      U l        U R                  5         g r%   )Údictr    Ú_clearCaches)r0   r    s     r   rž   ÚVarStoreInstancer.setLocationÊ   s   € Ü˜X›ˆŒØ×ÑÕr   c                 ó   • 0 U l         g r%   )Ú_scalarsr”   s    r   r¤   ÚVarStoreInstancer._clearCachesÎ   s	   € Øˆ�r   c                 óÚ   • U R                   R                  U5      nUcL  U R                  U   R                  U R                  5      n[        U R                  U5      nX R                   U'   U$ r%   )r§   rM   r�   Úget_supportr�   r   r    )r0   Ú	regionIdxÚscalarÚsupports       r   Ú
_getScalarÚVarStoreInstancer._getScalarÑ   sY   € Ø—‘×"Ñ" 9Ó-ˆØ‰>Ø—m‘m IÑ.×:Ñ:¸4¿>¹>ÓJˆGÜ" 4§=¡=°'Ó:ˆFØ'-�M‰M˜)Ñ$Øˆr   c                 óR   • Sn[        X5       H  u  p4U(       d  M  X#U-  -  nM     U$ )Nç        )Úzip)rc   ÚscalarsÚdeltarr   Úss        r   ÚinterpolateFromDeltasAndScalarsÚ1VarStoreInstancer.interpolateFromDeltasAndScalarsÙ   s0   € àˆÜ˜Ö(‰DˆAÞÙØ˜‘U‰NŠEñ )ð ˆr   c                 óè   • US-	  US-  p2U[         :X  a  gU R                  nXB   R                   Vs/ s H  oPR                  U5      PM     nnXB   R                  U   nU R                  Xv5      $ s  snf )Nrp   rL   r±   )ÚNO_VARIATION_INDEXr›   ÚVarRegionIndexr®   rE   r¶   )r0   ÚvaridxÚmajorÚminorÚvarDataÚrir³   rc   s           r   Ú__getitem__ÚVarStoreInstancer.__getitem__â   st   € Ø ‘| V¨f¡_ˆuØÔ'Ó'ØØ—-‘-ˆØ18±×1NÒ1NÓOÒ1N¨2—?‘? 2Ö&Ñ1NˆÐOØ‘×$Ñ$ UÑ+ˆØ×3Ñ3°FÓDÐDùò Ps   ±A/c                 óž   • U R                   nX1   R                   Vs/ s H  o@R                  U5      PM     nnU R                  X%5      $ s  snf r%   )r›   rº   r®   r¶   )r0   ÚvarDataIndexrc   r¾   r¿   r³   s         r   ÚinterpolateFromDeltasÚ'VarStoreInstancer.interpolateFromDeltasë   sH   € Ø—-‘-ˆØ18Ñ1F×1UÒ1UÓVÒ1U¨2—?‘? 2Ö&Ñ1UˆÐVØ×3Ñ3°FÓDÐDùò Ws   �A
)r�   r§   r›   r�   r    N)r~   r   r€   r�   r2   rž   r¤   r®   Ústaticmethodr¶   rÀ   rÄ   r‚   r   r   r   r—   r—   Â   s9   † Ø57ô #òòòð ñó ðòEõEr   r—   TFrC   )rC   c          	      ó¸  • [        [        5      nU H,  nU[        :X  a  M  US-	  nUS-  n	Xh   R                  U	5        M.     A[	        X5      n
/ n[        [        0n[        U
5       GH:  u  p�UR                  U5      nUc  M  [        U5      nUR                  U5        UR                  n/ nUS:X  aR  U(       aK  [        [        U5      5       H2  n	UR                  Xž;   a  UU	   OS/[        UU	   5      -  5        XœU	'   M4     OcUS:X  a  [        U5      [        Xä-
  5      -   nO[        U5      nU H2  n	[        U5      nUR                  UU	   5        US-  U-   XÈS-  U	-   '   M4     UUl	        [        UR                  5      Ul        US:X  d  GM+  UR                  US9  GM=     [        XU5        [        XS-   [        U5      5        U R                  5         U$ )Nrp   rL   r   rC   r>   ÚCount)r   Úsetr¹   ÚaddÚgetattrr{   rM   r@   rN   rE   Úranger   rF   rG   ÚsetattrÚprune_regions)r0   ÚvarIdxesr?   ÚretainFirstMapÚadvIdxesrC   Úusedrs   r¼   r½   r¾   Ú
newVarDataÚ
varDataMaprH   Ú
usedMinorsÚnewMajorr   ÚnewItemsÚminorsÚnewMinors                       r   ÚVarStore_subset_varidxesrÚ   ø   sÊ  € ô ”sÓ€DÛˆØÔ'Ó'ÙØ˜"‘ˆØ˜‘ˆØ‰�‰˜Öñ ð 	ô �dÓ$€GØ€JÜ$Ô&8Ð9€JÜ  ×)‰ˆØ—X‘X˜e“_ˆ
ØÑÙÜ�z“?ˆØ×Ñ˜$Ôà—	‘	ˆØˆØ�A‹:ž.Üœs 5›zÖ*�Ø—‘Ø$)Ó$7�E˜%’L¸a¸SÄ3ÀuÈUÁ|ÓCTÑ=Tôð %*˜5Ó!ò	 +ð ˜‹zÜ Ó)¬F°:Ñ3HÓ,IÑI‘ä 
Ó+�Û�Ü˜x›=�Ø—‘  e¡Ô-Ø5=À±^ÀxÑ4O�
 R™K¨5Ñ0Ó1ñ  ð
 ˆŒ	Ü˜TŸY™Y›ˆŒà�iÖØ×#Ñ#¨XÐ#Ô6ñ; *ô> ˆD˜:Ô&ÜˆD˜GÑ#¤S¨£_Ô5à×ÑÔàÐr   rœ   )rC   rœ   c                óÂ  • [        5       n[        X5       H  nUR                  UR                  5        M      [        X5      nUR                  n/ n0 n[        U5       H#  n	[        U5      X‰'   UR                  Xi   5        M%     Xul        [        UR                  5      Ul        [        X5       H'  nUR                   V	s/ s H  o˜U	   PM	     sn	Ul        M)     gs  sn	f )zRemove unused VarRegions.N)	rÉ   rË   Úupdaterº   rA   r   r@   rN   rB   )
r0   rC   rœ   ÚusedRegionsrH   rR   rS   Ú
newRegionsrQ   r|   s
             r   ÚVarStore_prune_regionsrß   <  sÇ   € ô “%€KÜ˜Ö&ˆØ×Ñ˜4×.Ñ.Ö/ñ 'ô ˜Ó-€JØ×Ñ€GØ€JØ€IÜ�KÖ ˆÜ˜:“ˆ	‰Ø×Ñ˜'™*Ö%ñ !ð #ÔÜ  ×!2Ñ!2Ó3€JÔä˜Ö&ˆØ59×5HÒ5HÓIÒ5H°¨œ|Ñ5HÑIˆÖò 'ùÚIs   ÃCc                 óü  • [        U 5      [        R                  :X  a	  U" U 5        g[        U [        5      (       a  U  H  n[        X!5        M     g[        U S5      (       aO  [        U S5      (       d>  U R                  5        H)  n[        XR                  S5      nUc  M  [        X!5        M+     g[        U [        R                  5      (       a-  U R                  R                  5        H  n[        X!5        M     gg)zmRecurse down from self, if type of an object is ot.Device,
call func() on it.  Works on otData-style classes.ÚgetConvertersÚpostReadN)ÚtypeÚotÚDeviceÚ
isinstancer;   Ú_visitÚhasattrrá   rË   ÚnameÚValueRecordÚ__dict__Úvalues)r0   ÚfuncÚthatÚconvs       r   rç   rç   X  s½   € ô ˆDƒz”R—Y‘YÓÙˆT�
ä	�Dœ$×	Ñ	ÛˆDÜ�4Öò ô 
��×	'Ñ	'´¸¸j×0IÑ0IØ×&Ñ&Ö(ˆDÜ˜4§¡¨DÓ1ˆDØÓÜ�tÖ"ò )ô
 
�Dœ"Ÿ.™.×	)Ñ	)Ø—M‘M×(Ñ(Ö*ˆDÜ�4Öò +ð 
*r   c                 ó|   • U R                   S:X  a,  UR                  U R                  S-  U R                  -   5        gg)z6Add VarIdx in this Device table (if any) to the set s.é €  rp   N)ÚDeltaFormatrÊ   Ú	StartSizeÚEndSize)r0   rµ   s     r   Ú_Device_recordVarIdxrõ   n  s3   € à×Ñ˜6Ó!Ø	�‰ˆt�~‰~ Ñ# t§|¡|Ñ3Õ4ð "r   c                 ó6   • [        [        US9n[        X5        g )N)rµ   )r   rõ   rç   )r0   ÚvaridxesÚadders      r   ÚObject_collect_device_varidxesrù   t  s   € ÜÔ(¨HÑ5€EÜ
ˆ4Õr   c                 óÞ   • [        U 5      U;   a  gUR                  [        U 5      5        U R                  S:X  a3  XR                  S-  U R                  -      nUS-	  U l        US-  U l        gg)z9Map VarIdx in this Device table (if any) through mapping.Nrñ   rp   rL   )ÚidrÊ   rò   ró   rô   )r0   ÚmappingÚdoners   s       r   Ú_Device_mapVarIdxrþ   }  sd   € ä	ˆ$ƒx�4ÓØØ‡H�HŒR�‹XÔØ×Ñ˜6Ó!ØŸ.™.¨BÑ.°$·,±,Ñ>Ñ?ˆØ 2™ˆŒØ ‘ˆ�ð "r   c                 óH   • [        [        U[        5       S9n[        X5        g )N)rü   rý   )r   rþ   rÉ   rç   )r0   Úvaridxes_mapÚmappers      r   ÚObject_remap_device_varidxesr  ˆ  s   € ÜÔ&°Ä3Ã5ÑI€FÜ
ˆ4Õr   c                   óR   • \ rS rSrS rS rS rS r\S 5       r	\S 5       r
S rS	rg
)Ú	_Encodingi‘  c                 óº   • Xl         [        U5      U l        U R                  U5      U l        U R                  U R                  5      U l        [        5       U l        g r%   )	Úcharsr   ÚwidthÚ_columnsÚcolumnsÚ_characteristic_overheadÚoverheadrÉ   r   )r0   r  s     r   r2   Ú_Encoding.__init__’  sB   € ØŒ
Ü˜uÓ%ˆŒ
Ø—}‘} UÓ+ˆŒØ×5Ñ5°d·l±lÓCˆŒÜ“Uˆ�
r   c                 ó:   • U R                   R                  U5        g r%   )r   rÊ   )r0   Úrows     r   rN   Ú_Encoding.append™  s   € Ø�
‰
�‰�sÕr   c                 ó:   • U R                   R                  U5        g r%   )r   rÜ   )r0   Úlsts     r   ÚextendÚ_Encoding.extendœ  s   € Ø�
‰
×Ñ˜#Õr   c                 ó2   • U R                   U R                  4$ r%   )r  r  r”   s    r   Úwidth_sort_keyÚ_Encoding.width_sort_keyŸ  s   € Ø�z‰z˜4Ÿ:™:Ð%Ð%r   c                 ó,   • SnU[        U 5      S-  -  nU$ )zGReturns overhead in bytes of encoding this characteristic
as a VarData.é
   é   r   )r	  Úcs     r   r
  Ú"_Encoding._characteristic_overhead¢  s"   € ð ˆØ	ŒY�wÓ !Ñ#Ñ#ˆØˆr   c                 ó^   • SnSnU (       a!  U S-  (       a  X-  nU S-  n US-  nU (       a  M!  U$ )Nr   ro   é   é   r   )r  Úcolsr|   s      r   r  Ú_Encoding._columnsª  s=   € àˆØˆÞØ�v�~Ø‘	�Ø�a‰KˆEØ�!‰GˆA÷	 ˆeð
 ˆr   c                 óx  • UR                   U R                   -  n[        U5      nU R                  UR                  -  n[        R	                  U5      nU R
                  7UR
                  -   U-
  X0R                  -
  [        U R                  5      -  -
  X1R                  -
  [        UR                  5      -  -
  nU$ r%   )	r  r   r	  r  r
  r  r  r@   r   )r0   Úother_encodingÚcombined_charsÚcombined_widthÚcombined_columnsÚcombined_overheadÚcombined_gains          r   Úgain_from_mergingÚ_Encoding.gain_from_mergingµ  sµ   € Ø'×-Ñ-°·
±
Ñ:ˆÜ" >Ó2ˆØŸ<™<¨.×*@Ñ*@Ñ@ÐÜ%×>Ñ>Ð?OÓPÐà�]‰]ˆNØ×%Ñ%ñ&àñ ð §
¡
Ñ*¬c°$·*±*«oÑ=ñ>ð × 4Ñ 4Ñ4¼¸N×<PÑ<PÓ8QÑQñ	Rð 	ð Ðr   )r  r	  r   r  r  N)r~   r   r€   r�   r2   rN   r  r  rÆ   r
  r  r(  r‚   r   r   r   r  r  ‘  sC   † òòòò&ð ñó ðð ñó ðõr   r  c                   ó0   • \ rS rSrS rS r\S 5       rSrg)Ú_EncodingDictiÄ  c                 ó$   • [        U5      =o U'   U$ r%   )r  )r0   r  Úrs      r   Ú__missing__Ú_EncodingDict.__missing__Å  s   € Ü# EÓ*Ð*ˆ�‰KØˆr   c                 óL   • U R                  U5      nX   R                  U5        g r%   )Ú_row_characteristicsrN   )r0   r  r  s      r   Úadd_rowÚ_EncodingDict.add_rowÉ  s"   € Ø×)Ñ)¨#Ó.ˆØ‰×Ñ˜3Õr   c                 ó  • SnSnSnU  H<  nU(       a  X#-  nSUs=::  a  S::  d	  O  X#S-  -  nSUs=::  a  S::  d  O  S	n  O	US
-  nM>     U(       a6  SnSnU  H,  nU(       a  X#S-  -  nSUs=::  a  S::  d	  O  X#S-  -  nUS
-  nM.     U$ )z+Returns encoding characteristics for a row.Fr   ro   i€ÿÿÿé   r  i €ÿÿiÿ  Tr  é   é   r   )r  Ú	longWordsr  r|   Úvs        r   r1  Ú"_EncodingDict._row_characteristicsÍ  s¯   € ð ˆ	àˆØˆÛˆAÞØ‘
�Ø˜AÕ$ Õ$Ø˜V™Ñ#�Ø˜aÕ( 5Õ(Ø �	ÙØ�!‰GŠAñ ö àˆEØˆAÛ�ÞØ ™ZÑ'�EØ !Õ, uÕ,Ø ™ZÑ'�EØ�a‘’ñ ð ˆr   r   N)	r~   r   r€   r�   r.  r2  rÆ   r1  r‚   r   r   r   r+  r+  Ä  s    † òò ð ñó ór   r+  ro   c           
      ó†	  • [        U R                  R                  5      nS/U-  n0 n[        5       n[	        U R
                  5       HØ  u  pxUR                  n	[	        UR                  5       H®  u  p«[        U5      nUS:X  a!  [        X›5       H  u  pÞXÍ==   U-  ss'   M     O.[        X›5       H  u  pÞXÍ==   [        Xâ-  5      U-  -  ss'   M!     [        U5      nU(       a  [        U5      (       d  SXWS-  U
-   '   M“  UR                  U5        XÅUS-  U
-   '   M°     MÚ     [        UR                  5       [         R"                  S9nA/ n[	        U5       HS  u  nn[%        US-   [        U5      5       H1  nUU   nUR'                  U5      nUS:”  d  M!  [)        UU* UU45        M3     MU     U(       Ga%  [+        U5      u  nnnUU   b  UU   c  M%  UU   UU   nnSu  UU'   UU'   UR,                  UR,                  -  n[!        U5      nUR/                  UR0                  5        UR/                  UR0                  5        [	        U5       Ho  u  nnUc  M  UR,                  U:X  a"  UR/                  UR0                  5        SUU'   M=  UR'                  U5      nUS:”  d  MV  [)        UU* U[        U5      45        Mq     UR3                  U5        U(       a  GM%  U Vs/ s H
  nUc  M  UPM     nn0 nUR5                  [         R"                  S9  / U l        U HÒ  n[        UR0                  5      nU(       d  M!  [        U R
                  5      n[6        R
                  " 5       nU R
                  R3                  U5        [%        U5      Ul        [        UR                  5      Ul        USS USS sUl        n[	        UR                  5       H  u  p«US-  U
-   UU'   M     U(       a  M±  MÔ     [:        [:        0nUR1                  5        H  u  nnUb  UU   O[:        UU'   M     [        U R                  R                  5      U R                  l        [        U R
                  5      U l        U R
                   H-  n[        UR                  5      Ul         URC                  5         M/     U RE                  5         U$ s  snf )z@Optimize storage. Returns mapping from old VarIdxes to new ones.r   ro   Nrp   r   )NNrL   )#r@   rœ   rA   r+  r{   rC   rº   rE   r;   r²   r\   r   Úanyr2  r   rì   r  r  rÌ   r(  r   r   r  r  r   rN   Úsorträ   r…   r¹   rB   rD   rF   r?   rÎ   )r0   Úuse_NO_VARIATION_INDEXÚquantizationÚnÚzeroesÚfront_mappingÚ	encodingsr¼   rH   rT   r½   Úitemr  r«   r9  ÚtodoÚheapr|   ÚencodingÚjr"  Úcombining_gainÚ_r#  Úcombined_encodingÚkÚencÚback_mappingr   Ú
varidx_maps                                 r   ÚVarStore_optimizerP  ì  sI  € ôX 	ˆD×Ñ×%Ñ%Ó&€AØˆS�1‰W€Fà€Mä“€Iô ! §¡Ö.‰ˆØ×+Ñ+ˆä$ T§Y¡YÖ/‰KˆEÜ�v“,ˆCà˜qÓ Ü$'¨Ö$<‘L�IØ“N aÑ'•Nò %=ô %(¨Ö$<‘L�IØ“NÜ˜aÑ.Ó/°,Ñ>ñ•Nñ %=ô
 ˜“*ˆCæ%¬c°#¯h©hØ7;�¨™{¨eÑ3Ñ4Ùà×Ñ˜cÔ"Ø36˜5 B™;¨%Ñ/Ó0ó' 0ñ /ô2 �)×"Ñ"Ó$¬)×*BÑ*BÑC€DØð €DÜ  –‰ˆˆ8Ü�q˜1‘uœc $›iÖ(ˆAØ! !™WˆNØ%×7Ñ7¸ÓGˆNØ Õ!Ü˜  °°AÐ6Ö7ó	 )ñ '÷ Ü˜$“-‰ˆˆ1ˆaØ�‰7‰?˜d 1™g™oÙà#'¨¡7¨D°©G�.ˆØ%ÑˆˆQ‰��a‘ð (×-Ñ-°·±Ñ>ˆÜ% nÓ5ÐØ× Ñ  §¡Ô0Ø× Ñ  ×!5Ñ!5Ô6ä –o‰FˆAˆsØ‰{Ùð �y‰y˜NÓ*Ø!×(Ñ(¨¯©Ô3Ø��Q‘Ùà.×@Ñ@ÀÓEˆNØ Õ!Ü˜  °´C¸³IÐ>Ö?ñ &ð 	�‰Ð%Ô&÷; ‰$ñ> +/ÓGª$˜h°(—©$€IÐGð €LØ‡N�N”y×/Ñ/€NÑ0Ø€D„LÛˆÜ�x—~‘~Ó&ˆçˆeÜ˜Ÿ™Ó%ˆEÜ—:’:“<ˆDØ�L‰L×Ñ Ô%Ü"'¨£(ˆDÔÜ"% d×&9Ñ&9Ó":ˆDÔð  % W f˜~¨u°V°W¨~ÐˆDŒI�uä(¨¯©Ö3‘�Ø&+¨r¡k°UÑ%:�˜TÓ"ñ  4÷ Šeñ ô" %Ô&8Ð9€JØ×#Ñ#Ö%‰ˆˆ1Ø+,©=˜ QšÔ>Pˆ
�1‹ñ &ô &)¨×);Ñ);×)BÑ)BÓ%C€D×ÑÔ"Ü˜DŸL™LÓ)€DÔØ—”ˆÜ˜TŸY™Y›ˆŒØ�‰Žñ ð
 	×ÑÔàÐùòK Hs   ËR>Ë*R>Nc                 óH  • SSK Jn  SSKJn  SSKJn  SSKJn  U" S[        R                  S9nUR                  S[        S	S
9  UR                  S5        UR                  SSS9  UR                  U 5      nU" SS9  UR                  nUR                  nUR                  n	U" U5      n
U
S   nUR                   R"                  nU" 5       nUR%                  XÚ5        ['        UR)                  5       5      n[+        SU-  5        UR-                  US9nU" 5       nUR%                  XÚ5        ['        UR)                  5       5      n[+        SU-  5        U	bQ  UR                   R/                  U5        SU
;   a  U
S   R                   R/                  U5        U
R1                  U	5        gg)z&Optimize a font's GDEF variation storer   )ÚArgumentParser)ÚconfigLogger)ÚTTFont)ÚOTTableWriterzvarLib.varStore)ÚprogÚdescriptionz--quantizationro   )rã   ÚdefaultÚfontfileÚoutfileÚ?)ÚnargsÚINFO)ÚlevelÚGDEFzBefore: %7d bytes)r?  zAfter:  %7d bytesNÚGPOS)ÚargparserR  Ú	fontToolsrS  ÚfontTools.ttLibrT  ÚfontTools.ttLib.tables.otBaserU  ÚmainÚ__doc__Úadd_argumentÚintÚ
parse_argsr?  rY  rZ  ÚtableÚVarStoreÚcompiler@   Ú
getAllDataÚprintr?   Úremap_device_varidxesÚsave)ÚargsrR  rS  rT  rU  ÚparserÚoptionsr?  rY  rZ  ÚfontÚgdefÚstoreÚwriterÚsizerO  s                   r   re  re  °  sq  € å'Ý&Ý&Ý;áÐ!2ÄÇÁÑM€FØ
×ÑÐ(¬s¸AÐÑ>Ø
×Ñ˜
Ô#Ø
×Ñ˜	¨ÐÑ-Ø×Ñ Ó%€Gñ �vÒà×'Ñ'€LØ×Ñ€HØ�o‰o€Gá�(Ó€DØ�‰<€DØ�J‰J×Ñ€Eá‹_€FØ	‡M�M�&ÔÜˆv× Ñ Ó"Ó#€DÜ	Ð
 Ñ
$Ô%à—‘¨\�Ð:€Já‹_€FØ	‡M�M�&ÔÜˆv× Ñ Ó"Ó#€DÜ	Ð
 Ñ
$Ô%àÑØ�
‰
×(Ñ(¨Ô4Ø�T‹>Ø�‰L×Ñ×4Ñ4°ZÔ@à�	‰	�'Õð r   Ú__main__)Tro   r%   )AÚfontTools.misc.roundToolsr   r   ÚfontTools.misc.intToolsr   ÚfontTools.ttLib.tablesr   rä   ÚfontTools.varLib.modelsr   ÚfontTools.varLib.builderr	   r
   r   r   Ú	functoolsr   Úcollectionsr   Úheapqr   r   r¹   rk  r    Úobjectr"   r\   rˆ   rC   rq   r‘   Ú	VarRegionrª   r•   Ú__bool__r—   rÉ   rÚ   Úsubset_varidxesrß   rÎ   rç   rõ   rù   r_  Úcollect_device_varidxesr`  rþ   r  ro  r  r£   r+  rP  r?   re  r~   Úsysr@   ÚargvÚexitÚdoctestÚtestmodÚfailedr   r   r   Ú<module>r�     s¶  ðß 6Ý -Ý 1Ý 1÷ó õ Ý #ß #ð ×*Ñ*Ð Ø!3€‡�Ô ò<ôD˜Fô DðN ,1õ $ð %€‡
�
Ô òð 1€‡�Ô òð )€‡�Ô ô,E˜ô ,Eðr ØÙ‹Uð>ð ö>ðB 7€‡�Ô ð -6À_õ Jð2 3€‡�Ô òò,5òð
 #A€‡�Ô Ø"@€‡�Ô ò'òð
 !=€‡�Ô Ø <€‡�Ô ô0�ô 0ôf%�Dô %ôP~ðB )€‡�Ô ô)ðX ˆzÓÛá
ˆ3�8‰8ƒ}�qÓØ�Š‘“ÔÛà‡H‚HˆW�_Š_Ó×%Ñ%Õ&ð r   