a :jgëã@sæUddlmZddlZddlmZmZddlmZmZddl m Z ddl m Z ddl m Zdd l mZdd l mZd ZdZd Zd ZdZdZdZdZdZdZdd„dd„dd„dd„gZded<ddddœdd„ZGd d!„d!ejƒZ dS)"é)Ú annotationsN)ÚBinaryIOÚCallableé)ÚFontFileÚImage)Úi8)Úi16be)Úi16le)Úi32be)Úi32leifcpééééé é@é€écCs |dd?S)Néé©©Úbitsrrú9/usr/local/lib/python3.9/site-packages/PIL/PcfFontFile.pyÚ.órcCs|dd?d@S)Néréþÿÿÿrrrrrr/rcCs|dd?d@S)Néréüÿÿÿrrrrrr0rcCs|dd?d@S)Né?riøÿÿÿrrrrrr1rzlist[Callable[[int], int]]Ú BYTES_PER_ROWÚbytesÚint)ÚsÚoÚreturncCs||| d|¡…S)Nó)Úindex)r%r&rrrÚsz5sr*csxeZdZdZdZddddœ‡fdd„ Zd d d œd d „Zddœdd„Zddœdd„Zdddœdd„Z ddœdd„Z ‡Z S)Ú PcfFontFilez(Font file plugin for the X11 PCF format.Únameú iso8859-1rÚstr)ÚfpÚcharset_encodingc s"||_t| d¡ƒ}|tkr(d}t|ƒ‚tƒ ¡t| d¡ƒ}i|_t|ƒD]@}t| d¡ƒ}t| d¡ƒt| d¡ƒt| d¡ƒf|j|<qN||_ |  ¡|_ |  ¡}|  |¡} | ¡} t| ƒD]Z\} } | durÂ|| \} }}}}}}}|df|||| ||fdd| |f| | f|j| <qÂdS)Nrznot a PCF filer)r0Úl32ÚreadÚ PCF_MAGICÚ SyntaxErrorÚsuperÚ__init__ÚtocÚranger/Ú_load_propertiesÚinfoÚ _load_metricsÚ _load_bitmapsÚ_load_encodingÚ enumerateZglyph)Úselfr/r0ÚmagicÚmsgÚcountÚiÚtypeÚmetricsÚbitmapsÚencodingÚchZixÚxsizeÚysizeÚleftÚrightÚwidthÚascentÚdescentÚ attributes©Ú __class__rrr6>sB  0   ÷ üzPcfFontFile.__init__r$zDtuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]])Útagr'cCsX|j|\}}}|j}| |¡t| d¡ƒ}|d@rBtt}}n tt}}||||fS)Nr)r7r/Úseekr1r2Úb16Úb32Úl16)r?rSÚformatÚsizeÚoffsetr/Úi16Úi32rrrÚ _getformatls   zPcfFontFile._getformatzdict[bytes, bytes | int])r'c s¢i}| t¡\‰}}‰ˆˆ d¡ƒ}‡‡fdd„t|ƒDƒ}|d@rZˆ d|d@tj¡ˆ ˆˆ d¡ƒ¡}|D]*\}}} |rŠt|| ƒn| } | |t||ƒ<qr|S)Nrcs4g|],}ˆˆ d¡ƒtˆ d¡ƒˆˆ d¡ƒf‘qS)rr)r2r©Ú.0Ú_©r/r\rrÚ ˆrz0PcfFontFile._load_properties..r)r]ÚPCF_PROPERTIESr2r8rTÚioÚSEEK_CURr*) r?Ú propertiesrXr[ZnpropsÚpÚdataÚkr%ÚvZproperty_valuerrarr9}szPcfFontFile._load_propertiesz3list[tuple[int, int, int, int, int, int, int, int]]c Cs\g}| t¡\}}}}|j}|d@dkrÄt|| d¡ƒƒD]†}t| d¡ƒd}t| d¡ƒd} t| d¡ƒd} t| d¡ƒd} t| d¡ƒd} | |} | | }|| ||| | | | dfƒq:n”t|| d¡ƒƒD]€}|| d¡ƒ}|| d¡ƒ} || d¡ƒ} || d¡ƒ} || d¡ƒ} || d¡ƒ}| |} | | }|| ||| | | | |fƒqÖ|S)Niÿrr rrrr)r]Ú PCF_METRICSÚappendr8r2r)r?rEr/rXr[r\rlrCrKrLrMrNrOrIrJrPrrrr;•s0 zPcfFontFile._load_metricszlist[Image.Image])rEr'c s| t¡\‰}}‰ˆˆ d¡ƒ}|t|ƒkr8d}t|ƒ‚‡‡fdd„t|ƒDƒ}‡‡fdd„tdƒDƒ}|d@}|d@} || } | | ¡ˆ | ¡} t| } d} |r¨d } g}t|ƒD]V}||dd …\}}|||d …\}}| t  d ||f| ||…d | | |ƒ¡¡q´|S) NrzWrong number of bitmapscsg|]}ˆˆ d¡ƒ‘qS©r©r2r^rarrrbÈrz-PcfFontFile._load_bitmaps..csg|]}ˆˆ d¡ƒ‘qSrmrnr^rarrrbÊrrrz1;RÚ1r Úraw) r]Ú PCF_BITMAPSr2ÚlenÚOSErrorr8rlr"rÚ frombytes)r?rErXr[ZnbitmapsrAÚoffsetsZ bitmap_sizesZbitorderZpadindexZ bitmapsizerhÚpadÚmoderFrCrIrJÚbÚerrarr<ºs0    "ÿzPcfFontFile._load_bitmapszlist[int | None]c sö| t¡\‰}‰}ˆˆ d¡ƒˆˆ d¡ƒ}}ˆˆ d¡ƒˆˆ d¡ƒ}}ˆˆ d¡ƒ||d||d}dgtd|ƒ}‡‡fdd„t|ƒDƒ} t|t|ƒƒD]F} z.| tt| gƒ |j ¡ƒ} | dkrÚ| || <Wqªt yîYqª0qª|S)Nr rrcsg|]}ˆˆ d¡ƒ‘qS)r rnr^©r/r[rrrbñrz.PcfFontFile._load_encoding..iÿÿ) r]ÚPCF_BDF_ENCODINGSr2Úminr8rrÚordÚ bytearrayÚdecoder0ÚUnicodeDecodeError) r?rXr\Z first_colZlast_colÚ first_rowÚlast_rowZ nencodingrGZencoding_offsetsrCZencoding_offsetrrzrr=äs"ÿ  zPcfFontFile._load_encoding)r-) Ú__name__Ú __module__Ú __qualname__Ú__doc__r,r6r]r9r;r<r=Ú __classcell__rrrQrr+9s.%*r+)!Ú __future__rrdÚtypingrrÚrrÚ_binaryrr rUr rWr rVr r1r3rcZPCF_ACCELERATORSrkrqZPCF_INK_METRICSr{Z PCF_SWIDTHSZPCF_GLYPH_NAMESZPCF_BDF_ACCELERATORSr"Ú__annotations__r*r+rrrrÚs2     ü