Ë
    £ehm#  ã                  ó  — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	 ddl
Z
ddlmZmZmZmZmZmZmZ  e
j&                  e«      ZeZddd	d
dœZe G d„ d«      «       Z	 	 	 	 	 	 dd„Z	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zy)a-  Compute name information for a given location in user-space coordinates
using STAT data. This can be used to fill-in automatically the names of an
instance:

.. code:: python

    instance = doc.instances[0]
    names = getStatNames(doc, instance.getFullUserLocation(doc))
    print(names.styleNames)
é    )Úannotations)Ú	dataclass)ÚDictÚOptionalÚTupleÚUnionN)ÚAxisDescriptorÚAxisLabelDescriptorÚDesignSpaceDocumentÚDesignSpaceDocumentErrorÚDiscreteAxisDescriptorÚSimpleLocationDictÚSourceDescriptorÚregularÚitalicÚboldzbold italic))FF)FT)TF)TTc                  óD   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   y
)Ú	StatNamesz4Name data generated from the STAT table information.zDict[str, str]ÚfamilyNamesÚ
styleNameszOptional[str]ÚpostScriptFontNameÚstyleMapFamilyNameszOptional[RibbiStyle]ÚstyleMapStyleNameN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/designspaceLib/statNames.pyr   r   )   s#   … á>àÓØÓØ%Ó%Ø'Ó'Ø+Ô+r    r   c                óð  ‡— i }| j                  «       }|€t        j                  d«       n<|j                  €t        j                  d«       nd|j                  i|j                  ¥}i }| j                  |«      }|�d|j                  i|j                  ¥}n{t        | j                  |«      }|rct        d„ |D «       «      }|j                  d«       |D ];  Šdj                  ˆfd„|D «       «      }|s| j                  �| j                  }||‰<   Œ= d|vsd|vrt        ||di d¬«      S |d   › d	|d   › �j                  dd
«      }	t!        | |«      \  }
}|}||k7  rt#        | |«      }|j$                  }i }t        |«      j'                  |j)                  «       «      D ]E  Š|j+                  ‰|d   «      }|j+                  ‰|d   «      }|dz   |z   j-                  «       |‰<   ŒG t        |||	||
¬«      S )aq  Compute the family, style, PostScript names of the given ``userLocation``
    using the document's STAT information.

    Also computes localizations.

    If not enough STAT data is available for a given name, either its dict of
    localized names will be empty (family and style names), or the name will be
    None (PostScript name).

    .. versionadded:: 5.0
    Nz7Cannot determine default source to look up family name.zTCannot look up family name, assign the 'familyname' attribute to the default source.Úenc              3  óB   K  — | ]  }|j                   D ]  }|–— Œ Œ y ­w©N)Ú
labelNames©Ú.0ÚlabelÚlanguages      r!   ú	<genexpr>zgetStatNames.<locals>.<genexpr>\   s-   è ø€ ò Ø"¸U×=MÑ=MòØ19”ðØñùs   ‚ú c              3  ó‚   •K  — | ]6  }|j                   s(|j                  j                  ‰|j                  «      –— Œ8 y ­wr%   )Úelidabler&   ÚgetÚdefaultNamer'   s     €r!   r+   zgetStatNames.<locals>.<genexpr>a   s9   øè ø€ ò %àØ Ÿ>š>ð ×$Ñ$×(Ñ(¨°5×3DÑ3D×Eñ%ùs   ƒ<?)r   r   r   r   r   ú-Ú )ÚfindDefaultÚLOGGERÚwarningÚ
familyNameÚlocalisedFamilyNameÚlabelForUserLocationÚnamer&   Ú_getAxisLabelsForUserLocationÚaxesÚsetÚaddÚjoinÚelidedFallbackNamer   ÚreplaceÚ_getRibbiStyleÚgetStatNamesr   ÚunionÚkeysr/   Ústrip)ÚdocÚuserLocationr   ÚdefaultSourcer   r)   ÚlabelsÚ	languagesÚ	styleNamer   r   ÚregularUserLocationÚstyleNamesForStyleMapÚregularStatNamesr   r6   r*   s                   @r!   rB   rB   4   sQ  ø€ ð #%€KØ03·±Ó0A€MØÐÜ�‰ÐPÕQØ	×	!Ñ	!Ð	)Ü�‰Øbõ	
ð
 �-×*Ñ*ð
à×/Ñ/ð
ˆð
 "$€Jà×$Ñ$ \Ó2€EØÐØ˜EŸJ™JÐ;¨%×*:Ñ*:Ð;‰
ô /¨s¯x©x¸ÓFˆÙÜñ Ø&,ôó ˆIð �M‰M˜$ÔØ%ò 1�ØŸH™Hó %à!'ô%ó �	ñ
 ! S×%;Ñ%;Ð%GØ #× 6Ñ 6�IØ'0�
˜8Ò$ð1ð �;Ñ $¨jÑ"8äØ#Ø!Ø#Ø "Ø"ô
ð 	
ð (¨Ñ-Ð.¨a°
¸4Ñ0@Ð/AÐB×JÑJÈ3ÐPRÓSÐä-;¸CÀÓ-NÑ*ÐÐ*à&ÐØ˜lÒ*Ü'¨Ð-@ÓAÐØ 0× ;Ñ ;ÐàÐÜ˜Ó$×*Ñ*¨:¯?©?Ó+<Ó=ò OˆØ —_‘_ X¨{¸4Ñ/@ÓAˆ
Ø)×-Ñ-¨hÐ8MÈdÑ8SÓTˆ	Ø)3°cÑ)9¸IÑ)E×(LÑ(LÓ(NÐ˜HÒ%ðOô
 ØØØ-Ø/Ø+ôð r    c                óÜ   — t        d„ | D «       d„ ¬«      }|D �ci c]  }|j                  |j                  “Œ }}| D ](  }|j                  �Œ|j                  ||j                  <   Œ* |S c c}w )zbReturns axis labels sorted by their ordering, with unordered ones appended as
    they are listed.c              3  ó:   K  — | ]  }|j                   €Œ|–— Œ y ­wr%   ©ÚaxisOrdering)r(   Úaxiss     r!   r+   z'_getSortedAxisLabels.<locals>.<genexpr>”   s   è ø€ Ò@�$ $×"3Ñ"3Ñ"?ŒÑ@ùs   ‚”c                ó   — | j                   S r%   rQ   )Úas    r!   ú<lambda>z&_getSortedAxisLabels.<locals>.<lambda>•   s
   € �a—n‘n€ r    )Úkey)Úsortedr9   Ú
axisLabelsrR   )r;   Ú
sortedAxesrS   ÚsortedLabelss       r!   Ú_getSortedAxisLabelsr\   Œ   s~   € ô Ù@˜$Ô@Ù$ô€Jð
 0:ö:Ø'+ˆ�	‰	�4—?‘?Ñ"ð:€Lð :ð ò 6ˆØ×ÑÑ$Ø&*§o¡oˆL˜Ÿ™Ò#ð6ð Ðùò:s   šA)c                ó˜  ‡— g }t        | «      }|j                  «       |j                  «       k7  r8t        j                  d|j                  «       › d|j                  «       › d�«       |j	                  «       D ]O  \  }}||   Št        ˆfd„|D «       d «      }|€t        j                  d|› d‰› d�«       Œ?|j                  |«       ŒQ |S )Nz Mismatch between user location 'z' and available labels for 'z'.c              3  ó´   •K  — | ]O  }|j                   ‰k(  s:|j                  �2|j                  �&|j                  ‰cxk  r|j                  k  rn n|–— ŒQ y ­wr%   )Ú	userValueÚuserMinimumÚuserMaximum)r(   Úlr_   s     €r!   r+   z0_getAxisLabelsForUserLocation.<locals>.<genexpr>´   sN   øè ø€ ò 	àØ—;‘; )Ò+à—M‘MÐ-ØŸ™Ð1ØŸ™¨ÔC°a·m±mÕCô ñ	ùs   ƒAAz!Document needs a label for axis 'z', user value ')r\   rD   r4   r5   ÚitemsÚnextÚdebugÚappend)r;   rG   rI   ÚallAxisLabelsÚaxisNamerY   r)   r_   s          @r!   r:   r:   ¤   sç   ø€ ð )+€Fä(¨Ó.€MØ×ÑÓ˜|×0Ñ0Ó2Ò2Ü�‰Ø.¨|×/@Ñ/@Ó/BÐ.Cð DØ(×-Ñ-Ó/Ð0°ð4ô	
ð
 !.× 3Ñ 3Ó 5ò !Ñˆ�*Ø  Ñ*ˆ	Ü/3ó	à#ô	ð ó0
ˆð ˆ=Ü�L‰LØ3°H°:¸_ÈYÈKÐWYÐZõð �M‰M˜%Õ ð)!ð, €Mr    c                ó¨  — i }| j                   D �ci c]  }|j                  |“Œ }}d}d}|j                  d«      }|�d|j                  D ]U  }|j                  ||j
                     k(  sŒ |j                  |j                  k  sŒ:|j                  ||j
                  <   d} n |j                  d«      xs |j                  d«      }|�v|j                  D ]g  }|j                  ||j
                     k(  sŒ t        |j                  «      t        |j                  «      k  sŒL|j                  ||j
                  <   d} n t        ||f   i |¥|¥fS c c}w )zœCompute the RIBBI style name of the given user location,
    return the location of the matching Regular in the RIBBI group.

    .. versionadded:: 5.0
    FÚwghtTÚitalÚslnt)	r;   Útagr/   rY   ÚlinkedUserValuer9   r_   ÚabsÚBOLD_ITALIC_TO_RIBBI_STYLE)	ÚselfrG   rL   rS   Úaxes_by_tagr   r   Úregular_labelÚupright_labels	            r!   rA   rA   Ê   sb  € ð ÐØ.2¯i©iÖ8 d�4—8‘8˜T‘>Ð8€KÐ8à€DØ€Fà�?‰?˜6Ó"€DØÐØ!Ÿ_™_ò 	ˆMà×-Ñ-°¸d¿i¹iÑ1HÓHð "×+Ñ+¨m×.KÑ.KÓKà1>×1HÑ1HÐ# D§I¡IÑ.Ø�Ùð	ð �?‰?˜6Ó"Ò= k§o¡o°fÓ&=€DØÐØ!Ÿ_™_ò 	ˆMà×-Ñ-°¸d¿i¹iÑ1HÓHô ˜×/Ñ/Ó0´3°}×7TÑ7TÓ3UÓUà1>×1HÑ1HÐ# D§I¡IÑ.Ø�Ùð	ô  & d¨F lÑ3ð 6Ø
ð6à
ð6ð ð ùòO 9s   ‘E)rF   r   rG   r   Úreturnr   )r;   ú3list[Union[AxisDescriptor, DiscreteAxisDescriptor]]ru   z$Dict[str, list[AxisLabelDescriptor]])r;   rv   rG   r   ru   zlist[AxisLabelDescriptor])rq   r   rG   r   ru   z%Tuple[RibbiStyle, SimpleLocationDict])r   Ú
__future__r   Údataclassesr   Útypingr   r   r   r   ÚloggingÚfontTools.designspaceLibr	   r
   r   r   r   r   r   Ú	getLoggerr   r4   ÚstrÚ
RibbiStylerp   r   rB   r\   r:   rA   r   r    r!   ú<module>r      sæ   ðñ	õ #å !ß /Ó /Û ÷÷ ñ ð 
ˆ×	Ñ	˜8Ó	$€ð €
àØØØñ	Ð ð ÷,ð ,ó ð,ðUØ	ðUØ,>ðUàóUðpØ
=ðà)óð0#Ø
=ð#à$ð#ð ó#ðL3Ø
ð3Ø-?ð3à*ô3r    