
    jke                     z    d dl mZ d dlmZ d dlZ ej
                  d      Zd Z	 	 ddZ G d d      Z	d	 Z
d
 Zy)    )is_Default_Ignorable)DecomposingRecordingPenNzfontTools.mergec                 &   i }|D ]j  }t        |      D ]Z  \  }}||v rL||   }|dz   t        |      z   |v r|dz  }|dz   t        |      z   |v r|||<   |dt        |      z   z  }|||<   d||<   \ l t        |j                               x| _        }y)zXModifies passed-in glyphOrders to reflect new glyph names.
    Stores merger.glyphOrder..   N)	enumeratereprlistkeys
glyphOrder)mergerglyphOrders	megaOrderr   i	glyphNamens          6/usr/lib/python3/dist-packages/fontTools/merge/cmap.pycomputeMegaGlyphOrderr      s     I! 	%
%j1 	%LAyI%i( 3a0Y>FA !3a0Y>'(	)$S47]*	 )
1#$Ii 	%	% %))9$::F	    c                    t        |       }t        |      }| |   }||   }	|j                  |       |	j                  |       |j                  |j                  k7  ry|j                  r|n|}
t        |j                  |	j                  z
        |j                  |
z  kD  ryt        |d      r?|j                  3t        |j                  |	j                  z
        |j                  |
z  kD  ryy)NFheightT)r   drawvalueabswidthhasattrr   )	glyphSet1	glyphSet2glyph1glyph2advanceToleranceadvanceToleranceEmptypen1pen2g1g2	tolerances              r   _glyphsAreSamer(      s     #9-D"9-D	6	B	6	BGGDMGGDMzzTZZ$(JJ 4II
288bhh"((Y"66r8!6ryy299$%		I(==r   c                       e Zd Zh dZh dZy)_CmapUnicodePlatEncodings>      r   r,   r,   r      r,   r      r,   r.   r   >      r   r,   r3   r   r0   r3   r.   
   N)__name__
__module____qualname__BMPFullRepertoire r   r   r*   r*   =   s    
6C:Nr   r*   c           	         g }t        |      D ]  \  }}d}d}|j                  D ]  }|j                  |j                  |j                  f}|t
        j                  v r|};|t
        j                  v r|}Pt        j                  d||j                  |j                  |j                          ||j                  ||f       ||j                  ||f        i x| _        }	i }
t        | d      r| j                  D cg c]  }d c}nd}|D ]  \  }}|j                  j                         D ]  \  }}|	j                  |d      }|||	|<   ||
|<   %t!        |      s|dv r5||k7  s;| j"                  |   j                  |      I|4|
|   }||fD ](  }||   	| j                  |   j%                         ||<   * || j"                  |   |<   | j"                  |   |   |k7  st        j                  d||         yc c}w )z'Sets merger.cmap and merger.glyphOrder.NzODropped cmap subtable from font '%s':	format %2s, platformID %2s, platEncID %2sfonts)i%  z4Dropped mapping from codepoint %#06X to glyphId '%s')r   tablesformat
platformID	platEncIDr*   r:   r;   logwarningappendcmapr   r>   itemsgetr   duplicateGlyphsPerFontgetGlyphSet)r   
cmapTableschosenCmapTablesfontIdxtableformat4format12subtable
propertiesrF   fontIndexForGlyphf	glyphSetsunigidoldgid
oldFontIdxidxs                     r   computeMegaCmapr[   B   sC    #J/ 8 	H"//8+>+>@R@RSJ6:::"8GGG#@OO''&&	 ##Xw$78 ##Wg$67+80 FK$070Hv||,!,dI* w

((* 	HCXXc4(F~S	)0!#&%c*cY.>3 009==fEM ,%6v%>
$+Z#8 QC(~517c1B1N1N1P	#Q
 FIF11':6B227;FCsJ KKNPSUX/	 -s    	Hc                     |j                   j                  d   }i }t        |j                  j                  j                               D ]  \  }}||   }|||<    ||j                  _        t        |      |_        y)z4Rename topDictIndex charStrings based on glyphOrder.r   N)cfftopDictIndexr   CharStringscharStringsvaluesr
   charset)r   r   cffTabletdr`   r   vr   s           r   renameCFFCharStringsrf      ss    		"	"1	%BK"..44;;=> #1qM	!"I# "-BNNj!BJr   )g?g?)fontTools.merge.unicoder   fontTools.pens.recordingPenr   logging	getLoggerrC   r   r(   r*   r[   rf   r<   r   r   <module>rk      sL   
 9 ?  g)*;, >; ;
>B
"r   