L itddlmZddlmZddlmZddlmZddlm Z ddl m Z m Z GddejZe ejd d Zdd Ze ejd d Ze ejd d Ze ejd dZe dee ejd dZe dee ejd dZe dee ejd dZy)) psCharStrings)ttLib)NullPen)otRound)deprecateFunction) _add_method _uniq_sortceZdZdZdZy)_ClosureGlyphsT2DecompilercTtjj|||||_yN)rSimpleT2Decompiler__init__ components)selfr localSubrs globalSubrss Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/subset/cff.pyrz#_ClosureGlyphsT2Decompiler.__init__ s!((11$ KP$c|j}t|dk\rQddlm}|dd\}}}}||}||} |jj ||jj | yy)Nr)StandardEncoding)popalllen$fontTools.encodings.StandardEncodingrradd) rindexargsradxadybcharachar baseGlyph accentGlyphs r op_endcharz%_ClosureGlyphsT2Decompiler.op_endcharsn{{} t9> M&*"#Y "CeU(/I*51K OO   * OO   , rN)__name__ __module__ __qualname__rr&rrr r s % -rr zCFF c|j}t|dk(sJ||jd}|j}|j}|rt }|D]K}||vr||}t |jdg} t|| |j} | j|M||jz}|jj||}|ryy)NrSubrs) cffrkeys CharStringsglyphssetgetattrprivater rexecuteupdate) rsr.fontglyphSet decomposergglsubrs decompilers rclosure_glyphsr?s ((C s8q== sxxz!} DHI U  #A !BBJJ4E3Jr~~VJ   r " # ahh   #  rc|jj|\}}|s|r|j|rgydgyt|dr&|j|j|j }n |j }|j }|j}t} |j| |j|k7r|j|z dg|_ ydg|_ y)NendcharFDArray) r0getItemAndSelector setProgramhasattrrBPrivate defaultWidthX nominalWidthXrdrawwidthprogram) r8 glyphNameisCFF2 ignoreWidthc fdSelectIndexr4dfltWdXnmnlWdXpens r_empty_charstringrT3s''::9EA}  6R3 {3 4 # (@ll=199GllG''''i s 77g 7*I6AI" AIrc$|j}|jdd|_|jrC|js7|jdkD}|j D]}||}t |d||j D]}||}d|_y)Nr,z.notdef)rMrT)r. fontNames notdef_glyphnotdef_outlinemajorr/rTEncoding)rr8optionsr.rMfontnames rprune_pre_subsetr]Gs ((CMM"1%CMG$:$:Q  >Hx=D dIf = > HHJ+8}* + rc|j}|jD] }||}|j}|jj |j }|j D]}||vr|j|\}} |jrt|j D cgc] \} }||vs | } } }|j} | D cgc]} | j| c} | _ | ` | ` t|dr5|j} d| _| D cgc]} | j"| c} | _i}t| D](\}}|j |}||j$vs$|||<*||_n8|j$jDcic] \}}||vs ||c}}|_|j Dcgc] }||vs| c}|_t'|j |_|j*j,s|j.dkD}|j D]}t1|||dycc}} wcc} wcc} wcc}}wcc}w)NFDSelectr,T)rMrN)r.r/r0r1unionglyphs_emptiedcharsetrCcharStringsAreIndexed enumeratecharStringsIndexitemsfileoffsetsrEr_formatgidArray charStringsr numGlyphsr[ retain_gidsrYrT)rr7r.r\r8csr1r;rO_iindicescsiselnewCharStrings indicesIdx charsetIdxvrMs r subset_glyphsrx\s ((CHHJ#L8}    0 01 ,A((+DAq ,  # #%.t||%<LTQV qLGL%%C/67!17CI#+tZ(mm! 9@AA QA N*3G*< 3& JLL,&(2N1% 3,BN/1~~/C/C/EUtq!fadUBN#'<<?a1;? T\\* 99 YY]F%% L!$&dK LE#LJ 1M7 BV?s0% H-2H- H3H8 H=H=2 I<Ic.|j}|jD]}||}|j}t|ds!|j}t |j }|j D cgc]} |j| c} |_|j} |D cgc]} | |  c} | _ | ` | ` |jr|j|js|jy|js|jycc} wcc} w)Nr_T)r.r/r0rEr_r rjrrBrfrgrhdesubroutinizehinting remove_hintsremove_unused_subroutines) rttfFontr[r.r\r8rnrsrqssarrrps rprune_post_subsetrs ((CHHJ &8}    4 $--C .G8; E"GMM"-ECL,,C)01AQ1CI#+ &  ??   # # &&( F1s -D  Dz)use 'CFFFontSet.desubroutinize()' instead)categoryc8|jjyr )r.rzrs rrzrzs  HHrz'use 'CFFFontSet.remove_hints()' insteadc8|jjyr )r.r|rs rr|r|s  HHrz2use 'CFFFontSet.remove_unused_subroutines' insteadc8|jjyr )r.r}rs rr}r}s  HH&&(rN)F)fontTools.miscr fontToolsrfontTools.pens.basePenrfontTools.misc.roundToolsrfontTools.misc.loggingToolsrfontTools.subset.utilrr rr getTableClassr?rTr]rxrDeprecationWarningrzr|r}r*rrrs(*-99-!A!A-& U  ()*,$( U  ()*( U  ()'*'T U  ()*6/:L U  ()*-8J U  ()*8CU U  ())*)r