Tech News
← Back to articles

Z80 Sans – a disassembler in a font (2024)

read original related products more articles

Z80 Sans

What's your favourite disassembler? Mine's a font:

1.mp4

This font converts sequences of hexadecimal lowercase characters into disassembled Z80 instructions, by making extensive use of OpenType's Glyph Substitution Table (GSUB) and Glyph Positioning Table (GPOS).

If you just want to try it out, a copy is available under ./test/z80-sans.ttf .

Install

Tested on Debian GNU/Linux 12. Note that this Debian version ships with ruby version 3, while fontcustom was written for ruby version 2, and is incompatible with later versions (e.g. syntax errors). A ruby install also requires a compatible OpenSSL version. Therefore, RVM can be used to manage both ruby and a local install of OpenSSL.

apt install imagemagick potrace pip install fonttools git submodule update --init --recursive # fontforge ( cd ./modules/fontforge/ git checkout 4f4907d9541857b135bd0b361099e778325b4e28 git apply ../../resources/fontforge.diff mkdir -p build cd build cmake -GNinja .. ninja ninja install ) # woff2 ( cd ./modules/woff2/ make clean all ) # fontcustom rvm use 2.7 rvm pkg install openssl rvm install 2.4 --with-openssl-dir= $HOME /.rvm/usr gem update --system 3.3.22 ( export PATH= $PWD /modules/woff2/build: $PATH cd ./modules/fontcustom/ git apply ../../resources/fontcustom.diff gem build fontcustom.gemspec gem install ./fontcustom-2.0.0.gem )

Running

cp ./resources/droid-sans-mono.ttf /tmp/base.ttf ./gen.py ./resources/instructions.json

... continue reading