
    jke                         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 ej&                  d      Zd Zd Zdd	Zd
 Zd ZddZy# e$ r 	 d dlZn# e$ r
ZY dZ[ndZ[ww xY wY Fw xY w)    N)closing)partial   )font_to_quadraticfonts_to_quadraticzfontTools.cu2quc                  J    	 t        j                         S # t        $ r Y yw xY w)Nr   )mp	cpu_countNotImplementedError     5/usr/lib/python3/dist-packages/fontTools/cu2qu/cli.py
_cpu_countr      s%    ||~ s    	""c                     t        t        j                  d      rt        j                  j                  |       S t        j                  |       S )Nopen)hasattr
ufo_moduleFontr   )paths    r   open_ufor       s4    z'##D))??4  r   c                     t        |       }t        j                  d|        t        |fi |r;t        j                  d|       |r|j	                  |       y |j	                          y |rt        | |       y y )NzConverting curves for %s	Saving %s)r   loggerinfor   save	_copytree)
input_pathoutput_pathkwargsufos       r   _font_to_quadraticr!   &   s`    
:
C
KK*J7''K-HH[!HHJ	*k* 
r   c                 p   t         j                  j                  t         j                  j                  t         j                  j	                  |                   } t         j                  j                  t         j                  j                  t         j                  j	                  |                  }| |k(  S N)osr   normcaseabspathrealpath)path1path2s     r   	_samepathr*   3   sl    GGRWW__RWW-=-=e-DEFEGGRWW__RWW-=-=e-DEFEE>r   c                     t        | |      rt        j                  d       y t        j                  j                  |      rt        j                  |       t        j                  | |       y )Nz6input and output paths are the same file; skipped copy)	r*   r   debugr$   r   existsshutilrmtreecopytree)r   r   s     r   r   r   :   sF    [)MN	ww~~k"k"
OOJ,r   c           
      	   t        j                  d      }|j                  ddt        j                         |j                  dddd	
       |j                  dddd       |j                  ddt
        ddd       |j                  ddddd       |j                  dddd        |j                         }|j                  d!d"dd#$       |j                  d%d&t        d'd(t               d)d*+       |j                         }|j                  d,d-dd.d/0       |j                  d1d2dd3d40       |j                  |       }t        |j                  d5       |j                  sd6}n|j                  d(k(  rd7}nd8}t        j                  |9       t        |j                         d(kD  r|j"                  r|j                  d:       |j$                  r|j$                  }t&        j(                  j+                  |      st'        j,                  |       n3t&        j(                  j/                  |      s|j                  d;|z         |j                   D cg c]?  }t&        j(                  j1                  |t&        j(                  j3                  |            A }}n3|j"                  r|j"                  g}ndgt        |j                         z  }t5        |j                  dkD  |j6                  |j8                  |j:                  rdnd<=      }	|j<                  rt>        jA                  d>       |j                   D 
cg c]  }
tC        |
       }}
tE        |fi |	rOtG        ||      D ]?  \  }}t>        jA                  d?|       |r|jI                  |       0|jI                          A ytG        |j                   |      D ]  \  }}|s	tK        ||        y|jL                  d(kD  r)tO        t        |j                         |jL                        nd(}|d(kD  rttQ        tR        fi |	}t>        jA                  d@|       tU        tW        jX                  |            5 }|j[                  |tG        |j                   |             ddd       ytG        |j                   |      D ]  \  }}tS        ||fi |	  yc c}w c c}
w # 1 sw Y   yxY w)Az1Convert a UFO font from cubic to quadratic curvescu2qu)progz	--versionversion)actionr4   infiles+INPUTz%one or more input UFO source file(s).)nargsmetavarhelpz-vz	--verbosecountr   )r5   defaultz-ez--conversion-errorERRORNz<maxiumum approximation error measured in EM (default: 0.001))typer:   r=   r;   z-mz--mixedF
store_truez0whether to used mixed quadratic and cubic curves)r=   r5   r;   z--keep-directionreverse_directionstore_falsez$do not reverse the contour direction)destr5   r;   z-iz--interpolatablez@whether curve conversion should keep interpolation compatibility)r5   r;   z-jz--jobs?r   Nz9Convert using N multiple processes (default: %(default)s))r?   r9   r=   constr:   r;   z-oz--output-fileOUTPUTzsoutput filename for the converted UFO. By default fonts are modified in place. This only works with a single input.)r=   r:   r;   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 directoryT)
dump_stats
max_err_emrA   all_quadraticzConverting curves compatiblyr   zRunning %d parallel processes).argparseArgumentParseradd_argument	fontTools__version__floatadd_mutually_exclusive_groupintr   
parse_argsr   errorverboseloggingbasicConfiglenr6   output_file
output_dirr$   r   r-   mkdirisdirjoinbasenamedictconversion_errorrA   mixedinterpolatabler   r   r   r   zipr   r   jobsminr   r!   r   r	   Poolstarmap)argsparsermode_parseroutput_parseroptionsrL   r_   poutput_pathsr   infileufosr    r   r   ri   funcpools                     r   mainrx   C   sz   $$'2F
Iy?T?TU
4	   k'1E
K   ?    3	   557KO	   lH  	 779MF  	 <   %GPQ??	A	e$
7??aG$7$7IJ''
ww~~j)HHZ z*LL2Z?@CJ??
>?BGGLLRWW%5%5a%89
 
 
		++, vGOO 44??Q&++!33&}}e$	F 23/6?V ??d-f-$'l$;  [K5HH[)HHJ ,/w+M 7'
Kj+67 ;B,,:Js3w'6PQ!8-88DKK7>' G4T3w#EFG G ,/w+M F'
K":{EfEFM
$ @"G Gs   AR6:R;'S  S	r#   )r$   rP   r[   r.   multiprocessingr	   
contextlibr   	functoolsr   rS   r    r   r   r   ufoLib2ImportErrordefcone	getLoggerr   r   r   r!   r*   r   rx   r   r   r   <module>r      s    	        6
  
		,	-!
+-CFi  # s5   A A;!A&%A;&A5+A;0A55A;:A;