]> granicus.if.org Git - nethack/commitdiff
Provide characters missing from Terminus fonts
authorRay Chason <Ray Chason>
Sat, 15 Oct 2022 13:05:58 +0000 (09:05 -0400)
committerRay Chason <Ray Chason>
Sat, 15 Oct 2022 13:05:58 +0000 (09:05 -0400)
sys/msdos/fonts/makefont.lua
sys/msdos/fonts/nh-u16b.bdf [new file with mode: 0644]
sys/msdos/fonts/nh-u16v.bdf [new file with mode: 0644]
sys/msdos/fonts/nh-u18b.bdf [new file with mode: 0644]
sys/msdos/fonts/nh-u20b.bdf [new file with mode: 0644]
sys/msdos/fonts/nh-u22b.bdf [new file with mode: 0644]
sys/msdos/fonts/nh-u24b.bdf [new file with mode: 0644]
sys/msdos/fonts/nh-u28b.bdf [new file with mode: 0644]
sys/msdos/fonts/nh-u32b.bdf [new file with mode: 0644]
sys/unix/hints/include/cross-post.370

index c953f6aae810d5476def858331049f6b6af26eb4..78ec760dd5be2508c6fe7aa3a12a1f4db6dd08c8 100755 (executable)
@@ -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] .. " <input-bdf> <output-psf>\n")
+if #arg < 2 then
+    io.stderr:write("Usage: " .. arg[0] .. " <input-bdf> [<input-bdf>...] <output-psf>\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 (file)
index 0000000..a4b9cb6
--- /dev/null
@@ -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 (file)
index 0000000..7bd2669
--- /dev/null
@@ -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 (file)
index 0000000..11a4b11
--- /dev/null
@@ -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 (file)
index 0000000..7022694
--- /dev/null
@@ -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 (file)
index 0000000..15de8d7
--- /dev/null
@@ -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 (file)
index 0000000..bea34cc
--- /dev/null
@@ -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 (file)
index 0000000..2b39547
--- /dev/null
@@ -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 (file)
index 0000000..e5cf7f2
--- /dev/null
@@ -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
index 693f7c9c49fd7eb9719aebbff06d915f0d68a109..4a1f9e109e9413a9bfe35fa02284ffca35169047 100644 (file)
@@ -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)