
    e                        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Z
 G d dej                        Zy)z*
Parse X Bitmap Distribution Format (BDF)
    )annotations)BinaryIO   )FontFileImageRomanItalicObliquezReverse ItaliczReverse ObliqueOther)RIORIROOTProportional
MonospacedCell)PMCc                   	 | j                         }|sy |d d dk(  rn|dd  j                         j                  d      }i }	 | j                         }|r|d d dk(  rn>|j                  d      }||dz   d j                  d      ||d | j                  d      <   Yt	               }	 | j                         }|r|d d	 d
k(  rn	||d d z  }$d |d   j                         D        \  }}}}	d |d   j                         D        \  }
}|
|f||	 |z
  ||z   |	 fdd||ff}	 t        j                  d||f|dd      }|t        |d         ||fS # t        $ r t        j                  d||f      }Y 5w xY w)N	   s	   STARTCHARascii   s   BITMAP    r      s   ENDCHARc              3  2   K   | ]  }t        |        y wNint.0ps     1/usr/lib/python3/dist-packages/PIL/BdfFontFile.py	<genexpr>zbdf_char.<locals>.<genexpr>R   s     $JSV$J   BBXc              3  2   K   | ]  }t        |        y wr    r!   r#   s     r&   r'   zbdf_char.<locals>.<genexpr>V   s     81A8r(   DWIDTHr   1hexENCODING)readlinestripdecodefind	bytearraysplitr   	frombytes
ValueErrornewr"   )fsidpropsibitmapwidthheightx_dispy_dispdwxdwybboxims                 r&   bdf_charrF   )   s    JJLRa5L   
12		g	&B E
JJLAbqEY&FF4L'(Q}';';G'Daell7#$  [F
JJLAbqEZ'!CR&	  %KU5\5G5G5I$J!E666 9h 5 5 78HC 
c
	&6!56>F7;	
AufD-__S5&/65#F
 s5$%tR//	  -YYsUFO,-s    E !E10E1c                  $     e Zd ZdZd fdZ xZS )BdfFontFilez(Font file plugin for the X11 BDF format.c                F   t         |           |j                         }|d d dk7  rd}t        |      i }g }	 |j                         }|r|d d dk(  rn|j	                  d      }||dz   d j                  d      ||d | j                  d      <   |d | d	v r:|j	                  d
      dk  r&|j                  ||dz   d j                  d             	 t        |      }|sy |\  }}	\  }
}}}d|	cxk  rt        | j                        k  rn n|
|||f| j                  |	<   N)N   s   STARTFONT 2.1znot a valid BDF files   ENDPROPERTIESr   r   r   r   )s   COMMENTs	   COPYRIGHTs   LogicalFontDescriptionr   )
super__init__r/   SyntaxErrorr2   r1   appendrF   lenglyph)selffpr9   msgr;   commentsr<   cr:   chxydstsrcrE   	__class__s                 r&   rL   zBdfFontFile.__init__j   s>   KKMSb6%%(Cc""A#2"22tA+,QUR=+?+?+HE!BQ%,,w'(!u226634q8OOAa!ebM$8$8$AB  A)*&BNRcBB(TZZ(!#S#r!1

2     )rR   r   )__name__
__module____qualname____doc__rL   __classcell__)rZ   s   @r&   rH   rH   g   s    22 2r[   rH   N)r8   r   returnzqtuple[str, int, tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]], Image.Image] | None)r_   
__future__r   typingr    r   r   	bdf_slantbdf_spacingrF   rH    r[   r&   <module>rh      sh   ( #   
		


	 #FC;0;0;0|2(## 2r[   