o
    iH                     @   sj   d dl mZ d dlmZ d dlZedZdd Z		dd	d
Zdd Z	G dd dZ
dd Zdd ZdS )    )is_Default_Ignorable)DecomposingRecordingPenNzfontTools.mergec                 C   s   i }|D ]?}t |D ]8\}}||v r>|| }|d t| |v r.|d7 }|d t| |v s |||< |dt| 7 }|||< d||< q
qt|  | _}dS )zXModifies passed-in glyphOrders to reflect new glyph names.
    Stores merger.glyphOrder..   N)	enumeratereprlistkeys
glyphOrder)mergerZglyphOrdersZ	megaOrderr
   i	glyphNamen r   c/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/fontTools/merge/cmap.pycomputeMegaGlyphOrder   s   
	r   皙?皙?c                 C   s   t | }t |}| | }|| }	|| |	| |j|jkr"dS |jr'|n|}
t|j|	j |j|
 kr8dS t|drQ|jd urQt|j|	j |j|
 krQdS dS )NFheightT)r   Zdrawvalueabswidthhasattrr   )Z	glyphSet1Z	glyphSet2Zglyph1Zglyph2ZadvanceToleranceZadvanceToleranceEmptyZpen1Zpen2g1g2Z	tolerancer   r   r   _glyphsAreSame   s   

r   c           	      C   s   i }| j }|D ]0}|j D ](\}}||vri ||< |D ]\}}|||kr)d}||| vr5||| |< qqq|D ]}g ||  ||< q:|S )z-Returns merged UVS subtable (cmap format=14).N)cmapuvsDictitemsget)	r   Z	uvsTablesr   r   tableZvariationSelectorZ
uvsMappingZunicodeValuer   r   r   r   computeMegaUvs9   s"   r!   c                   @   s"   e Zd Zh dZh dZdhZdS )_CmapUnicodePlatEncodings>   )      r   )r#   r   r$   )r#   r   r#   )r#   r      >   )   r   r#   )r&   r   r%   )r&   r$   
   )   r      N)__name__
__module____qualname__BMPFullRepertoireUVSr   r   r   r   r"   S   s    
r"   c              	   C   s  g }g }t |D ]\\}}d}d}d}|jD ].}	|	j|	j|	jf}
|
tjv r'|	}q|
tjv r/|	}q|
tjv r7|	}qt	
d||	j|	j|	j q|durP|||f n|dur[|||f |durd|| qi  | _}i }t| drydd | jD nd}|D ]n\}}|j D ]d\}}||d}|du r|||< |||< qt|s|dv rq||kr| j| |du r|dur|| }||fD ]}|| du r| j|  ||< q|| j| |< q| j| | |krt	
d|| qq}t| || _dS )z$Sets merger.cmap and merger.uvsDict.NzODropped cmap subtable from font '%s':	format %2s, platformID %2s, platEncID %2sfontsc                 S   s   g | ]}d qS )Nr   ).0fr   r   r   
<listcomp>   s    z#computeMegaCmap.<locals>.<listcomp>)i%  z4Dropped mapping from codepoint %#06X to glyphId '%s')r   ZtablesformatZ
platformIDZ	platEncIDr"   r-   r.   r/   logwarningappendr   r   r0   r   r   r   ZduplicateGlyphsPerFontZgetGlyphSetr!   r   )r   Z
cmapTablesZchosenCmapTablesZchosenUvsTablesZfontIdxr    Zformat4Zformat12Zformat14Zsubtable
propertiesr   ZfontIndexForGlyphZ	glyphSetsunigidZoldgidZ
oldFontIdxidxr   r   r   computeMegaCmapY   sn   






r<   c                 C   sP   |j jd }i }t|jj D ]\}}|| }|||< q||j_t||_dS )z4Rename topDictIndex charStrings based on glyphOrder.r   N)ZcffZtopDictIndexr   ZCharStringscharStringsvaluesr   charset)r   r
   ZcffTabletdr=   r   vr   r   r   r   renameCFFCharStrings   s   
rB   )r   r   )ZfontTools.merge.unicoder   ZfontTools.pens.recordingPenr   logging	getLoggerr5   r   r   r!   r"   r<   rB   r   r   r   r   <module>   s   

J