ó
    oñ:if:  ã                   ó¨   • S r SSKJr  SSKJr  SSKJr  SSKr " S S\5      rSr	S	 r
\S
 5       rS rS rS rS rS r   SS jrS rS rSS jrg)z-Helpers for instantiating name table records.é    )Úcontextmanager)Údeepcopy)ÚIntEnumNc                   ó8   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrg)ÚNameIDé	   é   é   é   é   é   é   é   é   é   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚFAMILY_NAMEÚSUBFAMILY_NAMEÚUNIQUE_FONT_IDENTIFIERÚFULL_FONT_NAMEÚVERSION_STRINGÚPOSTSCRIPT_NAMEÚTYPOGRAPHIC_FAMILY_NAMEÚTYPOGRAPHIC_SUBFAMILY_NAMEÚ!VARIATIONS_POSTSCRIPT_NAME_PREFIXÚ__static_attributes__r   ó    Úc/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/varLib/instancer/names.pyr   r   	   s3   † Ø€KØ€NØÐØ€NØ€NØ€OØ ÐØ!#ÐØ(*Ó%r!   r   r
   c                 ó  • / nSU ;   aŽ  U S   nUR                    H  nUR                  UR                  5        M      UR                   HK  nUR                  UR                  5        UR
                  S:w  d  M0  UR                  UR
                  5        MM     SU ;   aÆ  U S   R                  nUR                  (       a  UR                  R                  OS H  nUR                  UR                  5        M      UR                  (       a  UR                  R                  OS H  nUR                  UR                  5        M      [        USS 5      nUb  UR                  U5        U Vs1 s H  oˆS:”  d  M
  UiM     sn$ s  snf )NÚfvaréÿÿ  ÚSTATr   ÚElidedFallbackNameIDéÿ   )ÚaxesÚappendÚ
axisNameIDÚ	instancesÚsubfamilyNameIDÚpostscriptNameIDÚtableÚDesignAxisRecordÚAxisÚ
AxisNameIDÚAxisValueArrayÚ	AxisValueÚValueNameIDÚgetattr)	ÚvarfontÚusedr$   ÚaxisÚinstanceÚstatÚvalueÚelidedFallbackNameIDÚnameIDs	            r"   ÚgetVariationNameIDsr?      s8  € Ø€DØ�ÓØ�v‰ˆØ—I”IˆDØ�K‰K˜Ÿ™Ö(ñ àŸœˆHØ�K‰K˜×0Ñ0Ô1Ø×(Ñ(¨FÕ2Ø—‘˜H×5Ñ5Ö6ñ 'ð �ÓØ�v‰×$Ñ$ˆØ26×2G×2G�D×)Ñ)×.Ò.ÈRÒOˆDØ�K‰K˜Ÿ™Ö(ñ Pà6:×6I×6I�T×(Ñ(×2Ò2ÈrÒQˆEØ�K‰K˜×)Ñ)Ö*ñ Rä& tÐ-CÀTÓJÐØÑ+Ø�K‰KÐ,Ô-á!%Ó6¢�v°#©�F¡Ñ6Ð6ùÒ6s   Å'	E=Å4E=c              #   ó^  #   • SSK Jn  [        U 5      nS v •  UR                  S5        U[        U 5      -
  nU S   R                   Vs/ s H  oDR
                  U;  d  M  UPM     snU S   R                  S S & SU ;   a)  [        S U S   R                   5       5      (       d  U S	 g g g s  snf 7f)Nr	   )ÚlogzPruning name tableÚnameÚltagc              3   ón   #   • U  H+  nUR                   S :X  d  M  UR                  S:w  d  M'  Uv •  M-     g7f)r   r%   N)Ú
platformIDÚlangID)Ú.0Úrecords     r"   Ú	<genexpr>Ú%pruningUnusedNames.<locals>.<genexpr>A   s8   é € ð 
â/�Ø× Ñ  AÑ%ó à*0¯-©-¸6Ñ*A÷ ‰FÚ/ùs   ‚5š5¬	5)Ú rA   r?   ÚinfoÚnamesr>   Úany)r7   rA   ÚorigNameIDsÚexcluderH   s        r"   ÚpruningUnusedNamesrQ   /   s¶   é € åä% gÓ.€Kã	à‡H�HÐ!Ô"ØÔ/°Ó8Ñ8€Gà$ V™_×2Ò2ó Ú2�6·m±mÈ7Ñ6R�Ñ2ñ €GˆF�O×Ñ™!Ðð �Óô
 ñ 
à! &™/×/Ò/ó
÷ 
ñ 
ð
 ˜‘ð
ð ùò ùs   ‚AB-ÁB(ÁB(Á%AB-c                 ó„  • SSK JnJn  SU ;  a  [        S5      eU S   R                  nUR
                  (       d  [        S5      eU S   nU" U5      R                  U 5      nUR                  5       nUR                   Vs0 s H  owR                  UR                  _M     nnU" 0 UEUE5      n	[        S U	R                  5        5       5      (       d   eU" XI5      n
[        XJU	R                  5       5        U
 Vs/ s H  o»R                  [         -  (       a  M  UPM      n
n[#        U
5      n
[%        X
5        gs  snf s  snf )	aÓ  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              3   óR   #   • U  H  oR                   UR                  :H  v •  M     g 7f©N)ÚminimumÚmaximum)rG   Úvs     r"   rI   Ú"updateNameTable.<locals>.<genexpr>y   s   é € ÐJÒ/I¨!�y‰y˜AŸI™IÖ%Ò/Iùs   ‚%'N)rK   rS   rT   Ú
ValueErrorr/   r3   ÚlimitAxesAndPopulateDefaultsÚdefaultLocationr)   ÚaxisTagÚdefaultValueÚallÚvaluesÚcheckAxisValuesExistÚpinnedLocationÚFlagsÚELIDABLE_AXIS_VALUE_NAMEÚ_sortAxisValuesÚ_updateNameRecords)r7   Ú
axisLimitsrS   rT   r;   r$   ÚpartialDefaultsÚaÚfvarDefaultsÚdefaultAxisCoordsÚaxisValueTablesrY   s               r"   ÚupdateNameTablern   I   s-  € ÷@ 7à�WÓÜÐQÓRÐRØ�6‰?× Ñ €DØ××ÜÐWÓXÐXØ�6‰?€Dñ
 ˜JÓ'×DÑDÀWÓM€JØ ×0Ñ0Ó2€OØ7;·y²yÓA²y°!—I‘I˜qŸ~™~Ò-±y€LÐAÙ"Ð#F lÐ#F°oÐ#FÓGÐÜÑJÐ/@×/GÑ/GÔ/IÓJ×JÑJÐJÐJá.¨tÓG€OÜ˜Ð0A×0PÑ0PÓ0RÔSñ #óÚ"ˆa¯'©'Ô4LÕ*L�‘?ð ð ô & oÓ6€OÜ�wÕ0ùò Bùòs   Á? D8Ã:D=ÄD=c                 óü  ^• [        5       nU R                  R                  n[        5       nU R                  R                   Hˆ  nUR
                  S;   a)  UR                  XFR                     R                  5        M<  UR
                  S:X  d  MN  UR                   H*  nUR                  XGR                     R                  5        M,     MŠ     U Hç  nUR
                  n	UR
                  S;   a]  XHR                     R                  n
U	S:X  a  UR                  nOUR                  nU
T;   a  UTU
   :X  a  UR                  U
5        Mx  Mz  M|  UR
                  S:X  d  MŽ  UR                   HI  nXGR                     R                  n
U
T;   d  M#  UR                  TU
   :X  d  M8  UR                  U
5        MK     Mé     [        T5      U-
  U-  nU(       a*  SR                  U4S jU 5       5      n[        SU S35      eg )N)r	   r
   r   r   r
   z, c              3   ó:   >#   • U  H  nS U STU    3v •  M     g7f)Ú'z': Nr   )rG   ÚiÚ
axisCoordss     €r"   rI   Ú'checkAxisValuesExist.<locals>.<genexpr>£   s"   øé € ÐKº{¸!˜a ˜s # j°¡m _Õ5º{ùs   ƒzCannot find Axis Values {Ú})Úsetr0   r1   r3   r4   ÚFormatÚaddÚ	AxisIndexÚAxisTagÚAxisValueRecordÚNominalValueÚValueÚjoinr[   )r;   Ú
axisValuesrs   ÚseenÚ
designAxesÚ	hasValuesr<   ÚrecÚaxisValueTableÚaxisValueFormatr^   Ú	axisValueÚmissingAxesÚmissings     `           r"   rb   rb   †   s¬  ø€ Ü‹5€DØ×&Ñ&×+Ñ+€JÜ“€IØ×$Ñ$×.Ô.ˆØ�<‰<˜9Ó$Ø�M‰M˜*§_¡_Ñ5×=Ñ=Ö>Ø�\‰\˜QÕØ×,Ô,�Ø—‘˜j¯©Ñ7×?Ñ?Ö@ó -ñ	 /ó %ˆØ(×/Ñ/ˆØ× Ñ  IÓ-Ø ×!9Ñ!9Ñ:×BÑBˆGØ !Ó#Ø*×7Ñ7‘	à*×0Ñ0�	Ø˜*Ó$¨°jÀÑ6IÓ)IØ—‘˜Ö!ñ *JÑ$à×"Ñ" aÕ'Ø%×5Ô5�Ø$§]¡]Ñ3×;Ñ;�Ø˜jÕ(¨S¯Y©Y¸*ÀWÑ:MÕ-MØ—H‘H˜WÖ%ó 6ñ %ô  �z“? TÑ)¨YÑ6€KÞØ—)‘)ÔK¹{ÓKÓKˆÜÐ5°g°Y¸bÐAÓBÐBð r!   c                 óú  • / n[        5       n[        U  Vs/ s H  o3R                  S:X  d  M  UPM     snS SS9nU HK  n[        S UR                   5       5      n[	        U5      nX&-  (       a  M5  X&-  nUR                  Xu45        MM     U  H@  nXT;   a  M
  UR                  nX‚;  d  M  UR                  U5        UR                  X…45        MB     [        U5       V	V
s/ s H  u  pšU
PM	     sn
n	$ s  snf s  sn
n	f )Nr   c                 ó,   • [        U R                  5      $ rV   )Úlenr{   )rY   s    r"   Ú<lambda>Ú!_sortAxisValues.<locals>.<lambda>³   s   € ”c˜!×+Ñ+Ô,r!   T)ÚkeyÚreversec              3   ó8   #   • U  H  oR                   v •  M     g 7frV   )ry   ©rG   Úrs     r"   rI   Ú"_sortAxisValues.<locals>.<genexpr>¸   s   é € ÐCÒ/B¨!Ÿ+ž+Ò/Bùs   ‚)rv   Úsortedrw   r{   Úminr*   ry   rx   )r   ÚresultsÚseenAxesrY   Úformat4ÚvalÚaxisIndexesÚminIndexÚ	axisIndexÚ_r†   s              r"   rf   rf   §   sê   € ð €GÜ‹u€HäÙÓ0’Jˆq§(¡(¨a¡-�‘JÑ0Ù,Øñ€Gó ˆÜÑC¨s×/BÒ/BÓCÓCˆÜ�{Ó#ˆØ×%Ñ%ØÑ#ˆHØ�N‰N˜H˜?Ö+ñ ó ˆØ‹>ÙØ—M‘Mˆ	ØÕ$Ø�L‰L˜Ô#Ø�N‰N˜IÐ+Ö,ñ ô +1°¬/Ô:ª/™,˜!‹I©/Ò:Ð:ùò) 	1ùó( ;s   –C2­C2Ã C7c                 ó0  ^^• U S   nU S   R                   nU Vs/ s H  oDR                  PM     nnU Vs/ s H  n[        X&5      (       d  M  UPM     nnU Vs/ s H  ofU;  d  M
  UPM     nnUR                  n	[        X)5      n
UR                  m[        S UR                   5       5      nU HÔ  m[        UU4S jSSU	4 5       5      (       d  M#  SR                  UU4S jU 5       5      nU(       a  SR                  UU4S	 jU 5       5      nOS nU(       d=  U(       d6  U
(       a  T" U	/TQ76 R                  5       nOT" U	/TQ76 R                  5       nSR                  UU4S
 jU 5       5      n[        U UUU/TQ76   MÖ     g s  snf s  snf s  snf )NrB   r&   c              3   óf   #   • U  H'  oR                   UR                  UR                  4v •  M)     g 7frV   )rE   Ú	platEncIDrF   r‘   s     r"   rI   Ú%_updateNameRecords.<locals>.<genexpr>Õ   s!   é € ÐSÂ?¸a—\‘\ 1§;¡;°·±Õ9Â?ùs   ‚/1c              3   ó6   >#   • U  H  nT" U/TQ76 v •  M     g 7frV   r   )rG   rr   ÚgetNameÚplatforms     €€r"   rI   r¡   ×   s   øé € ÐGÒ2F¨Q‘7˜1Ð(˜x×(Ò2Fùs   ƒr	   r
   Ú c              3   óR   >#   • U  H  nT" U/TQ76 R                  5       v •  M     g 7frV   ©Ú	toUnicode©rG   Únr£   r¤   s     €€r"   rI   r¡   Ü   s*   øé € ð !
Ú7C°!‰G�AÐ!˜Ò!×+Ñ+×-Ð-²|ùó   ƒ$'c              3   óR   >#   • U  H  nT" U/TQ76 R                  5       v •  M     g 7frV   r§   r©   s     €€r"   rI   r¡   à   s+   øé € ð )Ú;K°a‘˜Ð%˜HÒ%×/Ñ/×1Ð1Ò;Kùr«   c              3   óR   >#   • U  H  nT" U/TQ76 R                  5       v •  M     g 7frV   r§   r©   s     €€r"   rI   r¡   î   s*   øé € ð $
Ú7F°!‰G�AÐ!˜Ò!×+Ñ+×-Ð-²ùr«   )r/   r5   Ú_isRibbir'   r£   rv   rM   r`   r~   r¨   Ú_updateNameTableStyleRecords)r7   r   Ú	nametabler;   rj   ÚaxisValueNameIDsrª   ÚribbiNameIDsÚnonRibbiNameIDsÚelidedNameIDÚelidedNameIsRibbiÚ	platformsÚsubFamilyNameÚtypoSubFamilyNameÚfamilyNameSuffixr£   r¤   s                  @@r"   rg   rg   É   sŒ  ù€ à˜‘€IØ�6‰?× Ñ €Dá/9Ó:ªz¨!Ÿœ©zÐÐ:Ù/ÓJÒ/˜!´8¸I×3I—AÑ/€LÐJÙ"2ÓLÒ"2˜Q¸|Ñ6K—qÑ"2€OÐLØ×,Ñ,€LÜ  Ó9Ðà×Ñ€GÜÑSÀ9Ç?Â?ÓSÓS€IÛˆÜÕG°1°a¸Ñ2FÓG×GÑGñ àŸ™õ !
Ù7Có!
ó 
ˆö Ø #§¡õ )Ù;Kó)ó !Ñð !%Ðö !®Þ Ù '¨Ð @°xÒ @× JÑ JÓ L‘á$+¨LÐ$D¸8Ò$D×$NÑ$NÓ$PÐ!àŸ8™8õ $
Ù7Fó$
ó 
Ðô 	%ØØØØð		
ð
 õ	
ò9 ùò ;ùÚJùÚLs   ›F	¶FÁFÁ	FÁ'Fc                 ó`   • U R                  USSS5      nUb  UR                  5       S;   a  S$ S$ )Nr   r	   é	  )ÚRegularÚItalicÚBoldzBold ItalicTF)r£   r¨   )r°   r>   ÚenglishRecords      r"   r®   r®   û   sF   € Ø×%Ñ% f¨a°°EÓ:€Mð Ñ$Ø×#Ñ#Ó%Ð)UÓUð 	ðð ð	r!   c                 óz  • U S   nXEU4nUR                   " [        R                  /UQ76 =(       d!    UR                   " [        R                  /UQ76 n	UR                   " [        R                  /UQ76 =(       d!    UR                   " [        R
                  /UQ76 n
[        Xš/5      (       d  [        SU 35      eU	R                  5       n	U
R                  5       n
[        R                  U	[        R
                  U=(       d    S0nU(       aK  U	 SU 3R                  5       U[        R                  '   X›[        R                  '   X;[        R                  '   O6[        R                  [        R                  4 H  nUR                  US9  M     UR                  [        R                  5      =(       d    U[        R                     nUR                  [        R                  5      =(       d    U[        R
                     nU SU 3U[        R                  '   [        XXè5      U[        R                  '   [        XU5      nU(       a  Xû[        R                   '   UR#                  5        H(  u  nnU(       d   U5       eUR$                  " UU/UQ76   M*     SU ;  a   UR                  [        R&                  5        g g )NrB   z.Missing required NameIDs 1 and 2 for platform r¼   r¥   )r>   r$   )r£   r   r   r   r   r   r`   r[   r¨   ÚstripÚremoveNamesÚgetr   Ú_updatePSNameRecordr   Ú_updateUniqueIdNameRecordr   ÚitemsÚsetNamer   )r7   r¹   r·   r¸   rE   r    rF   r°   r¤   ÚcurrentFamilyNameÚcurrentStyleNameÚnameIDsr>   ÚnewFamilyNameÚnewStyleNameÚuniqueIDÚstrings                    r"   r¯   r¯     s€  € ð ˜‘€IØ vÐ.€Hà!×)Ò)Ü×&Ñ&ðØ)1ò÷ :à	×	Ò	œ6×-Ñ-Ð	9°Ò	9ð ð !×(Ò(Ü×)Ñ)ðØ,4ò÷ =à	×	Ò	œ6×0Ñ0Ð	<°8Ò	<ð ô Ð!Ð4×5Ñ5ÜÐIÈ(ÈÐTÓUÐUà)×3Ñ3Ó5ÐØ'×1Ñ1Ó3Ðô 	×ÑÐ-Ü×Ñ˜}×9°	ð€Gö Ø):Ð(;¸1Ð=MÐ<NÐ&O×&UÑ&UÓ&Wˆ”×"Ñ"Ñ#Ø2C”×.Ñ.Ñ/Ø5F”×1Ñ1Ò2ô
 ×*Ñ*Ü×-Ñ-ó
ˆFð ×!Ñ!¨Ð!Ó0ñ	
ð 	�‰”F×2Ñ2Ó3×R°w¼v×?QÑ?QÑ7Rð ð 	�‰”F×5Ñ5Ó6×X¸'Ä&×BWÑBWÑ:Xð ð )6 °a¸°~Ð%F€GŒF×!Ñ!Ñ"Ü&9Ø ó'€GŒF×"Ñ"Ñ#ô )¨¸8ÓD€HÞØ19”×-Ñ-Ñ.à!Ÿ-™-ž/‰ˆ�ÞÐ�vÓˆvØ×Ò˜& &Ð4¨8Õ4ñ *ð �WÓØ×Ñœf×FÑFÕGð r!   c                 óò   • U S   nUR                   " [        R                  /UQ76 nU(       a  UR                  5       nOUnU SU 3n[        R
                  " SSU5      n[        U5      S:”  a  US S  S3$ U$ )NrB   Ú-z[^A-Za-z0-9-]rK   é   é|   z...)r£   r   r   r¨   ÚreÚsubr‹   )r7   Ú
familyNameÚ	styleNamer¤   r°   Úfamily_prefixÚpsNames          r"   rÄ   rÄ   J  s‘   € ð ˜‘€Ià×%Ò%Ü×0Ñ0ðØ3;ò€Mö Ø%×/Ñ/Ó1‰à"ˆàˆ˜a 	˜{Ð+€Fô �VŠVÐ$ c¨6Ó2€Fä
ˆ6ƒ{�SÓð ˜˜#�,�˜sÐ#Ð#Ø€Mr!   c                 óZ  • U S   nUR                   " [        R                  /UQ76 nU(       d  g [        R                  [        R                  4 H}  nUR                   " U/UQ76 nU(       d  M  UR                  5       UR                  5       ;   d  MC  UR                  5       R                  UR                  5       XR                     5      s  $    [        X5      nU S   R                  n[        R                  " SSU5      R                  5       n	U[        R                     n
U SU	 SU
 3$ )NrB   zOS/2z[^\x00-\x7F]rK   Ú;)r£   r   r   r   r   r¨   Úreplacer>   Ú_fontVersionÚ	achVendIDrÓ   rÔ   rÁ   )r7   rÊ   r¤   r°   ÚcurrentRecordr>   Ú
nameRecordÚfontVersionrÝ   ÚvendorrØ   s              r"   rÅ   rÅ   d  s  € Ø˜‘€IØ×%Ò%¤f×&CÑ&CÐOÀhÒO€MÞØô ×(Ñ(¬&×*@Ñ*@ÓAˆØ×&Ò& vÐ9°Ò9ˆ
ÞÙØ×ÑÓ! ]×%<Ñ%<Ó%>Õ>Ø ×*Ñ*Ó,×4Ñ4Ø×$Ñ$Ó&¨×0AÑ0AÑ(Bóò ñ Bô ˜wÓ1€KØ˜‘×)Ñ)€Iä�VŠV�O R¨Ó3×9Ñ9Ó;€FØ”V×+Ñ+Ñ,€FØˆ]˜!˜F˜8 1 V HÐ-Ð-r!   ©r   r	   r»   c                 óô   • U S   R                   " [        R                  /UQ76 nUc  U S   R                  S $ UR	                  5       R                  S5      S   nUR                  S5      R                  5       $ )NrB   Úheadz.3frÚ   r   zVersion )r£   r   r   ÚfontRevisionr¨   ÚsplitÚlstriprÁ   )Úfontr¤   rß   ÚversionNumbers       r"   rÜ   rÜ   }  sv   € Ø�f‘×%Ò%¤f×&;Ñ&;ÐG¸hÒG€JØÑØ�v‘,×+Ñ+¨CÐ0Ð1ð ×(Ñ(Ó*×0Ñ0°Ó5°aÑ8€MØ×Ñ 
Ó+×1Ñ1Ó3Ð3r!   )râ   )Ú__doc__Ú
contextlibr   Úcopyr   Úenumr   rÓ   r   re   r?   rQ   rn   rb   rf   rg   r®   r¯   rÄ   rÅ   rÜ   r   r!   r"   Ú<module>rî      s�   ðÙ 3å %Ý Ý Û 	ô	+ˆWô 	+ð Ð ò7ð. ñ ó ð ò2:1òzCòB;òD/
òdð ØØôBHòJò4.õ24r!   