PSFADDTABLE(1)
๐ PSFADDTABLE ๐
okay bestie, gather round, because we're talking about psfaddtable โ that's the General Commands Manual entry, section 1, and she is so much cooler than her name suggests. sit with me. ๐ซถ
โจ NAME โจ
psfaddtable โ add a Unicode character table to a console font. that's it, that's the whole job, and she does it flawlessly. ๐
๐ธ SYNOPSIS ๐ธ
psfaddtable fontfile tablefile outfile
๐ฆ DESCRIPTION ๐ฆ
so here's the vibe. psfaddtable takes a console font in .psf format โ that's your fontfile, bestie โ and merges it with the Unicode character table you hand over in tablefile. the glow-up result? a font file with an embedded character table, written out to outfile. iconic behaviour, no notes. ๐
a couple of little rules that are lowkey important:
- if you use
-as an input file name, that means standard input. yes, she's flexible like that. - if you use
-as an output file name, that means standard output. - and if your
fontfilealready has an embedded character table? it gets ignored. not merged, not respected, justโฆ ignored. ๐
ngl, that last one catches people out. if you were hoping to layer tables on top of each other, that is not what's happening here. periodt.
๐ TABLE FILE FORMAT ๐
this is the part everyone wants to skip and then gets confused about, so let's not. each line in your tablefile has to be exactly one of these three things:
- blank.
- a comment โ and comments are preceded by
#. - a sequence of numbers, separated by spaces or tabs.
and those numbers? they can be written in any of these formats, which is very generous of her honestly:
- decimal โ this is the default, so just write the number, no ceremony.
- octal โ preceded by
0. - hexadecimal โ preceded by
0x.
now, the actual meaning, because this is where it gets good:
- the first number on each line tells you the glyph slot in the font that's being referred to. its range depends on how big your font is:
0to0xfffor a 256-character font0to0x1fffor a 512-character font
- any subsequent numbers on the same line are Unicodes that are matched by that specific glyph slot.
and here's the cute extra bit: instead of a single Unicode, you can have a sequence of Unicodes separated by commas โ that's how you say "this glyph depicts the corresponding composed symbol." so a little comma party, basically. ๐
also, and this is the freeing part: it is totally permissible to have multiple lines for the same glyph. go off. spread them out. she doesn't mind. โจ
๐ SEE ALSO ๐
and that's the whole page, bestie. this beauty lives in the kbd family and this particular version is dated 25 Oct 1994 โ yeah, she's been serving since before you were born and she's still on the PSFADDTABLE(1) beat. respect the elders. ๐โจ
๐ฆ where this page comes from
- alpine 3.22: kbd-doc 2.7.1-r1 ยท GPL-2.0-or-later
- alpine 3.23: kbd-doc 2.8.0-r0 ยท GPL-2.0-or-later
- alpine 3.24: kbd-doc 2.8.0-r0 ยท GPL-2.0-or-later
- arch rolling: kbd 2.10.0-1 ยท GPL-2.0-or-later
- centos-stream 10: kbd 2.6.4-8.el10 ยท GPL-2.0-or-later
- centos-stream 9: kbd 2.4.0-12.el9 ยท GPLv2+
- fedora 43: kbd 2.8.0-3.fc43 ยท GPL-2.0-or-later
- fedora 43: kbd 2.8.0-4.fc43 ยท GPL-2.0-or-later
- fedora 44: kbd 2.9.0-3.fc44 ยท GPL-2.0-or-later
- fedora 44: kbd 2.9.0-4.fc44 ยท GPL-2.0-or-later
- nixos 26.05: kbd 2.9.0
- nixos 26.05: kbd-vlock 2.9.0
- nixpkgs unstable: kbd 2.9.0
- nixpkgs unstable: kbd-vlock 2.9.0
- opensuse-leap 16.0: kbd 2.7.1-160000.3.1 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- opensuse-leap 16.0: kbd 2.7.1-160000.3.1 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- opensuse-leap 16.0: kbd 2.7.1-160000.3.1 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- opensuse-leap 16.0: kbd 2.7.1-160000.3.1 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms