From 7a5d215022903151971df85e1ce947af42803c5b Mon Sep 17 00:00:00 2001 From: Eric Soroos Date: Thu, 2 Nov 2017 11:11:38 +0000 Subject: [PATCH] Remove Adobe Helvetica screen font, update Pcf font tests using freely available font --- Tests/fonts/10x20-ISO8859-1.pcf | Bin 0 -> 25860 bytes Tests/fonts/LICENSE.txt | 7 +++++++ Tests/fonts/helvO18.pcf | Bin 78412 -> 0 bytes Tests/images/high_ascii_chars.png | Bin 1457 -> 1286 bytes Tests/images/test_draw_pbm_target.png | Bin 0 -> 259 bytes Tests/test_font_pcf.py | 28 ++++++++++++++------------ 6 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 Tests/fonts/10x20-ISO8859-1.pcf delete mode 100644 Tests/fonts/helvO18.pcf create mode 100644 Tests/images/test_draw_pbm_target.png diff --git a/Tests/fonts/10x20-ISO8859-1.pcf b/Tests/fonts/10x20-ISO8859-1.pcf new file mode 100644 index 0000000000000000000000000000000000000000..d0d7ed9210c6dcbdf8730cc00dd1313afc369808 GIT binary patch literal 25860 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 BY3Bd{ literal 0 HcmV?d00001 diff --git a/Tests/fonts/LICENSE.txt b/Tests/fonts/LICENSE.txt index 223c2aecf..ee9daee59 100644 --- a/Tests/fonts/LICENSE.txt +++ b/Tests/fonts/LICENSE.txt @@ -4,3 +4,10 @@ NotoNastaliqUrdu-Regular.ttf: (from https://github.com/googlei18n/noto-fonts) All Noto fonts are published under the SIL Open Font License (OFL) v1.1 (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL), which allows you to copy, modify, and redistribute them if you need to. + + +10x20-ISO8859-1.pcf + +(from https://packages.ubuntu.com/xenial/xfonts-base) + +"Public domain font. Share and enjoy." diff --git a/Tests/fonts/helvO18.pcf b/Tests/fonts/helvO18.pcf deleted file mode 100644 index f5e68ae9c5a749d4c35c48f5a1038aa919162634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78412 zcmeIb4}4cwegA*%r2;x^=^t%Wgjms{_D>T2g-Htm0!1m*0=88*ZU_m)h9u@so3>a! zBoO|EKc%fjMO(MdqSh6)TRZL6k4pzQS!J_M+?5f04J)W>oXrV=GXWa^JTwh%*59PCgsi_e1|cuV-dvvUjDd} zz^30u8HGT?(PM(Qa+s(@5r^qYT*YCQ64!EArbH!&Rba5f)GP5Q+^)n2VY5%%Ln7G6 z;q%H_37BqzzvOUGi63(K5m?R7De(sQB?K>Xc)e`Cki(ai_!@`bC~+Q*n5c%7z%-wj zPa?RE!%8JqbNC`yfnQZ(H9YQfOc$y7OO`L5cl}MKY*qcrDl@O@DK45eWm@J+`Qo`t=BaA2 znOk<{wnjScmU70p$vt|%<4tu4G>m6{5#uWG7lyhWL> zl2j^5Gl~o6)vT^*uBa_6|3pho!`iC4W{SqLYU=Cy7iJbOS+;O)qFV}UnhGlln;R=u zRjsXPyt%Nxx^PiVU48Ry4ON%ZyxPLD1%(xLtFEkXEUdw*rk0gWHLGeW8f&VWt|%-t zE9RBYg%2Zh#r!3Um#NQ}n(LNcm2u7G-Zj^kFDhHM@WbURd~efTE+-xuX8!U;i?T*d z#<3D^F1NmuUGbQ@JRV1vFS$G(GnZdpT+07NmrtLn|F64zM(O3gcP}q?BQP;a%!ihj z&2z)T&S3_&4P!aJ4$gsBPBBwBzH~}?Z!#B|H=9x98n>n;^*|M{>ZQHhOsSO)9 zwY9fx+1#tNJ9co`$zg*IZ9A2>bGr^ZIqcE_`%;?z^a_a`rT(t7_ZEwhkJ&9$#&w`8)1dzir!{8{0Q;+}X0h zdSg4~Hf-C9Upg}>xg@oH+qR7x>{UFOx|733%28OS8+Pra#`f(TBqc?P!m6=lv+^Ww z^Cs)bZK*b$;se!CVQNSer|O=RB&W7)w)SmaXS;SoN5{5}IJ>iLL+tkL+dkR0Lp?)b z9J@^&+OeZ$!|q*l3Pa!y+P3wRZQIog>RNlDeaogD&7AIN#mMa#)Uo4^ln%D}>t$|R zC!*RmZtPgMe&ePMo7y_KdRkt)#M?t^7pc^it=l%zt9Q{}9Xk6SY@T{S-MxvPzKc}f z!{!e1w&<|cAL3!LYbSZTclCd;UTf2cpu6wNKG5A%(}-@ zBDE8Pwr#^}JCw&T>yx@mdGvJVDqf@9ZU(>gpB=k6TaveS%Iz5`ILFnsI%s+F>drkH z=nR3KiIn;mOEuLxNbTClG)3O_?R(-0Yi9*LNZuBFMTerdV`lyW zEZDS>8K9ZGVcQl)`}VDS+>BzVbf~>LP-N>i1Z>`jB36M8iRx&xt)v>wQhQm*?A2J2 zH;p`&f(}i|j?;PVyWBFOnapV4z03KY6pAz=5~+LdM*QyGnyYFrQ_`yJ(46i_xlx83E@Kvo8ZvhuKi6jm|W`{v!Pyj^|s(7~+T#9D`k zw4O5f=|S4D(M|(aJv9qOq+G}Qlp51#8KxKLWG%k7%huyRd5Cg*)KMDG?RUxJJG5wN zJ+*y=1q^B(?8?QWPc_|&PLJn!9B3Y$_HLi{o^IQ{5@qM~t5Q}QiwuRg;RwY0)ZKUC zuwA)S}J*L{$~77B0T zzR=RnV7P^QPihmhduL1A)=iSa2E*RyUEPkmTH+gq+)m5Ai+AjxZQB`jy5+ZPjc8Y@ zO{q4mT$^-{-$eINu2Z9v;n=Q~t6eGXbd*zSlTs?jib;yD?Yu{=#DB?@y&bFLJ5Q(f zXb$S$Bk@}{VarbD76YVHYnZo>LF4S}lgHdbuZEPp?{DN*$>s_FZNwXljm;aa&31xu zu-2o^Sx>4>i&ncPQ#+~M?bO(<)Xp}|6nizk+q1jT2-DoUOCv&CI_-GcwXJCPmNH75 zr8duca$B3X&#q>6&e(yDhcu5ESMt?1JJx(^ht>$)fY?T9ZQpL!c6n&CMy$NS2y2(G zl@VfYX=FQ(C-3Lh_genrUdT$RE@M*5x*Lfsg0X#!4QJl~DX({rMyFl% z`cEN`n}h8)*MoQIUbaK`vi?)l;3m@E=Wc}~@ESJ>e+Oebyn!d1yLC97>d+}qJE;xr zI&90FZd9sG2mXtnXY9_G4Zu43m&4tA+~M@Xm}=kH))t>?U5gjDj?LuRQ*DK)s~cL! z)^%;W?`}(N*mF07fAeN`*E+1<+QDf@NBbtW)9u{emD;tl)6UEIAtc4h;GTBwy@y-J zy?gM>p4~fd(~=S2E8-`h?c3RQTY1`mZ_pDJchl{9jp38vr>xAup4tPe zz&88n!K|&5P7m7ww79N0OFqQ}5Yaj)WLk~>i{Z|Bg z;V6uLy)m<49XtvrVB#CF4eo&>a1QU;W$FXbI9q@fpPPvRV&fF3A)59Q%;=z&S^#Ru>J z9EF1Sp%d3JIKq(7D1MG($ zm^6dFfxXZT1;0;u*b7IY7iPbo_P}8nJrjFi3mk>fS8)zo;29WuHT@5ra107(As-%q zV=!hm*P#=Rz)6@_#@v9zaLye30UO~cjG0S$=!9or+&t`q{m=~)%NdWb51xTB^N|PZ zAPv1xv;h0z0K5QWuVD>>2G|cr;hcr|22yYs%m*j~DL4#zw|)(z;4qj){102;$541J zV-OyPF^lmDw8B%s`)acYw!mTNg`(^53mkx6nEfHH!!t1Udd5BMhaMBOHL2pftkI@HkvlL3wx(UVzJ1q8|=G56rB@$8Z!1Rv{PmLobw8 zVIw>arkZoO2fAV6YRbZXcmXb3gIstNdSPY_b>RpUd>k8KKlDK9&9obiLP0Ip;6Zo+ zCapy-JPbWBvkv>)Q3D3Zo4d{YSI11;q zF-~9|q~RqfZATs)fahS+M$X|;H~~eQm^1JoJOdYXAQN`OkD+ig=dd4oVBQw=K{rg= ziY`b)!8ZC69tX1>JK+I%2}(OD2M3@RigwT!a0Ci>;tzNN&e=sh*azJ(aW~gsAM`-! zUFe2qVA3AO9Xti2@21aS3mk>f_izqd;0Ty|u^U<;4ZSe?Q=CH@dST{$$b-kh?4>+x zfum6HY1RuUgo!W-E`uVN0;Mn$X2U$V2Cjn}A%Zo~0IjeE_QHO691g=VcmaB0_Gc&q z``|%120bwPv*>`2!8+In&%l^{=!A9fD4c+apF<9`!V~ZkoP?s!V=F|k5%xnjnET0x z2(~~PdZFk6Y=;NniiM1m4`C1K17(3({w8BXFgCZ?moK2WXAJ2iBRTiPQjHlwLQHeK zjrjF2JH%ct6b7_yR18DJ9D{2>A3KSOq*eCx>0=aJM7e{MYp0xK9-~~RL$^`CR9GDQ?jJv98lMv3(EUF zP=EOHzK(n+k~Yf@Z~eh=p%MnzV?Z5WH;3QePx}AQ`@14{7zS{N0hDopcx1 zJe8!^!+4NP#pi*So3zv0>vbsZL0&J3aWDo_kS0(1OJN+S9@*9h@`JCV^1e^(gKlPj#<`Zq8M& z0DRkTao1&!?6S6zCs~>=uTWM%rS* z+k*h_yH3(4LC@?~KXI~-bc=xkRc+tMRxwbJ?IJl=yE!ifjep5etn&!u8=)Zkh3b!k z21vVD=PVhSzERs{zsg9KuKW3=`aXEOQxoVjgg10!f10*F7MO#d3(U{=2Bwn1Klz9; zlMljbW4?<&m^azLgqL(~fALAiU{i^XW z(v`P$NS`9_6zZf$dS_z97&?cl)(2#p3}lX?Oa~dSAg`5c($&l4ETGPqg1(I8d?d~q zDS5~pA$`=7KGm`HNOL)Z#*MX;JlPA(lky`RRI_7Oak70%%eEv`$@n;vAX9TENt$w=F4C32 zFthW}+KBK1+Nt?>gt{lVwhr!u7eVt`eW!jHq5e>L@;$OGNzz88shXKL8rKEg__K#G z!^Eg*~qqEXKEQ0h9>u%Tm%aQC6Fv8YKr4=pHTPQ`>(N&_}&7rSxAB zK6H#A&%#(6g*=UMjiFxb_48pIax?S6U4Mn^YL|y98TaR+ul?Mr7dqDln(i-n8xIPNJjn;mybqUHQ!HzibiS_lnQtf7L~F28NQ|=b$Q+r~Q-gwkg*A zPI%eca|y3MP1+NYP9ocrByIKjb-fg79o57Kq04cKu`Xo0?2#SP?e`8Es~WRU!y%}I z^-u>%eX4gtWf3$EGUJ}K_Jd!uoqL9{b$=?Z*nHjUB zk5gRoe*#JQDyMv^SSpFV{07pkpmxaqSq`OTR}x=eaW@yVF4%R53_HJxJ3#BQ?p;qn znzF}1`ZPAP{iSt1=`Y#p>7u;H*CWdY+2={xs5B;INRt*mL?k>#q?33ZK9+oqA)5Ir zyV>^Gy>TtqX2R7_?WiQqwp%j2y*@sZ-AAZ!;wqlISxXL*PEv^gkG(I_U_aix?-Y9* z6lafz%(&s&aq#2e7_!u_+LQIU$B?fvr+)o!%FA|6Gvqoh)6|I)$baiVW8+NzNZPM* z@_8?$p$lZc`apgb^6@}p+1sstl`Ox{SKP;cwDmaGp9Rf*=@H7SgeIVS?0sPZF-yFa z=liA-;Z2S^Mi_H5JdMnQloMXB*7{?dH$W-KAJx$1@Z}V1-1)JmI<25FT;Nc<)h>$K z^-F75nsfxdoXU&@`Al?!zvksA_T?l?KHrcp{j&L_i`7nz`*V?}z0Yq+Yy4@B9U(m*szGh&0=s`ertkk&@+9vSkZkE! z?0u|Q=Sh;+xReQMvnSbhrTeslLapS<7ss%(lLCHxY7KgvJY72uUGO~I37W5Lhb(D) zQiM^X3wba2PX2IVo-voqHs*XmUhyTy{Oo-E$Rg6U&nkxh{|dX^;?Is zl{j}Y#>HbsuX-kTW8sjdzA%3%DYc+Y$`GEyv#vypQ) zGSc{5D99HgEr#L`wdEW~zA|`7NC|u*dm`T#O!QI~89mEsFRN#Djm7p;F|u{2@1oYx z*5rKhb15w!XnYU`e0St*&=ByDm01T3Cub`ojSZ2667sdf`|oUIXjm}SY*6e`eiH8o zAIo%)UxOvY*H@gZue7i0V_#o!Db#{OzA{w*Y-RL$SA!w`9p)_3vshI9yGy;ZX~%GT zZ$xjJHSz&9grK!cXw4hSJFVoprTePhIY`D(-fvkaJ3I1~k)nQDokYl6Mq=H{SBBOI zaW-~@Y$iw29_{&#A;{l5G)@kJp5p>Yug2fAoWEys-{l55lFdnn-dEBGl`xt9e;f9k zN8f0T`YrV%NP|MY@6XilX)7Ur8Oik|UpwqQnRY4UDoJzqzQb{~oa-H+j!?)| zS2tyMI~s;iuZK=O$vo<0-gJY$L+O2Y97mtx{6*%E{Mt+B>6u4U-1oiWgYXKhgZ}Q} z1NE2PYa;g)^$=_E{iU%sP=5_pFQTsemfc^2)jLKVq2T>KSRL6dAIK*PiakjmDec>+ zxCrEzq1ID*`9{xS3SO7uGwIX(6$-i5k$oD6t;A`__Q^o+)Y9xbyJ_TZH-?W8pWs|$ zNAHNU=XDpdh4jfU5h&!UZ?JJPke!j!G0->}u-*Xk+K-ii>h(9T2dg802nEd(q2T*4 z%|_XNE=uR`Wu6`(u7#QSxf8VR-a+|n-}?1gai9L6{Bg=Z3t9)VeVc2&h`Q=O@7rAK zC4H1@oiutP@P10R=OFo_8fsxCl!E->=L{||8mivcKF;^u@G)cwg?w$%{IP*J1!+OQ zMvlRrhkIRh^+7K8#zMw)Bpq^uLY{iJP*rVjkPJeu`t#M7Mu&72IF!y+XAxz!pTVUT zrL7(KAgweZjUR^kEZeGj5P@_kc$+ler4O+gDoL*gt?Oy%ri}J>3i;}nUfFR(LI^|A zpSCs5PWMpTt@f(jXRBN7RlCnt|3J@`dcGVf7%cwTGWoq2yUV3wQ);isv{Mb&8>#97Vt}#~g z`94>K9QncTE4mr`nma@NTt54Lr@51lJ=xr zXI8r}BhFXv`PB8FCy>neXt4Hb9rYx2E1hgZwj5nQ7rgJ3_Hsztkd!x6S-!jkTlcZu{~$o|G?+}~U$cH3r{P+k{TeMhk0hujokZ_4Jo1y;q`k2G zmO@S%d65iL@J=PxwIpdSd%8$h!g|oSmE2a49STtb-#0!^`c!F}cKUl!Wazun1+=ph z8|=FcuCIeT;YB!zU3%x4{GKk^8J)997s6Ob>XM#L>dMAi&>AJ%y{{@scR7eMbtOmd z-FWSibA7edw~b^*md}$d9=SdVO|yQLZ_ieaWQlA)c-@MVx|L4q=QLxd_W_TxLzd_5 zkUXzX{*)}bBr^vJ3ektLx!ULFL4oVn!RmQC2K5JmH1D$gF<8B7+9G_tf%IwYY2B5* zD$8)s_$BH8{`9Gy=5Df1wmx;D=5CsD3jRJ?iol_K2A8I81R945c0M9I*L(L+^+`wM zm`z*=nt!?KrD*0}P)J&JHEy%_=lS|WF=>G3co1EZePT@nf{Tc8Kjy|L-W%!*@dTdnWo`(Yc`S7>(pb^9Vj% z*XM^~6zD$q$|?E^dRS0Sa>LkJ$-S|H&lqQ&{+#hRpF5r6e7wFiMZM&@(C57fY8Jm*#o$PfXU;C<& zPZtc?A8G1DAYUr<(5HGf%6!+KJnd0Vg649{IZ|UlV_4s}(7q@Q5oF|$_U|&(AF@qz zF%4b7P_c3&;vVpO$$a%oZz~)D1=JiN+DOB8nd!j_~#$Z*KW=g^0g`Z z-jJ(3{_kUCk8DdahVvxqOQHL}@_kwV{N>xFe2ojC^qFMzC+7%tT0!y@^085N8pdgX zV58TGk6DH+(&^ixm?9Rxrx{3JFXc2B`fHEmsI9)e*}623M7FL7+tlZWxu%eO*J0OQ z1pC;pzjpp1DEW6^uad)ce;?PoJ5Lwsl;hn0qC~1 z^4FVvkIhwo8r_ACv$a9>cRL!06>_$NevR;zd|~S`sC*yz{`T=1``yVn7K_PQzt^SM z>+$g!^`WN}{2Z`pZ1C+qQ{QVoj|0sWp>&G&r>P$)gOKmvAx6~g0e>&4#6Syj&-8aI zvZ)o0fP!zk?r$2qUF226Eui&!JjiafUnYAZ(nY55Oj9=k*{Yy>sz{TLz_-EsLicqcy=SXivWKcSO=qO!L_)r8&c2W4 z+U9QBto@rltFV6`E2kvUO_OUHUx(loPG>@&Js$(YzkeI-vqAqEPxe66-dTG%JD6Oo zzOdhoRljgO4G~2|uj~fzZy)=y>0>oTTX?Ew#;vX;n>c}UK{GQXP4TjZS}&c(X7O!f zx+}1|@-#)fTr6T@dJ34F7L<5B-fp$KzvoCjpNJ7u7(xB)zf(^iqTaKtdwXebEB%X; zMmlVr0qXVO2=&KKzK^VThFVkXx`Ka>!+OwqGKPU*xeU2v_;pyZUyl^GL-L+KhK5=A zes2eQ{MxH^OY$)}zQ<39+npIJ$kCY4yT^uXyeE{5US#UM zjMlppcp0UX!=<)7*_rP-^>Cs(Ua#b8P8>v*Z1Z%vI#(0>vFYtqT~Bfxdi!LfN4h-` zX-`t7(y~EFuKGtLWqWywy>7+HGTHjMY=hUI{oE(RIuaO4>5dq78!+6uB;p$F7w zy4Q5WNzS#$WB8g%P+RIi@8idV>{Q6L9cnWsX2_P4^nuDIN!C;Q)K>Me!a(yp> zYoPY~&(H^&Z`uCOcQ2HEuSnkW{ajT1s`=>JEjxrlzBcs6)$KkqvzJ7sx8+QB$p2~T zM^46TVNbS9*)&wUvis+?uq(T-^0LeMD*YPzOLI^2H*zxbu`4<6<$s~?hIS$IIB4E$ zzITt{Ku9xDg+huvkrvF$$T8U3)8DvD+R=^vf!3dHZwLC*GD6`j?T`T8-{IZkub-@4~! z&!e36qfa`#{_MGvi#<WlnUZ>K2%nf?)p{)95q(f;xj$TW9 zdXcMeHg+AMek&A75FtvSyd>TiK2|^YeYc(4Zak2k_jjPO?=5+cLu`m-2PowGIhWch zA4H&F$M1-EAAF|2g~;}YVf?4~V8BBC6r=@%BytS49;eYCf$yts(z_iE#66J9-p~qA z!_`ucsLI zTNsu$pD1(P%b_{1y1)2&q&T^s9qc=E)yR@xWSfGwQL${(yi%X&`SMKjDot5o17%Z? z7Bnhy3^tGCXQ9voxy%{=F2>vI`$RVD9*XJ=oMzs|NKfRbB`yW8)89uV2LovTYma`O4do{Jn&H?`@io3fZ4; z>F13p?$HCj5tmEzRvG#ZqK%bM!u2S&VbncP8 zvm8qMbtBt$e^1DMuMknE0eayW909fIARGeOEVKsNb&yV~<@Y~Mz|T=As=n zUa^?y&Q(_o6ns09_uQm?s_V}sLpp@F#s7|y{|zAjJ+HxjOGyG!kQNvbIR?9T%7$*( z?PwtG0YCq{>9~`eYfNf9R>FFy1BFtMZ-nMdMw8usY>NtzduZSS#khTfM8 z`!`!$J4L;ukA2$v?S$;1oZnZBBrP<4lfQ4N_tbj+9;$BHt#K{#)h!vm?%CMUn~*cq z_R9v{N3<@di6ck0#XzNXLF&h)o_YOAopD^`p>dMBfCvlBE{GW#IX$0?$5_Y=rhH&spKunqS5(U+@k z$?#+EZ0yjuIU5_)NBQcHsGD{iBW{3vY|&VeFCs@RaVg|$7gepS9%8*4%f}{-4+YuP z3P)TzB2I&X-}~nKd{KZ5-)_n4)qx1seM)^nbg!VS$AnhO;*hbo+{ryPFc>EYtEV)9V0a`)lV_=p;Xwg%U;MsXaThv0`RbP4kt1K-lHtck zM1Kf{d~MQr6$<&uuCC1fAg`aD;8ts z5qosCZs_~2zI9;zH)N3vw6P)N#2+M={y8+1E!T8U(tV-YQAyn8$X7qrP2|Y-XRf*>BU6_|zJE`twKpRNnd*z7*dSkL*Ov^B z??)fg6?WgFy^n$~H&hvtBNV)B^^?L-WyzLod-9dlpIv8TkL=J`^(18}?fvIt?+e8W z6Chc~m-BJ5ywd&k&v^3n?#J8U=T5G2scP-?a_os$#IwzB z&f-7+K4-A~&`@Kgudj8D3zvB9F&^baic|YB!eh#)IW#nr|8vR0{ z&pRz{ruK7qUa$`KH?Nm9^(~dlSBmG{EkCoR0x%fq8ecvVP`_HSD=db(tOyk~POUhN= zEQit>_nr}?1UI(R8k$_2O)F zOU`&mK3@&hhNO(-_rd(qLw)=#0J z`;0=qHff9qh2A*I_)NY#li!Natvah*z07zdU-!>0@Uu&Ld?rF~N1wUp; zX6hX$t-4L1x~iu+>g(mJ4-uKQK=z5jbS3LVoTNehsgUpAUl&kU<23?>N+!Prr=02U zueD(Nv7~zW>i04t2_fXFKSIAy$XE9<>I#Ki^~&C}^?8Iop^&TIeA_4;X-BTQRL9@H zd|l<)`OU!Bvr+-R*ZkMq@8(($^n&(5ozTJcQK0z|kuMbdTBvgJeFKz&=3X^)IV4*s zTT&>&X-O>Z59A?BuFTb-WMGMsF{2hN4sV zdaqZpe4uw`xqLQDQ9EXnpF4S3k~7QU{i<#h>RaLWy4|FAI~s@;a-FB$l+CW|$N5ml zn~X|9T3~48$mP3(5q5|kkpDHtyX8mDpN2zF2^v>*px}LFoKyUoD#x7dzxS6$egs9J z5P@v7-}!OrTbUwDF zsi*$e-!a-ioPxB-b8N|Ht#BlknBQ2F9oUt2G79+(r${!DXM?WmTnxd^G?gQejS9)n z^mQ&D<}%(?KY}zUyjJ#QkGXv9OP@o(;+x&hU$2#Y+2bx>`(7)1*d>zxF$2U)fcUhy|xe5hmzsPdNS6Y zD+x=vNunX>A(^@6WhhS}9~rtQ=ks@a(ib^2W^}*s?bmw@|1RS=*R+q)vxh>)W;KvT zX}&3>NT-!Y$k(Pcbt6#!C`53k@jQ^7s+We>(l)hQc155NK|Z!+@1s&9&fafBoofU6 zP5w$_Pjr_3==~!f$!D!F&|DkH7OI>cYnm8tyeU6@2;V=;bNpWB48n8$oh{ow>PHen z=s{*Kzq^&DtQ|}EMj>DQe*C1Zl-%{33(?OXD9-l%l4tv~@6S26KTmyXX5`3Km+EM) ziG1JhN``zblFz4SdatWGUauc(e*MVzch?N##g943&-HiMBFd)WZ1rc4w_NpSuTlB7 zKb^II&sBfE`f%ClerLYq@|$;k>TselAipW(`##Rgh^&;pV{j<%SK4tore1B{7HhNnWryUWo(0fLqbheIc zJxLw<>}f&*op&KX=r^inqWs;+Ex`ew2fc%fpokA>cRwGPV^adN=u?3?_-pEX!maIG zm(5hOv2TZB+2YT2U4^t3`n5D7OL+ez%X^usufOT{a(uqz3B5oLkJwoSYzO&24gA^7&2fbHqa!7`SL-M+RqDpqva!GK_zGxq?|r?N&anuDv#$2caz7D;@^TAX(n_1^Wgh0jz^f3 z8rFq?QwW*~Y{bUHWDL{4AtlDkei^GW6!#=$Jz2r~-zKPswb;Z2@(k35b%?qX25bX9 zNHN(hvK`U_dm_i6@2TZrkJ{m|-vvvwMQu`h{O|7i*yrn7n(C3mk5{^9z_IPsQl#JD z)k}t4U+qfyv7u8xHgrv8R92zCGHLQf1ce|QeYw%3y{wU>c}1kAS=6mUp}%yRd=Y`a zF4;b)lU9wgBq=%)T z-+B#HZiNDO{Yl20(0<_{c}Xfc_hjl(S7mdpr?$qua7mmxbv7YjOpP$-nAe$+^xSCf zylKX7XyY#?+XPo0}OWYx(r6o>A}#)5!NpnoSFzB;U$txXs+ozX!k0 ze3Dggy-Ar3rp>gQjb@YSFq`=_VXN6@wwq3~!|XJ>_{8rnv&Yw-!^~EXWdVkzhR^uVrG2D{H^&eZw&s9oy7Od zQSB>P9^pUgj-ADe&S*At#K-R7s}XMC6CIrFdlYS8oM1@mv_ z-_0-hOS)gO!vBgH@E_(s&9BW%=D+xM_RDx&g5bj7qTo%zn}dskg5WK|TZ6X+|iLg8HB#_(afXWi~m<%|VMz-4fgyv<9~Yw+D9w>w-`AqxZB0 z{iW^<)(5FzgRR#VwD+mMG1wGz1e=2`!Pa0~us!Gub_6?vUBT|)u0G}ZlRHq}o>$ep zJCSowB7JWn-Ji5ix$F0xq1;}secE3COz_!Y-x*3u!{-LM-k%k5-sgk+g9lz!`wPJz z1%Dho82m}_MXo&*><_;5sxn^=z7jkfd^Pyf;E`8d%hq>b&=T1-{%@UsE#aT92jAfA z(L~Pg))#;F|4h^GwjIOLhdnUtfng5}dtlfD!yXv+z_15~JuvKnVGj&@VAuo09vJq( zum^@cFzkV04-9)?*aO2J81}%h2ZlW`?15nq40~YM1H&E|_Q0?QhCMLsfng5}dtlfD z!yXv+z_15~JuvKnVGj&@VAuo09vJq(um^@cFzkWfod^Crcr184_>171!MB1Zg1-#@ zDtIzT2j3321F>EL_8(ctfce+a%GJQMsN_{ZRf z!Li^+!9NB69Q-)=m*6MCvq5+8)8J>p@!+}OUxS|q&j&9A{}%jv@QdI?@XO%E;8#IU z@E^f{2EPto3jQnj@8IR2H~3BPKf!Nf!kESwY04d;dB;rwtxculx4{6P4@a8Y<|xHw!ACVS($@I&_e`fzEuEL?8W9}aH_ zZwzk=KN5a4{8;!0Ht!F^6=4)sge${Jd%h~H3ai7_;hM0NIjjxW+H_r5A2x)a zu<6FIDQpf~Z2Fe)*043aExbLvBU~4L(&pV6t`Ae;hOjMcx91zfO<_m4*`~LITf=SP z_OLVD5$+6k*}UE1T{cd(VL1JN*8_XPyTg0Jd&5tK_l0}IPlulgKO61~KbILJpAYX3 z9|*q?{!#eHHt)gkPr@&T4~6@~FNI$YzY;ziel`44SNf4mt<(NI@T$D8g)Wg?v{GjRH^vT8gT zru*c4yU*Fca)z(`|I-71ZTqjw_2N@`_vYW^T{G#IgW;isoWtRF!oTJGyWx>UZe0HF z!l%RUg-2hNpOp50Jstlh(D(UKn16sb^E)!45-#Ih+{W+Ae3tl0el6x&^2H{&#+BE( zujlIw7W?v&;ZdEJoi6EF{Zl@#&x72cheVrQcukvE=Bwucx%^Q0!Su`W#T4^re^KW0g@_GJi_k=+0Hg z=PBL|K2PUD_1*%q!{@Da`E#(_BY((W{qX|jybqJtB{PZ22>Cx7+2#AimrKf&e&62g zSmRGV%g#^gRyzB7@?84+)8XYRR@+o3JC>cgex~?E%IJE3^|R&qbNNH%2a3HsA7{5W zd9HEj&rc%rYuGEBl`nlt3+Ypyk7c*Y>h}ZxEpgrJ%#Ke{-scTux5kU+n#yU+Wyjv0 zfnq;575|+2{@m-$HTE_n^+=ZdkR3~=P+9p#zLcMor*`_bdfmRh$_mXhWt-@?PWfa*3tGm-G6({R73`7T@l{;(_F3=X-y8e+?$rUzgqThhibQ z@>6y!->Td|vF=O#;q?p@dwU0pv)d^-^7%kwkggx*n z*au&LFT$7M0Q@<83%(8Cg`@C~Am2R?{|+bMMbK|j{wKTy{|&vM{y7P+fRX*6d)i1C z4R3%ka4w963*aJAUdtnNcfqZ`>sE;C839FzQ*1*T17V4k@w6|@BTc8zg zhjnl#q@WEpLI-StZJ^)2+zHzM?ty*q0DJ}h9G(FETeU|(`~084&)@{8ul^TC(N`D3 zJ3!-VGF%Piun0a3E1>~yf!m-R_P}T0i|`HjYxq0(0UU=Oco|*+&BOEIZSW452$#bY zct0$F55bMF0&a#D(0xAzn?e81{b%3{@D+Fzz6E~`-+>>1#`MqO1n7C{6?h$E{d_2Z zOJEYb52nETVGd|M+z2b68X938q+m1bgnQu&uphn-e*tMY1W&_1!E^8n_z(CkjCdWt z(+U^BTi_k=9w>t8Fc+44X_1v!F_N)d=b71k3$!H7rqbw1V4pe!f!wm zZxmbrZ-@87beIcEU>V#55v+!KxE1b%O|S#*g$LkE@Gv|A--1K%4Ez*cg#Ut*@cL2A z33xk9g!jM|FcoIPT=)Ro0IT3;XoNeV4LV>adWq(ew-8El>#WgK2OT%!5U+3_b>xa5FT)9ncP2VHeyBpM^h$ufR9pThImHh3~^Z z!*Tcp{2G1>Bi_K+f(zko@J@IiOosQvT=*a?g^xld+zd@{2eiX>xEnqTe*|BGufboy zx8XbR_wXb5Df}D!2mA&Cet>ukTnrQ7QkV?0U=iE|)zAcYKs#)QyWz9&$M6;S27C*; z;JfgB_-8l{zkpxEZ(#&ClHY?1;cf6vcpvC@yWbCU;e)UgJ_=P(54S@Kw!kj95AKJD z;1PHX{t^zs5%@m*2!0MP!hgd_c*7f6_u*og0GGm*Fdb&W0$2h!zzSFm^>8b!ht04H z?t}Z`A$SBHgD2q-d=GvI&%*QYD|i`B!6<%A`aHN8Ccvd|B}|7|umG084X^@MLp|II z>tQqOg8SfpcnBVW$KXjg1mA-n!n5!^{0d%%Q!t7jaXt?&h6!*fTnW=*7A$}za09G> z)ld(&!g|;YyWl>!A0C27;4yd-4#D@}hwv;s55Iz!;S`J-i+;EmCcvd|B}|7|umG08 z4X^@MLp|II>tQqOg8SfpcnBVW$KXjg1mA-n!n5!^{0d%%Q!wg$^uxt49^M6)!DP4! z7Qhm?0an0jsE1o&J#2YC9D*Of&*0zTKj60zzKOL4 zE{1o(6u1f&!g8pDo1qErfD~+j-LMz_2)+zohi^g}z5~ag8(x4O_zk@7&9nH5WTI!ptR;{cxbuDXGRy8)&tgbVw>T7E& z8cjo0V`Wucv#D51s;Q!GRb05Krfzj@m1(GGtg5T6s&0-`jWw&+P_(JJswVJZn zwPhLalr_qiW#wkBH>o_XTpm|0PgE|?)LIyqSs0gDm?*O_Q>MImjaeM4TM`#v5*J^R zD89rM$kbZfQrle9Pptn`IDz03Ws7%+np;Z%?sfo+D31aOj~xOja+WW6hpskN%+mKvr&ee8smxME9Ou_aNlB~#ZhJ6oz;Tpk-!6-VW#MOK|omOBfpTwERtu8N}t3F}rT(hFjdtK(?FX>qGh zCl}b|+O=nO^5mL?q&123HCkuZ=&&&Ex0*Ow=-N}`;)Su=nmAhMEU$6#!qX;@(z;$_ z7Jk6geB68>q3h#`^aqp1-Q4FyOH*Af*T*I_#?jKacvBoLO}MiukzVSj zeUnctjjK1s(Xyn1=H$t;xInWjr%}eFJ6%lovv zrO(-NH*{KDd_$rIwAH&H)m>GZjKW_XO26c8^?2t zTwLPf$u4&C=a#$k`EfkYm7iDa&RxBEuHL*UF5l^$=k(5V_RlMI*IhH`x%SL+cFl8k z&2#$aIsNmT{&J_k-03fO`pcdEa;Lw1s#y?wcXh(ad#8(&W$qqd;cjyAEjPXv-+AKn(&Tt&=g02WEtdmN3k{Q! z;@B@G#j#&XN@72kl*E26DTysCDT!NJQWCecq$F->NlDz&l9ITkB_&Q?iIX=uZh6V% z*v}=CV?USh@2gq;Q{DBcPX1I^Z(8i3lIcEn*GrvUZg`iJI{l?if2q?y!^Mo#it3u0 zsnciB0;Q%+nK5~~NzAy@-C8oY)bAv%ZF5~)=eoAebvoQwE}1)@O|5R#rzfOcAKcWB zmz6%NgB4pIn>KlRxoNJit8X%X%ExCFY;oCl*HmbCN`>Nb{(ZSPwm#(C`jFWAkl2nY zV(Tkn+lR!~SH!jtiLDQbZM%qVyNIn1iEaCct%1b0FN({Ho&I8{zu4(7cKVB*{$i)U z*y%5J`iq_ZVyC~@=`VKri=F;rr#~K(=ym!_occ}u@fap{ z`r|RoxzityVa}cYcnovy+8>YM;_`S56FdF!80OsRpX~HccKRo~_A}0GzfE@fC%g7f zcKRo~_D^>DC%g7fcKRo~_D^x`pW^gSaqXYt^iOg6r#Ssnoc<|J{}iWxiqk*E>7U~C zPjULEIQ>(c{wYp>JV%Smr#k&po&Kp#|5T@cs?$H!>7VNKPj&j^IgT8sf2z|z)#;z= z^iOsA(?8AWpXT((YX;?={%KDCG^c->YyUK-f11-j&FP=!^iOm8 zr@8h|clxJ0{nMTP=}!N2r$1h+ip!@v{nMTP=}!N2r+>QBKi%n{?(|Q0`dJw4xS2lR z+z>xj+!{wW#Ebo{add-UH_WY>l&u$U0gB7xwUXHBkJn7jo&Hj%KVC!0clzTslyleq z8Ls^^T>EFZ_RnzbpW)g+!}b3R*Zz2~QCvR5>7U`+U*_bMIeBHSewnLZ=IWO@|CKp= z%bdMs&R=EDULK8YyUU!tbDaD+PW~JxKim&bb;Vkdu&vu}>GZ;q2c$H|}LC1-usa6>z2ZF&v6CL}c{sPyON!#V8?kLYv9*rajxJ(r9kH!XY`sBj zy-RGpLG0z((Zad4wxlS&dl47&4sUe}uZ#4Wuc|JN*4juL0~905zI3#2y=*FewPTa^ z<>JbUrmDD%Zv2f+ynFJmDNk48%|@agXSNou#fbT4RmEyvfVfDnH&?dsnycAV)z;QD z=xrG9t9V7wVqa_O9g|gTrDx7!@zp$M*%xWNAgHOU)>}-TY;LVTo!0Bi%$YSHo?|6N z@f;(bVai*0;~8JH1E!?dxxN^eHaAwR;w3=i&9+2weCsSJj&GeM#oP+xH*FbP;+LtJ zw`h`E65kL@O5z&;ahcI3$G#%vSaVB7Ew2fytcns=cRgwMd4U?ASXuGn%s$l)KK7}0 tvJ^=Y1MBj+>Db<`oqU0y>RCh;$Ba&&OHRIKxSMXz9@@(rWpN8Y8r%Z z+0Lz`Hb7tuTg-@ITw5fBR^Ze34ihl7T#~*a=SE}0FlX9Nh(eRk;&w4Oba&?o>D;>o z4kipHN==w@>3Wow|j;=%7H1!ZG!uu!805Oi4P!N4*9sNCh*+}ed-Kd zV-6d2AAmjGWKL#&?nBc}M557&iGP%&jonCbOt)AGtO$QF7(L8yWm*pD} z69a6yl`p|Y(&$ICalT3OeNcopFrekZnPkFtBzcD@n$-c-&Z!jGzWQh%-MrNH2ps<~ zdHoaHN^7IpfWWP@7&Pu4Elp`){R_3M8>7$J)mZNI)%Fd0oFQ1Kp@i_@sM_2eFcX0Q z6t;*$X@3tutS>W<>xQ6*WlvBu*m$hp4<>g5hd&=9RHrl&g3P40%B7&k%IakbCQzDX z97;nqmuNeGVPg&rRLx&vt`8!ZHsek4fV0uv^6*6fL)XXdu6{e(KGdpFZx8G0s7JIt z28DGCrzwdD4AemwIHH5ET3V^0qQ$}`>F)rnpG)+SmPJG~F3L_NwrWHg5X~+kk9ejb z)dXmwX7h6?ty&e5VV6)(|!MZ&{GnELxsFkV@H6rBUw8 z+&#TMF?S0>K3WHNQe|Q_{ngJHDTnL$g^w%J@3kv_zU3uJ+C5U5*o_bhs{6 z=PZp*3Wof4_WT8$28|#8b!Q6CWYyuZ9y4RVr~U)*SF!YW*kyPos}4`~_9^?l(A}T; zPxQ}Z^>;95zsIJgFJf8Iy%f)6^>;93zc;%3#%uAyVrJvL*zUgZB5ZfxcoDX{Z@dWG w-8Wu@?d}^d!glwK7h${m#*47sed9&=AN@)I)gqI8RR91007*qoM6N<$f)dt&=l}o! literal 1457 zcmV;i1y1^jP)9*u32kaq^iO6g&Bajra*#&h`}-eZs1IelhRp_ z(N46-C?pxZvW)m3=<3({ZLMx&A|WzdVg5e+^9yADQNRQx5Rb2+-2Np1FCXcJ82AA< z*WH8)qF#|za80km)t=@MM9d^ytMYTOvBNK{0{Cm+-x~fsS`DH}ZpUnJUnG07R$;y7 zcp`8CcY^&K0hR~shj%9M%a*aUfS@>r_b$=IpjmZ>(jNRMpKL0K{|e z&s#2C53TOxxCX?8``G7J5OKOQ7^iRTrfb8-#k@f@ydfP~TiNb$9lwG&M{M^#)K%E{ z!^dR7^dp4}sPDy{rBO#-erVb3<|8jSuewHk4*^O3VMHn<`fklwhkcgdIu$aahBy7Z!a~;|3cNb6R z!{fU9v30yCe1@s)A;|=FpEFWn3_#{3^;Rg$8bkmP2hD*EjCtVf9uD-r>R=oDLz-)B z)vCVAlJsEx8@7t*E;t9Ugu&S?t6tV8%&mEaMYA)ZG?H2G;4bu!<0_SX2VB6^hiBwq z33stqO22!36)lQ*TO2Q7$|RK2f`RfI&vEaZk#u4GV%(+rm2io%Fp1uQfmnDN_mAI?jH+CmA6CRz z5wg{V1#DyE%an`qXKX~=Us+ksrk4(b%I7WoGT=Yw#^q;_W)f#`))TUsRGBJzR`#bn z(x-OUJM(=5;>t{9V!!M_-a_P_q=>{9C7=6_JckFns7uT_#55utV|0)`srF;PV#oRo z(Ml=tvuuy?%RBy*Tgk)NU?{)vzWF&Yl8+ukaeawe6)eZ10rWZ6L#$2tq4LQZxtXHI zbi*bAm?OZr!ftP}fXhRIb(vbEZNrH2Y;}Hp64=>mg>aSO?!!B{hfkC$)23pQ+*V0v zF`v{o!J56O?;uUzHdaJVA}W6819j4|Mj8>8*Gxro++!$;Uzga9wWZGn(51^!${T!K zv5NvIbSV<=4IfRyU|(XtTK6Q?u0~Fw%#ubDACe$F%_>Ev0J22+5SE?)7^`8#{``7w z)Lkx|+Gz|ztZKUV#Anwkbnb=o&(yx#RUx=<3eN4F^S5C(-0fXB#e?N^7keFa`qai+ z2S$-H!VKt`Y|Wm&?{>b%n^fUlq2<&RzJt|5KpZO{Xxg}qObiNVYK(HZ$TPTDfnv59 z+kC<7oFvL+^2fR7l@r`mUHOW*Ks&`RU^*oX?viq=xRsq|9;1;@soM=1N8H7b1{&fk z9~1Ii$j^E)a{OfmfCoS8-B^K;N^E<5yUvMjkAXP2mRHW88}}1(ic~C;?DwRbq<$jq z!h6g*b+a3G3wE*g-LU0J%%;q5A!hABq@w;r+jb|}5at(dZ)uXtk&nRlm(RZhg4uiQ z-#KmE#oHf+N8bhCaQghdej~&EpCFn&yz_Zbv=9}=&!^!hat(f9U+>-3FFb%~_Pzhv zC`HuolE3TU5$(WwO}Y>7Y5Ro-kj?(L)So|}hECwm()O=`WcL36C=s`B2cCKq00000 LNkvXXu0mjf`Kj8w diff --git a/Tests/images/test_draw_pbm_target.png b/Tests/images/test_draw_pbm_target.png new file mode 100644 index 0000000000000000000000000000000000000000..38323f45a8342d925ee348d7d17d282480a2bc73 GIT binary patch literal 259 zcmV+e0sQ`nP)=&+zSi+Iz!C^2qR|UMT)wRt6;-l5J8!|R ztr?A~EYOIJ0B{26+1VR;!vVXlTz8EWl`97z8^t=&>g+P`Hsah$5q7?E1Wcp&4BcJE z-cFp$VTj&TXOTXk<_G41a)eKQ7z<29iVzy8PB-r30;rBs>|++!tCA(U94CCoII*&! ztR@SE0U(W25}sCZMyOZquL&mf4&kp_>^N?Ojj$0m!bVsK;RkyHY5o8J literal 0 HcmV?d00001 diff --git a/Tests/test_font_pcf.py b/Tests/test_font_pcf.py index 90e204303..87a3ea067 100644 --- a/Tests/test_font_pcf.py +++ b/Tests/test_font_pcf.py @@ -5,7 +5,7 @@ from PIL import ImageFont, ImageDraw codecs = dir(Image.core) -fontname = "Tests/fonts/helvO18.pcf" +fontname = "Tests/fonts/10x20-ISO8859-1.pcf" message = "hello, world" @@ -20,7 +20,8 @@ class TestFontPcf(PillowTestCase): with open(fontname, "rb") as test_file: font = PcfFontFile.PcfFontFile(test_file) self.assertIsInstance(font, FontFile.FontFile) - self.assertEqual(len([_f for _f in font.glyph if _f]), 192) + #check the number of characters in the font + self.assertEqual(len([_f for _f in font.glyph if _f]), 223) tempname = self.tempfile("temp.pil") self.addCleanup(self.delete_tempfile, tempname[:-4]+'.pbm') @@ -34,25 +35,26 @@ class TestFontPcf(PillowTestCase): with open("Tests/images/flower.jpg", "rb") as fp: self.assertRaises(SyntaxError, PcfFontFile.PcfFontFile, fp) - def xtest_draw(self): - + def test_draw(self): tempname = self.save_font() font = ImageFont.load(tempname) - image = Image.new("L", font.getsize(message), "white") - draw = ImageDraw.Draw(image) - draw.text((0, 0), message, font=font) - # assert_signature(image, "7216c60f988dea43a46bb68321e3c1b03ec62aee") + im = Image.new("L", (130,30), "white") + draw = ImageDraw.Draw(im) + draw.text((0, 0), message, 'black', font=font) + with Image.open('Tests/images/test_draw_pbm_target.png') as target: + self.assert_image_similar(im, target, 0) + def _test_high_characters(self, message): tempname = self.save_font() font = ImageFont.load(tempname) - image = Image.new("L", font.getsize(message), "white") - draw = ImageDraw.Draw(image) - draw.text((0, 0), message, font=font) + im = Image.new("L", (750,30) , "white") + draw = ImageDraw.Draw(im) + draw.text((0, 0), message, "black", font=font) + with Image.open('Tests/images/high_ascii_chars.png') as target: + self.assert_image_similar(im, target, 0) - compare = Image.open('Tests/images/high_ascii_chars.png') - self.assert_image_equal(image, compare) def test_high_characters(self): message = "".join(chr(i+1) for i in range(140, 232))