+
     ]i  c                   sR   R t ^ RIHtHt ^ RIt^ RIHtHtHtH	t	H
t
HtHtHt Rt]! ]P                  ! R],          4      P                   R4      t]! ]P                  ! R],          4      P                   R4      tR	t]! ]P                  ! R],          4      P                   R4      t]! ]P                  ! R],          4      P                   R4      t/ R
R%bRR%bRR%bRR%bRR&bRR'bRR(bRR)bRR*bRR+bRR,bRR-bRR.bRR/bRR0bRR1bRR2bRR3RR4RR5RR6RR7R R8R!R9/Ct]R" 4       t]R# 4       tR$ tR# ):z
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one_ofz\\\-:,z
\\(?=[%s]) z(?=[%s])z\\z\\=_:,ZthinlightZ
extralightZ
ultralightbookregularnormalmediumdemiboldsemiboldboldZ	extraboldblackheavyZromanitalicobliqueZultracondensedZextracondensed	condensedZsemicondensedexpandedZextraexpandedZultraexpandedc                  s   R  p \        R\         R\         R24      p\        R4      p\        R4      p\        R\         R\         R24      p\        V\	        R4      ,           V ! V4      ,           \        \        4      ,          4      p\        V ! V4      ! R4      4      \        RV ! V4      ! R	4      ,           4      ,           \        R
V! R4      ,           4      ,           \        4       ,           # )c                 sF    V \        \        R 4      V ,           4      ,           # ),)r   r   )Zelems   &E/usr/lib64/python3.14/site-packages/matplotlib/_fontconfig_pattern.pycomma_separatedZ0_make_fontconfig_parser.<locals>.comma_separated9   s    j#!5666    z([^z]|(\\[z]))*z([0-9]+\.?[0-9]*|\.[0-9]+)z[a-z]+=familiesZ-sizes:zproperties*)
r   _family_punc_value_puncr   r   r	   
_CONSTANTSr   r   r   )r   familysizeZnameZvalueprops         r   _make_fontconfig_parserr'   7   s    7 c,vl^4@AF./DDSVK==>E$#&)??6*CUUVD(45
3.w77
8	9
S4..
/	0 +	r   c                s&   \        4       p VP                  V 4      pTP                  4        / pRT9   d   . \        \        TR,          4      OTR&   RT9   d   . TR,          OTR&   TP                  R. 4       FY  p\        T4      ^8X  d   \        T^ ,          ,          pTvrgTP                  T. 4      P                  \        \        T4      4       K[  	  T#   \         d.   p\        R\        P                  ! T^ 4      ,           4      RhRp?ii ; i)zg
Parse a fontconfig *pattern* into a dict that can initialize a
`.font_manager.FontProperties` object.
Z
Nr   r$   r   r%   Z
properties)r'   Zparse_stringr   Z
ValueErrorZexplainZreset_cacheZmap_family_unescapeZgetZlenr#   Z
setdefaultZextend_value_unescape)ZpatternZparserZparseZerrZpropsr&   kvs   &       r   parse_fontconfig_patternr,   M   s    %&FJ##G, EUEC 0%
2CDEh%)%.)f		,+t9>d1g&DB&&s?A'>?	 ,
 L  J 6 6sA >>?TIJs   C D#(DDc           	     s    R Uu. uF  pV\        V RV 24      ! 4       3NK  	  ppRP                  R V P                  4        4       4      RP                  R V 4       4      ,           # u upi )z;Convert a `.FontProperties` to a fontconfig pattern string.Zget_r   c              3   s8   "   T F  p\        V4      x  K  	  R # 5i)N)_family_escape).0Zfs   & r   	<genexpr>.generate_fontconfig_pattern.<locals>.<genexpr>m   s     ?1^A&&s   r
   c           	   3   sf   "   T F'  w  rVf   K  RV R\        \        V4      4       2x  K)  	  R # 5i)Nr    r   )_value_escapeZstr)r.   r*   r+      &  r   r/   r0   n   s4      8"%$! 6!AmCF345"%s   1"1)ZstyleZvariantweightZstretchZfiler%   )ZgetattrZjoinZ
get_family)Zdr*   Zkvsr2   r   generate_fontconfig_patternr4   g   s     NOMq wqD*%'(M  O HH???gg 8"%8 88 9	Os   A))r3   r   )r3   r   )r3   r   )r3   r   )r3   r   )r3   r   )r3   r   )r3   r   )r3   z
extra bold)r3   r   )r3   r   )slantr   )r5   r   )r5   r   )widthzultra-condensed)r6   zextra-condensed)r6   r   )r6   zsemi-condensed)r6   r   )r6   zextra-expanded)r6   zultra-expanded)Z__doc__Z	functoolsr    r   ZreZ	pyparsingr   r   r   r   r   r   r   r	   r!   ZcompileZsubr(   r-   r"   r)   r1   r#   r'   r,   r4   ) r   r   <module>r7      s   ) 	U U U 2::ml&BCGGL K,$>?CCUK"**][%@AEErJ

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