a
    ¥Q•h  ã                   @   s*  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ G dd„ dejƒZee d	¡ƒd
d„ ƒZd dd„Zee d	¡ƒdd„ ƒZee d	¡ƒdd„ ƒZee d	¡ƒdd„ ƒZe	ded�ee d	¡ƒdd„ ƒƒZe	ded�ee d	¡ƒdd„ ƒƒZe	ded�ee d	¡ƒdd„ ƒƒZdS )!é    )ÚpsCharStrings)ÚttLib)ÚNullPen)ÚotRound)ÚdeprecateFunction)Ú_add_methodÚ
_uniq_sortc                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_ClosureGlyphsT2Decompilerc                 C   s   t j | ||¡ || _d S ©N)r   ÚSimpleT2DecompilerÚ__init__Ú
components)Úselfr   Z
localSubrsÚglobalSubrs© r   úM/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/subset/cff.pyr   
   s    z#_ClosureGlyphsT2Decompiler.__init__c           
      C   s`   |   ¡ }t|ƒdkr\ddlm} |dd … \}}}}|| }|| }	| j |¡ | j |	¡ d S )Né   r   )ÚStandardEncodingéüÿÿÿ)ZpopallÚlenZ$fontTools.encodings.StandardEncodingr   r   Úadd)
r   ÚindexÚargsr   ZadxZadyZbcharÚacharÚ	baseGlyphZaccentGlyphr   r   r   Ú
op_endchar   s    z%_ClosureGlyphsT2Decompiler.op_endcharN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r	   	   s   r	   zCFF c                 C   sž   | j }t|ƒdksJ ‚|| ¡ d  }|j}|j}|rštƒ }|D ]<}||vrNq@|| }t|jdg ƒ}	t||	|j	ƒ}
|
 
|¡ q@||j8 }|j |¡ |}q2d S )Né   r   ZSubrs)Úcffr   ÚkeysÚCharStringsÚglyphsÚsetÚgetattrÚprivater	   r   ÚexecuteÚupdate)r   Úsr    ÚfontÚglyphSetÚ	decomposer   ÚgÚglZsubrsZ
decompilerr   r   r   Úclosure_glyphs   s"    
r/   Fc           
      C   sš   | j  |¡\}}|s|r.| |r$g ndg¡ nht| dƒrP| jd urP| j| j}n| j}|j}|j}tƒ }	| 	|	¡ |j
|krŽ|j
| dg|_ndg|_d S )NÚendcharÚFDArray)r"   ÚgetItemAndSelectorZ
setProgramÚhasattrr1   ZPrivateZdefaultWidthXZnominalWidthXr   ÚdrawÚwidthÚprogram)
r*   Ú	glyphNameÚisCFF2ÚignoreWidthÚcZfdSelectIndexr&   ZdfltWdXZnmnlWdXÚpenr   r   r   Ú_empty_charstring3   s    

r<   c                 C   sp   | j }|jd d… |_|jrP|jsP|jdk}| ¡ D ]}|| }t|d|d� q4| ¡ D ]}|| }d|_qXdS )Nr   z.notdef)r8   r   T)r    Z	fontNamesÚnotdef_glyphÚnotdef_outlineÚmajorr!   r<   ÚEncoding)r   r*   Úoptionsr    r8   Úfontnamer   r   r   Úprune_pre_subsetG   s    
rC   c                    sj  | j }| ¡ D �]T}|| }|j}|j |j¡‰|jD ]}|ˆvrDq6| |¡\}}q6|jrø‡fdd„t	|jƒD ƒ}	|j
‰ ‡ fdd„|	D ƒˆ _ˆ `ˆ `t|dƒr¾|j‰d ˆ_‡fdd„|	D ƒˆ_i }
t	|	ƒD ]$\}}|j| }||jv rÊ||
|< qÊ|
|_n‡fdd„|j ¡ D ƒ|_‡fdd„|jD ƒ|_t|jƒ|_|jjr|jd	k}|jD ]}t|||d
d� �qLqd
S )Nc                    s   g | ]\}}|ˆ v r|‘qS r   r   )Ú.0Úir-   ©r#   r   r   Ú
<listcomp>l   ó    z!subset_glyphs.<locals>.<listcomp>c                    s   g | ]}ˆ j | ‘qS r   )Úitems©rD   rE   )Úcsir   r   rG   n   rH   ÚFDSelectc                    s   g | ]}ˆ j | ‘qS r   )ÚgidArrayrJ   )Úselr   r   rG   s   rH   c                    s   i | ]\}}|ˆ v r||“qS r   r   )rD   r-   ÚvrF   r   r   Ú
<dictcomp>{   rH   z!subset_glyphs.<locals>.<dictcomp>c                    s   g | ]}|ˆ v r|‘qS r   r   )rD   r-   rF   r   r   rG   |   rH   r   T)r8   r9   )r    r!   r"   r#   ÚunionÚglyphs_emptiedÚcharsetr2   ZcharStringsAreIndexedÚ	enumerateZcharStringsIndexrI   ÚfileÚoffsetsr3   rL   ÚformatrM   ÚcharStringsr   Ú	numGlyphsrA   Úretain_gidsr?   r<   )r   r)   r    rB   r*   Úcsr-   r:   Ú_ÚindicesZnewCharStringsZ
indicesIdxZ
charsetIdxr8   r   )rK   r#   rN   r   Úsubset_glyphs\   s@    






r^   c                    s¤   | j }| ¡ D ]d}|| }|j}t|dƒr|j}t|jƒ‰‡fdd„|jD ƒ|_|j‰ ‡ fdd„ˆD ƒˆ _ˆ `	ˆ `
q|jr‚| ¡  |js’|  ¡  n|js |  ¡  dS )NrL   c                    s   g | ]}ˆ   |¡‘qS r   )r   )rD   Úss)r]   r   r   rG   ’   rH   z%prune_post_subset.<locals>.<listcomp>c                    s   g | ]}ˆ | ‘qS r   r   rJ   )Úarrr   r   rG   ”   rH   T)r    r!   r"   r3   rL   r   rM   r1   rI   rU   rV   ÚdesubroutinizeÚhintingÚremove_hintsÚremove_unused_subroutines)r   ZttfFontrA   r    rB   r*   r[   rN   r   )r`   r]   r   Úprune_post_subset‡   s$    



re   z)use 'CFFFontSet.desubroutinize()' instead)Úcategoryc                 C   s   | j  ¡  d S r
   )r    ra   ©r   r   r   r   ra   £   s    ra   z'use 'CFFFontSet.remove_hints()' insteadc                 C   s   | j  ¡  d S r
   )r    rc   rg   r   r   r   rc   «   s    rc   z2use 'CFFFontSet.remove_unused_subroutines' insteadc                 C   s   | j  ¡  d S r
   )r    rd   rg   r   r   r   rd   ³   s    rd   N)F)ÚfontTools.miscr   Ú	fontToolsr   ÚfontTools.pens.basePenr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.loggingToolsr   ÚfontTools.subset.utilr   r   r   r	   ÚgetTableClassr/   r<   rC   r^   re   ÚDeprecationWarningra   rc   rd   r   r   r   r   Ú<module>   s<   



*
ÿÿÿ