o
    h)                     @   sn  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dZeeeeeeed	ed
_deeeeedd eeedd dZi dededed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 d"ed#eied$_eeeeeeeeeeeeeed%ed&_eeeeeeeeeeeeeed'ed(_dd)d eeeeed*Zd+d, Zi d-eded.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8ed9ed:ed;ed<eeeeeeeeeeeeeeeeeeed=	ed>_eed>d?d@ Z eeeeedAd edBd ee!dCd dD
edE_ee!dF edG_edH_eedIedJ_eedKedL_ee!e"eedMedN_eedNdOd@ Z dPd edQ_dRd edS_dTd edU_dVd edW_eedXdYd@ Z eedZd[d@ Z dS )\    )ttLibcffLib)T2WidthExtractor)DefaultTable)
add_methodmergeObjects)computeMegaCmap)*NzfontTools.merge)r	   tableTagtableVersion	numGlyphs
maxStoragemaxFunctionDefsmaxInstructionDefsmaxp   c                 C      dS Nr    bitr   r   j/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/fontTools/merge/tables.py<lambda>$       r   c                 C   r   r   r   r   r   r   r   r   (   r   )sizer	                              r
   r   fontRevisioncheckSumAdjustmentc                 C   r   r   r   lstr   r   r   r   /   r   magicNumberflags
unitsPerEmcreatedmodifiedxMinyMinxMaxyMaxmacStylelowestRecPPEMfontDirectionHintc                 C   r   )Nr   r   r&   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   r7   r8   r9   advanceHeightMaxminTopSideBearingminBottomSideBearing
yMaxExtentr>   r?   r@   numberOfVMetricsvheac                 C   r   r   r   r   r   r   r   r   d   r   )r   r	   r   r   r      	   c                 C   s   t | } tdd | D rdS tt| D ]*}| | d@ r&| |  dM  < q| | d@ r5| |  dO  < q| | dkr?d| |< qtt| }|d@ rN|d	M }|S )
Nc                 s   s    | ]}|d kV  qdS )r   Nr   ).0itemr   r   r   	<genexpr>o   s    z!mergeOs2FsType.<locals>.<genexpr>r      rI      r   i)listallrangelen	mergeBitsos2FsTypeMergeBitMap)r'   ifsTyper   r   r   mergeOs2FsTypem   s   rY   r	   versionxAvgCharWidthrX   panoseulUnicodeRange1ulUnicodeRange2ulUnicodeRange3ulUnicodeRange4fsFirstCharIndexfsLastCharIndexsTypoAscendersTypoDescendersTypoLineGapusWinAscentusWinDescent)	ulCodePageRange1ulCodePageRange2sxHeight
sCapHeightusDefaultCharusBreakCharusMaxContextusLowerOpticalPointSizeusUpperOpticalPointSizezOS/2c                 C   sL   t | || | jdk r|  jdM  _| jdkr$| jd@ r$|  jdM  _| S )Nr   ir   rI   )r   mergerZ   rX   )selfmtablesr   r   r   rr      s   


rr   c                 C   r   r   r   r&   r   r   r   r      r   c                 C   r   r   r   r&   r   r   r   r      r   c                 C   s   g S Nr   r&   r   r   r   r      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                 C   sN   t |D ]\}}|j D ]}|r|  | r|| qqt| ||S rv   )	enumerater   valuesremoveHintingisCompositeexpandr   rr   )rs   rt   ru   rW   tablegr   r   r   rr      s   
	c                 C      t |S rv   firstrs   r'   r   r   r   r          prepc                 C   r   rv   r   r   r   r   r   r      r   fpgmc                 C   r   rv   r   r   r   r   r   r      r   zcvt c                 C   r   rv   r   r   r   r   r   r      s    gaspzCFF c                 C   s6  t dd |D rtd|D ]}|j  q|d }|jd }|j}|j|j}}g }	g }
t| }|j	j	D ]}||vrD|	
| q8|

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

| q|j}|jj}td|t| ||j |jrt|jt|dD ]\}}||j|< |jj
d  q|jD ]<}|r|| }t }tg g ||}|| |j}||ur|jd n|}||kr|jd||  || ||< qqd||_t||_|
|	 |j	_	|S )	Nc                 s   s     | ]}t |jd  dV  qdS )r   FDSelectN)hasattrcff)rK   r   r   r   r   rM      s    zmerge.<locals>.<genexpr>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appendrQ   charsetCharStringslogdebugrT   r   GlobalSubrsextendcharStringsAreIndexedcharStringscharStringsIndexitemsobjectr   executewidthprogrampopinsertr   )rs   rt   ru   r   newcffnewfontprivatenewDefaultWidthXnewNominalWidthXstoredNamesStringsglyphOrderStringsr   r   chrsetnewcsrW   fontr   r   widthsDifferfontGlyphOrdercsgscdefaultWidthXToken	extractorr   r   r   r   rr      sr   








cmapc                 C   s   t |ds
t|| |j}dd | D }g | _td}t|t|kr?|jd d}d|_	d|_
d|_||_| j| |jd d}d|_	d	|_
d|_||_| jd| d| _t| j| _| S )
Nr   c                 S   s   i | ]\}}|d kr||qS )i  r   )rK   unigidr   r   r   
<dictcomp>@  s    zmerge.<locals>.<dictcomp>rN   r   
   r   rP   r   )r   r   r   r   ru   r   getTableModulerT   cmap_classes
platformID	platEncIDlanguager   r   r   numSubTables)rs   rt   ru   r   cmapBmpOnlymodule	cmapTabler   r   r   rr   9  s,   


)#	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headFlagsMergeBitMaprU   current_timeminrecalculaterV   rY   onlyExistingrr   sumDictssumListsr   r   r   r   <module>   sv  
	
	
!
	

G