From 999c909b6dc57aeeeaa937e7254141c332bc13a1 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sun, 23 Jan 2022 09:43:14 -0600 Subject: [PATCH] Update font image generator to python3, scale images by 3x, regenerate images (#15) * Update mkfontimage to python3 * Updated font images * make the images prettier (& the top image bigger) * fix resampling --- Makefile | 16 ++++++++-------- img/c64.png | Bin 2241 -> 8548 bytes img/g1.png | Bin 857 -> 3382 bytes img/g2.png | Bin 855 -> 3310 bytes img/g3.png | Bin 932 -> 3428 bytes img/g4.png | Bin 940 -> 3507 bytes img/t1.png | Bin 886 -> 3460 bytes img/t2.png | Bin 904 -> 3431 bytes img/t3.png | Bin 963 -> 3525 bytes img/t4.png | Bin 970 -> 3539 bytes mkfontimg.py | 20 +++++++++++++++++--- 11 files changed, 25 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index ba8b861..b92b9a7 100755 --- a/Makefile +++ b/Makefile @@ -41,14 +41,14 @@ charset%.bin: charset%.o charset.cfg .PHONY: update-font-images update-font-images: charset.bin charset2.bin charset3.bin charset4.bin mkfontimg.py - python mkfontimg.py -l charset.bin img/t1.png - python mkfontimg.py charset.bin img/g1.png - python mkfontimg.py -l charset2.bin img/t2.png - python mkfontimg.py charset2.bin img/g2.png - python mkfontimg.py -l charset3.bin img/t3.png - python mkfontimg.py charset3.bin img/g3.png - python mkfontimg.py -l charset4.bin img/t4.png - python mkfontimg.py charset4.bin img/g4.png + python3 mkfontimg.py -l charset.bin img/t1.png + python3 mkfontimg.py charset.bin img/g1.png + python3 mkfontimg.py -l charset2.bin img/t2.png + python3 mkfontimg.py charset2.bin img/g2.png + python3 mkfontimg.py -l charset3.bin img/t3.png + python3 mkfontimg.py charset3.bin img/g3.png + python3 mkfontimg.py -l charset4.bin img/t4.png + python3 mkfontimg.py charset4.bin img/g4.png .INTERMEDIATE: 80columns.bin 80columns.bin: 80columns.o charset.o 80columns.cfg diff --git a/img/c64.png b/img/c64.png index a1fa40a7ddbcd62ee73cb5de311a1c379a055a5d..8b2f6a02876cd5513b2367dda5a1e0649b7170e3 100644 GIT binary patch literal 8548 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 literal 2241 zcmeAS@N?(olHy`uVBq!ia0y~yV4MQPsvOKfkuSYZoPd-;fKP}kkpBPw|0FMmmZN7T z2W~6c=gxTPnVGujK@0~QD-seCy1KeHznR!pb#L?L%~iXkw1Ij!3p^r=85sBz zL6~uc{qjtp>5-Ws5hW46K32*3xq68y`AMmI6}bgK)eHl#hD=EpgRf_NpP;kyKN>wn`Gto0pvg1-vP_QXVNwW%aaf50H@@$nd zN=gc>^!3Zj%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUl_7?}%yCIAPA@T} z2g4p)39v?PeDdGE{EF^Lvzd`cmM>q(^mLD6UruS>svSC;D)Qy!ESU0lxUl^S;QBD# zLDP#-h{0{sV4!y0ol@Q})R zFy;4|Tjd%{Wk3Ek4>(nu_SSk|;Hl%ke^-3}{#fvNb*}C6%xD`ed{M~3VipRVSD2Ht^4O~7K`i> zt`kWzS2;Jm@y70W+jEiI_guPs-NSOm+&9-QDIfa!i?O21myJmIGK zIJ^Jn49U;Y6F&NSta-X|-SKj5<)eSLukV%q_IIa9^ts&6HE(yWd;VMYb@AajvY($- zpD}m;|7Nn0rP?wTgY$j{&%bio#4qpUeRE@C)3>F?rSGFZw9lY~cK)p7k-Z^&tDLn#{b%R%{LN)+b8!QTc+d0sM5!< zNB(!|9ixN(36=B8-&^ZV`EQ#3KK^s^y*WFdotyqs?sX8)GWpsdp$m=4PP@ELzMdU& z;B45@LpDKa>(*zV&a;tKdft6!!~6c7hT6~jwIA!eKmW7x@*MtuH#J!QtbBNJ3X{kZ zk);fr49YjLQD03|_dkt@FFmvT$EL%NJ(+xiKHXmSb?)Uq&t9Iixo5^<;w336d3n0f z?4rll*Lt4%HK|NnGRFVdQ&MBb@0L2lr Ap#T5? diff --git a/img/g1.png b/img/g1.png index 2bedfd8fd764a5dc44a9a5ea75b2506d488a998e..1d82a34e0c25dfc1a74e03f5130e9d8708ce5ab4 100644 GIT binary patch literal 3382 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 literal 855 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 G7ybm8kvew( literal 932 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 O0000sCIi9{ZWC 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 JIQZQU{{}z#LjC{% literal 886 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 literal 904 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 literal 963 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 literal 970 zcmV;*12z1KP)`dqn56uq_v5q@y}b-Sriuq2|^a_AR?lh zE?h{gT3;o7ST(IR8Z~`SW0`>b>|_G@+0W~cK*oFlOnH6Lb;Go{?m__=D($Vmdims= z1_=x20}cm;^8vt>@F!Dbu_2II7d9*6a|7z?oA3P9m&Sf4gIH31nB<1xZ z2g0Il((9i+H9C4ia*;&R|D0IADahhk=ynW?#luA{Cka`4*)Sz!0Gn2sZ%Ky0lWPVD zHwTRGFZsz`>!CH(c*lk2L2E0jdPo~FeGS!xwN`}d>DV6^R3n+q;8J&6j?szi03Z?5 zC#tr^7nh>tXDzXK)hmw`FSkt$=KX5mS)nNVX~)kA#W3=u499RS-ha`WyMtIM5fB6| z!G66ew~PZ-J=A&UnQE#rV-3}XbWf8_D?NRE3t4SSk_;}@H@%VxdwMoh6Vj9ZaQt{> zb7JGhce`$nRi6H(>vsQ{qT|En4y#LhtADMYdgObdC@0!uI3)4S9t`j;lv@{Hu6y}= z_ckO?Krp(w+WhI@X#QrGv*`cfg2vKMy*k(L=5Q9~V0wDz%+5O}J;t@R@!I%<7j$Dp z^`*CUWaRyk8?W~aoACUiD|~hI;~DaS`yc}k4?wJh-}v(ZL8(gB1#9z6E))3(WY%{f z*CvbpS-HC7FeQTrQqClZ%07dBGI*7%5J4S~qbBfX2CJjw&l*Z0*;`>yO0Wq? zsQRG!9d}iZbZmUx-n)tWM5{8{_HY5Yav!=~dQrUfnSf5@Gm{$@D`D71W|t&3M;=4q3+iKnJiel#fuCuuzz3F$;SX(Pk&r!b8_q&(uR9tKthuC?yiP~`YV55 s6zFCvo&=;+UEd}cz#QS&HbH=Y0ae~ZjW1HuL;wH)07*qoM6N<$g4fm4%m4rY diff --git a/mkfontimg.py b/mkfontimg.py index 9c15da4..1d4b9f8 100644 --- a/mkfontimg.py +++ b/mkfontimg.py @@ -1,5 +1,6 @@ #!/usr/bin/python import sys +import struct import PIL.Image as Image text = """\ @@ -22,9 +23,12 @@ def toscreencode(ch): if '`' <= ch <= '~': return cc - 96 return cc -charset = map(ord, open(sys.argv[1]).read()) +charset = open(sys.argv[1], "rb").read() +FG = 0xFFDE7886 +BG = 0xFFAA3A48 + def putcat(img, r, c, code, lowercase): inverse = code & 128 code = code % 128 @@ -33,10 +37,19 @@ def putcat(img, r, c, code, lowercase): data = charset[idx+y+lowercase*1024] if not inverse: data = ~data for x in range(4): - img.putpixel((4*c+x,8*r+y), data & (1<<(3-x))) + if ~data & (1<<(3-x)): + img.putpixel((8+4*c+x,8+8*r+y), FG) -img = Image.frombytes('1', (188,64), '\xff' * 188*64) +BG_buf = struct.pack('