U
    É|j•  ã                   @  sp   d Z ddlmZ ddlmZ ddlmZmZ dddd	d
ddœZddddœZ	dddœdd„Z
G dd„ dejƒZdS )z*
Parse X Bitmap Distribution Format (BDF)
é    )Úannotations)ÚBinaryIOé   )ÚFontFileÚImageZRomanZItalicZObliquezReverse ItaliczReverse ObliqueZOther)ÚRÚIÚOZRIZROZOTZProportionalZ
MonospacedZCell)ÚPÚMÚCr   zqtuple[str, int, tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]], Image.Image] | None)ÚfÚreturnc                 C  s~  |   ¡ }|sd S |d d… dkr q$q |dd …  ¡  d¡}i }|   ¡ }|r�|d d… dkr\q�| d¡}||d d…  d¡||d |…  d¡< q>tƒ }|   ¡ }|rÆ|d d	… d
kr´qÆ||d d… 7 }q–dd„ |d  ¡ D ƒ\}}}}	dd„ |d  ¡ D ƒ\}
}|
|f||	 | || |	 fdd||ff}zt d||f|dd¡}W n& tk
�rh   t 	d||f¡}Y nX |t
|d ƒ||fS )Né	   s	   STARTCHARÚasciié   s   BITMAPó    r   éÿÿÿÿé   s   ENDCHARc                 s  s   | ]}t |ƒV  qd S ©N©Úint©Ú.0Úp© r   ú3/tmp/pip-unpacked-wheel-v6wcnnki/PIL/BdfFontFile.pyÚ	<genexpr>R   s     zbdf_char.<locals>.<genexpr>ZBBXc                 s  s   | ]}t |ƒV  qd S r   r   r   r   r   r   r   V   s     ZDWIDTHr   Ú1ÚhexÚENCODING)ÚreadlineÚstripÚdecodeÚfindÚ	bytearrayÚsplitr   Z	frombytesÚ
ValueErrorÚnewr   )r   ÚsÚidÚpropsÚiZbitmapÚwidthÚheightZx_dispZy_dispZdwxZdwyZbboxÚimr   r   r   Úbdf_char)   s8    
*
ýr0   c                      s(   e Zd ZdZdddœ‡ fdd„Z‡  ZS )ÚBdfFontFilez(Font file plugin for the X11 BDF format.r   ÚNone)Úfpr   c                   s  t ƒ  ¡  | ¡ }|d d… dkr.d}t|ƒ‚i }g }| ¡ }|rÂ|d d… dkrTqÂ| d¡}||d d…  d¡||d |…  d¡< |d |… d	kr6| d
¡dk r6| ||d d…  d¡¡ q6t|ƒ}|sÒ�q|\}}	\}
}}}d|	  k�r t| j	ƒk rÂn qÂ|
|||f| j	|	< qÂd S )Né   s   STARTFONT 2.1znot a valid BDF files   ENDPROPERTIESr   r   r   r   )s   COMMENTs	   COPYRIGHTs   LogicalFontDescriptionr   )
ÚsuperÚ__init__r!   ÚSyntaxErrorr$   r#   Úappendr0   ÚlenZglyph)Úselfr3   r)   Úmsgr+   Úcommentsr,   Úcr*   ÚchZxyÚdstÚsrcr/   ©Ú	__class__r   r   r6   j   s*    

( zBdfFontFile.__init__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   Ú__classcell__r   r   rA   r   r1   g   s   r1   N)rF   Ú
__future__r   Útypingr   Ú r   r   Z	bdf_slantZbdf_spacingr0   r1   r   r   r   r   Ú<module>   s   ú	>