From 4ef433dd72874730f35fb9e892a6f2f34e5a7b32 Mon Sep 17 00:00:00 2001 From: Stefan Bethke Date: Sun, 1 Jun 2025 16:14:10 +0200 Subject: [PATCH] Switch indexing by Unicode code point --- buba/static/display.js | 543 ++++++++++++++++++++--------------------- 1 file changed, 271 insertions(+), 272 deletions(-) diff --git a/buba/static/display.js b/buba/static/display.js index d30b9a5..2af6c16 100644 --- a/buba/static/display.js +++ b/buba/static/display.js @@ -53,7 +53,7 @@ export default class { let g = document.createElementNS(this.svgns, "g"); rowSvg.appendChild(g); g.id = `geavision__row_${r}_${c}`; - g.setAttribute("transform", `translate(${this.config.stripWidth * (c-1)} 0)`); + g.setAttribute("transform", `translate(${this.config.stripWidth * (c - 1)} 0)`); // segmentElements must be in the correct order in the SVG for (let s = 1; s <= segmentElements.length; s++) { const clone = segmentElements[s - 1].cloneNode(true); @@ -64,9 +64,9 @@ export default class { } } let c = 1 - this.applyText(1, 1," !\"#$%&'()*+,-./0123456789:;<=>?"); - this.applyText(2, 1,"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"); - this.applyText(3, 1,"`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u0123"); + this.applyText(1, 1, " !\"#$%&'()*+,-./0123456789:;<=>?"); + this.applyText(2, 1, "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"); + this.applyText(3, 1, "`abcdefghijklmnopqrstuvwxyz{|}~\u2302"); } applyCharacter(row, col, char) { @@ -75,11 +75,11 @@ export default class { return 0; for (let c of this.font[char]) { for (let s = 0; s < c.length; s++) { - const e = this.container.querySelector(`#geavision__row_${row}_${col}_${s+1}`) + const e = this.container.querySelector(`#geavision__row_${row}_${col}_${s + 1}`) if (e) { e.classList = c[s] === '#' ? "gvson" : "gvsoff"; } else { - console.log(`Unable to find element #geavision__row_${row}_${col}_${s+1} for segment '${c}'`) + console.log(`Unable to find element #geavision__row_${row}_${col}_${s + 1} for segment '${c}'`) } } col++; @@ -89,64 +89,68 @@ export default class { applyText(row, col, text) { for (let c of text) { - col += this.applyCharacter(row, col, c.codePointAt(0)) + col += this.applyCharacter(row, col, c) } return col; } defineFont() { - let defs = [] + /* + * This is the font definition for the Geascript Proportional font, reverse engineered from the actual display. + * The index is the unicode code point of the character. However, the actual font is encoded in CP437, so the + * position in the source code corresponds to the CP437 code point. + */ + let defs = {} // 0x00-0x0f - defs[0x00] = [] - defs[0x01] = [] - defs[0x02] = [] - defs[0x03] = [] - defs[0x04] = [] - defs[0x05] = [] - defs[0x06] = [] - defs[0x07] = [] - defs[0x08] = [] - defs[0x09] = [] - defs[0x0a] = [] - defs[0x0b] = [] - defs[0x0c] = [] - defs[0x0d] = [] - defs[0x0e] = [] - defs[0x0f] = [] + defs['\u0001'] = [] + defs['\u0002'] = [] + defs['\u0003'] = [] + defs['\u0004'] = [] + defs['\u0005'] = [] + defs['\u0006'] = [] + defs['\u0007'] = [] + defs['\u0008'] = [] + defs['\u0009'] = [] + defs['\u000a'] = [] + defs['\u000b'] = [] + defs['\u000c'] = [] + defs['\u000d'] = [] + defs['\u000e'] = [] + defs['\u000f'] = [] // 0x10-0x1f - defs[0x10] = [] - defs[0x11] = [] - defs[0x12] = [] - defs[0x13] = [] - defs[0x14] = [] - defs[0x15] = [] - defs[0x16] = [] - defs[0x17] = [] - defs[0x18] = [] - defs[0x19] = [] - defs[0x1a] = [] - defs[0x1b] = [] - defs[0x1c] = [] - defs[0x1d] = [] - defs[0x1e] = [] - defs[0x1f] = [] + defs['\u0010'] = [] + defs['\u0011'] = [] + defs['\u0012'] = [] + defs['\u0013'] = [] + defs['\u0014'] = [] + defs['\u0015'] = [] + defs['\u0016'] = [] + defs['\u0017'] = [] + defs['\u0018'] = [] + defs['\u0019'] = [] + defs['\u001a'] = [] + defs['\u001b'] = [] + defs['\u001c'] = [] + defs['\u001d'] = [] + defs['\u001e'] = [] + defs['\u001f'] = [] // 0x20-0x2f - defs[0x20] = [ // space + defs['\u0020'] = [ // space '...... ...... ...... ......' ] - defs[0x21] = [ // ! + defs['\u0021'] = [ // ! '###### ###### ##.... ###...', '...... ...... ...... ......', ] - defs[0x22] = [ // " + defs['\u0022'] = [ // " '###### ...... ...... ......', '...... ...... ...... ......', '###### ...... ...... ......', '...... ...... ...... ......', ] - defs[0x23] = [ // # + defs['\u0023'] = [ // # '...... ###... .#.... ......', '###### ###### ###### ###...', '...... ###... .#.... ......', @@ -154,7 +158,7 @@ export default class { '...... ###... .#.... ......', '...... ...... ...... ......', ] - defs[0x24] = [ // $ + defs['\u0024'] = [ // $ '.....# ####.# ..#.#. ......', '...### ...### #.#### ......', '###### ###### ###### ###...', @@ -162,63 +166,63 @@ export default class { '....#. ....#. ####.. ......', '...... ...... ...... ......', ] - defs[0x25] = [ // % + defs['\u0025'] = [ // % '...### .....# ###### ......', '.....# .####. ...... ......', '...##. #..... ..#### ......', '...... ...... ...... ......', ] - defs[0x26] = [ // & + defs['\u0026'] = [ // & '.###.# .#...# ###### #.#...', '###.## ###### ...... ###...', '#.###. #...#. ###.## ##....', '...... ...... ..##.# #.#...', '...... ...... ...... ......', ] - defs[0x27] = [ // ' + defs['\u0027'] = [ // ' '###### ...... ...... ......', '...... ...... ...... ......', ] - defs[0x28] = [ // ( + defs['\u0028'] = [ // ( '.....# .##### ###.#. ......', '.####. #..... ...#.# #.#...', '#..... ...... ...... .#....', '...... ...... ...... ......', ] - defs[0x29] = [ // ) + defs['\u0029'] = [ // ) '.#.... ...... ...... ..#...', '#.##.# .#.... ....## ##....', '....#. #.#### ####.. ......', '...... ...... ...... ......', ] - defs[0x2a] = [ // * + defs['\u002a'] = [ // * '...... ...#.# .#..## ......', '...... ....## #####. ......', '...... ...##. .#.#.# ......', '...... ...... ...... ......', ] - defs[0x2b] = [ // + + defs['\u002b'] = [ // + '...... ...... .#.... ......', '...... ...### ###### ......', '...... ...... .#.... ......', '...... ...... ...... ......', ] - defs[0x2c] = [ // , + defs['\u002c'] = [ // , '...... ...... ...... .....#', '...... ...... ...... #####.', '...... ...... ...... ......', ] - defs[0x2d] = [ // - + defs['\u002d'] = [ // - '...... ...... .#.... ......', '...... ...... .#.... ......', '...... ...... .#.... ......', '...... ...... ...... ......', ] - defs[0x2e] = [ // . + defs['\u002e'] = [ // . '...... ...... ...... ###...', '...... ...... ...... ......', ] - defs[0x2f] = [ // / + defs['\u002f'] = [ // / '...... .....# ###### ###...', '.....# .####. ...... ......', '#####. ...... ...... ......', @@ -226,94 +230,94 @@ export default class { ] // 0x30-0x3f - defs[0x30] = [ // 0 + defs['\u0030'] = [ // 0 '.##### ###### ###### #.#...', '###... ...... ...... ###...', '#.#### ###### ###### ##....', '...... ...... ...... ......', ] - defs[0x31] = [ // 1 + defs['\u0031'] = [ // 1 '.....# .#.... ...... ......', '.####. #..... ...... ......', '###### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x32] = [ // 2 + defs['\u0032'] = [ // 2 '.##... .....# ###### ###...', '###... ...### #..... ###...', '#.#### #####. ...... ###...', '...... ...... ...... ......', ] - defs[0x33] = [ // 3 + defs['\u0033'] = [ // 3 '.##... ...... ...... #.#...', '###... ...### #..... ###...', '#.#### #####. ###### ##....', '...... ...... ...... ......', ] - defs[0x34] = [ // 4 + defs['\u0034'] = [ // 4 '###### ###### ##..........', '...... ...... .#.... ......', '...... ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x35] = [ // 5 + defs['\u0035'] = [ // 5 '###### ###... ..#### #.#...', '###... ###... ...... ###...', '###... #.#### ###### ##....', '...... ...... ...... ......', ] - defs[0x36] = [ // 6 + defs['\u0036'] = [ // 6 '.##### ###### ###### #.#...', '###... ###... ...... ###...', '#.#... #.#### ###### ##....', '...... ...... ...... ......', ] - defs[0x37] = [ // 7 + defs['\u0037'] = [ // 7 '###... .....# ###### ###...', '###..# .####. ...... ......', '#####. #..... ...... ......', '...... ...... ...... ......', ] - defs[0x38] = [ // 8 + defs['\u0038'] = [ // 8 '.##### ####.# ###### #.#...', '###... ...### #..... ###...', '#.#### #####. ###### ##....', '...... ...... ...... ......', ] - defs[0x39] = [ // 9 + defs['\u0039'] = [ // 9 '.##### ####.# ...... #.#...', '###... ...### #..... ###...', '#.#### ###### ###### ##....', '...... ...... ...... ......', ] - defs[0x3a] = [ // : + defs['\u003a'] = [ // : '...... ###... ..#### ......', '...... ...... ...... ......', ] - defs[0x3b] = [ // ; + defs['\u003b'] = [ // ; '...... ...... ...... .....#', '...... ...... .#.... #####.', '...... ...... ...... ......', ] - defs[0x3c] = [ // < + defs['\u003c'] = [ // < '...... .....# ###.#. ......', '...... .####. ...#.# #.#...', '...... #..... ...... .#...', '...... ...... ...... ......', ] - defs[0x3d] = [ // = + defs['\u003d'] = [ // = '...... ...### #.#### ......', '...... ...### #.#### ......', '...... ...### #.#### ......', '...... ...... ...... ......', ] - defs[0x3e] = [ // > + defs['\u003e'] = [ // > '...... .#.... ...... ..#...', '...... #.##.# ....## ##....', '...... ....#. ####.. ......', '...... ...... ...... ......', ] - defs[0x3f] = [ // ? + defs['\u003f'] = [ // ? '.##### ...... ...... ......', '###... .....# ###### ....##', '#.#### #####. ...... ......', @@ -321,7 +325,7 @@ export default class { ] // 0x40-0x4f - defs[0x40] = [ // @ + defs['\u0040'] = [ // @ '...... .##### ###### ######', '...... ###... ...... ....##', '...... ###... .##### #.#.#.', @@ -329,89 +333,89 @@ export default class { '...... #.#### ###### ###...', '...... ...... ...... ......', ] - defs[0x41] = [ // A + defs['\u0041'] = [ // A '.##### ###### ###### ###...', '###... ...### #..... ......', '#.#### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x42] = [ // B + defs['\u0042'] = [ // B '###### ###### ###### ###...', '###... ...### #..... ###...', '#.#### #####. ###### ##....', '...... ...... ...... ......', ] - defs[0x43] = [ // C + defs['\u0043'] = [ // C '.##### ###### ###### #.#...', '###... ...... ...... ###...', '#.#... ...... ...... ##....', '...... ...... ...... ......', ] - defs[0x44] = [ // D + defs['\u0044'] = [ // D '###### ###### ###### ###...', '###... ...... ...... ###...', '#.#### ###### ###### ##....', '...... ...... ...... ......', ] - defs[0x45] = [ // E + defs['\u0045'] = [ // E '###### ###### ###### ###...', '###... ...### #..... ###...', '###... ...... ...... ###...', '...... ...... ...... ......', ] - defs[0x46] = [ // F + defs['\u0046'] = [ // F '###### ###### ###### ###...', '###... ...### #..... ......', '###... ...... ...... ......', '...... ...... ...... ......', ] - defs[0x47] = [ // G + defs['\u0047'] = [ // G '.##### ###### ###### #.#...', '###... .....# ...... ###...', '#.#... ...### ###### ##....', '...... ...... ...... ......', ] - defs[0x48] = [ // H + defs['\u0048'] = [ // H '###### ###### ###### ###...', '...... ...### #..... ......', '###### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x49] = [ // I + defs['\u0049'] = [ // I '###### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x4a] = [ // J + defs['\u004a'] = [ // J '###... ...... .....# #.#...', '###... ...... ...... ###...', '#.#### ###### ###### ##....', '...... ...... ...... ......', ] - defs[0x4b] = [ // K + defs['\u004b'] = [ // K '###### ###### ###### ###...', '.....# .####. ###.#. ......', '.####. #..... ...#.# ###...', '...... ...... ...... ......', ] - defs[0x4c] = [ // L + defs['\u004c'] = [ // L '###### ###### ###### ###...', '...... ...... ...... ###...', '...... ...... ...... ###...', '...... ...... ...... ......', ] - defs[0x4d] = [ // M + defs['\u004d'] = [ // M '#.#### ###### ###### ###...', '....## ####.. ...... ......', '.##### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x4e] = [ // N + defs['\u004e'] = [ // N '#.#### ###### ###### ###...', '....#. #.##.# ...... ......', '###### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x4f] = [ // O + defs['\u004f'] = [ // O '.##### ###### ###### #.#...', '###... ...... ...... ###...', '#.#### ###### ###### ##....', @@ -419,94 +423,94 @@ export default class { ] // 0x50-0x5f - defs[0x50] = [ // P + defs['\u0050'] = [ // P '###### ###### ###### ###...', '###... ...### #..... ......', '#.#### #####. ...... ......', '...... ...... ...... ......', ] - defs[0x51] = [ // Q + defs['\u0051'] = [ // Q '.##### ###### ###### #.#...', '###... ...... ..#.#. ##....', '#.#### ###### ####.# #.#...', '...... ...... ...... ......', ] - defs[0x52] = [ // R + defs['\u0052'] = [ // R '###### ###### ###### ###...', '###... ...### ###.#. ......', '#.#### #####. ...#.# #.#...', '...... ...... ...... ......', ] - defs[0x53] = [ // S + defs['\u0053'] = [ // S '.##### ####.# ...... #.#...', '###... ...### #..... ###...', '#.#... ....#. ###### ##....', '...... ...... ...... ......', ] - defs[0x54] = [ // T + defs['\u0054'] = [ // T '###... ...... ...... ......', '###### ###### ###### ###...', '###... ...... ...... ......', '...... ...... ...... ......', ] - defs[0x55] = [ // U + defs['\u0055'] = [ // U '###### ###### ###### #.#...', '...... ...... ...... ###...', '###### ###### ###### ##....', '...... ...... ...... ......', ] - defs[0x56] = [ // V + defs['\u0056'] = [ // V '###### ###### ###.#. ......', '...... ...... ...### #.....', '###### ###### ####.. ......', '...... ...... ...... ......', ] - defs[0x57] = [ // W + defs['\u0057'] = [ // W '###### ###### ###### #.....', '...... ...... #####. ......', '###### ###### ###### #.....', '...... ...... ...... ......', ] - defs[0x58] = [ // X + defs['\u0058'] = [ // X '####.# .#...# ###### ###...', '....## ###### ...... ......', '#####. #...#. ###### ###...', '...... ...... ...... ......', ] - defs[0x59] = [ // Y + defs['\u0059'] = [ // Y '###### ####.# ...... ......', '...... ....## ###### ###...', '###### #####. ...... ......', '...... ...... ...... ......', ] - defs[0x5a] = [ // Z + defs['\u005a'] = [ // Z '###... .....# ###### ###...', '###..# .####. ...... ###...', '#####. #..... ...... ###...', '...... ...... ...... ......', ] - defs[0x5b] = [ // [ + defs['\u005b'] = [ // [ '###### ###### ###### ###...', '###... ...... ...... ###...', '...... ...... ...... ......', ] - defs[0x5c] = [ // \\ (defined like space in device font + defs['\u005c'] = [ // \\ (defined like space in device font '...... ...... ...... ......', '...... ...... ...... ......', '...... ...... ...... ......', ] - defs[0x5d] = [ // ] + defs['\u005d'] = [ // ] '###... ...... ...... ###...', '###### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x5e] = [ // ^ + defs['\u005e'] = [ // ^ '.....# .##... ...... ......', '..#### ##.... ...... ......', '....#. #.#... ...... ......', '...... ...... ...... ......', ] - defs[0x5f] = [ // _ + defs['\u005f'] = [ // _ '...... ...... ...... ###...', '...... ...... ...... ###...', '...... ...... ...... ###...', @@ -514,80 +518,80 @@ export default class { ] // 0x60-0x6f - defs[0x60] = [ // ` + defs['\u0060'] = [ // ` '####.# .#.... ...... ......', '....#. #.... ...... ......', '...... ...... ...... ......', ] - defs[0x61] = [ // a + defs['\u0061'] = [ // a '...... .##... .##### #.#...', '...... ###... .#.... ##....', '...... #.#### ###### ###...', '...... ...... ...... ......', ] - defs[0x62] = [ // b + defs['\u0062'] = [ // b '###### ###### ###### ###...', '...... ###... ...... ###...', '...... #.#### ###### ##....', '...... ...... ...... ......', ] - defs[0x63] = [ // c + defs['\u0063'] = [ // c '...... .##### ###### #.#...', '...... ###... ...... ###...', '...... #.#... ...... ##....', '...... ...... ...... ......', ] - defs[0x64] = [ // d + defs['\u0064'] = [ // d '...... .##### ###### #.#...', '...... ###... ...... ###...', '###### ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x65] = [ // e + defs['\u0065'] = [ // e '...... .##### ###### #.#...', '...... ###... .#.... ###...', '...... #.#### ##.... ##....', '...... ...... ...... ......', ] - defs[0x66] = [ // f + defs['\u0066'] = [ // f '...... ###... ...... ......', '.##### ###### ###### ###...', '#.#... ###... ...... ......', '...... ...... ...... ......', ] - defs[0x67] = [ // g + defs['\u0067'] = [ // g '...... .##### ###### #.#.##', '...... ###... ...... ###.##', '...... #.#### ###### #####.', '...... ...... ...... ......', ] - defs[0x68] = [ // h + defs['\u0068'] = [ // h '###### ###### ###### ###...', '...... ###... ...... ......', '...... #.#### ###### ###...', '...... ...... ...... ......', ] - defs[0x69] = [ // i + defs['\u0069'] = [ // i '###... ###### ###### ###...', '...... ...... ...... ......', ] - defs[0x6a] = [ // j + defs['\u006a'] = [ // j '...... ...... ...... ....##', '###... ###### ###### #####.', '...... ...... ...... ......', ] - defs[0x6b] = [ // k + defs['\u006b'] = [ // k '###### ###### ###### ###...', '...... .....# ###.#. ......', '...... .####. ...#.# #.#...', '...... ...... ...... ......', ] - defs[0x6c] = [ // l + defs['\u006c'] = [ // l '###### ###### ###### #.#...', '...... ...... ...... ##....', '...... ...... ...... ......', ] - defs[0x6d] = [ // m + defs['\u006d'] = [ // m '...... ###### ###### ###...', '...... .##... ...... ......', '...... #.#### ###### ###...', @@ -595,13 +599,13 @@ export default class { '...... #.#### ###### ###...', '...... ...... ...... ......', ] - defs[0x6e] = [ // n + defs['\u006e'] = [ // n '...... ###### ###### ###...', '...... .##... ...... ......', '...... #.#### ###### ###...', '...... ...... ...... ......', ] - defs[0x6f] = [ // o + defs['\u006f'] = [ // o '...... .##### ###### #.#...', '...... ###... ...... ###...', '...... #.#### ###### ##....', @@ -609,88 +613,88 @@ export default class { ] // 0x70-0x7f - defs[0x70] = [ // p + defs['\u0070'] = [ // p '...... ###### ###### ######', '...... ###... ...... ###...', '...... #.#### ###### ##....', '...... ...... ...... ......', ] - defs[0x71] = [ // q + defs['\u0071'] = [ // q '...... .##### ###### #.#...', '...... ###... ...... ###...', '...... ###### ###### ######', '...... ...... ...... ......', ] - defs[0x72] = [ // r + defs['\u0072'] = [ // r '...... ###### ###### ###...', '...... .##... ...... ......', '...... ...... ...... ......', ] - defs[0x73] = [ // s + defs['\u0073'] = [ // s '...... .##### ##.... #.#...', '...... ###... .#.... ###...', '...... #.#... .##### ##....', '...... ...... ...... ......', ] - defs[0x74] = [ // t + defs['\u0074'] = [ // t '...... ###... ...... ......', '###### ###### ###### #.#...', '...... ###... ...... ##....', '...... ...... ...... ......', ] - defs[0x75] = [ // u + defs['\u0075'] = [ // u '...... ###### ###### #.#...', '...... ...... ...... ###...', '...... ###### ###### #.#...', '...... ...... ...... ......', ] - defs[0x76] = [ // v + defs['\u0076'] = [ // v '...... ###### ###.#. ......', '...... ...... ...### #.....', '...... ###### ####.. ......', '...... ...... ...... ......', ] - defs[0x77] = [ // w + defs['\u0077'] = [ // w '...... ###### ###### #.....', '...... ...... #####. ......', '...... ###### ###### #.....', '...... ...... ...... ......', ] - defs[0x78] = [ // x + defs['\u0078'] = [ // x '...... ####.# ....## ##....', '...... ....## #####. ......', '...... #####. ...#.# #.#...', '...... ...... ...... ......', ] - defs[0x79] = [ // y + defs['\u0079'] = [ // y '...... ###### ###### #.#.##', '...... ...... ...... ###.##', '...... ###### ###### #####.', '...... ...... ...... ......', ] - defs[0x7a] = [ // z + defs['\u007a'] = [ // z '...... ###... ....## ###...', '...... ###..# ####.. ###...', '...... #####. ...... ###...', '...... ...... ...... ......', ] - defs[0x7b] = [ // { + defs['\u007b'] = [ // { '...... .....# ...... ......', '.##### #####. ###### #.#...', '###... ...... ...... ###...', '...... ...... ...... ......', ] - defs[0x7c] = [ // | + defs['\u007c'] = [ // | '###### ###### ###### ######', '...... ...... ...... ......', ] - defs[0x7d] = [ // } + defs['\u007d'] = [ // } '###... ...... ...... ###...', '#.#### ####.# ###### ##....', '...... ....#. ...... ......', '...... ...... ...... ......', ] - defs[0x7e] = [ // ~ + defs['\u007e'] = [ // ~ '...... ...... ...... ......', '...... .....# ##.... ......', '...... ...### ...... ......', @@ -699,7 +703,7 @@ export default class { '...... ...... .###.. ......', '...... ...... ...... ......', ] - defs[0x7f] = [ // del + defs['\u2302'] = [ // CP437 0x7f '.....# .##### ###### ###...', '..#### ...... ...... ###...', '....#. #.#### ###### ###...', @@ -707,162 +711,157 @@ export default class { ] // 0x80-0x8f - defs[0x80] = [] - defs[0x81] = [] - defs[0x82] = [] - defs[0x83] = [] - defs[0x84] = [] - defs[0x85] = [] - defs[0x86] = [] - defs[0x87] = [] - defs[0x88] = [] - defs[0x89] = [] - defs[0x8a] = [] - defs[0x8b] = [] - defs[0x8c] = [] - defs[0x8d] = [] - defs[0x8e] = [] - defs[0x8f] = [] + defs['\u0080'] = [] + defs['\u0081'] = [] + defs['\u0082'] = [] + defs['\u0083'] = [] + defs['\u0084'] = [] + defs['\u0085'] = [] + defs['\u0086'] = [] + defs['\u0087'] = [] + defs['\u0088'] = [] + defs['\u0089'] = [] + defs['\u008a'] = [] + defs['\u008b'] = [] + defs['\u008c'] = [] + defs['\u008d'] = [] + defs['\u008e'] = [] + defs['\u008f'] = [] // 0x90-0x9f - defs[0x90] = [] - defs[0x91] = [] - defs[0x92] = [] - defs[0x93] = [] - defs[0x94] = [] - defs[0x95] = [] - defs[0x96] = [] - defs[0x97] = [] - defs[0x98] = [] - defs[0x99] = [] - defs[0x9a] = [] - defs[0x9b] = [] - defs[0x9c] = [] - defs[0x9d] = [] - defs[0x9e] = [] - defs[0x9f] = [] + defs['\u0090'] = [] + defs['\u0091'] = [] + defs['\u0092'] = [] + defs['\u0093'] = [] + defs['\u0094'] = [] + defs['\u0095'] = [] + defs['\u0096'] = [] + defs['\u0097'] = [] + defs['\u0098'] = [] + defs['\u0099'] = [] + defs['\u009a'] = [] + defs['\u009b'] = [] + defs['\u009c'] = [] + defs['\u009d'] = [] + defs['\u009e'] = [] + defs['\u009f'] = [] // 0xa0-0xaf - defs[0xa0] = [] - defs[0xa1] = [] - defs[0xa2] = [] - defs[0xa3] = [] - defs[0xa4] = [] - defs[0xa5] = [] - defs[0xa6] = [] - defs[0xa7] = [] - defs[0xa8] = [] - defs[0xa9] = [] - defs[0xaa] = [] - defs[0xab] = [] - defs[0xac] = [] - defs[0xad] = [] - defs[0xae] = [] - defs[0xaf] = [] + defs['\u00a0'] = [] + defs['\u00a1'] = [] + defs['\u00a2'] = [] + defs['\u00a3'] = [] + defs['\u00a4'] = [] + defs['\u00a5'] = [] + defs['\u00a6'] = [] + defs['\u00a7'] = [] + defs['\u00a8'] = [] + defs['\u00a9'] = [] + defs['\u00aa'] = [] + defs['\u00ab'] = [] + defs['\u00ac'] = [] + defs['\u00ad'] = [] + defs['\u00ae'] = [] + defs['\u00af'] = [] // 0xb0-0xbf - defs[0xb0] = [] - defs[0xb1] = [] - defs[0xb2] = [] - defs[0xb3] = [] - defs[0xb4] = [] - defs[0xb5] = [] - defs[0xb6] = [] - defs[0xb7] = [] - defs[0xb8] = [] - defs[0xb9] = [] - defs[0xba] = [] - defs[0xbb] = [] - defs[0xbc] = [] - defs[0xbd] = [] - defs[0xbe] = [] - defs[0xbf] = [] + defs['\u00b0'] = [] + defs['\u00b1'] = [] + defs['\u00b2'] = [] + defs['\u00b3'] = [] + defs['\u00b4'] = [] + defs['\u00b5'] = [] + defs['\u00b6'] = [] + defs['\u00b7'] = [] + defs['\u00b8'] = [] + defs['\u00b9'] = [] + defs['\u00ba'] = [] + defs['\u00bb'] = [] + defs['\u00bc'] = [] + defs['\u00bd'] = [] + defs['\u00be'] = [] + defs['\u00bf'] = [] // 0xc0-0xcf - defs[0xc0] = [] - defs[0xc1] = [] - defs[0xc2] = [] - defs[0xc3] = [] - defs[0xc4] = [] - defs[0xc5] = [] - defs[0xc6] = [] - defs[0xc7] = [] - defs[0xc8] = [] - defs[0xc9] = [] - defs[0xca] = [] - defs[0xcb] = [] - defs[0xcc] = [] - defs[0xcd] = [] - defs[0xce] = [] - defs[0xcf] = [] + defs['\u00c0'] = [] + defs['\u00c1'] = [] + defs['\u00c2'] = [] + defs['\u00c3'] = [] + defs['\u00c4'] = [] + defs['\u00c5'] = [] + defs['\u00c6'] = [] + defs['\u00c7'] = [] + defs['\u00c8'] = [] + defs['\u00c9'] = [] + defs['\u00ca'] = [] + defs['\u00cb'] = [] + defs['\u00cc'] = [] + defs['\u00cd'] = [] + defs['\u00ce'] = [] + defs['\u00cf'] = [] // 0xd0-0xdf - defs[0xd0] = [] - defs[0xd1] = [] - defs[0xd2] = [] - defs[0xd3] = [] - defs[0xd4] = [] - defs[0xd5] = [] - defs[0xd6] = [] - defs[0xd7] = [] - defs[0xd8] = [] - defs[0xd9] = [] - defs[0xda] = [] - defs[0xdb] = [] - defs[0xdc] = [] - defs[0xdd] = [] - defs[0xde] = [] - defs[0xdf] = [] + defs['\u00d0'] = [] + defs['\u00d1'] = [] + defs['\u00d2'] = [] + defs['\u00d3'] = [] + defs['\u00d4'] = [] + defs['\u00d5'] = [] + defs['\u00d6'] = [] + defs['\u00d7'] = [] + defs['\u00d8'] = [] + defs['\u00d9'] = [] + defs['\u00da'] = [] + defs['\u00db'] = [] + defs['\u00dc'] = [] + defs['\u00dd'] = [] + defs['\u00de'] = [] + defs['\u00df'] = [] // 0xe0-0xef - defs[0xe0] = [] - defs[0xe1] = [] - defs[0xe2] = [] - defs[0xe3] = [] - defs[0xe4] = [] - defs[0xe5] = [] - defs[0xe6] = [] - defs[0xe7] = [] - defs[0xe8] = [] - defs[0xe9] = [] - defs[0xea] = [] - defs[0xeb] = [] - defs[0xec] = [] - defs[0xed] = [] - defs[0xee] = [] - defs[0xef] = [] + defs['\u00e0'] = [] + defs['\u00e1'] = [] + defs['\u00e2'] = [] + defs['\u00e3'] = [] + defs['\u00e4'] = [] + defs['\u00e5'] = [] + defs['\u00e6'] = [] + defs['\u00e7'] = [] + defs['\u00e8'] = [] + defs['\u00e9'] = [] + defs['\u00ea'] = [] + defs['\u00eb'] = [] + defs['\u00ec'] = [] + defs['\u00ed'] = [] + defs['\u00ee'] = [] + defs['\u00ef'] = [] // 0xf0-0xff - defs[0xf0] = [] - defs[0xf1] = [] - defs[0xf2] = [] - defs[0xf3] = [] - defs[0xf4] = [] - defs[0xf5] = [] - defs[0xf6] = [] - defs[0xf7] = [] - defs[0xf8] = [] - defs[0xf9] = [] - defs[0xfa] = [] - defs[0xfb] = [] - defs[0xfc] = [] - defs[0xfd] = [] - defs[0xfe] = [] - defs[0xff] = [] - + defs['\u00f0'] = [] + defs['\u00f1'] = [] + defs['\u00f2'] = [] + defs['\u00f3'] = [] + defs['\u00f4'] = [] + defs['\u00f5'] = [] + defs['\u00f6'] = [] + defs['\u00f7'] = [] + defs['\u00f8'] = [] + defs['\u00f9'] = [] + defs['\u00fa'] = [] + defs['\u00fb'] = [] + defs['\u00fc'] = [] + defs['\u00fd'] = [] + defs['\u00fe'] = [] + defs['\u00ff'] = [] this.font = [] - for (let i = 0; i < 256; i++) { - if (defs[i] === undefined) { - this.font[i] = [] - continue - } + for (let d of Object.keys(defs)) { let f = [] - for (let c of defs[i]) { + for (let c of defs[d]) { f.push(c.replace(/[^.#]/g, "")) } - this.font[i] = f + this.font[d] = f } } } \ No newline at end of file