)Ej@ @ddlmZddlmZddlmZddlmZmZddl Tddl Z e j dZ dZ d Zd Zd Zd Zd Zdedej_dddej_eddej_eedej_eedej_eedej_eeedej_eeedej_e eedej!_deiej"_eedej#_ee$dxej%_xej&_xej'_xej(_xej)_ej*_e+e edxej,d_xej,d _xej,d!_xej,d"_xej,d#_ej,d$_eej,d d%Z-eej.ej/ej0ej1ej2ej3ej4ej5ej6ej7ej8 d&Z9eej:ej;ej<ej=d'Z>eej:ej;ej<ej=d(Z9eej?ej@d)Z9eejAd*Z9eejd+Z9eejAd,ZBeejd-ZBeejCd.Z9eejd/Z9eejDejEd0ZFeejGd1ZFeejd2ZFd3ZHd4ZIdS)5)ttLib) DefaultTable)otTables) add_method mergeObjects)*NzfontTools.mergec t|SN)sumListslsts HC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/merge/layout.pymergeLookupListsrs C==c|sJtj}d|_td|D|_t |j|_|S)Nc*g|]}|j |jSLookupListIndex.0ls r z!mergeFeatures..s#===q1+<= ===r)rFeature FeatureParamsrrlen LookupCountr selfs r mergeFeaturesr s^ JJ3    DD+==C===D4/00D Krc\i}|D]7}|D]2}|j}||vrg||<|||j38g}t|D]K}t j}||_t|||_||L|Sr ) FeatureTagappendrsortedkeysr FeatureRecordr )r drftagretrecs rmergeFeatureListsr, s A %% % %A,C!||# cFMM!) $ $ $ $  % Caffhh$&&#AcF++  3 Jrc|sJtd|DsJtj}d|_d|_t d|D|_t|j|_|S)Nc3,K|]}|jdkVdS)N)ReqFeatureIndexrs r z!mergeLangSyses..5s*88qq F*888888rr/c*g|]}|j |jSr) FeatureIndexrs rrz"mergeLangSyses..;s!777A7777r) allrLangSys LookupOrderr0r,r3r FeatureCountrs rmergeLangSysesr81s JJ3 88C888 8 888 8    DD!D)77777DD-..D Krc^|sJt|dkr|dSi}|D]D}|jD]:}|j|vr g||j<||j|j;Eg}t |D]H\}}tj}t||_||_||Itj }||_t||_ d|D}|rt||_ nd|_ |S)Nrc*g|]}|j |jSr)DefaultLangSys)rss rrz mergeScripts..Vs#GGG!a6FGQ%GGGr) r LangSysRecord LangSysTagr#r5r$itemsrr8Script LangSysCountr<) r langSysessrlsr lsrecordsr) langSys_listr dfltLangSysess r mergeScriptsrIAsM JJ3 3xx1}}1v I::# : :C~Y..,. #.) cn % , ,S[ 9 9 9 9 :I#IOO$5$566\$&&$\22  ?  D"DIDGGsGGGM#,];;" Krc\i}|D]7}|D]2}|j}||vrg||<|||j38g}t|D]K}t j}||_t|||_||L|Sr ) ScriptTagr#rAr$r%r ScriptRecordrI)r r'rr=r)r*r+s rmergeScriptRecordsrM^s A $$ $ $A+C!||# cFMM!( # # # #  $ Caffhh#%% !!C&))  3 JrcdSr rr s rrOpstr) ScriptCountrLcdSr rr s rrOrOts4rc@tt|dS)Nc|jSr ) BaseScriptTagr=s rrOz..wsQ_rkeyr$r r s rrOrOvs$F 44%%%r)BaseScriptCountBaseScriptRecordc@tt|dS)Nc|jSr r"rUs rrOz..}sQ\rrVrXr s rrOrO}s ;Q;Q!R!R!Rr)r7r&)rLookup)Formatglyphs)r_ classDefs)Coverage LigGlyphCountLigGlyph)rb GlyphCount AttachPoint)MarkSetTableFormat MarkSetCountrbr) BaseTagCount BaselineTag)rVersion)tableTagtableGDEFGSUBGPOSBASEJSTFMATHct|t|jksJtt||jD]\}\}}|s | |tur-t d|j|j|Dd}d}|j j j D]B}|j dkr|j jgd|j jDzD] } | d| jD} t| dksJ| r | d} n|st#j}d|_t#jx} |_d| _d| _g| _|j jj||j jxjdz c_|} | j| | jd |st#j} || _t#j}d|_d|_ d|_!| g|_"|j j#?t#j#|j _#g|j j#_d|j j#_|j j#j||j j#xjdz c_| jjdd|gkr'|g| jjdd<| jxjdz c_DtIj%||||S) Nz[Have non-identical duplicates to resolve for '%s' but no GSUB. Are duplicates intended?: %sDFLTcg|] }|j Sr)r5rs rrzmerge..s'=== ===rc(g|]}|jdk |S)loclr])rvs rrzmerge..s$UUUalf>T>T1>T>T>Trr:rrxc|jSr r])rys rrOzmerge..sALrrV)&rduplicateGlyphsPerFont enumeratezipNotImplementedlogwarningfonts _merger__namerm ScriptListrLrKrAr<r>r3rr&r"rrrr FeatureListr#r7sort SingleSubstmappingr^ LookupFlag LookupType SubTableCountSubTable LookupListrmerge) rmtablesirmdups synthFeature synthLookupscriptlangsysfeaturer(subtables rrrs7 v;;#a677 7 7 7 7%c&!2J&K&KLL;5;5=E4   =E^33 KKm (      k,9. 5. 5F6))"M89==#)=#>===+ 5+ 5?UUg&:UUU7||q((((J%ajGG'B'/'='?'? 28 /3;3C3E3EEL0*.() ,.) /=DD\RRR /<<A<<*G(//888(--2H2H-III"<'355H'+H$"*/"3"3K-.K*-.K*01K-,4:K({-52:1D1F1F .8: .5=> .:K*188EEEK*66!;66?22A26;-GG;F-GO3BQB7O//14//W+ 5. 5`tQ''' KrcdSr rr lookupMaps r mapLookupsrs  Drc(Gddt}|jdvrdSt|jds i|j_|j|jjvr*||j|j}||jj|j<|jj|jS)NceZdZdZdS)/__merge_classify_context..ContextHelpercP|jdrd}d}nd}d}|jdrd}nd}||z}||_||_||_||_|dz|_|dkr|dz|_|d z|_ dS|d kr|d z|_|d z|_ dSdS) NSubstSubPosChain LookupRecordr:RuleRuleSet ClassRuleClassSet) __name__endswith startswithTypTyperChainTyprrr)rklassr_rrrrs r__init__z8__merge_classify_context..ContextHelper.__init__s~&&w// ~((11 s{HDHDIDJ$DM $~ 5D {{$v- ')3 1${2 '*4 rN)r __module__ __qualname__rrrr ContextHelperrs# 5 5 5 5 5rr)r:r_merge__ContextHelpers)objectr_hasattr __class__r)rrhelpers r__merge_classify_contextrs555555558 {)##t 4>#; < <302- {$.???t~t{;;=C-dk: > 0 ==rc|}|jdvret||jD]M}|st||jD]2}|st||jD]}|s||j|_3NdS|jdkr/t||jD]}|s||j|_dSJd|jz)N)r:rrrunknown format: %s)rr_getattrrrrr)rrcrsrlls rrrBs. %%''A {f$ ** G GB R(( G G!!Q^44GGB! )223E)FB&&G G G G   $// ? ?B !*2+=!>B   ? ? 5&444qrct|jdkr|j|dSJd|jz)Nr:rr)r_ ExtSubTablerrs rrr_sA {a ##I.....4&444qrcJ|jD]}|s||dSr )rr)rrsts rrrgs=m!!   i    !!rcJ|jD]}|s||dSr )r^r)rrrs rrros= [     Y  rcB|jdzr||j|_dSdS)N)rMarkFilteringSet)rmarkFilteringSetMaps rmapMarkFilteringSetsrws4 K 3D4I JKKrcJ|jD]}|s||dSr )r^r)rrrs rrr}s@ [44   2333344rc8fd|jD|_dS)Nc g|] }| Srr)rrrs rrzmapLookups..sGGGQIaLGGGrrrs `rrrs(GGGG$2FGGGDrcb|jD]&}|r|js |j|'dSr )r&rr)rrr(s rrrsK  ((     Y''''((rcvfd|jD|_|jdkr|j|_dSdS)Nc g|] }| Srr)rr featureMaps rrzmapFeatures..sBBB1ABBBrr/)r3r0)rrs `r mapFeaturesrsNBBBB0ABBBD u$$)$*>?%$rc|jr|j||jD]&}|r|js |j|'dSr )r<rr>r5)rrrs rrrsm 4 '' 333  **     j))))**rcb|jD]&}|r|js |j|'dSr )rLrAr)rrr=s rrrsK  ))    Z(((())rc|d}|d}|d}||fD]<}|s|jjrdt|jjjD}|jj||jj||rc|jjdkrS|jjrGdt|jjj D}|jj ||jjrS|jj rGdt|jjj D}|jj |>dS)Nrnrorpci|]\}}|| Srrrrrys r z"layoutPreMerge..sOOO$!QAOOOrci|]\}}|| Srrrs rrz"layoutPreMerge..s+'''!QAq'''rci|]\}}|| Srrrs rrz"layoutPreMerge..sXXX41a!QXXXr)getrmrr|r^rrrkMarkGlyphSetsDefrbrrr&r)fontrnrorptrrrs rlayoutPreMergers 88F  D 88F  D 88F  DD\77   7  MOO)AG4F4M*N*NOOOI G  ) )) 4 4 4 G  * *9 5 5 5 MJ&*44J/5''%.tz/J/S%T%T'''#"778KLLL 7  717#5 7XX9QW5H5V+W+WXXXJ G  * *: 6 6 6+77rc|d}|d}|d}||fD]!}|s|jjr1|jjr$t |jjj}|jj|t|jjj}|jj||jfdt|jjjD|jj_t|jjj}|jj|t|jjj|jj_ |jj rt |jj j}|jj||jj |t|jj j}|jj||jj ||jfdt|jj jD|jj _t|jj j}|jj||jj |t|jj j|jj _|rM|jjdkr=t|jjj}|jj |#dS)Nrnrorpc"g|] \}}|v | Srr)rrr( usedIndicess rrz#layoutPostMerge..s2111Aq #####rc"g|] \}}|v | Srr)rrrrs rrz#layoutPostMerge..s.)))aa;FVFVFVFVFVrr)rrmrrGregariousIdentityDictr&rAttendanceRecordingIdentityDictr=r|NonhashableDictrr7rr^rrrkrrbr) rrnrorprrrrrs @rlayoutPostMergers 88F  D 88F  D 88F  DD\9M9M   7  V17#5 V/0C0QRRJ G  * *: 6 6 69#1J G  * *: 6 6 6$,K1111%ag&9&GHH111AG  -))<)JKKJ G  * *: 6 6 6/2173F3T/U/UAG  , 7  M.qw/A/HIII G  * *9 5 5 5 G  ) )) 4 4 488J8QRRI G  * *9 5 5 5 G  ) )) 4 4 4#+K))))'(:(ABB)))AG  % ((:(ABBI G  * *9 5 5 5 G  ) )) 4 4 4-01C1J-K-KAG  * M *j88&5J/8''#"778KLLLs9M9Mr)J fontToolsr#fontTools.ttLib.tables.DefaultTablerfontTools.ttLib.tablesrfontTools.merge.baserrfontTools.merge.utillogging getLoggerrrr r,r8rIrMrmergeMapBaseScriptListsumrr rminrbsumDictsClassDef LigCaretList AttachListequalrAxis BaseTagListmaxrnrorprqrrrs onlyExisting getTableClassrr MultipleSubstAlternateSubst LigatureSubstReverseChainSingleSubst SinglePosPairPos CursivePos MarkBasePos MarkLigPos MarkMarkPosr ContextSubstChainContextSubst ContextPosChainContextPosrExtensionSubst ExtensionPosr^rrr<r5rrArrrrrrs <<<<<<++++++99999999""""g)** "    :$$#&   ('$$ RR!!      ""   &&"  !! 77 /(-2H M MX]3 U##  F$ ':u':6'B'B'K E( E( +>5+> ,, U     E  ' '((@@)(@F      $                    $>$>  $>N       55  5. H #X%:;;55<;5 HO!!! H     !   HOKKK  H   44! 4 H HHH H !!(("!( H #X%566@@76@  HO*** H   ))! )777B@M@M@M@M@Mr