L i*^ddlmZmZddlmZddlmZddlmZm Z ddl m Z ddl ddl Z e jdZeeeeeeed ej(d _d eeeeed eeed d Zidedededddedeededededededededededd d!ed"eiej(d#_eeeeeeeeeeeeeed$ej(d%_eeeeeeeeeeeeeed&ej(d'_d d(eeeeed)Zd*Zid+eded,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8ed9ed:eeeeeeeeeeeeeeeeeeed; ej(d<_eej(d<d=Z eeeeed>ed?ee!d@dA ej(dB_ee!dCxej(dD_ej(dE_eedFej(dG_eedHej(dI_ee!e"eedJej(dK_eej(dKdLZ dMej(dN_dOej(dP_dQej(dR_dSej(dT_eej(dUdVZ eej(dWdXZ y)Y)ttLibcffLib)T2WidthExtractor) DefaultTable) add_method mergeObjects)computeMegaCmap)*NzfontTools.merge)r tableTag tableVersion numGlyphs maxStoragemaxFunctionDefsmaxInstructionDefsmaxpcyNrbits \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/merge/tables.pyr$cyrrrs rrr(rr) sizer  r r fontRevisioncheckSumAdjustmentcyrrlsts rrr/rr magicNumberflags unitsPerEmcreatedmodifiedxMinyMinxMaxyMaxmacStyle lowestRecPPEMfontDirectionHintcy)Nrrr*s rrr;rrindexToLocFormatglyphDataFormathead)r r r ascentdescentlineGapadvanceWidthMaxminLeftSideBearingminRightSideBearing xMaxExtentcaretSlopeRise caretSlopeRun caretOffsetnumberOfHMetricshhea)r r r r<r=r>advanceHeightMaxminTopSideBearingminBottomSideBearing yMaxExtentrCrDrEnumberOfVMetricsvheacyrrrs rrrdrr)rr rrr  c&t|}td|Drytt|D]<}||dzr||xxdzcc<||dzr||xxdzcc</||dk(s8d||<>t t |}|dzr|dz}|S) Nc3&K|] }|dk( yw)rNr).0items r z!mergeOs2FsType..os %419 %sr rOri)listallrangelen mergeBitsos2FsTypeMergeBitMap)r+ifsTypes rmergeOs2FsTyperams s)C % %%3s8_  q6F? Fg F Vf_ Ff F Vq[CF -Y+ ,S 1F ' Mrr version xAvgCharWidthr`panoseulUnicodeRange1ulUnicodeRange2ulUnicodeRange3ulUnicodeRange4fsFirstCharIndexfsLastCharIndex sTypoAscendersTypoDescender sTypoLineGap usWinAscent usWinDescent) ulCodePageRange1ulCodePageRange2sxHeight sCapHeight usDefaultChar usBreakChar usMaxContextusLowerOpticalPointSizeusUpperOpticalPointSizezOS/2ctj||||jdkr|xjdzc_|jdk\r$|jdzr|xjdzc_|S)Nrir rO)rmergerbr`)selfmtabless rr{r{s[tQ' ||a w  ||q ;;  KK7 "K Krcyrrr*s rrrrrcyrrr*s rrrrrcgSNrr*s rrrsbr) r r formatType isFixedPitch minMemType42 maxMemType42 minMemType1 maxMemType1mapping extraNamespost)r metricsvmtxhmtx)r namesname)r r loca)r glyphs glyphOrder_reverseGlyphOrderaxisTagsglyfct|D]X\}}|jjD]6}|r|j|j s&|j |8Zt j|||Sr) enumeratervalues removeHinting isCompositeexpandrr{)r|r}r~r_tablegs rr{r{srf%  5$$& A!}}      dAv ..rct|Srfirstr|r+s rrr srprepct|Srrrs rrrrrfpgmct|Srrrs rrrrrzcvt ct|Srrrs rrrs:rgaspzCFF ctd|Dr td|D]}|jj|d}|jd}|j}|j |j }}g} g} t|j} |jjD])} | | vr| j| | j| +t|j} |j}tjdt!|t#|dddD]\}}|jd}|jj |jj }}||k7xs||k7}||_t|j}|jjD]} | |vs| j| |j}|jj$}tjd|t!|| j'|j|j(r\t#|j*t!|D]9\}} ||j*| <|j,j.jd;|j*D]} |r|| }t1}t3gg||}|j5||j6}||ur|j8j;dn|}||k7r|j8j=d||z || || <| |_ t!| |_| | z|j_ |S)Nc3NK|]}t|jddyw)rFDSelectN)hasattrcff)rSrs rrUzmerge..s A7599Q< , As#%z1Merging CID-keyed CFF tables is not supported yetrzFONT 0 CharStrings: %d.r)startzFont %d CharStrings: %d.) anyNotImplementedErrorrdesubroutinizePrivate defaultWidthX nominalWidthXset getGlyphOrderstringsappendrYcharset CharStringslogdebugr\r GlobalSubrsextendcharStringsAreIndexed charStringscharStringsIndexitemsobjectrexecutewidthprogrampopinsertr )r|r}r~rnewcffnewfontprivatenewDefaultWidthXnewNominalWidthXstoredNamesStringsglyphOrderStringsrrchrsetnewcsr_fontrr widthsDifferfontGlyphOrdercsgscdefaultWidthXToken extractorrs rr{r{s A& AA!"UVV#   "#AYFjjmGooG)0)>)>@U@U&W**,-J''+ z !  % %d +  $ $T * + '// "F   EII'U4fQRj2%#5yy| LL & & LL & &% - - RBR1R  T//12LL(( /D~%!((. /   YY " " ,aR9 dll#  & &$R^^3u:F :4*+!!$'&&,,33D9 :NN #DtH%+X",R]DVW !!!$! 22IIMM!$)E,,II$$Q0@(@AT(E$K #-%#NGOF G/2DDGOO MrcmapcJt|ds t|||j}|jDcic]\}}|dks ||}}}g|_t j d}t|t|k7rL|jdd}d|_ d|_ d|_ ||_|jj||jdd}d|_ d|_ d|_ ||_|jjd||j} | rT|jd d } d| _ d | _ d| _ i| _| | _|jjd| d|_t|j|_|Scc}}w) NrirVr rrXrr%r!)rr rrr~rgetTableModuler\ cmap_classes platformID platEncIDlanguagerruvsDictr numSubTables) r|r}r~runigid cmapBmpOnlymodule cmapTableruvsTables rr{r{9s 1f 6" 66D,0JJLJSC6M38JKJDK  ! !& )F ;3t9$+F''+B/      9%&##A&q)IIII INKKq)$iiG*6&&r*2. " 1h'DDKK(D KCKs FF)# fontToolsrrfontTools.misc.psCharStringsr#fontTools.ttLib.tables.DefaultTablerfontTools.merge.baserrfontTools.merge.cmapr fontTools.merge.utillogging getLoggerrmaxequalsumr getTableClassmergeMap bitwise_or bitwise_andheadFlagsMergeBitMapr] current_timemin recalculater^ra onlyExistingr{sumDictssumListsrrrrs4 $9<90"g)*  (F$   ((C(C(- ( 5 (  Y+ , (%(|( ( C( C( C( C((S( !("#($u%(F$, #(F$$ #(F$$  0(((s(U (  n (  e (z(z(z(z((s(S(c(C( 3!("C#(&%Z0$Z0S!s#!%(& %+C0+C0;(F$B E   '( )  ! H%  (F$OF$':u':':6'B'K  (F$ (F$ % (F$ E   '( /) /(DF$'CF$'CF$(F$  E   '(D)DN E   '(&)&r