Hitachi HD44780U LCD Display Fonts

I finally got the bit-mapped fonts from the Hitachi "1602" display

0123456789ABCDEF
0
1
2
3
4
5
6
7
8
9
A
B
C
D

Here's some JavaScript:

const HD44780U01ASCII=[
[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],
[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
[4, 4, 4, 4, 0, 0, 4, 0, 0, 0, ],
[10, 10, 10, 0, 0, 0, 0, 0, 0, 0, ],
[10, 10, 31, 10, 31, 10, 10, 0, 0, 0, ],
[4, 15, 20, 14, 5, 30, 4, 0, 0, 0, ],
[24, 25, 2, 4, 8, 19, 3, 0, 0, 0, ],
[12, 18, 20, 8, 21, 18, 13, 0, 0, 0, ],
[12, 4, 8, 0, 0, 0, 0, 0, 0, 0, ],
[2, 4, 8, 8, 8, 4, 2, 0, 0, 0, ],
[8, 4, 2, 2, 2, 4, 8, 0, 0, 0, ],
[0, 4, 21, 14, 21, 4, 0, 0, 0, 0, ],
[0, 4, 4, 31, 4, 4, 0, 0, 0, 0, ],
[0, 0, 0, 0, 12, 4, 8, 0, 0, 0, ],
[0, 0, 0, 31, 0, 0, 0, 0, 0, 0, ],
[0, 0, 0, 0, 0, 12, 12, 0, 0, 0, ],
[0, 1, 2, 4, 8, 16, 0, 0, 0, 0, ],
[14, 17, 19, 21, 25, 17, 14, 0, 0, 0, ],
[4, 12, 4, 4, 4, 4, 14, 0, 0, 0, ],
[14, 17, 1, 2, 4, 8, 31, 0, 0, 0, ],
[31, 2, 4, 2, 1, 17, 14, 0, 0, 0, ],
[2, 6, 10, 18, 31, 2, 2, 0, 0, 0, ],
[31, 16, 30, 1, 1, 17, 14, 0, 0, 0, ],
[6, 8, 16, 30, 17, 17, 14, 0, 0, 0, ],
[31, 17, 1, 2, 4, 4, 4, 0, 0, 0, ],
[14, 17, 17, 14, 17, 17, 14, 0, 0, 0, ],
[14, 17, 17, 15, 1, 2, 12, 0, 0, 0, ],
[0, 12, 12, 0, 12, 12, 0, 0, 0, 0, ],
[0, 12, 12, 0, 12, 4, 8, 0, 0, 0, ],
[2, 4, 8, 16, 8, 4, 2, 0, 0, 0, ],
[0, 0, 31, 0, 31, 0, 0, 0, 0, 0, ],
[8, 4, 2, 1, 2, 4, 8, 0, 0, 0, ],
[14, 17, 1, 2, 4, 0, 4, 0, 0, 0, ],
[14, 17, 1, 13, 21, 21, 14, 0, 0, 0, ],
[14, 17, 17, 17, 31, 17, 17, 0, 0, 0, ],
[30, 17, 17, 30, 17, 17, 30, 0, 0, 0, ],
[14, 17, 16, 16, 16, 17, 14, 0, 0, 0, ],
[28, 18, 17, 17, 17, 18, 28, 0, 0, 0, ],
[31, 16, 16, 30, 16, 16, 31, 0, 0, 0, ],
[31, 16, 16, 30, 16, 16, 16, 0, 0, 0, ],
[14, 17, 16, 23, 17, 17, 15, 0, 0, 0, ],
[17, 17, 17, 31, 17, 17, 17, 0, 0, 0, ],
[14, 4, 4, 4, 4, 4, 14, 0, 0, 0, ],
[7, 2, 2, 2, 2, 18, 12, 0, 0, 0, ],
[17, 18, 20, 24, 20, 18, 17, 0, 0, 0, ],
[16, 16, 16, 16, 16, 16, 31, 0, 0, 0, ],
[17, 27, 21, 21, 17, 17, 17, 0, 0, 0, ],
[17, 17, 25, 21, 19, 17, 17, 0, 0, 0, ],
[14, 17, 17, 17, 17, 17, 14, 0, 0, 0, ],
[30, 17, 17, 30, 16, 16, 16, 0, 0, 0, ],
[14, 17, 17, 17, 21, 18, 13, 0, 0, 0, ],
[30, 17, 17, 30, 20, 18, 17, 0, 0, 0, ],
[15, 16, 16, 14, 1, 1, 30, 0, 0, 0, ],
[31, 4, 4, 4, 4, 4, 4, 0, 0, 0, ],
[17, 17, 17, 17, 17, 17, 14, 0, 0, 0, ],
[17, 17, 17, 17, 17, 10, 4, 0, 0, 0, ],
[17, 17, 17, 21, 21, 21, 10, 0, 0, 0, ],
[17, 17, 10, 4, 10, 17, 17, 0, 0, 0, ],
[17, 17, 17, 10, 4, 4, 4, 0, 0, 0, ],
[31, 1, 2, 4, 8, 16, 31, 0, 0, 0, ],
[28, 16, 16, 16, 16, 16, 28, 0, 0, 0, ],
[17, 10, 31, 4, 31, 4, 4, 0, 0, 0, ],
[14, 2, 2, 2, 2, 2, 14, 0, 0, 0, ],
[4, 10, 17, 0, 0, 0, 0, 0, 0, 0, ],
[0, 0, 0, 0, 0, 0, 31, 0, 0, 0, ],
[8, 4, 2, 0, 0, 0, 0, 0, 0, 0, ],
[0, 0, 14, 1, 15, 17, 15, 0, 0, 0, ],
[16, 16, 22, 25, 17, 17, 30, 0, 0, 0, ],
[0, 0, 14, 16, 16, 17, 14, 0, 0, 0, ],
[1, 1, 13, 19, 17, 17, 15, 0, 0, 0, ],
[0, 0, 14, 17, 31, 16, 14, 0, 0, 0, ],
[6, 9, 8, 28, 8, 8, 8, 0, 0, 0, ],
[0, 15, 17, 17, 15, 1, 14, 0, 0, 0, ],
[16, 16, 22, 25, 17, 17, 17, 0, 0, 0, ],
[4, 0, 12, 4, 4, 4, 14, 0, 0, 0, ],
[2, 0, 6, 2, 2, 18, 12, 0, 0, 0, ],
[16, 16, 18, 20, 24, 20, 18, 0, 0, 0, ],
[12, 4, 4, 4, 4, 4, 14, 0, 0, 0, ],
[0, 0, 26, 21, 21, 17, 17, 0, 0, 0, ],
[0, 0, 22, 25, 17, 17, 17, 0, 0, 0, ],
[0, 0, 14, 17, 17, 17, 14, 0, 0, 0, ],
[0, 0, 30, 17, 30, 16, 16, 0, 0, 0, ],
[0, 0, 13, 19, 15, 1, 1, 0, 0, 0, ],
[0, 0, 22, 25, 16, 16, 16, 0, 0, 0, ],
[0, 0, 14, 16, 14, 1, 30, 0, 0, 0, ],
[8, 8, 28, 8, 8, 9, 6, 0, 0, 0, ],
[0, 0, 17, 17, 17, 19, 13, 0, 0, 0, ],
[0, 0, 17, 17, 17, 10, 4, 0, 0, 0, ],
[0, 0, 17, 21, 21, 21, 10, 0, 0, 0, ],
[0, 0, 17, 10, 4, 10, 17, 0, 0, 0, ],
[0, 0, 17, 17, 15, 1, 14, 0, 0, 0, ],
[0, 0, 31, 2, 4, 8, 31, 0, 0, 0, ],
[2, 4, 4, 8, 4, 4, 2, 0, 0, 0, ],
[4, 4, 4, 4, 4, 4, 4, 0, 0, 0, ],
[8, 4, 4, 2, 4, 4, 8, 0, 0, 0, ],
[0, 4, 2, 31, 2, 4, 0, 0, 0, 0, ],
[0, 4, 8, 31, 8, 4, 0, 0, 0, 0, ],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
[0, 0, 0, 0, 28, 20, 28, 0, 0, 0, ],
[7, 4, 4, 4, 0, 0, 0, 0, 0, 0, ],
[0, 0, 0, 4, 4, 4, 28, 0, 0, 0, ],
[0, 0, 0, 0, 16, 8, 4, 0, 0, 0, ],
[0, 0, 0, 12, 12, 0, 0, 0, 0, 0, ],
[0, 31, 1, 31, 1, 2, 4, 0, 0, 0, ],
[0, 0, 31, 1, 6, 4, 8, 0, 0, 0, ],
[0, 0, 2, 4, 12, 20, 4, 0, 0, 0, ],
[0, 0, 4, 31, 17, 1, 6, 0, 0, 0, ],
[0, 0, 31, 4, 4, 4, 31, 0, 0, 0, ],
[0, 0, 2, 31, 6, 10, 18, 0, 0, 0, ],
[0, 0, 8, 31, 9, 10, 8, 0, 0, 0, ],
[0, 0, 0, 14, 2, 2, 31, 0, 0, 0, ],
[0, 0, 30, 2, 30, 2, 30, 0, 0, 0, ],
[0, 0, 0, 21, 21, 1, 6, 0, 0, 0, ],
[0, 0, 0, 31, 0, 0, 0, 0, 0, 0, ],
[31, 1, 5, 6, 4, 4, 8, 0, 0, 0, ],
[1, 2, 4, 12, 20, 4, 4, 0, 0, 0, ],
[4, 31, 17, 17, 1, 2, 4, 0, 0, 0, ],
[0, 31, 4, 4, 4, 4, 31, 0, 0, 0, ],
[2, 31, 2, 6, 10, 18, 2, 0, 0, 0, ],
[8, 31, 9, 9, 9, 9, 18, 0, 0, 0, ],
[4, 31, 4, 31, 4, 4, 4, 0, 0, 0, ],
[0, 15, 9, 17, 1, 2, 12, 0, 0, 0, ],
[8, 15, 18, 2, 2, 2, 4, 0, 0, 0, ],
[0, 31, 1, 1, 1, 1, 31, 0, 0, 0, ],
[10, 31, 10, 10, 2, 4, 8, 0, 0, 0, ],
[0, 24, 1, 25, 1, 2, 28, 0, 0, 0, ],
[0, 31, 1, 2, 4, 10, 17, 0, 0, 0, ],
[8, 31, 9, 10, 8, 8, 7, 0, 0, 0, ],
[0, 17, 17, 9, 1, 2, 12, 0, 0, 0, ],
[0, 15, 9, 21, 3, 2, 12, 0, 0, 0, ],
[2, 28, 4, 31, 4, 4, 8, 0, 0, 0, ],
[0, 21, 21, 21, 1, 2, 4, 0, 0, 0, ],
[14, 0, 31, 4, 4, 4, 8, 0, 0, 0, ],
[8, 8, 8, 12, 10, 8, 8, 0, 0, 0, ],
[4, 4, 31, 4, 4, 8, 16, 0, 0, 0, ],
[0, 14, 0, 0, 0, 0, 31, 0, 0, 0, ],
[0, 31, 1, 10, 4, 10, 16, 0, 0, 0, ],
[4, 31, 2, 4, 14, 21, 4, 0, 0, 0, ],
[2, 2, 2, 2, 2, 4, 8, 0, 0, 0, ],
[0, 4, 2, 17, 17, 17, 17, 0, 0, 0, ],
[16, 16, 31, 16, 16, 16, 15, 0, 0, 0, ],
[0, 31, 1, 1, 1, 2, 12, 0, 0, 0, ],
[0, 8, 20, 2, 1, 1, 0, 0, 0, 0, ],
[4, 31, 4, 4, 21, 21, 4, 0, 0, 0, ],
[0, 31, 1, 1, 10, 4, 2, 0, 0, 0, ],
[0, 14, 0, 14, 0, 14, 1, 0, 0, 0, ],
[0, 4, 8, 16, 17, 31, 1, 0, 0, 0, ],
[0, 1, 1, 10, 4, 10, 16, 0, 0, 0, ],
[0, 31, 8, 31, 8, 8, 7, 0, 0, 0, ],
[8, 8, 31, 9, 10, 8, 8, 0, 0, 0, ],
[0, 14, 2, 2, 2, 2, 31, 0, 0, 0, ],
[0, 31, 1, 31, 1, 1, 31, 0, 0, 0, ],
[14, 0, 31, 1, 1, 2, 4, 0, 0, 0, ],
[18, 18, 18, 18, 2, 4, 8, 0, 0, 0, ],
[0, 4, 20, 20, 21, 21, 22, 0, 0, 0, ],
[0, 16, 16, 17, 18, 20, 24, 0, 0, 0, ],
[0, 31, 17, 17, 17, 17, 31, 0, 0, 0, ],
[0, 31, 17, 17, 1, 2, 4, 0, 0, 0, ],
[0, 24, 0, 1, 1, 2, 28, 0, 0, 0, ],
[4, 18, 8, 0, 0, 0, 0, 0, 0, 0, ],
[28, 20, 28, 0, 0, 0, 0, 0, 0, 0, ],
[0, 0, 9, 21, 18, 18, 13, 0, 0, 0, ],
[10, 0, 14, 1, 15, 17, 15, 0, 0, 0, ],
[0, 0, 14, 17, 30, 17, 30, 16, 16, 16, ],
[0, 0, 14, 16, 12, 17, 14, 0, 0, 0, ],
[0, 0, 17, 17, 17, 19, 29, 16, 16, 16, ],
[0, 0, 15, 20, 18, 17, 14, 0, 0, 0, ],
[0, 0, 6, 9, 17, 17, 30, 16, 16, 16, ],
[0, 0, 15, 17, 17, 17, 15, 1, 1, 14, ],
[0, 0, 7, 4, 4, 20, 8, 0, 0, 0, ],
[0, 2, 26, 2, 0, 0, 0, 0, 0, 0, ],
[2, 0, 6, 2, 2, 2, 2, 2, 18, 12, ],
[0, 20, 8, 20, 0, 0, 0, 0, 0, 0, ],
[0, 4, 14, 20, 21, 14, 4, 0, 0, 0, ],
[8, 8, 28, 8, 28, 8, 15, 0, 0, 0, ],
[14, 0, 22, 25, 17, 17, 17, 0, 0, 0, ],
[10, 0, 14, 17, 17, 17, 14, 0, 0, 0, ],
[0, 0, 22, 25, 17, 17, 30, 16, 16, 16, ],
[0, 0, 13, 19, 17, 17, 15, 1, 1, 1, ],
[0, 14, 17, 31, 17, 17, 14, 0, 0, 0, ],
[0, 0, 0, 11, 21, 26, 0, 0, 0, 0, ],
[0, 0, 14, 17, 17, 10, 27, 0, 0, 0, ],
[10, 0, 17, 17, 17, 17, 19, 13, 0, 0, ],
[31, 16, 8, 4, 8, 16, 31, 0, 0, 0, ],
[0, 0, 31, 10, 10, 10, 19, 0, 0, 0, ],
[31, 0, 17, 10, 4, 10, 17, 0, 0, 0, ],
[0, 0, 17, 17, 17, 17, 15, 1, 1, 14, ],
[0, 1, 30, 4, 31, 4, 4, 0, 0, 0, ],
[0, 0, 31, 8, 15, 9, 17, 0, 0, 0, ],
[0, 0, 31, 21, 31, 17, 17, 0, 0, 0, ],
[0, 4, 0, 31, 0, 4, 0, 0, 0, 0, ],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
[31, 31, 31, 31, 31, 31, 31, 31, 31, 31, ],
];
0123456789ABCDEF
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

Here's the JavaScript:

const HD44780U02ASCII=[
[],[],[],[],[],[],[],[],
[],[],[],[],[],[],[],[],
[0, 8, 12, 14, 15, 14, 12, 8, ],
[0, 2, 6, 14, 30, 14, 6, 2, ],
[0, 9, 18, 27, 0, 0, 0, 0, ],
[0, 27, 9, 18, 0, 0, 0, 0, ],
[0, 4, 14, 31, 0, 4, 14, 31, ],
[0, 31, 14, 4, 0, 31, 14, 4, ],
[0, 0, 14, 31, 31, 31, 14, 0, ],
[0, 1, 1, 5, 9, 31, 8, 4, ],
[0, 4, 14, 21, 4, 4, 4, 4, ],
[0, 4, 4, 4, 4, 21, 14, 4, ],
[0, 0, 4, 2, 31, 2, 4, 0, ],
[0, 0, 4, 8, 31, 8, 4, 0, ],
[0, 2, 4, 8, 4, 2, 0, 31, ],
[0, 8, 4, 2, 4, 8, 0, 31, ],
[0, 0, 4, 4, 14, 14, 31, 0, ],
[0, 0, 31, 14, 14, 4, 4, 0, ],
[0, 0, 0, 0, 0, 0, 0, 0, ],
[0, 4, 4, 4, 4, 0, 0, 4, ],
[0, 10, 10, 10, 0, 0, 0, 0, ],
[0, 10, 10, 31, 10, 31, 10, 10, ],
[0, 4, 15, 20, 14, 5, 30, 4, ],
[0, 24, 25, 2, 4, 8, 19, 3, ],
[0, 12, 18, 20, 8, 21, 18, 13, ],
[0, 12, 4, 8, 0, 0, 0, 0, ],
[0, 2, 4, 8, 8, 8, 4, 2, ],
[0, 8, 4, 2, 2, 2, 4, 8, ],
[0, 0, 4, 21, 14, 21, 4, 0, ],
[0, 0, 4, 4, 31, 4, 4, 0, ],
[0, 0, 0, 0, 0, 12, 4, 8, ],
[0, 0, 0, 0, 31, 0, 0, 0, ],
[0, 0, 0, 0, 0, 0, 12, 12, ],
[0, 0, 1, 2, 4, 8, 16, 0, ],
[0, 14, 17, 19, 21, 25, 17, 14, ],
[0, 4, 12, 4, 4, 4, 4, 14, ],
[0, 14, 17, 1, 2, 4, 8, 31, ],
[0, 31, 2, 4, 2, 1, 17, 14, ],
[0, 2, 6, 10, 18, 31, 2, 2, ],
[0, 31, 16, 30, 1, 1, 17, 14, ],
[0, 6, 8, 16, 30, 17, 17, 14, ],
[0, 31, 17, 1, 2, 4, 4, 4, ],
[0, 14, 17, 17, 14, 17, 17, 14, ],
[0, 14, 17, 17, 15, 1, 2, 12, ],
[0, 0, 12, 12, 0, 12, 12, 0, ],
[0, 0, 12, 12, 0, 12, 4, 8, ],
[0, 2, 4, 8, 16, 8, 4, 2, ],
[0, 0, 0, 31, 0, 31, 0, 0, ],
[0, 8, 4, 2, 1, 2, 4, 8, ],
[0, 14, 17, 1, 2, 4, 0, 4, ],
[0, 14, 17, 1, 13, 21, 21, 14, ],
[0, 4, 10, 17, 17, 31, 17, 17, ],
[0, 30, 17, 17, 30, 17, 17, 30, ],
[0, 14, 17, 16, 16, 16, 17, 14, ],
[0, 28, 18, 17, 17, 17, 18, 28, ],
[0, 31, 16, 16, 30, 16, 16, 31, ],
[0, 31, 16, 16, 30, 16, 16, 16, ],
[0, 14, 17, 16, 23, 17, 17, 15, ],
[0, 17, 17, 17, 31, 17, 17, 17, ],
[0, 14, 4, 4, 4, 4, 4, 14, ],
[0, 7, 2, 2, 2, 2, 18, 12, ],
[0, 17, 18, 20, 24, 20, 18, 17, ],
[0, 16, 16, 16, 16, 16, 16, 31, ],
[0, 17, 27, 21, 21, 17, 17, 17, ],
[0, 17, 17, 25, 21, 19, 17, 17, ],
[0, 14, 17, 17, 17, 17, 17, 14, ],
[0, 30, 17, 17, 30, 16, 16, 16, ],
[0, 14, 17, 17, 17, 21, 18, 13, ],
[0, 30, 17, 17, 30, 20, 18, 17, ],
[0, 14, 17, 16, 14, 1, 17, 14, ],
[0, 31, 4, 4, 4, 4, 4, 4, ],
[0, 17, 17, 17, 17, 17, 17, 14, ],
[0, 17, 17, 17, 17, 17, 10, 4, ],
[0, 17, 17, 17, 21, 21, 21, 10, ],
[0, 17, 17, 10, 4, 10, 17, 17, ],
[0, 17, 17, 17, 10, 4, 4, 4, ],
[0, 31, 1, 2, 4, 8, 16, 31, ],
[0, 14, 8, 8, 8, 8, 8, 14, ],
[0, 0, 16, 8, 4, 2, 1, 0, ],
[0, 14, 2, 2, 2, 2, 2, 14, ],
[0, 4, 10, 17, 0, 0, 0, 0, ],
[0, 0, 0, 0, 0, 0, 0, 31, ],
[0, 8, 4, 2, 0, 0, 0, 0, ],
[0, 0, 0, 14, 1, 15, 17, 15, ],
[0, 16, 16, 22, 25, 17, 17, 30, ],
[0, 0, 0, 14, 16, 16, 17, 14, ],
[0, 1, 1, 13, 19, 17, 17, 15, ],
[0, 0, 0, 14, 17, 31, 16, 14, ],
[0, 6, 9, 8, 28, 8, 8, 8, ],
[0, 0, 0, 15, 17, 15, 1, 14, ],
[0, 16, 16, 22, 25, 17, 17, 17, ],
[0, 4, 0, 4, 12, 4, 4, 14, ],
[0, 2, 0, 6, 2, 2, 18, 12, ],
[0, 16, 16, 18, 20, 24, 20, 18, ],
[0, 12, 4, 4, 4, 4, 4, 14, ],
[0, 0, 0, 26, 21, 21, 21, 21, ],
[0, 0, 0, 22, 25, 17, 17, 17, ],
[0, 0, 0, 14, 17, 17, 17, 14, ],
[0, 0, 0, 30, 17, 30, 16, 16, ],
[0, 0, 0, 13, 19, 15, 1, 1, ],
[0, 0, 0, 22, 25, 16, 16, 16, ],
[0, 0, 0, 14, 16, 14, 1, 30, ],
[0, 8, 8, 28, 8, 8, 9, 6, ],
[0, 0, 0, 17, 17, 17, 19, 13, ],
[0, 0, 0, 17, 17, 17, 10, 4, ],
[0, 0, 0, 17, 17, 21, 21, 10, ],
[0, 0, 0, 17, 10, 4, 10, 17, ],
[0, 0, 0, 17, 17, 15, 1, 14, ],
[0, 0, 0, 31, 2, 4, 8, 31, ],
[0, 2, 4, 4, 8, 4, 4, 2, ],
[0, 4, 4, 4, 4, 4, 4, 4, ],
[0, 8, 4, 4, 2, 4, 4, 8, ],
[0, 0, 0, 0, 13, 18, 0, 0, ],
[0, 4, 10, 17, 17, 17, 31, 0, ],
[0, 31, 17, 16, 30, 17, 17, 30, ],
[15, 5, 5, 9, 17, 31, 17, 17, ],
[0, 21, 21, 21, 14, 21, 21, 21, ],
[0, 30, 1, 1, 6, 1, 1, 30, ],
[0, 17, 17, 19, 21, 25, 17, 17, ],
[10, 4, 17, 17, 19, 21, 25, 17, ],
[0, 15, 5, 5, 5, 5, 21, 9, ],
[0, 31, 17, 17, 17, 17, 17, 17, ],
[0, 17, 17, 17, 10, 4, 8, 16, ],
[0, 17, 17, 17, 17, 17, 31, 1, ],
[0, 17, 17, 17, 15, 1, 1, 1, ],
[0, 0, 21, 21, 21, 21, 21, 31, ],
[0, 21, 21, 21, 21, 21, 31, 1, ],
[0, 24, 8, 8, 14, 9, 9, 14, ],
[0, 17, 17, 17, 25, 21, 21, 25, ],
[0, 14, 17, 5, 11, 1, 17, 14, ],
[0, 0, 0, 9, 21, 18, 18, 13, ],
[0, 4, 6, 5, 5, 4, 28, 28, ],
[0, 31, 17, 16, 16, 16, 16, 16, ],
[0, 0, 0, 31, 10, 10, 10, 19, ],
[0, 31, 16, 8, 4, 8, 16, 31, ],
[0, 0, 0, 15, 18, 18, 18, 12, ],
[6, 5, 7, 5, 5, 29, 27, 3, ],
[0, 0, 1, 14, 20, 4, 4, 2, ],
[0, 4, 14, 14, 14, 31, 4, 0, ],
[0, 14, 17, 17, 31, 17, 17, 14, ],
[0, 0, 14, 17, 17, 17, 10, 27, ],
[0, 6, 9, 4, 10, 17, 17, 14, ],
[0, 0, 0, 11, 21, 26, 0, 0, ],
[0, 0, 10, 31, 31, 31, 14, 4, ],
[0, 0, 0, 14, 16, 12, 17, 14, ],
[0, 14, 17, 17, 17, 17, 17, 17, ],
[0, 27, 27, 27, 27, 27, 27, 27, ],
[0, 4, 0, 0, 4, 4, 4, 4, ],
[0, 4, 14, 20, 20, 21, 14, 4, ],
[0, 6, 8, 8, 28, 8, 9, 22, ],
[0, 0, 17, 14, 10, 14, 17, 0, ],
[0, 17, 10, 31, 4, 31, 4, 4, ],
[0, 4, 4, 4, 0, 4, 4, 4, ],
[0, 6, 9, 4, 10, 4, 18, 12, ],
[0, 2, 5, 4, 31, 4, 20, 8, ],
[0, 31, 17, 21, 23, 21, 17, 31, ],
[0, 14, 1, 15, 17, 15, 0, 31, ],
[0, 0, 5, 10, 20, 10, 5, 0, ],
[0, 18, 21, 21, 29, 21, 21, 18, ],
[0, 15, 17, 17, 15, 5, 9, 17, ],
[0, 31, 17, 21, 17, 19, 21, 31, ],
[0, 4, 8, 12, 0, 0, 0, 0, ],
[12, 18, 18, 18, 12, 0, 0, 0, ],
[0, 4, 4, 31, 4, 4, 0, 31, ],
[12, 18, 4, 8, 30, 0, 0, 0, ],
[28, 2, 12, 2, 28, 0, 0, 0, ],
[28, 18, 28, 16, 18, 23, 18, 3, ],
[0, 17, 17, 17, 19, 29, 16, 16, ],
[0, 15, 19, 19, 15, 3, 3, 3, ],
[0, 0, 0, 0, 12, 12, 0, 0, ],
[0, 0, 0, 10, 17, 21, 21, 10, ],
[8, 24, 8, 8, 28, 0, 0, 0, ],
[0, 14, 17, 17, 17, 14, 0, 31, ],
[0, 0, 20, 10, 5, 10, 20, 0, ],
[17, 18, 20, 10, 22, 10, 15, 2, ],
[17, 18, 20, 10, 21, 1, 2, 7, ],
[24, 8, 24, 9, 27, 5, 7, 1, ],
[0, 4, 0, 4, 8, 16, 17, 14, ],
[8, 4, 4, 10, 17, 31, 17, 17, ],
[2, 4, 4, 10, 17, 31, 17, 17, ],
[4, 10, 0, 14, 17, 31, 17, 17, ],
[13, 18, 0, 14, 17, 31, 17, 17, ],
[10, 0, 4, 10, 17, 31, 17, 17, ],
[4, 10, 4, 14, 17, 31, 17, 17, ],
[0, 7, 12, 20, 23, 28, 20, 23, ],
[14, 17, 16, 16, 17, 14, 2, 6, ],
[8, 4, 0, 31, 16, 30, 16, 31, ],
[2, 4, 0, 31, 16, 30, 16, 31, ],
[4, 10, 0, 31, 16, 30, 16, 31, ],
[0, 10, 0, 31, 16, 30, 16, 31, ],
[8, 4, 0, 14, 4, 4, 4, 14, ],
[2, 4, 0, 14, 4, 4, 4, 14, ],
[4, 10, 0, 14, 4, 4, 4, 14, ],
[0, 10, 0, 14, 4, 4, 4, 14, ],
[0, 14, 9, 9, 29, 9, 9, 14, ],
[13, 18, 0, 17, 25, 21, 19, 17, ],
[8, 4, 14, 17, 17, 17, 17, 14, ],
[2, 4, 14, 17, 17, 17, 17, 14, ],
[4, 10, 0, 14, 17, 17, 17, 14, ],
[13, 18, 0, 14, 17, 17, 17, 14, ],
[10, 0, 14, 17, 17, 17, 17, 14, ],
[0, 0, 17, 10, 4, 10, 17, 0, ],
[0, 14, 4, 14, 21, 14, 4, 14, ],
[8, 4, 17, 17, 17, 17, 17, 14, ],
[2, 4, 17, 17, 17, 17, 17, 14, ],
[4, 10, 0, 17, 17, 17, 17, 14, ],
[10, 0, 17, 17, 17, 17, 17, 14, ],
[2, 4, 17, 10, 4, 4, 4, 4, ],
[24, 8, 14, 9, 9, 14, 8, 28, ],
[0, 6, 9, 9, 14, 9, 9, 22, ],
[8, 4, 0, 14, 1, 15, 17, 15, ],
[2, 4, 0, 14, 1, 15, 17, 15, ],
[4, 10, 0, 14, 1, 15, 17, 15, ],
[13, 18, 0, 14, 1, 15, 17, 15, ],
[0, 10, 0, 14, 1, 15, 17, 15, ],
[4, 10, 4, 14, 1, 15, 17, 15, ],
[0, 0, 26, 5, 15, 20, 21, 10, ],
[0, 0, 14, 16, 17, 14, 4, 12, ],
[8, 4, 0, 14, 17, 31, 16, 14, ],
[2, 4, 0, 14, 17, 31, 16, 14, ],
[4, 10, 0, 14, 17, 31, 16, 14, ],
[0, 10, 0, 14, 17, 31, 16, 14, ],
[8, 4, 0, 4, 12, 4, 4, 14, ],
[2, 4, 0, 4, 12, 4, 4, 14, ],
[4, 10, 0, 4, 12, 4, 4, 14, ],
[0, 10, 0, 4, 12, 4, 4, 14, ],
[0, 20, 8, 20, 2, 15, 17, 14, ],
[13, 18, 0, 22, 25, 17, 17, 17, ],
[8, 4, 0, 14, 17, 17, 17, 14, ],
[2, 4, 0, 14, 17, 17, 17, 14, ],
[0, 4, 10, 0, 14, 17, 17, 14, ],
[0, 13, 18, 0, 14, 17, 17, 14, ],
[0, 10, 0, 14, 17, 17, 17, 14, ],
[0, 0, 4, 0, 31, 0, 4, 0, ],
[0, 2, 4, 14, 21, 14, 4, 8, ],
[8, 4, 0, 17, 17, 17, 19, 13, ],
[2, 4, 0, 17, 17, 17, 19, 13, ],
[4, 10, 0, 17, 17, 17, 19, 13, ],
[0, 10, 0, 17, 17, 17, 19, 13, ],
[0, 2, 4, 17, 17, 15, 1, 14, ],
[0, 12, 4, 6, 5, 6, 4, 14, ],
[0, 10, 0, 17, 17, 15, 1, 14, ],
];

You can create a canvas in JavaScript with something like this:

function CreateCharCanvas(pixelSize, charWidth, charHeight, bgCol, fgCol, charDots) {
   const canvas =  document.createElement("canvas");
   canvas.width = charWidth * pixelSize;
   canvas.height = charHeight * pixelSize;
   const ctx = canvas.getContext("2d");
   ctx.fillStyle = bgCol;
   ctx.fillRect(0, 0, canvas.width, canvas.height);
   ctx.fillStyle = fgCol;
   for (var i = 0; i < charHeight; i++) {
      for (j = 0; j < charWidth; j++) {
         if ((charDots[i] >> (charWidth - j - 1)) & 1) {
            ctx.fillRect(j * pixelSize, i * pixelSize, pixelSize - 1, pixelSize - 1);
         }
      }
   }
   return canvas;
}

Call it like this:

const canvas = CreateCharCanvas(8, 5, 10, "rgb(0 165 0 / 25%)", "rgb(0 42 0)", HD44780U01ASCII[0x5c]);

To see how to use it, look (around line 2650!) in the source of this blog post to see how the above tables were derived from these arrays.

You need to display them like this:

Somebody made one of these displays show video in real time. And I've just noticed that there are people on Ali Express selling them for 99 pence each. If you want to do high-speed updates (e.g. for VU meters or spectrograms) then you need to use the 8 bit parallel interface, not the I2C which is much too slow.

This was a long trip! It started with my trying to use Claude AI to extract the font, but that solution didn't work at all. So I spent a long time messing around and getting nowhere. In the end, I used the source of the above PDF and found that there are two PDF streams: objects 80 and 85, which contain lists of vector graphics commands to create the squares representing the lit pixels on the font. These squares were given as x,y coordinates and though they weren't all exactly aligned, I found I could write a sort of "snap to grid" function to identify the exact row and column of the display of each font pixel, and then it was fairly easy to identify the pixel positions within the characters.


And I finished reading Asimov's book, but more on that later, because I started reading it again almost immediately. It's really good. Although written over a period of several decades he went to a lot of trouble to put the stories back together into a very coherent novel. It would be interesting to see the changes he made to the versions originally published as separate stories. Maybe Will Smith has done that already, ... Run Program!


 Subscribe to mkpascal.

Comments

Popular posts from this blog

Steven Johnson - So You Think You Know How to Take Derivatives?

Welsh Republic Podcast Talking With Kars Collective on Armenia Azerbaijan Conflict

Daniel Tubbenhauer on The Riemann Hypothesis and Prime Counting