
    Mcg                     t   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y)    )psCharStrings)ttLib)NullPen)otRound)deprecateFunction)_add_method
_uniq_sortc                       e Zd Zd Zd Zy)_ClosureGlyphsT2Decompilerc                 T    t         j                  j                  | ||       || _        y N)r   SimpleT2Decompiler__init__
components)selfr   
localSubrsglobalSubrss       O/var/www/html/bid-api/venv/lib/python3.12/site-packages/fontTools/subset/cff.pyr   z#_ClosureGlyphsT2Decompiler.__init__
   s!    ((11$
KP$    c                     | j                         }t        |      dk\  rQddlm} |dd  \  }}}}||   }||   }	| j                  j                  |       | j                  j                  |	       y y )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   sn    {{}t9>M &*"#Y"CeU(/I*51KOO	*OO, r   N)__name__
__module____qualname__r   r&    r   r   r   r   	   s    %-r   r   zCFF c                    | j                   }t        |      dk(  sJ ||j                         d      }|j                  }|j                  }|rt               }|D ]K  }||vr||   }t        |j                  dg       }	t        ||	|j                        }
|
j                  |       M ||j                  z  }|j                  j                  |       |}|ry y )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s8q==sxxz!}DHI
U
A !BBJJ4E3Jr~~VJr"  	ahh
	
#	 r   c                    | j                   j                  |      \  }}|s|r|j                  |rg        y dg       y t        | d      r&| j                  | j                  |   j
                  }n| j
                  }|j                  }|j                  }t               }	|j                  |	       |j                  |k7  r|j                  |z
  dg|_        y dg|_        y )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A}	6R3	{34#(@ll=199GllG''''i	s77g7*I6AI"AIr   c                 $   | j                   }|j                  d d |_        |j                  rC|j                  s7|j                  dkD  }|j                         D ]  }||   }t        |d|        |j                         D ]  }||   }d|_         y)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MM"1%CMG$:$:Q
Hx=DdIf= #
 HHJ8}* 
 r   c                    | j                   }|j                         D ]  }||   }|j                  }|j                  j	                  |j
                        }|j                  D ]  }||vr|j                  |      \  }}	 |j                  rt        |j                        D 
cg c]  \  }
}||v s|
 }}
}|j                  }|D 
cg c]  }
|j                  |
    c}
|_        |`|`t        |d      r5|j                  }d |_        |D 
cg c]  }
|j"                  |
    c}
|_        i }t        |      D ](  \  }}|j                  |   }||j$                  v s$|||<   * ||_        n8|j$                  j                         D ci c]  \  }}||v s|| c}}|_        |j                  D cg c]	  }||v s| c}|_        t'        |j                        |_        |j*                  j,                  s|j.                  dkD  }|j
                  D ]  }t1        |||d         yc c}}
w c c}
w c c}
w c c}}w c c}w )NFDSelectr,   T)rM   rN   )r.   r/   r0   r1   unionglyphs_emptiedcharsetrC   charStringsAreIndexed	enumeratecharStringsIndexitemsfileoffsetsrE   r_   formatgidArraycharStringsr   	numGlyphsr[   retain_gidsrY   rT   )r   r7   r.   r\   r8   csr1   r;   rO   _iindicescsiselnewCharStrings
indicesIdx
charsetIdxvrM   s                      r   subset_glyphsrx   \   s   
((CHHJ8} 0 01 A((+DAq 
 ##%.t||%<L%<TQVq%<GL%%C/67w!1w7CI#+tZ(mm!
9@AAQAN*3G*<&
JLL,&(2N1% += ,BN/1~~/C/C/EU/Etq!fad/EUBN#'<<?<a1;<?T\\*99  YY]F%%!$&dK &E J 1 M7
  B V?s0   %H-2H-	H3H8	H=H=2	I<Ic                 .   | j                   }|j                         D ]  }||   }|j                  }t        |d      s!|j                  }t        |j                        }|j                  D 	cg c]  }	|j                  |	       c}	|_        |j                  }
|D cg c]  }|
|   	 c}|
_	        |
`
|
` |j                  r|j                          |j                  s| j                          y|j                  s| j                          yc c}	w c c}w )Nr_   T)r.   r/   r0   rE   r_   r	   rj   r   rB   rf   rg   rh   desubroutinizehintingremove_hintsremove_unused_subroutines)r   ttfFontr[   r.   r\   r8   rn   rs   rq   ssarrrp   s               r   prune_post_subsetr      s    
((CHHJ8} 4$--C .G8;E"GMM"-ECL,,C)01AQ1CI#+   ??  ##&&( F1s   -DDz)use 'CFFFontSet.desubroutinize()' instead)categoryc                 8    | j                   j                          y r   )r.   rz   r   s    r   rz   rz      s    
 	HHr   z'use 'CFFFontSet.remove_hints()' insteadc                 8    | j                   j                          y r   )r.   r|   r   s    r   r|   r|      s    
 	HHr   z2use 'CFFFontSet.remove_unused_subroutines' insteadc                 8    | j                   j                          y r   )r.   r}   r   s    r   r}   r}      s    
 	HH&&(r   N)F)fontTools.miscr   	fontToolsr   fontTools.pens.basePenr   fontTools.misc.roundToolsr   fontTools.misc.loggingToolsr   fontTools.subset.utilr   r	   r   r   getTableClassr?   rT   r]   rx   r   DeprecationWarningrz   r|   r}   r*   r   r   <module>r      s   (  * - 9 9-!A!A -&  U  () *,$(  U  () *(  U  ()' *'T  U  () *6 /:L  U  () * -8J  U  () * 8CU  U  ()) *)r   