o
    i                     @   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   c/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/fontTools/subset/cff.pyr   
   s   
z#_ClosureGlyphsT2Decompiler.__init__c           
      C   sd   |   }t|dkr0ddlm} |dd  \}}}}|| }|| }	| j| | j|	 d S d S )N   r   )StandardEncoding)ZpopalllenZ$fontTools.encodings.StandardEncodingr   r   add)
r   indexargsr   ZadxZadyZbcharZacharZ	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}|rPt }|D ]}||vr'q || }t|jdg }	t||	|j	}
|

| q ||j8 }|j| |}|sd S d S )N   r   ZSubrs)cffr   keysCharStringsglyphssetgetattrprivater	   r   executeupdate)r   sr   fontZglyphSetZ	decomposer   gglZsubrsZ
decompilerr   r   r   closure_glyphs   s$   
r+   Fc           
      C   s   | j |\}}|s|r||rg  d S dg d S t| dr,| jd ur,| j| j}n| j}|j}|j}t }	|	|	 |j
|krL|j
| dg|_d S dg|_d S )NendcharFDArray)r    getItemAndSelectorZ
setProgramhasattrr-   ZPrivateZdefaultWidthXZnominalWidthXr   Zdrawwidthprogram)
r(   Z	glyphNameisCFF2ignoreWidthcZfdSelectIndexr$   ZdfltWdXZnmnlWdXpenr   r   r   _empty_charstring3   s   

r6   c                 C   sp   | j }|jd d |_|jr(|js(|jdk}| D ]}|| }t|d|d q| D ]	}|| }d|_q,dS )Nr   z.notdef)r2   r   T)r   Z	fontNamesZnotdef_glyphZnotdef_outlinemajorr   r6   ZEncoding)r   r(   optionsr   r2   fontnamer   r   r   prune_pre_subsetG   s   
r:   c                    sf  | j }| D ]}|| }|j}|j|j|jD ]}|vr!q||\}}q|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 rv||
|< qd|
|_nfdd|j D |_fdd|jD |_t|j|_|jjr|jd	k}|jD ]
}t|||d
d qqd
S )Nc                    s   g | ]
\}}| v r|qS r   r   ).0ir)   r!   r   r   
<listcomp>l   s    z!subset_glyphs.<locals>.<listcomp>c                       g | ]} j | qS r   )itemsr;   r<   )csir   r   r>   n       FDSelectc                    r?   r   )gidArrayrA   )selr   r   r>   s   rC   c                    s   i | ]\}}| v r||qS r   r   )r;   r)   vr=   r   r   
<dictcomp>{   s    z!subset_glyphs.<locals>.<dictcomp>c                    s   g | ]}| v r|qS r   r   )r;   r)   r=   r   r   r>   |   s    r   T)r2   r3   )r   r   r    r!   unionZglyphs_emptiedcharsetr.   ZcharStringsAreIndexed	enumerateZcharStringsIndexr@   fileoffsetsr/   rD   formatrE   ZcharStringsr   Z	numGlyphsr8   Zretain_gidsr7   r6   )r   r'   r   r9   r(   csr)   r4   _indicesZnewCharStringsZ
indicesIdxZ
charsetIdxr2   r   )rB   r!   rF   r   subset_glyphs\   sD   





rR   c                    s   | j }| D ]2}|| }|j}t|dr9|j}t|jfdd|jD |_|j  fddD  _ `	 `
q|jrA|  |jsJ|   dS |jsQ|   dS )NrD   c                    s   g | ]}  |qS r   )r   )r;   ss)rQ   r   r   r>      rC   z%prune_post_subset.<locals>.<listcomp>c                    s   g | ]} | qS r   r   rA   )arrr   r   r>      s    T)r   r   r    r/   rD   r   rE   r-   r@   rL   rM   desubroutinizeZhintingremove_hintsremove_unused_subroutines)r   ZttfFontr8   r   r9   r(   rO   rF   r   )rT   rQ   r   prune_post_subset   s(   

rX   z)use 'CFFFontSet.desubroutinize()' instead)categoryc                 C      | j   d S r
   )r   rU   r   r   r   r   rU         rU   z'use 'CFFFontSet.remove_hints()' insteadc                 C   rZ   r
   )r   rV   r[   r   r   r   rV      r\   rV   z2use 'CFFFontSet.remove_unused_subroutines' insteadc                 C   rZ   r
   )r   rW   r[   r   r   r   rW      r\   rW   N)F)ZfontTools.miscr   Z	fontToolsr   ZfontTools.pens.basePenr   ZfontTools.misc.roundToolsr   ZfontTools.misc.loggingToolsr   ZfontTools.subset.utilr   r   r   r	   ZgetTableClassr+   r6   r:   rR   rX   DeprecationWarningrU   rV   rW   r   r   r   r   <module>   s>    



*
