+
    f7i2  c            
      s    ^ RI Ht ^ RIHt ^ RIHtHtHtHtH	t	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHu Hu Ht ^ R	IHt ^R
IHt ^ RIt^ RIt]P:                  ! ]4      tRt ]PB                  ! ] 4      t" ! R R]P4                  4      t#R t$R t%ERR lt& ! R R]'4      t(/ RRbRRbRRbRRbRRbRRbRR bR!R"bR#R$bR%R&bR'R(bR)R*bR+R,bR-R.bR/R0bR1R2bR3R4b/ R5R6bR7R8bR9R:bR;R<bR=R>bR?R@bRARBbRCRDbRERFbRGRHbRIRJbRKRLbRMRNbRORPbRQRRbRSRTbRURVbC/ RWRXbRYRZbR[R\bR]R^bR_R`bRaRbbRcRdbReRfbRgRhbRiRjbRkRlbRmRnbRoRpbRqRrbRsRtbRuRvbRwRxbC/ RyRzbR{R|bR}R~bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRER bC/ ERERbERERbERERbERERbER	ER
bERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERER bER!ER"bC/ ER#ER$bER%ER&bER'ER(bER)ER*bER+ER,bER-ER.bER/ER0bER1ER2bER3ER4bER5ER6bER7ER8bER9ER:bER;ER<bER=ER:bER>ER?bER@ERAbERBERCbC/ ERDEREbERFERGbERHERIbERJERKbERLERMbERNERObERPERQbERRERSbERTERUbERVERWbERXERYbERZER[bER\ER]bER^ER_bER`ERabERbERcbERdERebC/ ERfERgbERhERibERjERkbERlERmbERnERobERpERqbERrERsbERtERsbERuERvbERwERxbERyERzbER{ER|bER}ER~bERERbERERbERERbERERbC/ ERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbCERER/Ct)/ ^ Rb^Rb^Rb^Rb^Rrb^ER~b^ERsb^Rjb^ERb^	ERb^
Rb^Rb^R b^Rb^Rb^Rb^ER b/ ^ERb^Rdb^ERb^ERb^Rb^ERb^Rb^Rb^ERb^Rb^ERsb^Rb^ER6b^Rb^ERb^ ER,b^!R\bC/ ^"Rpb^#Rb^$Rb^%ER(b^&ERb^'EROb^(ERQb^)ERb^*ERCb^+Rb^,RTb^-ERb^.RHb^/ERb^0Rb^1R@b^2ERbC/ ^3R<b^4Rb^5ERb^6Rb^7ERb^8ERb^9ERb^:ER
b^;ERb^<ERb^=ERb^>ERb^?ERb^@ERb^AER?b^BERb^CRJbC/ ^DR>b^ERb^FER b^GERb^HRb^IRb^JERb^KERb^LERMb^MERb^NRb^ORb^PERb^QRb^RERb^SRb^TERbC/ ^URb^VERb^WERb^XERb^YRb^ZRb^[ERb^\ERb^]ERb^^ERb^ERb^RFb^RVb^ERb^ER&b^ERb^ERbC/ ^ERb^ERb^ERb^ERb^ERb^Rb^Rb^RRb^Rb^ERb^ERb^Rb^ERb^ERb^Rb^RBb^ERbCt*])PW                  4        U Uu/ uF  w  rVPY                  4       V bK  	  upp t-]*PW                  4        U Uu/ uF  w  rVPY                  4       V bK  	  upp t./ ^ ^ b^^ b^^ b^^ b^^ b^^ b^^ b^^ b^^ b^	^ b^
^b^^b^^b^^ b^^b^^ b^^ b/ ^^ b^^ b^^b^^b^^	b^^b^^b^^b^^b^^b^^b^^b^^ b^^ b^^b^ ^b^!^bC/ ^"^ b^#^ b^$^ b^%^ b^&^b^'^b^(^ b^)^b^*^b^+^b^,^b^-^b^.^b^/^b^0^b^1^b^2^bC/ ^3^b^4^b^5^b^6^b^7^b^8^b^9^b^:^b^;^b^<^b^=^b^>^b^?^b^@^	b^A^	b^B^	b^C^bC/ ^D^b^E^b^F^
b^G^b^H^b^I^b^J^b^K^b^L^b^M^b^N^b^O^b^P^b^Q^ b^R^ b^S^ b^T^bC/ ^U^b^V^b^W^b^X^ b^Y^ b^Z^ b^[^ b^\^ b^]^ b^^^ b^^ b^^ b^^ b^^ b^^ b^^ b^^ bC/ ^^b^^b^^b^^ b^^ b^^ b^^ b^^ b^^b^^ b^^ b^^ b^^ b^^b^^ b^^ b^^ bCt/ ! ER ER]4      t0]0Pc                  ]Pd                  ER3]Pf                  ER3]Ph                  ER3]Pj                  ER3]Pl                  ER3]Pn                  ER3]Pp                  ER334      ER 4       t9]0Pu                  ]Pv                  4      ER 4       t9]0Pu                  ]Px                  ! ER4      4      ER 4       t9]0Pu                  ]Px                  ! ER4      4      ER 4       t9]0Pu                  ]Pz                  4      ER 4       t9R# u upp i u upp i (      )annotations)sstruct)bytechrbyteord	bytesjoinstrjointobytestostrsafeEvalgetEncoding)newTable)	TTVisitor)ttLibN)C_P_A_L_)DefaultTableze
		>	# big endian
		platformID:	H
		platEncID:	H
		langID:		H
		nameID:		H
		length:		H
		offset:		H
c                  s   a  ] tR t^(tRtR.tRV 3R lltR tR tR t	R t
RR R	 lltR
 R ltR tR tR tR tR tRR lt]R 4       tRR ltRR ltRR ltRR ltRtV ;t# )table__n_a_m_eah  Naming table

The ``name`` table is used to store a variety of strings that can be
associated with user-facing font information. Records in the ``name``
table can be tagged with language tags to support multilingual naming
and can support platform-specific character-encoding variants.

See also https://learn.microsoft.com/en-us/typography/opentype/spec/name
ltagc                	s4   < \         SV `  V4       . V n        R # N)Zsuper__init__names)selftag	__class__s   &&F/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/_n_a_m_e.pyr   Ztable__n_a_m_e.__init__5   s    
    c                	s   \         P                  ! R VR,          4      w  r4p^V\        ,          ,           pWV8w  d   \        P	                  RVV4       WR pVR,          p. V n        \        V4       EF  p\        V4      ^8  d   \        P	                  RV4       K,  \        P                  ! \        V\        4       4      w  rWyP                  V	P                  V	P                  ,            V	n        V	P                  V	P                  ,           \        V4      8  d   \        P	                  RV4       K  \        V	P                  4      V	P                  8X  g   Q hV	=V	=V P
                  P                  V	4       EK  	  R# )   >HHH:N   Nz='name' table stringOffset incorrect. Expected: %s; Actual: %sN:r   NNz"skipping malformed name record #%d)structZunpacknameRecordSizelogerrorr   rangelenr   Zunpack2nameRecordFormat
NameRecordoffsetlengthstringappend)
r   datattFontformatnstringOffsetZexpectedStringOffset
stringDatainames
   &&&       r   	decompileZtable__n_a_m_e.decompile9   s$   "(--b"B< 1~#55/IIO$
 -(
Bx')
qA4y2~		>B )94NJD$[[4;;3LMDK{{T[[(3z?:		>Bt{{#t{{222
 T[JJd# r   c                	s   V P                   pVP                  4        R p^ p\        V4      p^V\        P                  ! \
        4      ,          ,           p\        P                  ! RWEV4      p^ p/ p	V F  p
V
P                  4       pW9   d   W,          w  V
n	        V
n
        M3\        V4      \        V4      3;w  V
n	        V
n
        W&   \        W;.4      pV\        P                  ! \
        V
4      ,           pK  	  Ws,           # )r   r   )r   Zsortr"   r   calcsizer#   r   ZpacktoBytesr%   r&   r   )r   r*   r   r.   r+   r,   r-   r)   Z
lastoffsetZdoner0   r'   s   &&          r   compileZtable__n_a_m_e.compileV   s    




J1w//0@AAA{{7F|<
D\\^F~+/<(T[:=j/3v;:VV(T[4<&
';<
',,'7>>D    r   c                	sN    V P                    F  pVP                  W4       K  	  R # r   )r   toXML)r   writerr*   r0      &&& r   r5   Ztable__n_a_m_e.toXMLj   s    JJDJJv& r   c                	s    VR 8w  d   R# \        4       pV P                  P                  V4       VP                  WW44       R# )
namerecordN)r$   r   r(   fromXML)r   r0   attrscontentr*   s   &&&&&r   r9   Ztable__n_a_m_e.fromXMLn   s4    <|

$T'2r   c          
     s,    V ^8  d   QhRRRRRRRRRR/# )	   nameIDint
platformID	platEncIDlangIDz
int | Nonereturnz'NameRecord | None' r+      "r   __annotate__table__n_a_m_e.__annotate__u   s4      '*7:DN	r   c                	s    V P                    FU  pVP                  V8X  g   K  VP                  V8X  g   K)  VP                  V8X  g   K<  Ve   VP                  V8X  g   KS  Vu # 	  R # r   )r   r=   r?   r@   rA   )r   r=   r?   r@   rA   r8      &&&&& r   getNameZtable__n_a_m_e.getNameu   sY     **J!!V+))Z7((I5>Z%6%6&%@%% % r   c                    V ^8  d   QhRRRR/# )r<   r=   r>   rB   z
str | NonerC   rD   rE   r   rF   rG      s      3 : r   c                	s   R pR pV P                    FJ  pVP                  V8w  d   K   VP                  4       pTpTP                  TP
                  3R9   g   KH  Tp M	  V'       d   V# V'       d   V# R #   \         d     Kr  i ; i)N))   r    )   	  )r   r=   	toUnicodeUnicodeDecodeErrorr?   rA   )r   r=   ZenglishNameZsomeNamer0   unistrs   &&    r   getDebugNameZtable__n_a_m_e.getDebugName   s    "&#JJD{{f$) H-1EE$  O & s   A55BBc                	sJ    V F  pV P                  V4      pVf   K  Vu # 	  R # r   )rQ   )r   nameIDsr=   r0      &&  r   getFirstDebugNameZ table__n_a_m_e.getFirstDebugName   s,    F$$V,D  r   c                	$    V P                  R4      # )   )rV      rK   rT   r      &r   getBestFamilyNameZ table__n_a_m_e.getBestFamilyName        %%k22r   c                	rU   )   )r]      r<   rX   rY   rZ   r   getBestSubFamilyNameZ#table__n_a_m_e.getBestSubFamilyName   r\   r   c                	s2   R F  p\        V4      ^8X  d^   V P                  V^ ,          4      pV P                  V^,          4      pRW#39   d   KM  V RV 2pVP                  4       R8X  d   T pVu # V P                  V^ ,          4      pVf   K  Vu # 	  R# )rV   NZ Zregular))rV   r]   )rW   r^   )rK   r<   )i   )r   )r"   rQ   lower)r   rR   Zname_famZname_subfamr0      &    r   getBestFullNameZtable__n_a_m_e.getBestFullName   s     @G7|q ,,WQZ8"//
;H22"1[M2$$&)3&ZD((4#K @ r   c           	     sh   \        V\        4      '       gT   \        V\        4      '       d   \        P	                  RV4       M&\        R\        V4      P                  : RV: 24      hV P                  W#WE4      pV'       d	   Wn	        R# V P                  P                  \        WW4V4      4       R# )a  Set the 'string' for the name record identified by 'nameID', 'platformID',
'platEncID' and 'langID'. If a record with that nameID doesn't exist, create it
and append to the name table.

'string' can be of type `str` (`unicode` in PY2) or `bytes`. In the latter case,
it is assumed to be already encoded with the correct plaform-specific encoding
identified by the (platformID, platEncID, langID) triplet. A warning is issued
to prevent unexpected results.
z7name string is bytes, ensure it's correctly encoded: %rz!expected unicode or bytes, found : N)
isinstancestrbytesr   warning	TypeErrortype__name__rI   r'   r   r(   makeName)r   r'   r=   r?   r@   rA   r8   s   &&&&&& r   setNameZtable__n_a_m_e.setName   s     &#&&&%((Mv  F|,,f6  \\&iH
 &JJhvzfUVr   c                s  a RV3RV3RV3RV33 UUu/ uF  w  rVVf   K  WVbK  	  pppV'       g   R# V P                    Uau. uFc  o\        ;QJ d-    V3R lVP                  4        4       F  '       g   K   RM"	  RM! V3R lVP                  4        4       4      '       g   Ka  SNKe  	  upV n         R# u uppi u upi )	zqRemove any name records identified by the given combination of 'nameID',
'platformID', 'platEncID' and 'langID'.
r=   r?   r@   rA   Nc              3  sF   <"   T F  w  rV\        SV4      8g  x  K  	  R # 5ir   )getattr).0argNameargValuerec   &  r   	<genexpr>Z-table__n_a_m_e.removeNames.<locals>.<genexpr>   s#      KW6GgGC11<   !TF)r   Zanyitems)	r   r=   r?   r@   rA   ro   rp   argsrq   s	   &&&&&   `r   removeNamesZtable__n_a_m_e.removeNames   s     6"z*i(6"	&	
&!  G& 	 	
  zz
!s KO::<sss KO::<  C!

	

s"   B5B5B;"B;7)B;%B;c                s\   \        4       pVP                  V 4       \        4       pV R,          P                   FN  pVP                  R8  d   K  VP                  VP
                  9  g   K3  VP                  VP                  4       KP  	  V F  pV R,          P                  V4       K  	  V# )zdRemove any name records which are not in NameID range 0-255 and not utilized
within the font itself.r0      )NameRecordVisitorvisitsetr   r=   seenaddrw   )r*   visitorZtoDeleteZrecordr=   ra   r   removeUnusedNamesZ table__n_a_m_e.removeUnusedNames   s     $%f5Vn**F }}s"}}GLL0V]]+ + F6N&&v. r   c                s    V P                   p^\        V Uu. uF  q3P                  NK  	  upV^,
          .,           4      ,           pVR8  d   \        R4      hV# u upi )zFinds an unused name id.

The nameID is assigned in the range between 'minNameID' and 32767 (inclusive),
following the last nameID in the name table.
i  znameID must be less than 32768)r   Zmaxr=   Z
ValueError)r   	minNameIDr   r,   r=      &&   r   _findUnusedNameIDZ table__n_a_m_e._findUnusedNameID  sU     

SE2Eq((E2i!m_DEEE>=>> 3s   A
c                sz   \        4       p\        VP                  4       4       F  w  rxV'       dO   \        VRV4      p	V	e>   VP	                  V	P
                  V	P                  V	P                  V	P                  34       V'       g   Ke  \        VRWu4      p
V
f   Kx  VP	                  V
P
                  V
P                  V
P                  V
P                  34       K  	  \        4       pV P                   F  p VP                  4       VP                  VP                  VP                  3pY9   g   K>  TP                  T8  g   KQ  TP                  TP                  \        4       4      pTP	                  T4       K  	  \        VP                  4       4       F  w  rW8X  g   K  Vu # 	  R#   \         d     K  i ; i)u|  Return the name ID of an existing multilingual name that
matches the 'names' dictionary, or None if not found.

'names' is a dictionary with the name in multiple languages,
such as {'en': 'Pale', 'de': 'Blaß', 'de-CH': 'Blass'}.
The keys can be arbitrary IETF BCP 47 language codes;
the values are Unicode strings.

If 'windows' is True, the returned name ID is guaranteed
exist for all requested languages for platformID=3 and
platEncID=1.
If 'mac' is True, the returned name ID is guaranteed to exist
for all requested languages for platformID=1 and platEncID=0.

The returned name ID will not be less than the 'minNameID'
argument.
N)r{   sortedru   _makeWindowsNamer}   r'   r?   r@   rA   _makeMacNameZdictr   rN   rO   r=   Z
setdefault)r   r   windowsmacr   r*   Z
reqNameSetlangr0   windowsNamemacNameZmatchingNamesZkeyZnameSetr=   s   &&&&&&         r   findMultilingualNameZ#table__n_a_m_e.findMultilingualName  sn   . U
 /JD.tT4@*NN'..'22'11'..	 s&tT4@&NN#NN#..#--#NN	 02 JJD~~'$..$++V  T[[I%='224;;FC    &m&9&9&;<OF$  =  & s   72F++F:9F:c                s   Vf+   V P                  WWVVR7      pVe   V# V P                  4       p\        VP                  4       4       Fr  w  rxV'       d/   \	        WV4      p	V	e   V P
                  P                  V	4       MRpV'       g   KE  \        WWr4      p
V
f   KW  V P
                  P                  V
4       Kt  	  V# )uF  Add a multilingual name, returning its name ID

'names' is a dictionary with the name in multiple languages,
such as {'en': 'Pale', 'de': 'Blaß', 'de-CH': 'Blass'}.
The keys can be arbitrary IETF BCP 47 language codes;
the values are Unicode strings.

'ttFont' is the TTFont to which the names are added, or None.
If present, the font's 'ltag' table can get populated
to store exotic language codes, which allows encoding
names that otherwise cannot get encoded at all.

'nameID' is the name ID to be used, or None to let the library
find an existing set of name records that match, or pick an
unused name ID.

If 'windows' is True, a platformID=3 name record will be added.
If 'mac' is True, a platformID=1 name record will be added.

If the 'nameID' argument is None, the created nameID will not
be less than the 'minNameID' argument.
)r   r   r   r*   T)r   r   r   ru   r   r   r(   r   )r   r   r*   r=   r   r   r   r   r0   r   r   s   &&&&&&&    r   addMultilingualNameZ"table__n_a_m_e.addMultilingualNameR  s    2 >..CV / F !++-F !/JD.tTB*JJ%%k2
 Cs&tTB&JJ%%g. 0 r   c           
     s@   \        V4      ^ 8  g   Q R4       h\        V\        4      '       g'   \        R\	        V4      P
                  : RV: 24      hV P                  V^,           4      pV F,  w  rVpV P                  P                  \        WWVV4      4       K.  	  V# )a  Add a new name record containing 'string' for each (platformID, platEncID,
langID) tuple specified in the 'platforms' list.

The nameID is assigned in the range between 'minNameID'+1 and 32767 (inclusive),
following the last nameID in the name table.
If no 'platforms' are specified, two English name records are added, one for the
Macintosh (platformID=0), and one for the Windows platform (3).

The 'string' must be a Unicode string, so it can be encoded with different,
platform-specific encodings.

Return the new nameID.
zK'platforms' must contain at least one (platformID, platEncID, langID) tuplezexpected str, found rc   )
r"   rd   re   rh   ri   rj   r   r   r(   rk   )r   r'   Z	platformsr   r=   r?   r@   rA   s   &&&&    r   addNameZtable__n_a_m_e.addName  s     	NQ	YX	Y&#&&04V0E0EvN  ''	A6-6)J6JJhvzfUV .7r   )r   r   )NNNN)rx   )TTr    N)NNTTr    )))rK   r    r    )rL   rK   rM   i   )rj   
__module____qualname____firstlineno__Z__doc__Zdependenciesr   r1   r4   r5   r9   rI   rQ   rT   r[   r_   rb   rl   rw   Zstaticmethodr   r   r   r   r   __static_attributes__Z__classcell__)r   s   @r   r   r   (   s     8L$:!('3,33&W4
2  $
@D1f r   r   c                sf    \        4       pV VVVV3w  Vn        Vn        Vn        Vn        Vn        V# r   )r$   r'   r=   r?   r@   rA   )r'   r=   r?   r@   rA   r0   rH   r   rk   rk     s<    <DNJDKdot~t{ Kr   c                s    \         P                  VP                  4       4      pVe   \        W^^V4      # \        P                  RV,          4       R# )a{  Create a NameRecord for the Microsoft Windows platform

'language' is an arbitrary IETF BCP 47 language identifier such
as 'en', 'de-CH', 'de-AT-1901', or 'fa-Latn'. If Microsoft Windows
does not support the desired language, the result will be None.
Future versions of fonttools might return a NameRecord for the
OpenType 'name' table format 1, but this is not implemented yet.
Nzacannot add Windows name in language %s because fonttools does not yet support name table format 1)_WINDOWS_LANGUAGE_CODESgetr`   rk   r   rg   )r0   r=   languagerA   r7   r   r   r     sP     %(()9:FaF33"$,-	

 r   c           	     s   \         P                  VP                  4       4      p\        P                  V4      pVe.   Ve*   \	        ^WTRR7      p \        WRR7      p\        W^WT4      # VeL   VP                  P                  R4      pVf   \        R4      ;qR&   \        W^ ^VP                  V4      4      # \        P                  RV,          4       R#   \         d     Lzi ; i)u  Create a NameRecord for Apple platforms

'language' is an arbitrary IETF BCP 47 language identifier such
as 'en', 'de-CH', 'de-AT-1901', or 'fa-Latn'. When possible, we
create a Macintosh NameRecord that is understood by old applications
(platform ID 1 and an old-style Macintosh language enum). If this
is not possible, we create a Unicode NameRecord (platform ID 0)
whose language points to the font’s 'ltag' table. The latter
can encode any string in any language, but legacy applications
might not recognize the format (in which case they will ignore
those names).

'font' should be the TTFont for which you want to create a name.
If 'font' is None, we only return NameRecords for legacy Macintosh;
in that case, the result will be None for names that need to
be encoded with an 'ltag' table.

See the section “The language identifier” in Apple’s specification:
https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html
Nascii)defaultstricterrorsr   zUcannot store language %s into 'ltag' table without having access to the TTFont object)_MAC_LANGUAGE_CODESr   r`   _MAC_LANGUAGE_TO_SCRIPTr   r   rk   UnicodeEncodeErrortablesr   ZaddTagr   rg   )	r0   r=   r   fontZmacLangZ	macScriptencodingZ_r   s	   &&&&     r   r   r     s    * "%%hnn&67G'++G4Iy4q)gF	x8AD!Y@@ {{v&<"*6"22D< aDKK,ABB9;CD	
  " 		s   C C%$C%c                  sh    ] tR tRtRR ltR tR tR tRR R lltRR lt	]t
R	 tR
 tR tR tRtR# )r$   i  c                sZ    \        V P                  V P                  V P                  V4      # )zReturns the Python encoding name for this name entry based on its platformID,
platEncID, and langID.  If encoding for these values is not known, by default
'ascii' is returned.  That can be overriden by passing a value to the default
argument.
)r   r?   r@   rA   )r   r      &&r   r   ZNameRecord.getEncoding  s!     4??DNNDKKQQr   c                	s*    V P                  R 4      R9   # )N)	utf_16_beZucs2ber   latin1r
   rY   rZ   r   encodingIsUnicodeCompatibleZ&NameRecord.encodingIsUnicodeCompatible  s    %)SSSr   c                	s&    V P                  R R7      # )Zbackslashreplacer   )toStrrY   rZ   r   __str__ZNameRecord.__str__  s    zz!3z44r   c                	s|    V P                   ^ 8H  ;'       g'    V P                   ^8H  ;'       d    V P                  R9   # )r    )r    rK   
   )r?   r@   rY   rZ   r   	isUnicodeZNameRecord.isUnicode  s:    !# 
 
OOq AAT^^z%A	
r   c               s     V ^8  d   QhRRRR/# )r<   r   re   rB   rC   rD   rE   r   rF   ZNameRecord.__annotate__	  s     > > >3 >r   c                s  a R R loV P                  4       pV P                  p\        V\        4      '       Ed   VR8X  Ed   \	        V4      ^,          ^8X  d   \        VR,          4      ^ 8X  d   VRR pM\        ;QJ d(    V3R l\        V4       4       F  '       d   K   RM	  RM! V3R l\        V4       4       4      '       d   RV,           pM~\        V^ ,          4      ^ 8X  dh   \        ;QJ d&    V3R	 lVR
,           4       F  '       d   K   RM	  RM! V3R	 lVR
,           4       4      '       d   \        R VR
,           4       4      p\        W2VR7      p\        ;QJ d(    V3R l\        V4       4       F  '       d   K   RM	  RM! V3R l\        V4       4       4      '       d    RP                  R VR,           4       4      pV# )a  
If self.string is a Unicode string, return it; otherwise try decoding the
bytes in self.string to a Unicode string using the encoding of this
entry as returned by self.getEncoding(); Note that  self.getEncoding()
returns 'ascii' if the encoding is unknown to the library.

Certain heuristics are performed to recover data from bytes that are
ill-formed in the chosen encoding, or that otherwise look misencoded
(mostly around bad UTF-16BE encoded bytes, or bytes that look like UTF-16BE
but marked otherwise).  If the bytes are ill-formed and the heuristics fail,
the error is handled according to the errors parameter to this function, which is
passed to the underlying decode() function; by default it throws a
UnicodeDecodeError exception.

Note: The mentioned heuristics mean that roundtripping a font to XML and back
to binary might recover some misencoded data whereas just loading the font
and saving it back will not change them.
c               rJ   )r<   br>   rB   ZboolrC   rD   rE   r   rF   Z*NameRecord.toUnicode.<locals>.__annotate__  s     	H 	Hs 	Ht 	Hr   c                s@    V ^ 8  ;'       d    V ^~8*  ;'       g    V R9   # )i    )i	   r   i   rC   )r   rZ   r   isasciiZ%NameRecord.toUnicode.<locals>.isascii  s&    I++!t)GG5G0GGr   r   Nc              3  s   <"   T F5  w  rV^,          '       d   \        V4      ^ 8H  MS! \        V4      4      x  K7  	  R# 5ir<   Nr   )rn   r/   r   r   rr   r   rs   'NameRecord.toUnicode.<locals>.<genexpr>2  s8      -DA $%q55
aggaj.AA-s   =A FT    c              3  sF   <"   T F  pS! \        V4      4      x  K  	  R # 5ir   r   )rn   r   r   s   & r   rs   r   7  s       1-7
##Zrt   :rK   NNc              3  sX   "   T F   pR \        \        V4      4      ,           x  K"  	  R# 5i)r   N)r   r   )rn   r      & r   rs   r   :  s!     "S
15771:+>#>#>
s   (*r   r   c              3  s   <"   T F4  w  rV^,          ^ 8X  d   \        V4      ^ 8H  MS! \        V4      4      x  K6  	  R# 5ir   )Zord)rn   r/   cr   rr   r   rs   r   @  s6      
GXtq1q5A:CFaK73q6?:GXs   <? c              3  s$   "   T F  qx  K  	  R # 5ir   rC   )rn   r   r   r   rs   r   E  s     51Qs   :rK   Nr<   i)r   r'   rd   rf   r"   r   ZallZ	enumerater   r   Zjoin)r   r   r   r'   r   s   &&  @r   rN   ZNameRecord.toUnicode	  sp   (	H ##% vu%%K'Fa1$ vbz"a' %f- %f-   #q(SS 1-3BZ1SSS 1-3BZ1 . . #"Sr
"SSv@ 3 
GPQWGX
333 
GPQWGX
 
 

 WW5t55Fr   c                sN    \        V P                  V P                  4       VR7      # )a  If self.string is a bytes object, return it; otherwise try encoding
the Unicode string in self.string to bytes using the encoding of this
entry as returned by self.getEncoding(); Note that self.getEncoding()
returns 'ascii' if the encoding is unknown to the library.

If the Unicode string cannot be encoded to bytes in the chosen encoding,
the error is handled according to the errors parameter to this function,
which is passed to the underlying encode() function; by default it throws a
UnicodeEncodeError exception.
r   )r   r'   r   )r   r   r   r   r3   ZNameRecord.toBytesI  s      t{{T-=-=-?OOr   c                	s4    V P                  4       pRV P                  3RV P                  3RV P                  3R\        V P                  4      3.pVe   V P                  4       '       g   VP                  RVR J34       VP                  RV4       VP                  4        Ve   VP                  V4       MVP                  V P                  4       VP                  4        VP                  R4       VP                  4        R #   \         d    R p ELi ; i)Nr=   r?   r@   rA   unicoder8   )rN   rO   r=   r?   r@   ZhexrA   r   r(   ZbegintagZnewlineZwriteZ	write8bitr'   Zendtag)r   r6   r*   rP   r:   s   &&&  r   r5   ZNameRecord.toXMLX  s    	^^%F t{{#4??+$..)s4;;'(	
 >!A!A!C!CLL)V4%789e,LL T[[)l#) " 	F	s   D DDc                	s   \        VR ,          4      V n        \        VR,          4      V n        \        VR,          4      V n        \        VR,          4      V n        \        V4      P                  4       pV P                  4       pV P                  4       '       g"   \        VP                  RR4      4      '       d   VP                  V4      V n        R# VP                  R4      V n        R# )r=   r?   r@   rA   r   ZFalser   N)r	   r=   r?   r@   rA   r   Zstripr   r   r   Zencoder'   )r   r0   r:   r;   r*   Zsr   s   &&&&&  r   r9   ZNameRecord.fromXMLq  s    uX/"5#67!%"45uX/G""$##%++--IIi)2
 2
 ((8,DK ((8,DKr   c                	s   \        V 4      \        V4      8w  d   \        #  V P                  V P                  V P                  V P
                  3pVP                  VP                  VP                  VP
                  3p Y P                  4       3,           pY1P                  4       3,           pY#8  #   \         d
    \        u # i ; i  \         d*   p\        P                  R T,          4        Rp?Y#8  # Rp?ii ; i)z'NameRecord sorting failed to encode: %sN)ri   ZNotImplementedr?   r@   rA   r=   ZAttributeErrorr3   r   r   r    )r   ZotherZ	selfTupleZ
otherTupleZer   r   __lt__ZNameRecord.__lt__  s    :e$!!	"	I   	J	E!\\^$55I#}}&88J %%%  	"
 "!	" " 	E II?!CDD %%	Es*   AB0 >.C 0CCC;C66C;c                	sV    R V P                   V P                  V P                  3,          # )z4<NameRecord NameID=%d; PlatformID=%d; LanguageID=%d>)r=   r?   rA   rY   rZ   r   __repr__ZNameRecord.__repr__  s*    EKKOOKKI
 
 	
r   )rA   r=   r@   r?   r'   N)r   )r   )rj   r   r   r   r   r   r   r   rN   r3   r   r5   r9   r   r   r   rC   r   r   r$   r$     s@    RT5

>@P E2-#&J
r   r$   i6  Zafi  Zsqi  Zgswi^  Zami  zar-DZi<  zar-BHi  Zari  zar-IQi,  zar-JOi4  zar-KWi0  zar-LBi  zar-LYi  Zaryi   zar-OMi@  zar-QAi  zar-SAi(  zar-SYi  Zaebi8  zar-AEi$  zar-YEi+  ZhyiM  Zasi,  zaz-Cyrli,  Zazim  Zbai-  Zeui#  ZbeiE  ZbniE  zbn-INi   zbs-Cyrli  Zbsi~  Zbri  Zbgi  Zcai  zzh-HKi  zzh-MOi  Zzhi  zzh-SGi  zzh-TWi  Zcoi  Zhri  zhr-BAi  Zcsi  Zdai  Zprsie  Zdvi  znl-BEi  Znli	  zen-AUi	(  zen-BZi	  zen-CAi	$  zen-029i	@  zen-INi	  zen-IEi	   zen-JMi	D  zen-MYi	  zen-NZi	4  zen-PHi	H  zen-SGi	  zen-ZAi	,  zen-TTi	  zen-GBrM   Zeni	0  zen-ZWi%  Zeti8  Zfoid  Zfili  Zfii  zfr-BEi  zfr-CAi  Zfri  zfr-LUi  zfr-MCi  zfr-CHib  ZfyiV  Zgli7  Zkai  zde-ATi  Zdei  zde-LIi  zde-LUi  zde-CHi  Zelio  ZkliG  Zguih  Zhai  Zhei9  Zhii  Zhui  Zisip  Zigi!  Zidi]  Ziui]  ziu-Latni<  Zgai4  Zxhi5  Zzui  Ziti  zit-CHi  ZjaiK  Zkni?  ZkkiS  Zkmi  Zquci  ZrwiA  ZswiW  Zkoki  Zkoi@  ZkyiT  Zloi&  Zlvi'  Zlti.  Zdsbin  Zlbi/  Zmki>  zms-BNi>  ZmsiL  Zmli:  Zmti  Zmiiz  ZarniN  Zmri|  ZmohiP  ZmniP  zmn-CNia  Znei  Znbi  Znni  ZociH  Zoric  Zpsi  Zpli  Zpti  zpt-PTiF  Zpaik  zqu-BOik  zqu-ECik  Zqui  Zroi  Zrmi  Zrui;$  Zsmni;  zsmj-NOi;  Zsmji;  zse-FIi;  Zsei;  zse-SEi;   Zsmsi;  zsma-NOi;  iO  Zsai  z
sr-Cyrl-BAi  Zsri  z
sr-Latn-BAi  zsr-Latnil  Znsoi2  Ztni[  Zsii  Zski$  Zsli
,  zes-ARi
@  zes-BOi
4  zes-CLi
$  zes-COi
  zes-CRi
  zes-DOi
0  zes-ECi
D  zes-SVi
  zes-GTi
H  zes-HNi
  zes-MXi
L  zes-NIi
  zes-PAi
<  zes-PYi
(  zes-PEi
P  zes-PRi
  Zesi
  i
T  zes-USi
8  zes-UYi
   zes-VEi  zsv-FIi  ZsviZ  Zsyri(  Ztgi_  ZtzmiI  ZtaiD  ZttiJ  Ztei  ZthiQ  Zboi  ZtriB  Ztki  Zugi"  Zuki.  Zhsbi   ZuriC  zuz-CyrliC  Zuzi*  ZviiR  Zcyi  Zwoi  Zsahix  Ziiij  ZyoZnozzh-HantZfaZczZyizaz-ArabZmoZksZkuZsdZmyZtlzms-ArabZtiZomZsoZrnZnyZmgZeoZlaZgnZayZdzZjvZsuZgdZgvZtoz
el-polytonc                  s     ] tR tRtRtR tRtR# )ry   i  c                	s$    \        4       V n        R # r   )r{   r|   rY   rZ   r   r   ZNameRecordVisitor.__init__  s    E	r   )r|   N)ZGSUBZGPOSfvarCPALSTAT)rj   r   r   r   TABLESr   r   rC   r   r   ry   ry     s    5Fr   ry   c                s<    V P                   P                  V4       R # r   )r|   r}   r~   objZattrZvalues   &&&&r   rz   rz     s     LLUr   c                s@   R F)  p\        W4      pV P                  P                  V4       K+  	  VP                  ^ 8X  g   VP                  ^ 8X  d   R# V P                  P                  \        VP                  VP                  VP                  ,           4      4       R# )FeatUILabelNameIDN)r   ZFeatUITooltipTextNameIDZSampleTextNameID)rm   r|   r}   ZFirstParamUILabelNameIDZNumNamedParametersupdater!   r   rS   r   rz   rz     s    T" U ""a'3+A+AQ+FLL''''#*@*@@	
r   r   c                sR   VP                    F^  pVP                  R 8w  d&   V P                  P                  VP                  4       V P                  P                  VP                  4       K`  	  VP
                   F(  pV P                  P                  VP                  4       K*  	  R# )i  N)Z	instancesZpostscriptNameIDr|   r}   ZsubfamilyNameIDZaxesZ
axisNameID)r~   r   ZinstZaxisrS   r   rz   rz     st      F*LLT223--. 
 ) r   r   c                s    VP                   ^8X  dM   V P                  P                  VP                  4       V P                  P                  VP                  4       R# R# )rK   N)Zversionr|   r   ZpaletteLabelsZpaletteEntryLabels)r~   r   r   r   rz   rz     sC    
{{aC--.C223 r   c                s    \        V R 4      '       d   R# Wn        V P                   F'  pWA9   g   K  V P                  ! W,          .VO5/ VB  K)  	  V =R# )r   F)Zhasattrr   r   rz   )r~   r   rv   Zkwargsr   s   &&*, r   rz   rz     sL    wL~~;MM$)5d5f5  	r   r   )ZSubfamilyNameID)ZUINameID)ZElidedFallbackNameID)Z
AxisNameID)ZValueNameID)ZFeatureNameID)ZSettingNameID)>Z
__future__r   ZfontTools.miscr   ZfontTools.misc.textToolsr   r   r   r   r   r   r	   ZfontTools.misc.encodingToolsr   ZfontTools.ttLibr   ZfontTools.ttLib.ttVisitorr   Z	fontToolsr   ZfontTools.ttLib.tables.otTablesr   ZotTablesZfontTools.ttLib.tablesr   r   r   r   ZloggingZ	getLoggerrj   r   r#   r2   r   r   rk   r   r   Zobjectr$   Z_WINDOWS_LANGUAGESZ_MAC_LANGUAGESru   r`   r   r   r   ry   Zregister_attrsZFeatureParamsSizeZFeatureParamsStylisticSetr   Z
AxisRecordZ	AxisValueZFeatureNameZSettingrz   ZregisterZFeatureParamsCharacterVariantsZgetTableClassZTTFont)Zcoder   s   00r   <module>r      s   " "   5 $ /  2 2 +    !  !!"23u\.. up	*1hu
 u
DU
DU
DU EU D	U
 GU GU DU GU GU GU GU GU EU GU GU  G!U" G#U$ E%U& G'U( G)U* D+U, D-U. I/U0 D1U2 D3U4 D5U6 D7U8 D9U: G;U< I=U> D?U@ DAUB DCUD DEUF GGUH GIUJ DKUL GMUN GOUP DQUR DSUT GUUV DWUX DYUZ E[U\ D]U^ G_U` DaUb GcUd GeUf GgUh HiUj GkUl GmUn GoUp GqUr GsUt GuUv GwUx GyUz G{U| G}U~ DU@ GAUB DCUD DEUF EGUH DIUJ GKUL GMUN DOUP GQUR GSUT GUUV DWUX DYUZ D[U\ G]U^ D_U` GaUb GcUd GeUf DgUh DiUj DkUl DmUn DoUp DqUr DsUt DuUv DwUx DyUz D{U| I}U~ DU@ DAUB DCUD DEUF GGUH DIUJ DKUL DMUN DOUP EQUR DSUT DUUV EWUX DYUZ D[U\ D]U^ D_U` DaUb EcUd DeUf DgUh GiUj DkUl DmUn DoUp DqUr EsUt DuUv EwUx DyUz G{U| D}U~ DU@ DAUB DCUD DEUF DGUH DIUJ DKUL GMUN DOUP GQUR GSUT DUUV DWUX DYUZ D[U\ E]U^ H_U` EaUb GcUd DeUf GgUh EiUj HkUl EmUn DoUp LqUr DsUt LuUv IwUx EyUz D{U| D}U~ DU@ DAUB GCUD GEUF GGUH GIUJ GKUL GMUN GOUP GQUR GSUT GUUV GWUX GYUZ G[U\ G]U^ G_U` GaUp DqUr DsUt GuUv GwUx GyUz G{U| D}U~ EU@ DAUB ECUD DEUF DGUH DIUJ DKUL DMUN DOUP DQUR DSUT DUUV EWUX DYUZ I[U\ D]U^ D_U` DaUb DcUd EeUf DgUh DiU pxtxtx tx t	x
 tx tx tx tx tx tx x x x x x  !x" #x$ %x& 'x( 	)x* +x, -x. /x0 1x2 3x4 5x6 7x8 9x: ;x< =x> ?x@ AxB CxD ExF GxH IxJ KxL MxN OxP QxR SxT UxV WxX YxZ [x\ ]x^ _x` axb cxd 	exf 	gxh ixj kxl mxn oxp qxr sxt uxv wxx yxz {x| }x~ x@ AxB CxD ExF GxH IxJ KxL MxN OxP QxR SxT UxV WxX YxZ [x\ ]x^ _x` axb cxd exf gxh ixj 	kxl mxn oxp qxr sxt uxv wxx yxz {x| }x~ x@ AxB CxD ExF GxH IxJ KxL MxN OxP QxR SxT UxV WxX YxZ [x\ ]x^ _x` axb cxd exf gxh ixj kxl mxn oxx *<)A)A)C)C:4DJJL$)C  =K<P<P<RS<Rjdtzz|T)<RS xqxqx qx q	x
 qx qx qx qx qx qx x x x x x  !x" #x$ %x& 'x( )x* +x, -x. /x0 1x2 3x4 5x6 7x8 9x: ;x< =x> ?x@ AxB CxD ExF GxH IxJ KxL MxN OxP QxR SxT UxV WxX YxZ [x\ ]x^ _x` axb cxd exf gxh ixj kxl mxn oxp qxr sxt uxv wxx yxz {x| }x~ x@ AxB CxD ExF GxH IxJ KxL MxN OxP QxR SxT UxV WxX YxZ [x\ ]x^ _x` axb cxd exf gxh ixj kxl mxn oxp qxr sxt uxv wxx yxz {x| }x~ x@ AxB CxD ExF GxH IxJ KxL MxN OxP QxR SxT UxV WxX YxZ [x\ ]x^ _x` axb cxd exf gxh ixj kxl mxn ox v	  !!		#	#%9:		+	+];	12			o.			-.			12			-.

 HCCD E E//78* 9* E//784 94 ELL)	 *	O Ts   bb
