a
    w=icx!                     @   s  d dl mZ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eeedd eeeeeeeeeeeedd eed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eeeeeeeeeeeeeeee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dd ed d eed!d d"
ed#_eed$ ed%_ed&_eed'ed(_eed)ed*_eee d+ed,_eed,d-d Zd.d ed/_d0d ed1_d2d ed3_d4d ed5_eed6d7d Zeed8d9d ZdS ):    )ttLibcffLib)DefaultTable)
add_methodmergeObjects)computeMegaCmap)*NzfontTools.merge)r   tableTagtableVersion	numGlyphsZ
maxStorageZmaxFunctionDefsZmaxInstructionDefsZmaxp   c                 C   s   dS Nr    bitr   r   g/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/fontTools/merge/tables.py<lambda>#       r   c                 C   s   dS r   r   r   r   r   r   r   '   r   )sizer                              c                 C   s   dS r   r   lstr   r   r   r   .   r   c                 C   s   dS )Nr   r   r   r   r   r   r   :   r   )r	   r
   ZfontRevisionZcheckSumAdjustmentZmagicNumberflagsZ
unitsPerEmcreatedmodifiedZxMinZyMinZxMaxZyMaxZmacStyleZlowestRecPPEMZfontDirectionHintZ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   s   dS r   r   r   r   r   r   r   c   r   )r   r   r   r   r      	   c                 C   s   t | } tdd | D rdS tt| D ]T}| | d@ rL| |  dM  < q*| | d@ rj| |  dO  < q*| | dkr*d| |< q*tt| }|d@ r|d	M }|S )
Nc                 s   s   | ]}|d kV  qdS )r   Nr   ).0itemr   r   r   	<genexpr>m   r   z!mergeOs2FsType.<locals>.<genexpr>r      r*      r   i)listallrangelen	mergeBitsos2FsTypeMergeBitMap)r   ifsTyper   r   r   mergeOs2FsTypek   s    
r:   )r   r	   versionZxAvgCharWidthr9   ZpanoseZulUnicodeRange1ZulUnicodeRange2ZulUnicodeRange3ZulUnicodeRange4ZfsFirstCharIndexZfsLastCharIndexZsTypoAscenderZsTypoDescenderZsTypoLineGapZusWinAscentZusWinDescentZulCodePageRange1ZulCodePageRange2ZsxHeightZ
sCapHeightZusDefaultCharZusBreakCharZusMaxContextZusLowerOpticalPointSizeZusUpperOpticalPointSizezOS/2c                 C   sL   t | || | jdk r&|  jdM  _| jdkrH| jd@ rH|  jdM  _| S )Nr   ir   r*   )r   merger;   r9   )selfmtablesr   r   r   r=      s    


r=   c                 C   s   dS r   r   r   r   r   r   r      r   c                 C   s   dS 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glyfc                 C   sN   t |D ]6\}}|j D ]"}|r*|  | r|| qqt| ||S rA   )	enumeraterF   valuesZremoveHintingZisCompositeexpandr   r=   )r>   r?   r@   r8   tablegr   r   r   r=      s    c                 C   s   t |S rA   firstr>   r   r   r   r   r      r   prepc                 C   s   t |S rA   rM   rO   r   r   r   r      r   Zfpgmc                 C   s   t |S rA   rM   rO   r   r   r   r      r   zcvt c                 C   s   t |S rA   rM   rO   r   r   r   r      r   ZgaspzCFF c                 C   s  t dd |D rtd|D ]}|j  q|d }|jd }|j}g }g }t| }	|jjD ]"}
|
|	vrz||
 qb||
 qbt	|j
}|j}tdt| t|dd  ddD ]\}}|jd }||_t| }|jjD ]}
|
|v r||
 q|j}|jj}td|t| ||j
 |jrht|jt|dD ]"\}}
||j|
< |jjd  qD|jD ]}
||
 ||
< qnq||_
t||_|| |j_|S )	Nc                 s   s   | ]}t |d V  qdS )ZFDSelectN)hasattr)r,   rK   r   r   r   r.      r   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NotImplementedErrorZcffZdesubroutinizeZPrivatesetZgetGlyphOrderstringsappendr2   charsetZCharStringslogdebugr5   rH   ZGlobalSubrsextendZcharStringsAreIndexedZcharStringsZcharStringsIndexitemsr   )r>   r?   r@   rK   ZnewcffZnewfontprivateZstoredNamesStringsZglyphOrderStringsrG   rE   ZchrsetZnewcsr8   ZfontZfontGlyphOrdercsgsr   r   r   r=      sP    





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   )r,   unigidr   r   r   
<dictcomp>"  r   zmerge.<locals>.<dictcomp>r/   r   
   r   r1   r   )rQ   r   r`   r\   r@   r   ZgetTableModuler5   Zcmap_classesZ
platformIDZ	platEncIDlanguagerW   insertr
   ZnumSubTables)r>   r?   r@   r`   ZcmapBmpOnlymoduleZ	cmapTabler   r   r   r=     s,    


)!Z	fontToolsr   r   Z#fontTools.ttLib.tables.DefaultTabler   ZfontTools.merge.baser   r   ZfontTools.merge.cmapr   ZfontTools.merge.utillogging	getLoggerrY   maxequalsumrN   ZgetTableClassZmergeMapZ
bitwise_orZbitwise_andZheadFlagsMergeBitMapr6   current_timeminZrecalculater7   r:   ZonlyExistingr=   ZsumDictsZsumListsr   r   r   r   <module>   s&  

 


3