
    ]Mh                        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ej                  Z e ej        d	                    d
             ZddZ e ej        d	                    d             Z e ej        d	                    d             Z e ej        d	                    d             Z e	de           e ej        d	                    d                         Z e	de           e ej        d	                    d                         Z e	de           e ej        d	                    d                         ZdS )    )psCharStrings)ttLib)NullPen)otRound)deprecateFunction)_add_method
_uniq_sortc                       e Zd Zd Zd ZdS )_ClosureGlyphsT2Decompilerc                 V    t           j                            | ||           || _        d S N)r   SimpleT2Decompiler__init__
components)selfr   
localSubrsglobalSubrss       T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/subset/cff.pyr   z#_ClosureGlyphsT2Decompiler.__init__
   s(    (11$
KPPP$    c                 
   |                                  }t          |          dk    r[ddlm} |dd          \  }}}}||         }||         }	| j                            |           | j                            |	           d S d S )N   r   )StandardEncoding)popalllen$fontTools.encodings.StandardEncodingr   r   add)
r   indexargsr   adxadybcharachar	baseGlyphaccentGlyphs
             r   
op_endcharz%_ClosureGlyphsT2Decompiler.op_endchar   s    {{}}t99>>MMMMMM &*"##Y"CeU(/I*51KO	***O,,,,, >r   N)__name__
__module____qualname__r   r&    r   r   r   r   	   s2        % % %- - - - -r   r   zCFF c                    | j         }t          |          dk    sJ ||                                d                  }|j        }|j        }|rt                      }|D ]P}||vr||         }t          |j        dg           }	t          ||	|j	                  }
|

                    |           Q||j        z  }|j                            |           |}|d S d S )N   r   Subrs)cffr   keysCharStringsglyphssetgetattrprivater   r   executeupdate)r   sr.   fontglyphSet	decomposer   gglsubrs
decompilers              r   closure_glyphsr?      s    
(Cs88q====sxxzz!}DHI
 UU
 	# 	#A  !BBJ44E3Jr~VVJr""""ah
	
###	      r   Fc                    | j                             |          \  }}|s|r|                    |rg ndg           d S t          | d          r| j        | j        |         j        }n| j        }|j        }|j        }t                      }	|	                    |	           |j
        |k    r|j
        |z
  dg|_        d S dg|_        d S )NendcharFDArray)r0   getItemAndSelector
setProgramhasattrrB   PrivatedefaultWidthXnominalWidthXr   drawwidthprogram)
r8   	glyphNameisCFF2ignoreWidthcfdSelectIndexr4   dfltWdXnmnlWdXpens
             r   _empty_charstringrT   3   s    '::9EEA} $ $	62RR	{333334## 	#(@l=19GGlG''ii	s7g7*I6AIII"AIIIr   c                    | j         }|j        d d         |_        |j        rC|j        s<|j        dk    }|                                D ]}||         }t          |d|           |                                D ]}||         }d|_        dS )Nr,   z.notdef)rM   r   T)r.   	fontNamesnotdef_glyphnotdef_outlinemajorr/   rT   Encoding)r   r8   optionsr.   rM   fontnames         r   prune_pre_subsetr]   G   s    
(CM"1"%CM >G$: >Q

 	> 	>Hx=DdIf===== HHJJ + +8}*4r   c                 t   | j         }|                                D ]}||         }|j        }|j                            |j                  |j        D ]}|vr|                    |          \  }} |j        rfdt          |j                  D             }	|j
        fd|	D             _        ``t          |d          r!|j        d _        fd|	D             _        i }
t          |	          D ] \  }}|j        |         }||j        v r||
|<   !|
|_        n*fd|j                                        D             |_        fd|j        D             |_        t'          |j                  |_        |j        j        r(|j        dk    }|j        D ]}t1          |||d	           dS )
Nc                 "    g | ]\  }}|v 	|S r*   r*   ).0ir;   r1   s      r   
<listcomp>z!subset_glyphs.<locals>.<listcomp>l   s"    LLLTQVqr   c                 *    g | ]}j         |         S r*   )items)r`   ra   csis     r   rb   z!subset_glyphs.<locals>.<listcomp>n   s    777!1777r   FDSelectc                 *    g | ]}j         |         S r*   )gidArray)r`   ra   sels     r   rb   z!subset_glyphs.<locals>.<listcomp>s   s    AAAAQAAAr   c                 $    i | ]\  }}|v 	||S r*   r*   )r`   r;   vr1   s      r   
<dictcomp>z!subset_glyphs.<locals>.<dictcomp>{   s$    UUUtq!far   c                     g | ]}|v |	S r*   r*   )r`   r;   r1   s     r   rb   z!subset_glyphs.<locals>.<listcomp>|   s    ???a1;;;;;r   r,   T)rM   rN   )r.   r/   r0   r1   unionglyphs_emptiedcharsetrC   charStringsAreIndexed	enumeratecharStringsIndexrd   fileoffsetsrE   rf   formatrh   charStringsr   	numGlyphsr[   retain_gidsrY   rT   )r   r7   r.   r\   r8   csr;   rO   _indicesnewCharStrings
indicesIdx
charsetIdxrM   re   r1   ri   s                 @@@r   subset_glyphsr   \   s   
(CHHJJ #L #L8} 011  	, 	,A((++DAqq# 	VLLLLYt|%<%<LLLG%C7777w777CI#+tZ(( Bm!
AAAAAAAN*3G*<*< 3 3&
JL,&&(2N1%+BNNUUUUr~/C/C/E/EUUUBN????4<???T\**9  	LY]F% L L!$&dKKKKK4r   c                   	 | j         }|                                D ]r}||         }|j        }t          |d          rQ|j        }t          |j                  		fd|j        D             |_        |j        fd	D             _        `	`
s|j        r|                                 |j        s|                                  n|j        s|                                  dS )Nrf   c                 :    g | ]}                     |          S r*   )r   )r`   ssr|   s     r   rb   z%prune_post_subset.<locals>.<listcomp>   s%    EEE"GMM"--EEEr   c                      g | ]
}|         S r*   r*   )r`   ra   arrs     r   rb   z%prune_post_subset.<locals>.<listcomp>   s    111AQ111r   T)r.   r/   r0   rE   rf   r	   rh   rB   rd   rt   ru   desubroutinizehintingremove_hintsremove_unused_subroutines)
r   ttfFontr[   r.   r\   r8   rz   ri   r   r|   s
           @@r   prune_post_subsetr      s   
(CHHJJ & &8} 4$$ 	&-C ..GEEEEEEECL,C1111111CI#+   ? )# )&&(((4r   z)use 'CFFFontSet.desubroutinize()' instead)categoryc                 8    | j                                          d S r   )r.   r   r   s    r   r   r      s    
 	Hr   z'use 'CFFFontSet.remove_hints()' insteadc                 8    | j                                          d S r   )r.   r   r   s    r   r   r      s    
 	Hr   z2use 'CFFFontSet.remove_unused_subroutines' insteadc                 8    | j                                          d S r   )r.   r   r   s    r   r   r      s    
 	H&&(((((r   N)F)fontTools.miscr   	fontToolsr   fontTools.pens.basePenr   fontTools.misc.roundToolsr   fontTools.misc.loggingToolsr   fontTools.subset.utilr   r	   r   r   getTableClassr?   rT   r]   r   r   DeprecationWarningr   r   r   r*   r   r   <module>r      s   ( ( ( ( ( (       * * * * * * - - - - - - 9 9 9 9 9 9 9 9 9 9 9 9 9 9- - - - -!A - - -&  U (())  *),$ $ $ $(  U (())  *)(  U (())' ' *)'T  U (())  *)6 /:L    U (())  *)  -8J    U (())  *)  8CU    U (())) ) *) ) ) )r   