B
    Jd/                 @   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 }x||D ]t}xnt |D ]b\}}||krr|| }x |d t| |krP|d7 }q2W |||< |dt| 7 }|||< d||< qW q
W 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   F/var/www/html/venv/lib/python3.7/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 k	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ddddhZdddh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 }xt |D ]\}}d}d}xV|jD ]L}|j|j|jf}|tjkrJ|}q&|tjkrZ|}q&t	d||j|j|j q&W |dk	r|
||f q|dk	r|
||f qW i  | _}	i }
t| drdd | jD nd} x|D ]\}}x|j D ]\}}|	|d}|dkr ||	|< ||
|< qt|s|dkr6qq||kr| j| |dkr|dk	r|
| }x2||fD ]&}|| dkrp| j|  ||< qpW || j| |< q| j| | |krt	d|| qW qW 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>Y   s    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
propertiesr/   ZfontIndexForGlyphZ	glyphSetsunigidZoldgidZ
oldFontIdxidxr   r   r   computeMegaCmap;   sL    





r7   c             C   sT   |j jd }i }x,t|jj D ]\}}|| }|||< q"W ||j_t||_dS )z4Rename topDictIndex charStrings based on glyphOrder.r   N)ZcffZtopDictIndexr   ZCharStringscharStringsvaluesr   charset)r   r
   ZcffTabletdr8   r   vr   r   r   r   renameCFFCharStringsw   s    r=   )r   r   )ZfontTools.merge.unicoder   ZfontTools.pens.recordingPenr   logging	getLoggerr,   r   r   r   r7   r=   r   r   r   r   <module>   s   
 
<