terminal: add unifont font-handling

System Internals / systemd - David Herrmann [gmail.com] - 18 July 2014 10:45 UTC

The unifont layer of libsystemd-terminal provides a fallback font for situations where no system-fonts are available, or if you don't want to deal with traditional font-formats for some reasons.

The unifont API mmaps a pre-compiled bitmap font that was generated out of GNU-Unifont font-data. This guarantees, that all users of the font will share the pages in memory. Furthermore, the layout of the binary file allows accessing glyph data in O(1) without pre-rendering glyphs etc. That is, the OS can skip loading pages for glyphs that we never access.

Note that this is currently a test-run and we want to include the binary file in the GNU-Unifont package. However, until it was considered stable and accepted by the maintainers, we will ship it as part of systemd. So far it's only enabled with the experimental --enable-terminal, anyway.

86db5df terminal: add unifont font-handling
.gitignore | 1 +
Makefile.am | 26 +-
src/libsystemd-terminal/test-unifont.c | 128 +
src/libsystemd-terminal/unifont-def.h | 137 +
src/libsystemd-terminal/unifont-glyph-array.bin | Bin 0 -> 2621472 bytes
src/libsystemd-terminal/unifont-internal.h | 54 +
src/libsystemd-terminal/unifont.c | 211 +
src/libsystemd-terminal/unifont.hex |63488 +++++++++++++++++++++++
tools/compile-unifont.py | 116 +
9 files changed, 64159 insertions(+), 2 deletions(-)

Upstream: github.com


  • Share