
    h$                       S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	J
r
JrJrJrJrJr   S SKJr  S SKJr  S SKJr  S S	KJr  S
/r\R4                  " S5      rSSS.rS\S    S3r\" SS9S 5       rSS jrS S jr S!S jr!      S"S jr"S#S jr#      S$S jr$S%S jr%S&S jr&S'S jr'\" \RP                  " S5      5      S(S j5       r)g! \ a    Sr Nf = f))    )annotationsN)	lru_cache)chaincount)DictIterableIteratorListOptionalSetTuple)etree)ttLib)_add_method)SVGDocumentsubset_glyphsz^glyph(\d+)$zhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)svgxlink{r   z}href)maxsizec                4    [         R                  " U [        S9$ )N)
namespaces)r   XPath
NAMESPACES)paths    F/var/www/html/env/lib/python3.13/site-packages/fontTools/subset/svg.pyxpathr   !   s     ;;t
33    c                j    [        S5      " U 5       Vs0 s H  oR                  S   U_M     sn$ s  snf )Nz//svg:*[@id]id)r   attrib)treeels     r   group_elements_by_idr$   '   s3     +0*?*EF*EBIIdOR*EFFFs   0c                   0 nU R                  S5       Hr  nUR                  S5      S:X  a7  UR                  S5      u  p4UR                  5       nUR                  5       X'   MO  UR                  5       (       d  Mf  [        SU 35      e   U$ )N;:   z Invalid CSS declaration syntax: )splitr   strip
ValueError)
style_attrresultdeclarationproperty_namevalues        r   parse_css_declarationsr1   .   s     F!'',S!Q&#.#4#4S#9 M)//1M$)KKMF!  ?}MNN - Mr   c              #    #    [        S5      n[        U /U" U 5      5       H  n[        U5      nUb  Uv   UR                  nSU;   a%  0 [	        U5      E[        UR                  S   5      EnS HP  nXT;   d  M
  XE   nUR                  S5      (       d  M&  UR                  S5      (       d  M>  USS nU(       d   eUv   MR     M     g 7f)Nz.//svg:*[ starts-with(@xlink:href, '#') or starts-with(@fill, 'url(#') or starts-with(@clip-path, 'url(#') or contains(@style, ':url(#') ]style)fillz	clip-pathzurl(#)   )r   r   href_local_targetr!   dictr1   
startswithendswith)r"   !find_svg_elements_with_referencesr#   ref_idattrsattrr0   s          r   iter_referenced_idsr@   <   s     
 ).	)% TF=dCD"2&L		eQtE{Q&<RYYw=O&PQE)D}##G,,1D1D"1R[F!M6 L * Es   A3C9CC-Cc                    UnU(       aW  [        5       nU H&  nX@;  a  M
  UR                  [        X   5      5        M(     X1-  nUR                  U5        UnU(       a  MV  g g N)setupdater@   )elementselement_ids	unvisited
referencedel_ids        r   closure_element_idsrJ   Z   s`    
 I
"u
E$1(/BC	 
 	!
:&	 )r   c           	        U R                   R                  S5      U;   a  g[        U  Vs/ s H  n[        X!5      PM     sn5      (       a  g[	        U 5      S:X  d   eU R                  5       nUb  UR                  U 5        gs  snf )Nr    Tr   F)r!   getanysubset_elementslen	getparentremove)r#   retained_idseparents       r   rN   rN   l   su     
yy}}Tl* b9bOA,b9::r7a<<\\^Fb :s   Bc                   [        U 5      n0 nUR                  5        H  u  pE[        R                  U5      nU(       d  M#  [	        UR                  S5      5      nUR                  U5      nUb  Xx:X  a  MX  SU 3n	O,SU 3n	[        S5      n
X;   a  U	 S[        U
5       3n	X;   a  M  XU'   XR                  S'   M     U$ )Nr(   glyph.r    )
r$   itemsGID_REmatchintgrouprL   r   nextr!   )r   glyph_index_maprE   id_maprI   r#   m	old_index	new_indexnew_idns              r   remap_glyph_idsre      s    
 $C(HF^^%	LL
O	#''	2	 %YK(F
 [FaA$"81T!WI. $ u 		$) &, Mr   c                    [         U R                  ;   a=  U R                  [            nUR                  S5      (       a  [        U5      S:  a  USS  $ g )N#r(   )
XLINK_HREFr!   r:   rO   )r#   hrefs     r   r8   r8      sC    RYYyy$??3CIM8Or   c                    [        S5      " U 5       H4  n[        U5      nUc   eX1;   d  M  X   nSU 3UR                  [        '   M6     g )Nz,.//svg:*[starts-with(@xlink:href, '#glyph')]rg   )r   r8   r!   rh   )r   r_   r#   old_idrc   s        r   update_glyph_href_linksrl      sO    BCCH"2&!!!^F&'xLBIIj! Ir   c              #     #    [        [        [        U 5      5      5      n [        U5      =p#U H  nUS-
  U:X  a  UnM  X#4v   U=p#M     X#4v   g ! [         a     g f = f7f)Nr(   )itersortedrC   r]   StopIteration)intssorted_intsstartendvs        r   rangesrv      st     vc$i()K;'' q5C<C,OEC  ,  s'   A!A $A!
AA!AA!zSVG c           
     *  ^ [         c  [        S5      eUR                  nUR                  nUR                  m/ nU R
                   GH  n[        UR                  UR                  S-   5       Vs1 s H  obU   iM	     snR                  UR                  5      nU(       d  M\  [         R                  " UR                  R                  S5      [         R                  " SSSS9S9n[        U5      n	U V
s1 s H  oU
   iM	     nn
U Vs1 s H  nSU 3iM
     nn[!        X5        [#        X5      (       d  M  UR$                  R&                  (       d  [)        UT5      n[+        X5        [         R,                  " XR$                  R.                  S	9R1                  S5      nU4S
 jU 5       n[3        U5       H-  u  nnUR5                  [7        UUUUR8                  5      5        M/     GM     X@l        [;        U R
                  5      $ s  snf s  sn
f s  snf )Nz.No module named 'lxml', required to subset SVGr(   zutf-8TF)	huge_treeremove_blank_textresolve_entities)parserrV   )pretty_printc              3  .   >#    U  H
  nTU   v   M     g 7frB    ).0ir^   s     r   	<genexpr> subset_glyphs.<locals>.<genexpr>   s     51OA&s   )r   ImportErrororig_glyph_orderreverseOrigGlyphMapr^   docListrangestartGlyphID
endGlyphIDintersectionglyphs
fromstringdataencode	XMLParserr$   rJ   rN   optionsretain_gidsre   rl   tostring
pretty_svgdecoderv   appendr   
compressedbool)selfsglyph_orderrev_orig_glyph_mapnew_docsdocr   r   r   rE   ggidsrF   r_   new_docnew_gidsrs   rt   r^   s                     @r   r   r      s   }JKK //K)*)>)>&'&7&7O"$H||$)#*:*:CNNQ<N$O
$OqN$O

,qxx
  	  HHOOG$??
  #' "'	
& (,/56v!1%v6,01Dqqc{D1H2s00yy$$$S/:F#C0..993G3GHOOPWX55 *JE3OOKS^^LM +U Z L]
6 71s   /H3HH)r"   etree.ElementreturnDict[str, etree.Element])r,   strr   Dict[str, str])r"   r   r   zIterator[str])rE   r   rF   Set[str]r   None)r#   r   rR   r   r   r   )r   r   r^   zDict[int, int]r   r   )r#   r   r   zOptional[str])r   r   r_   r   r   r   )rq   zIterable[int]r   zIterator[Tuple[int, int]])r   r   )*
__future__r   re	functoolsr   	itertoolsr   r   typingr   r   r	   r
   r   r   r   lxmlr   r   	fontToolsr   fontTools.subset.utilr   fontTools.ttLib.tables.S_V_G_r   __all__compilerY   r   rh   r   r$   r1   r@   rJ   rN   re   r8   rl   rv   getTableClassr   r~   r   r   <module>r      s!   " 	  " G G G  - 5 
 
O	$ (+
 *W%&f-
 44 4
G!<&5=	$&	)7@1  U  (); *;q   Es   C CC