From 278a86951e77d48146c9c51d156af35b350f3cf7 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Mon, 29 Sep 2025 09:16:44 +0000 Subject: [PATCH] tools git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@66 b9cfdab3-6d41-4d17-bbe4-086880011989 --- GNUmakefile | 2 +- src/draw.c | 11 ++- src/font.c | 256 +++++++++++++++++++++++++-------------------------- tools/font.c | 61 ++++++++++++ 4 files changed, 196 insertions(+), 134 deletions(-) create mode 100644 tools/font.c diff --git a/GNUmakefile b/GNUmakefile index d222e09..fdc9003 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -62,7 +62,7 @@ lib: src/libMw$(SO) examples: $(EXAMPLES) format: - clang-format --verbose -i $(shell find src include examples -name "*.c" -or -name "*.h") + clang-format --verbose -i $(shell find src include examples tools -name "*.c" -or -name "*.h") src/libMw$(SO): $(L_OBJS) $(CC) $(L_LDFLAGS) -shared -o $@ $^ $(L_LIBS) diff --git a/src/draw.c b/src/draw.c index 887ba5d..8269149 100644 --- a/src/draw.c +++ b/src/draw.c @@ -118,20 +118,21 @@ void MwDrawFrame(MwWidget handle, MwRect* rect, MwLLColor color, int invert) { void MwDrawText(MwWidget handle, MwPoint* point, const char* text, MwLLColor color) { int i, x, y, sx, sy, sc = 1; + int fw = 7, fh = 14; MwRect r; - sx = point->x - strlen(text) * 8 * sc / 2; - sy = point->y - 16 * sc / 2; + sx = point->x - strlen(text) * fw * sc / 2; + sy = point->y - fh * sc / 2; for(i = 0; text[i] != 0; i++) { - for(y = 0; y < 16; y++) { - for(x = 0; x < 8; x++) { + for(y = 0; y < fh; y++) { + for(x = 0; x < fw; x++) { r.x = sx + x * sc; r.y = sy + y * sc; r.width = sc; r.height = sc; - if(MwFontData[(unsigned char)text[i]].data[y] & (1 << (7 - x))) { + if(MwFontData[(unsigned char)text[i]].data[y] & (1 << ((fw - 1) - x))) { MwDrawRect(handle, &r, color); } } diff --git a/src/font.c b/src/font.c index 99f544e..637be6c 100644 --- a/src/font.c +++ b/src/font.c @@ -2,132 +2,132 @@ #include MwFont MwFontData[] = { - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 0 */ - {0, 14, {16, 16, 56, 56, 124, 124, 254, 254, 124, 124, 56, 56, 16, 16, 0, 0}}, /* 1 */ - {0, 14, {146, 146, 68, 68, 146, 146, 68, 68, 146, 146, 68, 68, 146, 146, 0, 0}}, /* 2 */ - {0, 14, {0, 136, 136, 136, 248, 136, 136, 136, 0, 62, 8, 8, 8, 8, 8, 8}}, /* 3 */ - {0, 14, {0, 248, 128, 128, 240, 128, 128, 128, 62, 32, 32, 60, 32, 32, 32, 0}}, /* 4 */ - {0, 14, {0, 112, 136, 128, 128, 128, 136, 112, 0, 60, 34, 34, 60, 40, 36, 34}}, /* 5 */ - {0, 14, {0, 128, 128, 128, 128, 128, 128, 248, 0, 62, 32, 32, 60, 32, 32, 32}}, /* 6 */ - {0, 14, {0, 0, 56, 68, 68, 68, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */ - {0, 14, {0, 0, 16, 16, 16, 16, 254, 16, 16, 16, 16, 0, 254, 0, 0, 0}}, /* 8 */ - {0, 14, {0, 132, 196, 164, 164, 148, 148, 140, 132, 32, 32, 32, 32, 32, 32, 62}}, /* 9 */ - {0, 14, {0, 0, 136, 136, 136, 80, 80, 32, 0, 62, 8, 8, 8, 8, 8, 0}}, /* 10 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 240, 0, 0, 0, 0, 0, 0, 0}}, /* 11 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 240, 16, 16, 16, 16, 16, 16, 16}}, /* 12 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 31, 16, 16, 16, 16, 16, 16, 16}}, /* 13 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 31, 0, 0, 0, 0, 0, 0, 0}}, /* 14 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 255, 16, 16, 16, 16, 16, 16, 16}}, /* 15 */ - {0, 14, {0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 16 */ - {0, 14, {0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 17 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0}}, /* 18 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0}}, /* 19 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0}}, /* 20 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 31, 16, 16, 16, 16, 16, 16, 16}}, /* 21 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 240, 16, 16, 16, 16, 16, 16, 16}}, /* 22 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 255, 0, 0, 0, 0, 0, 0, 0}}, /* 23 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 255, 16, 16, 16, 16, 16, 16, 16}}, /* 24 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}}, /* 25 */ - {0, 14, {0, 0, 0, 0, 2, 12, 48, 192, 48, 12, 2, 254, 0, 254, 0, 0}}, /* 26 */ - {0, 14, {0, 0, 0, 0, 128, 96, 24, 6, 24, 96, 128, 254, 0, 254, 0, 0}}, /* 27 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 254, 36, 36, 36, 36, 68, 132, 0, 0}}, /* 28 */ - {0, 14, {0, 0, 0, 0, 2, 4, 8, 254, 16, 254, 32, 64, 128, 0, 0, 0}}, /* 29 */ - {0, 14, {0, 0, 0, 0, 12, 18, 16, 16, 16, 124, 16, 16, 60, 82, 32, 0}}, /* 30 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0}}, /* 31 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 32 */ - {0, 14, {0, 56, 56, 56, 56, 56, 56, 16, 16, 16, 16, 0, 0, 16, 56, 16}}, /* 33 */ - {0, 14, {108, 108, 36, 36, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 34 */ - {0, 14, {0, 18, 18, 18, 127, 36, 36, 36, 36, 36, 254, 72, 72, 72, 72, 0}}, /* 35 */ - {0, 14, {16, 56, 84, 146, 150, 144, 80, 56, 20, 18, 210, 146, 148, 120, 16, 16}}, /* 36 */ - {0, 14, {2, 98, 148, 148, 148, 152, 104, 16, 16, 44, 50, 82, 82, 82, 140, 128}}, /* 37 */ - {0, 14, {0, 48, 72, 72, 72, 80, 32, 46, 84, 84, 148, 136, 140, 114, 0, 0}}, /* 38 */ - {0, 14, {224, 224, 32, 32, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 39 */ - {0, 14, {2, 4, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 8, 8, 4, 2}}, /* 40 */ - {0, 14, {128, 64, 32, 32, 16, 16, 16, 16, 16, 16, 16, 16, 32, 32, 64, 128}}, /* 41 */ - {0, 14, {0, 0, 0, 16, 56, 146, 214, 56, 214, 146, 56, 16, 0, 0, 0, 0}}, /* 42 */ - {0, 14, {0, 0, 0, 16, 16, 16, 16, 254, 16, 16, 16, 16, 0, 0, 0, 0}}, /* 43 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 32, 32, 192}}, /* 44 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 45 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 224, 224, 64, 0}}, /* 46 */ - {0, 14, {2, 2, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 64, 64, 128, 128}}, /* 47 */ - {0, 14, {0, 24, 36, 36, 66, 66, 66, 66, 66, 66, 66, 66, 36, 36, 24, 0}}, /* 48 */ - {0, 14, {0, 16, 112, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 124, 0, 0}}, /* 49 */ - {0, 14, {0, 24, 36, 66, 98, 2, 4, 8, 8, 16, 32, 34, 66, 126, 0, 0}}, /* 50 */ - {0, 14, {0, 56, 68, 130, 130, 2, 4, 56, 4, 2, 130, 130, 68, 56, 0, 0}}, /* 51 */ - {0, 14, {0, 8, 24, 40, 40, 72, 72, 136, 136, 254, 8, 8, 8, 60, 0, 0}}, /* 52 */ - {0, 14, {0, 252, 128, 128, 128, 184, 196, 130, 2, 2, 194, 130, 68, 56, 0, 0}}, /* 53 */ - {0, 14, {0, 60, 66, 70, 128, 128, 184, 196, 130, 130, 130, 130, 68, 56, 0, 0}}, /* 54 */ - {0, 14, {0, 254, 130, 130, 4, 4, 4, 8, 8, 8, 8, 16, 16, 16, 16, 0}}, /* 55 */ - {0, 14, {0, 56, 68, 130, 130, 130, 68, 56, 68, 130, 130, 130, 68, 56, 0, 0}}, /* 56 */ - {0, 14, {0, 56, 68, 130, 130, 130, 130, 70, 58, 2, 2, 130, 68, 56, 0, 0}}, /* 57 */ - {0, 14, {0, 0, 0, 0, 0, 56, 56, 0, 0, 0, 0, 0, 56, 56, 0, 0}}, /* 58 */ - {0, 14, {0, 0, 0, 0, 0, 56, 56, 0, 0, 0, 0, 56, 56, 24, 16, 48}}, /* 59 */ - {0, 14, {2, 4, 4, 8, 8, 16, 16, 32, 32, 16, 16, 8, 8, 4, 4, 2}}, /* 60 */ - {0, 14, {0, 0, 0, 0, 0, 254, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0}}, /* 61 */ - {0, 14, {128, 64, 64, 32, 32, 16, 16, 8, 8, 16, 16, 32, 32, 64, 64, 128}}, /* 62 */ - {0, 14, {0, 56, 68, 130, 194, 2, 4, 4, 8, 16, 16, 0, 0, 16, 56, 16}}, /* 63 */ - {0, 14, {0, 60, 66, 130, 154, 166, 162, 162, 162, 166, 154, 128, 66, 60, 0, 0}}, /* 64 */ - {0, 14, {0, 16, 40, 40, 40, 68, 68, 68, 68, 124, 130, 130, 130, 198, 0, 0}}, /* 65 */ - {0, 14, {0, 248, 68, 66, 66, 66, 68, 120, 68, 66, 66, 66, 66, 252, 0, 0}}, /* 66 */ - {0, 14, {0, 58, 70, 66, 128, 128, 128, 128, 128, 128, 130, 66, 66, 60, 0, 0}}, /* 67 */ - {0, 14, {0, 248, 68, 68, 66, 66, 66, 66, 66, 66, 66, 68, 68, 248, 0, 0}}, /* 68 */ - {0, 14, {0, 254, 66, 66, 64, 72, 72, 120, 72, 72, 66, 66, 66, 254, 0, 0}}, /* 69 */ - {0, 14, {0, 254, 66, 66, 64, 72, 72, 120, 72, 72, 64, 64, 64, 240, 0, 0}}, /* 70 */ - {0, 14, {0, 26, 38, 66, 64, 128, 128, 143, 130, 130, 130, 66, 102, 26, 0, 0}}, /* 71 */ - {0, 14, {0, 231, 66, 66, 66, 66, 126, 66, 66, 66, 66, 66, 66, 231, 0, 0}}, /* 72 */ - {0, 14, {0, 254, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 254, 0, 0}}, /* 73 */ - {0, 14, {0, 31, 2, 2, 2, 2, 2, 2, 2, 130, 130, 130, 68, 56, 0, 0}}, /* 74 */ - {0, 14, {0, 230, 68, 68, 72, 72, 112, 80, 72, 72, 68, 68, 66, 227, 0, 0}}, /* 75 */ - {0, 14, {0, 240, 64, 64, 64, 64, 64, 64, 64, 64, 66, 66, 66, 254, 0, 0}}, /* 76 */ - {0, 14, {0, 130, 198, 170, 170, 170, 146, 146, 146, 130, 130, 130, 130, 198, 0, 0}}, /* 77 */ - {0, 14, {0, 135, 194, 162, 162, 162, 146, 146, 146, 138, 138, 138, 134, 194, 0, 0}}, /* 78 */ - {0, 14, {0, 56, 68, 130, 130, 130, 130, 130, 130, 130, 130, 130, 68, 56, 0, 0}}, /* 79 */ - {0, 14, {0, 248, 68, 66, 66, 66, 66, 68, 120, 64, 64, 64, 64, 240, 0, 0}}, /* 80 */ - {0, 14, {0, 56, 68, 68, 130, 130, 130, 130, 130, 130, 186, 68, 68, 56, 8, 6}}, /* 81 */ - {0, 14, {0, 248, 68, 66, 66, 66, 68, 120, 72, 68, 68, 68, 66, 227, 0, 0}}, /* 82 */ - {0, 14, {0, 52, 76, 132, 128, 128, 96, 24, 4, 130, 130, 130, 196, 184, 0, 0}}, /* 83 */ - {0, 14, {0, 254, 146, 146, 16, 16, 16, 16, 16, 16, 16, 16, 16, 124, 0, 0}}, /* 84 */ - {0, 14, {0, 231, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 85 */ - {0, 14, {0, 198, 130, 130, 130, 130, 68, 68, 68, 68, 40, 40, 16, 16, 0, 0}}, /* 86 */ - {0, 14, {0, 198, 130, 130, 130, 146, 146, 146, 170, 170, 170, 68, 68, 68, 0, 0}}, /* 87 */ - {0, 14, {0, 238, 68, 68, 40, 40, 16, 40, 40, 40, 68, 68, 130, 198, 0, 0}}, /* 88 */ - {0, 14, {0, 198, 130, 68, 68, 68, 40, 40, 16, 16, 16, 16, 16, 124, 0, 0}}, /* 89 */ - {0, 14, {0, 254, 132, 136, 8, 16, 16, 16, 32, 32, 66, 66, 130, 254, 0, 0}}, /* 90 */ - {0, 14, {30, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 30}}, /* 91 */ - {0, 14, {0, 128, 128, 64, 64, 32, 32, 16, 16, 8, 8, 4, 4, 2, 2, 0}}, /* 92 */ - {0, 14, {240, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 240}}, /* 93 */ - {0, 14, {16, 40, 68, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 94 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254}}, /* 95 */ - {0, 14, {48, 48, 32, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 96 */ - {0, 14, {0, 0, 0, 0, 0, 60, 66, 2, 62, 66, 130, 130, 134, 123, 0, 0}}, /* 97 */ - {0, 14, {0, 192, 64, 64, 64, 120, 68, 66, 66, 66, 66, 66, 68, 120, 0, 0}}, /* 98 */ - {0, 14, {0, 0, 0, 0, 0, 58, 70, 130, 128, 128, 128, 130, 66, 60, 0, 0}}, /* 99 */ - {0, 14, {0, 6, 4, 4, 4, 60, 68, 132, 132, 132, 132, 132, 68, 62, 0, 0}}, /* 100 */ - {0, 14, {0, 0, 0, 0, 0, 56, 68, 130, 254, 128, 128, 130, 66, 60, 0, 0}}, /* 101 */ - {0, 14, {0, 14, 17, 16, 16, 254, 16, 16, 16, 16, 16, 16, 16, 124, 0, 0}}, /* 102 */ - {0, 14, {0, 0, 0, 0, 0, 59, 68, 68, 68, 56, 64, 120, 132, 130, 130, 124}}, /* 103 */ - {0, 14, {0, 192, 64, 64, 64, 92, 98, 66, 66, 66, 66, 66, 66, 231, 0, 0}}, /* 104 */ - {0, 14, {24, 24, 0, 0, 0, 120, 8, 8, 8, 8, 8, 8, 8, 255, 0, 0}}, /* 105 */ - {0, 14, {6, 6, 0, 0, 0, 62, 2, 2, 2, 2, 2, 2, 130, 130, 68, 56}}, /* 106 */ - {0, 14, {0, 192, 64, 64, 64, 66, 68, 72, 88, 100, 68, 66, 66, 227, 0, 0}}, /* 107 */ - {0, 14, {0, 120, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 255, 0, 0}}, /* 108 */ - {0, 14, {0, 0, 0, 0, 0, 108, 146, 146, 146, 146, 146, 146, 146, 219, 0, 0}}, /* 109 */ - {0, 14, {0, 0, 0, 0, 0, 220, 98, 66, 66, 66, 66, 66, 66, 231, 0, 0}}, /* 110 */ - {0, 14, {0, 0, 0, 0, 0, 56, 68, 130, 130, 130, 130, 130, 68, 56, 0, 0}}, /* 111 */ - {0, 14, {0, 0, 0, 0, 0, 248, 68, 66, 66, 66, 66, 68, 120, 64, 64, 240}}, /* 112 */ - {0, 14, {0, 0, 0, 0, 0, 62, 68, 132, 132, 132, 132, 68, 60, 4, 4, 30}}, /* 113 */ - {0, 14, {0, 0, 0, 0, 0, 236, 50, 34, 32, 32, 32, 32, 32, 252, 0, 0}}, /* 114 */ - {0, 14, {0, 0, 0, 0, 0, 58, 70, 66, 64, 60, 2, 130, 194, 188, 0, 0}}, /* 115 */ - {0, 14, {0, 0, 32, 32, 32, 252, 32, 32, 32, 32, 32, 34, 34, 28, 0, 0}}, /* 116 */ - {0, 14, {0, 0, 0, 0, 0, 198, 66, 66, 66, 66, 66, 66, 70, 57, 0, 0}}, /* 117 */ - {0, 14, {0, 0, 0, 0, 0, 198, 130, 130, 68, 68, 68, 40, 40, 16, 0, 0}}, /* 118 */ - {0, 14, {0, 0, 0, 0, 0, 146, 146, 146, 146, 170, 170, 68, 68, 68, 0, 0}}, /* 119 */ - {0, 14, {0, 0, 0, 0, 0, 238, 68, 40, 40, 16, 40, 40, 68, 238, 0, 0}}, /* 120 */ - {0, 14, {0, 0, 0, 0, 0, 231, 66, 34, 36, 20, 8, 8, 16, 144, 160, 64}}, /* 121 */ - {0, 14, {0, 0, 0, 0, 0, 126, 68, 8, 8, 16, 16, 34, 66, 254, 0, 0}}, /* 122 */ - {0, 14, {6, 8, 8, 8, 8, 8, 16, 32, 16, 8, 8, 8, 8, 8, 8, 6}}, /* 123 */ - {0, 14, {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}}, /* 124 */ - {0, 14, {192, 32, 32, 32, 32, 32, 16, 8, 16, 32, 32, 32, 32, 32, 32, 192}}, /* 125 */ - {0, 14, {96, 146, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 126 */ - {0, 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}} /* 127 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 0 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 1 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 2 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 3 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 4 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 5 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 6 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 7 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 8 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 9 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 10 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 11 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 12 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 13 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 14 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 15 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 16 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 17 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 18 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 19 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 20 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 21 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 22 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 23 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 24 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 25 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 26 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 27 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 28 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 29 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 30 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}}, /* 31 */ + {0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 32 */ + {0, 12, {0, 0, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 0, 0}}, /* 33 */ + {0, 12, {0, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 34 */ + {0, 12, {0, 0, 20, 20, 20, 62, 20, 20, 62, 20, 20, 20, 0, 0}}, /* 35 */ + {0, 12, {0, 0, 8, 60, 74, 74, 40, 28, 10, 74, 74, 60, 8, 0}}, /* 36 */ + {0, 12, {0, 0, 50, 74, 76, 56, 8, 16, 28, 50, 82, 76, 0, 0}}, /* 37 */ + {0, 12, {0, 0, 24, 36, 36, 36, 24, 50, 74, 68, 76, 50, 0, 0}}, /* 38 */ + {0, 12, {0, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 39 */ + {0, 12, {0, 2, 4, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2}}, /* 40 */ + {0, 12, {0, 32, 16, 8, 8, 4, 4, 4, 4, 4, 8, 8, 16, 32}}, /* 41 */ + {0, 12, {0, 0, 0, 0, 8, 42, 28, 8, 28, 42, 8, 0, 0, 0}}, /* 42 */ + {0, 12, {0, 0, 0, 0, 8, 8, 8, 62, 8, 8, 8, 0, 0, 0}}, /* 43 */ + {0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8, 8, 16}}, /* 44 */ + {0, 12, {0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0}}, /* 45 */ + {0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 28, 8, 0}}, /* 46 */ + {0, 12, {0, 2, 2, 4, 4, 8, 8, 8, 16, 16, 32, 32, 64, 64}}, /* 47 */ + {0, 12, {0, 0, 24, 36, 66, 66, 66, 66, 66, 66, 36, 24, 0, 0}}, /* 48 */ + {0, 12, {0, 0, 8, 24, 40, 8, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 49 */ + {0, 12, {0, 0, 60, 66, 66, 2, 4, 4, 8, 16, 32, 126, 0, 0}}, /* 50 */ + {0, 12, {0, 0, 126, 2, 4, 8, 28, 2, 2, 66, 66, 60, 0, 0}}, /* 51 */ + {0, 12, {0, 0, 4, 12, 20, 20, 36, 36, 68, 126, 4, 4, 0, 0}}, /* 52 */ + {0, 12, {0, 0, 126, 64, 64, 124, 66, 2, 2, 66, 66, 60, 0, 0}}, /* 53 */ + {0, 12, {0, 0, 28, 32, 64, 64, 92, 98, 66, 66, 66, 60, 0, 0}}, /* 54 */ + {0, 12, {0, 0, 126, 2, 4, 4, 8, 8, 16, 16, 32, 32, 0, 0}}, /* 55 */ + {0, 12, {0, 0, 60, 66, 66, 36, 24, 36, 66, 66, 66, 60, 0, 0}}, /* 56 */ + {0, 12, {0, 0, 60, 66, 66, 66, 70, 58, 2, 66, 68, 56, 0, 0}}, /* 57 */ + {0, 12, {0, 0, 0, 0, 8, 28, 8, 0, 0, 8, 28, 8, 0, 0}}, /* 58 */ + {0, 12, {0, 0, 0, 0, 0, 24, 24, 0, 0, 24, 8, 8, 16, 0}}, /* 59 */ + {0, 12, {0, 0, 0, 2, 4, 8, 16, 32, 16, 8, 4, 2, 0, 0}}, /* 60 */ + {0, 12, {0, 0, 0, 0, 0, 126, 0, 0, 126, 0, 0, 0, 0, 0}}, /* 61 */ + {0, 12, {0, 0, 0, 32, 16, 8, 4, 2, 4, 8, 16, 32, 0, 0}}, /* 62 */ + {0, 12, {0, 0, 60, 66, 66, 4, 8, 8, 8, 0, 8, 8, 0, 0}}, /* 63 */ + {0, 12, {0, 0, 28, 34, 78, 82, 82, 82, 82, 78, 32, 30, 0, 0}}, /* 64 */ + {0, 12, {0, 0, 24, 36, 66, 66, 66, 126, 66, 66, 66, 66, 0, 0}}, /* 65 */ + {0, 12, {0, 0, 120, 68, 66, 68, 120, 68, 66, 66, 68, 120, 0, 0}}, /* 66 */ + {0, 12, {0, 0, 60, 66, 66, 64, 64, 64, 64, 66, 66, 60, 0, 0}}, /* 67 */ + {0, 12, {0, 0, 120, 68, 66, 66, 66, 66, 66, 66, 68, 120, 0, 0}}, /* 68 */ + {0, 12, {0, 0, 126, 64, 64, 64, 120, 64, 64, 64, 64, 126, 0, 0}}, /* 69 */ + {0, 12, {0, 0, 126, 64, 64, 64, 120, 64, 64, 64, 64, 64, 0, 0}}, /* 70 */ + {0, 12, {0, 0, 60, 66, 66, 64, 64, 78, 66, 66, 70, 58, 0, 0}}, /* 71 */ + {0, 12, {0, 0, 66, 66, 66, 66, 126, 66, 66, 66, 66, 66, 0, 0}}, /* 72 */ + {0, 12, {0, 0, 62, 8, 8, 8, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 73 */ + {0, 12, {0, 0, 14, 4, 4, 4, 4, 4, 4, 68, 68, 56, 0, 0}}, /* 74 */ + {0, 12, {0, 0, 66, 68, 72, 80, 96, 80, 72, 68, 66, 66, 0, 0}}, /* 75 */ + {0, 12, {0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 126, 0, 0}}, /* 76 */ + {0, 12, {0, 0, 66, 102, 102, 90, 90, 66, 66, 66, 66, 66, 0, 0}}, /* 77 */ + {0, 12, {0, 0, 66, 66, 98, 98, 82, 74, 70, 70, 66, 66, 0, 0}}, /* 78 */ + {0, 12, {0, 0, 60, 66, 66, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 79 */ + {0, 12, {0, 0, 124, 66, 66, 66, 66, 124, 64, 64, 64, 64, 0, 0}}, /* 80 */ + {0, 12, {0, 0, 60, 66, 66, 66, 66, 66, 114, 74, 70, 60, 4, 2}}, /* 81 */ + {0, 12, {0, 0, 124, 66, 66, 66, 66, 124, 72, 68, 66, 66, 0, 0}}, /* 82 */ + {0, 12, {0, 0, 60, 66, 66, 64, 48, 12, 2, 66, 66, 60, 0, 0}}, /* 83 */ + {0, 12, {0, 0, 127, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 84 */ + {0, 12, {0, 0, 66, 66, 66, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 85 */ + {0, 12, {0, 0, 66, 66, 66, 66, 36, 36, 36, 24, 24, 24, 0, 0}}, /* 86 */ + {0, 12, {0, 0, 34, 34, 34, 34, 34, 34, 42, 42, 42, 20, 0, 0}}, /* 87 */ + {0, 12, {0, 0, 66, 66, 36, 36, 24, 24, 36, 36, 66, 66, 0, 0}}, /* 88 */ + {0, 12, {0, 0, 34, 34, 34, 20, 20, 8, 8, 8, 8, 8, 0, 0}}, /* 89 */ + {0, 12, {0, 0, 126, 2, 4, 8, 8, 16, 32, 32, 64, 126, 0, 0}}, /* 90 */ + {0, 12, {0, 30, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 30}}, /* 91 */ + {0, 12, {0, 64, 64, 32, 32, 16, 16, 16, 8, 8, 4, 4, 2, 2}}, /* 92 */ + {0, 12, {0, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 60}}, /* 93 */ + {0, 12, {0, 24, 36, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 94 */ + {0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126}}, /* 95 */ + {0, 12, {0, 16, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 96 */ + {0, 12, {0, 0, 0, 0, 0, 60, 66, 2, 62, 66, 66, 62, 0, 0}}, /* 97 */ + {0, 12, {0, 0, 64, 64, 64, 92, 98, 66, 66, 66, 98, 92, 0, 0}}, /* 98 */ + {0, 12, {0, 0, 0, 0, 0, 60, 66, 64, 64, 64, 66, 60, 0, 0}}, /* 99 */ + {0, 12, {0, 0, 2, 2, 2, 58, 70, 66, 66, 66, 70, 58, 0, 0}}, /* 100 */ + {0, 12, {0, 0, 0, 0, 0, 60, 66, 66, 126, 64, 66, 60, 0, 0}}, /* 101 */ + {0, 12, {0, 0, 12, 18, 16, 16, 124, 16, 16, 16, 16, 16, 0, 0}}, /* 102 */ + {0, 12, {0, 0, 0, 0, 0, 58, 68, 68, 68, 56, 32, 92, 66, 60}}, /* 103 */ + {0, 12, {0, 0, 64, 64, 64, 92, 98, 66, 66, 66, 66, 66, 0, 0}}, /* 104 */ + {0, 12, {0, 0, 8, 8, 0, 24, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 105 */ + {0, 12, {0, 0, 2, 2, 0, 6, 2, 2, 2, 2, 2, 34, 34, 28}}, /* 106 */ + {0, 12, {0, 0, 64, 64, 64, 68, 72, 80, 112, 72, 68, 66, 0, 0}}, /* 107 */ + {0, 12, {0, 0, 24, 8, 8, 8, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 108 */ + {0, 12, {0, 0, 0, 0, 0, 52, 42, 42, 42, 42, 42, 34, 0, 0}}, /* 109 */ + {0, 12, {0, 0, 0, 0, 0, 92, 98, 66, 66, 66, 66, 66, 0, 0}}, /* 110 */ + {0, 12, {0, 0, 0, 0, 0, 60, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 111 */ + {0, 12, {0, 0, 0, 0, 0, 92, 98, 66, 66, 66, 98, 92, 64, 64}}, /* 112 */ + {0, 12, {0, 0, 0, 0, 0, 58, 70, 66, 66, 66, 70, 58, 2, 2}}, /* 113 */ + {0, 12, {0, 0, 0, 0, 0, 92, 98, 66, 64, 64, 64, 64, 0, 0}}, /* 114 */ + {0, 12, {0, 0, 0, 0, 0, 60, 66, 32, 24, 4, 66, 60, 0, 0}}, /* 115 */ + {0, 12, {0, 0, 16, 16, 16, 124, 16, 16, 16, 16, 18, 12, 0, 0}}, /* 116 */ + {0, 12, {0, 0, 0, 0, 0, 66, 66, 66, 66, 66, 70, 58, 0, 0}}, /* 117 */ + {0, 12, {0, 0, 0, 0, 0, 34, 34, 34, 20, 20, 8, 8, 0, 0}}, /* 118 */ + {0, 12, {0, 0, 0, 0, 0, 34, 34, 42, 42, 42, 42, 20, 0, 0}}, /* 119 */ + {0, 12, {0, 0, 0, 0, 0, 66, 66, 36, 24, 36, 66, 66, 0, 0}}, /* 120 */ + {0, 12, {0, 0, 0, 0, 0, 66, 66, 66, 66, 70, 58, 2, 66, 60}}, /* 121 */ + {0, 12, {0, 0, 0, 0, 0, 126, 4, 8, 16, 16, 32, 126, 0, 0}}, /* 122 */ + {0, 12, {0, 6, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 6}}, /* 123 */ + {0, 12, {0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}}, /* 124 */ + {0, 12, {0, 48, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 48}}, /* 125 */ + {0, 12, {0, 32, 82, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 126 */ + {0, 12, {0, 90, 66, 0, 66, 66, 0, 66, 66, 0, 66, 90, 0, 0}} /* 127 */ }; diff --git a/tools/font.c b/tools/font.c new file mode 100644 index 0000000..bd8e5ce --- /dev/null +++ b/tools/font.c @@ -0,0 +1,61 @@ +/* $Id$ */ +#include +#include FT_FREETYPE_H +#include FT_BITMAP_H + +#include +#include + +int main(int argc, char** argv) { + FT_Library lib; + FT_Face face; + int i; + int ay = 0; + int ax = 0; + int sy = 0; + int sx = 0; + + FT_Init_FreeType(&lib); + if(FT_New_Face(lib, argv[1], 0, &face)) { + fprintf(stderr, "bad 1\n"); + return 1; + } + + if(FT_Set_Pixel_Sizes(face, 0, atoi(argv[2]))) { + fprintf(stderr, "bad 2\n"); + return 1; + } + + printf("/* $Id$ */\n"); + printf("#include \n"); + printf("\n"); + printf("MwFont MwFontData[] = {\n"); + for(i = 0; i < 0x80; i++) { + int y, x; + FT_Bitmap bitmap; + unsigned char n; + if(FT_Load_Char(face, i, FT_LOAD_RENDER | FT_LOAD_COLOR)) { + continue; + } + + FT_Bitmap_Init(&bitmap); + FT_Bitmap_Convert(lib, &face->glyph->bitmap, &bitmap, 1); + + printf("\t{%d, %d, {", face->glyph->bitmap_left, face->glyph->bitmap_top); + for(y = 0; y < bitmap.rows; y++) { + n = 0; + for(x = 0; x < bitmap.width; x++) { + unsigned char b = bitmap.buffer[bitmap.width * y + x] ? 1 : 0; + n = n << 1; + n = n | b; + } + printf("%d%s", n, y == (bitmap.rows - 1) ? "" : ", "); + } + printf("}}%s /* %d */\n", i == (0x80 - 1) ? "" : ", ", i); + + FT_Bitmap_Done(lib, &bitmap); + + sx += face->glyph->advance.x >> 6; + } + printf("};\n"); +}