fantasy-console/font.ts
2023-05-07 10:03:19 -07:00

790 lines
9.5 KiB
TypeScript

/**
* Perhaps fonts can be their own type of sheet. By the calculation below, we can fit ~4 fonts per fontsheet
*
* 3 bits for height
* 5 more metadata bits
* = 1 byte
*
* Per character:
* - 3 bits for width
* - 5 bits for metadata
* - 64 bits for pixels
* = 9 bytes per character
*
* 96 chars * 9 bytes =
*/
export const fontWidth = 4;
export const fontHeight = 6;
// deno-fmt-ignore
export const font: {[key: string]: Array<number>} = {
"A": [
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"B": [
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"C": [
0, 0, 1, 1,
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 1, 1,
0, 0, 0, 0,
],
"D": [
0, 1, 1, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 0, 0, 0,
],
"E": [
0, 1, 1, 1,
0, 1, 0, 0,
0, 1, 1, 0,
0, 1, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"F": [
0, 1, 1, 1,
0, 1, 0, 0,
0, 1, 1, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"G": [
0, 0, 1, 1,
0, 1, 0, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 1, 1,
0, 0, 0, 0,
],
"H": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"I": [
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"J": [
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 0, 0,
],
"K": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"L": [
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"M": [
0, 1, 1, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"N": [
0, 1, 1, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"O": [
0, 0, 1, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 0, 0, 0,
],
"P": [
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"Q": [
0, 0, 1, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 0, 1, 1,
0, 0, 0, 0,
],
"R": [
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"S": [
0, 0, 1, 1,
0, 1, 0, 0,
0, 1, 1, 1,
0, 0, 0, 1,
0, 1, 1, 0,
0, 0, 0, 0,
],
"T": [
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
"U": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 1, 1,
0, 0, 0, 0,
],
"V": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 0, 0,
],
"W": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"X": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 1, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"Y": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"Z": [
0, 1, 1, 1,
0, 0, 0, 1,
0, 0, 1, 0,
0, 1, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"a": [
0, 0, 0, 0,
0, 1, 1, 1,
0, 0, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"b": [
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"c": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 1, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"d": [
0, 0, 0, 1,
0, 0, 0, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"e": [
0, 0, 0, 0,
0, 0, 1, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 0, 1, 1,
0, 0, 0, 0,
],
"f": [
0, 0, 1, 1,
0, 1, 0, 0,
0, 1, 1, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"g": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 1, 0, 1,
0, 0, 1, 1,
0, 1, 1, 0,
],
"h": [
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"i": [
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
"j": [
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 1, 0, 0,
],
"k": [
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 1,
0, 1, 1, 0,
0, 1, 0, 1,
0, 0, 0, 0,
],
"l": [
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 1,
0, 0, 0, 0,
],
"m": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"n": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"o": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 1,
0, 1, 0, 1,
0, 1, 1, 0,
0, 0, 0, 0,
],
"p": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 0, 0,
],
"q": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 1,
],
"r": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"s": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 1,
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 0, 0,
],
"t": [
0, 0, 1, 0,
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
"u": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 1, 1,
0, 0, 0, 0,
],
"v": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 1, 0,
0, 0, 0, 0,
],
"w": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"x": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 1,
0, 0, 1, 0,
0, 1, 0, 1,
0, 0, 0, 0,
],
"y": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 1, 0,
0, 1, 0, 0,
],
"z": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 1,
0, 0, 0, 0,
],
",": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 1, 0, 0,
],
".": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
" ": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"\t": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"<": [
0, 0, 0, 1,
0, 0, 1, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1,
0, 0, 0, 0,
],
">": [
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1,
0, 0, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"=": [
0, 0, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0,
],
"(": [
0, 0, 0, 1,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 1,
0, 0, 0, 0,
],
")": [
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"[": [
0, 0, 1, 1,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 1,
0, 0, 0, 0,
],
"]": [
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 0, 0,
],
"{": [
0, 0, 1, 1,
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 1,
0, 0, 0, 0,
],
"}": [
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 1,
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 0, 0,
],
":": [
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
";": [
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 1, 0, 0,
],
"'": [
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
'"': [
0, 1, 0, 1,
0, 1, 0, 1,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"1": [
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"2": [
0, 0, 1, 0,
0, 1, 0, 1,
0, 0, 0, 1,
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"3": [
0, 1, 1, 1,
0, 0, 0, 1,
0, 0, 1, 0,
0, 0, 0, 1,
0, 1, 1, 0,
0, 0, 0, 0,
],
"4": [
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 1,
0, 0, 0, 1,
0, 0, 0, 0,
],
"5": [
0, 1, 1, 1,
0, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 1,
0, 1, 1, 0,
0, 0, 0, 0,
],
"6": [
0, 0, 0, 1,
0, 0, 1, 0,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"7": [
0, 1, 1, 1,
0, 0, 0, 1,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
"8": [
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"9": [
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"0": [
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"+": [
0, 0, 0, 0,
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"-": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"_": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 1,
0, 0, 0, 0,
],
"`": [
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"~": [
0, 0, 0, 0,
0, 0, 0, 1,
0, 1, 1, 1,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"/": [
0, 0, 0, 1,
0, 0, 0, 1,
0, 0, 1, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
],
"?": [
0, 1, 1, 1,
0, 0, 0, 1,
0, 0, 1, 1,
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
"\\": [
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1,
0, 0, 0, 1,
0, 0, 0, 0,
],
"|": [
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
"!": [
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0,
],
"@": [
0, 0, 1, 0,
0, 1, 0, 1,
0, 1, 0, 1,
0, 1, 0, 0,
0, 0, 1, 1,
0, 0, 0, 0,
],
"#": [
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 1, 0, 1,
0, 0, 0, 0,
],
"$": [
0, 1, 1, 1,
0, 1, 1, 0,
0, 0, 1, 1,
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 0, 0,
],
"%": [
0, 1, 0, 1,
0, 0, 0, 1,
0, 0, 1, 0,
0, 1, 0, 0,
0, 1, 0, 1,
0, 0, 0, 0,
],
"^": [
0, 0, 1, 0,
0, 1, 0, 1,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
],
"&": [
0, 1, 1, 0,
0, 1, 1, 0,
0, 0, 1, 1,
0, 1, 0, 1,
0, 1, 1, 1,
0, 0, 0, 0,
],
"*": [
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 1, 0,
0, 1, 0, 1,
0, 0, 0, 0,
0, 0, 0, 0,
],
}