
    DVf~              	       ,   d Z ddlmZmZ ddlZddlmZmZmZm	Z	m
Z
mZmZ ddlmZ dZ e ej                   dez        j"                  d      Z e ej                   d	ez        j"                  d
      ZdZ e ej                   dez        j"                  d      Z e ej                   d	ez        j"                  d
      Zi dddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2Zed3        Zed4        Zd5 Zy)6z
A module for parsing and generating `fontconfig patterns`_.

.. _fontconfig patterns:
   https://www.freedesktop.org/software/fontconfig/fontconfig-user.html
    )	lru_cachepartialN)GroupOptionalParseExceptionRegex	StringEndSuppress
ZeroOrMore)_apiz\\\-:,z
\\(?=[%s]) z(?=[%s])z\\z\\=_:,thin)weightlight
extralight
ultralightr   book)r   r   regular)r   r   normal)r   r   medium)r   r   demibold)r   r   semibold)r   r   bold)r   r   	extrabold)r   z
extra boldblack)r   r   heavy)r   r   roman)slantr   italic)r   r   oblique)r   r    )widthzultra-condensed)r!   zextra-condensed)r!   	condensed)r!   zsemi-condensed)r!   expanded)r!   zextra-expanded)r!   zultra-expanded)ultracondensedextracondensedr"   semicondensedr#   extraexpandedultraexpandedc                     d } t        dt         dt         d      }t        d      }t        d      }t        dt         dt         d      }t        |t	        d      z    | |      z   |z        }t          | |      d            t        d	  | |      d
      z         z   t        d |d      z         z   t               z   S )Nc                 6    | t        t        d      | z         z   S )N,)r   r
   )elems    g/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/_fontconfig_pattern.pycomma_separatedz0_make_fontconfig_parser.<locals>.comma_separated;   s    j#!5666    z([^z]|(\\[z]))*z([0-9]+\.?[0-9]*|\.[0-9]+)z[a-z]+=families-sizes:zproperties*)r   _family_punc_value_puncr   r
   r   r   r	   )r.   familysizenamevalueprops         r-   _make_fontconfig_parserr<   9   s    7 c,vl^4@AF./DDSVK==>E$#&)??4GHD((45
3..w77
8	9
S4..
/	0 +	r/   c                 :   t               }	 |j                  |       }|j                          i }d|v rg t        t        |d         |d<   d|v r
g |d   |d<   |j                  dg       D ]y  }t        |      d	k(  r6|d   t        vrt        j                  d
d|d   d       ;t        |d      }|^}}|j                  |g       j                  t        t        |             { |S # t        $ r(}t        dt        j                  |d      z         dd}~ww xY w)zs
    Parse a fontconfig *pattern* into a dict that can initialize a
    `.font_manager.FontProperties` object.
    
r   Nr1   r7   r3   r8   
properties   z3.7zSupport for unknown constants (z@) is deprecated since %(since)s and will be removed %(removal)s.)message)r<   parseStringr   
ValueErrorexplain
resetCachemap_family_unescapegetlen
_CONSTANTSr   warn_deprecated
setdefaultextend_value_unescape)patternparserparseerrpropsr;   kvs           r-   parse_fontconfig_patternrV   P   sF    %&FJ""7+ EUEC 0%
2CDEh%)%.)f		,+ 
@t9>Awj($$ &Q{ #3$45 d1g&DAB&&s?A'>?
@ L)  J 6 6sA >>?TIJs   C) )	D2#DDc           
          dD cg c]  }| t        | d|              f }}dj                  d | j                         D              dj                  d |D              z   S c c}w )z;Convert a `.FontProperties` to a fontconfig pattern string.)stylevariantr   stretchfiler8   get_r+   c              3   2   K   | ]  }t        |        y w)N)_family_escape).0fs     r-   	<genexpr>z.generate_fontconfig_pattern.<locals>.<genexpr>v   s     ?1^A&?s   r   c           	   3   Z   K   | ]#  \  }}|d| dt        t        |              % y w)Nr4   r0   )_value_escapestr)r_   rT   rU   s      r-   ra   z.generate_fontconfig_pattern.<locals>.<genexpr>w   s7      8!Q !AmCF345 8s   )+)getattrjoin
get_family)drT   kvss      r-   generate_fontconfig_patternrj   p   s     NO %wqD*%'( OC O HH???gg 8"%8 88 9	Os   A#)__doc__	functoolsr   r   re	pyparsingr   r   r   r   r	   r
   r   
matplotlibr   r5   compilesubrG   r^   r6   rN   rc   rJ   r<   rV   rj    r/   r-   <module>rs      s   ) 	M M M  :2::ml&BCGGL K,$>?CCUK*"**][%@AEErJ


;#<=AA5I
)) ) )	
 ( + * * , , ( . ) ) )  )!" *#$ 32,1+111
8  ,  >9r/   