
    (ph(                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJr  S SKJrJr  \R2                  " S5      r\S/-   rS rS rSS jr\S:X  a  \R@                  " \" 5       5        gg)    N)StringIO)Path)configLogger)addOpenTypeFeaturesFromString)FeatureLibError)Lexer)makeOutputFileName)TTFont
TTLibError)Parser)TABLES	VoltToFeazfontTools.feaLibcmapc                 j    U S   [         R                  ;  a  g[        S U SS  5       5      (       a  gg)z9Check if the glyph name is valid according to FEA syntax.r   Tc              3   F   #    U  H  o[         R                  ;  v   M     g 7fN)r   CHAR_NAME_CONTINUATION_).0cs     M/var/www/html/venv/lib/python3.13/site-packages/fontTools/voltLib/__main__.py	<genexpr>)invalid_fea_glyph_name.<locals>.<genexpr>   s     
D8aE1118s   !   NF)r   CHAR_NAME_START_any)names    r   invalid_fea_glyph_namer      s4    Awe,,,

D48
DDD    c                     Sn[        U 5       HH  u  p#US:X  a  U[        R                  ;  a
  USU-   -  nM)  U[        R                  ;  a  US-  nMD  X-  nMJ     U$ )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&      s`    I$6au555q Ie333INI   r   c           
      	   [         R                  " SS9nUR                  SSS[        S9  UR                  SSS	S
[        S9  UR                  SSSSS[        S9  UR                  SSS[        SSS9  UR                  SSSSS9  UR                  SSSS9  UR                  SSS S!S"S#9  UR                  S$S%S&SS9  UR                  U 5      n/ S'Qn[        U[        [        U5      S(-
  UR                  5         S)9  UR                  =(       d1    [        [        UR                  =(       d    UR                  5      5      n[        R                  S*U S+35        UR                  nS,n [!        U5      nS-U;   a(  [#        US-   R$                  R'                  S.5      5      nO[        R)                  S/5        g(Uc<  UR                  (       d  [        R)                  S05        g([!        UR                  5      nUR-                  5       nS,n[/        S1 U 5       5      (       ap  / nU HW  n	[1        U	5      (       a3  [3        U	5      n	[5        U5      [5        U5      -  n
X;   a  S2U	-   n	X;   a  M  UR7                  U	5        MY     UR9                  U5        [;        U5      R=                  5       n[        R                  S35        [?        X5      n URA                  URB                  S4S59nUR                  nURL                  (       aP  URO                  S;5      n[        R                  S<U S+35        [Q        US=5       nURS                  U5        S,S,S,5        [        R                  S>5         [U        UUUURB                  S?9  URX                  (       a  S@ H  nUU;   d  M  UU	 M     U(       aK  S"S,K-nUR]                  5       nUR_                  U5        [!        U5      nUR9                  U5        / USA   l0        UR_                  U5        g,! [*         a     GN[f = f! [D         a  nURF                  (       a  e [I        URJ                  S"   S6S,5      nS7U S83nU(       a'  Uu  nnn[        R)                  U S9U S9U S:U 35        O[        R)                  U5         S,nAg(S,nAff = f! , (       d  f       GNa= f! [V         a1  nURF                  (       a  e [        R)                  U5         S,nAg(S,nAff = f)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,   r7   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   8   #    U  H  n[        U5      v   M     g 7fr   )r   )r   ns     r   r   main.<locals>.<genexpr>   s     
9j!!$$js   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   convertrI   NotImplementedError	tracebackgetattrargsdebug_feature_filewith_suffixopenwriter   r   shipioBytesIOsave
extraNames)re   parseroptionslevelsoutput_fontfile_or_pathrV   
glyphOrdertempGlyphOrderrA   existingdoc	converterfeaerD   messagepathlinecolumnfea_filenamefptagrk   fs                            r   mainr   ,   s   $$@F 9	   >   '    0   8	   :  
 N   -	   %G)Fvc#f+/7??CDE.. D7<<87==9%K HH%k]!45==LDl#T>#DL$5$5$<$<W$EFLII/0
 |||II45gll# ##%JN

9j
999A%a(('*~.Z@maA m!!!$  	>*


$
$
&CHH)*#$IDQ ==L!!"..v6#L>34,$HHSM % HH/0%!>>		
 ||3Cd{I 4
 JJL		!ay:&"$VIIk_  >  
166!9j$7aS*+!)D$IIavQvhb	:;IIg
  %$  		!	sU   '8P  P P 5R!%R3 
PP
RA5RR!
R03
S.='S))S.__main__r   )!rN   loggingsysrk   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   	getLoggerrW   rQ   r   r&   r   __name__exit r   r   <module>r      sx      
   " B 2 ( 6 . + 9*+VH$ ^B zHHTV r   