3

‹ˆhÌ  ã               @   s¶   d dl Z ddlmZmZ ddlmZ ddlmZ ddlmZ	 ddlm
Z ddlmZ d	ZdZdZdZdZdZdZd Zd!Zd"Zdd„ dd„ dd„ dd„ gZdd„ ZG dd„ dejƒZdS )#é    Né   )ÚFontFileÚImage)Úi8)Úi16be)Úi16le)Úi32be)Úi32leifcpé   é   é   é   é   é   é   c             C   s   | d d? S )Nr   r   © )Úbitsr   r   úO/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/PcfFontFile.pyÚ<lambda>,   s    r   c             C   s   | d d? d@ S )Né   r   r   éþÿÿÿr   )r   r   r   r   r   -   s    c             C   s   | d d? d@ S )Né   r   éüÿÿÿr   )r   r   r   r   r   .   s    c             C   s   | d d? d@ S )Né?   r   r   iøÿÿÿr   )r   r   r   r   r   /   s    c             C   s   | || j d|ƒ… S )Nó    )Úindex)ÚsÚor   r   r   Úsz3   s    r   c                   sN   e Zd ZdZdZd‡ fdd„	Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
‡  ZS )ÚPcfFontFilez(Font file plugin for the X11 PCF format.Únameú	iso8859-1c          	      s.  || _ t|jdƒƒ}|tkr$tdƒ‚tƒ jƒ  t|jdƒƒ}i | _xLt|ƒD ]@}t|jdƒƒ}t|jdƒƒt|jdƒƒt|jdƒƒf| j|< qLW || _	| j
ƒ | _| jƒ }| j|ƒ}| jƒ }	xntdƒD ]b}
|	|
 }|d k	rÄ|| \}}}}}}}}|df||| || |fdd||f|| f}|| j|
< qÄW d S )Nr   znot a PCF fileé   r   )Úcharset_encodingÚl32ÚreadÚ	PCF_MAGICÚSyntaxErrorÚsuperÚ__init__ÚtocÚrangeÚfpÚ_load_propertiesÚinfoÚ_load_metricsÚ_load_bitmapsÚ_load_encodingÚglyph)Úselfr,   r#   ÚmagicÚcountÚiÚtypeÚmetricsÚbitmapsÚencodingÚchÚixÚxÚyÚlÚrÚwÚaÚdÚfr2   )Ú	__class__r   r   r)   <   s*    
2

,zPcfFontFile.__init__c             C   sX   | j | \}}}| j}|j|ƒ t|jdƒƒ}|d@ rBtt }}n
tt }}||||fS )Nr   )r*   r,   Úseekr$   r%   Úb16Úb32Úl16)r3   ÚtagÚformatÚsizeÚoffsetr,   Úi16Úi32r   r   r   Ú
_getformat^   s    

zPcfFontFile._getformatc             C   sÒ   i }| j tƒ\}}}}||jdƒƒ}g }x>t|ƒD ]2}|j||jdƒƒt|jdƒƒ||jdƒƒfƒ q2W |d@ r†|jd|d@  tjƒ |j||jdƒƒƒ}	x2|D ]*\}
}}t	|	|
ƒ}
|rÂt	|	|ƒ}|||
< q W |S )Nr   r   r   )
rP   ÚPCF_PROPERTIESr%   r+   Úappendr   rF   ÚioÚSEEK_CURr   )r3   Z
propertiesr,   rK   rN   rO   ZnpropsÚpr6   ÚdataÚkr   Úvr   r   r   r-   n   s    2

zPcfFontFile._load_propertiesc          
   C   sd  g }| j tƒ\}}}}|j}|d@ dkrÈxœt||jdƒƒƒD ]†}t|jdƒƒd }t|jdƒƒd }	t|jdƒƒd }
t|jdƒƒd }t|jdƒƒd }|	| }|| }|||||	|
||dfƒ q<W n˜x–t||jdƒƒƒD ]€}||jdƒƒ}||jdƒƒ}	||jdƒƒ}
||jdƒƒ}||jdƒƒ}||jdƒƒ}|	| }|| }|||||	|
|||fƒ qÜW |S )Ni ÿ  r"   r
   r   é€   r   r   )rP   ÚPCF_METRICSrR   r+   r%   r   )r3   r8   r,   rK   rN   rO   rR   r6   ÚleftÚrightÚwidthZascentZdescentZxsizeZysizeÚ
attributesr   r   r   r/   Š   s0    zPcfFontFile._load_metricsc          
   C   s:  g }| j tƒ\}}}}||jdƒƒ}|t|ƒkr8tdƒ‚g }x$t|ƒD ]}	|j||jdƒƒƒ qFW g }
x$tdƒD ]}	|
j||jdƒƒƒ qpW |d@ }|d@ }|
| }|j|ƒ |j|ƒ}t| }d}|rÌd}xht|ƒD ]\}	||	 \}}}}}}}}||	 ||	d   }}|jtj	d||f|||… d|||ƒƒƒ qÖW |S )	Nr   zWrong number of bitmapsr   r   z1;RÚ1r   Úraw)
rP   ÚPCF_BITMAPSr%   ÚlenÚOSErrorr+   rR   ÚBYTES_PER_ROWr   Ú	frombytes)r3   r8   r9   r,   rK   rN   rO   ZnbitmapsÚoffsetsr6   ZbitmapSizesZbitorderZpadindexZ
bitmapsizerV   ÚpadÚmoder=   r>   r?   r@   rA   rB   rC   rD   ÚbÚer   r   r   r0   ²   s2    

.zPcfFontFile._load_bitmapsc                sö   d gd }| j tƒ\‰ }‰}ˆˆ jdƒƒˆˆ jdƒƒ }}ˆˆ jdƒƒˆˆ jdƒƒ }}ˆˆ jdƒƒ || d || d  }‡ ‡fdd„t|ƒD ƒ}	xZt|t|ƒƒD ]H}
y.|	tt|
gƒj| jƒƒ }|dkrÖ|||
< W q¦ t	k
rì   Y q¦X q¦W |S )Nr"   r
   r   c                s   g | ]}ˆˆ j d ƒƒ‘qS )r
   )r%   )Ú.0Ú_)r,   rN   r   r   ú
<listcomp>ë   s    z.PcfFontFile._load_encoding.<locals>.<listcomp>iÿÿ  )
rP   ÚPCF_BDF_ENCODINGSr%   r+   rb   ÚordÚ	bytearrayÚdecoder#   ÚUnicodeDecodeError)r3   r:   rK   rO   ZfirstColZlastColZfirstRowZlastRowZ	nencodingZencodingOffsetsr6   ZencodingOffsetr   )r,   rN   r   r1   Ý   s     

zPcfFontFile._load_encoding)r!   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r)   rP   r-   r/   r0   r1   Ú__classcell__r   r   )rE   r   r   7   s   "(+r   r   r
   r   r   é   é    é@   rY   r"   )rS   Ú r   r   Ú_binaryr   r   rG   r   rI   r   rH   r	   r$   r&   rQ   ZPCF_ACCELERATORSrZ   ra   ZPCF_INK_METRICSrn   ZPCF_SWIDTHSZPCF_GLYPH_NAMESZPCF_BDF_ACCELERATORSrd   r   r   r   r   r   r   Ú<module>   s,   
