
    ip                    `    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Z
 G d d          ZdS )    )annotationsN)BinaryIO   )Image	ImageFont_binaryi   fpr   values7tuple[int, int, int, int, int, int, int, int, int, int]returnNonec                t    |D ]4}|dk     r|dz  }|                      t          j        |                     5dS )z0Write network order (big-endian) 16-bit sequencer      N)writer   o16be)r	   r
   vs      S/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/PIL/FontFile.pyputi16r      sN      # #q55JA
q!!""""# #    c                  R    e Zd ZU dZdZded<   ddZddZddZddZ	ddZ
ddZdS )FontFilez)Base class for raster font file handlers.NzImage.Image | Nonebitmapr   r   c                *    i | _         d gdz  | _        d S )N   )infoglyph)selfs    r   __init__zFontFile.__init__)   s    .0	 FSL 	


r   ixint`tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int], Image.Image] | Nonec                    | j         |         S )N)r   )r   r   s     r   __getitem__zFontFile.__getitem__5   s     z"~r   c                   | j         rdS dx}x}}d}| j        D ]o}|rk|\  }}}}	t          ||d         |d         z
            }||d         |d         z
  z   }|t          k    r|dz  }|d         |d         z
  }t          ||          }p|}
||z  }|
dk    r|dk    rdS || _        t          j        d|
|f          | _         dgdz  | _        dx}}t          d          D ]}| |         }|r|\  }}}}	|d         |d         z
  }||}}||z   }|t          k    rd||z   }}||}}|}|d         |z   |d         |z   |d         |z   |d         |z   f}| j         	                    |	
                    |          |           |||f| j        |<   d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ss                      r   compilezFontFile.compile@   s    ; 	F AZ 	, 	,E ,"'3R3q6CF?++Q#a&)u99QJEAQAx++	A::%1**F
 ieU^44 FSL 	 	As 	, 	,AGE ,"'3RVc!f_ABFu99a!eqABAFRKQ"c!frk3q6B;F!!"''#,,222"#S!)Q	, 	,r   bytesc                V   g }t          d          D ]T}| j        |         }|r.|                    |d         |d         z   |d         z              ?|                    d           Ut                      }|D ]$}|dk     r|dz  }|t	          j        |          z  }%t          |          S )Nr   r   r   r&   )
r   r   r   r   r   r   r   r   r   r   r   )r-   r,   extend	bytearrayr   r   rA   )r   r
   r;   mdatar   s         r   _encode_metricszFontFile._encode_metricsq   s    s 	) 	)AQA )adQqTkAaD01111i(((({{ 	% 	%A1uuU
GM!$$$DDT{{r   filenamestrc                   |                                   | j        sd}t          |          | j                            t          j                            |          d         dz   d           t          t          j                            |          d         dz   d          5 }|                    d           |                    d| j	         d	
                    d
                     |                    d           |                    |                                            ddd           dS # 1 swxY w 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*   encoderG   )r   rH   msgr	   s       r   rP   zFontFile.save   s]    	 { 	"%CS//!))(33A6?GGG "'""8,,Q/&8$?? 	-2HH\"""HH-dj---44W==>>>HHYHHT))++,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   $BD44D8;D8ImageFont.ImageFontc                    |                                   | j        sd}t          |          t          j                    }|                    | j        |                                            |S )zConvert to ImageFontrK   )r@   r   rO   r   _loadrG   )r   rV   	imagefonts      r   to_imagefontzFontFile.to_imagefont   sd     	 { 	"%CS//!'))	T%9%9%;%;<<<r   )r   r   )r   r    r   r!   )r   rA   )rH   rI   r   r   )r   rW   )__name__
__module____qualname____doc__r   __annotations__r   r#   r@   rG   rP   r[    r   r   r   r   $   s         33!%F%%%%
 
 
 
	 	 	 	/, /, /, /,b    - - - -$     r   r   )r	   r   r
   r   r   r   )
__future__r   rQ   typingr    r   r   r   r)   r   r   ra   r   r   <module>re      s     # " " " " " 				       ' ' ' ' ' ' ' ' ' '# # # #{ { { { { { { { { {r   