L i> ddlmZddlmZddlmZddlmZmZddl ddl Z e jdZ dZ d Zd Zd Zd Zd Zdedej&_dddej*_eddej._eedej2_eedej6_eedej:_eeedej<_eeedej>_e eedejB_deiejD_eedejF_ee$dxejJ_xejL_xejN_xejP_xejR_ejT_e+e edxejXd_xejXd _xejXd!_xejXd"_xejXd#_ejXd$_eejXd d%Z-eej\ej^ej`ejbejdejfejhejjejlejnejp d&Z9eejtejvejxejzd'Z>eejtejvejxejzd(Z9eej~ejd)Z9eejd*Z9eej2d+Z9eejd,ZBeej2d-ZBeejd.Z9eej.d/Z9eejejd0ZFeejd1ZFeej&d2ZFd3ZHd4ZIy)5)ttLib) DefaultTable)otTables) add_method mergeObjects)*NzfontTools.mergect|SN)sumListslsts \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/merge/layout.pymergeLookupListsrs C=c|sJtj}d|_t|Dcgc]}|js|jc}|_t |j|_|Scc}wr )rFeature FeatureParamsrLookupListIndexlen LookupCountr selfls r mergeFeaturesrsg J3    DD+$'=q1+<+<  =D4//0D K >s A1A1cJi}|D]<}|D]5}|j}||vrg||<||j|j7>g}t|j D]A}t j }||_t|||_|j|C|Sr ) FeatureTagappendrsortedkeysr FeatureRecordr)r drftagretrecs rmergeFeatureListsr& s A % %A,,C!|# cFMM!)) $  %% Caffh$$&#AcF+  3  Jrc"|sJtd|DsJtj}d|_d|_t |Dcgc]}|j s|j c}|_t|j |_|Scc}w)Nc3:K|]}|jdk(yw)N)ReqFeatureIndex).0rs r z!mergeLangSyses..5s8qq  F*8sr)) allrLangSys LookupOrderr*r& FeatureIndexr FeatureCountrs rmergeLangSysesr21s J3 8C8 88 8    DD!D)!$7A7DD--.D K 8s B B c|sJt|dk(r|dSi}|D]X}|jD]G}|j|vrg||j<||jj|jIZg}t |j D]A\}}tj}t||_||_|j|Ctj}||_t||_ |Dcgc]}|js|j} }| rt| |_ |Sd|_ |Scc}w)Nr) r LangSysRecord LangSysTagrr.ritemsrr2Script LangSysCountDefaultLangSys) r langSysessrlsr lsrecordsr# langSys_listrs dfltLangSysess r mergeScriptsrBAs@ J3 3x1}1v I:## :C~~Y.,. #..) cnn % , ,S[[ 9 :: I#IOO$56\$$&$\2   ?? D"DID/2G!a6F6FQ%%GMG,]; K# K Hs EEcJi}|D]<}|D]5}|j}||vrg||<||j|j7>g}t|j D]A}t j }||_t|||_|j|C|Sr ) ScriptTagrr8rrr ScriptRecordrB)r r!rr@r#r$r%s rmergeScriptRecordsrF^s A $ $A++C!|# cFMM!(( #  $$ Caffh##% !!C&)  3  Jrcyr r s rrIpr) ScriptCountrEcyr rHr s rrIrItrJrc0tt|dS)Nc|jSr ) BaseScriptTagr@s rrIz..ws Q__rkeyrr r s rrIrIvsF 4%r)BaseScriptCountBaseScriptRecordc0tt|dS)Nc|jSr rrPs rrIz..}s Q\\rrQrSr s rrIrI}s ;Q!Rr)r1r )rLookup)Formatglyphs)rZ classDefs)Coverage LigGlyphCountLigGlyph)r] GlyphCount AttachPoint)MarkSetTableFormat MarkSetCountr]r) BaseTagCount BaselineTag)rVersion)tableTagtableGDEFGSUBGPOSBASEJSTFMATHct|t|jk(sJtt||jD]^\}\}}|s ||tur/t j d|j|j|Fd}d}|jjjD]}|jdk(r|jjg|jjD cgc]} | j c} zD]} | | j"D cgc]} | j$dk(s| } } t| dksJ| r| d} n|st'j(}d|_t'j*x} |_d| _d| _g| _|jj2j(j5||jj2xj6dz c_|} | j"j5| | j"j9d|st'j:}||_t'j>}d|_ d|_!d|_"|g|_#|jjHYt'jH|j_$g|jjH_d|jjH_|jjHj>j5||jjHxj.dz c_| j*j0dd|gk7s\|g| j*j0dd| j*xj.dz c_atKjL||||Scc} wcc} w)Nz[Have non-identical duplicates to resolve for '%s' but no GSUB. Are duplicates intended?: %sDFLTloclr4rc|jSr rX)vs rrIzmerge..s ALLrrQ)'rduplicateGlyphsPerFont enumeratezipNotImplementedlogwarningfonts _merger__namerh ScriptListrErDr8r:r5r.r0rrr rrrr FeatureListrr1sort SingleSubstmappingrY LookupFlag LookupType SubTableCountSubTable LookupListrmerge)rmtablesirhdups synthFeature synthLookupscriptrlangsysrsfeaturer"subtables rrrs4 v;#a667 77 7%c&!2J2J&KL;5=E4  =E^3 KKm ((    kk,,99. 5F6)"MM889#)==#>#>= =+ 5?&-&:&:Uallf>T1UU7|q(((%ajG''/'='='? 28 /3;3C3C3EEL0*.() ,.) //==DD\R //<<A<*G((//8((--2H-I"'335H'+H$"*//"3K-.K*-.K*01K-,4:K({{--52:1D1D1F .8: ..5=> ..:KK**1188EKK**66!;6??222A6;-G;F-GOO33BQ7OO//14/W+ 5. 5;5ztQ' K]= Vs/N> O 1O cyr rHr lookupMaps r mapLookupsrs rcGddt}|jdvryt|jdsi|j_|j|jjvr@||j|j}||jj|j<|jj|jS)NceZdZdZy)/__merge_classify_context..ContextHelpercJ|jjdrd}d}nd}d}|jjdrd}nd}||z}||_||_||_||_|dz|_|dk(r|dz|_|d z|_ y|d k(r|d z|_|d z|_ yy) NSubstSubPosChain LookupRecordr4RuleRuleSet ClassRuleClassSet) __name__endswith startswithTypTyperChainTyprrr)rklassrZrrrrs r__init__z8__merge_classify_context..ContextHelper.__init__s~~&&w/~~((1s{HDHDIDJ$DM $~ 5D {$v- ')3 1${2 '*4 rN)r __module__ __qualname__rrHrr ContextHelperrs 5rr)r4r_merge__ContextHelpers)objectrZhasattr __class__r)rrhelpers r__merge_classify_contextrs558 {{)# 4>>#; <02- {{$..???t~~t{{;=C--dkk: >> 0 0 ==rc|j}|jdvrot||jD]U}|st||jD]7}|st||j D]}|s||j |_9Wy|jdk(r3t||j D]}|s||j |_yJd|jz)N)r4rrunknown format: %s)rrZgetattrrrrr)rrcrsrlls rrrBs %%'A {{f$ * GBR( G!!Q^^4GB )223E3E)FB&G G G  $/ ?B!*2+=+=!>B  ? 5&44qrc|jdk(r|jj|yJd|jz)Nr4r)rZ ExtSubTablerrs rrr_s6 {{a ##I.4&44qrcN|jD]}|s|j|yr )rr)rrsts rrrgs'mm!  i !rcN|jD]}|s|j|yr )rYr)rrrs rrros' [[   Y rcL|jdzr||j|_yy)N)rMarkFilteringSet)rmarkFilteringSetMaps rmapMarkFilteringSetsrws&  3D4I4I J rcN|jD]}|s|j|yr )rYr)rrrs rrr}s* [[4  234rcR|jDcgc]}|| c}|_ycc}wr )r)rrrs rrrs"262F2FGQIaLGDGs $cz|jD],}|r |js|jj|.yr )r rr)rrr"s rrrs5   (  Y'(rc|jDcgc]}|| c}|_|jdk7r||j|_yycc}w)Nr))r0r*)r featureMaprs r mapFeaturesrsK040A0AB1ABD u$)$*>*>?%Cs Ac|jr|jj||jD],}|r |js|jj|.yr )r:rr5r.)rrrs rrrsR  '' 3   *  j)*rcz|jD],}|r |js|jj|.yr )rEr8r)rrr@s rrrs5   )  Z()rc*|jd}|jd}|jd}||fD]}|s|jjrt|jjjDcic]\}}|| }}}|jjj ||jj j ||r|jjdk\rw|jjrat|jjjDcic]\}}|| }}}|jjj||jj sN|jjsft|jj jDcic]\}}|| } }}|jjj| ycc}}wcc}}wcc}}wNrirjrki)getrhrrurYrr}rfMarkGlyphSetsDefr]rr|r r) fontrirjrktrrsrrrs rlayoutPreMergers 88F D 88F D 88F DD\7  77  *3AGG4F4F4M4M*NO$!QAOIO GG   ) )) 4 GG   * *9 5JJ&&*4JJ//&/tzz/J/J/S/S%T'!QAqD'#'""778KL 77  177#5#5+4QWW5H5H5V5V+WX41a!Q$XJX GG   * *: 6+7 P' Ys H9 H  Hc( |jd}|jd}|jd}||fD]K}|s|jjr|jjrt |jjj }|jjj |t|jjj }|jjj ||j}t|jjj Dcgc] \}}||vr| c}}|jj_t|jjj }|jjj |t|jjj |jj_ |jjst |jjj} |jjj| |jjj| t|jjj} |jjj| |jjj| | j}t|jjjD cgc] \}} ||vs | c} }|jj_t|jjj} |jjj| |jjj| t|jjj|jj_|s|jj"dk\st|jj$j&} |jjj)| Nycc}}wcc} }wr)rrhr}r|GregariousIdentityDictr rAttendanceRecordingIdentityDictr@ruNonhashableDictrr1rrYrrrfrr]r) rrirjrkrr usedIndicesrr"rrrs rlayoutPostMergers4 88F D 88F D 88F DD\9M  77  177#5#5/0C0C0Q0QRJ GG   * *: 69##11J GG   * *: 6$,,K &agg&9&9&G&GH1Aq #1AGG   -))<)<)J)JKJ GG   * *: 6/21773F3F3T3T/UAGG   , 77  .qww/A/A/H/HII GG   * *9 5 GG   ) )) 488J8J8Q8QRI GG   * *9 5 GG   ) )) 4#++K((:(:(A(AB)aa;FV)AGG   % ((:(:(A(ABI GG   * *9 5 GG   ) )) 4-01C1C1J1J-KAGG   * **j8&5JJ//88'#""778KLs9M"12)sR4 RR)J fontToolsr#fontTools.ttLib.tables.DefaultTablerfontTools.ttLib.tablesrfontTools.merge.baserrfontTools.merge.utillogging getLoggerrxrrr&r2rBrFr|mergeMapBaseScriptListsumr}r rminr]sumDictsClassDef LigCaretList AttachListequalrAxis BaseTagListmaxrirjrkrlrmrn onlyExisting getTableClassrr MultipleSubstAlternateSubst LigatureSubstReverseChainSingleSubst SinglePosPairPos CursivePos MarkBasePos MarkLigPos MarkMarkPosr ContextSubstChainContextSubst ContextPosChainContextPosrExtensionSubst ExtensionPosrYrrr:r.rr8rrrHrrrs <+9"g)* "  :$$&  ($ R!     "  &"  ! 7 /(--2H MM MMX]]3U#  F$ ':u':':6'B'K E( E( +>5+>+> , U    E   '(@)@F      $$                 $>  $>N       5  5. H # #X%:%:;5<5 HOO!! H    !  HOOKK  H   4!4 H  HH H !("( H # #X%5%56@7@  HOO** H   )!)7B@Mr