Ñò
t,2Jc           @   sÖ   d  Z  d d k Z d d k l Z l Z l Z l Z l Z l Z l	 Z	 d Z
 e i d e
 ƒ i Z e i d e
 ƒ i Z d Z e i d e ƒ i Z e i d e ƒ i Z d d d	 „  ƒ  YZ e ƒ  i Z d
 „  Z d S(   s®   
A module for parsing and generating fontconfig patterns.

See the `fontconfig pattern specification
<http://www.fontconfig.org/fontconfig-user.html>`_ for more
information.
iÿÿÿÿN(   t   Literalt
   ZeroOrMoret   Optionalt   Regext	   StringEndt   ParseExceptiont   Suppresss   \\\-:,s   \\([%s])s   ([%s])s   \\=_:,t   FontconfigPatternParserc           B   s  e  Z d  Z h d+ d 6d, d 6d- d 6d. d 6d/ d 6d0 d 6d1 d 6d2 d	 6d3 d
 6d4 d 6d5 d 6d6 d 6d7 d 6d8 d 6d9 d 6d: d 6d; d 6d< d 6d= d 6d> d 6d? d 6d@ d 6dA d 6dB d! 6Z d" „  Z d# „  Z d$ „  Z d% „  Z d& „  Z d' „  Z	 d( „  Z
 d) „  Z d* „  Z RS(C   sÃ   A simple pyparsing-based parser for fontconfig-style patterns.

    See the `fontconfig pattern specification
    <http://www.fontconfig.org/fontconfig-user.html>`_ for more
    information.
    t   weightt   lightt   thint
   extralightt
   ultralightt   bookt   regulart   normalt   mediumt   demiboldt   semiboldt   bolds
   extra boldt	   extraboldt   blackt   heavyt   slantt   romant   italict   obliquet   widths   ultra-condensedt   ultracondenseds   extra-condensedt   extracondensedt	   condenseds   semi-condensedt   semicondensedt   expandeds   extra-expandedt   extraexpandeds   ultra-expandedt   ultraexpandedc   	      C   sU  t  d t t f ƒ i |  i ƒ } t  d ƒ i |  i ƒ } t  d ƒ i |  i ƒ } t  d t t f ƒ i |  i ƒ } | t t	 d ƒ | ƒ i |  i
 ƒ } | t t	 d ƒ | ƒ i |  i ƒ } | t t	 d ƒ ƒ | t t t	 d ƒ ƒ | ƒ | Bi |  i ƒ } t | ƒ t t	 d ƒ | ƒ t t	 d ƒ | ƒ t ƒ  } | |  _ t |  _ d  S(   Ns   ([^%s]|(\\[%s]))*s   ([0-9]+\.?[0-9]*|\.[0-9]+)s   [a-z]+t   ,t   =t   -t   :(   R   t   family_punct   setParseActiont   _familyt   _sizet   _namet
   value_punct   _valueR   R    t	   _familiest   _point_sizesR   t	   _propertyR   R   t   _parserR   (	   t   selft   familyt   sizet   namet   valuet   familiest   point_sizest   propertyt   pattern(    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyt   __init__E   s8    		
;	c         C   s_   h  } |  _  y |  i i | ƒ Wn. |  i j
 o } t d | | f ƒ ‚ n Xd |  _  | S(   s¸   
        Parse the given fontconfig *pattern* and return a dictionary
        of key/value pairs useful for initializing a
        :class:`font_manager.FontProperties` object.
        s$   Could not parse font string: '%s'
%sN(   t   _propertiesR1   t   parseStringR   t
   ValueErrort   None(   R2   R:   t   propst   e(    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyt   parseu   s    	c         C   s   t  d t | d ƒ ƒ g S(   Ns   \1i    (   t   family_unescapet   str(   R2   t   st   loct   tokens(    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR)   „   s    c         C   s   t  | d ƒ g S(   Ni    (   t   float(   R2   RE   RF   RG   (    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR*   ‡   s    c         C   s   t  | d ƒ g S(   Ni    (   RD   (   R2   RE   RF   RG   (    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR+   Š   s    c         C   s   t  d t | d ƒ ƒ g S(   Ns   \1i    (   t   value_unescapeRD   (   R2   RE   RF   RG   (    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR-      s    c         C   s2   g  } | D] } | t  | ƒ q ~ |  i d <g  S(   NR3   (   RD   R<   (   R2   RE   RF   RG   t   _[1]t   x(    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR.      s    .c         C   s2   g  } | D] } | t  | ƒ q ~ |  i d <g  S(   NR4   (   RD   R<   (   R2   RE   RF   RG   RJ   RK   (    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR/   ”   s    .c         C   s–   t  | ƒ d j oO | d |  i j o7 |  i | d \ } } |  i i | g  ƒ i | ƒ q’ n1 | d } | d } |  i i | g  ƒ i | ƒ g  S(   Ni   i    (   t   lent
   _constantsR<   t
   setdefaultt   appendt   extend(   R2   RE   RF   RG   t   keyt   val(    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR0   ˜   s    $

(   s   weights   light(   s   weights   light(   s   weights   light(   s   weights   light(   s   weightR   (   s   weightR   (   s   weights   normal(   s   weights   medium(   s   weightR   (   s   weightR   (   s   weights   bold(   s   weights
   extra bold(   s   weightR   (   s   weightR   (   R   s   normal(   R   s   italic(   R   R   (   s   widths   ultra-condensed(   s   widths   extra-condensed(   s   widthR   (   s   widths   semi-condensed(   s   widthR    (   s   widths   extra-expanded(   s   widths   ultra-expanded(   t   __name__t
   __module__t   __doc__RM   R;   RB   R)   R*   R+   R-   R.   R/   R0   (    (    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyR   "   sF   
	0							c         C   sù   g  } d } d } x× d i  ƒ  D]É } t |  d | ƒ ƒ  } | d j	 o  | g  j o“ t | ƒ t j oe g  } | D]- } | d j	 o | t d t | ƒ ƒ qs qs ~ } | g  j o d i | ƒ } qÍ n | i d | | f ƒ q q Wd i | ƒ S(   s[   
    Given a dictionary of key/value pairs, generates a fontconfig
    pattern string.
    t    s-   family style variant weight stretch file sizet   get_s   \\\1R#   s   :%s=%sN(	   t   splitt   getattrR?   t   typet   listt   value_escapeRD   t   joinRO   (   t   dR@   R7   R4   RQ   RR   RJ   RK   (    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyt   generate_fontconfig_pattern¥   s     A(    (   RU   t   ret   matplotlib.pyparsingR    R   R   R   R   R   R   R'   t   compilet   subRC   t   family_escapeR,   RI   R\   R   RB   t   parse_fontconfig_patternR_   (    (    (    sM   P:\graphics\Tools\Python26\lib\site-packages\matplotlib\fontconfig_pattern.pyt   <module>   s   4