§
    ¢”jË  ã                  ó’   — d Z ddlmZ ddlmZmZmZ ddlZddl	m
Z
mZmZmZ ddlmZmZmZ ddlmZ dd„Zdd„Zdd„Zdd„Zd d„ZdS )!zFExtra methods for DesignSpaceDocument to generate its STAT table data.é    )Úannotations)ÚDictÚListÚUnionN)ÚAxisLabelDescriptorÚDesignSpaceDocumentÚDesignSpaceDocumentErrorÚLocationLabelDescriptor)ÚRegionÚgetVFUserRegionÚlocationInRegion)ÚTTFontÚttFontr   Údocr   ÚvfNameÚstrÚreturnÚNonec                óª  — |                      ¦   «         D ]}|j        |k    r nŒt          d|› �¦  «        ‚t          ||¦  «        }t	          d„ t          |                      d¦  «        dd¦  «        D ¦   «         ¦  «        }t          j        j	         
                    | t          ||¦  «        t          ||¦  «        |j        �|j        nd|¬¦  «        S )	aª  Build the STAT table for the variable font identified by its name in
    the given document.

    Knowing which variable we're building STAT data for is needed to subset
    the STAT locations to only include what the variable font actually ships.

    .. versionadded:: 5.0

    .. seealso::
        - :func:`getStatAxes()`
        - :func:`getStatLocations()`
        - :func:`fontTools.otlLib.builder.buildStatTable()`
    z&Cannot find the variable font by name c              3  ó,   K  — | ]}|j         d k    V — ŒdS )é   N)Ú
platformID)Ú.0Únrs     úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/varLib/stat.pyú	<genexpr>z#buildVFStatTable.<locals>.<genexpr>,   s:   è è € ð ð Ø!ˆŒ˜Òðð ð ð ð ð ó    ÚnameÚnames© Né   )ÚmacNames)ÚgetVariableFontsr   r	   r   ÚanyÚgetattrÚgetÚ	fontToolsÚotlLibÚbuilderÚbuildStatTableÚgetStatAxesÚgetStatLocationsÚelidedFallbackName)r   r   r   ÚvfÚregionr"   s         r   ÚbuildVFStatTabler0      s  € ð ×"Ò"Ñ$Ô$ð 
ð 
ˆØŒ7�fÒÐØˆEð õ 'Ø=°VÐ=Ð=ñ
ô 
ð 	
õ ˜S "Ñ%Ô%€Fõ ð ð Ý%,¨V¯ZªZ¸Ñ-?Ô-?ÀÈ"Ñ%MÔ%Mðñ ô ñ ô €Hõ ÔÔ#×2Ò2ØÝ�C˜Ñ Ô Ý˜˜fÑ%Ô%Ø"%Ô"8Ð"DˆÔÐÈ!Øð 3ñ ô ð r   Ú
userRegionr   ú
List[Dict]c                ó  ‡— t          d„ | j        D ¦   «         d¬¦  «        }g }| j        D ]>}|j        �|                     |j        ¦  «         Œ$|dz  }|                     |¦  «         Œ?ˆfd„t	          | j        |¦  «        D ¦   «         S )zŸReturn a list of axis dicts suitable for use as the ``axes``
    argument to :func:`fontTools.otlLib.builder.buildStatTable()`.

    .. versionadded:: 5.0
    c              3  ó2   K  — | ]}|j         ®	|j         V — Œd S )N)ÚaxisOrdering©r   Úaxiss     r   r   zgetStatAxes.<locals>.<genexpr>B   s-   è è € ÐQÐQ˜t°4Ô3DÐ3PˆÔ	Ð3PÐ3PÐ3PÐ3PÐQÐQr   éÿÿÿÿ)ÚdefaultNr   c           	     óˆ   •‡— g | ]=\  Š}t          ‰j        d ‰j        i‰j        ¥|ˆˆfd„‰j        D ¦   «         ¬¦  «        ‘Œ>S )Úenc                óf   •— g | ]-}t          ‰j        |j        i‰¦  «        ¯t          |¦  «        ‘Œ.S r    )r   r   Ú	userValueÚ_axisLabelToStatLocation)r   Úlabelr7   r1   s     €€r   ú
<listcomp>z*getStatAxes.<locals>.<listcomp>.<listcomp>Q   sJ   ø€ ð ð ð àÝ# T¤Y°´Ð$@À*ÑMÔMðÝ(¨Ñ/Ô/ðð ð r   )Útagr   ÚorderingÚvalues)ÚdictrA   r   Ú
labelNamesÚ
axisLabels)r   rB   r7   r1   s     @€r   r@   zgetStatAxes.<locals>.<listcomp>L   s…   øø€ ð ð ð ñ ˆD�(õ 	Ø”Ø˜œ	Ð5 T¤_Ð5Øðð ð ð ð à!œ_ðñ ô ð			
ñ 		
ô 		
ðð ð r   )ÚmaxÚaxesr5   ÚappendÚzip)r   r1   ÚmaxOrderingÚaxisOrderingsr7   s    `   r   r+   r+   9   sÄ   ø€ õ ØQÐQ s¤xÐQÑQÔQØðñ ô €Kð €MØ”ð .ð .ˆØÔÐ(Ø× Ò  Ô!2Ñ3Ô3Ð3Ð3à˜1ÑˆKØ× Ò  Ñ-Ô-Ð-Ð-ðð ð ð õ " #¤(¨MÑ:Ô:ðñ ô ð r   c                óT   ‡ ‡‡— d„ ‰ j         D ¦   «         Šˆˆ ˆfd„‰ j        D ¦   «         S )z¨Return a list of location dicts suitable for use as the ``locations``
    argument to :func:`fontTools.otlLib.builder.buildStatTable()`.

    .. versionadded:: 5.0
    c                ó   — i | ]
}|j         |“ŒS r    )r   r6   s     r   ú
<dictcomp>z$getStatLocations.<locals>.<dictcomp>a   s   € Ð7Ð7Ð7 d�$”)˜TÐ7Ð7Ð7r   c           	     ó  •— g | ]ƒ}t          |                     ‰¦  «        ‰¦  «        ¯%t          d |j        i|j        ¥ˆfd„|                     ‰¦  «                             ¦   «         D ¦   «         t          |¦  «        ¬¦  «        ‘Œ„S )r;   c                ó2   •— i | ]\  }}‰|         j         |“ŒS r    )rA   )r   r   ÚvalueÚ
axesByNames      €r   rO   z/getStatLocations.<locals>.<listcomp>.<dictcomp>g   s7   ø€ ð ð ð á�D˜%ð ˜4Ô Ô$ eðð ð r   )r   ÚlocationÚflags)r   ÚgetFullUserLocationrD   r   rE   ÚitemsÚ_labelToFlags)r   r?   rS   r   r1   s     €€€r   r@   z$getStatLocations.<locals>.<listcomp>b   s·   ø€ ð ð ð ð Ý˜E×5Ò5°cÑ:Ô:¸JÑGÔGðÝØ˜œ
Ð7 eÔ&6Ð7ðð ð ð à#(×#<Ò#<¸SÑ#AÔ#A×#GÒ#GÑ#IÔ#Iðñ ô õ   Ñ&Ô&ð		
ñ 		
ô 		
ðð ð r   )rH   ÚlocationLabels)r   r1   rS   s   ``@r   r,   r,   [   sV   øøø€ ð 8Ð7¨c¬hÐ7Ñ7Ô7€Jðð ð ð ð ð ð Ô'ðñ ô ð r   r?   ú3Union[AxisLabelDescriptor, LocationLabelDescriptor]Úintc                ó:   — d}| j         r|dz  }| j        r|dz  }|S )Nr   r   r!   )ÚolderSiblingÚelidable)r?   rU   s     r   rX   rX   r   s3   € Ø€EØÔð Ø�‰
ˆØ„~ð Ø�‰
ˆØ€Lr   r   r   c                óˆ  — |                       ¦   «         }d| j        i| j        ¥}t          | ¦  «        }|dk    rt	          || j        |¬¦  «        S |dk    rt	          || j        | j        |¬¦  «        S |dk    r;t	          || j        |¬¦  «        }| j        �
| j        |d<   | j        �
| j        |d	<   |S t          d
¦  «        ‚)Nr;   r   )r   rR   rU   é   )r   rR   ÚlinkedValuerU   r!   )r   ÚnominalValuerU   ÚrangeMinValueÚrangeMaxValuezUnknown STAT label format)
Ú	getFormatr   rE   rX   rD   r=   ÚlinkedUserValueÚuserMinimumÚuserMaximumÚNotImplementedError)r?   Úlabel_formatr   rU   Úress        r   r>   r>   {   s÷   € ð —?’?Ñ$Ô$€LØ�%”*Ð1 Ô 0Ð1€DÝ˜%Ñ Ô €EØ�qÒÐÝ˜ U¤_¸EÐBÑBÔBÐBØ�qÒÐÝØØ”/ØÔ-Øð	
ñ 
ô 
ð 	
ð �qÒÐÝØØœØð
ñ 
ô 
ˆð
 ÔÐ(Ø#(Ô#4ˆC�Ñ ØÔÐ(Ø#(Ô#4ˆC�Ñ Øˆ
Ý
Ð9Ñ
:Ô
:Ð:r   )r   r   r   r   r   r   r   r   )r   r   r1   r   r   r2   )r?   rZ   r   r[   )r?   r   r   r   )Ú__doc__Ú
__future__r   Útypingr   r   r   ÚfontTools.otlLib.builderr'   ÚfontTools.designspaceLibr   r   r	   r
   ÚfontTools.designspaceLib.typesr   r   r   ÚfontTools.ttLibr   r0   r+   r,   rX   r>   r    r   r   ú<module>rs      s&  ðØ LÐ Là "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ "Ð "Ð "Ð "Ð "Ð "ð$ð $ð $ð $ðNð ð ð ðDð ð ð ð.ð ð ð ð;ð ;ð ;ð ;ð ;ð ;r   