
    <`1                         d dl Z d dlZ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
Z
ddlmZmZ dZ	 d dlZn## e$ r 	 d dlZn# e$ r
ZY dZ[ndZ[ww xY wY nw xY w ej        d          Zd ZddZd	 Zd
 ZddZdS )    N)closing)partial   )font_to_quadraticfonts_to_quadraticzfontTools.cu2quc                  L    	 t          j                    S # t          $ r Y dS w xY w)Nr   )mp	cpu_countNotImplementedError     3lib/python3.11/site-packages/fontTools/cu2qu/cli.py
_cpu_countr      s5    |~~   qqs    
##c                 :   t          j        |           }t                              d|            t	          |fi |rJt                              d|           |r|                    |           d S |                                 d S |rt          | |           d S d S )NzConverting curves for %s	Saving %s)
ufo_moduleFontloggerinfor   save	_copytree)
input_pathoutput_pathkwargsufos       r   _font_to_quadraticr       s    
/*
%
%C
KK*J777'''' +K--- 	HH[!!!!!HHJJJJJ	 +*k*****+ +r   c                 r   t           j                            t           j                            t           j                            |                               } t           j                            t           j                            t           j                            |                              }| |k    S N)ospathnormcaseabspathrealpath)path1path2s     r   	_samepathr&   -   sr    GRW__RW-=-=e-D-DEEFFEGRW__RW-=-=e-D-DEEFFEE>r   c                     t          | |          rt                              d           d S t          j                            |          rt          j        |           t          j        | |           d S )Nz6input and output paths are the same file; skipped copy)	r&   r   debugr   r    existsshutilrmtreecopytree)r   r   s     r   r   r   4   sj    [)) MNNN	w~~k"" #k"""
OJ,,,,,r   c           
         t          j        d          }|                    ddt          j                   |                    dddd	
           |                    dddd           |                    ddt
          ddd           |                    dddd           |                                }|                    dddd           |                    d d!t          d"d#t                      d$d%&           |                                }|                    d'd(dd)d*+           |                    d,d-dd.d/+           |	                    |           }t          |                    d0           |j        sd1}n|j        d#k    rd2}nd3}t          j        |4           t          |j                  d#k    r|j        r|                    d5           |j        r|j        t&          j                                      st'          j                   n7t&          j                                      s|                    d6z             fd7|j        D             }n(|j        r	|j        g}ndgt          |j                  z  }t1          |j        dk    |j        |j        8          }|j        rt8                              d9           d: |j        D             }t=          |fi |r_t?          ||          D ]L\  }	}
t8                              d;|
           |
r|	                     |
           8|	                                  MdS t?          |j        |          D ]\  }}
|
rtC          ||
           dS |j"        d#k    r'tG          t          |j                  |j"                  nd#}|d#k    rtI          tJ          fi |}t8                              d<|           tM          tO          j(        |                    5 }|)                    |t?          |j        |                     ddd           dS # 1 swxY w Y   dS t?          |j        |          D ]\  }}
tK          ||
fi | dS )=z1Convert a UFO font from cubic to quadratic curvescu2qu)progz	--versionversion)actionr0   infiles+INPUTz%one or more input UFO source file(s).)nargsmetavarhelpz-vz	--verbosecountr   )r1   defaultz-ez--conversion-errorERRORNz<maxiumum approximation error measured in EM (default: 0.001))typer6   r9   r7   z--keep-directionreverse_directionstore_falsez$do not reverse the contour direction)destr1   r7   z-iz--interpolatable
store_truez@whether curve conversion should keep interpolation compatibility)r1   r7   z-jz--jobs?r   Nz9Convert using N multiple processes (default: %(default)s))r;   r5   r9   constr6   r7   z-oz--output-fileOUTPUTzsoutput filename for the converted UFO. By default fonts are modified in place. This only works with a single input.)r9   r6   r7   z-dz--output-dir	DIRECTORYz-output directory where to save converted UFOsz9Either ufoLib2 or defcon are required to run this script.WARNINGINFODEBUG)levelz2-o/--output-file can't be used with multile inputsz'%s' is not a directoryc                     g | ]?}t           j                            t           j                            |                    @S r   )r   r    joinbasename).0p
output_dirs     r   
<listcomp>zmain.<locals>.<listcomp>   sI     
 
 
 GLLRW%5%5a%8%899
 
 
r   )
dump_stats
max_err_emr<   zConverting curves compatiblyc                 6    g | ]}t          j        |          S r   )r   r   )rL   infiles     r   rO   zmain.<locals>.<listcomp>   s"    FFFF
''FFFr   r   zRunning %d parallel processes)*argparseArgumentParseradd_argument	fontTools__version__floatadd_mutually_exclusive_groupintr   
parse_argsr   errorverboseloggingbasicConfiglenr2   output_filerN   r   r    r)   mkdirisdirdictconversion_errorr<   interpolatabler   r   r   zipr   r   jobsminr   r   r   r	   Poolstarmap)argsparsermode_parseroutput_parseroptionsrH   output_pathsr   ufosr   r   r   ri   funcpoolrN   s                  @r   mainrv   =   s   $'222F
Iy/D  F F F
4	  6 6 6
 k'1EEE
K  M M M  3	  5 5 5 5577KO	     llH  J J J 7799MH  J J J <  > > > %%GPQQQ? 	A		e$$$$
7?aG$7IJJJ 5'
w~~j)) 	AHZ    z** 	ALL2Z?@@@
 
 
 
_
 
 
 
	 5+, vGO 4 44W_q0$5$+$=? ? ?F  F2333FFgoFFFd--f-- 
	7$'l$;$;   [K555 HH[))))HHJJJJ  ,/w+M+M 7 7'
K 7j+6667 7
 %,L1$4$4 3w''<! ! !:; 	!88-8888DKK7>>>'' G4T3w#E#EFFFG G G G G G G G G G G G G G G G G G ,/w+M+M F F'
K":{EEfEEEEF Fs   
*QQQr   )r   rT   r_   r*   multiprocessingr	   
contextlibr   	functoolsr   rW   r   r   r   r   ufoLib2ImportErrordefcone	getLoggerr   r   r   r&   r   rv   r   r   r   <module>r      sq   				                        6 6 6 6 6 6 6 6
        #####    
	,	-	-  
+ 
+ 
+ 
+  - - -tF tF tF tF tF tFs1   5 AA A AA
AAA