o
    i*                     @   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	numGlyphsZ
maxStorageZmaxFunctionDefsZmaxInstructionDefsZmaxp   c                 C      dS Nr    bitr   r   e/var/www/html/eduruby.in/lip-sync/lip-sync-env/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   ZfontRevisionZcheckSumAdjustmentc                 C   r   r   r   lstr   r   r   r   /   r   ZmagicNumberflagsZ
unitsPerEmcreatedmodifiedZxMinZyMinZxMaxZyMaxZmacStyleZlowestRecPPEMZfontDirectionHintc                 C   r   )Nr   r   r    r   r   r   r   ;   r   ZindexToLocFormatZglyphDataFormathead)r	   r
   r   ascentdescentlineGapZadvanceWidthMaxZminLeftSideBearingZminRightSideBearingZ
xMaxExtentcaretSlopeRisecaretSlopeRuncaretOffsetZnumberOfHMetricsZhhea)r	   r
   r   r&   r'   r(   ZadvanceHeightMaxZminTopSideBearingZminBottomSideBearingZ
yMaxExtentr)   r*   r+   ZnumberOfVMetricsZ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      r,      r   i)listallrangelen	mergeBitsos2FsTypeMergeBitMap)r!   ifsTyper   r   r   mergeOs2FsTypem   s   r<   r	   versionZxAvgCharWidthr;   ZpanoseZulUnicodeRange1ZulUnicodeRange2ZulUnicodeRange3ZulUnicodeRange4ZfsFirstCharIndexZfsLastCharIndexZsTypoAscenderZsTypoDescenderZsTypoLineGapZusWinAscentZusWinDescent)	ZulCodePageRange1ZulCodePageRange2ZsxHeightZ
sCapHeightZusDefaultCharZusBreakCharZusMaxContextZusLowerOpticalPointSizeZ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   r,   )r   merger=   r;   )selfmtablesr   r   r   r?      s   


r?   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
   Z
formatTypeZisFixedPitchZminMemType42ZmaxMemType42ZminMemType1ZmaxMemType1mappingZ
extraNamespost)r
   ZmetricsZvmtxZhmtx)r
   namesname)r	   r
   Zloca)r
   glyphs
glyphOrderZ_reverseGlyphOrderZaxisTagsZglyfc                 C   sN   t |D ]\}}|j D ]}|r|  | r|| qqt| ||S rC   )	enumeraterH   valuesZremoveHintingZisCompositeexpandr   r?   )r@   rA   rB   r:   tablegr   r   r   r?      s   
	c                 C      t |S rC   firstr@   r!   r   r   r   r          prepc                 C   rO   rC   rP   rR   r   r   r   r      rS   Zfpgmc                 C   rO   rC   rP   rR   r   r   r   r      rS   zcvt c                 C   rO   rC   rP   rR   r   r   r   r      s    Z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   ZFDSelectN)hasattrcff)r.   rM   r   r   r   r0      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NotImplementedErrorrV   ZdesubroutinizeZPrivatedefaultWidthXnominalWidthXsetZgetGlyphOrderstringsappendr4   charsetZCharStringslogdebugr7   rJ   ZGlobalSubrsextendZcharStringsAreIndexedZcharStringsZcharStringsIndexitemsobjectr   executewidthprogrampopinsertr   )r@   rA   rB   rM   ZnewcffZnewfontprivateZnewDefaultWidthXZnewNominalWidthXZstoredNamesStringsZglyphOrderStringsrI   rG   ZchrsetZnewcsr:   ZfontrZ   r[   ZwidthsDifferZfontGlyphOrdercsgscZdefaultWidthXTokenZ	extractorrf   r   r   r   r?      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| |j}|r{|jd
 d
}d|_	d|_
d|_i |_||_| jd| d| _t| j| _| S )Nrn   c                 S   s   i | ]\}}|d kr||qS )i  r   )r.   unigidr   r   r   
<dictcomp>?  s    zmerge.<locals>.<dictcomp>r1   r   
   r   r3   r   r   r   )rU   r   rn   rc   rB   r   ZgetTableModuler7   Zcmap_classesZ
platformIDZ	platEncIDlanguager^   ri   uvsDictr   ZnumSubTables)	r@   rA   rB   rn   ZcmapBmpOnlymoduleZ	cmapTablert   ZuvsTabler   r   r   r?   9  s>   


)#Z	fontToolsr   r   ZfontTools.misc.psCharStringsr   Z#fontTools.ttLib.tables.DefaultTabler   ZfontTools.merge.baser   r   ZfontTools.merge.cmapr   ZfontTools.merge.utillogging	getLoggerr`   maxequalsumrQ   ZgetTableClassZmergeMapZ
bitwise_orZbitwise_andZheadFlagsMergeBitMapr8   current_timeminZrecalculater9   r<   ZonlyExistingr?   ZsumDictsZsumListsr   r   r   r   <module>   sv  
	
	
!
	

G