
    :h                        U d dl mZ d dlZd dlmZmZ ddlmZmZ ddl	m
Z
 ddl	mZ ddl	mZ dd	l	mZ dd
l	mZ dZdZdZdZdZdZdZdZdZdZd d d d gZded<   ddZ G d dej                        Z y)    )annotationsN)BinaryIOCallable   )FontFileImage)i8)i16be)i16le)i32be)i32leifcp                @         c                    | dz   dz	  S )N       bitss    M/var/www/urcfiles/bundle/venv/lib/python3.12/site-packages/PIL/PcfFontFile.py<lambda>r   .   s    4!8/    c                    | dz   dz	  dz  S )N   r   r   r   s    r   r   r   /       4"9"b(r   c                    | dz   dz	  dz  S )N   r   r   r   s    r   r   r   0   r"   r   c                    | dz   dz	  dz  S )N?   r   ir   r   s    r   r   r   1   r"   r   zlist[Callable[[int], int]]BYTES_PER_ROWc                ,    | || j                  d|       S )N    )index)sos     r   szr.   5   s    Q"##r   c                  b     e Zd ZdZdZd	d
 fdZ	 	 	 	 ddZddZddZ	 	 	 	 ddZ	ddZ
 xZS )PcfFontFilez(Font file plugin for the X11 PCF format.namec           	        || _         t        |j                  d            }|t        k7  rd}t	        |      t
        |           t        |j                  d            }i | _        t        |      D ]v  }t        |j                  d            }t        |j                  d            t        |j                  d            t        |j                  d            f| j                  |<   x || _	        | j                         | _        | j                         }| j                  |      }	| j                         }
t        |
      D ]<  \  }}|	||   \  }}}}}}}}|df|||z
  ||z   |fdd||f|	|   f| j                   |<   > y )Nr   znot a PCF filer   )charset_encodingl32read	PCF_MAGICSyntaxErrorsuper__init__tocrangefp_load_propertiesinfo_load_metrics_load_bitmaps_load_encoding	enumerateglyph)selfr<   r3   magicmsgcountitypemetricsbitmapsencodingchixxsizeysizeleftrightwidthascentdescent
attributes	__class__s                        r   r9   zPcfFontFile.__init__>   sr    0BGGAJI"Cc""BGGAJuArwwqz?D _c"''!*os2771:NDHHTN  ))+	$$&$$W-&&(
  )FB~ BK	 AJ7U?EDL'B5%(BK	"

2 *r   c                    | j                   |   \  }}}| j                  }|j                  |       t        |j	                  d            }|dz  rt
        t        }}nt        t        }}||||fS )Nr   )r:   r<   seekr4   r5   b16b32l16)rD   tagformatsizeoffsetr<   i16i32s           r   
_getformatzPcfFontFile._getformatl   se      $xx}fWW
RWWQZA:CCCC63##r   c           
     &   i }| j                  t              \  }}}} ||j                  d            }t        |      D cg c]I  } ||j                  d            t	        |j                  d             ||j                  d            fK }}|dz  r&|j                  d|dz  z
  t        j                         |j                   ||j                  d                  }	|D ]%  \  }
}}|rt        |	|      n|}||t        |	|
      <   ' |S c c}w )Nr   r   r   )	rc   PCF_PROPERTIESr5   r;   r	   rY   ioSEEK_CURr.   )rD   
propertiesr<   r^   ra   rb   nprops_pdatakr,   vproperty_values                 r   r=   zPcfFontFile._load_properties}   s     
#~>FCRWWQZ JOvWAc"''!*or"''!*~s2771:?WA:GGA!$bkk2wws2771:'GAq!9:"T1+N&4Jr${#   Xs   ADc                   g }| j                  t              \  }}}}|j                  }|dz  dk(  rt         ||j	                  d                  D ]  }t        |j	                  d            dz
  }t        |j	                  d            dz
  }	t        |j	                  d            dz
  }
t        |j	                  d            dz
  }t        |j	                  d            dz
  }|	|z
  }||z   } |||||	|
||df        |S t         ||j	                  d                  D ]  } ||j	                  d            } ||j	                  d            }	 ||j	                  d            }
 ||j	                  d            } ||j	                  d            } ||j	                  d            }|	|z
  }||z   } |||||	|
|||f        |S )Ni   r   r   r   r   r   r   )rc   PCF_METRICSappendr;   r5   r	   )rD   rJ   r<   r^   ra   rb   rr   rH   rQ   rR   rS   rT   rU   rO   rP   rV   s                   r   r?   zPcfFontFile._load_metrics   s    HJ#{;FCVO%3rwwqz?+"''!*~+2771:,2771:,BGGAJ#-RWWQZ.3.(udE5&'1MN ,.  3rwwqz?+2771:BGGAJBGGAJRWWQZbggaj/ _
(udE5&':VW , r   c                   | j                  t              \  }}}} ||j                  d            }|t        |      k7  rd}t	        |      t        |      D cg c]  } ||j                  d             }	}t        d      D cg c]  } ||j                  d             }
}|dz  }|dz  }|
|   }|	j                  |       |j                  |      }t        |   }d}|rd}g }t        |      D ]L  }||   d d \  }}|	||dz    \  }}|j                  t        j                  d||f||| d| ||                   N |S c c}w c c}w )	Nr   zWrong number of bitmapsr   r   z1;R1r   raw)
rc   PCF_BITMAPSr5   lenOSErrorr;   rr   r(   r   	frombytes)rD   rJ   r<   r^   ra   rb   nbitmapsrF   rj   offsetsbitmap_sizesbitorderpadindex
bitmapsizerl   padmoderK   rH   rO   rP   bes                          r   r@   zPcfFontFile._load_bitmaps   sX     ${;FCrwwqz?s7|#+C#,,1(O<Oq3rwwqz?O<16q:ABGGAJ: A:A:!(+
z"wwz"H%DxA"1:bq>LE51q1u%DAqNNeU^T!AYtSQVZX ! 5 =:s   EE
c                   | j                  t              \  }}}} ||j                  d             ||j                  d            }} ||j                  d             ||j                  d            }} ||j                  d             ||z
  dz   ||z
  dz   z  }	d gt        d|	      z  }
t	        |	      D cg c]  } ||j                  d             }}t	        |t        |
            D ]>  }	 |t        t        |g      j                  | j                                 }|dk7  r||
|<   @ |
S c c}w # t        $ r Y Sw xY w)Nr   r   r   i  )rc   PCF_BDF_ENCODINGSr5   minr;   rw   ord	bytearraydecoder3   UnicodeDecodeError)rD   r<   r^   ra   rb   	first_collast_col	first_rowlast_row	nencodingrL   rj   encoding_offsetsrH   encoding_offsets                  r   rA   zPcfFontFile._load_encoding   s>   #/@AFC!"''!*os2771:8	!"''!*os2771:8	BGGAJ	)A-(Y2F2JK	 '+Vc#y.A%A5:95EF5EC
O5EFy#h-0A"2	1#--d.C.CDE# #f,"1HQK 1  G & s   <D45;D99	EE)z	iso8859-1)r<   r   r3   str)r]   intreturnzDtuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]])r   zdict[bytes, bytes | int])r   3list[tuple[int, int, int, int, int, int, int, int]])rJ   r   r   zlist[Image.Image])r   zlist[int | None])__name__
__module____qualname____doc__r1   r9   rc   r=   r?   r@   rA   __classcell__)rW   s   @r   r0   r0   9   sL    2D,\$$	M$"0#J(J(	(Tr   r0   )r,   bytesr-   r   r   r   )!
__future__r   rf   typingr   r    r   r   _binaryr	   r
   rZ   r   r\   r   r[   r   r4   r6   re   PCF_ACCELERATORSrq   rv   PCF_INK_METRICSr   PCF_SWIDTHSPCF_GLYPH_NAMESPCF_BDF_ACCELERATORSr(   __annotations__r.   r0   r   r   r   <module>r      s   $ # 	 %   ! ! ! !
 	    #(((	-) $E(## Er   