§
    ¢”jq   ã                   óø  — d dl mZmZ d dlmZ d dlmZ d dlmZ	 d dl
mZ d dlZd dlmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ e	j        Zee	j        _        d„ Z G d„ de ¦  «        Z!e"dœd„Z#e#e	j$        _%        d„ Z&e&e	j'        _(        d„ Z)e)e	j        _*         G d„ de ¦  «        Z+d„ Z,d„ Z-e-e	j        _.        e,e	j        _/        d„ Z0e0e	j        _1        d„ Z2d„ Z3e2e	j4        _5        e3e	j4        _6        dS )é    )ÚnoRoundÚotRound)Ú	bit_count)ÚVector)ÚotTables)ÚsupportScalarN)ÚbuildVarRegionListÚbuildSparseVarRegionListÚbuildSparseVarRegionÚbuildMultiVarStoreÚbuildMultiVarData)Úbatched)Úpartial)Údefaultdict)ÚheappushÚheappopc                 ód   — t          t          |                      ¦   «         d„ ¬¦  «        ¦  «        S )Nc                 ó   — | d         S ©Nr   © )Úkvs    úm/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/varLib/multiVarStore.pyú<lambda>z!_getLocationKey.<locals>.<lambda>   s
   € °B°q´E€ ó    )Úkey)ÚtupleÚsortedÚitems)Úlocs    r   Ú_getLocationKeyr       s)   € Ý•˜Ÿ	š	™œÐ)9Ð)9Ð:Ñ:Ô:Ñ;Ô;Ð;r   c                   óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zedœd„Z	edœd„Z
d	S )
ÚOnlineMultiVarStoreBuilderc                 óÔ   — || _         i | _        t          g |¦  «        | _        t	          | j        g ¦  «        | _        d | _        d | _        d | _        i | _	        i | _
        d | _        d S ©N)Ú	_axisTagsÚ
_regionMapr
   Ú_regionListr   Ú_storeÚ_dataÚ_modelÚ	_supportsÚ_varDataIndicesÚ_varDataCachesÚ_cache)ÚselfÚaxisTagss     r   Ú__init__z#OnlineMultiVarStoreBuilder.__init__   sf   € Ø!ˆŒØˆŒÝ3°B¸ÑAÔAˆÔÝ(¨Ô)9¸2Ñ>Ô>ˆŒØˆŒ
ØˆŒØˆŒØ!ˆÔØ ˆÔØˆŒˆˆr   c                 óH   — |                       |j        ¦  «         || _        d S r$   )ÚsetSupportsÚsupportsr*   )r/   Úmodels     r   ÚsetModelz#OnlineMultiVarStoreBuilder.setModel)   s#   € Ø×Ò˜œÑ(Ô(Ð(ØˆŒˆˆr   c                 ó‚   — d | _         t          |¦  «        | _        | j        d         s| j        d= d | _        d | _        d S r   )r*   Úlistr+   r.   r)   )r/   r4   s     r   r3   z&OnlineMultiVarStoreBuilder.setSupports-   sA   € ØˆŒÝ˜h™œˆŒØŒ~˜aÔ ð 	"Ø”˜qÐ!ØˆŒØˆŒ
ˆ
ˆ
r   c                 óœ   — t          | j        j        ¦  «        | j        _        t          | j        j        ¦  «        | j        _        | j        S r$   )Úlenr'   ÚRegionÚRegionCountr(   ÚMultiVarDataÚMultiVarDataCount©r/   s    r   Úfinishz!OnlineMultiVarStoreBuilder.finish5   s:   € Ý'*¨4Ô+;Ô+BÑ'CÔ'CˆÔÔ$Ý(+¨D¬KÔ,DÑ(EÔ(EˆŒÔ%ØŒ{Ðr   c                 óV  — | j         }| j        }| j        }g }|D ]…}t          |¦  «        }|                     |¦  «        }|€Ht          || j        ¦  «        }t          |j        ¦  «        x}||<   |j         	                    |¦  «         | 	                    |¦  «         Œ†t          |¦  «        }| j                             |¦  «        }	|	�O|	| _        | j        j        |	         | _        | j        |         | _        t          | j        j        ¦  «        dk    rd }	|	€�t'          |g ¦  «        | _        t          | j        j        ¦  «        | _        | j        j         	                    | j        ¦  «         | j        | j        |<   || j        vr
i | j        |<   | j        |         | _        d S d S )Néÿÿ  )r&   r'   r+   r    Úgetr   r%   r:   r;   Úappendr   r,   Ú_outerr(   r=   r)   r-   r.   ÚItemr   )
r/   Ú	regionMapÚ
regionListÚregionsÚregionIndicesÚregionr   ÚidxÚ	varRegionÚ
varDataIdxs
             r   Ú_add_MultiVarDataz,OnlineMultiVarStoreBuilder._add_MultiVarData:   s   € Ø”Oˆ	ØÔ%ˆ
à”.ˆØˆØð 	&ð 	&ˆFÝ! &Ñ)Ô)ˆCØ—-’- Ñ$Ô$ˆCØˆ{Ý0°¸¼ÑHÔH�	Ý'*¨:Ô+<Ñ'=Ô'=Ð=��i ‘nØÔ!×(Ò(¨Ñ3Ô3Ð3Ø× Ò  Ñ%Ô%Ð%Ð%õ �MÑ"Ô"ˆØÔ)×-Ò-¨cÑ2Ô2ˆ
ØÐ!Ø$ˆDŒKØœÔ1°*Ô=ˆDŒJØÔ-¨cÔ2ˆDŒKÝ�4”:”?Ñ#Ô# vÒ-Ð-à!�
àÐÝ*¨=¸"Ñ=Ô=ˆDŒJÝ˜dœkÔ6Ñ7Ô7ˆDŒKØŒKÔ$×+Ò+¨D¬JÑ7Ô7Ð7Ø(,¬ˆDÔ  Ñ%Ø˜$Ô-Ð-Ð-Ø+-�Ô# CÑ(ØÔ-¨cÔ2ˆDŒKˆKˆKð Ðr   ©Úroundc                ó    — | j                              ||¬¦  «        }|                     d¦  «        }||                      |t          ¬¦  «        fS )NrP   r   )r*   Ú	getDeltasÚpopÚstoreDeltasr   )r/   Úmaster_valuesrQ   ÚdeltasÚbases        r   ÚstoreMastersz'OnlineMultiVarStoreBuilder.storeMasters]   sI   € Ø”×&Ò& }¸EÐ&ÑBÔBˆØ�zŠz˜!‰}Œ}ˆØ�T×%Ò% fµGÐ%Ñ<Ô<Ð<Ð<r   c                ó  ‡— t          ˆfd„|D ¦   «         ¦  «        }t          |¦  «        st          S t          d„ |D ¦   «         ¦  «        }| j        s|                      ¦   «          | j                             |¦  «        }|�|S t          | j        j        ¦  «        }|dk    r0|                      ¦   «          |  	                    |t          ¬¦  «        S | j                             |t          ¬¦  «         | j        dz  |z   }|| j        |<   |S )Nc              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r$   r   ©Ú.0ÚdrQ   s     €r   ú	<genexpr>z9OnlineMultiVarStoreBuilder.storeDeltas.<locals>.<genexpr>c   s+   øè è € Ð0Ð0 A�u�u˜Q‘x”xÐ0Ð0Ð0Ð0Ð0Ð0r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r$   )r   )r]   r^   s     r   r_   z9OnlineMultiVarStoreBuilder.storeDeltas.<locals>.<genexpr>h   s(   è è € Ð6Ð6¨!�U 1™XœXÐ6Ð6Ð6Ð6Ð6Ð6r   rB   rP   é   )r   ÚanyÚNO_VARIATION_INDEXr)   rO   r.   rC   r:   rF   rU   r   ÚaddItemrE   )r/   rW   rQ   Údeltas_tupleÚvarIdxÚinners     `   r   rU   z&OnlineMultiVarStoreBuilder.storeDeltasb   s  ø€ ÝÐ0Ð0Ð0Ð0¨Ð0Ñ0Ô0Ñ0Ô0ˆå�6‰{Œ{ð 	&Ý%Ð%åÐ6Ð6¨vÐ6Ñ6Ô6Ñ6Ô6ˆàŒzð 	%Ø×"Ò"Ñ$Ô$Ð$à”—’ Ñ.Ô.ˆØÐØˆMå�D”J”OÑ$Ô$ˆØ�FŠ?ˆ?à×"Ò"Ñ$Ô$Ð$Ø×#Ò# Fµ'Ð#Ñ:Ô:Ð:ØŒ
×Ò˜6­ÐÑ1Ô1Ð1à”+ Ñ# uÑ,ˆØ$*ˆŒ�LÑ!Øˆr   N)Ú__name__Ú
__module__Ú__qualname__r1   r6   r3   r@   rO   rQ   rY   rU   r   r   r   r"   r"      sœ   € € € € € ð
ð 
ð 
ðð ð ðð ð ðð ð ð
!3ð !3ð !3ðF 49ð =ð =ð =ð =ð =ð
 ,1ð ð ð ð ð ð ð r   r"   rP   c                ó  ‡— t          ˆfd„|D ¦   «         ¦  «        }t          |¦  «        | j        k    sJ ‚g }|D ]}|                     |¦  «         Œ| j                             |¦  «         t          | j        ¦  «        | _        d S )Nc              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r$   r   r\   s     €r   r_   z'MultiVarData_addItem.<locals>.<genexpr>~   s+   øè è € Ð,Ð, �5�5˜‘8”8Ð,Ð,Ð,Ð,Ð,Ð,r   )r   r:   ÚVarRegionCountÚextendrF   rD   Ú	ItemCount)r/   rW   rQ   Úvaluesr^   s     `  r   ÚMultiVarData_addItemrq   }   s‘   ø€ ÝÐ,Ð,Ð,Ð, VÐ,Ñ,Ô,Ñ,Ô,€Fåˆv‰;Œ;˜$Ô-Ò-Ð-Ð-Ð-à€FØð ð ˆØ�Š�aÑÔÐÐà„I×Ò�VÑÔÐÝ˜œ‘^”^€D„N€N€Nr   c                 ó*   ‡— ˆfd„| j         D ¦   «         S )Nc                 óZ   •— i | ]'}‰|j                  j        |j        |j        |j        f“Œ(S r   )Ú	AxisIndexÚaxisTagÚ
StartCoordÚ	PeakCoordÚEndCoord)r]   ÚregÚ	fvar_axess     €r   ú
<dictcomp>z/SparseVarRegion_get_support.<locals>.<dictcomp>Ž   sB   ø€ ð ð ð àð 	�#”-Ô Ô(¨3¬>¸3¼=È#Ì,Ð*Wðð ð r   )ÚSparseVarRegionAxis)r/   rz   s    `r   ÚSparseVarRegion_get_supportr}   �   s1   ø€ ðð ð ð àÔ+ðñ ô ð r   c                 ó*   — t          | j        ¦  «        S r$   )Úboolr=   r?   s    r   ÚMultiVarStore___bool__r€   —   s   € Ý�Ô!Ñ"Ô"Ð"r   c                   óL   — e Zd Zi fd„Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Z	d„ Z
dS )	ÚMultiVarStoreInstancerc                 ó¦   — || _         |�|j        dk    sJ ‚|r|j        ng | _        |r|j        j        ng | _        |                      |¦  «         d S )Né   )rz   ÚFormatr=   Ú_varDataÚSparseVarRegionListr;   Ú_regionsÚsetLocation)r/   Úmultivarstorerz   Úlocations       r   r1   zMultiVarStoreInstancer.__init__Ÿ   sl   € Ø"ˆŒØÐ$¨Ô(<ÀÒ(AÐ(AÐ(AÐ(AØ6CÐK˜Ô2Ð2ÈˆŒà8EÐMˆMÔ-Ô4Ð4È2ð 	Œð 	×Ò˜Ñ"Ô"Ð"Ð"Ð"r   c                 óV   — t          |¦  «        | _        |                      ¦   «          d S r$   )Údictr‹   Ú_clearCaches)r/   r‹   s     r   r‰   z"MultiVarStoreInstancer.setLocation¨   s'   € Ý˜X™œˆŒØ×ÒÑÔÐÐÐr   c                 ó   — i | _         d S r$   )Ú_scalarsr?   s    r   rŽ   z#MultiVarStoreInstancer._clearCaches¬   s   € ØˆŒˆˆr   c                 óÆ   — | j                              |¦  «        }|€D| j        |                              | j        ¦  «        }t          | j        |¦  «        }|| j         |<   |S r$   )r�   rC   rˆ   Úget_supportrz   r   r‹   )r/   Ú	regionIdxÚscalarÚsupports       r   Ú
_getScalarz!MultiVarStoreInstancer._getScalar¯   sZ   € Ø”×"Ò" 9Ñ-Ô-ˆØˆ>Ø”m IÔ.×:Ò:¸4¼>ÑJÔJˆGÝ" 4¤=°'Ñ:Ô:ˆFØ'-ˆDŒM˜)Ñ$Øˆr   c                 ó–  — | st          g ¦  «        S t          | ¦  «        t          |¦  «        z  dk    s&J t          | ¦  «        t          |¦  «        f¦   «         ‚t          | ¦  «        t          |¦  «        z  }t          dg|z  ¦  «        }t          t          | |¦  «        |¦  «        D ]\  }}|sŒ|t          |¦  «        |z  z  }Œ|S r   )r   r:   Úzipr   )rW   ÚscalarsÚmÚdeltar^   Úss         r   ÚinterpolateFromDeltasAndScalarsz6MultiVarStoreInstancer.interpolateFromDeltasAndScalars·   sÅ   € àð 	Ý˜"‘:”:ÐÝ�6‰{Œ{�S ™\œ\Ñ)¨QÒ.Ð.Ð.µ°V±´½cÀ'¹l¼lÐ0KÑ.Ô.Ð.Ý�‰KŒK�3˜w™<œ<Ñ'ˆÝ˜�s˜Q‘w‘”ˆÝ� ¨Ñ*Ô*¨GÑ4Ô4ð 	#ð 	#‰DˆAˆqØð ØØ•V˜A‘Y”Y ‘]Ñ"ˆEˆEØˆr   c                 óÞ   ‡ — |dz	  |dz  }}|t           k    rt          g ¦  «        S ‰ j        }ˆ fd„||         j        D ¦   «         }||         j        |         }‰                      ||¦  «        S )Nra   rB   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   ©r–   ©r]   Úrir/   s     €r   ú
<listcomp>z6MultiVarStoreInstancer.__getitem__.<locals>.<listcomp>É   s%   ø€ ÐOÐOÐO¨2�4—?’? 2Ñ&Ô&ÐOÐOÐOr   )rc   r   r†   ÚVarRegionIndexrF   r�   )r/   ÚvaridxÚmajorÚminorÚvarDatar™   rW   s   `      r   Ú__getitem__z"MultiVarStoreInstancer.__getitem__Ä   sz   ø€ Ø ‘| V¨f¡_ˆuˆØÕ'Ò'Ð'Ý˜"‘:”:ÐØ”-ˆØOÐOÐOÐO°¸´Ô1NÐOÑOÔOˆØ˜”Ô$ UÔ+ˆØ×3Ò3°F¸GÑDÔDÐDr   c                 óp   ‡ — ‰ j         }ˆ fd„||         j        D ¦   «         }‰                      ||¦  «        S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   r    r¡   s     €r   r£   z@MultiVarStoreInstancer.interpolateFromDeltas.<locals>.<listcomp>Ï   s%   ø€ ÐVÐVÐV¨2�4—?’? 2Ñ&Ô&ÐVÐVÐVr   )r†   r¤   r�   )r/   ÚvarDataIndexrW   r¨   r™   s   `    r   ÚinterpolateFromDeltasz,MultiVarStoreInstancer.interpolateFromDeltasÍ   sA   ø€ Ø”-ˆØVÐVÐVÐV°¸Ô1FÔ1UÐVÑVÔVˆØ×3Ò3°F¸GÑDÔDÐDr   N)rh   ri   rj   r1   r‰   rŽ   r–   Ústaticmethodr�   r©   r­   r   r   r   r‚   r‚   ž   s™   € € € € € Ø:<ð #ð #ð #ð #ðð ð ðð ð ðð ð ð ð
ð 
ñ „\ð
ðEð Eð EðEð Eð Eð Eð Er   r‚   c                 óF   — t           j                             | |d¬¦  «        S )Nr=   )ÚVarData)ÚotÚVarStoreÚsubset_varidxes)r/   ÚvarIdxess     r   ÚMultiVarStore_subset_varidxesrµ   Ó   s   € ÝŒ;×&Ò& t¨X¸~Ð&ÑNÔNÐNr   c                 óF   — t           j                             | dd¬¦  «        S )Nr=   r‡   )r°   ÚVarRegionList)r±   r²   Úprune_regionsr?   s    r   ÚMultiVarStore_prune_regionsr¹   ×   s)   € ÝŒ;×$Ò$Ø�nÐ4Ið %ñ ô ð r   c                 ó°   — g }| j         |         }|j        D ]>}| j        j        |         }|                     |¦  «        }|                     |¦  «         Œ?|S r$   )r=   r¤   r‡   r;   r’   rD   )r/   r¦   ÚfvarAxesr4   r¨   r“   rK   r•   s           r   ÚMultiVarStore_get_supportsr¼   á   sc   € Ø€HØÔ Ô&€GØÔ+ð !ð !ˆ	ØÔ)Ô0°Ô;ˆØ×$Ò$ XÑ.Ô.ˆØ�Š˜Ñ Ô Ð Ð Ø€Or   c                 ó    — | j         j        D ]@}|j        D ]6}|                     |j        ¦  «         |                     |j        ¦  «         Œ7ŒAd S r$   )ÚVarCompositeGlyphsÚVarCompositeGlyphÚ
componentsÚaddÚaxisValuesVarIndexÚtransformVarIndex)r/   ÚvaridxesÚglyphÚ	components       r   ÚVARC_collect_varidxesrÇ   î   se   € ØÔ(Ô:ð 6ð 6ˆØÔ)ð 	6ð 	6ˆIØ�LŠL˜Ô5Ñ6Ô6Ð6Ø�LŠL˜Ô4Ñ5Ô5Ð5Ð5ð	6ð6ð 6r   c                 ó€   — | j         j        D ]0}|j        D ]&}||j                 |_        ||j                 |_        Œ'Œ1d S r$   )r¾   r¿   rÀ   rÂ   rÃ   )r/   Úvaridxes_maprÅ   rÆ   s       r   ÚVARC_remap_varidxesrÊ   õ   sb   € ØÔ(Ô:ð Tð TˆØÔ)ð 	Tð 	TˆIØ+7¸	Ô8TÔ+UˆIÔ(Ø*6°yÔ7RÔ*SˆIÔ'Ð'ð	TðTð Tr   )7ÚfontTools.misc.roundToolsr   r   ÚfontTools.misc.intToolsr   ÚfontTools.misc.vectorr   ÚfontTools.ttLib.tablesr   r±   ÚfontTools.varLib.modelsr   ÚfontTools.varLib.varStoreÚ	fontToolsÚfontTools.varLib.builderr	   r
   r   r   r   ÚfontTools.misc.iterToolsr   Ú	functoolsr   Úcollectionsr   Úheapqr   r   rc   ÚMultiVarStorer    Úobjectr"   rQ   rq   r=   rd   r}   ÚSparseVarRegionr’   r€   Ú__bool__r‚   rµ   r¹   r¸   r³   r¼   Úget_supportsrÇ   rÊ   ÚVARCÚcollect_varidxesÚremap_varidxesr   r   r   ú<module>rß      s†  ðØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø -Ð -Ð -Ð -Ð -Ð -Ø (Ð (Ð (Ð (Ð (Ð (Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #ð Ô*Ð Ø&8€Ô Ô #ð<ð <ð <ð^ð ^ð ^ð ^ð ^ ñ ^ô ^ð ^ðB 16ð 
$ð 
$ð 
$ð 
$ð 
$ð /€„Ô ðð ð ð "=€Ô Ô ð#ð #ð #ð 3€Ô Ô ð2Eð 2Eð 2Eð 2Eð 2E˜Vñ 2Eô 2Eð 2EðjOð Oð Oðð ð ð "=€Ô Ô Ø#@€Ô Ô  ðð ð ð !;€Ô Ô ð6ð 6ð 6ðTð Tð Tð 1€„Ô Ø,€„Ô Ð Ð r   