
    &The                         d dl 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 Z G d dej                        Zy)    N   )FontFileImage)i8)i16be)i16le)i32be)i32leifcp                @         c                     | dz   dz	  S )N       bitss    W/home/stella.sw7ft.com/public_html/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   .   r   r   c                     | dz   dz	  dz  S )N?   r   ir   r   s    r   r   r   /   r   r   c                 ,    | || j                  d|       S )N    )index)sos     r   szr*   3   s    Q"##r   c                   F     e Zd ZdZdZd	 fd	Zd Zd Zd Zd Z	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)selfr8   r/   magicmsgcountitypemetricsbitmapsencodingchixxsizeysizeleftrightwidthascentdescent
attributes	__class__s                        r   r5   zPcfFontFile.__init__<   s~    0BGGAJI"Cc""BGGAJu 	OArwwqz?D _c"''!*os2771:NDHHTN	O ))+	$$&$$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   )r6   r8   seekr0   r1   b16b32l16)r@   tagformatsizeoffsetr8   i16i32s           r   
_getformatzPcfFontFile._getformatj   sc    #xx}fWW
RWWQZA:CCCC63##r   c           
      2   i }| j                  t              \  }}}} ||j                  d            }g }t        |      D ]X  }|j	                   ||j                  d            t        |j                  d             ||j                  d            f       Z |dz  r&|j                  d|dz  z
  t        j                         |j                   ||j                  d                  }	|D ]%  \  }
}}t        |	|
      }
|rt        |	|      }|||
<   ' |S )Nr   r   r   )
r_   PCF_PROPERTIESr1   r7   appendr   rU   ioSEEK_CURr*   )r@   
propertiesr8   rZ   r]   r^   npropsprD   datakr(   vs                r   r9   zPcfFontFile._load_propertiesy   s     
#~>FCRWWQZ v 	IAHHc"''!*or"''!*~s2771:GH	IA:GGA!$bkk2wws2771:' 	GAq!4AtQKJqM		 r   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   )r_   PCF_METRICSrb   r7   r1   r   )r@   rF   r8   rZ   r]   r^   rb   rD   rM   rN   rO   rP   rQ   rK   rL   rR   s                   r   r;   zPcfFontFile._load_metrics   s    #{;FCVO%3rwwqz?+ O"''!*~+2771:,2771:,BGGAJ#-RWWQZ.3.(udE5&'1MNO.  3rwwqz?+ 	X2771:BGGAJBGGAJRWWQZbggaj/ _
(udE5&':VW	X r   c                    g }| j                  t              \  }}}} ||j                  d            }|t        |      k7  rd}t	        |      g }	t        |      D ](  }
|	j                   ||j                  d                   * g }t        d      D ](  }
|j                   ||j                  d                   * |dz  }|dz  }||   }|	j                  |       |j                  |      }t        |   }d}|rd}t        |      D ]L  }
||
   d d \  }}|	|
|
dz    \  }}|j                  t        j                  d||f||| d| ||                   N |S )	Nr   zWrong number of bitmapsr   r   z1;R1r   raw)
r_   PCF_BITMAPSr1   lenOSErrorr7   rb   BYTES_PER_ROWr   	frombytes)r@   rF   rG   r8   rZ   r]   r^   nbitmapsrB   offsetsrD   bitmap_sizesbitorderpadindex
bitmapsizerh   padmoderK   rL   bes                         r   r<   zPcfFontFile._load_bitmaps   sq    #{;FCrwwqz?s7|#+C#,x 	,ANN3rwwqz?+	, q 	1ABGGAJ0	1 A:A:!(+
z"wwz"H%Dx 	A"1:bq>LE51q1u%DAqNNeU^T!AYtSQVZX	 r   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  )r_   PCF_BDF_ENCODINGSr1   minr7   rq   ord	bytearraydecoder/   UnicodeDecodeError)r@   r8   rZ   r]   r^   	first_collast_col	first_rowlast_row	nencodingrH   _encoding_offsetsrD   encoding_offsets                  r   r=   zPcfFontFile._load_encoding   s@   #/@AFC!"''!*os2771:8	!"''!*os2771:8	BGGAJ	)A-(Y2F2JK	 6CY//5:95EFC
OFFy#h-0 		A"2	1#--d.C.CDE# #f,"1HQK		  G & s   <D45;D99	EE)z	iso8859-1)__name__
__module____qualname____doc__r-   r5   r_   r9   r;   r<   r=   __classcell__)rS   s   @r   r,   r,   7   s,    2D,\$6#J+Zr   r,   )rc    r   r   _binaryr   r   rV   r   rX   r	   rW   r
   r0   r2   ra   PCF_ACCELERATORSrl   rp   PCF_INK_METRICSr   PCF_SWIDTHSPCF_GLYPH_NAMESPCF_BDF_ACCELERATORSrs   r*   r,   r   r   r   <module>r      s   & 
   ! ! ! !
 	    #(((	$I(## Ir   