
    rbiQ$                       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             Zd5dZd6dZ d7dZ!d8d"Z"d9d&Z#d:d*Z$d;d,Z%d<d.Z&d=d2Z' e ej(        d3                    d>d4            Z)dS )?    )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    d/var/www/html/mdtn/previsions/meteo_cartes/venv/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FBBIdOR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_declarationsr8   -   s     F!'',, O OS!!Q&&#.#4#4S#9#9 M5)//11M$)KKMMF=!!   	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  Kd 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%   dictr8   
startswithendswith)r   !find_svg_elements_with_referencesr'   ref_idattrsattrr7   s          r   iter_referenced_idsrH   ;   s     
 ).	) )% TF==dCCDD ! !"2&&LLL	eQtE{{Q&<RYw=O&P&PQE) 	! 	!Du}}d##G,, !1D1D !"1R4[F!MMM LLL	!! !r   elementselement_idsSet[str]Nonec                    |}|r`t                      }|D ]/}|| vr|                    t          | |                              0||z  }|                    |           |}|^d S d S N)setupdaterH   )rI   rJ   	unvisited
referencedel_ids        r   closure_element_idsrT   Y   s    
 I
 	"uu
 	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&   erU   s     r   
<listcomp>z#subset_elements.<locals>.<listcomp>u   s#    999OA|,,999r   r   F)r%   getanylen	getparentremove)r'   rU   parents    ` r   rZ   rZ   k   s     
y}}Tl**t 9999b999:: tr77a<<<<\\^^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 )Nr0   glyph.r$   )
r)   itemsGID_REmatchintgroupr]   r   nextr%   )r   rc   rI   id_maprS   r'   m	old_index	new_indexnew_idns              r   remap_glyph_idsrt   ~   s    
 $C((HF^^%% ! !	rLL 	

OO	#''	22	 I%%(Y((FF
 ![[FaAH$$"..T!WW.. H$$ u 	$Mr   Optional[str]c                    t           | j        v rD| j        t                    }|                    d          rt          |          dk    r
|dd          S d S )N#r0   )
XLINK_HREFr%   rB   r_   )r'   hrefs     r   r@   r@      sO    RYy$??3 	CIIMM8O4r   rn   c                     t          d          |           D ]3}t          |          }|J ||v r||         }d| |j        t          <   4d S )Nz,.//svg:*[starts-with(@xlink:href, '#glyph')]rw   )r   r@   r%   rx   )r   rn   r'   old_idrr   s        r   update_glyph_href_linksr|      sn    CeBCCCHH 1 1"2&&!!!VF^F$0LLBIj!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 )Nr0   )itersortedrO   rm   StopIteration)r}   sorted_intsstartendvs        r   rangesr      s      vc$ii(())K;'''     q5C<<CC#,OECC#,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 rY   rY   )r&   iglyph_orders     r   	<setcomp>z subset_glyphs.<locals>.<setcomp>   s*     
 
 
 KN
 
 
r   r0   zutf-8TF)	huge_treeremove_blank_textresolve_entities)parserc                     h | ]
}|         S rY   rY   )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 )rf   rY   )r&   r   s     r   r   z subset_glyphs.<locals>.<setcomp>   s    111q{q{{111r   )pretty_printc              3  (   K   | ]}|         V  d S rN   rY   )r&   r   rc   s     r   	<genexpr>z subset_glyphs.<locals>.<genexpr>   s(      551OA&555555r   )r   ImportErrororig_glyph_orderreverseOrigGlyphMaprc   docListrangestartGlyphID
endGlyphIDintersectionglyphs
fromstringdataencode	XMLParserr)   rT   rZ   optionsretain_gidsrt   r|   tostring
pretty_svgdecoder   appendr   
compressedrV   )selfsnew_docsdocr   r   rI   gidsrJ   rn   new_docnew_gidsr   r   rc   r   r   s                 @@@r   r   r      s"   }JKKK /K)*)>&'&7O"$H| +N +N
 
 
 
$)#*:CNQ<N$O$O
 
 

,qx
 
  	  	 HOOG$$?
  #' "'  	
 
 
& (,,6666v66611D111Hk222sK00 	y$ 	1$S/::F#C000.193GHHHOOPWXX5555555 ** 	N 	NJE3OOKS^LLMMMM	N DLr   )r   r   r    r!   )r*   r+   r    r,   )r   r   r    r9   )rI   r!   rJ   rK   r    rL   )r'   r   rU   rK   r    rV   )r   r   rc   rd   r    r,   )r'   r   r    ru   )r   r   rn   r,   r    rL   )r}   r~   r    r   )r    rV   )*
__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__compileri   r   rx   r   r)   r8   rH   rT   rZ   rt   r@   r|   r   getTableClassr   rY   r   r   <module>r      sW   " " " " " " 				       " " " " " " " " G G G G G G G G G G G G G G G G G G    EEE
       - - - - - - 5 5 5 5 5 5 
 
O	$	$ (+ 
 .*W%---
 4 4 4
G G G G   ! ! ! !<   $   &   @   1 1 1 1      U (()); ; ; *); ; ;s   3 ==