
     f                        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 dS )#    )annotationsN)BinaryIOCallable   )FontFileImage)i8)i16be)i16le)i32be)i32leifcp                @         c                    | dz   dz	  S )N       bitss    R/var/www/api.educacionweb.es/myenv/lib/python3.11/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_ROWsbytesointreturnc                >    | ||                      d|                   S )N    )index)r)   r+   s     r   szr1   5   s     Q"""##r   c                  R     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.name	iso8859-1fpr   charset_encodingstrc           	        || _         t          |                    d                    }|t          k    rd}t	          |          t                                                       t          |                    d                    }i | _        t          |          D ]}t          |                    d                    }t          |                    d                    t          |                    d                    t          |                    d                    f| j        |<   || _	        | 
                                | _        |                                 }|                     |          }	|                                 }
t          |
          D ]<\  }}|5||         \  }}}}}}}}|df|||z
  ||z   |fdd||f|	|         f| j        |<   =d S )Nr   znot a PCF filer   )r7   l32read	PCF_MAGICSyntaxErrorsuper__init__tocranger6   _load_propertiesinfo_load_metrics_load_bitmaps_load_encoding	enumerateglyph)selfr6   r7   magicmsgcountitypemetricsbitmapsencodingchixxsizeysizeleftrightwidthascentdescent
attributes	__class__s                        r   r?   zPcfFontFile.__init__>   s    0BGGAJJI"Cc"""BGGAJJu 	O 	OArwwqzz??D __c"''!**oos2771::NDHTNN))++	$$&&$$W--&&((
  )) 	 	FB~ BK	 AJ7U?EDL'B5%(BK	"
2	 	r   tagr,   r-   Dtuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]]c                    | j         |         \  }}}| j        }|                    |           t          |                    d                    }|dz  rt
          t          }}nt          t          }}||||fS )Nr   )r@   r6   seekr:   r;   b16b32l16)rI   r]   formatsizeoffsetr6   i16i32s           r   
_getformatzPcfFontFile._getformatl   sp      $x}fW
RWWQZZA: 	 CCCCC63##r   dict[bytes, bytes | int]c                   i }|                      t                    \  }}                     d                    }fdt          |          D             }|dz  r&                    d|dz  z
  t
          j                                                            d                              }|D ]-\  }}}	|rt          ||	          n|	}
|
|t          ||          <   .|S )Nr   c           	         g | ]_}                      d                     t                               d                                          d                     f`S )r   r   )r;   r	   .0_r6   rh   s     r   
<listcomp>z0PcfFontFile._load_properties.<locals>.<listcomp>   sT    WWWAcc"''!**oor"''!**~~ss2771::?WWWr   r   )ri   PCF_PROPERTIESr;   rA   r`   ioSEEK_CURr1   )rI   
propertiesrd   rg   npropspdatakr)   vproperty_valuer6   rh   s              @@r   rB   zPcfFontFile._load_properties}   s     
#~>>FCRWWQZZ XWWWWvWWWA: 	3GGA!$bk222wwss2771::'' 	5 	5GAq!9:*A"T1+++N&4Jr${{##r   3list[tuple[int, int, int, int, int, int, int, int]]c                r   g }|                      t                    \  }}}}|j        }|dz  dk    rt           ||                    d                              D ]}t          |                    d                    dz
  }t          |                    d                    dz
  }	t          |                    d                    dz
  }
t          |                    d                    dz
  }t          |                    d                    dz
  }|	|z
  }||z   } |||||	|
||df           nt           ||                    d                              D ]} ||                    d                    } ||                    d                    }	 ||                    d                    }
 ||                    d                    } ||                    d                    } ||                    d                    }|	|z
  }||z   } |||||	|
|||f           |S )Ni   r   r   r   r   r   r   )ri   PCF_METRICSappendrA   r;   r	   )rI   rO   r6   rd   rg   rh   r~   rM   rV   rW   rX   rY   rZ   rT   rU   r[   s                   r   rD   zPcfFontFile._load_metrics   s    HJ#{;;FCVO%%33rwwqzz??++ O O"''!**~~+2771::,2771::,BGGAJJ#-RWWQZZ..3.(udE5&'1MNNNNO 33rwwqzz??++ 	X 	Xs2771::BGGAJJBGGAJJRWWQZZ#bggajj// S__
(udE5&':VWWWWr   rO   list[Image.Image]c                   |                      t                    \  }}                     d                    }|t          |          k    rd}t	          |          fdt          |          D             }fdt          d          D             }|dz  }|dz  }	||	         }
|                    |
                               |
          }t          |	         }d}|rd}g }t          |          D ]d}||         d d	         \  }}|||d	z            \  }}|                    t          j	        d||f|||         d
| ||                               e|S )Nr   zWrong number of bitmapsc                L    g | ] }                      d                     !S r   r;   rm   s     r   rp   z-PcfFontFile._load_bitmaps.<locals>.<listcomp>   s+    <<<q33rwwqzz??<<<r   c                L    g | ] }                      d                     !S r   r   rm   s     r   rp   z-PcfFontFile._load_bitmaps.<locals>.<listcomp>   s+    :::ABGGAJJ:::r   r   r   z1;R1r   raw)
ri   PCF_BITMAPSr;   lenOSErrorrA   r~   r(   r   	frombytes)rI   rO   rd   rg   nbitmapsrK   offsetsbitmap_sizesbitorderpadindex
bitmapsizerw   padmoderP   rM   rT   rU   ber6   rh   s                       @@r   rE   zPcfFontFile._load_bitmaps   s     ${;;FC3rwwqzz??s7||##+C#,,<<<<<E(OO<<<:::::q::: A:A:!(+
z"""wwz""H% 	Dx 	 	A"1:bqb>LE51q1u9%DAqNNeU^T!A#YtSSQVZZXX    r   list[int | None]c                   |                      t                    \  }}                     d                                         d                    }}                     d                                         d                    }}                     d                     ||z
  dz   ||z
  dz   z  }d gt          d|          z  }fdt	          |          D             }	t	          |t          |                    D ]Y}
	 |	t          t          |
g                              | j	                                     }|dk    r|||
<   J# t          $ r Y Vw xY w|S )Nr   r   r   c                L    g | ] }                      d                     !S )r   r   )rn   ro   r6   rg   s     r   rp   z.PcfFontFile._load_encoding.<locals>.<listcomp>   s+    FFFCC

OOFFFr   i  )ri   PCF_BDF_ENCODINGSr;   minrA   r   ord	bytearraydecoder7   UnicodeDecodeError)rI   rd   rh   	first_collast_col	first_rowlast_row	nencodingrQ   encoding_offsetsrM   encoding_offsetr6   rg   s               @@r   rF   zPcfFontFile._load_encoding   s{   #/@AAFC!c"''!**ooss2771::8	!c"''!**ooss2771::8	BGGAJJ	)A-(Y2F2JK	 '+Vc#y.A.A%AFFFFFU95E5EFFFy#h--00 		 		A"2	1#--d.CDDEE# #f,,"1HQK%    s   AE  
E-,E-)r5   )r6   r   r7   r8   )r]   r,   r-   r^   )r-   rj   )r-   r{   )rO   r{   r-   r   )r-   r   )__name__
__module____qualname____doc__r4   r?   ri   rB   rD   rE   rF   __classcell__)r\   s   @r   r3   r3   9   s        22D, , , , , , ,\$ $ $ $"   0# # # #J( ( ( (T       r   r3   )r)   r*   r+   r,   r-   r*   )!
__future__r   rr   typingr   r    r   r   _binaryr	   r
   ra   r   rc   r   rb   r   r:   r<   rq   PCF_ACCELERATORSr}   r   PCF_INK_METRICSr   PCF_SWIDTHSPCF_GLYPH_NAMESPCF_BDF_ACCELERATORSr(   __annotations__r1   r3   r   r   r   <module>r      sp  $ # " " " " " " 				 % % % % % % % %               ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
 	    #"((((((	-    $ $ $ $E E E E E(# E E E E Er   