a
    ¦¶Df©  ã                   @   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   úa/nfs/NAS7/SABIOD/METHODE/ermites/ermites_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r¢t|j|	j ƒ|j|
 kr¢d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                   @   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   =   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ƒrÈdd„ | jD ƒnd}|D ]ê\}}|j ¡ D ]Ö\}}|	 |d¡}|du r||	|< ||
|< qât|ƒsâ|dv r(qâqâ||krâ| j|  |¡du r˜|durˆ|
| }||fD ]&}|| du r`| j|  ¡ ||< q`|| j| |< qâ| j| | |krât 	d||¡ qâqÐd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   ó    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subtableZ
propertiesr.   ZfontIndexForGlyphZ	glyphSetsÚuniÚgidZoldgidZ
oldFontIdxÚidxr   r   r   ÚcomputeMegaCmapB   sX    


ú



ÿr5   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Útdr6   r   Úvr   r   r   r   ÚrenameCFFCharStringsƒ   s    
r;   )r   r   )ZfontTools.merge.unicoder   ZfontTools.pens.recordingPenr   ÚloggingÚ	getLoggerr+   r   r   r   r5   r;   r   r   r   r   Ú<module>   s   
  ú
A