
    jke1)                     ^   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dl d dlZ ej                  d      Zeeeeeeed	 ej(                  d
      _        deeeeed eeed dZi dedededd ded ee      dedededededededededd  d!ed"ei ej(                  d#      _        eeeeeeeeeeeeeed$ ej(                  d%      _        eeeeeeeeeeeeeed& ej(                  d'      _        dd( eeeeed)Zd* Zi d+eded,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8ed9ed:e ee       ee       ee       ee       ee       ee       ee       ee       ee      d;	 ej(                  d<      _         e ej(                  d<            d=        Z eeeeed> ed?  ee!      d@ dA
 ej(                  dB      _        ee!dCx ej(                  dD      _         ej(                  dE      _        eedF ej(                  dG      _        eedH ej(                  dI      _        ee!e"eedJ ej(                  dK      _         e ej(                  dK            dL        Z dM  ej(                  dN      _        dO  ej(                  dP      _        dQ  ej(                  dR      _        dS  ej(                  dT      _         e ej(                  dU            dV        Z  e ej(                  dW            dX        Z y)Y    )ttLibcffLib)T2WidthExtractor)DefaultTable)
add_methodmergeObjects)computeMegaCmap)*NzfontTools.merge)r
   tableTagtableVersion	numGlyphs
maxStoragemaxFunctionDefsmaxInstructionDefsmaxp   c                      yNr    bits    8/usr/lib/python3/dist-packages/fontTools/merge/tables.py<lambda>r   $           c                      yr   r   r   s    r   r   r   (   r   r   )sizer
                              r   r   fontRevisioncheckSumAdjustmentc                      yr   r   lsts    r   r   r   /   r   r   magicNumberflags
unitsPerEmcreatedmodifiedxMinyMinxMaxyMaxmacStylelowestRecPPEMfontDirectionHintc                      y)Nr   r   r*   s    r   r   r   ;   r   r   indexToLocFormatglyphDataFormathead)r
   r   r   ascentdescentlineGapadvanceWidthMaxminLeftSideBearingminRightSideBearing
xMaxExtentcaretSlopeRisecaretSlopeRuncaretOffsetnumberOfHMetricshhea)r
   r   r   r<   r=   r>   advanceHeightMaxminTopSideBearingminBottomSideBearing
yMaxExtentrC   rD   rE   numberOfVMetricsvheac                      yr   r   r   s    r   r   r   d   r   r   )r   r
   r   r   r       	   c                 &   t        |       } t        d | D              ryt        t        |             D ]<  }| |   dz  r| |xx   dz  cc<   | |   dz  r| |xx   dz  cc<   /| |   dk(  s8d| |<   >  t	        t
              |       }|dz  r|dz  }|S )	Nc              3   &   K   | ]	  }|d k(    yw)r   Nr   ).0items     r   	<genexpr>z!mergeOs2FsType.<locals>.<genexpr>o   s     
%419
%s   r      rO      r   i)listallrangelen	mergeBitsos2FsTypeMergeBitMap)r+   ifsTypes      r   mergeOs2FsTypera   m   s    
s)C

%
%% 3s8_ 	q6F?FgFVf_FfFVq[CF	 -Y+,S1F'Mr   r
   versionxAvgCharWidthr`   panoseulUnicodeRange1ulUnicodeRange2ulUnicodeRange3ulUnicodeRange4fsFirstCharIndexfsLastCharIndexsTypoAscendersTypoDescendersTypoLineGapusWinAscentusWinDescent)	ulCodePageRange1ulCodePageRange2sxHeight
sCapHeightusDefaultCharusBreakCharusMaxContextusLowerOpticalPointSizeusUpperOpticalPointSizezOS/2c                     t        j                  | ||       | j                  dk  r| xj                  dz  c_        | j                  dk\  r$| j                  dz  r| xj                  dz  c_        | S )Nr   ir    rO   )r   mergerb   r`   )selfmtabless      r   r{   r{      s[    tQ'||aw||q ;;KK7"KKr   c                      yr   r   r*   s    r   r   r      r   r   c                      yr   r   r*   s    r   r   r      r   r   c                     g S Nr   r*   s    r   r   r      s    b r   )
r
   r   
formatTypeisFixedPitchminMemType42maxMemType42minMemType1maxMemType1mapping
extraNamespost)r   metricsvmtxhmtx)r   namesname)r
   r   loca)r   glyphs
glyphOrder_reverseGlyphOrderaxisTagsglyfc                    t        |      D ]h  \  }}|j                  j                         D ]F  }|r|j                          |j	                         s|j                         s6|j                  |       H j t        j                  | ||      S r   )		enumerater   valuesremoveHintingisCompositeisVarCompositeexpandr   r{   )r|   r}   r~   r_   tablegs         r   r{   r{      s}    f% 	 5$$& 	 A ! }}!"2"2"4	 	  dAv..r   c                     t        |      S r   firstr|   r+   s     r   r   r      
    s r   prepc                     t        |      S r   r   r   s     r   r   r      r   r   fpgmc                     t        |      S r   r   r   s     r   r   r      r   r   zcvt c                     t        |      S r   r   r   s     r   r   r      s    : r   gaspzCFF c                    t        d |D              rt        d      |D ]  }|j                  j                           |d   }|j                  d   }|j                  }|j
                  |j                  }}g }	g }
t        |j                               }|j                  j                  D ])  }||vr|	j                  |       |
j                  |       + t        |j                        }|j                  }t        j                  dt!        |             t#        |dd  d      D ]  \  }}|j                  d   }|j                  j
                  |j                  j                  }}||k7  xs ||k7  }||_        t        |j                               }|j                  j                  D ]  }||v s|
j                  |        |j                  }|j                  j$                  }t        j                  d|t!        |             |j'                  |j                         |j(                  r\t#        |j*                  t!        |            D ]9  \  }}||j*                  |<   |j,                  j.                  j                  d        ; |j*                  D ]  }|r||   }t1               }t3        g g ||      }|j5                  |       |j6                  }||ur|j8                  j;                  d       n|}||k7  r|j8                  j=                  d||z
         ||   ||<     ||_        t!        |      |_        |
|	z   |j                  _	        |S )Nc              3   N   K   | ]  }t        |j                  d    d        yw)r   FDSelectN)hasattrcff)rS   r   s     r   rU   zmerge.<locals>.<genexpr>   s     
A7599Q<,
As   #%z1Merging CID-keyed CFF tables is not supported yetr   zFONT 0 CharStrings: %d.r   )startzFont %d CharStrings: %d.) anyNotImplementedErrorr   desubroutinizePrivatedefaultWidthXnominalWidthXsetgetGlyphOrderstringsappendrY   charsetCharStringslogdebugr\   r   GlobalSubrsextendcharStringsAreIndexedcharStringscharStringsIndexitemsobjectr   executewidthprogrampopinsertr   )r|   r}   r~   r   newcffnewfontprivatenewDefaultWidthXnewNominalWidthXstoredNamesStringsglyphOrderStringsr   r   chrsetnewcsr_   fontr   r   widthsDifferfontGlyphOrdercsgscdefaultWidthXToken	extractorr   s                              r   r{   r{      s   

A&
AA!"UVV #		  "# AYFjjmGooG)0)>)>@U@U&W**,-J'' +z!%%d+$$T*	+ '//"FEII'U4fQRj2 ##5yy|LL&&LL&& %
 --RBR1R 	 T//12LL(( 	/D~%!((.	/ YY""		,aR9dll#&&$R^^3u:F :4*+!!$'&&,,33D9: NN 	#DtH%+X",R]DVW	!!!$! 22IIMM!$)E,,II$$Q0@(@AT(E$K	#-##J GOFG/2DDGOOMr   cmapc                    t        |d      st        ||       |j                  }|j                         D ci c]  \  }}|dk  s|| }}}g | _        t        j                  d      }t        |      t        |      k7  rL |j                  d   d      }d|_	        d|_
        d|_        ||_        | j                  j                  |        |j                  d   d      }d|_	        d|_
        d|_        ||_        | j                  j                  d|       d| _        t        | j                        | _        | S c c}}w )	Nr   i  rV   r    
   r   rX   r   )r   r	   r   r   r~   r   getTableModuler\   cmap_classes
platformID	platEncIDlanguager   r   r   numSubTables)	r|   r}   r~   r   unigidcmapBmpOnlymodule	cmapTables	            r   r{   r{   7  s&    1f6"66D,0JJLJSC6M38JKJDK!!&)F
;3t9$+F''+B/	 	 			9%&##A&q)IIII INKKq)$DDKK(DK+ Ks   D=D=)#	fontToolsr   r   fontTools.misc.psCharStringsr   #fontTools.ttLib.tables.DefaultTabler   fontTools.merge.baser   r   fontTools.merge.cmapr	   fontTools.merge.utillogging	getLoggerr   maxequalsumr   getTableClassmergeMap
bitwise_orbitwise_andheadFlagsMergeBitMapr]   current_timeminrecalculater^   ra   onlyExistingr{   sumDictssumListsr   r   r   <module>r      s4  
 $ 9 < 9 0 "  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#(& %Z0$Z0S!s#!%(& %+C0+C0;(   F  $B E'( ) 
! H% (   F  $ O    F  $':u':':6'B'K (   F  $ 
(   F  $ %(   F  $ E'(/ )/ (D   F  $'C   F  $'C   F  $(   F  $
 E'(B )BJ E'( )r   