U
    ڲg                     @  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rq||d d 7 }qd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-xela2va7/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 rn q|
|||f| j	|	< qd 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   	>