a
    ZXhH                     @   sf   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 ]l}t |D ]^\}}||v rj|| }|d t| |v rJ|d7 }q,|||< |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   Y/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/fontTools/merge/cmap.pycomputeMegaGlyphOrder   s    
r   皙?皙?c                 C   s   t | }t |}| | }|| }	|| |	| |j|jkrDdS |jrN|n|}
t|j|	j |j|
 krpdS t|dr|jd urt|j|	j |j|
 krdS dS )NFheightT)r   Zdrawvalueabswidthhasattrr   )Z	glyphSet1Z	glyphSet2Zglyph1Zglyph2ZadvanceToleranceZadvanceToleranceEmptyZpen1Zpen2Zg1Zg2Z	tolerancer   r   r   _glyphsAreSame   s    

r   c           	      C   s   i }| j }|D ]`}|j D ]P\}}||vr4i ||< |D ]2\}}|||krRd}||| vr8||| |< q8qq|D ]}g ||  ||< qt|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 rN|	}q*|
tjv r^|	}q*|
tjv rn|	}q*t	
d||	j|	j|	j q*|dur|||f n|dur|||f |dur|| qi  | _}i }t| drdd | jD nd}|D ]\}}|j D ]\}}||d}|du r<|||< |||< nt|s|dv rVqn||kr| j| |du r|dur|| }||fD ]&}|| du r| j|  ||< q|| j| |< n"| j| | |krt	
d|| qqt| || _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>       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   r.   r   r   r   ZduplicateGlyphsPerFontZgetGlyphSetr   r   )r   Z
cmapTablesZchosenCmapTablesZchosenUvsTablesZfontIdxr   Zformat4Zformat12Zformat14ZsubtableZ
propertiesr   ZfontIndexForGlyphZ	glyphSetsunigidZoldgidZ
oldFontIdxidxr   r   r   computeMegaCmapY   sf    









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    
r@   )r   r   )ZfontTools.merge.unicoder   ZfontTools.pens.recordingPenr   logging	getLoggerr4   r   r   r   r    r:   r@   r   r   r   r   <module>   s   
  
J