Ë
    ÚÍ:jQ$  ã                  ó˜  — d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZmZmZmZmZ 	 d dlmZ d dlmZ d dlmZ d d	lmZ d
gZ ej4                  d«      ZdddœZded   › d�Zed„ «       Zdd„Zdd„Z d d„Z!	 	 	 	 	 	 d!d„Z"d"d„Z#	 	 	 	 	 	 d#d„Z$d$d„Z%d%d„Z&d&d„Z' e ejP                  d«      «      d'd„«       Z)y# e$ r dZY Œ–w xY w)(é    )ÚannotationsN)Ú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}hrefc                ó8   — t        j                  | t        ¬«      S )N)Ú
namespaces)r   ÚXPathÚ
NAMESPACES)Úpaths    úi/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/subset/svg.pyÚxpathr       s   € ô �;‰;�t¬
Ô3Ð3ó    c                óf   —  t        d«      | «      D �ci c]  }|j                  d   |“Œ c}S c c}w )Nz//svg:*[@id]Úid)r   Úattrib)ÚtreeÚels     r   Úgroup_elements_by_idr#   &   s2   € ð +@¬%°Ó*?ÀÓ*EÖF BˆB�I‰I�d‰O˜RÑÒFÐFùÒFs   ”.c                ó
  — i }| j                  d«      D ]l  }|j                  d«      dk(  r8|j                  d«      \  }}|j                  «       }|j                  «       ||<   ŒO|j                  «       sŒ`t        d|› �«      ‚ |S )Nú;ú:é   z Invalid CSS declaration syntax: )Úsplitr   ÚstripÚ
ValueError)Ú
style_attrÚresultÚdeclarationÚproperty_nameÚvalues        r   Úparse_css_declarationsr0   -   s‘   € ð €FØ!×'Ñ'¨Ó,ò OˆØ×Ñ˜SÓ! QÒ&Ø#.×#4Ñ#4°SÓ#9Ñ ˆM˜5Ø)×/Ñ/Ó1ˆMØ$)§K¡K£MˆF�=Ò!Ø×ÑÕ ÜÐ?À¸}ÐMÓNÐNðOð €Mr   c              #  ób  K  — t        d«      }t        | g || «      «      D ]Š  }t        |«      }|�|–— |j                  }d|v r%i t	        |«      ¥t        |j                  d   «      ¥}dD ]=  }||v sŒ||   }|j                  d«      sŒ|j                  d«      sŒ1|dd }|sJ ‚|–— Œ? ŒŒ y ­w)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    Údictr0   Ú
startswithÚendswith)r!   Ú!find_svg_elements_with_referencesr"   Úref_idÚattrsÚattrr/   s          r   Úiter_referenced_idsr?   ;   sÏ   è ø€ ô
 ).ð	ó)Ð%ô �T�FÑ=¸dÓCÓDò !ˆÜ" 2Ó&ˆØÐØŠLà—	‘	ˆØ�eÑØQ”t˜E“{ÐQÔ&<¸R¿Y¹YÀwÑ=OÓ&PÐQˆEØ)ò 	!ˆDØ�uŠ}Ø˜d™�Ø×#Ñ# GÕ,°·±ÀÕ1DØ" 1 R˜[�FÙ!�M˜6Ø “Lñ	!ñ!ùs   ‚A1B/Á4B/ÂB/ÂB/c                óª   — |}|rOt        «       }|D ]$  }|| vrŒ|j                  t        | |   «      «       Œ& ||z  }|j                  |«       |}|rŒNy y ©N)ÚsetÚupdater?   )ÚelementsÚelement_idsÚ	unvisitedÚ
referencedÚel_ids        r   Úclosure_element_idsrI   Y   sk   € ð
 €IÙ
Ü"›uˆ
Øò 	DˆEØ˜HÑ$àØ×ÑÔ1°(¸5±/ÓBÕCð		Dð
 	�kÑ!ˆ
Ø×Ñ˜:Ô&Øˆ	ô r   c           	     óø   — | j                   j                  d«      |v ryt        | D �cg c]  }t        ||«      ‘Œ c}«      ryt	        | «      dk(  sJ ‚| j                  «       }|�|j                  | «       yc c}w )Nr   Tr   F)r    ÚgetÚanyÚsubset_elementsÚlenÚ	getparentÚremove)r"   Úretained_idsÚeÚparents       r   rM   rM   k   sp   € ð 
‡y�y‡}�}�TÓ˜lÑ*àô °bÖ9°ŒO˜A˜|Õ,Ò9Ô:ØÜˆr‹7�aŠ<Ðˆ<Ø�\‰\‹^€FØÐØ�‰�bÔØùò :s   ¨A7c                ól  — t        | «      }i }|j                  «       D ]“  \  }}t        j                  |«      }|sŒt	        |j                  d«      «      }|j                  |«      }|�||k(  rŒQd|› �}	n)d|› �}	t        d«      }
|	|v r|	› dt        |
«      › �}	|	|v rŒ|	||<   |	|j                  d<   Œ• |S )Nr'   Úglyphú.r   )
r#   ÚitemsÚGID_REÚmatchÚintÚgrouprK   r   Únextr    )r   Úglyph_index_maprD   Úid_maprH   r"   ÚmÚ	old_indexÚ	new_indexÚnew_idÚns              r   Úremap_glyph_idsrd   ~   sÚ   € ô
 $ CÓ(€HØ€FØ—^‘^Ó%ò !‰	ˆˆrÜ�L‰L˜ÓˆÙØÜ˜Ÿ™ ›
“Oˆ	Ø#×'Ñ'¨	Ó2ˆ	ØÐ Ø˜IÒ%ØØ˜Y˜KÐ(‰Fð
 ˜˜�[ˆFÜ�a“ˆAØ˜HÑ$Ø"˜8 1¤T¨!£W IÐ.�ð ˜HÒ$ð ˆˆu‰Ø ˆ�	‰	�$Šð)!ð, €Mr   c                ó–   — t         | j                  v r7| j                  t            }|j                  d«      rt        |«      dkD  r|dd  S y )Nú#r'   )Ú
XLINK_HREFr    r9   rN   )r"   Úhrefs     r   r7   r7   ž   s@   € Ü�R—Y‘YÑØ�y‰yœÑ$ˆØ�?‰?˜3Ô¤C¨£I°¢MØ˜˜�8ˆOØr   c                óŽ   —  t        d«      | «      D ]1  }t        |«      }|€J ‚||v sŒ||   }d|› �|j                  t        <   Œ3 y )Nz,.//svg:*[starts-with(@xlink:href, '#glyph')]rf   )r   r7   r    rg   )r   r^   r"   Úold_idrb   s        r   Úupdate_glyph_href_linksrk   ¦   sY   € àCŒeÐBÓCÀCÓHò 1ˆÜ" 2Ó&ˆØÐ!Ð!Ð!Ø�VÒØ˜F‘^ˆFØ&'¨ x LˆB�I‰I”jÒ!ñ1r   c              #  óÄ   K  — t        t        t        | «      «      «      }	 t        |«      x}}|D ]  }|dz
  |k(  r|}Œ||f–— |x}}Œ ||f–— y # t        $ r Y y w xY w­w)Nr'   )ÚiterÚsortedrB   r\   ÚStopIteration)ÚintsÚsorted_intsÚstartÚendÚvs        r   Úrangesru   °   s€   è ø€ ä”vœc $›iÓ(Ó)€KðÜ˜;Ó'Ð'ˆ�ð ò ˆØˆq‰5�CŠ<Ø‰Cà˜#�,ÒØˆOˆE‘Cðð �#ˆ,Óøô ò Ùðüs'   ‚A ¡A ®#A Á	AÁA ÁAÁA zSVG c           
     ó  ‡— t         €t        d«      ‚|j                  }|j                  }|j                  Šg }| j
                  D �]Ž  }t        |j                  |j                  dz   «      D �ch c]  }||   ’Œ	 c}j                  |j                  «      }|sŒTt        j                  |j                  j                  d«      t        j                  ddd¬«      ¬«      }t        |«      }	|D �
ch c]  }
||
   ’Œ	 }}
|D �ch c]  }d|› �’Œ	 }}t!        |	|«       t#        ||«      sŒâ|j$                  j&                  st)        |‰«      }t+        ||«       t        j,                  ||j$                  j.                  ¬	«      j1                  d«      }ˆfd
„|D «       }t3        |«      D ],  \  }}|j5                  t7        ||||j8                  «      «       Œ. �Œ‘ || _        t;        | j
                  «      S c c}w c c}
w c c}w )Nz.No module named 'lxml', required to subset SVGr'   zutf-8TF)Ú	huge_treeÚremove_blank_textÚresolve_entities)ÚparserrU   )Úpretty_printc              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wrA   © )Ú.0Úir]   s     €r   ú	<genexpr>z subset_glyphs.<locals>.<genexpr>ö   s   øè ø€ Ò5¨1�O AÕ&Ñ5ùs   ƒ)r   ÚImportErrorÚorig_glyph_orderÚreverseOrigGlyphMapr]   ÚdocListÚrangeÚstartGlyphIDÚ
endGlyphIDÚintersectionÚglyphsÚ
fromstringÚdataÚencodeÚ	XMLParserr#   rI   rM   ÚoptionsÚretain_gidsrd   rk   ÚtostringÚ
pretty_svgÚdecoderu   Úappendr   Ú
compressedÚbool)ÚselfÚsÚglyph_orderÚrev_orig_glyph_mapÚnew_docsÚdocr   r‰   r   rD   ÚgÚgidsrE   r^   Únew_docÚnew_gidsrr   rs   r]   s                     @r   r   r   À   sÜ  ø€ ä€}ÜÐJÓKÐKð ×/Ñ/€Kà)*×)>Ñ)>Ðà&'×&7Ñ&7€Oà"$€HØ�|‰|ó +Nˆä$)¨#×*:Ñ*:¸C¿N¹NÈQÑ<NÓ$Oö
Ø ˆK˜‹Nò
ç
‰,�q—x‘xÓ
 ð 	ñ àä×Ñð �H‰H�O‰O˜GÓ$Ü—?‘?ð
 ð #'ð "'ôô	
ˆô& (¨Ó,ˆØ/5Ö6¨!Ð" 1Ó%Ð6ˆÐ6Ø,0Ö1 q˜˜q˜c’{Ð1ˆÐ1Ü˜H kÔ2ä˜s KÔ0Øà�y‰y×$Ò$Ü$ S¨/Ó:ˆFÜ# C¨Ô0ä—.‘. °1·9±9×3GÑ3GÔH×OÑOÐPWÓXˆã5°Ô5ˆÜ  Ó*ò 	N‰JˆE�3Ø�O‰OœK¨°¸¸S¿^¹^ÓLÕMò	NðU+NðZ €D„Lä�—‘ÓÐùò]
ùò6 7ùÚ1s   Á.G3Ã.G8Ä G=)r!   úetree.ElementÚreturnúDict[str, etree.Element])r+   Ústrr¡   úDict[str, str])r!   r    r¡   zIterator[str])rD   r¢   rE   úSet[str]r¡   ÚNone)r"   r    rQ   r¥   r¡   r•   )r   r    r]   zDict[int, int]r¡   r¤   )r"   r    r¡   zOptional[str])r   r    r^   r¤   r¡   r¦   )rp   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__ÚcompilerX   r   rg   r   r#   r0   r?   rI   rM   rd   r7   rk   ru   ÚgetTableClassr   r}   r   r   ú<module>r³      s!  ðÝ "ã 	Ý ß "ß G× GÑ GðÝõ Ý -Ý 5ð Ð
€ð 
ˆ�‰�OÓ	$€ð (Ø+ñ€
ð �*˜WÑ%Ð& fÐ-€
ð ñ4ó ð4ó
Góó!ð<Ø&ðØ5=ðà	óó$ð&Ø	ðØ)7ðàóó@ó1óñ  Ð ˆU× Ñ  Ó(Ó)ò;ó *ñ;øðo ò ð ‚Eðús   ¬B? Â?C	ÃC	