
LVc           @  s   d  d l  m Z d  d l m Z m Z m Z d  d l Z d  d l Z d d l m	 Z	 m
 Z
 m Z m Z m Z m Z d d l m Z m Z e Z d Z d Z d Z d Z d Z d   Z d   Z d d d     YZ d S(   i(   t   with_statement(   t   packt   unpackt   unpack_fromNi   (   t   diet   substrt
   str_repeatt   str_padt   strlent   count(   t   bt   ordi    i   i   i   i   c         C  s   |  d } |  d } | d } | d } | | k rK | d 7} | d 7} n  | | } | | k rn | d 7} n  | | } | d @} | | f S(   Ni   i    i   i  i   i   (    (   t   xt   yt   xlot   xhit   ylot   yhit   reslot   reshi(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   sub32,   s    







c         C  s   t  |   d r: |  t t d  d t |   d  7}  n  d } d } x t d t |   d  D] } | t |  |  d >t |  | d  7} | t |  | d  d >t |  | d  7} | | d ?7} | d	 @} | d	 @} q_ W| | f S(
   Ni   t    i    i   i   i   i   i   i  (   R   R   R
   t   lent   rangeR   (   t   datat   hit   lot   i(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   calcChecksum;   s    **.
t
   TTFontFilec           B  s"  e  Z d    Z d   Z d   Z d   Z d   Z d   Z d d  Z d   Z	 d	   Z
 d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  RS(    c         C  s   d |  _  d  S(   Ni@ (   t   maxStrLenRead(   t   self(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   __init__K   s    c         C  s   | |  _  t | d   |  _ d |  _ g  |  _ i  |  _ i  |  _ i  |  _ i  |  _ d |  _	 d |  _
 i  |  _ |  j   |  _ } | d k r t d  n  | d k r t d  n  | d
 k r t d	 t |   n  |  j   |  j   Wd  QXd  S(   Nt   rbi    iOTTOs%   Postscript outlines are not supportedifctts0   ERROR - TrueType Fonts Collections not supportedi   ieurts   Not a TrueType font: version=(   i   ieurt(   t   filenamet   opent   fht   _post
   charWidthst   glyphPost   charToGlypht   tablest   otablest   ascentt   descentt   TTCFontst
   read_ulongt   versionR   t   strt   readTableDirectoryt   extractInfo(   R   t   fileR/   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt
   getMetricsN   s(    										
c         C  s   |  j    |  _ |  j    |  _ |  j    |  _ |  j    |  _ i  |  _ xz t |  j  D]i } i  } |  j   | d <|  j    |  j    f | d <|  j   | d <|  j   | d <| |  j | d <qU Wd  S(   Nt   tagt   checksumt   offsett   length(	   t   read_ushortt	   numTablest   searchRanget   entrySelectort
   rangeShiftR)   R   t   read_tagR.   (   R   R   t   record(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR1   d   s    	c         C  s,   |  j  | d } |  j  | d } | | f S(   NR7   R8   (   R)   (   R   R5   R7   R8   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   get_table_posr   s    c         C  s    | |  _  |  j j |  j   d  S(   N(   R%   R$   t   seek(   R   t   pos(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyRA   w   s    	c         C  s'   |  j  | |  _  |  j j |  j   d  S(   N(   R%   R$   RA   (   R   t   delta(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   skip{   s    i    c         C  s:   |  j  |  } | d | |  _ |  j j |  j  |  j S(   Ni    (   R@   R%   R$   RA   (   R   R5   t   offset_in_tablet   tpos(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt
   seek_table   s    c         C  s(   |  j  d 7_  |  j j d  j d  S(   Ni   t   latin1(   R%   R$   t   readt   decode(   R   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR>      s    c         C  s^   |  j  d 7_  |  j j d  } t | d  d >t | d  } | d @rZ | d } n  | S(	   Ni   i    i   i   i   i   i   i   (   R%   R$   RI   R   (   R   t   st   a(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt
   read_short   s    "
c         C  s=   t  | d  d >t  | d  } | d @r9 | d } n  | S(   Ni    i   i   i   i   i   i   (   R   (   R   RK   RL   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   unpack_short   s    "
c         C  sA   |  j  d 7_  |  j j d  } t | d  d >t | d  S(   Ni   i    i   i   (   R%   R$   RI   R   (   R   RK   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR9      s    c         C  se   |  j  d 7_  |  j j d  } t | d  d t | d  d >t | d  d >t | d  S(	   Ni   i    i   i   i   i   i   i   (   R%   R$   RI   R   (   R   RK   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR.      s    c         C  sB   |  j  j |  |  j  j d  } t | d  d >t | d  S(   Ni   i    i   i   (   R$   RA   RI   R   (   R   RB   RK   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt
   get_ushort   s    c         C  sf   |  j  j |  |  j  j d  } t | d  d t | d  d >t | d  d >t | d  S(	   Ni   i    i   i   i   i   i   i   (   R$   RA   RI   R   (   R   RB   RK   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt	   get_ulong   s    c         C  s9   | d k  r, t  |  } | } | d 7} n  t d |  S(   Ni    i   s   >H(   t   absR   (   R   t   val(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt
   pack_short   s
    c         C  s+   t  | d |  | t  | | t |   S(   Ni    (   R   R   (   R   t   streamR7   t   value(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   splice   s    c         C  s"   t  d |  } |  j | | |  S(   Ns   >H(   R   RV   (   R   RT   R7   RU   t   up(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   _set_ushort   s    c         C  sN   | d k  r, t  |  } | } | d 7} n  t d |  } |  j | | |  S(   Ni    i   s   >H(   RQ   R   RV   (   R   RT   R7   RR   RW   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt
   _set_short   s    c         C  s0   |  j  j |  | d k  r  d S|  j  j |  S(   Ni   t    (   R$   RA   RI   (   R   RB   R8   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt	   get_chunk   s     c         C  s]   |  j  |  \ } } | d k r= t d |  j d |  n  |  j j |  |  j j |  S(   Ni    s   Truetype font (s   ): error reading table: (   R@   R   R"   R$   RA   RI   (   R   R5   RB   R8   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt	   get_table   s
    c         C  s;   | d k r* |  j  | d t d   } n  | |  j | <d  S(   Nt   headi   t       (   RV   R
   R*   (   R   R5   R   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   add   s    c   2      C  s	  d |  _  d |  _ |  j d  } |  j   } | d k rJ t d |  n  |  j   } | |  j   } i d d 6d d 6d d 6d d 6d d	 6} t | j    } t |  } xt |  D]} |  j   }	 |  j   }
 |  j   } |  j   } |  j   } |  j   } | | k rq n  d } |	 d k r|
 d k r| d
 k r|  j	 } |  j
 | |  | d d k r{t d  n  | d } d } x6 | d k r|  j   } | t |  7} | d 8} qW| |  _	 |  j
 |  ne |	 d k rB|
 d k rB| d k rB|  j	 } |  j | | |  j d  } | |  _	 |  j
 |  n  | r | | d k r | | | <| d 8} | d k rPqq q W| d	 r| d	 } nR | d rt j d d | d  } n, | d rt j d d | d  } n d } | st d  n  | |  _ | d r"| d |  _ n	 | |  _ | d rE| d |  _ n	 d |  _ | d rh| d |  _ n	 | |  _ | d r| d |  _ n	 | |  _ | d	 r| d	 |  _ n  |  j d  |  j d  |  j   |  _ } d t |  } |  j d  |  j   } |  j   } |  j   } |  j   } | | | | | | | | g |  _ |  j d0  |  j   } |  j   } | d k rt d |  n  d |  j k r|  j d  |  j d  |  j   } |  j   } | | |  _ | | |  _ n  d |  j k rs|  j d  |  j   } |  j d  |  j   } |  j d  |  j   } | d k sc| d @d k rt d |  j d  t |  _ n  |  j d  |  j   }  |  d ?|  _  |  d @|  _ |  j	 d 7_	 |  j  j! d  }! |  j d  |  j   }" |  j   }# |  j s|" | |  _ n  |  j s/|# | |  _ n  | d k rd|  j d  |  j   }$ |$ | |  _" q|  j |  _" nD d  } |  j s| | |  _ n  |  j s| | |  _ n  |  j |  _" d! t# t$ | d" d   |  _% |  j d#  |  j d  |  j   |  j   d$ |  _& |  j   | |  _' |  j   | |  _( |  j)   }% d |  _* |  j& d k rk|  j* d% B|  _* n  | d& k r|  j* d' B|  _* n  |% r|  j* d B|  _* n  |  j d  |  j d(  |  j   }& |& d k rt d) j+  n  |  j   }' |' d k r
t d*  n  |  j d+  |  j d  |  j   }( |  j d,  }) |  j d  |  j   }* d }+ d }, x t |*  D] } |  j   }- |  j   }. |  j)   } |  j	 }/ |- d k r|. d k r|  j, |) |  } | d- k r|, s|) | }, n  Pqn  |- d k r	|. d k s	|- d k rR	|  j, |) |  } | d k rR	|+ sK	|) | }+ n  PqR	n  |  j
 |/  qqW|+ r	|, r	t d. |  j d/  n  i  }0 i  }1 |, r	|  j- |, |0 |1  n |  j. |+ |0 |1  |  j/ |' |( |0 |  d  S(1   Ni    t   names   Unknown name table format RZ   i   i   i   i   i   i	  s0   PostScript name is UTF-16BE string of odd lengthRH   t    t   -s#   Could not find PostScript font namet   RegularR]   i   i  i   s   Unknown glyph data format t   hheas   OS/2i   s   ERROR - Font file s2    cannot be embedded due to copyright restrictions.i   i   i   i
   i   i  i2   g     @P@t   postg      @i@   iX  i   i    s&   Unknown horizontal metric data format s!   Number of horizontal metrics is 0t   maxpt   cmapi   s   Font (s   ) does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 3, encoding 10, format 12, or platform 0, any encoding, format 4)i   (0   t   sFamilyClasst   sFamilySubClassRG   R9   R   t   listt   keysR   R   R%   RA   t   chrR[   RJ   t   ret   subR`   t
   familyNamet	   styleNamet   fullNamet   uniqueFontIDRD   t
   unitsPerEmt   floatRM   t   bboxR)   R+   R,   R"   t   Truet   restrictedUseR$   RI   t	   capHeightt   intt   powt   stemVt   italicAnglet   underlinePositiont   underlineThicknessR.   t   flagst   metricDataFormatRO   t	   getCMAP12t   getCMAP4t   getHMTX(2   R   t   name_offsett   formatt
   numRecordst   string_data_offsett   namest   Kt	   nameCountR   t
   platformIdt
   encodingIdt
   languageIdt   nameIdR8   R7   t   Nt   opost   chart   psNameRs   t   scalet   xMint   yMint   xMaxt   yMaxt   indexToLocFormatt   glyphDataFormatt   hheaAscendert   hheaDescenderR/   t   usWeightClasst   fsTypet   sFt   panoset   sTypoAscendert   sTypoDescendert
   sCapHeightt   isFixedPitchR   t   numberOfHMetricst	   numGlyphst   cmap_offsett   cmapTableCountt   unicode_cmap_offsett   unicode_cmap_offset12t
   platformIDt
   encodingIDt   save_post   glyphToCharR(   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR2      sh   		) $	
	$		

 


	
	
	
	
	
%			 	  		$c   \      C  s  | |  _  t | d  \|  _ d |  _ g  |  _ i  |  _ i  |  _ i  |  _ i  |  _ d |  _	 d |  _
 |  j d  d |  _ |  j   |  j d  |  j d  |  j   } |  j   } |  j d  |  j d  |  j   } |  j   } } |  j d  |  j d  |  j   } |  j d	  }	 |  j d
  |  j   }
 d } d } x t |
  D] } |  j   } |  j   } |  j   } |  j } | d k r| d k r|  j |	 |  } | d k r| s|	 | } n  Pqn  | d k r| d k s| d k r-|  j |	 |  } | d k r-|	 | } Pq-n  |  j |  qUW| rd| rdt d |  j  d  n  i  } i  } | r|  j | | |  n |  j | | |  | |  _ d } |  j | | | |  |  j | |  d0 g } i  } x| | D]t } | |  j k rI|  j | | f | k r5| j |  j | | f  n  |  j | | | <n  t |  j |  |  _ qW|  j d  \ } } | j   i  } d } d } x7 | D]/ \ } } t | |  } | | | <| d 7} qWi  }  x. t | j    D] \ } } | | |  | <qW|  |  _ x? | D]7 \ } } i | d 6| d 6| d 6}! |  j  | |!  qWt! |  } } d g }" x' |" D] }# |  j" |# |  j# |#   qoWd d d d g }" x9 |" D]1 }# |# |  j k r|  j" |# |  j# |#   qqW|  j# d  }$ t$ d  t% |$ d d  t$ d  }% |  j" d |%  d |  k r;|  d =n  d }& i  }' d }( d }) x t |  j    D]m \ }* }+ |* |( d k r|+ |) d k r|' |& j |+  n! |* }& g  |' |& <|' |& j |+  |* }( |+ }) qfWt! |'  d }, d }- d }. x( |- d
 |, k r|- d
 }- |. d }. qW|- d
 }- |, d
 |- }/ d d  |, | d }0 d d d d d d d |0 d |, d
 |- |. |/ g }1 t |' j    }' x5 |' D]- \ } }2 | t! |2  d }3 |1 j |3  qW|1 j d!  |1 j d  x! |' D] \ } }2 |1 j |  qW|1 j d!  x@ |' D]8 \ } }2 | |2 d }4 | t& |2  7} |1 j |4  qW|1 j d  x |' D] }2 |1 j d  qiW|1 j d  x! |' D] \ }2 }+ |1 j' |+  qW|1 j d  t$ d"  }5 xv |1 D]n }6 |6 d k r|5 t( d# |6  7}5 qy |5 t( d$ |6  7}5 Wqt) j* d% |6  |5 t( d# |6  7}5 qXqW|  j" d	 |5  |  j d  \ }7 }8 |8 |  j+ k  r|  j# d  }9 n  g  }: t$ d"  }; d }< t$ d"  }= d }> d }? d }@ d }A d }B d }C d }D d }E d }F d }G d }H d }I d }J d }K i  |  _, x| D]\ } } |  j- | |  }L |= |L 7}= |: j |<  y& |  j | }M |  j | d |M }N Wn( t. k
 r	t) j* d& |  d }N n X|8 |  j+ k  r	t% |9 |M |N  }O n1 |N d k r	|  j/ |7 |M |N  }O n t$ d"  }O |N d k r
t0 d# t% |O d d
   d }P n  |N d
 k r|P d1 @rd }Q t1 }R d }S xJ|R t1 @r|S d 7}S t0 d# t% |O |Q d
   }P |P d }R t0 d# t% |O |Q d
 d
   }P |P d }T |  j, j2 | i   j2 d( g   j |T  y! |  j3 |O |Q d
 | |T  }O Wn( t4 k
 rd }O t) j* d) |T  n X|Q d 7}Q |R t5 @r<|Q d 7}Q n
 |Q d
 7}Q |R t6 @r]|Q d
 7}Q qE
|R t7 @rt|Q d 7}Q qE
|R t8 @rE
|Q d  7}Q qE
qE
Wt |J |S  }J n  |; |O 7}; |< |N 7}< |< d d k r	d |< d }U |; t9 t$ d*  |U  7}; |< |U 7}< q	q	W|: j |<  |  j" d |;  |  j" d+ |=  t$ d"  }V |< d d ?d! k rwd } xR |: D] } |V t( d, |  7}V qWWn. d } x% |: D] } |V t( d# | d
  7}V qW|  j" d- |V  |  j# d  }W |  j3 |W d |  }W |  j" d |W  |  j# d  }X |  j3 |X d. |  }X |  j" d |X  |  j# d  }Y |  j3 |Y d |  }Y |  j" d |Y  |  j# d/  }Z |  j" d/ |Z  Wd  QX|  j: d"  }[ |[ S(2   NR!   i    i   R]   i2   Rd   i    Rf   Rg   i   i   i
   i   i   s   Font (s   ) does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 3, encoding 10, format 12, or platform 0, any encoding, format 4)t   glyft   startt   glyphSett   subsetglyphsR`   s   cvt t   fpgmt   prept   gaspRe   t      t                   iii   i   i  RZ   s   >Hs   >hs   cmap value too big/small: %ss   missing glyph %si   t
   compGlyphss   missing glyph data %sR   t   hmtxs   >Lt   locai"   s   OS/2(   i    i    i   (;   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   RD   t   maxUniR1   RG   R9   R   R.   RO   RA   R   R   R   R   t   getLOCAt   appendt   maxR@   t   sortt   sortedt   itemst   codeToGlypht	   getGlyphsR   R_   R\   R
   R   R	   t   extendR   t   warningst   warnR   t	   glyphdatat
   getHMetrict
   IndexErrorR[   R   t   GF_MOREt
   setdefaultRX   t   KeyErrort   GF_WORDSt   GF_SCALEt
   GF_XYSCALEt   GF_TWOBYTWOR   t	   endTTFile(\   R   R3   t   subsetR   R   R   t   orignHmetricsR   R   R   R   R   R   R   R   R   R7   R   R   R   R(   R   R   t   subsetCharToGlypht   codeR   t   dummyR   t   nt   fsLastCharIndext   originalGlyphIdxt   uniR   t	   nonlocalst   tagsR5   t   opostRe   t   rangeidt   range_t   prevcidt	   prevglidxt   cidt   glidxt   segCountR;   R<   R=   R8   Rg   t   subranget   endCodet   idDeltat   cmapstrt   cmt
   glyfOffsett
   glyfLengtht	   glyphDatat   offsetsR   RB   t   hmtxstrt   xMinTt   yMinTt   xMaxTt   yMaxTt   advanceWidthMaxt   minLeftSideBearingt   minRightSideBearingt
   xMaxExtentt	   maxPointst   maxContourst   maxComponentPointst   maxComponentContourst   maxComponentElementst   maxComponentDeptht   hmR'   t   glyphLenR   RW   t   pos_in_glyphR   t   nComponentElementst   glyphIdxt   paddingt   locastrR]   Rd   Rf   t   os2t   stm(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt
   makeSubset  s   										
	$
		

	
	 &
 



			

"


(!







c         C  s   | d c d 7<t  | d | d  | d <t |  j | d  rq x |  j | d D] } |  j | |  qT WnT |  j | d d k r | d d k r | |  j | d 7} | |  j | d 7} n  | d c d 8<d  S(   Nt   depthi   t   maxdepthR   t	   nContoursi    t   nPoints(   R   R   R   t   getGlyphData(   R   R   R   R   t   contourst   points(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR
  &  s    'c   	      C  s  y& |  j  | } |  j  | d | } Wn# t k
 rK t j d |  d  SX| sV d  S|  j | d |  |  j   } | d k  r|  j d  t } x| t @r|  j   } |  j   } | | d k r t	 | d  | d | <| d j
 | d f  n  |  j j   } |  j | |  |  j |  | t @rC|  j d  n |  j d	  | t @rj|  j d	  q | t @r|  j d  q | t @r |  j d  q q Wn  d  S(
   Ni   s   missing glyph %sR   i    i   R   R   i   i   (   R'   R   R   R   RA   RM   RD   R   R9   R   R   R$   t   tellR   R   R   R   R   (	   R   R   R   R'   R   t   numberOfContoursR   R   t   savepos(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR   7  s>    



c           s    j  d  } d } g    _   f d   } d } | d   j k  r|   j | | d  }	 t d t |	  d |	  }
 n   j |  xLt |  D]>} | d   j k  r |
 | d } n   j   }   j   } | | k s | d k r | d k rd } n  | d k r$| |   _	 q n  x | | D] } | d k r/| d	 k r/t
 t | | d
   } | d k r|d	 } n  | d k  r| t   j  k r| |   j	  n  |   j | <| d 7} qq/q/Wq q W  j | | d | d  }	 t d t |	  d |	  }
 | | } x t |  D] } | | } | | k r*x | | D] } | d k rQ| d	 k rQt
 t | | d
   } | d k rd	 } n  | d k  r| t   j  k r| |   j	  n  |   j | <| d 7} qqQqQWq*q*W|   j d <d  S(   NR   i    c           sR   |  d d d d }  |  t    j  } | d k rN   j | g | 7_ n  d  S(   Ni   i   i    (   R   R&   (   t   sizet   defaultRC   (   R   (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt	   resize_cwd  s    i   s   >%dHi   i   i   i  gMbP?i   i   (   RG   R&   R   R[   R   R   RA   R   R9   t   defaultWidthRy   t   round(   R   R   R   R   R   R   t   awR  t   nCharWidthsR   t   arrt   glypht   lsbR   t   wt   diffRB   (    (   R   s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR   `  s^    	 	 	

 	c         C  s   |  j  d  } | | k  rE |  j | | d  |  j j d  } n^ |  j | | d d  |  j j d  } |  j | | d | d  | |  j j d  7} | S(   NR   i   i   i   (   RG   RA   R$   RI   (   R   R   t   gidR   R   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR     s    c         C  s  |  j  d  } g  |  _ | d k r |  j | | d d  } t d t |  d |  } x t |  D] } |  j j | | d  qh Wn | d k r |  j | | d d  } t d t |  d |  } x9 t |  D] } |  j j | |  q Wn t d |  d  S(	   NR   i    i   s   >%dHi   i   s   >%dLs   Unknown location table format (   RG   R'   R[   R   R   R   R   R   (   R   R   R   R   R   R  R   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR     s    	c         C  sW  d |  _  |  j | d  |  j   } | | } |  j d  |  j   d } |  j d  g  } x' t |  D] } | j |  j    qm W|  j d  g  }	 x' t |  D] } |	 j |  j    q Wg  }
 x' t |  D] } |
 j |  j    q W|  j } g  } x' t |  D] } | j |  j    qWx t |  D]} | | d } x t |	 | | d  D] } | | d k r| |
 | d @} nq | |	 | d | | } | d | | } | | k rd } n0 |  j |  } | d k r| |
 | d @} n  | | | <| d k  r2t	 | |  j   |  _  n  | j
 | g   j |  qhWq=Wd  S(   Ni    i   i   i   i  i   (   t
   maxUniCharRA   R9   RD   R   R   RM   R%   RO   R   R   (   R   R   R   R(   R8   t   limitR   t   endCountR   t
   startCountR   t   idRangeOffset_startt   idRangeOffsetR   t   endpointt   unicharR  R7   (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR     sJ    	
		
c         C  s  d |  _  |  j | d  |  j d  |  j   } |  j d  |  j   } d | d d | k rq t d  n  x t |  D] } |  j   } |  j   } |  j   }	 xl t | | d  D]W }
 |	 | |
 <|
 d k  r t |
 |  j   |  _  n  | j |	 g   j |
  |	 d 7}	 q Wq~ Wd  S(   Ni    i   i   i   s"   TTF format 12 cmap table too smalli   i   i   i   i   i   (	   R  RA   RD   R.   R   R   R   R   R   (   R   R   R   R(   R8   t   grpCountR   t   startCharCodet   endCharCodeR  R$  (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR     s$    	
c         C  s  t  d  } t |  j  } d } d } x( | d | k rQ | d } | d } q* W| d } | d | } t r | t d d | | | |  7} n | t d d | | | |  7} |  j } d	 | d } t | j    } x | D] \ }	 }
 |	 d
 k r| } n  | |	 j d  7} t |
  } | t d | d | d  7} | t d | t	 |
   7} t	 |
  d d @} | | } q WxD | D]< \ }	 }
 |
 t  d  7}
 | t
 |
 d t	 |
  d @ 7} qWt |  } t d |  } t d | d | d  } |  j | | d |  } | S(   NRZ   i   i    i   i   s   >LHHHHieurti   i   R]   RH   s   >HHs   >LLi   t      i  i  i   ii(   i  i  (   R
   R	   R*   t   _TTF_MAC_HEADERR   R   R   t   encodeR   R   R   R   RV   (   R   R  R:   R;   R<   R=   R)   R7   t   sorted_tablesR5   R   t
   head_startR6   t   paddedLengtht   chk(    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR     s@    

"		$(!   t   __name__t
   __module__R    R4   R1   R@   RA   RD   RG   R>   RM   RN   R9   R.   RO   RP   RS   RV   RX   RY   R[   R\   R_   R2   R  R
  R   R   R   R   R   R   R   (    (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyR   I   s@   																				
		 ]		)	?			-	i   i   i    i@   i   (    (   t
   __future__R    t   structR   R   R   Rm   R   t   phpR   R   R   R   R   R	   t   py3kR
   R   t   FalseR)  R   R   R   R   R   R   R   R   (    (    (    s)   /var/www/ficnx/bin/pyfpdf/fpdf/ttfonts.pyt   <module>   s   .		