Ë
    ÚÍ:j(  ã                   ó  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZ  ej2                  d«      Zedgz   Zd„ Zd„ Zdd„Zedk(  r ej@                   e«       «       yy)é    N)ÚStringIO)ÚPath)ÚconfigLogger)ÚaddOpenTypeFeaturesFromString)ÚFeatureLibError)ÚLexer)ÚmakeOutputFileName)ÚTTFontÚ
TTLibError)ÚParser)ÚTABLESÚ	VoltToFeazfontTools.feaLibÚcmapc                 ó\   — | d   t         j                  vryt        d„ | dd D «       «      ryy)z9Check if the glyph name is valid according to FEA syntax.r   Tc              3   ó@   K  — | ]  }|t         j                  v–— Œ y ­w©N)r   ÚCHAR_NAME_CONTINUATION_)Ú.0Úcs     úo/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/voltLib/__main__.pyú	<genexpr>z)invalid_fea_glyph_name.<locals>.<genexpr>   s   è ø€ Ò
D°aˆ1”E×1Ñ1Ô1Ñ
Dùs   ‚é   NF)r   ÚCHAR_NAME_START_Úany)Únames    r   Úinvalid_fea_glyph_namer      s1   € àˆA�w”e×,Ñ,Ñ,ØÜ
Ñ
D¸4ÀÀ¸8Ô
DÔDØØó    c                 óª   — d}t        | «      D ]B  \  }}|dk(  r|t        j                  vr	|d|z   z  }Œ&|t        j                  vr|dz  }Œ>||z  }ŒD |S )zFSanitize the glyph name to ensure it is valid according to FEA syntax.Ú r   ÚaÚ_)Ú	enumerater   r   r   )r   Ú	sanitizedÚir   s       r   Úsanitize_glyph_namer%      si   € à€IÜ˜$“ò ‰ˆˆ1Ø�Š6�aœu×5Ñ5Ñ5Ø˜˜q™Ñ ‰IØ”e×3Ñ3Ñ3Ø˜Ñ‰Ià˜‰N‰Iðð Ðr   c           
      ó”	  — t        j                  d¬«      }|j                  dddt        ¬«       |j                  ddd	d
t        ¬«       |j                  dddddt        ¬«       |j                  dddt        dd¬«       |j                  dddd¬«       |j                  ddd¬«       |j                  ddd d!d"¬#«       |j                  d$d%d&d¬«       |j                  | «      }g d'¢}t        |t        t        |«      d(z
  |j                  «         ¬)«       |j                  xs, t        t        |j                  xs |j                  «      «      }t        j                  d*|› d+�«       |j                  }d,}	 t!        |«      }d-|v r(t#        |d-   j$                  j'                  d.«      «      }nt        j)                  d/«       y(	 |€7|j                  st        j)                  d0«       y(t!        |j                  «      }|j-                  «       }d,}t/        d1„ |D «       «      rfg }|D ]N  }	t1        |	«      r0t3        |	«      }	t5        |«      t5        |«      z  }
|	|
v r
d2|	z   }	|	|
v rŒ
|j7                  |	«       ŒP |j9                  |«       t;        |«      j=                  «       }t        j                  d3«       t?        ||«      }	 |jA                  |jB                  d4¬5«      }|j                  }|jL                  rP|jO                  d;«      }t        j                  d<|› d+�«       tQ        |d=«      5 }|jS                  |«       d,d,d,«       t        j                  d>«       	 tU        ||||jB                  ¬?«       |jX                  rd@D ]
  }||v sŒ||= Œ |rKd"d,l-}|j]                  «       }|j_                  |«       t!        |«      }|j9                  |«       g |dA   _0        |j_                  |«       y,# t*        $ r Y �Œ8w xY w# tD        $ ru}|jF                  r‚ tI        |jJ                  d"   d6d,«      }d7|› d8�}|r'|\  }}}t        j)                  |› d9|› d9|› d:|› �«       nt        j)                  |«       Y d,}~y(d,}~ww xY w# 1 sw Y   �ŒDxY w# tV        $ r,}|jF                  r‚ t        j)                  |«       Y d,}~y(d,}~ww xY w)Bz4Build tables from a MS VOLT project into an OTF fontz*Use fontTools to compile MS VOLT projects.)ÚdescriptionÚinputÚINPUTz*Path to the input font/VTP file to process)ÚmetavarÚhelpÚtypez-fz--fontÚ
INPUT_FONTz/Path to the input font (if INPUT is a VTP file)z-oz--outputÚoutputÚOUTPUTzPath to the output font.)Údestr*   r+   r,   z-tz--tablesÚ	TABLE_TAGú+z!Specify the table(s) to be built.)r*   ÚchoicesÚnargsr+   z-Fz--debug-feature-filez)Write the generated feature file to disk.Ú
store_true)r+   Úactionz--shipz+Remove source VOLT tables from output font.z-vz	--verbosez?Increase the logger verbosity. Multiple -v options are allowed.Úcountr   )r+   r6   Údefaultz-Tz--tracebackzshow traceback for exceptions.)ÚWARNINGÚINFOÚDEBUGr   )ÚlevelzCompiling MS VOLT to 'ú'NÚTSIVzutf-8z"TSIV" table is missingzPlease provide an input fontc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   )r   )r   Úns     r   r   zmain.<locals>.<genexpr>‰   s   è ø€ Ò
9¨Ô! !×$Ñ
9ùs   ‚r    zConverting VTP data to FEAT)Úignore_unsupported_settingsÚlocationú"z" is not supportedú:z: z.feazWriting FEA to 'Úwz Compiling FEA to OpenType tables)ÚfilenameÚtables)r>   ÚTSISÚTSIPÚTSIDÚpost)1ÚargparseÚArgumentParserÚadd_argumentr   ÚSUPPORTED_TABLESÚ
parse_argsr   ÚminÚlenÚverboser.   r	   Úfontr(   ÚlogÚinfor
   r   ÚdataÚdecodeÚerrorr   ÚgetGlyphOrderr   r   r%   ÚsetÚappendÚsetGlyphOrderr   Úparser   ÚconvertrG   ÚNotImplementedErrorÚ	tracebackÚgetattrÚargsÚdebug_feature_fileÚwith_suffixÚopenÚwriter   r   ÚshipÚioÚBytesIOÚsaveÚ
extraNames)rc   ÚparserÚoptionsÚlevelsÚoutput_fontÚfile_or_pathrT   Ú
glyphOrderÚtempGlyphOrderr@   ÚexistingÚdocÚ	converterÚfeaÚerB   ÚmessageÚpathÚlineÚcolumnÚfea_filenameÚfpÚtagri   Úfs                            r   Úmainr�   ,   sÎ  € ä×$Ñ$Ø@ô€Fð ×ÑØØØ9Üð	 ô ð ×ÑØØØØ>Üð ô ð ×ÑØØØØØ'Üð ô ð ×ÑØØØÜ ØØ0ð ô ð ×ÑØØØ8Øð	 ô ð ×ÑØØ:Øð ô ð
 ×ÑØØØNØØð ô ð ×ÑØØØ-Øð	 ô ð ×Ñ Ó%€Gâ)€FÜ�vœc¤# f£+°¡/°7·?±?ÓCÑDÕEà—.‘.ò ¤DÜ˜7Ÿ<™<Ò8¨7¯=©=Ó9ó%€Kô ‡H�HÐ% k ]°!Ð4Ô5à—=‘=€LØ€DðÜ�lÓ#ˆØ�T‰>Ü# D¨¡L×$5Ñ$5×$<Ñ$<¸WÓ$EÓF‰Lä�I‰IÐ/Ô0Øð ð €|Ø�|Š|Ü�I‰IÐ4Ô5ØÜ�g—l‘lÓ#ˆð ×#Ñ#Ó%€JØ€NÜ
Ñ
9¨jÔ
9Ô9ØˆØò 	%ˆAÜ% aÔ(Ü'¨Ó*�Ü˜~Ó.´°Z³Ñ@�Ø˜8‘mØ˜a™�Að ˜8’mà×!Ñ! !Õ$ð	%ð 	×Ñ˜>Ô*ä
�Ó
×
$Ñ
$Ó
&€Cä‡H�HÐ)Ô*Ü˜#˜tÓ$€IðØ×Ñ §¡ÈDÐÓQˆð —=‘=€LØ×!Ò!Ø"×.Ñ.¨vÓ6ˆÜ�‰Ð# L >°Ð3Ô4Ü�, Ó$ð 	¨Ø�H‰H�SŒM÷	ô ‡H�HÐ/Ô0ðÜ%ØØØ!Ø—>‘>õ		
ð ‡|‚|Ø3ò 	ˆCØ�dŠ{Ø˜‘Ið	ñ
 Ûà�J‰J‹LˆØ�	‰	�!ŒÜ�a‹yˆØ×Ñ˜:Ô&Ø"$ˆˆV‰Ôà‡I�IˆkÕøô_ ò Úðûô> ò 
Ø×ÒØÜ˜1Ÿ6™6 !™9 j°$Ó7ˆØ�a�SÐ*Ð+ˆÙØ!)ÑˆD�$˜Ü�I‰I˜˜˜a ˜v Q v h¨b°°	Ð:Õ;ä�I‰I�gÔÜûð
ú÷ 	ñ 	ûô ò Ø×ÒØÜ�	‰	�!ŒÜûð	úsP   Å:AO4 ËP Ì1RÍ!R Ï4	PÐ PÐ	RÐA+Q=Ñ=RÒRÒ	SÒ"SÓSÚ__main__r   )!rL   ÚloggingÚsysri   r   Úpathlibr   Ú	fontToolsr   ÚfontTools.feaLib.builderr   ÚfontTools.feaLib.errorr   ÚfontTools.feaLib.lexerr   ÚfontTools.misc.cliToolsr	   ÚfontTools.ttLibr
   r   ÚfontTools.voltLib.parserr   ÚfontTools.voltLib.voltToFear   r   Ú	getLoggerrU   rO   r   r%   r�   Ú__name__Úexit© r   r   ú<module>r’      s|   ðÛ Û Û 
Ý Ý å "Ý BÝ 2Ý (Ý 6ß .Ý +ß 9à€g×ÑÐ*Ó+€à˜V˜HÑ$Ð òòó^ðB ˆzÒØ€C‡H�H‰T‹VÕð r   