summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-11-04 22:23:43 +0100
committerErich Eckner <git@eckner.net>2018-11-04 22:23:43 +0100
commit92f4cff100202c5ca654d1461f46c50148cd151a (patch)
tree12bcb5065d8c05edd3a89c78d0609f9d14bf0707
parentf7ec22b2185c383763b1f28d001db3e3cff8b14b (diff)
downloadanzeige-92f4cff100202c5ca654d1461f46c50148cd151a.tar.xz
Zug als Trenner neu
-rw-r--r--anzeige.c7
-rw-r--r--fonts.c5
-rw-r--r--fonts.h223
3 files changed, 123 insertions, 112 deletions
diff --git a/anzeige.c b/anzeige.c
index b30263e..7c7071d 100644
--- a/anzeige.c
+++ b/anzeige.c
@@ -110,8 +110,11 @@ int main(int argc, char **argv)
turn_off_display();
return EXIT_FAILURE;
}
- if (text_buffer + TEXT_BUFFER_LENGTH - text_buffer_end > 0)
- text_buffer_end += snprintf(text_buffer_end, text_buffer + TEXT_BUFFER_LENGTH - text_buffer_end, "; ");
+ for (int i=0; i<5; i++) {
+ if (text_buffer + TEXT_BUFFER_LENGTH - text_buffer_end <= 0)
+ break;
+ text_buffer_end += snprintf(text_buffer_end, text_buffer + TEXT_BUFFER_LENGTH - text_buffer_end, "%c%c%c%c", 0xEE, i==0 ? 0x01 : 0x03, 0xEE, i==0 ? 0x02 : 0x04);
+ }
scroll_data . input_len =
render(
diff --git a/fonts.c b/fonts.c
index f2cc38d..ecd3967 100644
--- a/fonts.c
+++ b/fonts.c
@@ -17,6 +17,8 @@ void init_symbols_boundaries()
if ((symbols_boundaries[i][1] == -1) && (symbols[i * MAX_SYMBOL_WIDTH + MAX_SYMBOL_WIDTH - 1 - j] != 0x00))
symbols_boundaries[i][1] = MAX_SYMBOL_WIDTH - 1 - j;
}
+ if ((i < TIGHT_SYMBOLS_START) && (symbols_boundaries[i][0] > 0))
+ symbols_boundaries[i][0] --;
}
}
@@ -40,7 +42,7 @@ int render(char *input, int input_len, char *output, int max_output_len, int ski
int output_i = 0;
for (int input_i=0; (input_i < input_len) && (output_i < max_output_len) && input[input_i]; input_i++) {
char16_t c = (unsigned char)input[input_i];
- if ((c == 0xc2) || (c == 0xc3)) {
+ if ((c == 0xc2) || (c == 0xc3) || (c == 0xee)) {
input_i++;
if ((input_i >= input_len) || (! input[input_i]))
continue;
@@ -57,7 +59,6 @@ int render(char *input, int input_len, char *output, int max_output_len, int ski
output[output_i] = symbols[c * MAX_SYMBOL_WIDTH + i];
output_i++;
}
- output_i++;
}
if (output_i >= max_output_len)
return max_output_len;
diff --git a/fonts.h b/fonts.h
index ab82d97..f61af1a 100644
--- a/fonts.h
+++ b/fonts.h
@@ -4,126 +4,132 @@
#include <uchar.h>
#define SPACE_SYMBOL_WIDTH 2
-#define MAX_SYMBOL_WIDTH 6
-#define SYMBOL_COUNT 104
+#define MAX_SYMBOL_WIDTH 7
+#define SYMBOL_COUNT 108
+#define TIGHT_SYMBOLS_START 104
static char const symbols[SYMBOL_COUNT * MAX_SYMBOL_WIDTH] = {
- 0x00,0x00,0x00,0x00,0x00,0x00, // space
- 0x00,0x00,0x00,0x2F,0x00,0x00, // !
- 0x00,0x00,0x07,0x00,0x07,0x00, // "
- 0x00,0x14,0x7C,0x17,0x7C,0x17, // #
- 0x00,0x00,0x16,0x77,0x0A,0x00, // $
- 0x00,0x26,0x15,0x3F,0x2A,0x19, // %
- 0x00,0x10,0x2C,0x2A,0x12,0x28, // &
- 0x00,0x00,0x00,0x03,0x00,0x00, // '
- 0x00,0x00,0x1C,0x63,0x00,0x00, // (
- 0x00,0x00,0x00,0x63,0x1C,0x00, // )
- 0x00,0x00,0x0A,0x07,0x0A,0x00, // *
- 0x00,0x08,0x08,0x3E,0x08,0x08, // +
- 0x00,0x00,0x40,0x30,0x00,0x00, // ,
- 0x00,0x00,0x08,0x08,0x08,0x00, // -
- 0x00,0x00,0x00,0x20,0x00,0x00, // .
- 0x00,0x40,0x30,0x0C,0x03,0x00, // /
- 0x00,0x00,0x1E,0x21,0x1E,0x00, // 0
- 0x00,0x00,0x22,0x3F,0x20,0x00, // 1
- 0x00,0x00,0x32,0x29,0x26,0x00, // 2
- 0x00,0x00,0x12,0x25,0x1E,0x00, // 3
- 0x00,0x0C,0x0A,0x3F,0x08,0x00, // 4
- 0x00,0x00,0x27,0x25,0x19,0x00, // 5
- 0x00,0x00,0x3E,0x29,0x19,0x00, // 6
- 0x00,0x00,0x03,0x39,0x07,0x00, // 7
- 0x00,0x00,0x1B,0x25,0x1B,0x00, // 8
- 0x00,0x00,0x26,0x29,0x1F,0x00, // 9
- 0x00,0x00,0x00,0x28,0x00,0x00, // :
- 0x00,0x00,0x40,0x28,0x00,0x00, // ;
- 0x00,0x00,0x0C,0x12,0x00,0x00, // <
- 0x00,0x00,0x14,0x14,0x14,0x00, // =
- 0x00,0x00,0x00,0x12,0x0C,0x00, // >
- 0x00,0x00,0x02,0x29,0x06,0x00, // ?
- 0x00,0x3C,0x4B,0x55,0x5E,0x10, // @
- 0x00,0x20,0x3E,0x0A,0x3C,0x20, // A
- 0x00,0x22,0x3E,0x2A,0x1C,0x00, // B
- 0x00,0x1C,0x22,0x22,0x14,0x00, // C
- 0x00,0x22,0x3E,0x22,0x1C,0x00, // D
- 0x00,0x22,0x3E,0x2A,0x36,0x00, // E
- 0x00,0x22,0x3E,0x0A,0x06,0x00, // F
- 0x00,0x00,0x1C,0x2A,0x3A,0x00, // G
- 0x00,0x22,0x3E,0x08,0x3E,0x22, // H
- 0x00,0x00,0x22,0x3E,0x22,0x00, // I
- 0x00,0x18,0x22,0x1E,0x02,0x00, // J
- 0x00,0x22,0x3E,0x08,0x14,0x22, // K
- 0x00,0x22,0x3E,0x20,0x30,0x00, // L
- 0x00,0x3E,0x0C,0x04,0x3E,0x00, // M
- 0x00,0x22,0x3E,0x04,0x08,0x3E, // N
- 0x00,0x00,0x1C,0x22,0x1C,0x00, // O
- 0x00,0x22,0x3E,0x0A,0x0C,0x00, // P
- 0x00,0x00,0x5C,0x62,0x5C,0x00, // Q
- 0x00,0x22,0x3E,0x0A,0x1C,0x20, // R
- 0x00,0x00,0x34,0x2A,0x1A,0x00, // S
- 0x00,0x06,0x22,0x3E,0x22,0x06, // T
- 0x00,0x02,0x3E,0x20,0x1E,0x02, // U
- 0x00,0x0E,0x30,0x08,0x06,0x00, // V
- 0x02,0x3E,0x10,0x18,0x32,0x0E, // W
- 0x00,0x36,0x1C,0x36,0x22,0x00, // X
- 0x00,0x06,0x38,0x28,0x06,0x00, // Y
- 0x00,0x00,0x32,0x2A,0x26,0x00, // Z
- 0x00,0x00,0x7F,0x41,0x00,0x00, // [
- 0x00,0x00,0x01,0x0E,0x30,0x40, // backslash
- 0x00,0x00,0x00,0x41,0x7F,0x00, // ]
- 0x00,0x04,0x02,0x02,0x04,0x00, // ^
- 0x00,0x40,0x40,0x40,0x40,0x40, // _
- 0x00,0x00,0x01,0x02,0x00,0x00, // `
- 0x00,0x00,0x14,0x2C,0x18,0x20, // a
- 0x00,0x21,0x3F,0x24,0x18,0x00, // b
- 0x00,0x00,0x18,0x24,0x14,0x00, // c
- 0x00,0x00,0x18,0x25,0x1F,0x20, // d
- 0x00,0x00,0x18,0x2C,0x2C,0x00, // e
- 0x00,0x00,0x24,0x3F,0x25,0x00, // f
- 0x00,0x00,0x58,0x64,0x78,0x04, // g
- 0x00,0x21,0x3F,0x04,0x38,0x20, // h
- 0x00,0x00,0x24,0x3D,0x20,0x00, // i
- 0x00,0x40,0x44,0x7D,0x00,0x00, // j
- 0x00,0x21,0x3F,0x18,0x34,0x20, // k
- 0x00,0x00,0x21,0x3F,0x20,0x00, // l
- 0x3C,0x04,0x38,0x04,0x38,0x20, // m
- 0x00,0x24,0x3C,0x04,0x38,0x20, // n
- 0x00,0x00,0x18,0x24,0x18,0x00, // o
- 0x00,0x44,0x7C,0x64,0x18,0x00, // p
- 0x00,0x00,0x18,0x64,0x78,0x44, // q
- 0x00,0x00,0x24,0x3C,0x24,0x04, // r
- 0x00,0x00,0x28,0x2C,0x14,0x00, // s
- 0x00,0x04,0x3F,0x24,0x14,0x00, // t
- 0x00,0x04,0x3C,0x20,0x1C,0x20, // u
- 0x00,0x04,0x1C,0x20,0x1C,0x00, // v
- 0x00,0x1C,0x30,0x1C,0x30,0x0C, // w
- 0x00,0x24,0x18,0x18,0x24,0x00, // x
- 0x00,0x44,0x5C,0x20,0x1C,0x00, // y
- 0x00,0x00,0x34,0x2C,0x24,0x00, // z
- 0x00,0x00,0x08,0x36,0x41,0x00, // {
- 0x00,0x00,0x00,0x7F,0x00,0x00, // |
- 0x00,0x00,0x41,0x36,0x08,0x00, // }
- 0x00,0x00,0x08,0x04,0x08,0x04, // ~
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space
+ 0x00,0x00,0x00,0x00,0x2F,0x00,0x00, // !
+ 0x00,0x00,0x00,0x07,0x00,0x07,0x00, // "
+ 0x00,0x00,0x14,0x7C,0x17,0x7C,0x17, // #
+ 0x00,0x00,0x00,0x16,0x77,0x0A,0x00, // $
+ 0x00,0x00,0x26,0x15,0x3F,0x2A,0x19, // %
+ 0x00,0x00,0x10,0x2C,0x2A,0x12,0x28, // &
+ 0x00,0x00,0x00,0x00,0x03,0x00,0x00, // '
+ 0x00,0x00,0x00,0x1C,0x63,0x00,0x00, // (
+ 0x00,0x00,0x00,0x00,0x63,0x1C,0x00, // )
+ 0x00,0x00,0x00,0x0A,0x07,0x0A,0x00, // *
+ 0x00,0x00,0x08,0x08,0x3E,0x08,0x08, // +
+ 0x00,0x00,0x00,0x40,0x30,0x00,0x00, // ,
+ 0x00,0x00,0x00,0x08,0x08,0x08,0x00, // -
+ 0x00,0x00,0x00,0x00,0x20,0x00,0x00, // .
+ 0x00,0x00,0x40,0x30,0x0C,0x03,0x00, // /
+ 0x00,0x00,0x00,0x1E,0x21,0x1E,0x00, // 0
+ 0x00,0x00,0x00,0x22,0x3F,0x20,0x00, // 1
+ 0x00,0x00,0x00,0x32,0x29,0x26,0x00, // 2
+ 0x00,0x00,0x00,0x12,0x25,0x1E,0x00, // 3
+ 0x00,0x00,0x0C,0x0A,0x3F,0x08,0x00, // 4
+ 0x00,0x00,0x00,0x27,0x25,0x19,0x00, // 5
+ 0x00,0x00,0x00,0x3E,0x29,0x19,0x00, // 6
+ 0x00,0x00,0x00,0x03,0x39,0x07,0x00, // 7
+ 0x00,0x00,0x00,0x1B,0x25,0x1B,0x00, // 8
+ 0x00,0x00,0x00,0x26,0x29,0x1F,0x00, // 9
+ 0x00,0x00,0x00,0x00,0x28,0x00,0x00, // :
+ 0x00,0x00,0x00,0x40,0x28,0x00,0x00, // ;
+ 0x00,0x00,0x00,0x0C,0x12,0x00,0x00, // <
+ 0x00,0x00,0x00,0x14,0x14,0x14,0x00, // =
+ 0x00,0x00,0x00,0x00,0x12,0x0C,0x00, // >
+ 0x00,0x00,0x00,0x02,0x29,0x06,0x00, // ?
+ 0x00,0x00,0x3C,0x4B,0x55,0x5E,0x10, // @
+ 0x00,0x00,0x20,0x3E,0x0A,0x3C,0x20, // A
+ 0x00,0x00,0x22,0x3E,0x2A,0x1C,0x00, // B
+ 0x00,0x00,0x1C,0x22,0x22,0x14,0x00, // C
+ 0x00,0x00,0x22,0x3E,0x22,0x1C,0x00, // D
+ 0x00,0x00,0x22,0x3E,0x2A,0x36,0x00, // E
+ 0x00,0x00,0x22,0x3E,0x0A,0x06,0x00, // F
+ 0x00,0x00,0x00,0x1C,0x2A,0x3A,0x00, // G
+ 0x00,0x00,0x22,0x3E,0x08,0x3E,0x22, // H
+ 0x00,0x00,0x00,0x22,0x3E,0x22,0x00, // I
+ 0x00,0x00,0x18,0x22,0x1E,0x02,0x00, // J
+ 0x00,0x00,0x22,0x3E,0x08,0x14,0x22, // K
+ 0x00,0x00,0x22,0x3E,0x20,0x30,0x00, // L
+ 0x00,0x00,0x3E,0x0C,0x04,0x3E,0x00, // M
+ 0x00,0x00,0x22,0x3E,0x04,0x08,0x3E, // N
+ 0x00,0x00,0x00,0x1C,0x22,0x1C,0x00, // O
+ 0x00,0x00,0x22,0x3E,0x0A,0x0C,0x00, // P
+ 0x00,0x00,0x00,0x5C,0x62,0x5C,0x00, // Q
+ 0x00,0x00,0x22,0x3E,0x0A,0x1C,0x20, // R
+ 0x00,0x00,0x00,0x34,0x2A,0x1A,0x00, // S
+ 0x00,0x00,0x06,0x22,0x3E,0x22,0x06, // T
+ 0x00,0x00,0x02,0x3E,0x20,0x1E,0x02, // U
+ 0x00,0x00,0x0E,0x30,0x08,0x06,0x00, // V
+ 0x00,0x02,0x3E,0x10,0x18,0x32,0x0E, // W
+ 0x00,0x00,0x36,0x1C,0x36,0x22,0x00, // X
+ 0x00,0x00,0x06,0x38,0x28,0x06,0x00, // Y
+ 0x00,0x00,0x00,0x32,0x2A,0x26,0x00, // Z
+ 0x00,0x00,0x00,0x7F,0x41,0x00,0x00, // [
+ 0x00,0x00,0x00,0x01,0x0E,0x30,0x40, // backslash
+ 0x00,0x00,0x00,0x00,0x41,0x7F,0x00, // ]
+ 0x00,0x00,0x04,0x02,0x02,0x04,0x00, // ^
+ 0x00,0x00,0x40,0x40,0x40,0x40,0x40, // _
+ 0x00,0x00,0x00,0x01,0x02,0x00,0x00, // `
+ 0x00,0x00,0x00,0x14,0x2C,0x18,0x20, // a
+ 0x00,0x00,0x21,0x3F,0x24,0x18,0x00, // b
+ 0x00,0x00,0x00,0x18,0x24,0x14,0x00, // c
+ 0x00,0x00,0x00,0x18,0x25,0x1F,0x20, // d
+ 0x00,0x00,0x00,0x18,0x2C,0x2C,0x00, // e
+ 0x00,0x00,0x00,0x24,0x3F,0x25,0x00, // f
+ 0x00,0x00,0x00,0x58,0x64,0x78,0x04, // g
+ 0x00,0x00,0x21,0x3F,0x04,0x38,0x20, // h
+ 0x00,0x00,0x00,0x24,0x3D,0x20,0x00, // i
+ 0x00,0x00,0x40,0x44,0x7D,0x00,0x00, // j
+ 0x00,0x00,0x21,0x3F,0x18,0x34,0x20, // k
+ 0x00,0x00,0x00,0x21,0x3F,0x20,0x00, // l
+ 0x00,0x3C,0x04,0x38,0x04,0x38,0x20, // m
+ 0x00,0x00,0x24,0x3C,0x04,0x38,0x20, // n
+ 0x00,0x00,0x00,0x18,0x24,0x18,0x00, // o
+ 0x00,0x00,0x44,0x7C,0x64,0x18,0x00, // p
+ 0x00,0x00,0x00,0x18,0x64,0x78,0x44, // q
+ 0x00,0x00,0x00,0x24,0x3C,0x24,0x04, // r
+ 0x00,0x00,0x00,0x28,0x2C,0x14,0x00, // s
+ 0x00,0x00,0x04,0x3F,0x24,0x14,0x00, // t
+ 0x00,0x00,0x04,0x3C,0x20,0x1C,0x20, // u
+ 0x00,0x00,0x04,0x1C,0x20,0x1C,0x00, // v
+ 0x00,0x00,0x1C,0x30,0x1C,0x30,0x0C, // w
+ 0x00,0x00,0x24,0x18,0x18,0x24,0x00, // x
+ 0x00,0x00,0x44,0x5C,0x20,0x1C,0x00, // y
+ 0x00,0x00,0x00,0x34,0x2C,0x24,0x00, // z
+ 0x00,0x00,0x00,0x08,0x36,0x41,0x00, // {
+ 0x00,0x00,0x00,0x00,0x7F,0x00,0x00, // |
+ 0x00,0x00,0x00,0x41,0x36,0x08,0x00, // }
+ 0x00,0x00,0x00,0x08,0x04,0x08,0x04, // ~
// 0x7f .. 0xaf missing
- 0x00,0x00,0x02,0x05,0x02,0x00, // ° (0xb0)
+ 0x00,0x00,0x00,0x02,0x05,0x02,0x00, // ° (0xb0)
// 0xb1 .. 0xc2af missing
- 0x00,0x00,0x02,0x05,0x02,0x00, // ° (0xc2b0)
+ 0x00,0x00,0x00,0x02,0x05,0x02,0x00, // ° (0xc2b0)
// 0xc2b1 .. 0xc383 missing
- 0x00,0x21,0x3E,0x0A,0x3C,0x21, // Ä (0xc384)
+ 0x00,0x00,0x21,0x3E,0x0A,0x3C,0x21, // Ä (0xc384)
// 0xc385 .. 0xc395 missing
- 0x00,0x01,0x1C,0x22,0x1C,0x01, // Ö (0xc396)
+ 0x00,0x00,0x01,0x1C,0x22,0x1C,0x01, // Ö (0xc396)
// 0xc397 .. 0xc39b missing
- 0x00,0x03,0x3E,0x20,0x1E,0x03, // Ü (0xc39c)
+ 0x00,0x00,0x03,0x3E,0x20,0x1E,0x03, // Ü (0xc39c)
// 0xc39d .. 0xc39e missing
- 0x00,0x7E,0x0A,0x2A,0x1C,0x00, // ß (0xc39f)
+ 0x00,0x00,0x7E,0x0A,0x2A,0x1C,0x00, // ß (0xc39f)
// 0xc3a0 .. 0xc3a3 missing
- 0x00,0x01,0x14,0x2C,0x18,0x21, // ä (0xc3a4)
+ 0x00,0x00,0x01,0x14,0x2C,0x18,0x21, // ä (0xc3a4)
// 0xc3a5 .. 0xc3b5 missing
- 0x00,0x01,0x18,0x24,0x18,0x01, // ö (0xc3b6)
+ 0x00,0x00,0x01,0x18,0x24,0x18,0x01, // ö (0xc3b6)
// 0xc3b7 .. 0xc3bb missing
- 0x00,0x05,0x3C,0x20,0x1C,0x21 // ü (0xc3bc)
+ 0x00,0x00,0x05,0x3C,0x20,0x1C,0x21, // ü (0xc3bc)
+// 0xc3bd .. 0xee00 missing
+ 0x00,0x38,0x7D,0x39,0x79,0x34,0x39, // Lok1 (0xee01)
+ 0x00,0x7F,0x39,0x7F,0x11,0x10,0x00, // Lok2 (0xee02)
+ 0x00,0x10,0x7F,0x39,0x7F,0x39,0x3F, // Waggon1 (0xee03)
+ 0x00,0x39,0x7F,0x39,0x7F,0x10,0x00 // Waggon2 (0xee04)
};
-static char16_t const skip_ranges[10][2] = {
+static char16_t const skip_ranges[11][2] = {
{0x0000, 0x001f},
{0x007f, 0x00af},
{0x00b1, 0xc2af},
@@ -133,7 +139,8 @@ static char16_t const skip_ranges[10][2] = {
{0xc39d, 0xc39e},
{0xc3a0, 0xc3a3},
{0xc3a5, 0xc3b5},
- {0xc3b7, 0xc3bb}
+ {0xc3b7, 0xc3bb},
+ {0xc3bd, 0xee00}
};
static int symbols_boundaries[SYMBOL_COUNT][2];