§
    þÜÒjc  ã                  ó  — U d dl mZ ddhZ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er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 )'é    )ÚannotationszPIL._binaryÚioNé   )ÚFontFileÚImage)Úi8)Úi16be)Úi16le)Úi32be)Úi32leF)ÚCallable)ÚBinaryIOifcpé   é   é   é   é    é@   é€   é   c                ó   — | dz   dz	  S )Né   é   © ©Úbitss    ú[C:\Users\johnn\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL/PcfFontFile.pyú<lambda>r   4   s   € �4˜!‘8 ‘/€ ó    c                ó   — | dz   dz	  dz  S )Né   r   éþÿÿÿr   r   s    r   r   r   5   ó   € �4˜"‘9 Ñ" bÑ(€ r   c                ó   — | dz   dz	  dz  S )Né   r   éüÿÿÿr   r   s    r   r   r   6   r#   r   c                ó   — | dz   dz	  dz  S )Né?   r   iøÿÿÿr   r   s    r   r   r   7   r#   r   zlist[Callable[[int], int]]ÚBYTES_PER_ROWÚsÚbytesÚoÚintÚreturnc                ó>   — | ||                       d|¦  «        …         S )Nó    )Úindex)r*   r,   s     r   Úszr2   ;   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   )r8   Úl32ÚreadÚ	PCF_MAGICÚSyntaxErrorÚsuperÚ__init__ÚtocÚranger7   Ú_load_propertiesÚinfoÚ_load_metricsÚ_load_bitmapsÚ_load_encodingÚ	enumerateÚglyph)Úselfr7   r8   Ú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__D   s¿  ø€ Ø 0ˆÔå�B—G’G˜A‘J”J‘”ˆØ•IÒÐØ"ˆCÝ˜cÑ"Ô"Ð"å‰Œ×ÒÑÔÐå�B—G’G˜A‘J”J‘”ˆØˆŒÝ�u‘”ð 	Oð 	OˆAÝ�r—w’w˜q‘z”z‘?”?ˆDÝ  §¢¨¡¤™_œ_­c°"·'²'¸!±*´*©o¬o½sÀ2Ç7Â7È1Á:Ä:¹¼ÐNˆDŒH�T‰NˆNàˆŒà×)Ò)Ñ+Ô+ˆŒ	à×$Ò$Ñ&Ô&ˆØ×$Ò$ WÑ-Ô-ˆØ×&Ò&Ñ(Ô(ˆõ
   Ñ)Ô)ð 	ð 	‰FˆB�Øˆ~ð ˜B”Kñ	ØØØØØØØØð ˜A�JØ˜7 U™?¨E°D©L¸'ÐBØ˜˜5 %Ð(Ø˜B”Kð	"�”
˜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   )rA   r7   Úseekr;   r<   Úb16Úb32Úl16)rJ   r^   ÚformatÚsizeÚoffsetr7   Úi16Úi32s           r   Ú
_getformatzPcfFontFile._getformatr   sp   € ð  $œx¨œ}Ñˆ��fàŒWˆØ
�Š�‰Œˆå�R—W’W˜Q‘Z”Z‘”ˆà�A‰:ð 	 Ý�C�ˆCˆCå�C�ˆCà�6˜3 Ð#Ð#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Ú_r7   ri   s     €€r   ú
<listcomp>z0PcfFontFile._load_properties.<locals>.<listcomp>Ž   sT   ø€ ÐWÐWÐWÀAˆcˆc�"—'’'˜!‘*”*‰oŒo�r "§'¢'¨!¡*¤*™~œ~¨s¨s°2·7²7¸1±:´:©¬Ð?ÐWÐWÐWr   r   )rj   ÚPCF_PROPERTIESr<   rB   ra   r   ÚSEEK_CURr2   )rJ   Ú
propertiesre   rh   ÚnpropsÚpÚdataÚkr*   ÚvÚproperty_valuer7   ri   s              @@r   rC   zPcfFontFile._load_propertiesƒ   sõ   øø€ ð ˆ
à#Ÿš­~Ñ>Ô>ÑˆˆF�C˜à��R—W’W˜Q‘Z”Z‘”ˆð XÐWÐWÐWÐWÍÈvÉÌÐWÑWÔWˆà�A‰:ð 	3Ø�GŠG�A˜ !™Ñ$¥b¤kÑ2Ô2Ð2à�wŠw�s�s˜2Ÿ7š7 1™:œ:‘”Ñ'Ô'ˆàð 	5ð 	5‰GˆAˆq�!Ø9:Ð*A­"¨T°1©+¬+¨+ÀˆNØ&4ˆJ•r˜$ ‘{”{Ñ#Ð#àÐr   ú3list[tuple[int, int, int, int, int, int, int, int]]c                ó¤  ‡‡‡— g Š|                       t          ¦  «        \  Š}Š}	 ddˆfd„}|dz  dk    rMt           ‰‰                     d¦  «        ¦  «        ¦  «        D ] } |ˆfd„t          d¦  «        D ¦   «         Ž  Œ!nMt           |‰                     d¦  «        ¦  «        ¦  «        D ]!} |ˆˆfd„t          d¦  «        D ¦   «         Ž  Œ"‰S )Nr   rW   r-   rX   rY   rZ   r[   r\   r.   ÚNonec           
     ó‚   •— || z
  }||z   }t          j        ||f¦  «         ‰                     ||| |||||f¦  «         d S )N)r   Ú_decompression_bomb_checkÚappend)	rW   rX   rY   rZ   r[   r\   rU   rV   rP   s	           €r   r€   z)PcfFontFile._load_metrics.<locals>.append£   sa   ø€ ð ˜D‘LˆEØ˜WÑ$ˆEÝÔ+¨U°E¨NÑ;Ô;Ð;Ø�NŠNØ˜˜t U¨E°6¸7ÀJÐOñô ð ð ð r   i ÿ  r   r   c              3  ób   •K  — | ])}t          ‰                     d ¦  «        ¦  «        dz
  V — Œ*dS )r   r   N)r   r<   )ro   rp   r7   s     €r   ú	<genexpr>z,PcfFontFile._load_metrics.<locals>.<genexpr>µ   s8   øè è € Ð@Ð@°!�˜BŸGšG A™JœJ™œ¨#Ñ-Ð@Ð@Ð@Ð@Ð@Ð@r   é   r   c              3  óT   •K  — | ]"} ‰‰                      d ¦  «        ¦  «        V — Œ#dS )r   N©r<   ©ro   rp   r7   rh   s     €€r   r‚   z,PcfFontFile._load_metrics.<locals>.<genexpr>º   s5   øè è € Ð;Ð;¨Q˜˜˜RŸWšW Q™ZœZ™œÐ;Ð;Ð;Ð;Ð;Ð;r   é   )r   )rW   r-   rX   r-   rY   r-   rZ   r-   r[   r-   r\   r-   r.   r}   )rj   ÚPCF_METRICSrB   r<   )rJ   re   ri   r€   rN   r7   rh   rP   s        @@@r   rE   zPcfFontFile._load_metrics›   s  øøø€ ð HJˆà#Ÿš­{Ñ;Ô;ÑˆˆF�C˜ð  ð	ð 	ð 	ð 	ð 	ð 	ð 	ð �V‰O Ò%Ð%å˜3˜3˜rŸwšw q™zœz™?œ?Ñ+Ô+ð Bð B�Ø�Ð@Ð@Ð@Ð@µu¸Q±x´xÐ@Ñ@Ô@ÐAÐAÐAðBõ
 ˜3˜3˜rŸwšw q™zœz™?œ?Ñ+Ô+ð =ð =�Ø�Ð;Ð;Ð;Ð;Ð;µ%¸±(´(Ð;Ñ;Ô;Ð<Ð<Ð<àˆr   rP   ú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…   rn   s     €€r   rq   z-PcfFontFile._load_bitmaps.<locals>.<listcomp>Ì   s+   ø€ Ð<Ð<Ð< q�3�3�r—w’w˜q‘z”z‘?”?Ð<Ð<Ð<r   c                óL   •— g | ] } ‰‰                      d ¦  «        ¦  «        ‘Œ!S rŒ   r…   rn   s     €€r   rq   z-PcfFontFile._load_bitmaps.<locals>.<listcomp>Î   s+   ø€ Ð:Ð:Ð:¨A˜˜˜BŸGšG A™JœJ™œÐ:Ð:Ð:r   r   r   z1;RÚ1r   Úraw)
rj   ÚPCF_BITMAPSr<   ÚlenÚOSErrorrB   r€   r)   r   Ú	frombytes)rJ   rP   re   rh   ÚnbitmapsrL   ÚoffsetsÚbitmap_sizesÚbitorderÚpadindexÚ
bitmapsizerw   ÚpadÚmoderQ   rN   rU   rV   ÚbÚer7   ri   s                       @@r   rF   zPcfFontFile._load_bitmaps¾   s�  øø€ ð  $Ÿš­{Ñ;Ô;ÑˆˆF�C˜à�3�r—w’w˜q‘z”z‘?”?ˆà•s˜7‘|”|Ò#Ð#Ø+ˆCÝ˜#‘,”,Ðà<Ð<Ð<Ð<Ð<­E°(©O¬OÐ<Ñ<Ô<ˆà:Ð:Ð:Ð:Ð:µ°q±´Ð:Ñ:Ô:ˆð ˜A‘:ˆØ˜A‘:ˆà! (Ô+ˆ
Ø�Š�zÑ"Ô"Ð"à�wŠw�zÑ"Ô"ˆå˜HÔ%ˆØˆØð 	ØˆDàˆÝ�x‘”ð 	ð 	ˆAØ" 1œ: b q bœ>‰LˆE�5Ø˜1˜q 1™u˜9Ô%‰DˆAˆqØ�NŠNÝ”  e¨U ^°T¸!¸A¸#´YÀÀtÈSÈSÐQVÉZÌZÑ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…   r†   s     €€r   rq   z.PcfFontFile._load_encoding.<locals>.<listcomp>õ   s+   ø€ ÐFÐFÐF°˜C˜C §¢¨¡
¤
™OœOÐFÐFÐFr   iÿÿ  )rj   ÚPCF_BDF_ENCODINGSr<   ÚminrB   r‘   ÚordÚ	bytearrayÚdecoder8   ÚUnicodeDecodeError)rJ   re   ri   Ú	first_colÚlast_colÚ	first_rowÚlast_rowÚ	nencodingrR   Úencoding_offsetsrN   Úencoding_offsetr7   rh   s               @@r   rG   zPcfFontFile._load_encodingè   s{  øø€ Ø#ŸšÕ/@ÑAÔAÑˆˆF�C˜à!˜c "§'¢'¨!¡*¤*™oœo¨s¨s°2·7²7¸1±:´:©¬�8ˆ	Ø!˜c "§'¢'¨!¡*¤*™oœo¨s¨s°2·7²7¸1±:´:©¬�8ˆ	àˆˆB�GŠG�A‰JŒJ‰Œˆà 	Ñ)¨AÑ-°(¸YÑ2FÈÑ2JÑKˆ	ð '+ V­c°#°yÑ.AÔ.AÑ%AˆàFÐFÐFÐFÐFµU¸9Ñ5EÔ5EÐFÑFÔFÐå�y¥# h¡-¤-Ñ0Ô0ð 		ð 		ˆAðØ"2Ý�	 1 #™œ×-Ò-¨dÔ.CÑDÔDÑEÔEô#�ð # fÒ,Ð,Ø"1�H˜Q‘KøøÝ%ð ð ð à�ðøøøð ˆs   ÄAE Å 
E-Å,E-)r6   )r7   r   r8   r9   )r^   r-   r.   r_   )r.   rk   )r.   r{   )rP   r{   r.   r‰   )r.   rž   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r5   r@   rj   rC   rE   rF   rG   Ú__classcell__)r]   s   @r   r4   r4   ?   s´   ø€ € € € € Ø2Ð2à€Dð,ð ,ð ,ð ,ð ,ð ,ð ,ð\$ð $ð $ð $ð"ð ð ð ð0!ð !ð !ð !ðF(ð (ð (ð (ðTð ð ð ð ð ð ð r   r4   )r*   r+   r,   r-   r.   r+   )$Ú
__future__r   Ú__lazy_modules__r   Ú r   r   Ú_binaryr   r	   rb   r
   rd   r   rc   r   r;   ÚTYPE_CHECKINGÚcollections.abcr   Útypingr   r=   rr   ÚPCF_ACCELERATORSrˆ   r�   ÚPCF_INK_METRICSr¡   ÚPCF_SWIDTHSÚPCF_GLYPH_NAMESÚPCF_BDF_ACCELERATORSr)   Ú__annotations__r2   r4   r   r   r   ú<module>rÀ      s”  ðð$ #Ð "Ð "Ð "Ð "Ð "Ð "à! 4Ð(Ð à 	€	€	€	à Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !à€Øð  Ø(Ð(Ð(Ð(Ð(Ð(ØÐÐÐÐÐð
 €	à€ØÐ Ø€Ø€Ø€ØÐ Ø€Ø€ØÐ ð #Ð"Ø(Ð(Ø(Ð(Ø(Ð(ð	-€ð ð ð ñ ð$ð $ð $ð $ðCð Cð Cð Cð C�(Ô#ñ Cô Cð Cð Cð Cr   