From: Ray Chason Date: Sat, 15 Oct 2022 13:05:58 +0000 (-0400) Subject: Provide characters missing from Terminus fonts X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=333fc71b8632a3f6fbf72462b73b1e241010b0c6;p=nethack Provide characters missing from Terminus fonts --- diff --git a/sys/msdos/fonts/makefont.lua b/sys/msdos/fonts/makefont.lua index c953f6aae..78ec760dd 100755 --- a/sys/msdos/fonts/makefont.lua +++ b/sys/msdos/fonts/makefont.lua @@ -94,65 +94,81 @@ bwidth = nil glyph = nil bitmap = false -if arg[2] == nil or arg[3] ~= nil then - io.stderr:write("Usage: " .. arg[0] .. " \n") +if #arg < 2 then + io.stderr:write("Usage: " .. arg[0] .. " [...] \n") os.exit(1) end -fp = io.open(arg[1], "r") +for inp = 1, #arg-1 do -while true do - line = fp:read() - if (line == fail) then - break + fp = io.open(arg[inp], "r") + if fp == nil then + io.stderr:write("Could not open: " .. arg[inp] .. "\n") + os.exit(1) end - if start_with(line, 'FONTBOUNDINGBOX ') then - -- Width and height of a glyph - rec = split(line) - width = rec[2] - height = rec[3] - bwidth = math.floor((width + 7) / 8) - elseif start_with(line, 'STARTCHAR ') then - -- A glyph begins here - glyph = new_glyph(width, height) - elseif start_with(line, 'ENCODING ') then - -- This line provides the Unicode code point - rec = split(line) - glyph.code[#glyph.code+1] = tonumber(rec[2]) - elseif start_with(line, 'BITMAP') then - -- Bitmap data appears on following lines - bitmap = true - elseif start_with(line, 'ENDCHAR') then - -- End of bitmap data - -- Position will be according to IBM437 if the code point is in IBM437, - -- else matching any prior occurrence if the same glyph has appeared - -- before, else as a new glyph - pos = ibm437_rev[glyph.code[1]] or font_by_bytes[glyph.bytes] - if pos == nil then - pos = next_pos - next_pos = next_pos + 1 + + while true do + line = fp:read() + if (line == fail) then + break end - if font[pos] == nil then - font[pos] = glyph - font_by_bytes[glyph.bytes] = pos - else - for i = 1, #glyph.code do - font[pos].code[#font[pos].code+1] = glyph.code[i] + if start_with(line, 'FONTBOUNDINGBOX ') then + -- Width and height of a glyph + rec = split(line) + if inp == 1 then + -- First input file sets the dimensions + width = tonumber(rec[2]) + height = tonumber(rec[3]) + bwidth = math.floor((width + 7) / 8) + else + -- Any others must match, or an error results + if width ~= tonumber(rec[2]) or height ~= tonumber(rec[3]) then + io.stderr:write(arg[inp] .. " bounding box does not match that of " .. arg[1] .. "\n") + os.exit(1) + end + end + elseif start_with(line, 'STARTCHAR ') then + -- A glyph begins here + glyph = new_glyph(width, height) + elseif start_with(line, 'ENCODING ') then + -- This line provides the Unicode code point + rec = split(line) + glyph.code[#glyph.code+1] = tonumber(rec[2]) + elseif start_with(line, 'BITMAP') then + -- Bitmap data appears on following lines + bitmap = true + elseif start_with(line, 'ENDCHAR') then + -- End of bitmap data + -- Position will be according to IBM437 if the code point is in + -- IBM437, else matching any prior occurrence if the same glyph has + -- appeared before, else as a new glyph + pos = ibm437_rev[glyph.code[1]] or font_by_bytes[glyph.bytes] + if pos == nil then + pos = next_pos + next_pos = next_pos + 1 + end + if font[pos] == nil then + font[pos] = glyph + font_by_bytes[glyph.bytes] = pos + else + for i = 1, #glyph.code do + font[pos].code[#font[pos].code+1] = glyph.code[i] + end + end + font_by_code[glyph.code[1]] = pos + glyph = nil + bitmap = false + elseif bitmap then + -- Hex data after BITMAP and before ENDCHAR + for i = 1, bwidth do + byte = string.sub(line, i*2-1, i*2) + glyph.bytes = glyph.bytes .. string.char(tonumber(byte, 16)) end - end - font_by_code[glyph.code[1]] = pos - glyph = nil - bitmap = false - elseif bitmap then - -- Hex data after BITMAP and before ENDCHAR - for i = 1, bwidth do - byte = string.sub(line, i*2-1, i*2) - glyph.bytes = glyph.bytes .. string.char(tonumber(byte, 16)) end end -end -fp:close() + fp:close() +end -- The provided BDFs code positions 16 and 17 differently from what NetHack -- expects @@ -182,7 +198,7 @@ for i = 1, 256 do end end -outfile = io.open(arg[2], "wb") +outfile = io.open(arg[#arg], "wb") -- Write the PSF header outfile:write("\x72\xB5\x4A\x86") -- magic diff --git a/sys/msdos/fonts/nh-u16b.bdf b/sys/msdos/fonts/nh-u16b.bdf new file mode 100644 index 000000000..a4b9cb633 --- /dev/null +++ b/sys/msdos/fonts/nh-u16b.bdf @@ -0,0 +1,68 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 8 16 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u16b.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +00 +00 +00 +00 +32 +4C +00 +32 +4C +00 +32 +4C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FF +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +ENDCHAR +ENDFONT diff --git a/sys/msdos/fonts/nh-u16v.bdf b/sys/msdos/fonts/nh-u16v.bdf new file mode 100644 index 000000000..7bd2669e0 --- /dev/null +++ b/sys/msdos/fonts/nh-u16v.bdf @@ -0,0 +1,68 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 8 16 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u16v.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +00 +00 +00 +00 +32 +4C +00 +32 +4C +00 +32 +4C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FF +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +ENDCHAR +ENDFONT diff --git a/sys/msdos/fonts/nh-u18b.bdf b/sys/msdos/fonts/nh-u18b.bdf new file mode 100644 index 000000000..11a4b1176 --- /dev/null +++ b/sys/msdos/fonts/nh-u18b.bdf @@ -0,0 +1,74 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 10 18 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u18b.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +0000 +0000 +0000 +3100 +4900 +4600 +0000 +3100 +4900 +4600 +0000 +3100 +4900 +4600 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FFC0 +FFC0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +ENDCHAR +ENDFONT diff --git a/sys/msdos/fonts/nh-u20b.bdf b/sys/msdos/fonts/nh-u20b.bdf new file mode 100644 index 000000000..702269414 --- /dev/null +++ b/sys/msdos/fonts/nh-u20b.bdf @@ -0,0 +1,80 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 10 20 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u20b.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +0000 +0000 +0000 +0000 +3100 +4900 +4600 +0000 +3100 +4900 +4600 +0000 +3100 +4900 +4600 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FFC0 +FFC0 +FFC0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +0040 +ENDCHAR +ENDFONT diff --git a/sys/msdos/fonts/nh-u22b.bdf b/sys/msdos/fonts/nh-u22b.bdf new file mode 100644 index 000000000..15de8d761 --- /dev/null +++ b/sys/msdos/fonts/nh-u22b.bdf @@ -0,0 +1,86 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 11 22 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u22b.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +0000 +0000 +0000 +0000 +0000 +3080 +4C80 +4300 +0000 +3080 +4C80 +4300 +0000 +3080 +4C80 +4300 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FFE0 +FFE0 +FFE0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +0060 +ENDCHAR +ENDFONT diff --git a/sys/msdos/fonts/nh-u24b.bdf b/sys/msdos/fonts/nh-u24b.bdf new file mode 100644 index 000000000..bea34cc68 --- /dev/null +++ b/sys/msdos/fonts/nh-u24b.bdf @@ -0,0 +1,92 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 12 24 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u24b.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +3C60 +6660 +63C0 +0000 +3C60 +6660 +63C0 +0000 +3C60 +6660 +63C0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FFF0 +FFF0 +FFF0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +0030 +ENDCHAR +ENDFONT diff --git a/sys/msdos/fonts/nh-u28b.bdf b/sys/msdos/fonts/nh-u28b.bdf new file mode 100644 index 000000000..2b3954771 --- /dev/null +++ b/sys/msdos/fonts/nh-u28b.bdf @@ -0,0 +1,104 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 14 28 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u28b.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1C30 +3630 +6360 +61C0 +0000 +1C30 +3630 +6360 +61C0 +0000 +1C30 +3630 +6360 +61C0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FFFC +FFFC +FFFC +FFFC +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +000C +ENDCHAR +ENDFONT diff --git a/sys/msdos/fonts/nh-u32b.bdf b/sys/msdos/fonts/nh-u32b.bdf new file mode 100644 index 000000000..e5cf7f2a8 --- /dev/null +++ b/sys/msdos/fonts/nh-u32b.bdf @@ -0,0 +1,116 @@ +STARTFONT 2.1 +FONTBOUNDINGBOX 16 32 +STARTPROPERTIES 3 +NOTICE "Additional characters to use with ter-u32b.bdf" +COPYRIGHT "Copyright 2022 Ray Chason." +NOTICE "NetHack may be freely redistributed. See license for details." +ENDPROPERTIES +STARTCHAR tripletilde +ENCODING 8779 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1F0C +3F9C +39FC +30F8 +0000 +0000 +1F0C +3F9C +39FC +30F8 +0000 +0000 +1F0C +3F9C +39FC +30F8 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR uppereighth +ENCODING 9620 +BITMAP +FFFF +FFFF +FFFF +FFFF +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR righteighth +ENCODING 9621 +BITMAP +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +0002 +ENDCHAR +ENDFONT diff --git a/sys/unix/hints/include/cross-post.370 b/sys/unix/hints/include/cross-post.370 index 693f7c9c4..4a1f9e109 100644 --- a/sys/unix/hints/include/cross-post.370 +++ b/sys/unix/hints/include/cross-post.370 @@ -25,22 +25,22 @@ $(TARGETPFX)exceptn.o : ../lib/djgpp/djgpp-patch/src/libc/go32/exceptn.S $(GAMEBIN) : $(HOBJ) $(LUACROSSLIB) $(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAMEBIN) \ $(HOBJ) $(WINLIB) $(TARGET_LIBS) -$(FONTDIR)/ter-u16b.psf: $(FONTTOP)/ter-u16b.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u16b.bdf $@ -$(FONTDIR)/ter-u16v.psf: $(FONTTOP)/ter-u16v.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u16v.bdf $@ -$(FONTDIR)/ter-u18b.psf: $(FONTTOP)/ter-u18b.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u18b.bdf $@ -$(FONTDIR)/ter-u20b.psf: $(FONTTOP)/ter-u20b.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u20b.bdf $@ -$(FONTDIR)/ter-u22b.psf: $(FONTTOP)/ter-u22b.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u22b.bdf $@ -$(FONTDIR)/ter-u24b.psf: $(FONTTOP)/ter-u24b.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u24b.bdf $@ -$(FONTDIR)/ter-u28b.psf: $(FONTTOP)/ter-u28b.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u28b.bdf $@ -$(FONTDIR)/ter-u32b.psf: $(FONTTOP)/ter-u32b.bdf $(FONTDIR)/makefont.lua $(LUABIN) - $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u32b.bdf $@ +$(FONTDIR)/ter-u16b.psf: $(FONTTOP)/ter-u16b.bdf ../sys/msdos/fonts/nh-u16b.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u16b.bdf ../sys/msdos/fonts/nh-u16b.bdf $@ +$(FONTDIR)/ter-u16v.psf: $(FONTTOP)/ter-u16v.bdf ../sys/msdos/fonts/nh-u16v.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u16v.bdf ../sys/msdos/fonts/nh-u16v.bdf $@ +$(FONTDIR)/ter-u18b.psf: $(FONTTOP)/ter-u18b.bdf ../sys/msdos/fonts/nh-u18b.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u18b.bdf ../sys/msdos/fonts/nh-u18b.bdf $@ +$(FONTDIR)/ter-u20b.psf: $(FONTTOP)/ter-u20b.bdf ../sys/msdos/fonts/nh-u20b.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u20b.bdf ../sys/msdos/fonts/nh-u20b.bdf $@ +$(FONTDIR)/ter-u22b.psf: $(FONTTOP)/ter-u22b.bdf ../sys/msdos/fonts/nh-u22b.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u22b.bdf ../sys/msdos/fonts/nh-u22b.bdf $@ +$(FONTDIR)/ter-u24b.psf: $(FONTTOP)/ter-u24b.bdf ../sys/msdos/fonts/nh-u24b.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u24b.bdf ../sys/msdos/fonts/nh-u24b.bdf $@ +$(FONTDIR)/ter-u28b.psf: $(FONTTOP)/ter-u28b.bdf ../sys/msdos/fonts/nh-u28b.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u28b.bdf ../sys/msdos/fonts/nh-u28b.bdf $@ +$(FONTDIR)/ter-u32b.psf: $(FONTTOP)/ter-u32b.bdf ../sys/msdos/fonts/nh-u32b.bdf $(FONTDIR)/makefont.lua $(LUABIN) + $(LUABIN) $(FONTDIR)/makefont.lua $(FONTTOP)/ter-u32b.bdf ../sys/msdos/fonts/nh-u32b.bdf $@ # .PHONY: dodata dospkg dosfonts dosfonts: $(FONTTARGETS)