
    kh(                        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     l/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/fontTools/voltLib/__main__.py	<genexpr>z)invalid_fea_glyph_name.<locals>.<genexpr>   s     
Da1E111
Ds      NF)r   CHAR_NAME_START_any)names    r   invalid_fea_glyph_namer      s1    Awe,,,

D4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6au555q Ie333INI 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                  d45      }|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!!$
9s   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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 	%A%a('*~.Z@8maA 8m!!!$	% 	>*


$
$
&CHH)*#t$IDQ ==L!!"..v6#L>34,$ 	HHSM	 HH/0%!>>		
 ||3 	Cd{I	
 JJL		!ay:&"$VIIk_  >  
166!9j$7aS*+!)D$IIavQvhb	:;IIg
 	 	  		!	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*+VH$ ^B zCHHTV r   