§
    ¢”jf:  ã                   ó²   — d Z ddlmZ ddlmZ ddlmZ ddlZ G d„ de¦  «        ZdZ	d	„ Z
ed
„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Z	 	 	 dd„Zd„ Zd„ Zdd„ZdS )z-Helpers for instantiating name table records.é    )Úcontextmanager)Údeepcopy)ÚIntEnumNc                   ó2   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚNameIDé   é   é   é   é   é   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚFAMILY_NAMEÚSUBFAMILY_NAMEÚUNIQUE_FONT_IDENTIFIERÚFULL_FONT_NAMEÚVERSION_STRINGÚPOSTSCRIPT_NAMEÚTYPOGRAPHIC_FAMILY_NAMEÚTYPOGRAPHIC_SUBFAMILY_NAMEÚ!VARIATIONS_POSTSCRIPT_NAME_PREFIX© ó    úo/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/varLib/instancer/names.pyr   r   	   sA   € € € € € Ø€KØ€NØÐØ€NØ€NØ€OØ ÐØ!#ÐØ(*Ð%Ð%Ð%r   r   r	   c                 óJ  — g }d| v ru| d         }|j         D ]}|                     |j        ¦  «         Œ|j        D ]A}|                     |j        ¦  «         |j        dk    r|                     |j        ¦  «         ŒBd| v r™| d         j        }|j        r|j        j        ndD ]}|                     |j	        ¦  «         Œ|j
        r|j
        j        ndD ]}|                     |j        ¦  «         Œt          |dd ¦  «        }|�|                     |¦  «         d„ |D ¦   «         S )NÚfvaréÿÿ  ÚSTATr   ÚElidedFallbackNameIDc                 ó   — h | ]
}|d k    ¯|’ŒS )éÿ   r   )Ú.0ÚnameIDs     r   ú	<setcomp>z&getVariationNameIDs.<locals>.<setcomp>,   s   € Ð6Ð6Ð6�v¨°#ª¨ˆF¨¨¨r   )ÚaxesÚappendÚ
axisNameIDÚ	instancesÚsubfamilyNameIDÚpostscriptNameIDÚtableÚDesignAxisRecordÚAxisÚ
AxisNameIDÚAxisValueArrayÚ	AxisValueÚValueNameIDÚgetattr)ÚvarfontÚusedr!   ÚaxisÚinstanceÚstatÚvalueÚelidedFallbackNameIDs           r   ÚgetVariationNameIDsr?      sW  € Ø€DØ�ÐÐØ�vŒˆØ”Ið 	)ð 	)ˆDØ�KŠK˜œÑ(Ô(Ð(Ð(Øœð 	7ð 	7ˆHØ�KŠK˜Ô0Ñ1Ô1Ð1ØÔ(¨FÒ2Ð2Ø—’˜HÔ5Ñ6Ô6Ð6øØ�ÐÐØ�vŒÔ$ˆØ26Ô2GÐO�DÔ)Ô.Ð.ÈRð 	)ð 	)ˆDØ�KŠK˜œÑ(Ô(Ð(Ð(Ø6:Ô6IÐQ�TÔ(Ô2Ð2Èrð 	+ð 	+ˆEØ�KŠK˜Ô)Ñ*Ô*Ð*Ð*Ý& tÐ-CÀTÑJÔJÐØÐ+Ø�KŠKÐ,Ñ-Ô-Ð-à6Ð6 Ð6Ñ6Ô6Ð6r   c              #   ó<  ‡K  — ddl m} t          | ¦  «        }d V — |                     d¦  «         |t          | ¦  «        z
  Šˆfd„| d         j        D ¦   «         | d         j        d d …<   d| v r)t          d„ | d         j        D ¦   «         ¦  «        s| d= d S d S d S )Nr   )ÚlogzPruning name tablec                 ó&   •— g | ]}|j         ‰v¯|‘ŒS r   ©r(   )r'   ÚrecordÚexcludes     €r   ú
<listcomp>z&pruningUnusedNames.<locals>.<listcomp>9   s,   ø€ ð  ð  ð  Ø°f´mÈ7Ð6RÐ6RˆÐ6RÐ6RÐ6Rr   ÚnameÚltagc              3   óF   K  — | ]}|j         d k    ¯|j        dk    ¯|V — ŒdS )r   r"   N)Ú
platformIDÚlangID)r'   rD   s     r   ú	<genexpr>z%pruningUnusedNames.<locals>.<genexpr>A   sH   è è € ð 
ð 
àØÔ  AÒ%Ð%¨&¬-¸6Ò*AÐ*Að à*AÐ*AÐ*AÐ*Að
ð 
r   )Ú rA   r?   ÚinfoÚnamesÚany)r8   rA   ÚorigNameIDsrE   s      @r   ÚpruningUnusedNamesrR   /   s÷   øè è € àÐÐÐÐÐå% gÑ.Ô.€Kà	€E€E€Eà‡H‚HÐ!Ñ"Ô"Ð"ØÕ/°Ñ8Ô8Ñ8€Gð ð  ð  ð  Ø$ Vœ_Ô2ð ñ  ô  €GˆF„OÔ˜!˜!˜!Ñð �ÐÐõ
 ð 
ð 
à! &œ/Ô/ð
ñ 
ô 
ñ 
ô 
ð 	 ð
 ˜���ð Ðð
	 ð 	 r   c                 óD  — ddl m}m} d| vrt          d¦  «        ‚| d         j        }|j        st          d¦  «        ‚| d         } ||¦  «                             | ¦  «        }|                     ¦   «         }d„ |j        D ¦   «         } |i |¥|¥¦  «        }t          d„ | 
                    ¦   «         D ¦   «         ¦  «        sJ ‚ |||¦  «        }	t          ||	|                     ¦   «         ¦  «         d	„ |	D ¦   «         }	t          |	¦  «        }	t          | |	¦  «         d
S )a3  Update instatiated variable font's name table using STAT AxisValues.

    Raises ValueError if the STAT table is missing or an Axis Value table is
    missing for requested axis locations.

    First, collect all STAT AxisValues that match the new default axis locations
    (excluding "elided" ones); concatenate the strings in design axis order,
    while giving priority to "synthetic" values (Format 4), to form the
    typographic subfamily name associated with the new default instance.
    Finally, update all related records in the name table, making sure that
    legacy family/sub-family names conform to the the R/I/B/BI (Regular, Italic,
    Bold, Bold Italic) naming model.

    Example: Updating a partial variable font:
    | >>> ttFont = TTFont("OpenSans[wdth,wght].ttf")
    | >>> updateNameTable(ttFont, {"wght": (400, 900), "wdth": 75})

    The name table records will be updated in the following manner:
    NameID 1 familyName: "Open Sans" --> "Open Sans Condensed"
    NameID 2 subFamilyName: "Regular" --> "Regular"
    NameID 3 Unique font identifier: "3.000;GOOG;OpenSans-Regular" -->         "3.000;GOOG;OpenSans-Condensed"
    NameID 4 Full font name: "Open Sans Regular" --> "Open Sans Condensed"
    NameID 6 PostScript name: "OpenSans-Regular" --> "OpenSans-Condensed"
    NameID 16 Typographic Family name: None --> "Open Sans"
    NameID 17 Typographic Subfamily name: None --> "Condensed"

    References:
    https://docs.microsoft.com/en-us/typography/opentype/spec/stat
    https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids
    r   )Ú
AxisLimitsÚaxisValuesFromAxisLimitsr#   z6Cannot update name table since there is no STAT table.z<Cannot update name table since there are no STAT Axis Valuesr!   c                 ó(   — i | ]}|j         |j        “ŒS r   )ÚaxisTagÚdefaultValue©r'   Úas     r   ú
<dictcomp>z#updateNameTable.<locals>.<dictcomp>w   s   € ÐAÐAÐA°!�A”I˜qœ~ÐAÐAÐAr   c              3   ó6   K  — | ]}|j         |j        k    V — Œd S ©N)ÚminimumÚmaximum©r'   Úvs     r   rL   z"updateNameTable.<locals>.<genexpr>y   s+   è è € ÐJÐJ¨!ˆqŒy˜AœIÒ%ÐJÐJÐJÐJÐJÐJr   c                 ó0   — g | ]}|j         t          z  °|‘ŒS r   )ÚFlagsÚELIDABLE_AXIS_VALUE_NAMEr`   s     r   rF   z#updateNameTable.<locals>.<listcomp>   s5   € ð ð ð Ø¨!¬'Õ4LÑ*LðØ	ðð ð r   N)rM   rT   rU   Ú
ValueErrorr0   r4   ÚlimitAxesAndPopulateDefaultsÚdefaultLocationr*   ÚallÚvaluesÚcheckAxisValuesExistÚpinnedLocationÚ_sortAxisValuesÚ_updateNameRecords)
r8   Ú
axisLimitsrT   rU   r<   r!   ÚpartialDefaultsÚfvarDefaultsÚdefaultAxisCoordsÚaxisValueTabless
             r   ÚupdateNameTablers   I   sl  € ð@ 7Ð6Ð6Ð6Ð6Ð6Ð6Ð6à�WÐÐÝÐQÑRÔRÐRØ�6Œ?Ô €DØÔð YÝÐWÑXÔXÐXØ�6Œ?€Dð
 �˜JÑ'Ô'×DÒDÀWÑMÔM€JØ ×0Ò0Ñ2Ô2€OØAÐA°t´yÐAÑAÔA€LØ"˜
Ð#F lÐ#F°oÐ#FÑGÔGÐÝÐJÐJÐ/@×/GÒ/GÑ/IÔ/IÐJÑJÔJÑJÔJÐJÐJÐJà.Ð.¨tÐ5FÑGÔG€OÝ˜˜Ð0A×0PÒ0PÑ0RÔ0RÑSÔSÐSðð Ø"ðñ ô €Oõ & oÑ6Ô6€OÝ�w Ñ0Ô0Ð0Ð0Ð0r   c                 óD  ‡— t          ¦   «         }| j        j        }t          ¦   «         }| j        j        D ]k}|j        dv r&|                     ||j                 j        ¦  «         Œ1|j        dk    r/|j	        D ]'}|                     ||j                 j        ¦  «         Œ(Œl|D ]°}|j        }	|j        dv rM||j                 j        }
|	dk    r|j
        }n|j        }|
‰v r!|‰|
         k    r|                     |
¦  «         Œ_|j        dk    rF|j	        D ]>}||j                 j        }
|
‰v r&|j        ‰|
         k    r|                     |
¦  «         Œ?Œ±t          ‰¦  «        |z
  |z  }|r4d                     ˆfd„|D ¦   «         ¦  «        }t          d|› d�¦  «        ‚d S )N)r   r	   r
   r   r	   z, c              3   ó4   •K  — | ]}d |› d‰|         › �V — ŒdS )ú'z': Nr   )r'   ÚiÚ
axisCoordss     €r   rL   z'checkAxisValuesExist.<locals>.<genexpr>£   s8   øè è € ÐKÐK¸!Ð5 Ð5Ð5 j°¤mÐ5Ð5ÐKÐKÐKÐKÐKÐKr   zCannot find Axis Values {Ú})Úsetr1   r2   r4   r5   ÚFormatÚaddÚ	AxisIndexÚAxisTagÚAxisValueRecordÚNominalValueÚValueÚjoinre   )r<   Ú
axisValuesrx   ÚseenÚ
designAxesÚ	hasValuesr=   ÚrecÚaxisValueTableÚaxisValueFormatrW   Ú	axisValueÚmissingAxesÚmissings     `           r   rj   rj   †   sì  ø€ Ý‰5Œ5€DØÔ&Ô+€JÝ‘”€IØÔ$Ô.ð Að AˆØŒ<˜9Ð$Ð$Ø�MŠM˜* U¤_Ô5Ô=Ñ>Ô>Ð>Ð>ØŒ\˜QÒÐØÔ,ð Að A�Ø—’˜j¨¬Ô7Ô?Ñ@Ô@Ð@Ð@øà$ð &ð &ˆØ(Ô/ˆØÔ  IÐ-Ð-Ø  Ô!9Ô:ÔBˆGØ !Ò#Ð#Ø*Ô7�	�	à*Ô0�	Ø˜*Ð$Ð$¨°jÀÔ6IÒ)IÐ)IØ—’˜Ñ!Ô!Ð!øØÔ" aÒ'Ð'Ø%Ô5ð &ð &�Ø$ S¤]Ô3Ô;�Ø˜jÐ(Ð(¨S¬Y¸*ÀWÔ:MÒ-MÐ-MØ—H’H˜WÑ%Ô%Ð%øøå�z‘?”? TÑ)¨YÑ6€KØð CØ—)’)ÐKÐKÐKÐK¸{ÐKÑKÔKÑKÔKˆÝÐA°gÐAÐAÐAÑBÔBÐBðCð Cr   c                 ó¶  — g }t          ¦   «         }t          d„ | D ¦   «         d„ d¬¦  «        }|D ]P}t          d„ |j        D ¦   «         ¦  «        }t          |¦  «        }||z  s||z  }|                     ||f¦  «         ŒQ| D ]>}||v rŒ|j        }||vr,|                     |¦  «         |                     ||f¦  «         Œ?d„ t          |¦  «        D ¦   «         S )Nc                 ó(   — g | ]}|j         d k    ¯|‘ŒS )r   )r{   r`   s     r   rF   z#_sortAxisValues.<locals>.<listcomp>²   s   € Ð0Ð0Ð0ˆq !¤(¨a¢- -ˆ - - -r   c                 ó*   — t          | j        ¦  «        S r]   )Úlenr   )ra   s    r   ú<lambda>z!_sortAxisValues.<locals>.<lambda>³   s   € •c˜!Ô+Ñ,Ô,€ r   T)ÚkeyÚreversec              3   ó$   K  — | ]}|j         V — Œd S r]   )r}   ©r'   Úrs     r   rL   z"_sortAxisValues.<locals>.<genexpr>¸   s$   è è € ÐCÐC¨!˜!œ+ÐCÐCÐCÐCÐCÐCr   c                 ó   — g | ]\  }}|‘ŒS r   r   )r'   Ú_rŠ   s      r   rF   z#_sortAxisValues.<locals>.<listcomp>Æ   s   € Ð:Ð:Ð:™,˜!˜YˆIÐ:Ð:Ð:r   )rz   Úsortedr   Úminr+   r}   r|   )rƒ   ÚresultsÚseenAxesÚformat4ÚvalÚaxisIndexesÚminIndexÚ	axisIndexs           r   rl   rl   §   s  € ð €GÝ‰uŒu€HåØ0Ð0�JÐ0Ñ0Ô0Ø,Ð,Øðñ ô €Gð ð ,ð ,ˆÝÐCÐC¨sÔ/BÐCÑCÔCÑCÔCˆÝ�{Ñ#Ô#ˆØ˜+Ñ%ð 	,Ø˜Ñ#ˆHØ�NŠN˜H c˜?Ñ+Ô+Ð+øàð -ð -ˆØ�'ˆ>ˆ>ØØ”Mˆ	Ø˜HÐ$Ð$Ø�LŠL˜Ñ#Ô#Ð#Ø�NŠN˜I sÐ+Ñ,Ô,Ð,øà:Ð:­&°©/¬/Ð:Ñ:Ô:Ð:r   c                 óº  ‡‡‡‡— | d         Š| d         j         }d„ |D ¦   «         }ˆfd„|D ¦   «         Šˆfd„|D ¦   «         }|j        }t          ‰|¦  «        }‰j        Št	          d„ ‰j        D ¦   «         ¦  «        }|D ]ÚŠt          ˆˆfd„dd	|fD ¦   «         ¦  «        sŒ"d
                     ˆˆfd„‰D ¦   «         ¦  «        }|r#d
                     ˆˆfd„|D ¦   «         ¦  «        }	nd }	|	s;|s9|r ‰|g‰¢R Ž                      ¦   «         }n ‰|g‰¢R Ž                      ¦   «         }	d
                     ˆˆfd„|D ¦   «         ¦  «        }
t          | |
||	g‰¢R Ž  ŒÛd S )NrG   r#   c                 ó   — g | ]	}|j         ‘Œ
S r   )r6   rY   s     r   rF   z&_updateNameRecords.<locals>.<listcomp>Î   s   € Ð:Ð:Ð:¨!˜œÐ:Ð:Ð:r   c                 ó4   •— g | ]}t          ‰|¦  «        ¯|‘ŒS r   )Ú_isRibbi)r'   ÚnÚ	nametables     €r   rF   z&_updateNameRecords.<locals>.<listcomp>Ï   s(   ø€ ÐJÐJÐJ˜!µ8¸IÀqÑ3IÔ3IÐJ�AÐJÐJÐJr   c                 ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r'   r¦   ÚribbiNameIDss     €r   rF   z&_updateNameRecords.<locals>.<listcomp>Ð   s#   ø€ ÐLÐLÐL˜Q°a¸|Ð6KÐ6K�qÐ6KÐ6KÐ6Kr   c              3   ó>   K  — | ]}|j         |j        |j        fV — Œd S r]   )rJ   Ú	platEncIDrK   r•   s     r   rL   z%_updateNameRecords.<locals>.<genexpr>Õ   s/   è è € ÐSÐS¸a�Q”\ 1¤;°´Ð9ÐSÐSÐSÐSÐSÐSr   c              3   ó*   •K  — | ]} ‰|g‰¢R Ž V — Œd S r]   r   )r'   rw   ÚgetNameÚplatforms     €€r   rL   z%_updateNameRecords.<locals>.<genexpr>×   s5   øè è € ÐGÐG¨Q�7�7˜1Ð(˜xÐ(Ð(Ð(ÐGÐGÐGÐGÐGÐGr   r   r	   ú c              3   óN   •K  — | ]} ‰|g‰¢R Ž                       ¦   «         V — Œ d S r]   ©Ú	toUnicode©r'   r¦   r­   r®   s     €€r   rL   z%_updateNameRecords.<locals>.<genexpr>Ü   sR   øè è € ð !
ð !
Ø23ˆGˆG�AÐ!˜Ð!Ð!Ð!×+Ò+Ñ-Ô-ð!
ð !
ð !
ð !
ð !
ð !
r   c              3   óN   •K  — | ]} ‰|g‰¢R Ž                       ¦   «         V — Œ d S r]   r±   r³   s     €€r   rL   z%_updateNameRecords.<locals>.<genexpr>à   sR   øè è € ð )ð )Ø67��˜Ð%˜HÐ%Ð%Ð%×/Ò/Ñ1Ô1ð)ð )ð )ð )ð )ð )r   c              3   óN   •K  — | ]} ‰|g‰¢R Ž                       ¦   «         V — Œ d S r]   r±   r³   s     €€r   rL   z%_updateNameRecords.<locals>.<genexpr>î   sR   øè è € ð $
ð $
Ø23ˆGˆG�AÐ!˜Ð!Ð!Ð!×+Ò+Ñ-Ô-ð$
ð $
ð $
ð $
ð $
ð $
r   )
r0   r$   r¥   r­   rz   rO   rh   r‚   r²   Ú_updateNameTableStyleRecords)r8   rƒ   r<   ÚaxisValueNameIDsÚnonRibbiNameIDsÚelidedNameIDÚelidedNameIsRibbiÚ	platformsÚsubFamilyNameÚtypoSubFamilyNameÚfamilyNameSuffixr­   r§   r®   r©   s              @@@@r   rm   rm   É   sX  øøøø€ à˜”€IØ�6Œ?Ô €Dà:Ð:¨zÐ:Ñ:Ô:ÐØJÐJÐJÐJÐ/ÐJÑJÔJ€LØLÐLÐLÐLÐ"2ÐLÑLÔL€OØÔ,€LÝ  ¨LÑ9Ô9ÐàÔ€GÝÐSÐSÀ9Ä?ÐSÑSÔSÑSÔS€IØð "
ð "
ˆÝÐGÐGÐGÐGÐG°1°a¸Ð2FÐGÑGÔGÑGÔGð 	ð àŸšð !
ð !
ð !
ð !
ð !
Ø7Cð!
ñ !
ô !
ñ 
ô 
ˆð ð 	%Ø #§¢ð )ð )ð )ð )ð )Ø;Kð)ñ )ô )ñ !ô !ÐÐð !%Ðð !ð 	Q¨ð 	QØ ð QØ ' ¨Ð @°xÐ @Ð @Ð @× JÒ JÑ LÔ L��à$+ G¨LÐ$D¸8Ð$DÐ$DÐ$D×$NÒ$NÑ$PÔ$PÐ!àŸ8š8ð $
ð $
ð $
ð $
ð $
Ø7Fð$
ñ $
ô $
ñ 
ô 
Ðõ 	%ØØØØð		
ð
 ð	
ð 	
ð 	
ð 	
ð 	
ð9"
ð "
r   c                 ój   — |                       |ddd¦  «        }|�|                     ¦   «         dv rdndS )Nr
   r   é	  )ÚRegularÚItalicÚBoldzBold ItalicTF)r­   r²   )r§   r(   ÚenglishRecords      r   r¥   r¥   û   sL   € Ø×%Ò% f¨a°°EÑ:Ô:€Mð Ð$Ø×#Ò#Ñ%Ô%Ð)UÐUÐUð 	ˆð ð	r   r
   r   rÀ   c                 óÀ  — | d         }|||f} |j         t          j        g|¢R Ž p |j         t          j        g|¢R Ž }	 |j         t          j        g|¢R Ž p |j         t          j        g|¢R Ž }
t          |	|
g¦  «        st          d|› �¦  «        ‚|	                     ¦   «         }	|
                     ¦   «         }
t          j        |	t          j        |pdi}|rE|	› d|› � 	                    ¦   «         |t          j        <   |	|t          j        <   ||t          j        <   n1t          j        t          j        fD ]}| 
                    |¬¦  «         Œ|                     t          j        ¦  «        p|t          j                 }|                     t          j        ¦  «        p|t          j                 }|› d|› �|t          j        <   t          | |||¦  «        |t          j        <   t          | ||¦  «        }|r||t          j        <   |                     ¦   «         D ] \  }}|s
J |¦   «         ‚ |j        ||g|¢R Ž  Œ!d| vr!| 
                    t          j        ¦  «         d S d S )NrG   z.Missing required NameIDs 1 and 2 for platform rÁ   r¯   rC   r!   )r­   r   r   r   r   r   rh   re   r²   ÚstripÚremoveNamesÚgetr   Ú_updatePSNameRecordr   Ú_updateUniqueIdNameRecordr   ÚitemsÚsetNamer   )r8   r¾   r¼   r½   rJ   r«   rK   r§   r®   ÚcurrentFamilyNameÚcurrentStyleNameÚnameIDsr(   ÚnewFamilyNameÚnewStyleNameÚuniqueIDÚstrings                    r   r¶   r¶     sÝ  € ð ˜”€IØ˜I vÐ.€Hà)˜	Ô)ÝÔ&ðØ)1ðð ð ð :à	ˆÔ	�6Ô-Ð	9°Ð	9Ð	9Ð	9ð ð )�yÔ(ÝÔ)ðØ,4ðð ð ð =à	ˆÔ	�6Ô0Ð	<°8Ð	<Ð	<Ð	<ð õ Ð!Ð#3Ð4Ñ5Ô5ð VÝÐTÈ(ÐTÐTÑUÔUÐUà)×3Ò3Ñ5Ô5ÐØ'×1Ò1Ñ3Ô3Ðõ 	ÔÐ-ÝÔ˜}Ð9°	ð€Gð ð 1Ø):Ð&OÐ&OÐ=MÐ&OÐ&O×&UÒ&UÑ&WÔ&Wˆ•Ô"Ñ#Ø2Cˆ•Ô.Ñ/Ø5Fˆ•Ô1Ñ2Ð2õ
 Ô*ÝÔ-ð
ð 	1ð 	1ˆFð ×!Ò!¨Ð!Ñ0Ô0Ð0Ð0ð 	�Š•FÔ2Ñ3Ô3ÐR°w½vÔ?QÔ7Rð ð 	�Š•FÔ5Ñ6Ô6ÐX¸'Å&ÔBWÔ:Xð ð )6Ð%FÐ%F¸Ð%FÐ%F€G�FÔ!Ñ"Ý&9Ø� ¨hñ'ô '€G�FÔ"Ñ#õ )¨°'¸8ÑDÔD€HØð :Ø19ˆ•Ô-Ñ.à!Ÿ-š-™/œ/ð 5ð 5‰ˆ�ØÐÐ�vÑÔÐØˆ	Ô˜& &Ð4¨8Ð4Ð4Ð4Ð4Ð4à�WÐÐØ×Ò�fÔFÑGÔGÐGÐGÐGð Ðr   c                 óò   — | d         } |j         t          j        g|¢R Ž }|r|                     ¦   «         }n|}|› d|› �}t	          j        dd|¦  «        }t          |¦  «        dk    r|d d…         › d�S |S )NrG   ú-z[^A-Za-z0-9-]rM   é   é|   z...)r­   r   r   r²   ÚreÚsubr�   )r8   Ú
familyNameÚ	styleNamer®   r§   Úfamily_prefixÚpsNames          r   rÉ   rÉ   J  s®   € ð ˜”€Ià%�IÔ%ÝÔ0ðØ3;ðð ð €Mð ð #Ø%×/Ò/Ñ1Ô1ˆˆà"ˆàÐ+Ð+ 	Ð+Ð+€Fõ ŒVÐ$ c¨6Ñ2Ô2€Få
ˆ6�{„{�SÒÐð ˜˜#˜”,Ð#Ð#Ð#Ð#Ø€Mr   c                 óB  — | d         } |j         t          j        g|¢R Ž }|sd S t          j        t          j        fD ]‚} |j         |g|¢R Ž }|sŒ|                     ¦   «         |                     ¦   «         v rG|                     ¦   «                              |                     ¦   «         ||j                 ¦  «        c S Œƒt          | |¦  «        }| d         j	        }t          j        dd|¦  «                             ¦   «         }	|t          j                 }
|› d|	› d|
› �S )NrG   zOS/2z[^\x00-\x7F]rM   ú;)r­   r   r   r   r   r²   Úreplacer(   Ú_fontVersionÚ	achVendIDrØ   rÙ   rÆ   )r8   rÏ   r®   r§   ÚcurrentRecordr(   Ú
nameRecordÚfontVersionrâ   ÚvendorrÝ   s              r   rÊ   rÊ   d  sJ  € Ø˜”€IØ%�IÔ%¥fÔ&CÐOÀhÐOÐOÐO€MØð Øˆtõ Ô(­&Ô*@ÐAð ð ˆØ&�YÔ& vÐ9°Ð9Ð9Ð9ˆ
Øð 	ØØ×ÒÑ!Ô! ]×%<Ò%<Ñ%>Ô%>Ð>Ð>Ø ×*Ò*Ñ,Ô,×4Ò4Ø×$Ò$Ñ&Ô&¨°
Ô0AÔ(Bñô ð ð ð ð ?õ ˜w¨Ñ1Ô1€KØ˜”Ô)€IåŒV�O R¨Ñ3Ô3×9Ò9Ñ;Ô;€FØ•VÔ+Ô,€FØÐ-Ð-˜FÐ-Ð- VÐ-Ð-Ð-r   ©r
   r   rÀ   c                 ó  —  | d         j         t          j        g|¢R Ž }|€| d         j        d›S |                     ¦   «                              d¦  «        d         }|                     d¦  «                             ¦   «         S )NrG   Úheadz.3frß   r   zVersion )r­   r   r   ÚfontRevisionr²   ÚsplitÚlstriprÆ   )Úfontr®   rä   ÚversionNumbers       r   rá   rá   }  s‚   € Ø%��f”Ô%¥fÔ&;ÐG¸hÐGÐGÐG€JØÐØ�v”,Ô+Ð1Ð1Ð1ð ×(Ò(Ñ*Ô*×0Ò0°Ñ5Ô5°aÔ8€MØ×Ò 
Ñ+Ô+×1Ò1Ñ3Ô3Ð3r   )rç   )Ú__doc__Ú
contextlibr   Úcopyr   Úenumr   rØ   r   rd   r?   rR   rs   rj   rl   rm   r¥   r¶   rÉ   rÊ   rá   r   r   r   ú<module>ró      s\  ðØ 3Ð 3à %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 	€	€	€	ð	+ð 	+ð 	+ð 	+ð 	+ˆWñ 	+ô 	+ð 	+ð Ð ð7ð 7ð 7ð. ð ð  ñ „ð ð2:1ð :1ð :1ðzCð Cð CðB;ð ;ð ;ðD/
ð /
ð /
ðdð ð ð ØØðBHð BHð BHð BHðJð ð ð4.ð .ð .ð24ð 4ð 4ð 4ð 4ð 4r   