§
    ‚Ûg¨$  ã                  ó¨  — 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 n# e$ r dZY nw xY wd dlmZ d dlmZ d d	lmZ d
gZ ej        d¦  «        ZdddœZded         › d�Z ed¬¦  «        d„ ¦   «         Zd6d„Zd7d„Z d8d„Z!d9d#„Z"d:d'„Z#d;d+„Z$d<d-„Z%d=d/„Z&d>d3„Z' e ej(        d4¦  «        ¦  «        d?d5„¦   «         Z)dS )@é    )Ú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                ó8   — t          j        | t          ¬¦  «        S )N)Ú
namespaces)r   ÚXPathÚ
NAMESPACES)Úpaths    úJ/granary/edev/quantum/lib/python3.11/site-packages/fontTools/subset/svg.pyÚxpathr   !   s   € õ Œ;�t­
Ð3Ñ3Ô3Ð3ó    Útreeúetree.ElementÚreturnúDict[str, etree.Element]c                óF   — d„  t          d¦  «        | ¦  «        D ¦   «         S )Nc                ó*   — i | ]}|j         d          |“ŒS )Úid)Úattrib)Ú.0Úels     r   ú
<dictcomp>z(group_elements_by_id.<locals>.<dictcomp>+   s    € ÐFÐFÐF BˆBŒI�dŒO˜RÐFÐFÐFr   z//svg:*[@id])r   )r   s    r   Úgroup_elements_by_idr*   '   s,   € ð GÐFÐ*?­%°Ñ*?Ô*?ÀÑ*EÔ*EÐFÑFÔFÐFr   Ú
style_attrÚstrúDict[str, str]c                ó@  — i }|                       d¦  «        D ]…}|                     d¦  «        dk    rD|                      d¦  «        \  }}|                     ¦   «         }|                     ¦   «         ||<   Œ_|                     ¦   «         rt          d|› �¦  «        ‚Œ†|S )Nú;ú:é   z Invalid CSS declaration syntax: )Úsplitr   ÚstripÚ
ValueError)r+   ÚresultÚdeclarationÚproperty_nameÚvalues        r   Úparse_css_declarationsr9   .   s¶   € ð €FØ!×'Ò'¨Ñ,Ô,ð Oð OˆØ×Ò˜SÑ!Ô! QÒ&Ð&Ø#.×#4Ò#4°SÑ#9Ô#9Ñ ˆM˜5Ø)×/Ò/Ñ1Ô1ˆMØ$)§K¢K¡M¤MˆF�=Ñ!Ð!Ø×ÒÑ Ô ð 	OÝÐMÀÐMÐMÑNÔNÐNð	Oà€Mr   úIterator[str]c              #  ó’  K  — t          d¦  «        }t          | g || ¦  «        ¦  «        D ]š}t          |¦  «        }|�|V — |j        }d|v r+i t	          |¦  «        ¥t          |j        d         ¦  «        ¥}dD ]J}||v rD||         }|                     d¦  «        r'|                     d¦  «        r|dd…         }|sJ ‚|V — ŒKŒ›d S )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&   Údictr9   Ú
startswithÚendswith)r   Ú!find_svg_elements_with_referencesr(   Úref_idÚattrsÚattrr8   s          r   Úiter_referenced_idsrI   <   s  è è € õ
 ).ð	ñ)ô )Ð%õ �T�FÐ=Ð=¸dÑCÔCÑDÔDð !ð !ˆÝ" 2Ñ&Ô&ˆØÐØˆLˆLˆLà”	ˆØ�eÐÐØQ•t˜E‘{”{ÐQÕ&<¸R¼YÀwÔ=OÑ&PÔ&PÐQˆEØ)ð 	!ð 	!ˆDØ�uˆ}ˆ}Ø˜dœ�Ø×#Ò# GÑ,Ô,ð !°·²ÀÑ1DÔ1Dð !Ø" 1 R 4œ[�FØ!�M�M�MØ �L�L�Løð	!ð!ð !r   ÚelementsÚelement_idsúSet[str]ÚNonec                óÎ   — |}|r`t          ¦   «         }|D ]/}|| vrŒ|                     t          | |         ¦  «        ¦  «         Œ0||z  }|                     |¦  «         |}|°^d S d S ©N)ÚsetÚupdaterI   )rJ   rK   Ú	unvisitedÚ
referencedÚel_ids        r   Úclosure_element_idsrU   Z   sž   € ð
 €IØ
ð 	Ý"™uœuˆ
Øð 	Dð 	DˆEØ˜HÐ$Ð$àØ×ÒÕ1°(¸5´/ÑBÔBÑCÔCÐCÐCØ�kÑ!ˆ
Ø×Ò˜:Ñ&Ô&Ð&Øˆ	ð ð 	ð 	ð 	ð 	ð 	r   r(   Úretained_idsÚboolc                óþ   ‡— | j                              d¦  «        ‰v rdS t          ˆfd„| D ¦   «         ¦  «        rdS t          | ¦  «        dk    sJ ‚|                      ¦   «         }|�|                     | ¦  «         dS )Nr%   Tc                ó0   •— g | ]}t          |‰¦  «        ‘ŒS © )Úsubset_elements)r'   ÚerV   s     €r   ú
<listcomp>z#subset_elements.<locals>.<listcomp>v   s#   ø€ Ð9Ð9Ð9°�O˜A˜|Ñ,Ô,Ð9Ð9Ð9r   r   F)r&   ÚgetÚanyÚlenÚ	getparentÚremove)r(   rV   Úparents    ` r   r[   r[   l   sŒ   ø€ ð 
„y‡}‚}�TÑÔ˜lÐ*Ð*àˆtõ Ð9Ð9Ð9Ð9°bÐ9Ñ9Ô9Ñ:Ô:ð ØˆtÝˆr‰7Œ7�aŠ<ˆ<ˆ<ˆ<Ø�\Š\‰^Œ^€FØÐØ�Š�bÑÔÐØˆ5r   r   Úglyph_index_mapúDict[int, int]c                ó   — t          | ¦  «        }i }|                     ¦   «         D ]§\  }}t                               |¦  «        }|sŒ"t	          |                     d¦  «        ¦  «        }|                     |¦  «        }|�||k    rŒbd|› �}	n0d|› �}	t          d¦  «        }
|	|v r|	› dt          |
¦  «        › �}	|	|v °|	||<   |	|j	        d<   Œ¨|S )Nr1   Úglyphú.r%   )
r*   ÚitemsÚGID_REÚmatchÚintÚgroupr^   r   Únextr&   )r   rd   rJ   Úid_maprT   r(   ÚmÚ	old_indexÚ	new_indexÚnew_idÚns              r   Úremap_glyph_idsru      s   € õ
 $ CÑ(Ô(€HØ€FØ—^’^Ñ%Ô%ð !ð !‰	ˆˆrÝ�LŠL˜ÑÔˆØð 	ØÝ˜Ÿš ™
œ
‘O”Oˆ	Ø#×'Ò'¨	Ñ2Ô2ˆ	ØÐ Ø˜IÒ%Ð%ØØ(˜YÐ(Ð(ˆFˆFð
 !˜�[�[ˆFÝ�a‘”ˆAØ˜HÐ$Ð$Ø"Ð.Ð.¥T¨!¡W¤WÐ.Ð.�ð ˜HÐ$Ð$ð ˆˆu‰Ø ˆŒ	�$‰ˆà€Mr   úOptional[str]c                óª   — t           | j        v rD| j        t                    }|                     d¦  «        rt          |¦  «        dk    r
|dd …         S d S )Nú#r1   )Ú
XLINK_HREFr&   rC   r`   )r(   Úhrefs     r   rA   rA   Ÿ   sO   € Ý�R”YÐÐØŒy�Ô$ˆØ�?Š?˜3ÑÔð 	¥C¨¡I¤I°¢M MØ˜˜˜”8ˆOØˆ4r   ro   c                óž   —  t          d¦  «        | ¦  «        D ]3}t          |¦  «        }|€J ‚||v r||         }d|› �|j        t          <   Œ4d S )Nz,.//svg:*[starts-with(@xlink:href, '#glyph')]rx   )r   rA   r&   ry   )r   ro   r(   Úold_idrs   s        r   Úupdate_glyph_href_linksr}   §   sn   € àC�eÐBÑCÔCÀCÑHÔHð 1ð 1ˆÝ" 2Ñ&Ô&ˆØÐ!Ð!Ð!Ø�VÐÐØ˜F”^ˆFØ$0¨ L LˆBŒI•jÑ!øð1ð 1r   ÚintsúIterable[int]úIterator[Tuple[int, int]]c              #  óæ   K  — t          t          t          | ¦  «        ¦  «        ¦  «        }	 t          |¦  «        x}}n# t          $ r Y d S w xY w|D ]}|dz
  |k    r|}Œ||fV — |x}}Œ||fV — d S )Nr1   )ÚiterÚsortedrP   rn   ÚStopIteration)r~   Úsorted_intsÚstartÚendÚvs        r   Úrangesr‰   ±   s°   è è € å•v�c $™iœiÑ(Ô(Ñ)Ô)€KðÝ˜;Ñ'Ô'Ð'ˆ��øÝð ð ð Øˆˆðøøøàð ð ˆØˆq‰5�CŠ<ˆ<ØˆCˆCà˜#�,ÐÐÐØˆOˆE�C�CØ�#ˆ,ÐÐÐÐÐs   ­? ¿
AÁAzSVG c           
     óª  ‡‡‡— t           €t          d¦  «        ‚|j        Š|j        Š|j        Šg }| j        D �]€}ˆfd„t          |j        |j        dz   ¦  «        D ¦   «          	                    |j
        ¦  «        }|sŒGt          j        |j                             d¦  «        t          j        ddd¬¦  «        ¬¦  «        }t          |¦  «        }ˆfd	„|D ¦   «         }d
„ |D ¦   «         }t!          ||¦  «         t#          ||¦  «        sŒÔ|j        j        s t)          |‰¦  «        }	t+          ||	¦  «         t          j        ||j        j        ¬¦  «                             d¦  «        }
ˆfd„|D ¦   «         }t3          |¦  «        D ]/\  }}|                     t7          |
|||j        ¦  «        ¦  «         Œ0�Œ‚|| _        t;          | j        ¦  «        S )Nz.No module named 'lxml', required to subset SVGc                ó    •— h | ]
}‰|         ’ŒS rZ   rZ   )r'   ÚiÚglyph_orders     €r   ú	<setcomp>z subset_glyphs.<locals>.<setcomp>Ï   s*   ø€ ð 
ð 
ð 
Ø ˆK˜ŒNð
ð 
ð 
r   r1   zutf-8TF)Ú	huge_treeÚremove_blank_textÚresolve_entities)Úparserc                ó    •— h | ]
}‰|         ’ŒS rZ   rZ   )r'   ÚgÚrev_orig_glyph_maps     €r   rŽ   z subset_glyphs.<locals>.<setcomp>ê   s   ø€ Ð6Ð6Ð6¨!Ð" 1Ô%Ð6Ð6Ð6r   c                ó   — h | ]}d |› �’ŒS )rg   rZ   )r'   rŒ   s     r   rŽ   z subset_glyphs.<locals>.<setcomp>ë   s   € Ð1Ð1Ð1 q�{˜q�{�{Ð1Ð1Ð1r   )Úpretty_printc              3  ó(   •K  — | ]}‰|         V — Œd S rO   rZ   )r'   rŒ   rd   s     €r   ú	<genexpr>z subset_glyphs.<locals>.<genexpr>÷   s(   øè è € Ð5Ð5¨1�O AÔ&Ð5Ð5Ð5Ð5Ð5Ð5r   )r   ÚImportErrorÚorig_glyph_orderÚreverseOrigGlyphMaprd   ÚdocListÚrangeÚstartGlyphIDÚ
endGlyphIDÚintersectionÚglyphsÚ
fromstringÚdataÚencodeÚ	XMLParserr*   rU   r[   ÚoptionsÚretain_gidsru   r}   ÚtostringÚ
pretty_svgÚdecoder‰   Úappendr   Ú
compressedrW   )ÚselfÚsÚnew_docsÚdocr¢   r   rJ   ÚgidsrK   ro   Únew_docÚnew_gidsr†   r‡   rd   r�   r•   s                 @@@r   r   r   Á   s"  øøø€ å€}ÝÐJÑKÔKÐKð Ô/€Kà)*Ô)>Ðà&'Ô&7€Oà"$€HØŒ|ð +Nñ +Nˆð
ð 
ð 
ð 
Ý$)¨#Ô*:¸C¼NÈQÑ<NÑ$OÔ$Oð
ñ 
ô 
ç
Š,�q”xÑ
 Ô
 ð 	ð ð 	àåÔð ŒH�OŠO˜GÑ$Ô$Ý”?ð
 ð #'ð "'ðñ ô ð	
ñ 
ô 
ˆõ& (¨Ñ,Ô,ˆØ6Ð6Ð6Ð6¨vÐ6Ñ6Ô6ˆØ1Ð1¨DÐ1Ñ1Ô1ˆÝ˜H kÑ2Ô2Ð2å˜s KÑ0Ô0ð 	ØàŒyÔ$ð 	1Ý$ S¨/Ñ:Ô:ˆFÝ# C¨Ñ0Ô0Ð0å”. °1´9Ô3GÐHÑHÔH×OÒOÐPWÑXÔXˆà5Ð5Ð5Ð5°Ð5Ñ5Ô5ˆÝ  Ñ*Ô*ð 	Nð 	N‰JˆE�3Ø�OŠO�K¨°¸¸S¼^ÑLÔLÑMÔMÐMÐMñ	Nð €D„Lå�”ÑÔÐr   )r   r    r!   r"   )r+   r,   r!   r-   )r   r    r!   r:   )rJ   r"   rK   rL   r!   rM   )r(   r    rV   rL   r!   rW   )r   r    rd   re   r!   r-   )r(   r    r!   rv   )r   r    ro   r-   r!   rM   )r~   r   r!   r€   )r!   rW   )*Ú
__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__Úcompilerj   r   ry   r   r*   r9   rI   rU   r[   ru   rA   r}   r‰   ÚgetTableClassr   rZ   r   r   ú<module>rÁ      se  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GðØÐÐÐÐÐÐøØð ð ð ð €E€E€Eðøøøð
 Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð Ð
€ð 
ˆŒ�OÑ	$Ô	$€ð (Ø+ðð €
ð .�*˜WÔ%Ð-Ð-Ð-€
ð €�4ÐÑÔð4ð 4ñ Ôð4ð
Gð Gð Gð Gðð ð ð ð!ð !ð !ð !ð<ð ð ð ð$ð ð ð ð&ð ð ð ð@ð ð ð ð1ð 1ð 1ð 1ðð ð ð ð  €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð;ð ;ð ;ñ *Ô)ð;ð ;ð ;s   ¬3 ³=¼=