diff options
author | David Herrmann <dh.herrmann@gmail.com> | 2014-10-02 19:47:21 +0200 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2014-10-03 15:57:00 +0200 |
commit | 61d0326a5b1c11a8f2e8e31ec9093e81daa26588 (patch) | |
tree | 0a875cbd7d0b7c18f7b90c9aa804b2f7d375a727 /src | |
parent | cb51a41fa632790ea839aa126844dfc2d74eb341 (diff) |
terminal/unifont: add built-in fallback glyph
In case we cannot render a glyph, we want a fallback we can display
instead. If we rely on the font itself to provide the fallback character,
we have nothing to display if that character is not available. Therefore,
add a static fallback that we can use at any time.
Diffstat (limited to 'src')
-rw-r--r-- | src/libsystemd-terminal/unifont.c | 18 | ||||
-rw-r--r-- | src/libsystemd-terminal/unifont.h | 1 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/libsystemd-terminal/unifont.c b/src/libsystemd-terminal/unifont.c index 7520015988..2acfa9821a 100644 --- a/src/libsystemd-terminal/unifont.c +++ b/src/libsystemd-terminal/unifont.c @@ -221,3 +221,21 @@ int unifont_lookup(unifont *u, unifont_glyph *out, uint32_t ucs4) { memcpy(out, &g, sizeof(g)); return 0; } + +void unifont_fallback(unifont_glyph *out) { + static const uint8_t fallback_data[] = { + /* unifont 0xfffd '�' (unicode replacement character) */ + 0x00, 0x00, 0x00, 0x7e, + 0x66, 0x5a, 0x5a, 0x7a, + 0x76, 0x76, 0x7e, 0x76, + 0x76, 0x7e, 0x00, 0x00, + }; + + assert(out); + + out->width = 8; + out->height = 16; + out->stride = 1; + out->cwidth = 1; + out->data = fallback_data; +} diff --git a/src/libsystemd-terminal/unifont.h b/src/libsystemd-terminal/unifont.h index 0ded61472f..30527cb3fa 100644 --- a/src/libsystemd-terminal/unifont.h +++ b/src/libsystemd-terminal/unifont.h @@ -54,3 +54,4 @@ unsigned int unifont_get_width(unifont *u); unsigned int unifont_get_height(unifont *u); unsigned int unifont_get_stride(unifont *u); int unifont_lookup(unifont *u, unifont_glyph *out, uint32_t ucs4); +void unifont_fallback(unifont_glyph *out); |