)Ej !0dZddlmZmZddlmZddlmZddlm Z m Z m Z m Z m Z mZddlmZddlmZdd lmZdd lmZdd lZd d gZejdZdZdddZddZedkr,dd lZej eej!dd d Sd S)zCFF2 to CFF converter.)TTFontnewTable)makeOutputFileName)T2StackUseExtractor) TopDictIndex buildOrder buildDefaultstopDictOperatorsprivateDictOperatorsFDSelect)desubroutinizeCharString)specializeProgram)optimizeWidths) defaultdictNconvertCFF2ToCFFmainzfontTools.cffLibc d|_td}|jD]}d|_||||_|d}t |drt dtt}||_ |j D].}||vr(|j |=t ||rt||/|j }|j}t |ds2tx} |_dgt!|jz| _t't(} tt(} |D]} | d| j} | | _ | D]}|| j vr|| vr| || j |< | j D].}|| vr(| j |=t | |rt| |/|D]0}||jd1|jgd |DzD]!}|D]}|jd "t7t8}|d j}| D]I}||\}}|dkrd}||||dJ|D]2\}}tA|\}}||j}||_!||_"3| D]k}||\}}|dkrd}||j}||d}||j!kr#|j#d||j"z l| D]}||\}}|d}||j}tItK|d g|j| }|&|}|dkr(tO|tQ|j|_|)dtU|j+DdtYt!|j+D|_+fd|jD|_d|_-dS)amConverts this object from CFF2 format to CFF format. This conversion is done 'in-place'. The conversion cannot be reversed. The CFF2 font cannot be variable. (TODO Accept those and convert to the default instance?) This assumes a decompiled CFF2 table. (i.e. that the object has been filled via :meth:`decompile` and e.g. not loaded from XML.)r NrVarStorez5Variable CFF2 font cannot be converted to CFF format.r Fendcharc:g|]}t|jdgS)Subrs)getattrPrivate).0fds LC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/cffLib/CFF2ToCFF.py z%_convertCFF2ToCFF..Us3)))-/ GR(()))returnhmtxr)private0chi|]/\}}||r%dt|dznd0Scidz.notdefstrzfill)rnnames r z%_convertCFF2ToCFF..sM At !:us1vv||A&&rc`g|]+}|r%dt|dznd,Sr%r()rr+s rrz%_convertCFF2ToCFF..sD8913A Q)rc(i|]\}}||Sr0)rr,vmappings rr-z%_convertCFF2ToCFF..s0$T1 qr)AdobeIdentityr).majorr topDictIndexcff2GetGlyphOrderappendhasattr ValueErrorrr orderrawDictkeysdelattr CharStringsFDArrayr len charStringsgidArrayr r setCFF2rvalues decompileprogram GlobalSubrsrlistmetricsgetItemAndSelectoritemsr defaultWidthX nominalWidthXinsertrrexecuterrremove_unused_subroutines enumeratecharsetrangeROS)cffotFont topDictDataitemtopDictopOrderkeyrBfdArrayfdSelectdefaultsr;r privateDictcssubrSetswidthsrJ glyphNamefdIndex widthList bestDefault bestNominalr"width extractorstackUser2s @r_convertCFF2ToCFFrls{CIt$$K !!!%4    "C!nGw ##RPQQQ)**GGM##%%&& g  $w$$ &%%%%KoG 7J ' '?&.jj07#C#k&=">">>122H + , ,E . . 5j !  9 9C+---#//+3C= #C(&++-- . .C%',;,,.K---  .  ""%%  )$$$$_%))3:)))(( ( (B J  h ' ' ' ' (  FVn$G %%''66 !44Y?? G d??Gwwy1!45555$llnn,,#1)#<#< ['"* + + %%''@@ !44Y?? G d??G'"* "1% G) ) ) J  a)>!> ? ? ?!%%'' 7 7 !44Y?? G ?G'"*' GWb ) )3?G   $$R(( b== $R ( ( (*2:66BJ !!### 11G=B3wCWCW=X=XGO(3(?(E(E(G(GK+GKKKrT)updatePostTablecd|vrtd|dj}t|||d=tdx}|d<||_|r d|vr|d}|jdkr d|_dSdSdSdS)NCFF2z)Input font does not contain a CFF2 table.zCFF postg@g@)r:rVrlr formatType)fontrmrVtablerps rrrs TDEEE v, Cc4    V #F+++EDLEI"6T>>F| ?c ! !!DOOO "">> " !rc|ddl}|jdd}ddl}|dd}|ddd |d d d dd|dddd|ddd|ddd|d}|dddd|d d!dd"||}dd#lm}||j rd$n |j rd%nd&'ddl }|j }|j |s(|d(||jst%|d)d*+n|j} t'||jd,} t+| |jr~dd-lm} dd.lm} t6d/| } | | | dt'| dd,} | | |j0t6 d1| | | dS)2z%Convert CFF2 OTF font to CFF OTF fontNrr zfonttools cffLib.CFF2ToCFFz(Convert a non-variable CFF2 font to CFF.) descriptioninputz INPUT.ttfzInput OTF file with CFF table.)metavarhelpz-oz--outputz OUTPUT.ttfz3Output instance OTF file (default: INPUT-CFF2.ttf).)rwdefaultrxz--no-recalc-timestamprecalc_timestamp store_falsez:Don't set the output font's timestamp to the current time.)destactionrxz--remove-overlaps store_truez@Merge overlapping contours and components. Requires skia-pathops)r}rxz--ignore-overlap-errorszCDon't crash if the remove-overlaps operation fails for some glyphs.F)requiredz-vz --verbosezRun more verbosely.z-qz--quietzTurn verbosity off.) configLoggerDEBUGERRORINFO)levelzNo such file '{}'Tz-CFF) overWritesuffix)recalcTimestamp recalcBBoxes)removeOverlaps)BytesIOzRemoving overlaps) ignoreErrorsz Saving %s)!sysargvargparseArgumentParser add_argumentadd_mutually_exclusive_group parse_args fontToolsrverbosequietosrvpathisfileerrorformatoutputrrrzrremove_overlapsfontTools.ttLib.removeOverlapsriorlogdebugsaveseekignore_overlap_errorsinfo)argsrrparser loggingGroupoptionsrrinfileoutfilerrrrstreams rrrsQ | x|OOO  $ $$>%F +K   B    I    O  ! R 666FFL k,5J i 3H%%G&&&&&&L!/Sww'-/SwwVIII ]F 7>>& ! !9 (//77888~ 6T&AAAA ^ &'*BQV W W WDT  AAAAAA %&&& & Afe%HHH  6    HH IIgr__main__)N)"__doc__fontTools.ttLibrrfontTools.misc.cliToolsrfontTools.misc.psCharStringsrfontTools.cffLibrrr r r r transformsr specializerrrir collectionsrlogging__all__ getLoggerrrlrr__name__rexitrr0rrrs,,,,,,,,666666<<<<<<100000******!!!!!!###### v &g*++u+u+u+p/3 " " " " " YYYYx zJJJ CHTT#(122,       r