o
    Zh                     @  sj   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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 ObliqueOther)RIOZRIZROZOTZProportionalZ
MonospacedZCell)PMCfr   returnqtuple[str, int, tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]], Image.Image] | Nonec                 C  s  	 |   }|s	d S |d d dkrnq|dd   d}i }	 |   }|r/|d d dkr0n|d}||d d	 d||d | d< q!t }	 |   }|r\|d d
 dkr]n	||d d	 7 }qNdd |d  D \}}}}	dd |d  D \}
}|
|f||	 | || |	 fdd||ff}ztd||f|dd}W n ty   t	d||f}Y nw |t
|d ||fS )NT	   s	   STARTCHARascii   s   BITMAP    r      s   ENDCHARc                 s      | ]}t |V  qd S Nint.0p r   F/var/www/html/lang_env/lib/python3.10/site-packages/PIL/BdfFontFile.py	<genexpr>R       zbdf_char.<locals>.<genexpr>ZBBXc                 s  r   r   r   r   r   r   r   r    V   r!   ZDWIDTHr   1hexENCODING)readlinestripdecodefind	bytearraysplitr   	frombytes
ValueErrornewr   )r   sidpropsiZbitmapwidthheightZx_dispZy_dispZdwxZdwyZbboximr   r   r   bdf_char)   sF   
(

r5   c                      s"   e Zd ZdZd fddZ  ZS )	BdfFontFilez(Font file plugin for the X11 BDF format.fpr   r   Nonec                   s  t    | }|d d dkrd}t|i }g }	 | }|r*|d d dkr+n7|d}||d d d	||d | d	< |d | d
v ra|ddk ra|||d d d	 q	 t|}|skd S |\}}	\}
}}}d|	  krt| j	k rn n	|
|||f| j	|	< qc)N   s   STARTFONT 2.1znot a valid BDF fileTs   ENDPROPERTIESr   r   r   r   )s   COMMENTs	   COPYRIGHTs   LogicalFontDescriptionr   )
super__init__r%   SyntaxErrorr(   r'   appendr5   lenZglyph)selfr7   r.   msgr0   commentsr1   cr/   chZxydstsrcr4   	__class__r   r   r;   j   s2   

(
zBdfFontFile.__init__)r7   r   r   r8   )__name__
__module____qualname____doc__r;   __classcell__r   r   rF   r   r6   g   s    r6   N)r   r   r   r   )rK   
__future__r   typingr    r   r   Z	bdf_slantZbdf_spacingr5   r6   r   r   r   r   <module>   s   	
>