)Ej.,ddlmZmZddlmZddlmZddlmZm Z ddl m Z ddl Tddl Z e jdZeeeeeeed ejd _d eeeeed eeed d Zidedededddedeededededededededededd d!ed"eiejd#_eeeeeeeeeeeeeed$ejd%_eeeeeeeeeeeeeed&ejd'_d d(eeeeed)Zd*Zid+eded,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8ed9ed:eeeeeeeeeeeeeeeeeeed; ejd<_eejd<d=Z eeeeed>ed?ee!d@dA ejdB_ee!dCxejdD_ejdE_eedFejdG_eedHejdI_ee!e"eedJejdK_eejdKdLZ dMejdN_dOejdP_dQejdR_dSejdT_eejdUdVZ eejdWdXZ dS)Y)ttLibcffLib)T2WidthExtractor) DefaultTable) add_method mergeObjects)computeMegaCmap)*NzfontTools.merge)r tableTag tableVersion numGlyphs maxStoragemaxFunctionDefsmaxInstructionDefsmaxpcdSNrbits HC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/merge/tables.pyr$s1cdSrrrs rrr(sAr) sizer  r r fontRevisioncheckSumAdjustmentcdSrrlsts rrr/sar magicNumberflags unitsPerEmcreatedmodifiedxMinyMinxMaxyMaxmacStyle lowestRecPPEMfontDirectionHintcdS)Nrrr)s rrr;sQrindexToLocFormatglyphDataFormathead)r r r ascentdescentlineGapadvanceWidthMaxminLeftSideBearingminRightSideBearing xMaxExtentcaretSlopeRise caretSlopeRun caretOffsetnumberOfHMetricshhea)r r r r;r<r=advanceHeightMaxminTopSideBearingminBottomSideBearing yMaxExtentrBrCrDnumberOfVMetricsvheacdSrrrs rrrdsQr)rr rrr cxt|}td|DrdStt|D]K}||dzr||xxdzcc<||dzr||xxdzcc<:||dkrd||<Lt t |}|dzr|dz}|S) Nc3"K|] }|dkV dS)rNr).0items r z!mergeOs2FsType..os& % %419 % % % % % %rr rNri)listallrangelen mergeBitsos2FsTypeMergeBitMap)r*ifsTypes rmergeOs2FsTyper`ms s))C % % % % %%%q3s88__   q6F?  FFFg FFFF Vf_  FFFf FFFF Vq[[CF ,Y+ , ,S 1 1F ' Mrr version xAvgCharWidthr_panoseulUnicodeRange1ulUnicodeRange2ulUnicodeRange3ulUnicodeRange4fsFirstCharIndexfsLastCharIndex sTypoAscendersTypoDescender sTypoLineGap usWinAscent usWinDescent) ulCodePageRange1ulCodePageRange2sxHeight sCapHeight usDefaultChar usBreakChar usMaxContextusLowerOpticalPointSizeusUpperOpticalPointSizezOS/2ctj||||jdkr|xjdzc_|jdkr|jdzr|xjdzc_|S)NrirrN)rmergerar_)selfmtabless rrzrzsgtQ''' |a w  |q ;  # KK7 "KK KrcdSrrr)s rrrsrcdSrrr)s rrrsqrcgSNrr)s rrrsbr) r r formatType isFixedPitch minMemType42 maxMemType42 minMemType1 maxMemType1mapping extraNamespost)r metricsvmtxhmtx)r namesname)r r loca)r glyphs glyphOrder_reverseGlyphOrderaxisTagsglyfct|D]`\}}|jD]A}|r||r||Bat j|||Sr) enumeratervalues removeHinting isCompositeexpandrrz)r{r|r}r^tablegs rrzrzsf%%   5$$&&  A "!!!}}    dAv . ..rc t|Srfirstr{r*s rrr srprepc t|Srrrs rrrrrfpgmc t|Srrrs rrrrrzcvt c t|Srrrs rrrs::rgaspzCFF chtd|Drtd|D]}|j|d}|jd}|j}|j|j}}g} g} t|} |j j D]1} | | vr| | | | 2t|j } |j }tdt!|t#|dddD]\}}|jd}|jj|jj}}||kp||k}||_t|}|j j D]} | |vr| | |j }|jj}td|t!|| |j |jrRt#|jt!|D].\}} ||j| <|jj d/|jD]} |r|| }t1}t3gg||}|||j}||ur|jdn|}||kr|jd||z || || <| |_ t!| |_| | z|j _ |S)Nc3LK|]}t|jddV dS)rFDSelectN)hasattrcff)rRrs rrTzmerge..s2 A A759Q< , , A A A A A Arz1Merging CID-keyed CFF tables is not supported yetrzFONT 0 CharStrings: %d.r)startzFont %d CharStrings: %d.) anyNotImplementedErrorrdesubroutinizePrivate defaultWidthX nominalWidthXset getGlyphOrderstringsappendrXcharset CharStringslogdebugr[r GlobalSubrsextendcharStringsAreIndexed charStringscharStringsIndexitemsobjectrexecutewidthprogrampopinsertr )r{r|r}rnewcffnewfontprivatenewDefaultWidthXnewNominalWidthXstoredNamesStringsglyphOrderStringsrrchrsetnewcsr^fontrr widthsDifferfontGlyphOrdercsgscdefaultWidthXToken extractorrs rrzrzsr A A& A A AAAW!"UVVV##   """" AYFjmGoG)0)>@U&W**,,--J'++ z ! !  % %d + + + +  $ $T * * * * '/ " "F  EII'U444fQRRj222%#%#5y| L & L &% - - RBR1R  T//1122L( / /D~%%!((...   Y " ,aR999 dl###  & :$R^3u::FFF : :4*+!$'&,33D9999N # #D BtH%+XX",R]DVWW !!!$$$! 222IMM!$$$$)E,,,I$$Q0@(@AAAT(E$KK #"GOF G/2DDGO Mrcmapc2t|dst|||j}d|D}g|_t jd}t|t|krL|jdd}d|_ d|_ d|_ ||_|j ||jdd}d|_ d|_ d|_ ||_|j d||j}|rT|jd d }d|_ d |_ d|_ i|_||_|j d|d|_t|j|_|S) Nrc&i|]\}}|dk ||S)ir)rRunigids r zmerge..?s#JJJSC6MM3MMMrrUr rrWrr$r )rr rrr}rgetTableModuler[ cmap_classes platformID platEncIDlanguagerruvsDictr numSubTables) r{r|r}r cmapBmpOnlymodule cmapTableruvsTables rrzrz9s 1f  #6""" 6DJJDJJLLJJJKDK  !& ) )F ;3t99$$+F'+B//      9%%%&#A&q))IIII INKq)$$$iG (*6&r*2.. " 1h'''DDK((D Kr)# fontToolsrrfontTools.misc.psCharStringsr#fontTools.ttLib.tables.DefaultTablerfontTools.merge.baserrfontTools.merge.cmapr fontTools.merge.utillogging getLoggerrmaxequalsumr getTableClassmergeMap bitwise_or bitwise_andheadFlagsMergeBitMapr\ current_timemin recalculater]r` onlyExistingrzsumDictssumListsrrrrsz $#######999999<<<<<<99999999000000""""g)**  ( (F$  }   ((C(C(-- ( 5 (  YY+ , , (%(|( ( C( C( C( C((S( !("#($u%((F$, #((F$$ #((F$$  0(((s(U (  n (  e (z(z(z(z((s(S(c(C( 3!("C#(&% Z00$ Z00 S!!,s##!\%((<&& L%%+|C00+|C00;(((F$B  E  ' '((  )(  !M =|H%% . ( (F$OOF$':u':6'B'B'K  ((F$ ((F$ % ((F$  E  ' '(( / /)( /(D'CF$'C'CF$'C'CF$((F$   E  ' '((DD)(DN  E  ' '((&&)(&&&r