
    ]MhH                         d dl mZ d dlmZ d dlZ ej        d          Zd Z	 	 ddZd	 Z	 G d
 d          Z
d Zd ZdS )    )is_Default_Ignorable)DecomposingRecordingPenNzfontTools.mergec                 T   i }|D ]z}t          |          D ]h\  }}||v rZ||         }|dz   t          |          z   |v r|dz  }|dz   t          |          z   |v |||<   |dt          |          z   z  }|||<   d||<   i{t          |                                          x| _        }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ns          T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/merge/cmap.pycomputeMegaGlyphOrderr      s     I! 	% 	%
%j11 	% 	%LAyI%%i( 3a0Y>>FA !3a0Y>>'(	)$S477]*	 )
1#$Ii  	% %))9)9$:$::F			    皙?皙?c                    t          |           }t          |          }| |         }||         }	|                    |           |	                    |           |j        |j        k    rdS |j        r|n|}
t          |j        |	j        z
            |j        |
z  k    rdS t          |d          r1|j        *t          |j        |	j        z
            |j        |
z  k    rdS dS )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GGDMMMGGDMMMzTZu$(JI  4II
28bh"(Y"666ur8 !6ry29$%%	I(===54r   c                 *   i }| j         }|D ]b}|j                                        D ]F\  }}||vri ||<   |D ]5\  }}|                    |          |k    rd}|||         vr|||         |<   6Gc|D ]!}g ||                                         ||<   "|S )z-Returns merged UVS subtable (cmap format=14).N)cmapuvsDictitemsget)	r   	uvsTablesr-   r,   tablevariationSelector
uvsMappingunicodeValuer   s	            r   computeMegaUvsr5   9   s    G;D 
I 
I-2]-@-@-B-B 		I 		I)z //-/)*+5 I I'i88L))Y66 $Iw/@'AAA?HG-.|<I		I % K K%Jw/@'A'G'G'I'I%J!""Nr   c                   $    e Zd Zh dZh dZdhZdS )_CmapUnicodePlatEncodings>      r   r9   r9   r      r9   r      r9   r;   r   >      r   r9   r@   r   r=   r@   r;   
   )   r      N)__name__
__module____qualname__BMPFullRepertoireUVS r   r   r7   r7   S   s+        
6
6
6C:::N,CCCr   r7   c           	      d   g }g }t          |          D ]\  }}d}d}d}|j        D ]v}	|	j        |	j        |	j        f}
|
t
          j        v r|	}'|
t
          j        v r|	}8|
t
          j        v r|	}It          
                    d||	j        |	j        |	j                   w||                    ||f           n||                    ||f           ||                    |           i x| _        }i }t          | d          rd | j        D             nd}|D ]\  }}|j                                        D ]\  }}|                    |d          }||||<   |||<   (t#          |          s|dv r<||k    r| j        |                             |          L|9||         }||fD ],}||         "| j        |                                         ||<   -|| j        |         |<   | j        |         |         |k    rt          
                    d||           t)          | |          | _        dS )z$Sets merger.cmap and merger.uvsDict.NzODropped cmap subtable from font '%s':	format %2s, platformID %2s, platEncID %2sfontsc                     g | ]}d S )NrL   ).0fs     r   
<listcomp>z#computeMegaCmap.<locals>.<listcomp>   s    ,,,!,,,r   )i%  z4Dropped mapping from codepoint %#06X to glyphId '%s')r   tablesformat
platformID	platEncIDr7   rI   rJ   rK   logwarningappendr,   r   rN   r.   r/   r   duplicateGlyphsPerFontgetGlyphSetr5   r-   )r   
cmapTableschosenCmapTableschosenUvsTablesfontIdxr1   format4format12format14subtable
propertiesr,   fontIndexForGlyph	glyphSetsunigidoldgid
oldFontIdxidxs                      r   computeMegaCmaprl   Y   s    O#J// - - 	 	H"/8+>@RSJ6:::"8GGG#8<<<#@O'&    ##Xw$78888 ##Wg$6777""8,,, FK$070H0HR,,v|,,,,dI*  w
((** 	 	HCXXc4((F~S	)0!#&&%c** cY.>.>3 09==fEEM ,%6v%>
$+Z#8 Q QC(~517c1B1N1N1P1P	# FIF1':6BB27;FCsJJ KKNPSUX  /	6 $FO<<FNNNr   c                     |j         j        d         }i }t          |j        j                                                  D ]\  }}||         }|||<   ||j        _        t          |          |_        dS )z4Rename topDictIndex charStrings based on glyphOrder.r   N)cfftopDictIndexr   CharStringscharStringsvaluesr
   charset)r   r   cffTabletdrq   r   vr   s           r   renameCFFCharStringsrw      su    		"1	%BK".4;;==>> # #1qM	!"I!,BNj!!BJJJr   )r   r   )fontTools.merge.unicoder   fontTools.pens.recordingPenr   logging	getLoggerrW   r   r*   r5   r7   rl   rw   rL   r   r   <module>r|      s   
 9 8 8 8 8 8 ? ? ? ? ? ?  g)**; ; ;,    6  4       G= G= G=T
" 
" 
" 
" 
"r   