From a51147d238c654188c9bb5748f2a82e32f020f4a Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Sat, 20 Jul 2013 23:28:52 +0200
Subject: Initial commit
---
nokia-big.c | 111 ++++
nokia-big.txt | 1431 ++++++++++++++++++++++++++++++++++++++++++++++++++
nokia-font.png | Bin 0 -> 3813 bytes
nokia-menu.c | 22 +
nokia-menu.txt | 94 ++++
nokia-small-bold.c | 111 ++++
nokia-small-bold.txt | 921 ++++++++++++++++++++++++++++++++
nokia-small.c | 111 ++++
nokia-small.txt | 921 ++++++++++++++++++++++++++++++++
xform.c | 146 +++++
10 files changed, 3868 insertions(+)
create mode 100644 nokia-big.c
create mode 100644 nokia-big.txt
create mode 100644 nokia-font.png
create mode 100644 nokia-menu.c
create mode 100644 nokia-menu.txt
create mode 100644 nokia-small-bold.c
create mode 100644 nokia-small-bold.txt
create mode 100644 nokia-small.c
create mode 100644 nokia-small.txt
create mode 100644 xform.c
diff --git a/nokia-big.c b/nokia-big.c
new file mode 100644
index 0000000..68cefc7
--- /dev/null
+++ b/nokia-big.c
@@ -0,0 +1,111 @@
+struct
+{
+ int width;
+ int advance;
+ int rows[13];
+}
+font_data[] =
+{
+ { 3, 4, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // space
+ { 2, 3, { 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // !
+ { 6, 7, { 0x4800, 0x4800, 0x4800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // "
+ { 7, 8, { 0x0000, 0x0000, 0x6c00, 0x6c00, 0x6c00, 0xfe00, 0x6c00, 0xfe00, 0x6c00, 0x6c00, 0x6c00, 0x0000, 0x0000 } }, // #
+ { 7, 8, { 0x1000, 0x7c00, 0xd600, 0xd000, 0xd000, 0x7c00, 0x1600, 0x1600, 0x1600, 0xd600, 0x7c00, 0x1000, 0x1000 } }, // $
+ { 7, 8, { 0x4600, 0xa400, 0xac00, 0x4800, 0x1800, 0x1000, 0x3000, 0x2400, 0x6a00, 0x4a00, 0xc400, 0x0000, 0x0000 } }, // %
+ { 8, 9, { 0x7000, 0xd800, 0xd800, 0xd800, 0xd800, 0x7200, 0xf600, 0xdc00, 0xcc00, 0xde00, 0x7300, 0x0000, 0x0000 } }, // &
+ { 1, 2, { 0x8000, 0x8000, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // '
+ { 3, 4, { 0x2000, 0x6000, 0x4000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x4000, 0x6000, 0x2000 } }, // (
+ { 3, 4, { 0x8000, 0xc000, 0x4000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x4000, 0xc000, 0x8000 } }, // )
+ { 7, 8, { 0x0000, 0x0000, 0x0000, 0x4400, 0x6c00, 0x3800, 0xfe00, 0x3800, 0x6c00, 0x4400, 0x0000, 0x0000, 0x0000 } }, // *
+ { 7, 8, { 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x1800, 0x7e00, 0x1800, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000 } }, // +
+ { 3, 4, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0xc000, 0x0000 } }, // ,
+ { 5, 6, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf800, 0xf800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // -
+ { 3, 4, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // .
+ { 5, 6, { 0x1800, 0x1800, 0x3000, 0x3000, 0x3000, 0x6000, 0x6000, 0x6000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // /
+ { 7, 8, { 0x7c00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0x7c00, 0x0000, 0x0000 } }, // 0
+ { 7, 8, { 0x1800, 0x3800, 0x7800, 0x5800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000, 0x0000 } }, // 1
+ { 7, 8, { 0x7c00, 0xc600, 0xc600, 0x0600, 0x0600, 0x1c00, 0x7000, 0xc000, 0xc000, 0xc000, 0xfe00, 0x0000, 0x0000 } }, // 2
+ { 7, 8, { 0x7c00, 0xc600, 0x0600, 0x0600, 0x3c00, 0x0600, 0x0600, 0x0600, 0x0600, 0xc600, 0x7c00, 0x0000, 0x0000 } }, // 3
+ { 7, 8, { 0x0400, 0x0c00, 0x1c00, 0x2c00, 0x4c00, 0xcc00, 0xcc00, 0xfe00, 0x0c00, 0x0c00, 0x0c00, 0x0000, 0x0000 } }, // 4
+ { 7, 8, { 0xfc00, 0xc000, 0xc000, 0xc000, 0xfc00, 0xc600, 0x0600, 0x0600, 0x0600, 0xc600, 0x7c00, 0x0000, 0x0000 } }, // 5
+ { 7, 8, { 0x7c00, 0xc600, 0xc000, 0xc000, 0xfc00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0x7c00, 0x0000, 0x0000 } }, // 6
+ { 7, 8, { 0xfe00, 0x0600, 0x0600, 0x0c00, 0x0c00, 0x1800, 0x1800, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000 } }, // 7
+ { 7, 8, { 0x7c00, 0xc600, 0xc600, 0xc600, 0x7c00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0x7c00, 0x0000, 0x0000 } }, // 8
+ { 7, 8, { 0x7c00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0x7e00, 0x0600, 0x0600, 0xc600, 0x7c00, 0x0000, 0x0000 } }, // 9
+ { 3, 4, { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x0000, 0x0000 } }, // :
+ { 3, 4, { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0xc000, 0x0000 } }, // ;
+ { 5, 6, { 0x0000, 0x0000, 0x0800, 0x1800, 0x3000, 0x6000, 0xc000, 0x6000, 0x3000, 0x1800, 0x0800, 0x0000, 0x0000 } }, // <
+ { 5, 6, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf800, 0x0000, 0x0000, 0xf800, 0x0000, 0x0000, 0x0000, 0x0000 } }, // =
+ { 5, 6, { 0x0000, 0x0000, 0x8000, 0xc000, 0x6000, 0x3000, 0x1800, 0x3000, 0x6000, 0xc000, 0x8000, 0x0000, 0x0000 } }, // >
+ { 6, 7, { 0x7800, 0x8c00, 0x8c00, 0x0c00, 0x0c00, 0x1800, 0x3000, 0x3000, 0x0000, 0x3000, 0x3000, 0x0000, 0x0000 } }, // ?
+ { 9, 10, { 0x0000, 0x3e00, 0x4100, 0x9480, 0xac80, 0xa480, 0xa480, 0xa500, 0x9a00, 0x4080, 0x3f00, 0x0000, 0x0000 } }, // @
+ { 7, 8, { 0x7c00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xfe00, 0xc600, 0xc600, 0xc600, 0x0000, 0x0000 } }, // A
+ { 7, 8, { 0xfc00, 0xc600, 0xc600, 0xc600, 0xf800, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xfc00, 0x0000, 0x0000 } }, // B
+ { 6, 7, { 0x7800, 0xcc00, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xcc00, 0x7800, 0x0000, 0x0000 } }, // C
+ { 7, 8, { 0xf800, 0xcc00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xcc00, 0xf800, 0x0000, 0x0000 } }, // D
+ { 7, 8, { 0xfe00, 0xc000, 0xc000, 0xc000, 0xf800, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xfe00, 0x0000, 0x0000 } }, // E
+ { 7, 8, { 0xfe00, 0xc000, 0xc000, 0xc000, 0xf800, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // F
+ { 7, 8, { 0x7c00, 0xc600, 0xc000, 0xc000, 0xc000, 0xce00, 0xc600, 0xc600, 0xc600, 0xc600, 0x7e00, 0x0000, 0x0000 } }, // G
+ { 7, 8, { 0xc600, 0xc600, 0xc600, 0xc600, 0xfe00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0x0000, 0x0000 } }, // H
+ { 2, 3, { 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // I
+ { 5, 6, { 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x9800, 0x7000, 0x0000, 0x0000 } }, // J
+ { 8, 9, { 0xc600, 0xcc00, 0xd800, 0xf000, 0xe000, 0xe000, 0xf000, 0xd800, 0xcc00, 0xc600, 0xc300, 0x0000, 0x0000 } }, // K
+ { 6, 7, { 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xfc00, 0x0000, 0x0000 } }, // L
+ { 9, 10, { 0x8080, 0xc180, 0xe380, 0xf780, 0xdd80, 0xc980, 0xc180, 0xc180, 0xc180, 0xc180, 0xc180, 0x0000, 0x0000 } }, // M
+ { 7, 8, { 0xc600, 0xc600, 0xe600, 0xe600, 0xf600, 0xd600, 0xde00, 0xce00, 0xce00, 0xc600, 0xc600, 0x0000, 0x0000 } }, // N
+ { 8, 9, { 0x7e00, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0x7e00, 0x0000, 0x0000 } }, // O
+ { 7, 8, { 0xfc00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xfc00, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // P
+ { 8, 9, { 0x7e00, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xd300, 0xdb00, 0x7e00, 0x0600, 0x0000 } }, // Q
+ { 8, 8, { 0xfc00, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xfc00, 0xd800, 0xcc00, 0xc600, 0xc300, 0x0000, 0x0000 } }, // R
+ { 6, 7, { 0x7800, 0xcc00, 0xc000, 0xc000, 0xc000, 0x7800, 0x0c00, 0x0c00, 0x0c00, 0xcc00, 0x7800, 0x0000, 0x0000 } }, // S
+ { 6, 7, { 0xfc00, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000 } }, // T
+ { 7, 8, { 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0xc600, 0x7c00, 0x0000, 0x0000 } }, // U
+ { 8, 9, { 0xc300, 0xc300, 0xc300, 0xc300, 0x6600, 0x6600, 0x6600, 0x2400, 0x3c00, 0x1800, 0x1800, 0x0000, 0x0000 } }, // V
+ { 10, 11, { 0xc0c0, 0xc0c0, 0xc0c0, 0xc0c0, 0x6180, 0x6d80, 0x6d80, 0x6d80, 0x3f00, 0x3300, 0x3300, 0x0000, 0x0000 } }, // W
+ { 7, 8, { 0xc600, 0xc600, 0xc600, 0x6c00, 0x6c00, 0x3800, 0x6c00, 0x6c00, 0xc600, 0xc600, 0xc600, 0x0000, 0x0000 } }, // X
+ { 8, 9, { 0xc300, 0xc300, 0x6600, 0x6600, 0x3c00, 0x3c00, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000, 0x0000 } }, // Y
+ { 7, 8, { 0xfe00, 0x0600, 0x0e00, 0x1c00, 0x3800, 0x7000, 0xe000, 0xc000, 0xc000, 0xc000, 0xfe00, 0x0000, 0x0000 } }, // Z
+ { 4, 5, { 0xf000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xf000 } }, // [
+ { 5, 6, { 0xc000, 0xc000, 0x6000, 0x6000, 0x6000, 0x3000, 0x3000, 0x3000, 0x1800, 0x1800, 0x1800, 0x0000, 0x0000 } }, // backslash
+ { 4, 5, { 0xf000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0xf000 } }, // ]
+ { 5, 6, { 0x2000, 0x7000, 0xd800, 0x8800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // ^
+ { 8, 8, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff00, 0x0000 } }, // _
+ { 3, 4, { 0x8000, 0x4000, 0x2000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // `
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0x7800, 0x0c00, 0x0c00, 0x7c00, 0xcc00, 0xcc00, 0xcc00, 0x7c00, 0x0000, 0x0000 } }, // a
+ { 6, 7, { 0xc000, 0xc000, 0xc000, 0xf800, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xf800, 0x0000, 0x0000 } }, // b
+ { 5, 6, { 0x0000, 0x0000, 0x0000, 0x7000, 0xc800, 0xc000, 0xc000, 0xc000, 0xc000, 0xc800, 0x7000, 0x0000, 0x0000 } }, // c
+ { 6, 7, { 0x0c00, 0x0c00, 0x0c00, 0x7c00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x7c00, 0x0000, 0x0000 } }, // d
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0x7800, 0xcc00, 0xcc00, 0xfc00, 0xc000, 0xc000, 0xc400, 0x7800, 0x0000, 0x0000 } }, // e
+ { 4, 5, { 0x3000, 0x6000, 0x6000, 0xf000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x0000, 0x0000 } }, // f
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0x7c00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x7c00, 0x0c00, 0x7800 } }, // g
+ { 6, 7, { 0xc000, 0xc000, 0xc000, 0xf800, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x0000, 0x0000 } }, // h
+ { 2, 3, { 0xc000, 0xc000, 0x0000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // i
+ { 3, 4, { 0x6000, 0x6000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0xc000 } }, // j
+ { 6, 7, { 0xc000, 0xc000, 0xc000, 0xcc00, 0xd800, 0xf000, 0xe000, 0xe000, 0xf000, 0xd800, 0xcc00, 0x0000, 0x0000 } }, // k
+ { 2, 3, { 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // l
+ { 8, 9, { 0x0000, 0x0000, 0x0000, 0xfe00, 0xdb00, 0xdb00, 0xdb00, 0xdb00, 0xdb00, 0xdb00, 0xdb00, 0x0000, 0x0000 } }, // m
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0xf800, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x0000, 0x0000 } }, // n
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0x7800, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x7800, 0x0000, 0x0000 } }, // o
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0xf800, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xf800, 0xc000, 0xc000 } }, // p
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0x7c00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x7c00, 0x0c00, 0x0c00 } }, // q
+ { 5, 6, { 0x0000, 0x0000, 0x0000, 0xd800, 0xf800, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // r
+ { 5, 6, { 0x0000, 0x0000, 0x0000, 0x7800, 0xc000, 0xe000, 0x7000, 0x3800, 0x1800, 0x1800, 0xf000, 0x0000, 0x0000 } }, // s
+ { 4, 5, { 0x6000, 0x6000, 0x6000, 0xf000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x3000, 0x0000, 0x0000 } }, // t
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x7c00, 0x0000, 0x0000 } }, // u
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x4800, 0x7800, 0x3000, 0x3000, 0x0000, 0x0000 } }, // v
+ { 9, 10, { 0x0000, 0x0000, 0x0000, 0xc180, 0xc180, 0xc180, 0x6300, 0x6b00, 0x7f00, 0x3600, 0x3600, 0x0000, 0x0000 } }, // w
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0xcc00, 0xcc00, 0x7800, 0x3000, 0x3000, 0x7800, 0xcc00, 0xcc00, 0x0000, 0x0000 } }, // x
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0xcc00, 0x7c00, 0x0c00, 0x7800 } }, // y
+ { 6, 7, { 0x0000, 0x0000, 0x0000, 0xfc00, 0x0c00, 0x1c00, 0x3800, 0x7000, 0xe000, 0xc000, 0xfc00, 0x0000, 0x0000 } }, // z
+ { 3, 4, { 0x2000, 0x6000, 0x4000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x4000, 0x6000, 0x2000 } }, // {
+ { 3, 4, { 0x8000, 0xc000, 0x4000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x4000, 0xc000, 0x8000 } }, // |
+ { 2, 3, { 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000 } }, // }
+ { 7, 8, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3200, 0x7e00, 0x4c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // ~
+ { 11, 12, { 0x0780, 0x1ce0, 0x3820, 0x3000, 0xffc0, 0x3000, 0xff80, 0x3000, 0x3820, 0x1ce0, 0x0780, 0x0000, 0x0000 } }, // euro
+ { 7, 8, { 0x3800, 0x6c00, 0x6000, 0x6000, 0x6000, 0xf800, 0x6000, 0x6000, 0x6000, 0x6600, 0xfc00, 0x0000, 0x0000 } }, // pound
+ { 8, 9, { 0xc300, 0xc300, 0x6600, 0x6600, 0xff00, 0x1800, 0xff00, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000, 0x0000 } }, // yen
+ { 9, 10, { 0x0000, 0x8080, 0x5d00, 0x2200, 0x4100, 0x4100, 0x4100, 0x2200, 0x5d00, 0x8080, 0x0000, 0x0000, 0x0000 } }, // currency
+ { 6, 7, { 0x3000, 0x3000, 0x0000, 0x3000, 0x3000, 0x6000, 0xc000, 0xc000, 0xc400, 0xc400, 0x7800, 0x0000, 0x0000 } }, // inverted ?
+ { 2, 3, { 0xc000, 0xc000, 0x0000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0x0000, 0x0000 } }, // inverted !
+ { 6, 7, { 0x3800, 0x6c00, 0x6c00, 0x6000, 0xf000, 0xd800, 0xcc00, 0x6c00, 0x3c00, 0x1800, 0xd800, 0xd800, 0x7000 } }, // section
+};
diff --git a/nokia-big.txt b/nokia-big.txt
new file mode 100644
index 0000000..d8e492b
--- /dev/null
+++ b/nokia-big.txt
@@ -0,0 +1,1431 @@
+# The big font (13px high, up to 11px wide)
+# You can run this through xform.c
+
+111
+111
+111
+111
+111
+111
+111
+111
+111
+111
+111
+111
+111
+
+00
+00
+00
+00
+00
+00
+00
+00
+11
+00
+00
+11
+11
+
+101101
+101101
+101101
+111111
+111111
+111111
+111111
+111111
+111111
+111111
+111111
+111111
+111111
+
+1111111
+1111111
+1001001
+1001001
+1001001
+0000000
+1001001
+0000000
+1001001
+1001001
+1001001
+1111111
+1111111
+
+1110111
+1000001
+0010100
+0010111
+0010111
+1000001
+1110100
+1110100
+1110100
+0010100
+1000001
+1110111
+1110111
+
+1011100
+0101101
+0101001
+1011011
+1110011
+1110111
+1100111
+1101101
+1001010
+1011010
+0011101
+1111111
+1111111
+
+10001111
+00100111
+00100111
+00100111
+00100111
+10001101
+00001001
+00100011
+00110011
+00100001
+10001100
+11111111
+11111111
+
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+
+110
+100
+101
+001
+001
+001
+001
+001
+001
+001
+101
+100
+110
+
+011
+001
+101
+100
+100
+100
+100
+100
+100
+100
+101
+001
+011
+
+1111111
+1111111
+1111111
+1011101
+1001001
+1100011
+0000000
+1100011
+1001001
+1011101
+1111111
+1111111
+1111111
+
+1111111
+1111111
+1111111
+1111111
+1110011
+1110011
+1000000
+1110011
+1110011
+1111111
+1111111
+1111111
+1111111
+
+111
+111
+111
+111
+111
+111
+111
+111
+111
+100
+100
+001
+111
+
+11111
+11111
+11111
+11111
+11111
+00000
+00000
+11111
+11111
+11111
+11111
+11111
+11111
+
+111
+111
+111
+111
+111
+111
+111
+111
+111
+001
+001
+111
+111
+
+11100
+11100
+11001
+11001
+11001
+10011
+10011
+10011
+00111
+00111
+00111
+11111
+11111
+
+1000001
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+1000001
+1111111
+1111111
+
+1110011
+1100011
+1000011
+1010011
+1110011
+1110011
+1110011
+1110011
+1110011
+1110011
+1110011
+1111111
+1111111
+
+1000001
+0011100
+0011100
+1111100
+1111100
+1110001
+1000111
+0011111
+0011111
+0011111
+0000000
+1111111
+1111111
+
+1000001
+0011100
+1111100
+1111100
+1100001
+1111100
+1111100
+1111100
+1111100
+0011100
+1000001
+1111111
+1111111
+
+1111101
+1111001
+1110001
+1101001
+1011001
+0011001
+0011001
+0000000
+1111001
+1111001
+1111001
+1111111
+1111111
+
+0000001
+0011111
+0011111
+0011111
+0000001
+0011100
+1111100
+1111100
+1111100
+0011100
+1000001
+1111111
+1111111
+
+1000001
+0011100
+0011111
+0011111
+0000001
+0011100
+0011100
+0011100
+0011100
+0011100
+1000001
+1111111
+1111111
+
+0000000
+1111100
+1111100
+1111001
+1111001
+1110011
+1110011
+1100111
+1100111
+1100111
+1100111
+1111111
+1111111
+
+1000001
+0011100
+0011100
+0011100
+1000001
+0011100
+0011100
+0011100
+0011100
+0011100
+1000001
+1111111
+1111111
+
+1000001
+0011100
+0011100
+0011100
+0011100
+0011100
+1000000
+1111100
+1111100
+0011100
+1000001
+1111111
+1111111
+
+111
+111
+111
+111
+100
+100
+111
+111
+111
+100
+100
+111
+111
+
+111
+111
+111
+111
+100
+100
+111
+111
+111
+100
+100
+001
+111
+
+11111
+11111
+11110
+11100
+11001
+10011
+00111
+10011
+11001
+11100
+11110
+11111
+11111
+
+11111
+11111
+11111
+11111
+11111
+00000
+11111
+11111
+00000
+11111
+11111
+11111
+11111
+
+11111
+11111
+01111
+00111
+10011
+11001
+11100
+11001
+10011
+00111
+01111
+11111
+11111
+
+100001
+011100
+011100
+111100
+111100
+111001
+110011
+110011
+111111
+110011
+110011
+111111
+111111
+
+111111111
+110000011
+101111101
+011010110
+010100110
+010110110
+010110110
+010110101
+011001011
+101111110
+110000001
+111111111
+111111111
+
+1000001
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0000000
+0011100
+0011100
+0011100
+1111111
+1111111
+
+0000001
+0011100
+0011100
+0011100
+0000011
+0011100
+0011100
+0011100
+0011100
+0011100
+0000001
+1111111
+1111111
+
+100001
+001100
+001111
+001111
+001111
+001111
+001111
+001111
+001111
+001100
+100001
+111111
+111111
+
+0000011
+0011001
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011001
+0000011
+1111111
+1111111
+
+0000000
+0011111
+0011111
+0011111
+0000011
+0011111
+0011111
+0011111
+0011111
+0011111
+0000000
+1111111
+1111111
+
+0000000
+0011111
+0011111
+0011111
+0000011
+0011111
+0011111
+0011111
+0011111
+0011111
+0011111
+1111111
+1111111
+
+1000001
+0011100
+0011111
+0011111
+0011111
+0011000
+0011100
+0011100
+0011100
+0011100
+1000000
+1111111
+1111111
+
+0011100
+0011100
+0011100
+0011100
+0000000
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+1111111
+1111111
+
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+11
+11
+
+11100
+11100
+11100
+11100
+11100
+11100
+11100
+11100
+11100
+01100
+10001
+11111
+11111
+
+00111001
+00110011
+00100111
+00001111
+00011111
+00011111
+00001111
+00100111
+00110011
+00111001
+00111100
+11111111
+11111111
+
+001111
+001111
+001111
+001111
+001111
+001111
+001111
+001111
+001111
+001111
+000000
+111111
+111111
+
+011111110
+001111100
+000111000
+000010000
+001000100
+001101100
+001111100
+001111100
+001111100
+001111100
+001111100
+111111111
+111111111
+
+0011100
+0011100
+0001100
+0001100
+0000100
+0010100
+0010000
+0011000
+0011000
+0011100
+0011100
+1111111
+1111111
+
+10000001
+00111100
+00111100
+00111100
+00111100
+00111100
+00111100
+00111100
+00111100
+00111100
+10000001
+11111111
+11111111
+
+0000001
+0011100
+0011100
+0011100
+0011100
+0011100
+0000001
+0011111
+0011111
+0011111
+0011111
+1111111
+1111111
+
+10000001
+00111100
+00111100
+00111100
+00111100
+00111100
+00111100
+00111100
+00101100
+00100100
+10000001
+11111001
+11111111
+
+00000011
+00111001
+00111001
+00111001
+00111001
+00111001
+00000011
+00100111
+00110011
+00111001
+00111100
+11111111
+11111111
+
+100001
+001100
+001111
+001111
+001111
+100001
+111100
+111100
+111100
+001100
+100001
+111111
+111111
+
+000000
+110011
+110011
+110011
+110011
+110011
+110011
+110011
+110011
+110011
+110011
+111111
+111111
+
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+0011100
+1000001
+1111111
+1111111
+
+00111100
+00111100
+00111100
+00111100
+10011001
+10011001
+10011001
+11011011
+11000011
+11100111
+11100111
+11111111
+11111111
+
+0011111100
+0011111100
+0011111100
+0011111100
+1001111001
+1001001001
+1001001001
+1001001001
+1100000011
+1100110011
+1100110011
+1111111111
+1111111111
+
+0011100
+0011100
+0011100
+1001001
+1001001
+1100011
+1001001
+1001001
+0011100
+0011100
+0011100
+1111111
+1111111
+
+00111100
+00111100
+10011001
+10011001
+11000011
+11000011
+11100111
+11100111
+11100111
+11100111
+11100111
+11111111
+11111111
+
+0000000
+1111100
+1111000
+1110001
+1100011
+1000111
+0001111
+0011111
+0011111
+0011111
+0000000
+1111111
+1111111
+
+0000
+0011
+0011
+0011
+0011
+0011
+0011
+0011
+0011
+0011
+0011
+0011
+0000
+
+00111
+00111
+10011
+10011
+10011
+11001
+11001
+11001
+11100
+11100
+11100
+11111
+11111
+
+0000
+1100
+1100
+1100
+1100
+1100
+1100
+1100
+1100
+1100
+1100
+1100
+0000
+
+11011
+10001
+00100
+01110
+11111
+11111
+11111
+11111
+11111
+11111
+11111
+11111
+11111
+
+11111111
+11111111
+11111111
+11111111
+11111111
+11111111
+11111111
+11111111
+11111111
+11111111
+11111111
+00000000
+11111111
+
+011
+101
+110
+111
+111
+111
+111
+111
+111
+111
+111
+111
+111
+
+111111
+111111
+111111
+100001
+111100
+111100
+100000
+001100
+001100
+001100
+100000
+111111
+111111
+
+001111
+001111
+001111
+000001
+001100
+001100
+001100
+001100
+001100
+001100
+000001
+111111
+111111
+
+11111
+11111
+11111
+10001
+00110
+00111
+00111
+00111
+00111
+00110
+10001
+11111
+11111
+
+111100
+111100
+111100
+100000
+001100
+001100
+001100
+001100
+001100
+001100
+100000
+111111
+111111
+
+111111
+111111
+111111
+100001
+001100
+001100
+000000
+001111
+001111
+001110
+100001
+111111
+111111
+
+1100
+1001
+1001
+0000
+1001
+1001
+1001
+1001
+1001
+1001
+1001
+1111
+1111
+
+111111
+111111
+111111
+100000
+001100
+001100
+001100
+001100
+001100
+001100
+100000
+111100
+100001
+
+001111
+001111
+001111
+000001
+001100
+001100
+001100
+001100
+001100
+001100
+001100
+111111
+111111
+
+00
+00
+11
+00
+00
+00
+00
+00
+00
+00
+00
+11
+11
+
+100
+100
+111
+100
+100
+100
+100
+100
+100
+100
+100
+100
+001
+
+001111
+001111
+001111
+001100
+001001
+000011
+000111
+000111
+000011
+001001
+001100
+111111
+111111
+
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+11
+11
+
+11111111
+11111111
+11111111
+00000001
+00100100
+00100100
+00100100
+00100100
+00100100
+00100100
+00100100
+11111111
+11111111
+
+111111
+111111
+111111
+000001
+001100
+001100
+001100
+001100
+001100
+001100
+001100
+111111
+111111
+
+111111
+111111
+111111
+100001
+001100
+001100
+001100
+001100
+001100
+001100
+100001
+111111
+111111
+
+111111
+111111
+111111
+000001
+001100
+001100
+001100
+001100
+001100
+001100
+000001
+001111
+001111
+
+111111
+111111
+111111
+100000
+001100
+001100
+001100
+001100
+001100
+001100
+100000
+111100
+111100
+
+11111
+11111
+11111
+00100
+00000
+00111
+00111
+00111
+00111
+00111
+00111
+11111
+11111
+
+11111
+11111
+11111
+10000
+00111
+00011
+10001
+11000
+11100
+11100
+00001
+11111
+11111
+
+1001
+1001
+1001
+0000
+1001
+1001
+1001
+1001
+1001
+1001
+1100
+1111
+1111
+
+111111
+111111
+111111
+001100
+001100
+001100
+001100
+001100
+001100
+001100
+100000
+111111
+111111
+
+111111
+111111
+111111
+001100
+001100
+001100
+001100
+101101
+100001
+110011
+110011
+111111
+111111
+
+111111111
+111111111
+111111111
+001111100
+001111100
+001111100
+100111001
+100101001
+100000001
+110010011
+110010011
+111111111
+111111111
+
+111111
+111111
+111111
+001100
+001100
+100001
+110011
+110011
+100001
+001100
+001100
+111111
+111111
+
+111111
+111111
+111111
+001100
+001100
+001100
+001100
+001100
+001100
+001100
+100000
+111100
+100001
+
+111111
+111111
+111111
+000000
+111100
+111000
+110001
+100011
+000111
+001111
+000000
+111111
+111111
+
+110
+100
+101
+001
+001
+001
+001
+001
+001
+001
+101
+100
+110
+
+011
+001
+101
+100
+100
+100
+100
+100
+100
+100
+101
+001
+011
+
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+
+1111111
+1111111
+1111111
+1111111
+1111111
+1100110
+1000000
+1011001
+1111111
+1111111
+1111111
+1111111
+1111111
+
+11111000011
+11100011000
+11000111110
+11001111111
+00000000001
+11001111111
+00000000011
+11001111111
+11000111110
+11100011000
+11111000011
+11111111111
+11111111111
+
+1100011
+1001001
+1001111
+1001111
+1001111
+0000011
+1001111
+1001111
+1001111
+1001100
+0000001
+1111111
+1111111
+
+00111100
+00111100
+10011001
+10011001
+00000000
+11100111
+00000000
+11100111
+11100111
+11100111
+11100111
+11111111
+11111111
+
+111111111
+011111110
+101000101
+110111011
+101111101
+101111101
+101111101
+110111011
+101000101
+011111110
+111111111
+111111111
+111111111
+
+110011
+110011
+111111
+110011
+110011
+100111
+001111
+001111
+001110
+001110
+100001
+111111
+111111
+
+00
+00
+11
+00
+00
+00
+00
+00
+00
+00
+00
+11
+11
+
+110001
+100100
+100100
+100111
+000011
+001001
+001100
+100100
+110000
+111001
+001001
+001001
+100011
+
diff --git a/nokia-font.png b/nokia-font.png
new file mode 100644
index 0000000..0207897
Binary files /dev/null and b/nokia-font.png differ
diff --git a/nokia-menu.c b/nokia-menu.c
new file mode 100644
index 0000000..b9e6e61
--- /dev/null
+++ b/nokia-menu.c
@@ -0,0 +1,22 @@
+struct
+{
+ int width;
+ int advance;
+ int rows[6];
+}
+font_data[] =
+{
+ { 2, 3, { 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00 } }, // -
+ { 1, 2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 } }, // .
+ { 3, 4, { 0x20, 0x20, 0x40, 0x40, 0x80, 0x80 } }, // /
+ { 5, 6, { 0x70, 0xd8, 0xd8, 0xd8, 0xd8, 0x70 } }, // 0
+ { 5, 6, { 0x30, 0x70, 0x30, 0x30, 0x30, 0x30 } }, // 1
+ { 5, 6, { 0xf0, 0x18, 0x18, 0x70, 0xc0, 0xf8 } }, // 2
+ { 5, 6, { 0xf0, 0x18, 0x70, 0x18, 0x18, 0xf0 } }, // 3
+ { 5, 6, { 0x18, 0x38, 0x58, 0xf8, 0x18, 0x18 } }, // 4
+ { 5, 6, { 0xf0, 0xc0, 0xf0, 0x18, 0x18, 0xf0 } }, // 5
+ { 5, 6, { 0x70, 0xc0, 0xf0, 0xd8, 0xd8, 0x70 } }, // 6
+ { 5, 6, { 0xf8, 0x18, 0x30, 0x60, 0x60, 0x60 } }, // 7
+ { 5, 6, { 0x70, 0xd8, 0x70, 0xd8, 0xd8, 0x70 } }, // 8
+ { 5, 6, { 0x70, 0xd8, 0xd8, 0x78, 0x18, 0x70 } }, // 9
+};
diff --git a/nokia-menu.txt b/nokia-menu.txt
new file mode 100644
index 0000000..0ddc1a3
--- /dev/null
+++ b/nokia-menu.txt
@@ -0,0 +1,94 @@
+# The very small font for locations in menu (6px high, up to 5px wide)
+# You can run this through xform.c
+
+110
+110
+101
+101
+011
+011
+
+11
+11
+11
+00
+11
+11
+
+1
+1
+1
+1
+1
+0
+
+10001
+00100
+00100
+00100
+00100
+10001
+
+11001
+10001
+11001
+11001
+11001
+11001
+
+00001
+11100
+11100
+10001
+00111
+00000
+
+00001
+11100
+10001
+11100
+11100
+00001
+
+11100
+11000
+10100
+00000
+11100
+11100
+
+00001
+00111
+00001
+11100
+11100
+00001
+
+10001
+00111
+00001
+00100
+00100
+10001
+
+00000
+11100
+11001
+10011
+10011
+10011
+
+10001
+00100
+10001
+00100
+00100
+10001
+
+10001
+00100
+00100
+10000
+11100
+10001
+
diff --git a/nokia-small-bold.c b/nokia-small-bold.c
new file mode 100644
index 0000000..d3f579f
--- /dev/null
+++ b/nokia-small-bold.c
@@ -0,0 +1,111 @@
+struct
+{
+ int width;
+ int advance;
+ int rows[8];
+}
+font_data[] =
+{
+ { 3, 4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // space
+ { 2, 3, { 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0xc0, 0x00 } }, // !
+ { 3, 4, { 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // "
+ { 5, 6, { 0x50, 0xf8, 0xf8, 0x50, 0xf8, 0xf8, 0x50, 0x00 } }, // #
+ { 5, 6, { 0x50, 0x78, 0xd0, 0xf0, 0x78, 0x58, 0xf0, 0x50 } }, // $
+ { 6, 7, { 0xc8, 0xd8, 0x10, 0x30, 0x20, 0x6c, 0x4c, 0x00 } }, // %
+ { 6, 7, { 0x70, 0xd8, 0x70, 0xf4, 0xdc, 0xdc, 0x74, 0x00 } }, // &
+ { 1, 2, { 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // '
+ { 3, 4, { 0x20, 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0x20 } }, // (
+ { 3, 4, { 0x80, 0x40, 0x60, 0x60, 0x60, 0x60, 0x40, 0x80 } }, // )
+ { 5, 6, { 0x20, 0xa8, 0xf8, 0x70, 0xf8, 0xa8, 0x20, 0x00 } }, // *
+ { 5, 6, { 0x00, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00 } }, // +
+ { 2, 3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80 } }, // ,
+ { 4, 5, { 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00 } }, // -
+ { 2, 3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00 } }, // .
+ { 3, 4, { 0x20, 0x20, 0x60, 0x40, 0xc0, 0x80, 0x80, 0x00 } }, // /
+ { 5, 6, { 0x70, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00 } }, // 0
+ { 5, 6, { 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00 } }, // 1
+ { 5, 6, { 0xf0, 0x18, 0x18, 0x70, 0xc0, 0xc0, 0xf8, 0x00 } }, // 2
+ { 5, 6, { 0xf0, 0x18, 0x18, 0x70, 0x18, 0x18, 0xf0, 0x00 } }, // 3
+ { 5, 6, { 0x18, 0x38, 0x58, 0x98, 0xf8, 0x18, 0x18, 0x00 } }, // 4
+ { 5, 6, { 0xf0, 0x80, 0xf0, 0x18, 0x18, 0x18, 0xf0, 0x00 } }, // 5
+ { 5, 6, { 0x70, 0xc0, 0xf0, 0xd8, 0xd8, 0xd8, 0x70, 0x00 } }, // 6
+ { 5, 6, { 0xf8, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x00 } }, // 7
+ { 5, 6, { 0x70, 0xd8, 0xd8, 0x70, 0xd8, 0xd8, 0x70, 0x00 } }, // 8
+ { 5, 6, { 0x70, 0xd8, 0xd8, 0xd8, 0x78, 0x18, 0x70, 0x00 } }, // 9
+ { 2, 3, { 0x00, 0x00, 0xc0, 0xc0, 0x00, 0xc0, 0xc0, 0x00 } }, // :
+ { 2, 3, { 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x40, 0xc0, 0x80 } }, // ;
+ { 4, 5, { 0x10, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x10, 0x00 } }, // <
+ { 4, 5, { 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00 } }, // =
+ { 4, 5, { 0x80, 0xc0, 0x60, 0x30, 0x60, 0xc0, 0x80, 0x00 } }, // >
+ { 5, 6, { 0xf0, 0x18, 0x30, 0x60, 0x60, 0x00, 0x60, 0x00 } }, // ?
+ { 6, 7, { 0x00, 0x78, 0xcc, 0xfc, 0xdc, 0xfc, 0xc0, 0x78 } }, // @
+ { 5, 6, { 0x70, 0xd8, 0xd8, 0xd8, 0xf8, 0xd8, 0xd8, 0x00 } }, // A
+ { 5, 6, { 0xf0, 0xd8, 0xf0, 0xd8, 0xd8, 0xd8, 0xf0, 0x00 } }, // B
+ { 5, 6, { 0x78, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x78, 0x00 } }, // C
+ { 5, 6, { 0xf0, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xf0, 0x00 } }, // D
+ { 5, 6, { 0xf8, 0xc0, 0xf0, 0xc0, 0xc0, 0xc0, 0xf8, 0x00 } }, // E
+ { 5, 6, { 0xf8, 0xc0, 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 } }, // F
+ { 5, 6, { 0x70, 0xc0, 0xc0, 0xd8, 0xd8, 0xd8, 0x78, 0x00 } }, // G
+ { 5, 6, { 0xd8, 0xd8, 0xf8, 0xd8, 0xd8, 0xd8, 0xd8, 0x00 } }, // H
+ { 2, 3, { 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 } }, // I
+ { 4, 5, { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, 0x00 } }, // J
+ { 6, 7, { 0xcc, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xcc, 0x00 } }, // K
+ { 4, 5, { 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0x00 } }, // L
+ { 7, 8, { 0x82, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0x00 } }, // M
+ { 6, 7, { 0x8c, 0xcc, 0xec, 0xfc, 0xdc, 0xcc, 0xc4, 0x00 } }, // N
+ { 6, 7, { 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00 } }, // O
+ { 5, 6, { 0xf0, 0xd8, 0xd8, 0xd8, 0xf0, 0xc0, 0xc0, 0x00 } }, // P
+ { 6, 7, { 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x78, 0x0c } }, // Q
+ { 5, 6, { 0xf0, 0xd8, 0xd8, 0xd8, 0xf0, 0xd0, 0xd8, 0x00 } }, // R
+ { 4, 5, { 0x70, 0xc0, 0xc0, 0x60, 0x30, 0x30, 0xe0, 0x00 } }, // S
+ { 6, 7, { 0xfc, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00 } }, // T
+ { 5, 6, { 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00 } }, // U
+ { 6, 7, { 0xcc, 0xcc, 0xcc, 0x78, 0x78, 0x30, 0x30, 0x00 } }, // V
+ { 7, 8, { 0xc6, 0xc6, 0xd6, 0xfe, 0x7c, 0x7c, 0x6c, 0x00 } }, // W
+ { 6, 7, { 0xcc, 0xcc, 0x78, 0x30, 0x78, 0xcc, 0xcc, 0x00 } }, // X
+ { 6, 7, { 0xcc, 0xcc, 0x78, 0x30, 0x30, 0x30, 0x30, 0x00 } }, // Y
+ { 5, 6, { 0xf8, 0x18, 0x38, 0x70, 0xe0, 0xc0, 0xf8, 0x00 } }, // Z
+ { 3, 4, { 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0 } }, // [
+ { 3, 4, { 0x80, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x20, 0x00 } }, // backslash
+ { 3, 4, { 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0 } }, // ]
+ { 3, 4, { 0x40, 0xe0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // ^
+ { 5, 5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8 } }, // _
+ { 2, 3, { 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // `
+ { 5, 6, { 0x00, 0x00, 0x70, 0x18, 0x78, 0xd8, 0x78, 0x00 } }, // a
+ { 5, 6, { 0xc0, 0xc0, 0xf0, 0xd8, 0xd8, 0xd8, 0xf0, 0x00 } }, // b
+ { 4, 5, { 0x00, 0x00, 0x70, 0xc0, 0xc0, 0xc0, 0x70, 0x00 } }, // c
+ { 5, 6, { 0x18, 0x18, 0x78, 0xd8, 0xd8, 0xd8, 0x78, 0x00 } }, // d
+ { 5, 6, { 0x00, 0x00, 0x70, 0xd8, 0xf8, 0xc0, 0x78, 0x00 } }, // e
+ { 3, 4, { 0x60, 0xc0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 } }, // f
+ { 5, 6, { 0x00, 0x00, 0x78, 0xd8, 0xd8, 0x78, 0x18, 0x70 } }, // g
+ { 5, 6, { 0xc0, 0xc0, 0xf0, 0xd8, 0xd8, 0xd8, 0xd8, 0x00 } }, // h
+ { 2, 3, { 0xc0, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 } }, // i
+ { 3, 4, { 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0xc0 } }, // j
+ { 5, 6, { 0xc0, 0xc0, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0x00 } }, // k
+ { 2, 3, { 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 } }, // l
+ { 8, 9, { 0x00, 0x00, 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0x00 } }, // m
+ { 5, 6, { 0x00, 0x00, 0xf0, 0xd8, 0xd8, 0xd8, 0xd8, 0x00 } }, // n
+ { 5, 6, { 0x00, 0x00, 0x70, 0xd8, 0xd8, 0xd8, 0x70, 0x00 } }, // o
+ { 5, 6, { 0x00, 0x00, 0xf0, 0xd8, 0xd8, 0xf0, 0xc0, 0xc0 } }, // p
+ { 5, 6, { 0x00, 0x00, 0x78, 0xd8, 0xd8, 0x78, 0x18, 0x18 } }, // q
+ { 4, 5, { 0x00, 0x00, 0xd0, 0xf0, 0xc0, 0xc0, 0xc0, 0x00 } }, // r
+ { 4, 5, { 0x00, 0x00, 0x70, 0xc0, 0xf0, 0x30, 0xe0, 0x00 } }, // s
+ { 3, 4, { 0xc0, 0xc0, 0xe0, 0xc0, 0xc0, 0xc0, 0x60, 0x00 } }, // t
+ { 5, 6, { 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xd8, 0x78, 0x00 } }, // u
+ { 5, 6, { 0x00, 0x00, 0xd8, 0xd8, 0x70, 0x70, 0x20, 0x00 } }, // v
+ { 7, 8, { 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0x7c, 0x6c, 0x00 } }, // w
+ { 5, 6, { 0x00, 0x00, 0xd8, 0xd8, 0x70, 0xd8, 0xd8, 0x00 } }, // x
+ { 5, 6, { 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0x78, 0x18, 0x70 } }, // y
+ { 5, 6, { 0x00, 0x00, 0xf8, 0x30, 0x60, 0xc0, 0xf8, 0x00 } }, // z
+ { 3, 4, { 0x20, 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0x20 } }, // {
+ { 2, 3, { 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0 } }, // |
+ { 3, 4, { 0x80, 0x40, 0x60, 0x60, 0x60, 0x60, 0x40, 0x80 } }, // }
+ { 6, 7, { 0x00, 0x00, 0x00, 0x64, 0xfc, 0x98, 0x00, 0x00 } }, // ~
+ { 6, 7, { 0x00, 0x38, 0x44, 0xf8, 0xf0, 0x44, 0x38, 0x00 } }, // euro
+ { 5, 6, { 0x38, 0x60, 0x60, 0x60, 0xf0, 0x60, 0xf8, 0x00 } }, // pound
+ { 6, 7, { 0xcc, 0x78, 0xfc, 0x30, 0xfc, 0x30, 0x30, 0x00 } }, // yen
+ { 5, 6, { 0x00, 0x88, 0x70, 0xd8, 0xd8, 0x70, 0x88, 0x00 } }, // currency
+ { 5, 6, { 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0x78, 0x00 } }, // inverted ?
+ { 2, 3, { 0xc0, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 } }, // inverted !
+ { 4, 5, { 0x60, 0xd0, 0xe0, 0xb0, 0xd0, 0x70, 0xb0, 0x60 } }, // section
+};
diff --git a/nokia-small-bold.txt b/nokia-small-bold.txt
new file mode 100644
index 0000000..3c9da28
--- /dev/null
+++ b/nokia-small-bold.txt
@@ -0,0 +1,921 @@
+# The bold variant of the small font (8px high, up to 8px wide)
+# You can run this through xform.c
+
+111
+111
+111
+111
+111
+111
+111
+111
+
+00
+00
+00
+00
+00
+11
+00
+11
+
+010
+010
+111
+111
+111
+111
+111
+111
+
+10101
+00000
+00000
+10101
+00000
+00000
+10101
+11111
+
+10101
+10000
+00101
+00001
+10000
+10100
+00001
+10101
+
+001101
+001001
+111011
+110011
+110111
+100100
+101100
+111111
+
+100011
+001001
+100011
+000010
+001000
+001000
+100010
+111111
+
+0
+0
+1
+1
+1
+1
+1
+1
+
+110
+101
+001
+001
+001
+001
+101
+110
+
+011
+101
+100
+100
+100
+100
+101
+011
+
+11011
+01010
+00000
+10001
+00000
+01010
+11011
+11111
+
+11111
+11011
+11011
+00000
+11011
+11011
+11111
+11111
+
+11
+11
+11
+11
+11
+10
+00
+01
+
+1111
+1111
+1111
+0000
+1111
+1111
+1111
+1111
+
+11
+11
+11
+11
+11
+00
+00
+11
+
+110
+110
+100
+101
+001
+011
+011
+111
+
+10001
+00100
+00100
+00100
+00100
+00100
+10001
+11111
+
+11001
+10001
+11001
+11001
+11001
+11001
+11001
+11111
+
+00001
+11100
+11100
+10001
+00111
+00111
+00000
+11111
+
+00001
+11100
+11100
+10001
+11100
+11100
+00001
+11111
+
+11100
+11000
+10100
+01100
+00000
+11100
+11100
+11111
+
+00001
+01111
+00001
+11100
+11100
+11100
+00001
+11111
+
+10001
+00111
+00001
+00100
+00100
+00100
+10001
+11111
+
+00000
+11100
+11001
+11001
+10011
+10011
+10011
+11111
+
+10001
+00100
+00100
+10001
+00100
+00100
+10001
+11111
+
+10001
+00100
+00100
+00100
+10000
+11100
+10001
+11111
+
+11
+11
+00
+00
+11
+00
+00
+11
+
+11
+11
+00
+00
+11
+10
+00
+01
+
+1110
+1100
+1001
+0011
+1001
+1100
+1110
+1111
+
+1111
+1111
+1111
+0000
+1111
+0000
+1111
+1111
+
+0111
+0011
+1001
+1100
+1001
+0011
+0111
+1111
+
+00001
+11100
+11001
+10011
+10011
+11111
+10011
+11111
+
+111111
+100001
+001100
+000000
+001000
+000000
+001111
+100001
+
+10001
+00100
+00100
+00100
+00000
+00100
+00100
+11111
+
+00001
+00100
+00001
+00100
+00100
+00100
+00001
+11111
+
+10000
+00111
+00111
+00111
+00111
+00111
+10000
+11111
+
+00001
+00100
+00100
+00100
+00100
+00100
+00001
+11111
+
+00000
+00111
+00001
+00111
+00111
+00111
+00000
+11111
+
+00000
+00111
+00001
+00111
+00111
+00111
+00111
+11111
+
+10001
+00111
+00111
+00100
+00100
+00100
+10000
+11111
+
+00100
+00100
+00000
+00100
+00100
+00100
+00100
+11111
+
+00
+00
+00
+00
+00
+00
+00
+11
+
+1100
+1100
+1100
+1100
+1100
+1100
+0001
+1111
+
+001100
+001001
+000011
+000111
+000011
+001001
+001100
+111111
+
+0011
+0011
+0011
+0011
+0011
+0011
+0000
+1111
+
+0111110
+0011100
+0001000
+0000000
+0010100
+0011100
+0011100
+1111111
+
+011100
+001100
+000100
+000000
+001000
+001100
+001110
+111111
+
+100001
+001100
+001100
+001100
+001100
+001100
+100001
+111111
+
+00001
+00100
+00100
+00100
+00001
+00111
+00111
+11111
+
+100001
+001100
+001100
+001100
+001100
+001000
+100001
+111100
+
+00001
+00100
+00100
+00100
+00001
+00101
+00100
+11111
+
+1000
+0011
+0011
+1001
+1100
+1100
+0001
+1111
+
+000000
+110011
+110011
+110011
+110011
+110011
+110011
+111111
+
+00100
+00100
+00100
+00100
+00100
+00100
+10001
+11111
+
+001100
+001100
+001100
+100001
+100001
+110011
+110011
+111111
+
+0011100
+0011100
+0010100
+0000000
+1000001
+1000001
+1001001
+1111111
+
+001100
+001100
+100001
+110011
+100001
+001100
+001100
+111111
+
+001100
+001100
+100001
+110011
+110011
+110011
+110011
+111111
+
+00000
+11100
+11000
+10001
+00011
+00111
+00000
+11111
+
+000
+001
+001
+001
+001
+001
+001
+000
+
+011
+011
+001
+101
+100
+110
+110
+111
+
+000
+100
+100
+100
+100
+100
+100
+000
+
+101
+000
+010
+111
+111
+111
+111
+111
+
+11111
+11111
+11111
+11111
+11111
+11111
+11111
+00000
+
+01
+10
+11
+11
+11
+11
+11
+11
+
+11111
+11111
+10001
+11100
+10000
+00100
+10000
+11111
+
+00111
+00111
+00001
+00100
+00100
+00100
+00001
+11111
+
+1111
+1111
+1000
+0011
+0011
+0011
+1000
+1111
+
+11100
+11100
+10000
+00100
+00100
+00100
+10000
+11111
+
+11111
+11111
+10001
+00100
+00000
+00111
+10000
+11111
+
+100
+001
+000
+001
+001
+001
+001
+111
+
+11111
+11111
+10000
+00100
+00100
+10000
+11100
+10001
+
+00111
+00111
+00001
+00100
+00100
+00100
+00100
+11111
+
+00
+11
+00
+00
+00
+00
+00
+11
+
+100
+111
+100
+100
+100
+100
+100
+001
+
+00111
+00111
+00100
+00001
+00011
+00001
+00100
+11111
+
+00
+00
+00
+00
+00
+00
+00
+11
+
+11111111
+11111111
+00000001
+00100100
+00100100
+00100100
+00100100
+11111111
+
+11111
+11111
+00001
+00100
+00100
+00100
+00100
+11111
+
+11111
+11111
+10001
+00100
+00100
+00100
+10001
+11111
+
+11111
+11111
+00001
+00100
+00100
+00001
+00111
+00111
+
+11111
+11111
+10000
+00100
+00100
+10000
+11100
+11100
+
+1111
+1111
+0010
+0000
+0011
+0011
+0011
+1111
+
+1111
+1111
+1000
+0011
+0000
+1100
+0001
+1111
+
+001
+001
+000
+001
+001
+001
+100
+111
+
+11111
+11111
+00100
+00100
+00100
+00100
+10000
+11111
+
+11111
+11111
+00100
+00100
+10001
+10001
+11011
+11111
+
+1111111
+1111111
+0011100
+0011100
+0010100
+1000001
+1001001
+1111111
+
+11111
+11111
+00100
+00100
+10001
+00100
+00100
+11111
+
+11111
+11111
+00100
+00100
+00100
+10000
+11100
+10001
+
+11111
+11111
+00000
+11001
+10011
+00111
+00000
+11111
+
+110
+101
+001
+001
+001
+001
+101
+110
+
+00
+00
+00
+00
+00
+00
+00
+00
+
+011
+101
+100
+100
+100
+100
+101
+011
+
+111111
+111111
+111111
+100110
+000000
+011001
+111111
+111111
+
+111111
+110001
+101110
+000001
+000011
+101110
+110001
+111111
+
+11000
+10011
+10011
+10011
+00001
+10011
+00000
+11111
+
+001100
+100001
+000000
+110011
+000000
+110011
+110011
+111111
+
+11111
+01110
+10001
+00100
+00100
+10001
+01110
+11111
+
+11001
+11111
+11001
+11001
+10011
+00111
+10000
+11111
+
+00
+11
+00
+00
+00
+00
+00
+11
+
+1001
+0010
+0001
+0100
+0010
+1000
+0100
+1001
+
diff --git a/nokia-small.c b/nokia-small.c
new file mode 100644
index 0000000..9d41714
--- /dev/null
+++ b/nokia-small.c
@@ -0,0 +1,111 @@
+struct
+{
+ int width;
+ int advance;
+ int rows[8];
+}
+font_data[] =
+{
+ { 3, 4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // space
+ { 1, 2, { 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x00 } }, // !
+ { 3, 4, { 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // "
+ { 5, 6, { 0x50, 0x50, 0xf8, 0x50, 0x50, 0xf8, 0x50, 0x50 } }, // #
+ { 4, 5, { 0x20, 0x70, 0xa0, 0xe0, 0x70, 0x30, 0xe0, 0x20 } }, // $
+ { 4, 5, { 0xd0, 0xd0, 0x20, 0x60, 0x40, 0xb0, 0xb0, 0x00 } }, // %
+ { 5, 6, { 0x40, 0xa0, 0xa0, 0x40, 0xa8, 0x90, 0x68, 0x00 } }, // &
+ { 1, 2, { 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // '
+ { 2, 3, { 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40 } }, // (
+ { 2, 3, { 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80 } }, // )
+ { 5, 6, { 0x00, 0x50, 0x20, 0xf8, 0x20, 0x50, 0x00, 0x00 } }, // *
+ { 5, 6, { 0x00, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00 } }, // +
+ { 2, 3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80 } }, // ,
+ { 4, 5, { 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00 } }, // -
+ { 1, 2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00 } }, // .
+ { 3, 4, { 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00 } }, // /
+ { 4, 5, { 0x60, 0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00 } }, // 0
+ { 4, 5, { 0x20, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00 } }, // 1
+ { 4, 5, { 0xe0, 0x10, 0x10, 0x60, 0x80, 0x80, 0xf0, 0x00 } }, // 2
+ { 4, 5, { 0xe0, 0x10, 0x10, 0x60, 0x10, 0x10, 0xe0, 0x00 } }, // 3
+ { 4, 5, { 0x10, 0x30, 0x50, 0x90, 0xf0, 0x10, 0x10, 0x00 } }, // 4
+ { 4, 5, { 0xe0, 0x80, 0xe0, 0x10, 0x10, 0x10, 0xe0, 0x00 } }, // 5
+ { 4, 5, { 0x60, 0x80, 0xe0, 0x90, 0x90, 0x90, 0x60, 0x00 } }, // 6
+ { 4, 5, { 0xf0, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x00 } }, // 7
+ { 4, 5, { 0x60, 0x90, 0x90, 0x60, 0x90, 0x90, 0x60, 0x00 } }, // 8
+ { 4, 5, { 0x60, 0x90, 0x90, 0x90, 0x70, 0x10, 0x60, 0x00 } }, // 9
+ { 1, 2, { 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00 } }, // :
+ { 2, 3, { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x80 } }, // ;
+ { 4, 5, { 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x00 } }, // <
+ { 4, 5, { 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00 } }, // =
+ { 4, 5, { 0x80, 0x40, 0x20, 0x10, 0x20, 0x40, 0x80, 0x00 } }, // >
+ { 4, 5, { 0xe0, 0x10, 0x20, 0x40, 0x40, 0x00, 0x40, 0x00 } }, // ?
+ { 5, 6, { 0x70, 0x88, 0xb8, 0xd8, 0xb0, 0x88, 0x70, 0x00 } }, // @
+ { 4, 5, { 0x60, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x90, 0x00 } }, // A
+ { 4, 5, { 0xe0, 0x90, 0xe0, 0x90, 0x90, 0x90, 0xe0, 0x00 } }, // B
+ { 4, 5, { 0x70, 0x80, 0x80, 0x80, 0x80, 0x80, 0x70, 0x00 } }, // C
+ { 4, 5, { 0xe0, 0x90, 0x90, 0x90, 0x90, 0x90, 0xe0, 0x00 } }, // D
+ { 4, 5, { 0xf0, 0x80, 0xe0, 0x80, 0x80, 0x80, 0xf0, 0x00 } }, // E
+ { 4, 5, { 0xf0, 0x80, 0xe0, 0x80, 0x80, 0x80, 0x80, 0x00 } }, // F
+ { 4, 5, { 0x70, 0x80, 0xb0, 0x90, 0x90, 0x90, 0x70, 0x00 } }, // G
+ { 4, 5, { 0x90, 0x90, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x00 } }, // H
+ { 1, 2, { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00 } }, // I
+ { 3, 4, { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00 } }, // J
+ { 4, 5, { 0x90, 0xa0, 0xc0, 0x80, 0xc0, 0xa0, 0x90, 0x00 } }, // K
+ { 4, 5, { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x00 } }, // L
+ { 5, 6, { 0x88, 0xd8, 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x00 } }, // M
+ { 5, 6, { 0x88, 0xc8, 0xa8, 0x98, 0x88, 0x88, 0x88, 0x00 } }, // N
+ { 5, 6, { 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00 } }, // O
+ { 4, 5, { 0xe0, 0x90, 0x90, 0x90, 0xe0, 0x80, 0x80, 0x00 } }, // P
+ { 5, 6, { 0x70, 0x88, 0x88, 0x88, 0x88, 0xa8, 0x70, 0x08 } }, // Q
+ { 4, 5, { 0xe0, 0x90, 0x90, 0x90, 0xe0, 0xa0, 0x90, 0x00 } }, // R
+ { 4, 5, { 0x70, 0x80, 0x80, 0x60, 0x10, 0x10, 0xe0, 0x00 } }, // S
+ { 5, 6, { 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00 } }, // T
+ { 4, 5, { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00 } }, // U
+ { 5, 6, { 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x00 } }, // V
+ { 7, 8, { 0x82, 0x82, 0x44, 0x54, 0x54, 0x28, 0x28, 0x00 } }, // W
+ { 5, 6, { 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88, 0x00 } }, // X
+ { 5, 6, { 0x88, 0x88, 0x50, 0x20, 0x20, 0x20, 0x20, 0x00 } }, // Y
+ { 4, 5, { 0xf0, 0x10, 0x20, 0x40, 0x80, 0x80, 0xf0, 0x00 } }, // Z
+ { 2, 3, { 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0 } }, // [
+ { 3, 4, { 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x00 } }, // backslash
+ { 2, 3, { 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0 } }, // ]
+ { 3, 4, { 0x40, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // ^
+ { 5, 5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8 } }, // _
+ { 2, 3, { 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, // `
+ { 4, 5, { 0x00, 0x00, 0x60, 0x10, 0x70, 0x90, 0x70, 0x00 } }, // a
+ { 4, 5, { 0x80, 0x80, 0xe0, 0x90, 0x90, 0x90, 0xe0, 0x00 } }, // b
+ { 3, 4, { 0x00, 0x00, 0x60, 0x80, 0x80, 0x80, 0x60, 0x00 } }, // c
+ { 4, 5, { 0x10, 0x10, 0x70, 0x90, 0x90, 0x90, 0x70, 0x00 } }, // d
+ { 4, 5, { 0x00, 0x00, 0x60, 0x90, 0xf0, 0x80, 0x60, 0x00 } }, // e
+ { 2, 3, { 0x40, 0x80, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00 } }, // f
+ { 4, 5, { 0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x10, 0x60 } }, // g
+ { 4, 5, { 0x80, 0x80, 0xe0, 0x90, 0x90, 0x90, 0x90, 0x00 } }, // h
+ { 1, 2, { 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00 } }, // i
+ { 2, 3, { 0x40, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80 } }, // j
+ { 4, 5, { 0x80, 0x80, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x00 } }, // k
+ { 1, 2, { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00 } }, // l
+ { 5, 6, { 0x00, 0x00, 0xf0, 0xa8, 0xa8, 0xa8, 0xa8, 0x00 } }, // m
+ { 4, 5, { 0x00, 0x00, 0xe0, 0x90, 0x90, 0x90, 0x90, 0x00 } }, // n
+ { 4, 5, { 0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x60, 0x00 } }, // o
+ { 4, 5, { 0x00, 0x00, 0xe0, 0x90, 0x90, 0xe0, 0x80, 0x80 } }, // p
+ { 4, 5, { 0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x10, 0x10 } }, // q
+ { 3, 4, { 0x00, 0x00, 0xa0, 0xe0, 0x80, 0x80, 0x80, 0x00 } }, // r
+ { 3, 4, { 0x00, 0x00, 0x60, 0x80, 0x40, 0x20, 0xc0, 0x00 } }, // s
+ { 2, 3, { 0x80, 0x80, 0xc0, 0x80, 0x80, 0x80, 0x40, 0x00 } }, // t
+ { 4, 5, { 0x00, 0x00, 0x90, 0x90, 0x90, 0x90, 0x70, 0x00 } }, // u
+ { 5, 6, { 0x00, 0x00, 0x88, 0x88, 0x50, 0x50, 0x20, 0x00 } }, // v
+ { 5, 6, { 0x00, 0x00, 0x88, 0xa8, 0xa8, 0x50, 0x50, 0x00 } }, // w
+ { 4, 5, { 0x00, 0x00, 0x90, 0x90, 0x60, 0x90, 0x90, 0x00 } }, // x
+ { 4, 5, { 0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x10, 0x60 } }, // y
+ { 4, 5, { 0x00, 0x00, 0xf0, 0x20, 0x40, 0x80, 0xf0, 0x00 } }, // z
+ { 2, 3, { 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40 } }, // {
+ { 1, 2, { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } }, // |
+ { 2, 3, { 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80 } }, // }
+ { 6, 7, { 0x00, 0x00, 0x00, 0x64, 0x98, 0x00, 0x00, 0x00 } }, // ~
+ { 6, 7, { 0x00, 0x38, 0x44, 0xf8, 0xf0, 0x44, 0x38, 0x00 } }, // euro
+ { 4, 5, { 0x70, 0x80, 0x80, 0xe0, 0x40, 0x40, 0xf0, 0x00 } }, // pound
+ { 5, 6, { 0x88, 0x50, 0xf8, 0x20, 0x70, 0x20, 0x20, 0x00 } }, // yen
+ { 4, 5, { 0x00, 0x90, 0x60, 0x90, 0x90, 0x60, 0x90, 0x00 } }, // currency
+ { 4, 5, { 0x20, 0x00, 0x20, 0x20, 0x40, 0x80, 0x70, 0x00 } }, // inverted ?
+ { 1, 2, { 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00 } }, // inverted !
+ { 3, 4, { 0x40, 0xa0, 0xc0, 0xa0, 0xa0, 0x60, 0xa0, 0x40 } }, // section
+};
diff --git a/nokia-small.txt b/nokia-small.txt
new file mode 100644
index 0000000..ed31b64
--- /dev/null
+++ b/nokia-small.txt
@@ -0,0 +1,921 @@
+# The normal variant of the small font (8px high, up to 7px wide)
+# You can run this through xform.c
+
+111
+111
+111
+111
+111
+111
+111
+111
+
+0
+0
+0
+0
+0
+1
+0
+1
+
+010
+010
+111
+111
+111
+111
+111
+111
+
+10101
+10101
+00000
+10101
+10101
+00000
+10101
+10101
+
+1101
+1000
+0101
+0001
+1000
+1100
+0001
+1101
+
+0010
+0010
+1101
+1001
+1011
+0100
+0100
+1111
+
+10111
+01011
+01011
+10111
+01010
+01101
+10010
+11111
+
+0
+0
+1
+1
+1
+1
+1
+1
+
+10
+01
+01
+01
+01
+01
+01
+10
+
+01
+10
+10
+10
+10
+10
+10
+01
+
+11111
+10101
+11011
+00000
+11011
+10101
+11111
+11111
+
+11111
+11011
+11011
+00000
+11011
+11011
+11111
+11111
+
+11
+11
+11
+11
+11
+11
+10
+01
+
+1111
+1111
+1111
+0000
+1111
+1111
+1111
+1111
+
+1
+1
+1
+1
+1
+1
+0
+1
+
+110
+110
+101
+101
+101
+011
+011
+111
+
+1001
+0110
+0110
+0110
+0110
+0110
+1001
+1111
+
+1101
+1001
+1101
+1101
+1101
+1101
+1101
+1111
+
+0001
+1110
+1110
+1001
+0111
+0111
+0000
+1111
+
+0001
+1110
+1110
+1001
+1110
+1110
+0001
+1111
+
+1110
+1100
+1010
+0110
+0000
+1110
+1110
+1111
+
+0001
+0111
+0001
+1110
+1110
+1110
+0001
+1111
+
+1001
+0111
+0001
+0110
+0110
+0110
+1001
+1111
+
+0000
+1110
+1101
+1101
+1011
+1011
+1011
+1111
+
+1001
+0110
+0110
+1001
+0110
+0110
+1001
+1111
+
+1001
+0110
+0110
+0110
+1000
+1110
+1001
+1111
+
+1
+1
+1
+0
+1
+1
+0
+1
+
+11
+11
+11
+10
+11
+11
+10
+01
+
+1110
+1101
+1011
+0111
+1011
+1101
+1110
+1111
+
+1111
+1111
+1111
+0000
+1111
+0000
+1111
+1111
+
+0111
+1011
+1101
+1110
+1101
+1011
+0111
+1111
+
+0001
+1110
+1101
+1011
+1011
+1111
+1011
+1111
+
+10001
+01110
+01000
+00100
+01001
+01110
+10001
+11111
+
+1001
+0110
+0110
+0110
+0000
+0110
+0110
+1111
+
+0001
+0110
+0001
+0110
+0110
+0110
+0001
+1111
+
+1000
+0111
+0111
+0111
+0111
+0111
+1000
+1111
+
+0001
+0110
+0110
+0110
+0110
+0110
+0001
+1111
+
+0000
+0111
+0001
+0111
+0111
+0111
+0000
+1111
+
+0000
+0111
+0001
+0111
+0111
+0111
+0111
+1111
+
+1000
+0111
+0100
+0110
+0110
+0110
+1000
+1111
+
+0110
+0110
+0000
+0110
+0110
+0110
+0110
+1111
+
+0
+0
+0
+0
+0
+0
+0
+1
+
+110
+110
+110
+110
+110
+110
+001
+111
+
+0110
+0101
+0011
+0111
+0011
+0101
+0110
+1111
+
+0111
+0111
+0111
+0111
+0111
+0111
+0000
+1111
+
+01110
+00100
+01010
+01010
+01110
+01110
+01110
+11111
+
+01110
+00110
+01010
+01100
+01110
+01110
+01110
+11111
+
+10001
+01110
+01110
+01110
+01110
+01110
+10001
+11111
+
+0001
+0110
+0110
+0110
+0001
+0111
+0111
+1111
+
+10001
+01110
+01110
+01110
+01110
+01010
+10001
+11110
+
+0001
+0110
+0110
+0110
+0001
+0101
+0110
+1111
+
+1000
+0111
+0111
+1001
+1110
+1110
+0001
+1111
+
+00000
+11011
+11011
+11011
+11011
+11011
+11011
+11111
+
+0110
+0110
+0110
+0110
+0110
+0110
+1001
+1111
+
+01110
+01110
+01110
+10101
+10101
+11011
+11011
+11111
+
+0111110
+0111110
+1011101
+1010101
+1010101
+1101011
+1101011
+1111111
+
+01110
+01110
+10101
+11011
+10101
+01110
+01110
+11111
+
+01110
+01110
+10101
+11011
+11011
+11011
+11011
+11111
+
+0000
+1110
+1101
+1011
+0111
+0111
+0000
+1111
+
+00
+01
+01
+01
+01
+01
+01
+00
+
+011
+011
+101
+101
+101
+110
+110
+111
+
+00
+10
+10
+10
+10
+10
+10
+00
+
+101
+010
+111
+111
+111
+111
+111
+111
+
+11111
+11111
+11111
+11111
+11111
+11111
+11111
+00000
+
+01
+10
+11
+11
+11
+11
+11
+11
+
+1111
+1111
+1001
+1110
+1000
+0110
+1000
+1111
+
+0111
+0111
+0001
+0110
+0110
+0110
+0001
+1111
+
+111
+111
+100
+011
+011
+011
+100
+111
+
+1110
+1110
+1000
+0110
+0110
+0110
+1000
+1111
+
+1111
+1111
+1001
+0110
+0000
+0111
+1001
+1111
+
+10
+01
+00
+01
+01
+01
+01
+11
+
+1111
+1111
+1000
+0110
+0110
+1000
+1110
+1001
+
+0111
+0111
+0001
+0110
+0110
+0110
+0110
+1111
+
+0
+1
+0
+0
+0
+0
+0
+1
+
+10
+11
+10
+10
+10
+10
+10
+01
+
+0111
+0111
+0110
+0101
+0011
+0101
+0110
+1111
+
+0
+0
+0
+0
+0
+0
+0
+1
+
+11111
+11111
+00001
+01010
+01010
+01010
+01010
+11111
+
+1111
+1111
+0001
+0110
+0110
+0110
+0110
+1111
+
+1111
+1111
+1001
+0110
+0110
+0110
+1001
+1111
+
+1111
+1111
+0001
+0110
+0110
+0001
+0111
+0111
+
+1111
+1111
+1000
+0110
+0110
+1000
+1110
+1110
+
+111
+111
+010
+000
+011
+011
+011
+111
+
+111
+111
+100
+011
+101
+110
+001
+111
+
+01
+01
+00
+01
+01
+01
+10
+11
+
+1111
+1111
+0110
+0110
+0110
+0110
+1000
+1111
+
+11111
+11111
+01110
+01110
+10101
+10101
+11011
+11111
+
+11111
+11111
+01110
+01010
+01010
+10101
+10101
+11111
+
+1111
+1111
+0110
+0110
+1001
+0110
+0110
+1111
+
+1111
+1111
+0110
+0110
+0110
+1000
+1110
+1001
+
+1111
+1111
+0000
+1101
+1011
+0111
+0000
+1111
+
+10
+01
+01
+01
+01
+01
+01
+10
+
+0
+0
+0
+0
+0
+0
+0
+0
+
+01
+10
+10
+10
+10
+10
+10
+01
+
+111111
+111111
+111111
+100110
+011001
+111111
+111111
+111111
+
+111111
+110001
+101110
+000001
+000011
+101110
+110001
+111111
+
+1000
+0111
+0111
+0001
+1011
+1011
+0000
+1111
+
+01110
+10101
+00000
+11011
+10001
+11011
+11011
+11111
+
+1111
+0110
+1001
+0110
+0110
+1001
+0110
+1111
+
+1101
+1111
+1101
+1101
+1011
+0111
+1000
+1111
+
+0
+1
+0
+0
+0
+0
+0
+1
+
+101
+010
+001
+010
+010
+100
+010
+101
+
diff --git a/xform.c b/xform.c
new file mode 100644
index 0000000..19001cd
--- /dev/null
+++ b/xform.c
@@ -0,0 +1,146 @@
+/*
+ * Trivial ASCII to C source transformation tool
+ * Public domain
+ */
+
+#include
+#include
+#include
+
+#define H_MAX 32
+#define W_MAX 32
+
+int
+main (int argc, char *argv[])
+{
+ if (argc != 3)
+ {
+ fprintf (stderr, "Usage: %s font_height font_width < input\n", argv[0]);
+ exit (1);
+ }
+
+ char *p;
+ int font_height = strtol (argv[1], &p, 10);
+ if (*p || p == argv[1] || font_height <= 0 || font_height > H_MAX)
+ {
+ fprintf (stderr, "invalid font height\n");
+ exit (1);
+ }
+
+ int bit_width = strtol (argv[2], &p, 10);
+ if (*p || p == argv[2] || bit_width <= 0 || bit_width > W_MAX)
+ {
+ fprintf (stderr, "invalid font width\n");
+ exit (1);
+ }
+
+ // Width in pixels to width in bits, rounded up to bytes
+ bit_width = (bit_width + 7) / 8 * 8;
+
+ int c, irow = 0, icol = 0, charw = 0;
+ char row_data[H_MAX * W_MAX] = { 0 };
+
+ printf ("struct\n");
+ printf ("{\n");
+ printf ("\tint width;\n");
+ printf ("\tint advance;\n");
+ printf ("\tint rows[%d];\n", font_height);
+ printf ("}\n");
+ printf ("font_data[] =\n");
+ printf ("{\n");
+
+ while ((c = getchar ()) != EOF)
+ {
+ if (c == '\n')
+ {
+ if (irow == 0)
+ {
+ // We expect a new character definition
+ if (icol != 0)
+ {
+ charw = icol;
+
+ icol = 0;
+ irow++;
+ }
+ }
+ else if (irow < font_height)
+ {
+ // Just checking on consistency
+ if (icol != charw)
+ {
+ fprintf (stderr, "wrong line width\n");
+ exit (1);
+ }
+
+ icol = 0;
+ irow++;
+ }
+ else
+ {
+ // Flushing the character after a newline
+ if (icol != 0)
+ {
+ fprintf (stderr, "character too high\n");
+ exit (1);
+ }
+
+ // Character width, horizontal advance
+ printf ("\t{ %2d, %2d, { ", charw, charw + 1);
+
+ int y, x;
+ for (y = 0; ; )
+ {
+ unsigned bits = 0;
+ for (x = 0; x < charw; x++)
+ bits = (bits << 1) | row_data[y * W_MAX + x];
+ if (charw < bit_width)
+ bits <<= (bit_width - charw);
+
+ printf ("0x%0*x", (bit_width + 3) / 4, bits);
+ if (++y != font_height)
+ printf (", ");
+ else
+ break;
+ }
+
+ printf (" } },\n");
+
+ memset (row_data, 0, sizeof row_data);
+ icol = irow = charw = 0;
+ }
+ }
+ else if (c == '#')
+ {
+ // Comments
+ while ((c = getchar ()) != '\n' && c != EOF)
+ ;
+ ungetc ('\n', stdin);
+ }
+ else
+ {
+ if (icol == W_MAX)
+ {
+ fprintf (stderr, "character too wide\n");
+ exit (1);
+ }
+
+ if (c != '0' && c != '1')
+ {
+ fprintf (stderr, "invalid input '%c'\n", c);
+ exit (1);
+ }
+ row_data[irow * W_MAX + icol++] = 1 - (c - '0');
+ }
+ }
+
+ if (icol != 0)
+ {
+ fprintf (stderr, "unexpected EOF\n");
+ exit (1);
+ }
+
+ printf ("};\n");
+ return 0;
+}
+
--
cgit v1.2.3-70-g09d2