)EjddlZddlZddlZddlZddlZddlmZddlm Z ddl Z ddl m Z m Z dZ ddlZn##e$r ddlZn#e$r ZYdZ[ndZ[wwxYwYnwxYwejdZdZdZd d Zd Zd Zd d ZdS)N)closing)partial)font_to_quadraticfonts_to_quadraticzfontTools.cu2qucL tjS#t$rYdSwxYw)Nr)mp cpu_countNotImplementedErrorEC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/cu2qu/cli.py _cpu_countrs5|~~ qqs  ##cttjdrtj|Stj|S)Nopen)hasattr ufo_moduleFontr)paths ropen_ufor s<z''*##D))) ?4  r c 0t|}td|t|fi|rJtd||r||dS|dS|rt ||dSdS)NzConverting curves for %s Saving %s)rloggerinforsave _copytree) input_path output_pathkwargsufos r_font_to_quadraticr!&s :  C KK*J777''''+ K---   HH[ ! ! ! ! ! HHJJJJJ +*k*****++r crtjtjtj|}tjtjtj|}||kSN)osrnormcaseabspathrealpath)path1path2s r _samepathr*3sr G  RW__RW-=-=e-D-DEE F FE G  RW__RW-=-=e-D-DEE F FE E>r ct||rtddStj|rt j|t j||dS)Nz6input and output paths are the same file; skipped copy) r*rdebugr$rexistsshutilrmtreecopytree)rrs rrr:sj[)) MNNN w~~k""# k""" OJ ,,,,,r c : tjd}|ddtj|dddd |d d d d|ddt ddd|ddddd|dddd |}|d!d"dd#$|d%d&td'd(td)d*+|}|d,d-dd.d/0|d1d2dd3d40| |}t| d5|j sd6}n|j d(krd7}nd8}tj|9t|jd(kr|jr| d:|jr|jt&jst'jn7t&js| d;zfd<|jD}n(|jr |jg}ndgt|jz}t1|j dk|j|j|jrdnd=>}|jrt:d?d@|jD}t?|fi|r_tA||D]L\} } t:dA| | r| !| 8| !MdStA|j|D]\} } | rtE| | dS|j#d(kr'tIt|j|j#nd(} | d(krtKtLfi|} t:dB| tOtQj)| 5}|*| tA|j|ddddS#1swxYwYdStA|j|D]\} } tM| | fi|dS)Cz1Convert a UFO font from cubic to quadratic curvescu2qu)progz --versionversion)actionr4infiles+INPUTz%one or more input UFO source file(s).)nargsmetavarhelpz-vz --verbosecountr)r5defaultz-ez--conversion-errorERRORNz;maximum approximation error measured in EM (default: 0.001))typer:r=r;z-mz--mixedF store_truez0whether to used mixed quadratic and cubic curves)r=r5r;z--keep-directionreverse_direction store_falsez$do not reverse the contour direction)destr5r;z-iz--interpolatablez@whether curve conversion should keep interpolation compatibility)r5r;z-jz--jobs?rNz9convert using N multiple processes (default: %(default)s))r?r9r=constr:r;z-oz --output-fileOUTPUTzsoutput 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.WARNINGINFODEBUG)levelz2-o/--output-file can't be used with multile inputsz'%s' is not a directorycg|]?}tjtj|@Sr )r$rjoinbasename).0p output_dirs r z_main..sF   >?BGLLRW%5%5a%8%8 9 9   r T) dump_stats max_err_emrA all_quadraticzConverting curves compatiblyc,g|]}t|Sr )r)rPinfiles rrSz_main..s ???V  ???r rzRunning %d parallel processes)+argparseArgumentParser add_argument fontTools __version__floatadd_mutually_exclusive_groupintr parse_argsrerrorverboselogging basicConfiglenr6 output_filerRr$rr-mkdirisdirdictconversion_errorrAmixedinterpolatablerrrziprrjobsminrr!rr Poolstarmap)argsparser mode_parser output_parseroptionsrL output_pathsrufosr rrrofuncpoolrRs @r_mainr|Cs  $' 2 2 2F  Iy?TUUU  4   k'1EEE    J    ?    3 5577K  O    ll H   7799M  F      < %%G PQQQ ? A   e$$$$ 7?aG$7 IJJJ 5' w~~j)) A HZ z** A LL2Z? @ @ @    CJ?     5+, vGO 4 44 ?Q&+!3&}6ee$ FF 2333??w??? d - -f - - 7$'l$;$;   [ K555HH[))))HHJJJJ   ,/w +M+M 7 7' K7j+666 7 7;B,:J:Js3w''666PQ !88-8888D KK7 > > >'' G4 T3w #E#EFFF G G G G G G G G G G G G G G G G G G,/w +M+M F F' K":{EEfEEEE F Fs.*Q%%Q),Q)r#)r$rYrdr.multiprocessingr contextlibr functoolsrr\r rrrufoLib2 ImportErrordefcone getLoggerrrrr!r*rr|r r rrs  66666666            #####         , - -!!! + + + +---CFCFCFCFCFCFs15AAAAA AAA