
    l0j              	          d Z ddlmZ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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.d/d0d1Zed2             Zed3             Zd4 ZdS )5z
A module for parsing and generating `fontconfig patterns`_.

.. _fontconfig patterns:
   https://www.freedesktop.org/software/fontconfig/fontconfig-user.html
    )cache	lru_cachepartialN)GroupOptionalParseExceptionRegex	StringEndSuppress
ZeroOrMoreone_ofz\\\-:,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   t          t                    z            }t            | |          d                    t          d	  | |          d
          z             z   t          d |d          z             z   t                      z   S )Nc                 F    | t          t          d          | z             z   S )N,)r   r   )elems    a/home/wildlama/miniconda3/envs/lam/lib/python3.11/site-packages/matplotlib/_fontconfig_pattern.pycomma_separatedz0_make_fontconfig_parser.<locals>.comma_separated9   s     j#!56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   
_CONSTANTSr   r   r
   )r/   familysizenamevalueprops         r.   _make_fontconfig_parserr>   7   s    7 7 7 @,@@l@@@AAF.//DD===K===>>E$#&)?)??6*CUCUUVVD(((4455
3...w777
8
8	9
S44...
/
/	0 ++	r0   c                 T   t                      }	 |                    |           }n8# t          $ r+}t          dt          j        |d          z             dd}~ww xY w|                                 i }d|v r g t          t          |d                   |d<   d|v rg |d         |d<   |                    dg           D ]h}t          |          d	k    rt          |d                  }|^}}|                    |g                               t          t          |                     i|S )
zs
    Parse a fontconfig *pattern* into a dict that can initialize a
    `.font_manager.FontProperties` object.
    
r   Nr2   r9   r4   r:   
properties   )r>   parse_stringr   
ValueErrorexplainreset_cachemap_family_unescapegetlenr8   
setdefaultextend_value_unescape)patternparserparseerrpropsr=   kvs           r.   parse_fontconfig_patternrU   M   sI    %&&FJ##G,, J J J 6sA > >>??TIJ EUEC 0%
2CDDEh%)%.)f		,++ @ @t99>>d1g&DAB&&s?A'>'>????Ls   & 
A&AAc                       fddD             }d                     d                                  D                       d                     d |D                       z   S )z;Convert a `.FontProperties` to a fontconfig pattern string.c           	      J    g | ]}| t          d |                       f S )get_)getattr).0rS   ds     r.   
<listcomp>z/generate_fontconfig_pattern.<locals>.<listcomp>i   sM     O O O %wq***%%''( O O Or0   )stylevariantr   stretchfiler:   r,   c              3   4   K   | ]}t          |          V  d S )N)_family_escape)rZ   fs     r.   	<genexpr>z.generate_fontconfig_pattern.<locals>.<genexpr>m   s*      ??1^A&&??????r0   r   c           	   3   d   K   | ]+\  }}|d| dt          t          |                     V  ,d S )Nr5   r1   )_value_escapestr)rZ   rS   rT   s      r.   rd   z.generate_fontconfig_pattern.<locals>.<genexpr>n   sQ       8 8!Q 6!55mCFF3355)68 8r0   )join
get_family)r[   kvss   ` r.   generate_fontconfig_patternrk   g   s    O O O OMO O OC HH???????gg 8 8"%8 8 8 8 88 9r0   )__doc__	functoolsr   r   r   re	pyparsingr   r   r   r	   r
   r   r   r   r6   compilesubrH   rb   r7   rM   rf   r8   r>   rU   rk    r0   r.   <module>rs      s    0 / / / / / / / / / 				U U U U U U U U U U U U U U U U U U U U 7:2:ml&BCCGLL K,$>??CUKK'*"*][%@AAErJJ

;#<==A5II
)) ) )	
 ( + * * , , ( . ) ) )  )!" *#$ 32,1+111  
8   *   29 9 9 9 9r0   