a
    w=ic/                     @   s^   d dl mZ d dlmZ d dlZedZdd Zd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   e/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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pen2g1g2Z	tolerancer   r   r   _glyphsAreSame   s    

r   c                   @   s   e Zd Zh dZh dZdS )_CmapUnicodePlatEncodings>   )      r   )r   r   r   )r   r   r   )r   r      >   )   r   r   )r    r   r   )r    r   
   N)__name__
__module____qualname__BMPFullRepertoirer   r   r   r   r   7   s   r   c              	   C   s  g }t |D ]\}}d}d}|jD ]L}|j|j|jf}|tjv rF|}q"|tjv rV|}q"t	d||j|j|j q"|dur|
||f q|dur|
||f qi  | _}	i }
t| drdd | jD nd}|D ]\}}|j D ]\}}|	|d}|du r||	|< ||
|< qt|s|dv r(qq||kr| j| |du r|dur|
| }||fD ]&}|| du r`| j|  ||< q`|| j| |< q| j| | |krt	d|| qqdS )z'Sets merger.cmap and merger.glyphOrder.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>Y       z#computeMegaCmap.<locals>.<listcomp>)i%  z4Dropped mapping from codepoint %#06X to glyphId '%s')r   ZtablesformatZ
platformIDZ	platEncIDr   r%   r&   logwarningappendcmapr   r'   itemsgetr   ZduplicateGlyphsPerFontZgetGlyphSet)r   Z
cmapTablesZchosenCmapTablesZfontIdxtableZformat4Zformat12Zsubtable
propertiesr0   ZfontIndexForGlyphZ	glyphSetsunigidZoldgidZ
oldFontIdxidxr   r   r   computeMegaCmap;   sN    






r8   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tdr9   r   vr   r   r   r   renameCFFCharStringsw   s    
r>   )r   r   )ZfontTools.merge.unicoder   ZfontTools.pens.recordingPenr   logging	getLoggerr-   r   r   r   r8   r>   r   r   r   r   <module>   s   
  
<