///|
/// 内置 5×7 点阵字体字形表。
///
/// 每个字符用 7 个字节表示 7 行,每字节低 5 位表示该行 5 个像素
/// (位 4 为最左像素,位 0 为最右像素)。支持子集:A-Z、0-9、
/// 空格以及常用符号 `. - : _ / + @ % #`;不支持字符返回 `None`(渲染为空白)。
fn glyph(c : Char) -> Option[Array[Byte]] {
match c {
'A' => Some([b'\x0E', b'\x11', b'\x11', b'\x1F', b'\x11', b'\x11', b'\x11'])
'B' => Some([b'\x1E', b'\x11', b'\x11', b'\x1E', b'\x11', b'\x11', b'\x1E'])
'C' => Some([b'\x0E', b'\x11', b'\x10', b'\x10', b'\x10', b'\x11', b'\x0E'])
'D' => Some([b'\x1C', b'\x12', b'\x11', b'\x11', b'\x11', b'\x12', b'\x1C'])
'E' => Some([b'\x1F', b'\x10', b'\x10', b'\x1E', b'\x10', b'\x10', b'\x1F'])
'F' => Some([b'\x1F', b'\x10', b'\x10', b'\x1E', b'\x10', b'\x10', b'\x10'])
'G' => Some([b'\x0E', b'\x11', b'\x10', b'\x17', b'\x11', b'\x11', b'\x0F'])
'H' => Some([b'\x11', b'\x11', b'\x11', b'\x1F', b'\x11', b'\x11', b'\x11'])
'I' => Some([b'\x0E', b'\x04', b'\x04', b'\x04', b'\x04', b'\x04', b'\x0E'])
'J' => Some([b'\x07', b'\x02', b'\x02', b'\x02', b'\x02', b'\x12', b'\x0C'])
'K' => Some([b'\x11', b'\x12', b'\x14', b'\x18', b'\x14', b'\x12', b'\x11'])
'L' => Some([b'\x10', b'\x10', b'\x10', b'\x10', b'\x10', b'\x10', b'\x1F'])
'M' => Some([b'\x11', b'\x1B', b'\x15', b'\x15', b'\x11', b'\x11', b'\x11'])
'N' => Some([b'\x11', b'\x19', b'\x15', b'\x13', b'\x11', b'\x11', b'\x11'])
'O' => Some([b'\x0E', b'\x11', b'\x11', b'\x11', b'\x11', b'\x11', b'\x0E'])
'P' => Some([b'\x1E', b'\x11', b'\x11', b'\x1E', b'\x10', b'\x10', b'\x10'])
'Q' => Some([b'\x0E', b'\x11', b'\x11', b'\x11', b'\x15', b'\x12', b'\x0D'])
'R' => Some([b'\x1E', b'\x11', b'\x11', b'\x1E', b'\x14', b'\x12', b'\x11'])
'S' => Some([b'\x0F', b'\x10', b'\x10', b'\x0E', b'\x01', b'\x01', b'\x1E'])
'T' => Some([b'\x1F', b'\x04', b'\x04', b'\x04', b'\x04', b'\x04', b'\x04'])
'U' => Some([b'\x11', b'\x11', b'\x11', b'\x11', b'\x11', b'\x11', b'\x0E'])
'V' => Some([b'\x11', b'\x11', b'\x11', b'\x11', b'\x11', b'\x0A', b'\x04'])
'W' => Some([b'\x11', b'\x11', b'\x11', b'\x15', b'\x15', b'\x1B', b'\x11'])
'X' => Some([b'\x11', b'\x11', b'\x0A', b'\x04', b'\x0A', b'\x11', b'\x11'])
'Y' => Some([b'\x11', b'\x11', b'\x0A', b'\x04', b'\x04', b'\x04', b'\x04'])
'Z' => Some([b'\x1F', b'\x01', b'\x02', b'\x04', b'\x08', b'\x10', b'\x1F'])
'0' => Some([b'\x0E', b'\x11', b'\x13', b'\x15', b'\x19', b'\x11', b'\x0E'])
'1' => Some([b'\x04', b'\x0C', b'\x04', b'\x04', b'\x04', b'\x04', b'\x0E'])
'2' => Some([b'\x0E', b'\x11', b'\x01', b'\x02', b'\x04', b'\x08', b'\x1F'])
'3' => Some([b'\x1E', b'\x01', b'\x01', b'\x0E', b'\x01', b'\x01', b'\x1E'])
'4' => Some([b'\x02', b'\x06', b'\x0A', b'\x12', b'\x1F', b'\x02', b'\x02'])
'5' => Some([b'\x1F', b'\x10', b'\x10', b'\x1E', b'\x01', b'\x01', b'\x1E'])
'6' => Some([b'\x0E', b'\x10', b'\x10', b'\x1E', b'\x11', b'\x11', b'\x0E'])
'7' => Some([b'\x1F', b'\x01', b'\x02', b'\x04', b'\x08', b'\x08', b'\x08'])
'8' => Some([b'\x0E', b'\x11', b'\x11', b'\x0E', b'\x11', b'\x11', b'\x0E'])
'9' => Some([b'\x0E', b'\x11', b'\x11', b'\x0F', b'\x01', b'\x01', b'\x0E'])
' ' => Some([b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00'])
'.' => Some([b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x04'])
'-' => Some([b'\x00', b'\x00', b'\x00', b'\x1F', b'\x00', b'\x00', b'\x00'])
':' => Some([b'\x00', b'\x04', b'\x04', b'\x00', b'\x04', b'\x04', b'\x00'])
'_' => Some([b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x1F'])
'/' => Some([b'\x01', b'\x02', b'\x02', b'\x04', b'\x08', b'\x08', b'\x10'])
'+' => Some([b'\x00', b'\x04', b'\x04', b'\x1F', b'\x04', b'\x04', b'\x00'])
'@' => Some([b'\x0E', b'\x11', b'\x17', b'\x15', b'\x17', b'\x10', b'\x0E'])
'%' => Some([b'\x19', b'\x1A', b'\x02', b'\x04', b'\x08', b'\x0B', b'\x13'])
'#' => Some([b'\x0A', b'\x0A', b'\x1F', b'\x0A', b'\x1F', b'\x0A', b'\x0A'])
_ => None
}
}