1165 lines
No EOL
38 KiB
JavaScript
1165 lines
No EOL
38 KiB
JavaScript
export default class {
|
|
constructor(container, config = {}) {
|
|
this.svgns = "http://www.w3.org/2000/svg";
|
|
this.config = Object.assign({
|
|
templateSvgUrl: "static/geascript-proportional.svg",
|
|
rows: 4,
|
|
cols: 120,
|
|
segments: 24,
|
|
stripWidth: 0,
|
|
}, config);
|
|
console.log("Building display...");
|
|
this.container = container;
|
|
this.segmentsDom = undefined;
|
|
this.defineFont()
|
|
fetch(this.config.templateSvgUrl)
|
|
.then(res => res.blob())
|
|
.then(blob => blob.bytes())
|
|
.then(blob => {
|
|
let parser = new DOMParser();
|
|
this.segmentsDom = parser.parseFromString(new TextDecoder().decode(blob), 'image/svg+xml');
|
|
this.buildDisplay()
|
|
console.log("Done building display");
|
|
})
|
|
.catch(err => console.log(err));
|
|
}
|
|
|
|
buildDisplay() {
|
|
const svgTemplate = this.segmentsDom.getElementsByTagName("svg")[0];
|
|
const segmentsGroup = svgTemplate.getElementById("segments");
|
|
const segmentElements = Array.from(segmentsGroup.childNodes).filter(e => e.nodeType === Node.ELEMENT_NODE);
|
|
const viewBox = svgTemplate.getAttribute("viewBox").split(" ").map(x => parseFloat(x));
|
|
if (this.config.stripWidth === 0) {
|
|
this.config.stripWidth = viewBox[2];
|
|
}
|
|
for (var s of segmentElements) {
|
|
s.removeAttribute("style");
|
|
}
|
|
this.container.innerHTML = "";
|
|
for (let r = 0; r < this.config.rows; r++) {
|
|
const rowDiv = document.createElement("div");
|
|
this.container.appendChild(rowDiv);
|
|
rowDiv.id = `geavision__row_${r}`
|
|
rowDiv.classList = "geavision geavision__row";
|
|
let rowSvg = document.createElementNS(this.svgns, "svg");
|
|
rowDiv.appendChild(rowSvg);
|
|
rowSvg.classList = "geavision geavision__row geavision__row_svg";
|
|
rowSvg.id = `geavision__row_${r}_svg`;
|
|
const width = this.config.stripWidth * this.config.cols
|
|
rowSvg.setAttribute("viewBox", `0 0 ${parseInt(width)} ${parseInt(viewBox[3])}`);
|
|
// rowSvg.setAttribute("width", "320");
|
|
// rowSvg.setAttribute("height", "15");
|
|
|
|
for (let c = 0; c < this.config.cols; c++) {
|
|
let g = document.createElementNS(this.svgns, "g");
|
|
rowSvg.appendChild(g);
|
|
g.id = `geavision__row_${r}_${c}`;
|
|
g.setAttribute("transform", `translate(${this.config.stripWidth * (c)} 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);
|
|
g.appendChild(clone);
|
|
clone.id = `geavision__row_${r}_${c}_${s}`;
|
|
clone.classList = "gvsoff";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
eraseCol(row, col) {
|
|
for (let i = 1; i <= this.config.segments; i++) {
|
|
const e = this.container.querySelector(`#geavision__row_${row}_${col}_${i}`)
|
|
if (e) {
|
|
e.classList = "gvsoff";
|
|
} else {
|
|
console.log(`Unable to find element #geavision__row_${row}_${col}_${i} for segment '${i}'`)
|
|
}
|
|
}
|
|
}
|
|
|
|
eraseCols(row, col_start, col_end) {
|
|
for (let i = col_start; i < col_end; i++) {
|
|
this.eraseCol(row, i);
|
|
}
|
|
}
|
|
|
|
eraseRow(row) {
|
|
this.eraseCol(row, 0, this.config.cols);
|
|
}
|
|
|
|
applyCharacter(row, col, char) {
|
|
if (char === "\u00c7")
|
|
console.log("apply font[d]", char.codePointAt(0), this.font[char])
|
|
let f = this.font[char];
|
|
if (f === undefined)
|
|
return 0;
|
|
for (let c of this.font[char]) {
|
|
if (col >= this.config.cols)
|
|
return this.font[char].length;
|
|
for (let s = 0; s < c.length; s++) {
|
|
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}'`)
|
|
}
|
|
}
|
|
col++;
|
|
}
|
|
return this.font[char].length
|
|
}
|
|
|
|
applyText(row, col, text) {
|
|
// console.log("Applying text", row, text);
|
|
for (let c of text) {
|
|
col += this.applyCharacter(row, col, c)
|
|
}
|
|
return col;
|
|
}
|
|
|
|
set_pages(pages) {
|
|
console.log("set pages", pages);
|
|
// ignore for now
|
|
}
|
|
|
|
simple_text(page, row, col, text, align) {
|
|
// console.log("simple text", page, row, col, text, align);
|
|
this.eraseCols(row, col, this.config.cols);
|
|
this.applyText(row, col, text);
|
|
}
|
|
|
|
defineFont() {
|
|
/*
|
|
* 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['\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['\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['\u0020'] = [ // space
|
|
'...... ...... ...... ......'
|
|
];
|
|
defs['\u0021'] = [ // !
|
|
'###### ###### ##.... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0022'] = [ // "
|
|
'###### ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
'###### ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0023'] = [ // #
|
|
'...... ###... .#.... ......',
|
|
'###### ###### ###### ###...',
|
|
'...... ###... .#.... ......',
|
|
'###### ###### ###### ###...',
|
|
'...... ###... .#.... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0024'] = [ // $
|
|
'.....# ####.# ..#.#. ......',
|
|
'...### ...### #.#### ......',
|
|
'###### ###### ###### ###...',
|
|
'...### ...### #.#### ......',
|
|
'....#. ....#. ####.. ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0025'] = [ // %
|
|
'...### .....# ###### ......',
|
|
'.....# .####. ...... ......',
|
|
'...##. #..... ..#### ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0026'] = [ // &
|
|
'.###.# .#...# ###### #.#...',
|
|
'###.## ###### ...... ###...',
|
|
'#.###. #...#. ###.## ##....',
|
|
'...... ...... ..##.# #.#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0027'] = [ // '
|
|
'###### ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0028'] = [ // (
|
|
'.....# .##### ###.#. ......',
|
|
'.####. #..... ...#.# #.#...',
|
|
'#..... ...... ...... .#....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0029'] = [ // )
|
|
'.#.... ...... ...... ..#...',
|
|
'#.##.# .#.... ....## ##....',
|
|
'....#. #.#### ####.. ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u002a'] = [ // *
|
|
'...... ...#.# .#..## ......',
|
|
'...... ....## #####. ......',
|
|
'...... ...##. .#.#.# ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u002b'] = [ // +
|
|
'...... ...... .#.... ......',
|
|
'...... ...### ###### ......',
|
|
'...... ...... .#.... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u002c'] = [ // ,
|
|
'...... ...... ...... .....#',
|
|
'...... ...... ...... #####.',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u002d'] = [ // -
|
|
'...... ...... .#.... ......',
|
|
'...... ...... .#.... ......',
|
|
'...... ...... .#.... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u002e'] = [ // .
|
|
'...... ...... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u002f'] = [ // /
|
|
'...... .....# ###### ###...',
|
|
'.....# .####. ...... ......',
|
|
'#####. ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
|
|
// 0x30-0x3f
|
|
defs['\u0030'] = [ // 0
|
|
'.##### ###### ###### #.#...',
|
|
'###... ...... ...... ###...',
|
|
'#.#### ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0031'] = [ // 1
|
|
'.....# .#.... ...... ......',
|
|
'.####. #..... ...... ......',
|
|
'###### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0032'] = [ // 2
|
|
'.##... .....# ###### ###...',
|
|
'###... ...### #..... ###...',
|
|
'#.#### #####. ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0033'] = [ // 3
|
|
'.##... ...... ...... #.#...',
|
|
'###... ...### #..... ###...',
|
|
'#.#### #####. ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0034'] = [ // 4
|
|
'###### ###### ##..........',
|
|
'...... ...... .#.... ......',
|
|
'...... ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0035'] = [ // 5
|
|
'###### ###... ..#### #.#...',
|
|
'###... ###... ...... ###...',
|
|
'###... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0036'] = [ // 6
|
|
'.##### ###### ###### #.#...',
|
|
'###... ###... ...... ###...',
|
|
'#.#... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0037'] = [ // 7
|
|
'###... .....# ###### ###...',
|
|
'###..# .####. ...... ......',
|
|
'#####. #..... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0038'] = [ // 8
|
|
'.##### ####.# ###### #.#...',
|
|
'###... ...### #..... ###...',
|
|
'#.#### #####. ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0039'] = [ // 9
|
|
'.##### ####.# ...... #.#...',
|
|
'###... ...### #..... ###...',
|
|
'#.#### ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u003a'] = [ // :
|
|
'...... ###... ..#### ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u003b'] = [ // ;
|
|
'...... ...... ...... .....#',
|
|
'...... ...... .#.... #####.',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u003c'] = [ // <
|
|
'...... .....# ###.#. ......',
|
|
'...... .####. ...#.# #.#...',
|
|
'...... #..... ...... .#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u003d'] = [ // =
|
|
'...... ...### #.#### ......',
|
|
'...... ...### #.#### ......',
|
|
'...... ...### #.#### ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u003e'] = [ // >
|
|
'...... .#.... ...... ..#...',
|
|
'...... #.##.# ....## ##....',
|
|
'...... ....#. ####.. ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u003f'] = [ // ?
|
|
'.##### ...... ...... ......',
|
|
'###... .....# ###### ....##',
|
|
'#.#### #####. ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
|
|
// 0x40-0x4f
|
|
defs['\u0040'] = [ // @
|
|
'...... .##### ###### ######',
|
|
'...... ###... ...... ....##',
|
|
'...... ###... .##### #.#.#.',
|
|
'...... ###... .#.... ##....',
|
|
'...... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0041'] = [ // A
|
|
'.##### ###### ###### ###...',
|
|
'###... ...### #..... ......',
|
|
'#.#### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0042'] = [ // B
|
|
'###### ###### ###### ###...',
|
|
'###... ...### #..... ###...',
|
|
'#.#### #####. ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0043'] = [ // C
|
|
'.##### ###### ###### #.#...',
|
|
'###... ...... ...... ###...',
|
|
'#.#... ...... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0044'] = [ // D
|
|
'###### ###### ###### ###...',
|
|
'###... ...... ...... ###...',
|
|
'#.#### ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0045'] = [ // E
|
|
'###### ###### ###### ###...',
|
|
'###... ...### #..... ###...',
|
|
'###... ...... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0046'] = [ // F
|
|
'###### ###### ###### ###...',
|
|
'###... ...### #..... ......',
|
|
'###... ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0047'] = [ // G
|
|
'.##### ###### ###### #.#...',
|
|
'###... .....# ...... ###...',
|
|
'#.#... ...### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0048'] = [ // H
|
|
'###### ###### ###### ###...',
|
|
'...... ...### #..... ......',
|
|
'###### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0049'] = [ // I
|
|
'###### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u004a'] = [ // J
|
|
'###... ...... .....# #.#...',
|
|
'###... ...... ...... ###...',
|
|
'#.#### ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u004b'] = [ // K
|
|
'###### ###### ###### ###...',
|
|
'.....# .####. ###.#. ......',
|
|
'.####. #..... ...#.# ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u004c'] = [ // L
|
|
'###### ###### ###### ###...',
|
|
'...... ...... ...... ###...',
|
|
'...... ...... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u004d'] = [ // M
|
|
'#.#### ###### ###### ###...',
|
|
'....## ####.. ...... ......',
|
|
'.##### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u004e'] = [ // N
|
|
'#.#### ###### ###### ###...',
|
|
'....#. #.##.# ...... ......',
|
|
'###### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u004f'] = [ // O
|
|
'.##### ###### ###### #.#...',
|
|
'###... ...... ...... ###...',
|
|
'#.#### ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
|
|
// 0x50-0x5f
|
|
defs['\u0050'] = [ // P
|
|
'###### ###### ###### ###...',
|
|
'###... ...### #..... ......',
|
|
'#.#### #####. ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0051'] = [ // Q
|
|
'.##### ###### ###### #.#...',
|
|
'###... ...... ..#.#. ##....',
|
|
'#.#### ###### ####.# #.#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0052'] = [ // R
|
|
'###### ###### ###### ###...',
|
|
'###... ...### ###.#. ......',
|
|
'#.#### #####. ...#.# #.#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0053'] = [ // S
|
|
'.##### ####.# ...... #.#...',
|
|
'###... ...### #..... ###...',
|
|
'#.#... ....#. ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0054'] = [ // T
|
|
'###... ...... ...... ......',
|
|
'###### ###### ###### ###...',
|
|
'###... ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0055'] = [ // U
|
|
'###### ###### ###### #.#...',
|
|
'...... ...... ...... ###...',
|
|
'###### ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0056'] = [ // V
|
|
'###### ###### ###.#. ......',
|
|
'...... ...... ...### #.....',
|
|
'###### ###### ####.. ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0057'] = [ // W
|
|
'###### ###### ###### #.....',
|
|
'...... ...... #####. ......',
|
|
'###### ###### ###### #.....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0058'] = [ // X
|
|
'####.# .#...# ###### ###...',
|
|
'....## ###### ...... ......',
|
|
'#####. #...#. ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0059'] = [ // Y
|
|
'###### ####.# ...... ......',
|
|
'...... ....## ###### ###...',
|
|
'###### #####. ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u005a'] = [ // Z
|
|
'###... .....# ###### ###...',
|
|
'###..# .####. ...... ###...',
|
|
'#####. #..... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u005b'] = [ // [
|
|
'###### ###### ###### ###...',
|
|
'###... ...... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u005c'] = [ // \\ (defined like space in device font
|
|
'...... ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u005d'] = [ // ];
|
|
'###... ...... ...... ###...',
|
|
'###### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u005e'] = [ // ^
|
|
'.....# .##... ...... ......',
|
|
'..#### ##.... ...... ......',
|
|
'....#. #.#... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u005f'] = [ // _
|
|
'...... ...... ...... ###...',
|
|
'...... ...... ...... ###...',
|
|
'...... ...... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
|
|
// 0x60-0x6f
|
|
defs['\u0060'] = [ // `
|
|
'####.# .#.... ...... ......',
|
|
'....#. #.... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0061'] = [ // a
|
|
'...... .##... .##### #.#...',
|
|
'...... ###... .#.... ##....',
|
|
'...... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0062'] = [ // b
|
|
'###### ###### ###### ###...',
|
|
'...... ###... ...... ###...',
|
|
'...... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0063'] = [ // c
|
|
'...... .##### ###### #.#...',
|
|
'...... ###... ...... ###...',
|
|
'...... #.#... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0064'] = [ // d
|
|
'...... .##### ###### #.#...',
|
|
'...... ###... ...... ###...',
|
|
'###### ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0065'] = [ // e
|
|
'...... .##### ###### #.#...',
|
|
'...... ###... .#.... ###...',
|
|
'...... #.#### ##.... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0066'] = [ // f
|
|
'...... ###... ...... ......',
|
|
'.##### ###### ###### ###...',
|
|
'#.#... ###... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0067'] = [ // g
|
|
'...... .##### ###### #.#.##',
|
|
'...... ###... ...... ###.##',
|
|
'...... #.#### ###### #####.',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0068'] = [ // h
|
|
'###### ###### ###### ###...',
|
|
'...... ###... ...... ......',
|
|
'...... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0069'] = [ // i
|
|
'###... ###### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u006a'] = [ // j
|
|
'...... ...... ...... ....##',
|
|
'###... ###### ###### #####.',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u006b'] = [ // k
|
|
'###### ###### ###### ###...',
|
|
'...... .....# ###.#. ......',
|
|
'...... .####. ...#.# #.#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u006c'] = [ // l
|
|
'###### ###### ###### #.#...',
|
|
'...... ...... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u006d'] = [ // m
|
|
'...... ###### ###### ###...',
|
|
'...... .##... ...... ......',
|
|
'...... #.#### ###### ###...',
|
|
'...... .##... ...... ......',
|
|
'...... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u006e'] = [ // n
|
|
'...... ###### ###### ###...',
|
|
'...... .##... ...... ......',
|
|
'...... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u006f'] = [ // o
|
|
'...... .##### ###### #.#...',
|
|
'...... ###... ...... ###...',
|
|
'...... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
|
|
// 0x70-0x7f
|
|
defs['\u0070'] = [ // p
|
|
'...... ###### ###### ######',
|
|
'...... ###... ...... ###...',
|
|
'...... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0071'] = [ // q
|
|
'...... .##### ###### #.#...',
|
|
'...... ###... ...... ###...',
|
|
'...... ###### ###### ######',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0072'] = [ // r
|
|
'...... ###### ###### ###...',
|
|
'...... .##... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0073'] = [ // s
|
|
'...... .##### ##.... #.#...',
|
|
'...... ###... .#.... ###...',
|
|
'...... #.#... .##### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0074'] = [ // t
|
|
'...... ###... ...... ......',
|
|
'###### ###### ###### #.#...',
|
|
'...... ###... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0075'] = [ // u
|
|
'...... ###### ###### #.#...',
|
|
'...... ...... ...... ###...',
|
|
'...... ###### ###### #.#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0076'] = [ // v
|
|
'...... ###### ###.#. ......',
|
|
'...... ...... ...### #.....',
|
|
'...... ###### ####.. ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0077'] = [ // w
|
|
'...... ###### ###### #.....',
|
|
'...... ...... #####. ......',
|
|
'...... ###### ###### #.....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0078'] = [ // x
|
|
'...... ####.# ....## ##....',
|
|
'...... ....## #####. ......',
|
|
'...... #####. ...#.# #.#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0079'] = [ // y
|
|
'...... ###### ###### #.#.##',
|
|
'...... ...... ...... ###.##',
|
|
'...... ###### ###### #####.',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u007a'] = [ // z
|
|
'...... ###... ....## ###...',
|
|
'...... ###..# ####.. ###...',
|
|
'...... #####. ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u007b'] = [ // {
|
|
'...... .....# ...... ......',
|
|
'.##### #####. ###### #.#...',
|
|
'###... ...... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u007c'] = [ // |
|
|
'###### ###### ###### ######',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u007d'] = [ // }
|
|
'###... ...... ...... ###...',
|
|
'#.#### ####.# ###### ##....',
|
|
'...... ....#. ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u007e'] = [ // ~
|
|
'...... ...... ...... ......',
|
|
'...... .....# ##.... ......',
|
|
'...... ...### ...... ......',
|
|
'...... ....#. ###.#. ......',
|
|
'...... ...... ...### ......',
|
|
'...... ...... .###.. ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u2302'] = [ // CP437 0x7f
|
|
'.....# .##### ###### ###...',
|
|
'..#### ...... ...... ###...',
|
|
'....#. #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u007f'] = defs['\u2302'] // Python codec incorrectly maps \u007f to 0x7f
|
|
|
|
// 0x80-0x8f
|
|
defs['\u00c7'] = [ // Ç
|
|
'.##### ###### ###### #.#..#',
|
|
'###... ...... ...... #####.',
|
|
'#.#... ...... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00fc'] = [ // ü
|
|
'###... ###### ###### #.#...',
|
|
'...... ...... ...... ###...',
|
|
'###... ###### ###### #.#...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e9'] = [ // é
|
|
'...... .##### ###### #.#...',
|
|
'.##... ###... .#.... ###...',
|
|
'#..... #.#### ##.... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e2'] = [ // â
|
|
'.##... .##... .##### #.#...',
|
|
'###... ###... .#.... ##....',
|
|
'#.#... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e4'] = [ // ä
|
|
'###... .##... .##### #.#...',
|
|
'...... ###... .#.... ##....',
|
|
'###... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e0'] = [ // à
|
|
'.#.... .##... .##### #.#...',
|
|
'###... ###... .#.... ##....',
|
|
'#.#... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e5'] = [ // å
|
|
'...... .##... .##### #.#...',
|
|
'###... ###... .#.... ##....',
|
|
'...... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e7'] = [ // ç
|
|
'...... .##### ###### #.#..#',
|
|
'...... ###... ...... #####.',
|
|
'...... #.#... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00ea'] = [ // ê
|
|
'.##... .##### ###### #.#...',
|
|
'###... ###... .#.... ###...',
|
|
'#.#... #.#### ##.... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00eb'] = [ // ë
|
|
'###... .##### ###### #.#...',
|
|
'...... ###... .#.... ###...',
|
|
'###... #.#### ##.... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e8'] = [ // è
|
|
'.#.... .##### ###### #.#...',
|
|
'###... ###... .#.... ###...',
|
|
'#.#... #.#### ##.... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00ef'] = [ // ï
|
|
'###... ...... ...... ......',
|
|
'...... ###### ###### ###...',
|
|
'###... ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00ee'] = [ // î
|
|
'.####. ...... ...... ......',
|
|
'###... ###### ###### ###...',
|
|
'#.##.# ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00ec'] = [ // ì
|
|
'###... ...... ...... ......',
|
|
'###... ###### ###### ###...',
|
|
'#.#... ...... ...... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00c4'] = [ // Ä
|
|
'###... .##### ###### ###...',
|
|
'...... ###... .#.... ......',
|
|
'###... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00c5'] = [ // Å
|
|
'...... .##### ###### ###...',
|
|
'###... ###... .#.... ......',
|
|
'...... #.#### ###### ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
// 0x90-0x9f
|
|
defs['\u00c9'] = [ // É
|
|
'...... ###### ###### ###...',
|
|
'.##... ###... .#.... ###...',
|
|
'#..... ###... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00e6'] = [ // æ
|
|
'...... .##... .##### #.#...',
|
|
'...... ###... .#.... ##....',
|
|
'...... #.#### ###### ###...',
|
|
'...... ###... .#.... #.#...',
|
|
'...... #.#### ##.... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00c6'] = [ // Æ
|
|
'.##### ###### ###### ###...',
|
|
'###... ...### #..... ......',
|
|
'###### ###### ###### ###...',
|
|
'###... ...### #..... ###...',
|
|
'###... ...... ...... ###...',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00f4'] = [ // ô
|
|
'.##... .##### ###### #.#...',
|
|
'###... ###... ...... ###...',
|
|
'#.#... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00f6'] = [ // ö
|
|
'###... .##### ###### #.#...',
|
|
'...... ###... ...... ###...',
|
|
'###... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00f2'] = [ // ò
|
|
'.#.... .##### ###### #.#...',
|
|
'###... ###... ...... ###...',
|
|
'#.#... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00fb'] = [ // û
|
|
'.##... ###### ###### #.#...',
|
|
'###... ...... ...... ###...',
|
|
'#.#... ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00f9'] = [ // ù
|
|
'.#.... ###### ###### #.#...',
|
|
'###... ...... ...... ###...',
|
|
'#.#... ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00ff'] = [ // ÿ
|
|
'###... ###### ###### #.#.##',
|
|
'...... ...... ...... ###.##',
|
|
'###... ###### ###### #####.',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00d6'] = [ // Ö
|
|
'###... .##### ###### #.#...',
|
|
'...... ###... ...... ###...',
|
|
'###... #.#### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00dc'] = [ // Ü
|
|
'###... ###### ###### #.#...',
|
|
'...... ...... ...... ###...',
|
|
'###... ###### ###### ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00a2'] = [ // ¢
|
|
'...... .##### ###### #.#...',
|
|
'...### ###... ...... ######',
|
|
'...... #.#... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00a3'] = [ // £
|
|
'...... ###... ....## ###...',
|
|
'.##### ###### ####.. ###...',
|
|
'#.#... ###... ...... ##....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u00a5'] = [ // ¥
|
|
'#.##.# .#.### #.#### ......',
|
|
'....## ###### ###### ###...',
|
|
'.####. #..### #.#### ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u20a7'] = [ // ₧
|
|
'###### ###### ###### ###...',
|
|
'###... ...### #..... ......',
|
|
'#.#### #####. .#.... ......',
|
|
'...... ...### ###### #.#...',
|
|
'...... ...... .#.... .#....',
|
|
'...... ...... ...... ......',
|
|
];
|
|
defs['\u0192'] = [ // ƒ
|
|
'...... ...### #..... #.#...',
|
|
'.##### ###### ###### ##....',
|
|
'#.#... ...### #..... ......',
|
|
'...... ...... ...... ......',
|
|
];
|
|
|
|
/*
|
|
// 0xa0-0xaf
|
|
defs['\u00a0'] = [ // x
|
|
];
|
|
defs['\u00a1'] = [ // x
|
|
];
|
|
defs['\u00a2'] = [ // x
|
|
];
|
|
defs['\u00a3'] = [ // x
|
|
];
|
|
defs['\u00a4'] = [ // x
|
|
];
|
|
defs['\u00a5'] = [ // x
|
|
];
|
|
defs['\u00a6'] = [ // x
|
|
];
|
|
defs['\u00a7'] = [ // x
|
|
];
|
|
defs['\u00a8'] = [ // x
|
|
];
|
|
defs['\u00a9'] = [ // x
|
|
];
|
|
defs['\u00aa'] = [ // x
|
|
];
|
|
defs['\u00ab'] = [ // x
|
|
];
|
|
defs['\u00ac'] = [ // x
|
|
];
|
|
defs['\u00ad'] = [ // x
|
|
];
|
|
defs['\u00ae'] = [ // x
|
|
];
|
|
defs['\u00af'] = [ // x
|
|
];
|
|
|
|
// 0xb0-0xbf
|
|
defs['\u00b0'] = [ // x
|
|
];
|
|
defs['\u00b1'] = [ // x
|
|
];
|
|
defs['\u00b2'] = [ // x
|
|
];
|
|
defs['\u00b3'] = [ // x
|
|
];
|
|
defs['\u00b4'] = [ // x
|
|
];
|
|
defs['\u00b5'] = [ // x
|
|
];
|
|
defs['\u00b6'] = [ // x
|
|
];
|
|
defs['\u00b7'] = [ // x
|
|
];
|
|
defs['\u00b8'] = [ // x
|
|
];
|
|
defs['\u00b9'] = [ // x
|
|
];
|
|
defs['\u00ba'] = [ // x
|
|
];
|
|
defs['\u00bb'] = [ // x
|
|
];
|
|
defs['\u00bc'] = [ // x
|
|
];
|
|
defs['\u00bd'] = [ // x
|
|
];
|
|
defs['\u00be'] = [ // x
|
|
];
|
|
defs['\u00bf'] = [ // x
|
|
];
|
|
|
|
// 0xc0-0xcf
|
|
defs['\u00c0'] = [ // x
|
|
];
|
|
defs['\u00c1'] = [ // x
|
|
];
|
|
defs['\u00c2'] = [ // x
|
|
];
|
|
defs['\u00c3'] = [ // x
|
|
];
|
|
defs['\u00c4'] = [ // x
|
|
];
|
|
defs['\u00c5'] = [ // x
|
|
];
|
|
defs['\u00c6'] = [ // x
|
|
];
|
|
defs['\u00c7'] = [ // x
|
|
];
|
|
defs['\u00c8'] = [ // x
|
|
];
|
|
defs['\u00c9'] = [ // x
|
|
];
|
|
defs['\u00ca'] = [ // x
|
|
];
|
|
defs['\u00cb'] = [ // x
|
|
];
|
|
defs['\u00cc'] = [ // x
|
|
];
|
|
defs['\u00cd'] = [ // x
|
|
];
|
|
defs['\u00ce'] = [ // x
|
|
];
|
|
defs['\u00cf'] = [ // x
|
|
];
|
|
|
|
// 0xd0-0xdf
|
|
defs['\u00d0'] = [ // x
|
|
];
|
|
defs['\u00d1'] = [ // x
|
|
];
|
|
defs['\u00d2'] = [ // x
|
|
];
|
|
defs['\u00d3'] = [ // x
|
|
];
|
|
defs['\u00d4'] = [ // x
|
|
];
|
|
defs['\u00d5'] = [ // x
|
|
];
|
|
defs['\u00d6'] = [ // x
|
|
];
|
|
defs['\u00d7'] = [ // x
|
|
];
|
|
defs['\u00d8'] = [ // x
|
|
];
|
|
defs['\u00d9'] = [ // x
|
|
];
|
|
defs['\u00da'] = [ // x
|
|
];
|
|
defs['\u00db'] = [ // x
|
|
];
|
|
defs['\u00dc'] = [ // x
|
|
];
|
|
defs['\u00dd'] = [ // x
|
|
];
|
|
defs['\u00de'] = [ // x
|
|
];
|
|
defs['\u00df'] = [ // x
|
|
];
|
|
|
|
// 0xe0-0xef
|
|
defs['\u00e0'] = [ // x
|
|
];
|
|
defs['\u00e1'] = [ // x
|
|
];
|
|
defs['\u00e2'] = [ // x
|
|
];
|
|
defs['\u00e3'] = [ // x
|
|
];
|
|
defs['\u00e4'] = [ // x
|
|
];
|
|
defs['\u00e5'] = [ // x
|
|
];
|
|
defs['\u00e6'] = [ // x
|
|
];
|
|
defs['\u00e7'] = [ // x
|
|
];
|
|
defs['\u00e8'] = [ // x
|
|
];
|
|
defs['\u00e9'] = [ // x
|
|
];
|
|
defs['\u00ea'] = [ // x
|
|
];
|
|
defs['\u00eb'] = [ // x
|
|
];
|
|
defs['\u00ec'] = [ // x
|
|
];
|
|
defs['\u00ed'] = [ // x
|
|
];
|
|
defs['\u00ee'] = [ // x
|
|
];
|
|
defs['\u00ef'] = [ // x
|
|
];
|
|
|
|
// 0xf0-0xff
|
|
defs['\u00f0'] = [ // x
|
|
];
|
|
defs['\u00f1'] = [ // x
|
|
];
|
|
defs['\u00f2'] = [ // x
|
|
];
|
|
defs['\u00f3'] = [ // x
|
|
];
|
|
defs['\u00f4'] = [ // x
|
|
];
|
|
defs['\u00f5'] = [ // x
|
|
];
|
|
defs['\u00f6'] = [ // x
|
|
];
|
|
defs['\u00f7'] = [ // x
|
|
];
|
|
defs['\u00f8'] = [ // x
|
|
];
|
|
defs['\u00f9'] = [ // x
|
|
];
|
|
defs['\u00fa'] = [ // x
|
|
];
|
|
defs['\u00fb'] = [ // x
|
|
];
|
|
defs['\u00fc'] = [ // x
|
|
];
|
|
defs['\u00fd'] = [ // x
|
|
];
|
|
defs['\u00fe'] = [ // x
|
|
];
|
|
defs['\u00ff'] = [ // x
|
|
];
|
|
*/
|
|
this.font = [];
|
|
for (let d of Object.keys(defs).toSorted()) {
|
|
let f = [];
|
|
for (let c of defs[d]) {
|
|
f.push(c.replace(/[^.#]/g, ""))
|
|
}
|
|
this.font[d] = f;
|
|
if (d === "\u00c7")
|
|
console.log("font[d]", d.codePointAt(0), this.font[d]);
|
|
}
|
|
}
|
|
} |