diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/genfonts.py | 41 | ||||
| -rwxr-xr-x | tools/subset-ttf.sh | 13 |
2 files changed, 54 insertions, 0 deletions
diff --git a/tools/genfonts.py b/tools/genfonts.py new file mode 100644 index 0000000..e5afb7e --- /dev/null +++ b/tools/genfonts.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +# this just turns the linxu console fonts which are C arrays into psf1 fonts +# that i can load on disk since half of my psf1 fonts are stolen from there. +# +# usage: genfonts.py <font_8x16.c> <out.psf> [height] + +import re +import sys + + +def parse_c(path): + text = open(path).read() + cut = text.index("}, {") + body = text[cut + 4 :] + body = re.sub(r"/\*.*?\*/", "", body, flags=re.S) + bytes_ = [int(m, 16) for m in re.findall(r"0x([0-9a-fA-F]{2})", body)] + return bytes_ + +def write_psf1(rows, height, out): + count = len(rows) // height + if count < 256: + rows = rows + [0] * (height * (256 - count)) + count = 256 + if count not in (256, 512): + rows = rows[: height * 256] + count = 256 + mode = 0x00 if count == 256 else 0x01 # bit0 set => 512 glyphs + header = bytes([0x36, 0x04, mode, height]) + with open(out, "wb") as f: + f.write(header) + f.write(bytes(rows[: height * count])) + +def main(): + src, out = sys.argv[1], sys.argv[2] + height = int(sys.argv[3]) if len(sys.argv) > 3 else int(re.search(r"8x(\d+)", src).group(1)) + rows = parse_c(src) + write_psf1(rows, height, out) + print(f"{out}: psf1 8x{height}, {len(rows) // height} glyphs in") + +if __name__ == "__main__": + main() diff --git a/tools/subset-ttf.sh b/tools/subset-ttf.sh new file mode 100755 index 0000000..70cffa2 --- /dev/null +++ b/tools/subset-ttf.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# trim the ttf into a subset (U+0020..007E), its just to embed fonts that are actually +# rendered, since we have NERD fonts and shit, they can be quite large + +set -e +IN="$1" +OUT="$2" +python3 -m fontTools.subset "$IN" \ + --unicodes=U+0020-007E \ + --no-hinting --glyph-names \ + --output-file="$OUT" +echo "wrote $OUT" |
