³ò
~×YKc           @   s@  d  d k  Z  d  d k i i Z d  d k Z e e  _ d  d k Z h  Z h  Z d e	 f d „  ƒ  YZ
 d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d „  Z d	 e
 f d
 „  ƒ  YZ d d e e e d d d h  d d „
 Z d d e e e d d d d h  d „
 Z d d e e e d d „ Z d „  Z e e e d d „ Z d „  Z d S(   iÿÿÿÿNt	   ImageFontc           B   sD   e  Z d  „  Z d d	 d „ Z d „  Z d „  Z d „  Z d „  Z RS(
   c      
   C   sà   | p d |  i  f Sn |  i | d \ } } | } x… t | | d ƒ D]p \ } } y/ | |  i | |  i i | | |  i ƒ 7} WqJ t j
 o& t d | t	 |  ƒ i
 f ƒ ‚ qJ XqJ W| |  i | d 7} | |  i  f S(   Ni    i   s   Character %r not found in %s.iÿÿÿÿ(   t   heightt   offsetst   zipt   advancet   kernst   gett   default_kernt   KeyErrort	   Exceptiont   typet   __name__t   width(   t   selft   textt   xofft   _t   wt   at   b(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   size8   s     /(i    iÿ   c         C   s¸  | p# t  i i i d |  i f t ƒ Sn |  i | d \ } } | } d }	 t  i i i |  i | ƒ t ƒ }
 x„ t | | d ƒ D]o \ } } |  i | \ } } |
 i	 |  i
 | | | |	 | f ƒ | |  i | |  i i | | |  i ƒ 7} qƒ W|  i | d \ } } |
 i	 |  i
 | d | | |	 | f ƒ t  i i o^ | d j p | d j oD t  i i i |
 i ƒ  t ƒ } t  i i i |
 | | | ƒ | }
 n t  i i i |
 ƒ |
 S(   Ni    i   iÿÿÿÿiÿ   (   iÿ   iÿ   iÿ   iÿ   (   i    i    i    iÿ   (   t   renpyt   displayt   pgrendert   surfaceR   t   TrueR   R   R   t   blitt   charsR   R   R   R   t   configt   recolor_sfontst   get_sizet   modulet   twomapt   rendert   mutated_surface(   R   R   t	   antialiast   colort   black_colort
   backgroundR   R   t   xt   yt   surfR   R   t   yofft   newsurf(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR!   J   s(    #! %/)
c         C   s   |  i  d S(   Ni
   (   R   (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   get_linesizeh   s    c         C   s   |  i  S(   N(   R   (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt
   get_heightk   s    c         C   s   |  i  S(   N(   t   baseline(   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt
   get_ascentn   s    c         C   s   |  i  |  i S(   N(   R   R.   (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   get_descentr   s    (   i    i    i    iÿ   N(	   R   t
   __module__R   t   NoneR!   R,   R-   R/   R0   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR    '   s   				t   SFontc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sD   t  t |  ƒ i ƒ  | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(   t   superR3   t   __init__t   filenamet
   spacewidthR   R   t   charset(   R   R6   R7   R   R   R8   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR5   w   s    				c         C   s—  h  |  _  h  |  _ h  |  _ h  |  _ t i i i |  i ƒ i	 d t
 ƒ } | i ƒ  \ } } | } | |  _ | |  _ t i i i |  i | f t
 ƒ |  i  d <|  i |  i d <|  i |  i d <d |  i d <|  i  d |  i  d <|  i d |  i d <|  i d |  i d <|  i d |  i d <d } xA t
 o9 | i | d f ƒ } | d d j o Pn | d 7} q Wd } x)| | j  o| t |  i ƒ j  o| i | d f ƒ | j oÛ | } | d 7} x= | | j  o/ | i | d f ƒ | j o Pn | d 7} q¼W|  i | }	 | d 7} | i | d | | | f ƒ }
 t i i i |
 ƒ }
 |
 |  i  |	 <| | |  i |	 <| | |  i |	 <d |  i |	 <n | d 7} qjWd  S(	   Nt   unscaledu    i    u   Â i   i   (   i    i    (   i    i    (   R   R   R   R   R   R   t   imt   ImageR6   t   loadR   R   R   R.   R   R   R7   t   get_att   lenR8   t
   subsurfacet   scalet   surface_scale(   R   R)   t   swt   shR   t   it   keyt   cit   startt   ct   ss(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR<   †   sR    				$		(
&

(   R   R1   R5   R<   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR3   u   s   	t	   MudgeFontc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sD   t  t |  ƒ i ƒ  | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(   R4   RJ   R5   R6   t   xmlR7   R   R   (   R   R6   RK   R7   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR5   Ç   s    				c         C   sa  h  |  _  h  |  _ h  |  _ h  |  _ t i i i |  i ƒ i	 d t
 ƒ } t i t i i	 |  i ƒ i ƒ  ƒ } d } x	| i d ƒ D]ø } t | i d ƒ } | d j  o q‚ n t | ƒ } t | i d ƒ } t | i d ƒ } t | i d ƒ }	 t | i d ƒ }
 | i | | |	 |
 f ƒ } t i i i | ƒ } | |  i  | <|	 |  i | <|	 |  i | <d |  i | <t | |
 ƒ } q‚ W| |  _ | |  _ d	 |  i  j oY t i i i |  i | f t
 ƒ |  i  d	 <|  i |  i d	 <|  i |  i d	 <d |  i d	 <n d
 |  i  j oT |  i  d	 |  i  d
 <|  i d	 |  i d
 <|  i d	 |  i d
 <|  i d	 |  i d
 <n d  S(   NR9   i    t   chart   idR'   R(   R   R   u    u   Â (   i    i    (   i    i    (   R   R   R   R   R   R   R:   R;   R6   R<   R   t   etreet
   fromstringt   loaderRK   t   readt   findallt   intt   attribt   unichrR?   R@   RA   t   maxR   R.   R   R   R7   (   R   R)   t   treeR   t   eRL   RH   R'   R(   R   t   hRI   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR<   Ö   sH    				$$ 		((   R   R1   R5   R<   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyRJ   Å   s   	c         C   sã   d } g  } t  } xŽ |  D]† } | d j p | d j o q n | d j o- | o% | o | i | ƒ d } q q n | d j o | } q n | | 7} q W| o | i | ƒ n t d „  | d Dƒ ƒ } | d | f S(	   Nt    s   s   
t    s   "c         s   s%   x |  ] } | i  d  d ƒ Vq Wd S(   t   =i   N(   t   split(   t   .0RD   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pys	   <genexpr>&  s    i   i    (   t   Falset   appendt   dict(   t   lR   t   linet   quoteRH   t   map(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   parse_bmfont_line  s(     
t   BMFontc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s    t  t |  ƒ i ƒ  | |  _ d  S(   N(   R4   Rg   R5   R6   (   R   R6   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR5   +  s    c         C   sz  h  |  _  h  |  _ h  |  _ h  |  _ h  |  _ d |  _ h  } t i i |  i	 ƒ } x´| D]¬} t
 | ƒ \ } } | d j o* t | d ƒ |  _ t | d ƒ |  _ qX | d j o7 t i i i | d ƒ i d t ƒ | t | d ƒ <qX | d	 j ot t | d ƒ ƒ } t | d
 ƒ } t | d ƒ } t | d ƒ }	 t | d ƒ }
 t | d ƒ } t | d ƒ } t | d ƒ } t | d ƒ } | | i | | |	 |
 f ƒ } t i i i | ƒ } | |  i  | <|	 | |  i | <| |  i | <| | f |  i | <qX qX W| i ƒ  d |  i  j oT |  i  d |  i  d <|  i d |  i d <|  i d |  i d <|  i d |  i d <n d  S(   Ni    t   commont
   lineHeightt   baset   paget   fileR9   RM   RL   R'   R(   R   R   t   xoffsett   yoffsett   xadvanceu   Â u    (   R   R   R   R   R   R   R   RP   R<   R6   Rf   RS   R   R.   R   R:   R;   R   RU   R?   R@   RA   t   close(   R   t   pagest   fRb   t   kindt   argsRH   R'   R(   R   RY   t   xot   yoRo   Rk   RI   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyR<   0  sL    						 7
(   R   R1   R5   R<   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyRg   )  s   	i
   i    u^   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~c
         C   sl   |  d  j p | d  j p | d  j o t d ƒ ‚ n t | | | | |	 ƒ }
 |
 t |  | | | | f <d  S(   NsO   When registering an SFont, the font name, font size, and filename are required.(   R2   R	   R3   t   fonts(   t   nameR   t   boldt   italicst	   underlineR6   R7   R   R   R8   t   sf(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   register_sfonta  s    'c
         C   sy   |  d  j p' | d  j p | d  j p | d  j o t d ƒ ‚ n t | | | | |	 ƒ }
 |
 t |  | | | | f <d  S(   Nsa   When registering a Mudge Font, the font name, font size, filename, and xml filename are required.(   R2   R	   RJ   Rw   (   Rx   R   Ry   Rz   R{   R6   RK   R7   R   R   t   mf(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   register_mudgefontl  s    4c         C   s)   t  | ƒ } | t |  | | | | f <d  S(   N(   Rg   Rw   (   Rx   R   Ry   Rz   R{   R6   t   bmf(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   register_bmfontu  s    c      	   C   så  d } d |  j o( |  i  d d ƒ \ } }  t | ƒ } n yE t i i |  ƒ } t i | | | ƒ } | i | ƒ | i | ƒ Wn*t	 j
 og  }	 |  i  d ƒ D] }
 |	 |
 i
 ƒ  i ƒ  q¥ ~	 } t i i ƒ  d  } xÐ t i i i ƒ  D]œ \ } } x | i ƒ  D]s \ } } xX | D]P }
 | i ƒ  i |
 ƒ o4 t i | | | ƒ } | i | ƒ | i | ƒ PqqW| o PqqW| o Pqí qí Wt i i |  | | | ƒ } n X| i | ƒ y | i | ƒ Wn t j
 o n X| S(   Ni    t   @i   t   ,(   R]   RS   R   RP   R<   t   _renpy_fontt   Fontt   set_boldt
   set_italict   IOErrort   stript   lowert   pygamet   sysfontt   initsysfontsR2   t   Sysfontst	   iteritemst   endswitht   SysFontt   set_underlinet
   set_expandt   AttributeError(   t   fnR   Ry   Rz   R{   t   expandt   indexRr   t   rvt   _[1]RD   Rw   t   kt   vt   flagst   ffn(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   load_ttf{  sF    6   			 c         C   s  t  i |  | | | | | f d  ƒ } | d  j	 o | Sn |  | | f } t i i i | | ƒ \ } }	 }
 t i | | |	 |
 | f d  ƒ } | d  j	 o | i ƒ  nO y t | | |	 |
 | | ƒ } Wn, d | | |	 |
 | f f t i	 _
 ‚  n X| t  |  | | | | | f <| S(   Ns   Finding font: %r(   t
   font_cacheR   R2   R   R   t   font_replacement_mapRw   R<   Rž   t   gamet   exception_info(   t   origfnR   t   origboldt   origitalicsR{   R–   R˜   t   tR•   Ry   Rz   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   get_font®  s    $!!"c           C   s   t  i ƒ  d S(   s    
    Clears the font cache.
    N(   RŸ   t   clear(    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pyt   free_memoryÅ  s    (   R‹   t   xml.etree.ElementTreeRN   t   ElementTreeR„   t   fontR   Rw   RŸ   t   objectR    R3   RJ   Rf   Rg   R2   R_   R}   R   R   Rž   R§   R©   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\font.pys   <module>   s*   	NPH	8		3