o
    
ip                     @  sT   d dl mZ d dlZd dlmZ ddlmZmZmZ dZ	dddZ
G dd dZdS )    )annotationsN)BinaryIO   )Image	ImageFont_binaryi   fpr   values7tuple[int, int, int, int, int, int, int, int, int, int]returnNonec                 C  s.   |D ]}|dk r|d7 }|  t| qdS )z0Write network order (big-endian) 16-bit sequencer      N)writer   o16be)r   r	   v r   J/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/PIL/FontFile.pyputi16   s
   r   c                   @  sZ   e Zd ZU dZdZded< dddZdddZdddZdddZ	dddZ
dddZdS )FontFilez)Base class for raster font file handlers.NzImage.Image | Nonebitmapr   r   c                 C  s   i | _ d gd | _d S )N   )infoglyph)selfr   r   r   __init__)   s   	zFontFile.__init__ixint`tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int], Image.Image] | Nonec                 C  s
   | j | S )N)r   )r   r   r   r   r   __getitem__5   s   
	zFontFile.__getitem__c                 C  s  | j rdS d } }}d}| jD ]4}|rD|\}}}}	t||d |d  }||d |d   }|tkr?|d7 }|d |d  }t||}q|}
|| }|
dkrU|dkrUdS || _td|
|f| _ dgd | _d }}tdD ]Y}| | }|r|\}}}}	|d |d  }||}}|| }|tkrd|| }}||}}|}|d | |d | |d | |d | f}| j 	|	
|| |||f| j|< qodS )zCreate metrics and bitmapNr   r         1r   )r   r   maxWIDTHysizer   newmetricsrangepastecrop)r   hwmaxwidthlinesr   ddstsrcimxsizer$   xyixxx0y0sr   r   r   compile@   sN   



,zFontFile.compilebytesc                 C  s   g }t dD ]}| j| }|r||d |d  |d   q|d qt }|D ]}|dk r4|d7 }|t|7 }q*t|S )Nr   r   r   r    )
r   r   r   r   r   r   r   r   r   r   r   )r'   r&   extend	bytearrayr   r   r;   )r   r	   r5   mdatar   r   r   r   _encode_metricsq   s   
 zFontFile._encode_metricsfilenamestrc                 C  s   |    | jsd}t|| jtj|d d d ttj|d d d'}|d |d| j	 d	
d
 |d ||   W d   dS 1 sSw   Y  dS )z	Save fontNo bitmap createdr   z.pbmPNGz.pilwbs   PILfont
z;;;;;;z;
asciis   DATA
N)r:   r   
ValueErrorsaveospathsplitextopenr   r$   encoder@   )r   rA   msgr   r   r   r   rH      s   

"zFontFile.saveImageFont.ImageFontc                 C  s8   |    | jsd}t|t }|| j|   |S )zConvert to ImageFontrC   )r:   r   rG   r   _loadr@   )r   rN   	imagefontr   r   r   to_imagefont   s   zFontFile.to_imagefont)r   r   )r   r   r   r   )r   r;   )rA   rB   r   r   )r   rO   )__name__
__module____qualname____doc__r   __annotations__r   r   r:   r@   rH   rR   r   r   r   r   r   $   s   
 



1
r   )r   r   r	   r
   r   r   )
__future__r   rI   typingr    r   r   r   r#   r   r   r   r   r   r   <module>   s   

