
    ]Mh*                        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T 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 dS )Y    )ttLibcffLib)T2WidthExtractor)DefaultTable)
add_methodmergeObjects)computeMegaCmap)*NzfontTools.merge)r
   tableTagtableVersion	numGlyphs
maxStoragemaxFunctionDefsmaxInstructionDefsmaxp   c                     dS Nr    bits    V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/merge/tables.py<lambda>r   $   s    1     c                     dS r   r   r   s    r   r   r   (   s    A r   )sizer
                              r   r   fontRevisioncheckSumAdjustmentc                     dS r   r   lsts    r   r   r   /   s    a r   magicNumberflags
unitsPerEmcreatedmodifiedxMinyMinxMaxyMaxmacStylelowestRecPPEMfontDirectionHintc                     dS )Nr   r   r)   s    r   r   r   ;   s    Q 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
yMaxExtentrB   rC   rD   numberOfVMetricsvheac                     dS r   r   r   s    r   r   r   d   s    Q r   )r   r
   r   r   r      	   c                 x   t          |           } t          d | D                       rdS t          t          |                     D ]K}| |         dz  r| |xx         dz  cc<   | |         dz  r| |xx         dz  cc<   :| |         dk    rd| |<   L t	          t
                    |           }|dz  r|dz  }|S )	Nc              3   "   K   | ]
}|d k    V  dS )r   Nr   ).0items     r   	<genexpr>z!mergeOs2FsType.<locals>.<genexpr>o   s&      
%
%419
%
%
%
%
%
%r   r      rN      r   i)listallrangelen	mergeBitsos2FsTypeMergeBitMap)r*   ifsTypes      r   mergeOs2FsTyper`   m   s    
s))C

%
%
%
%
%%% q 3s88__ 	 	q6F? 	FFFgFFFFVf_ 	FFFfFFFFVq[[CF,Y+,,S1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   rN   )r   mergera   r_   )selfmtabless      r   rz   rz      sg    tQ'''|aw|q ; 	#KK7"KKKr   c                     dS r   r   r)   s    r   r   r      s     r   c                     dS r   r   r)   s    r   r   r      s    q 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 ]`\  }}|j                                        D ]A}|r|                                 |                                r|                    |           Bat          j        | ||          S r   )	enumerater   valuesremoveHintingisCompositeexpandr   rz   )r{   r|   r}   r^   tablegs         r   rz   rz      s    f%% 	  	 5$$&& 	  	 A " !!! }}  	  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                 h   t          d |D                       rt          d          |D ]}|j                                         |d         }|j        d         }|j        }|j        |j        }}g }	g }
t          |                                          }|j	        j	        D ]1}||vr|	
                    |           |

                    |           2t          |j                  }|j        }t                              dt!          |                     t#          |dd          d          D ]\  }}|j        d         }|j        j        |j        j        }}||k    p||k    }||_        t          |                                          }|j	        j	        D ]}||v r|

                    |           |j        }|j        j        }t                              d|t!          |                     |                    |j                   |j        rRt#          |j        t!          |                    D ].\  }}||j        |<   |j        j        
                    d            /|j        D ]}|r||         }t1                      }t3          g g ||          }|                    |           |j        }||ur|j                            d           n|}||k    r|j                            d||z
             ||         ||<   ||_        t!          |          |_        |
|	z   |j	        _	        |S )Nc              3   L   K   | ]}t          |j        d          d          V   dS )r   FDSelectN)hasattrcff)rR   r   s     r   rT   zmerge.<locals>.<genexpr>   s2      
A
A759Q<,,
A
A
A
A
A
Ar   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appendrX   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   rz   rz      sr   

A
A&
A
A
AAA W!"UVVV # #	  """"AYFjmGoG)0)>@U&W**,,--J' + +z!!%%d++++$$T****'/""FEII'U444fQRRj222 %# %#5y|L&L& %
 --RBR1R 	 T//1122L( 	/ 	/D~%%!((...Y"		,aR999dl###& 	:$R^3u::FFF : :4*+!$'&,33D9999N 	# 	#D BtH%+XX",R]DVWW	!!!$$$! 222 IMM!$$$$)E,,,I$$Q0@(@AAAT(E$KK	#" GOFG/2DDGOMr   cmapc                 2   t          |d          st          ||           |j        }d |                                D             }g | _        t          j        d          }t          |          t          |          k    rL |j        d         d          }d|_	        d|_
        d|_        ||_        | j                            |            |j        d         d          }d|_	        d|_
        d|_        ||_        | j                            d|           |j        }|rT |j        d	         d	          }d|_	        d
|_
        d|_        i |_        ||_        | j                            d|           d| _        t          | j                  | _        | S )Nr   c                 &    i | ]\  }}|d k    ||S )i  r   )rR   unigids      r   
<dictcomp>zmerge.<locals>.<dictcomp>?  s#    JJJSC6MM3MMMr   rU   r   
   r   rW   r   r$   r    )r   r	   r   r   r}   r   getTableModuler[   cmap_classes
platformID	platEncIDlanguager   r   uvsDictr   numSubTables)	r{   r|   r}   r   cmapBmpOnlymodule	cmapTabler   uvsTables	            r   rz   rz   9  s   1f #6"""6DJJDJJLLJJJKDK!&))F
;3t99$$+F'+B//	 	 			9%%%&#A&q))IIII INKq)$$$iG 	(*6&r*2.."1h'''DDK((DKr   )#	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]   r`   onlyExistingrz   sumDictssumListsr   r   r   <module>r     sz  
 $ # # # # # # # 9 9 9 9 9 9 < < < < < < 9 9 9 9 9 9 9 9 0 0 0 0 0 0 " " " "  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#(& %Z00$Z00S!!,s##!\%((<&& L%%+|C00+|C00;( ( (  F   $B E''((  )( 
!M =|H%% .( (  F   $ O O   F   $':u':6'B'B'K ( (  F   $ 
( (  F   $ %( (  F   $ E''((/ / )(/ (D'C  F   $'C'C  F   $'C'C  F   $( (  F   $
 E''((D D )(DN E''((& & )(& & &r   