/**
 * 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;

export const CHAR = {
	UP: "À",
	LEFT: "Á",
	DOWN: "Â",
	RIGHT: "Ã",
	PI: "π"
}

export type Font = {
	height: 6,
	chars: {[key: string]: Array<number>},
};

// deno-fmt-ignore
export const font: Font = {
	height: 6,
	chars: {
		"A": [
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"B": [
			1, 1, 1,
			1, 0, 1,
			1, 1, 0,
			1, 0, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"C": [
			0, 1, 1,
			1, 0, 0,
			1, 0, 0,
			1, 0, 0,
			0, 1, 1,
			0, 0, 0,
		],
		"D": [
			1, 1, 0,
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			1, 1, 0,
			0, 0, 0,
		],
		"E": [
			1, 1, 1,
			1, 0, 0,
			1, 1, 0,
			1, 0, 0,
			1, 1, 1,
			0, 0, 0,
		],
		"F": [
			1, 1, 1,
			1, 0, 0,
			1, 1, 0,
			1, 0, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"G": [
			0, 1, 1,
			1, 0, 0,
			1, 0, 1,
			1, 0, 1,
			0, 1, 1,
			0, 0, 0,
		],
		"H": [
			1, 0, 1,
			1, 0, 1,
			1, 1, 1,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"I": [
			1, 1, 1,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			1, 1, 1,
			0, 0, 0,
		],
		"J": [
			1, 1, 1,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			1, 1, 0,
			0, 0, 0,
		],
		"K": [
			1, 0, 1,
			1, 0, 1,
			1, 1, 0,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"L": [
			1, 0, 0,
			1, 0, 0,
			1, 0, 0,
			1, 0, 0,
			1, 1, 1,
			0, 0, 0,
		],
		"M": [
			1, 1, 1,
			1, 1, 1,
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"N": [
			1, 1, 0,
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"O": [
			0, 1, 1,
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			1, 1, 0,
			0, 0, 0,
		],
		"P": [
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			1, 0, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"Q": [
			0, 1, 1,
			1, 0, 1,
			1, 0, 1,
			1, 1, 0,
			0, 1, 1,
			0, 0, 0,
		],
		"R": [
			1, 1, 1,
			1, 0, 1,
			1, 1, 0,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"S": [
			0, 1, 1,
			1, 0, 0,
			1, 1, 1,
			0, 0, 1,
			1, 1, 0,
			0, 0, 0,
		],
		"T": [
			1, 1, 1,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 0, 0,
		],
		"U": [
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			0, 1, 1,
			0, 0, 0,
		],
		"V": [
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			1, 1, 1,
			0, 1, 0,
			0, 0, 0,
		],
		"W": [
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			1, 1, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"X": [
			1, 0, 1,
			1, 0, 1,
			0, 1, 0,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"Y": [
			1, 0, 1,
			1, 0, 1,
			1, 1, 1,
			0, 1, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"Z": [
			1, 1, 1,
			0, 0, 1,
			0, 1, 0,
			1, 0, 0,
			1, 1, 1,
			0, 0, 0,
		],
		"a": [
			0, 0, 0,
			1, 1, 1,
			0, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"b": [
			1, 0, 0,
			1, 0, 0,
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"c": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 1,
			1, 0, 0,
			1, 1, 1,
			0, 0, 0,
		],
		"d": [
			0, 0, 1,
			0, 0, 1,
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"e": [
			0, 0, 0,
			0, 1, 1,
			1, 0, 1,
			1, 1, 0,
			0, 1, 1,
			0, 0, 0,
		],
		"f": [
			0, 1, 1,
			1, 0, 0,
			1, 1, 0,
			1, 0, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"g": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 1,
			1, 0, 1,
			0, 1, 1,
			1, 1, 0,
		],
		"h": [
			1, 0, 0,
			1, 0, 0,
			1, 1, 1,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"i": [
			0, 1, 0,
			0, 0, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 0, 0,
		],
		"j": [
			0, 1, 0,
			0, 0, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			1, 0, 0,
		],
		"k": [
			1, 0, 0,
			1, 0, 0,
			1, 0, 1,
			1, 1, 0,
			1, 0, 1,
			0, 0, 0,
		],
		"l": [
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 0, 1,
			0, 0, 0,
		],
		"m": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 1,
			1, 1, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"n": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 0,
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"o": [
			0, 0, 0,
			0, 0, 0,
			0, 1, 1,
			1, 0, 1,
			1, 1, 0,
			0, 0, 0,
		],
		"p": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			1, 0, 0,
		],
		"q": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 1,
		],
		"r": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 1,
			1, 0, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"s": [
			0, 0, 0,
			0, 0, 0,
			0, 1, 1,
			0, 1, 0,
			1, 1, 0,
			0, 0, 0,
		],
		"t": [
			0, 1, 0,
			0, 1, 0,
			1, 1, 1,
			0, 1, 0,
			0, 1, 0,
			0, 0, 0,
		],
		"u": [
			0, 0, 0,
			0, 0, 0,
			1, 0, 1,
			1, 0, 1,
			0, 1, 1,
			0, 0, 0,
		],
		"v": [
			0, 0, 0,
			0, 0, 0,
			1, 0, 1,
			1, 0, 1,
			0, 1, 0,
			0, 0, 0,
		],
		"w": [
			0, 0, 0,
			0, 0, 0,
			1, 0, 1,
			1, 1, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"x": [
			0, 0, 0,
			0, 0, 0,
			1, 0, 1,
			0, 1, 0,
			1, 0, 1,
			0, 0, 0,
		],
		"y": [
			0, 0, 0,
			0, 0, 0,
			1, 0, 1,
			1, 0, 1,
			0, 1, 0,
			1, 0, 0,
		],
		"z": [
			0, 0, 0,
			0, 0, 0,
			1, 1, 0,
			0, 1, 0,
			0, 1, 1,
			0, 0, 0,
		],
		",": [
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 1, 0,
			1, 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,
		],
		"\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, 0,
			0, 0, 0, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 0, 0,
		],
		"\n": [
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
		],
		"<": [
			0, 0, 1,
			0, 1, 0,
			1, 0, 0,
			0, 1, 0,
			0, 0, 1,
			0, 0, 0,
		],
		">": [
			1, 0, 0,
			0, 1, 0,
			0, 0, 1,
			0, 1, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"=": [
			0, 0, 0,
			1, 1, 1,
			0, 0, 0,
			1, 1, 1,
			0, 0, 0,
			0, 0, 0,
		],
		"(": [
			0, 0, 1,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 0, 1,
			0, 0, 0,
		],
		")": [
			1, 0, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"[": [
			0, 1, 1,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 1,
			0, 0, 0,
		],
		"]": [
			1, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			1, 1, 0,
			0, 0, 0,
		],
		"{": [
			0, 1, 1,
			0, 1, 0,
			1, 1, 0,
			0, 1, 0,
			0, 1, 1,
			0, 0, 0,
		],
		"}": [
			1, 1, 0,
			0, 1, 0,
			0, 1, 1,
			0, 1, 0,
			1, 1, 0,
			0, 0, 0,
		],
		":": [
			0, 0, 0,
			0, 1, 0,
			0, 0, 0,
			0, 0, 0,
			0, 1, 0,
			0, 0, 0,
		],
		";": [
			0, 0, 0,
			0, 1, 0,
			0, 0, 0,
			0, 0, 0,
			0, 1, 0,
			1, 0, 0,
		],
		"'": [
			0, 1, 0,
			0, 1, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
		],
		'"': [
			1, 0, 1,
			1, 0, 1,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
		],
		"1": [
			0, 1, 0,
			1, 1, 0,
			0, 1, 0,
			0, 1, 0,
			1, 1, 1,
			0, 0, 0,
		],
		"2": [
			0, 1, 0,
			1, 0, 1,
			0, 0, 1,
			0, 1, 0,
			1, 1, 1,
			0, 0, 0,
		],
		"3": [
			1, 1, 1,
			0, 0, 1,
			0, 1, 0,
			0, 0, 1,
			1, 1, 0,
			0, 0, 0,
		],
		"4": [
			1, 0, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 1,
			0, 0, 1,
			0, 0, 0,
		],
		"5": [
			1, 1, 1,
			1, 0, 0,
			1, 1, 0,
			0, 0, 1,
			1, 1, 0,
			0, 0, 0,
		],
		"6": [
			0, 0, 1,
			0, 1, 0,
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"7": [
			1, 1, 1,
			0, 0, 1,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 0, 0,
		],
		"8": [
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"9": [
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 1, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"0": [
			1, 1, 1,
			1, 0, 1,
			1, 0, 1,
			1, 0, 1,
			1, 1, 1,
			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, 1, 1,
			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,
		],
		"`": [
			1, 0, 0,
			0, 1, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
		],
		"~": [
			0, 0, 0,
			0, 0, 1,
			1, 1, 1,
			1, 0, 0,
			0, 0, 0,
			0, 0, 0,
		],
		"/": [
			0, 0, 1,
			0, 0, 1,
			0, 1, 0,
			1, 0, 0,
			1, 0, 0,
			0, 0, 0,
		],
		"?": [
			1, 1, 1,
			0, 0, 1,
			0, 1, 1,
			0, 0, 0,
			0, 1, 0,
			0, 0, 0,
		],
		"\\": [
			1, 0, 0,
			1, 0, 0,
			0, 1, 0,
			0, 0, 1,
			0, 0, 1,
			0, 0, 0,
		],
		"|": [
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 0, 0,
		],
		"!": [
			0, 1, 0,
			0, 1, 0,
			0, 1, 0,
			0, 0, 0,
			0, 1, 0,
			0, 0, 0,
		],
		"@": [
			0, 1, 0,
			1, 0, 1,
			1, 0, 1,
			1, 0, 0,
			0, 1, 1,
			0, 0, 0,
		],
		"#": [
			1, 0, 1,
			1, 1, 1,
			1, 0, 1,
			1, 1, 1,
			1, 0, 1,
			0, 0, 0,
		],
		"$": [
			1, 1, 1,
			1, 1, 0,
			0, 1, 1,
			1, 1, 1,
			0, 1, 0,
			0, 0, 0,
		],
		"%": [
			1, 0, 1,
			0, 0, 1,
			0, 1, 0,
			1, 0, 0,
			1, 0, 1,
			0, 0, 0,
		],
		"^": [
			0, 1, 0,
			1, 0, 1,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
			0, 0, 0,
		],
		"&": [
			1, 1, 0,
			1, 1, 0,
			0, 1, 1,
			1, 0, 1,
			1, 1, 1,
			0, 0, 0,
		],
		"*": [
			0, 1, 0,
			1, 1, 1,
			0, 1, 0,
			1, 0, 1,
			0, 0, 0,
			0, 0, 0,
		],
		[CHAR.UP]: [
			0, 1, 1, 1, 1, 1, 0,
			1, 1, 1, 0, 1, 1, 1,
			1, 1, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 1, 1,
			0, 1, 1, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0,
		],
		[CHAR.LEFT]: [
			0, 1, 1, 1, 1, 1, 0,
			1, 1, 1, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 1, 1,
			1, 1, 1, 0, 0, 1, 1,
			0, 1, 1, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0,
		],
		[CHAR.DOWN]: [
			0, 1, 1, 1, 1, 1, 0,
			1, 1, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 0, 1, 1,
			1, 1, 1, 0, 1, 1, 1,
			0, 1, 1, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0,
		],
		[CHAR.RIGHT]: [
			0, 1, 1, 1, 1, 1, 0,
			1, 1, 0, 0, 1, 1, 1,
			1, 1, 0, 0, 0, 1, 1,
			1, 1, 0, 0, 1, 1, 1,
			0, 1, 1, 1, 1, 1, 0,
			0, 0, 0, 0, 0, 0, 0,
		],
		[CHAR.PI]: [
			0, 0, 0, 0, 0,
			0, 0, 0, 0, 0,
			1, 1, 1, 1, 1,
			0, 1, 0, 1, 0,
			0, 1, 0, 1, 0,
			0, 0, 0, 0, 0,
		],
	}
};