)EjddlmZddlmZddlmZddlmZddlm Z ddl m Z m Z Gddej Ze ejd d Zdd Ze ejd d Ze ejd dZe ejd dZe dee ejd dZe dee ejd dZe dee ejd dZdS)) psCharStrings)ttLib)NullPen)otRound)deprecateFunction) _add_method _uniq_sortceZdZdZdZdS)_ClosureGlyphsT2DecompilercVtj|||||_dSN)rSimpleT2Decompiler__init__ components)selfr localSubrs globalSubrss FC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/subset/cff.pyrz#_ClosureGlyphsT2Decompiler.__init__ s((11$ KPPP$c |}t|dkr[ddlm}|dd\}}}}||}||} |j||j| dSdS)Nr)StandardEncoding)popalllen$fontTools.encodings.StandardEncodingrradd) rindexargsradxadybcharachar baseGlyph accentGlyphs r op_endcharz%_ClosureGlyphsT2Decompiler.op_endchars{{}} t99>> M M M M M M&*"##Y "CeU(/I*51K O   * * * O   , , , , , >rN)__name__ __module__ __qualname__rr&rrr r s2%%% - - - - -rr zCFF c|j}t|dksJ||d}|j}|j}|rt }|D]P}||vr||}t |jdg} t|| |j } | |Q||jz}|j ||}|dSdS)NrSubrs) cffrkeys CharStringsglyphssetgetattrprivater rexecuteupdate) rsr.fontglyphSet decomposergglsubrs decompilers rclosure_glyphsr?s (C s88q==== sxxzz!} DHI  UU  # #A  !BBJ44E3Jr~VVJ   r " " " "ah   ###       rFc|j|\}}|s|r||rgndgdSt|dr|j|j|j}n|j}|j}|j}t} | | |j |kr|j |z dg|_ dSdg|_ dS)NendcharFDArray) r0getItemAndSelector setProgramhasattrrBPrivate defaultWidthX nominalWidthXrdrawwidthprogram) r8 glyphNameisCFF2 ignoreWidthc fdSelectIndexr4dfltWdXnmnlWdXpens r_empty_charstringrT3s'::9EEA} $$ 62RR {33333 4 # # # (@l=19GGlG''ii s 7g  7*I6AIII" AIIIrc|j}|jdd|_|jrC|js<|jdk}|D]}||}t |d||D]}||}d|_dS)Nr,z.notdef)rMrT)r. fontNames notdef_glyphnotdef_outlinemajorr/rTEncoding)rr8optionsr.rMfontnames rprune_pre_subsetr]Gs (CM"1"%CM>G$:>Q  > >Hx=D dIf = = = = =HHJJ++8}* 4rct|j}|D]}||}|j}|j|j|jD]}|vr||\}} |jrfdt|jD} |j fd| D_ ` ` t|dr!|jd_fd| D_i} t| D] \} } |j| }||jvr| | |<!| |_n*fd|j D|_fd|jD|_t'|j|_|jjr(|jdk} |jD]}t1||| d dS) Nc"g|] \}}|v | Sr*r*).0ir;r1s r z!subset_glyphs..ls"LLLTQV q rc*g|]}j|Sr*)items)r`racsis rrbz!subset_glyphs..ns777!1777rFDSelectc*g|]}j|Sr*)gidArray)r`rasels rrbz!subset_glyphs..ssAAAA QAAArc$i|] \}}|v || Sr*r*)r`r;vr1s r z!subset_glyphs..{s$UUUtq!farcg|]}|v| Sr*r*)r`r;r1s rrbz!subset_glyphs..|s???a1;;;;;rr,T)rMrN)r.r/r0r1unionglyphs_emptiedcharsetrCcharStringsAreIndexed enumeratecharStringsIndexrdfileoffsetsrErfformatrh charStringsr numGlyphsr[ retain_gidsrYrT)rr7r.r\r8csr;rO_indicesnewCharStrings indicesIdx charsetIdxrMrer1ris @@@r subset_glyphsr\s  (CHHJJ#L#L8}   011 , ,A((++DAqq # VLLLLYt|%<%<LLLG%C7777w777CI#+tZ(( Bm! AAAAAAA N*3G*<*< 3 3& JL,&&(2N1%+BNNUUUUr~/C/C/E/EUUUBN????4<??? T\** 9  LY]F% L L!$&dKKKKK 4rc |j}|D]r}||}|j}t|drQ|j}t |j fd|jD|_|jfd D_` ` s|j r| |j s| n|j s|dS)Nrfc:g|]}|Sr*)r)r`ssr|s rrbz%prune_post_subset..s%EEE"GMM"--EEErc g|] }| Sr*r*)r`raarrs rrbz%prune_post_subset..s111AQ111rT)r.r/r0rErfr rhrBrdrtrudesubroutinizehinting remove_hintsremove_unused_subroutines) rttfFontr[r.r\r8rzrirr|s @@rprune_post_subsetrs (CHHJJ & &8}   4 $ $ &-C ..GEEEE EEECL,C1111111CI#+  ?)   #) &&((( 4rz)use 'CFFFontSet.desubroutinize()' instead)categoryc8|jdSr )r.rrs rrrs  Hrz'use 'CFFFontSet.remove_hints()' insteadc8|jdSr )r.rrs rrrs  Hrz2use 'CFFFontSet.remove_unused_subroutines' insteadc8|jdSr )r.rrs rrrs  H&&(((((rN)F)fontTools.miscr fontToolsrfontTools.pens.basePenrfontTools.misc.roundToolsrfontTools.misc.loggingToolsrfontTools.subset.utilrr rr getTableClassr?rTr]rrDeprecationWarningrrrr*rrrs((((((******------99999999999999-----!A---&  U  ( ())*),$$$$(  U  ( ())*)(  U  ( ())''*)'T  U  ( ())*)6/:L  U  ( ())*)-8J  U  ( ())*)8CU  U  ( ())))*))))r