o
    h                     @   sb   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 ]?}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)mergerglyphOrders	megaOrderr
   i	glyphNamen r   h/var/www/html/construction_image-detection-poc/venv/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   drawvalueabswidthhasattrr   )	glyphSet1	glyphSet2glyph1glyph2advanceToleranceadvanceToleranceEmptypen1pen2g1g2	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*   r1   r   r.   r1   r,   
   N)__name__
__module____qualname__BMPFullRepertoirer   r   r   r   r(   =   s    r(   c              	   C   s  g }t |D ]I\}}d}d}|jD ]&}|j|j|jf}|tjv r#|}q|tjv r+|}qt	d||j|j|j q|durD|
||f q|durO|
||f qi  | _}	i }
t| drddd | jD nd}|D ]n\}}|j D ]d\}}|	|d}|du r||	|< ||
|< qqt|s|dv rqq||kr| j| |du r|dur|
| }||fD ]}|| du r| j|  ||< q|| j| |< qq| j| | |krt	d|| qqqhd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>c   s    z#computeMegaCmap.<locals>.<listcomp>)i%  z4Dropped mapping from codepoint %#06X to glyphId '%s')r   tablesformat
platformID	platEncIDr(   r8   r9   logwarningappendcmapr   r:   itemsgetr   duplicateGlyphsPerFontgetGlyphSet)r   
cmapTableschosenCmapTablesfontIdxtableformat4format12subtable
propertiesrE   fontIndexForGlyph	glyphSetsunigidoldgid
oldFontIdxidxr   r   r   computeMegaCmapB   sb   




rY   c                 C   sP   |j jd }i }t|jj D ]\}}|| }|||< q||j_t||_dS )z4Rename topDictIndex charStrings based on glyphOrder.r   N)cfftopDictIndexr   CharStringscharStringsvaluesr   charset)r   r
   cffTabletdr]   r   vr   r   r   r   renameCFFCharStrings   s   
rc   )r   r   )fontTools.merge.unicoder   fontTools.pens.recordingPenr   logging	getLoggerrB   r   r'   r(   rY   rc   r   r   r   r   <module>   s   

A