)EjHUddlmZddlZddlmZmZddlmZddlmZ ddlm Z ddlm Z dd lmZd Zer dd lmZdd lmZd ZdZdZdZdZdZdZdZdZdZddddgZde d<d$d!Z!Gd"d#ejZ"dS)%) annotationsN)FontFileImage)i8)i16be)i16le)i32be)i32leF)Callable)BinaryIOifcp @c|dzdz S)Nbitss AC:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/PcfFontFile.pyr2s4!8/c|dzdz dzS)Nrrrs rrr34"9"b(rc|dzdz dzS)Nrrrs rrr4r"rc|dzdz dzS)N?rirrs rrr5r"rzlist[Callable[[int], int]] BYTES_PER_ROWsbytesointreturnc>|||d|S)N)index)r)r+s rszr19s Q"" " ##rcReZdZdZdZddfd Zdd ZddZddZddZ ddZ xZ S) PcfFontFilez(Font file plugin for the X11 PCF format.name iso8859-1fpr charset_encodingstrc ||_t|d}|tkrd}t |t t|d}i|_t|D]}t|d}t|dt|dt|df|j|<||_ | |_ | }| |} |} t| D]<\} } | 5|| \} }}}}}}}|df|||z | |z|fdd| |f| | f|j| <=dS)Nrznot a PCF filer)r7l32read PCF_MAGIC SyntaxErrorsuper__init__tocranger6_load_propertiesinfo _load_metrics _load_bitmaps_load_encoding enumerateglyph)selfr6r7magicmsgcountitypemetricsbitmapsencodingchixxsizeysizeleftrightwidthascentdescent attributes __class__s rr?zPcfFontFile.__init__Bs 0BGGAJJ I  "Cc"" " BGGAJJu O OArwwqzz??D __c"''!**oos2771::NDHTNN))++ $$&&$$W--&&((  ))  FB~BK AJ7U?EDL'B5%(BK " 2  rtagr,r-Dtuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]]c|j|\}}}|j}||t|d}|dzrt t }}ntt}}||||fS)Nr)r@r6seekr:r;b16b32l16)rIr]formatsizeoffsetr6i16i32s r _getformatzPcfFontFile._getformatpsp $x}f W RWWQZZ A: CCCCC63##rdict[bytes, bytes | int]c i}|t\ }}  d} fdt|D}|dzr& d|dzz t j  d}|D]-\}}} |rt|| n| } | |t||<.|S)Nrc g|]_}dtddf`S)rr)r;r.0_r6rhs r z0PcfFontFile._load_properties..sT W W WAcc"''!**oor"''!**~~ss2771:: ? W W Wrr)riPCF_PROPERTIESr;rAr`ioSEEK_CURr1) rI propertiesrdrgnpropspdatakr)vproperty_valuer6rhs @@rrBzPcfFontFile._load_propertiess #~>>FCRWWQZZ X W W W Wv W W W A: 3 GGA!$bk 2 2 2wwss2771::'' 5 5GAq!9:*A"T1+++N&4Jr${{ # #r3list[tuple[int, int, int, int, int, int, int, int]]cg|t\}} ddfd }|d zd krMtdD] }|fdtdD!nMt|dD]!}|fdtdD"S)NrrVr,rWrXrYrZr[r-Nonec ||z }||z}tj||f||||||||fdS)N)r_decompression_bomb_checkappend) rVrWrXrYrZr[rTrUrOs rrz)PcfFontFile._load_metrics..appendsaDLEW$E  +UEN ; ; ; NNtUE67JO     rirrc3bK|])}tddz V*dS)rrN)rr;)rnror6s r z,PcfFontFile._load_metrics..s8@@!BGGAJJ#-@@@@@@rrc3TK|]"}dV#dS)rNr;rnror6rgs rrz,PcfFontFile._load_metrics..s5;;QRWWQZZ;;;;;;r)r)rVr,rWr,rXr,rYr,rZr,r[r,r-r})ri PCF_METRICSrAr;)rIrdrhrrMr6rgrOs @@@rrDzPcfFontFile._load_metricssHJ#{;;FC        VO % %33rwwqzz??++ B B@@@@uQxx@@@AAA B 33rwwqzz??++ = =;;;;;%((;;;<<<rrOlist[Image.Image]c |t\}}d}|t|krd}t |fdt |D}fdt dD}|dz}|dz} || } || | } t| } d} |rd} g}t |D]d}||dd \}}|||d z\}}|tj d||f| ||d | | |e|S) NrzWrong number of bitmapscLg|] }d!Srrrms rrpz-PcfFontFile._load_bitmaps..s+<<.s+:::ABGGAJJ:::rrrz1;R1rraw) ri PCF_BITMAPSr;lenOSErrorrArr(r frombytes)rIrOrdrgnbitmapsrKoffsets bitmap_sizesbitorderpadindex bitmapsizerwpadmoderPrMrTrUber6rhs @@rrEzPcfFontFile._load_bitmapss ${;;FC3rwwqzz?? s7|| # #+C#,, <<<<LE51q1u9%DAq NNeU^T!A#YtSSQVZZXX    rlist[int | None]c |t\ } } d d}} d d}} d||z dz||z dzz}dgtd|z} fdt |D} t |t |D]Y} | t t| g|j } | dkr| || <J#t$rYVwxYw|S)NrrrcLg|] }d!S)rrrs rrpz.PcfFontFile._load_encoding..s+FFFCC OOFFFri) riPCF_BDF_ENCODINGSr;minrArord bytearraydecoder7UnicodeDecodeError)rIrdrh first_collast_col first_rowlast_row nencodingrQencoding_offsetsrMencoding_offsetr6rgs @@rrFzPcfFontFile._load_encodings{#/@AAFC!c"''!**ooss2771::8 !c"''!**ooss2771::8  BGGAJJ )A-(Y2F2JK '+Vc#y.A.A%AFFFFFU95E5EFFFy#h--00  A "2 1#--d.CDDEE##f,,"1HQK%    sAE  E-,E-)r5)r6r r7r8)r]r,r-r^)r-rj)r-r{)rOr{r-r)r-r) __name__ __module__ __qualname____doc__r4r?rirBrDrErF __classcell__)r\s@rr3r3=s22 D,,,,,,,\$$$$"0!!!!F((((Trr3)r)r*r+r,r-r*)# __future__rrrrr_binaryrrrar rcr rbr r: TYPE_CHECKINGcollections.abcr typingr r<rqPCF_ACCELERATORSrrPCF_INK_METRICSr PCF_SWIDTHSPCF_GLYPH_NAMESPCF_BDF_ACCELERATORSr(__annotations__r1r3rrrrs$#"""""" !!!!!!!!!!!!!!!!!!!!!!!!  ((((((     #"(((((( - $$$$CCCCC(#CCCCCr