+
    f7i(  c                   s,   ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIHtHt ]P2                  ! R4      t]R.,           tR tR tRR lt]R8X  d   ]P@                  ! ]! 4       4       R# R# )i    N)StringIO)Path)configLogger)addOpenTypeFeaturesFromString)FeatureLibError)Lexer)makeOutputFileName)TTFont
TTLibError)Parser)TABLES	VoltToFeazfontTools.feaLibZcmapc                s    V ^ ,          \         P                  9  d   R# \        ;QJ d#    R V R,           4       F  '       g   K   RM	  RM! R V R,           4       4      '       d   R# R# )z9Check if the glyph name is valid according to FEA syntax.Tc              3   sF   "   T F  q\         P                  9  x  K  	  R # 5iN)r   CHAR_NAME_CONTINUATION_).0c   & A/usr/lib64/python3.14/site-packages/fontTools/voltLib/__main__.py	<genexpr>Z)invalid_fea_glyph_name.<locals>.<genexpr>   s     
D8aE1118s   !:i   NNF)r   CHAR_NAME_START_any)names   &r   invalid_fea_glyph_namer      sF    Awe,,,
s
D48
Dsss
D48
DDD    c                s    Rp\        V 4       F[  w  r#V^ 8X  d(   V\        P                  9  d   VRV,           ,          pK3  V\        P                  9  d   VR,          pKS  W,          pK]  	  V# )zFSanitize the glyph name to ensure it is valid according to FEA syntax.Z aZ_)Z	enumerater   r   r   )r   Z	sanitizedZir   s   &   r   sanitize_glyph_namer      s`    I$6au555q Ie333INI   r   c           
     s
   \         P                  ! RR7      pVP                  RRR\        R7       VP                  RRR	R
\        R7       VP                  RRRRR\        R7       VP                  RRR\        RRR7       VP                  RRRRR7       VP                  RRRR7       VP                  RRR R!^ R"7       VP                  R#R$R%RR7       VP                  V 4      p. R?Op\        V\        \        V4      ^,
          VP                  4      ,          R&7       VP                  ;'       g3    \        \        VP                  ;'       g    VP                  4      4      p\        P                  R'V R(24       VP                  pR)p \!        V4      pR*V9   d-   \#        VR*,          P$                  P'                  R+4      4      pM\        P)                  R,4       ^# Vf?   VP                  '       g   \        P)                  R-4       ^# \!        VP                  4      pVP-                  4       pR)p\.        ;QJ d    R. V 4       F  '       g   K   R/M	  R0M! R. V 4       4      '       dv   . pV F\  p	\1        V	4      '       d8   \3        V	4      p	\5        V4      \5        V4      ,          p
W9   d   R1V	,           p	K  VP7                  V	4       K^  	  VP9                  V4       \;        V4      P=                  4       p\        P                  R24       \?        W4      p VPA                  VPB                  R/R37      pTP                  pTPL                  '       dY   TPO                  R94      p\        P                  R:T R(24       \Q        TR;4      ;_uu_ 4       pTPS                  T4       R)R)R)4       \        P                  R<4        \U        TTTTPB                  R=7       TPX                  '       d   R@ F  pTT9   g   K  TT K  	  T'       dP   ^ R)I-pTP]                  4       pTP_                  T4       \!        T4      pTP9                  T4       . TR>,          n0        TP_                  T4       R)#   \*         d     ELi ; i  \D         d   pTPF                  '       d   h \I        TPJ                  ^ ,          R4R)4      pR5T R62pT'       d(   Tw  ppp\        P)                  T R7T R7T R8T 24       M\        P)                  T4        R)p?^# R)p?ii ; i  + '       g   i     ELw; i  \V         d4   pTPF                  '       d   h \        P)                  T4        R)p?^# R)p?ii ; i)Az4Build tables from a MS VOLT project into an OTF fontz*Use fontTools to compile MS VOLT projects.)ZdescriptioninputZINPUTz*Path to the input font/VTP file to process)metavarhelptypez-fz--fontZ
INPUT_FONTz/Path to the input font (if INPUT is a VTP file)z-oz--outputoutputZOUTPUTzPath to the output font.)Zdestr   r   r   z-tz--tablesZ	TABLE_TAGZ+z!Specify the table(s) to be built.)r   ZchoicesZnargsr   z-Fz--debug-feature-filez)Write the generated feature file to disk.Z
store_true)r   actionz--shipz+Remove source VOLT tables from output font.z-vz	--verbosez?Increase the logger verbosity. Multiple -v options are allowed.Zcount)r   r   Zdefaultz-Tz--tracebackzshow traceback for exceptions.)ZlevelzCompiling MS VOLT to 'Z'NTSIVzutf-8z"TSIV" table is missingzPlease provide an input fontc              3   s8   "   T F  p\        V4      x  K  	  R # 5ir   )r   )r   nr   r   r   Zmain.<locals>.<genexpr>   s     
9j!!$$js   TFr   zConverting VTP data to FEA)Zignore_unsupported_settingslocationZ"z" is not supportedZ:z: z.feazWriting FEA to 'Zwz Compiling FEA to OpenType tables)ZfilenametablesZpost)ZWARNINGZINFOZDEBUG)r    ZTSISZTSIPZTSID)1argparseZArgumentParserZadd_argumentr   SUPPORTED_TABLESZ
parse_argsr   ZminZlenZverboser   r   fontr   logZinfor   r    ZdataZdecodeZerrorr   ZgetGlyphOrderr   r   r   ZsetZappendZsetGlyphOrderr	   Zparser   Zconvertr#   ZNotImplementedErrorZ	tracebackZgetattrargsZdebug_feature_fileZwith_suffixZopenZwriter   r   ZshipioZBytesIOZsaveZ
extraNames)r(   ZparserZoptionsZlevelsZoutput_fontZfile_or_pathr&   Z
glyphOrderZtempGlyphOrderr!   ZexistingZdocZ	converterZfeaZer"   ZmessageZpathZlineZcolumnZfea_filenameZfpZtagr)   Zfs   &                        r   mainr*   ,   s   $$@F 9	   >   '    0   8	   :  
 N   -	   %G)Fvc#f+/7??CDE..  D7<<8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
s
9j
9sss
9j
999A%a(('*~.Z@maA!!!$  	>*


$
$
&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   =Q4 Q4 !R T
T. 4RRTA;TTT+	.U,9(U''U,Z__main__r   )!r$   ZloggingZsysr)   r    Zpathlibr   Z	fontToolsr   ZfontTools.feaLib.builderr   ZfontTools.feaLib.errorr   ZfontTools.feaLib.lexerr   ZfontTools.misc.cliToolsr   ZfontTools.ttLibr   r   ZfontTools.voltLib.parserr	   ZfontTools.voltLib.voltToFear
   r   Z	getLoggerr'   r%   r   r   r*   Z__name__Zexit) r   r   <module>r+      sx      
   " B 2 ( 6 . + 9*+VH$ ^B zHHTV r   