From 8d7e2b1a889ee6164f9453046266644344e96d00 Mon Sep 17 00:00:00 2001 From: pointer-to-bios Date: Mon, 15 Apr 2024 20:41:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=AD=97=E4=BD=93=E7=A7=BB=E5=87=BA?= =?UTF-8?q?=E5=86=85=E6=A0=B8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + include/kernel/tty.h | 1 + scripts/tfgen | 57 ++ src/Makefile | 16 +- src/kernel/tty/font.c | 1896 +------------------------------------ src/ttyfonts/metamono.tfn | 1878 ++++++++++++++++++++++++++++++++++++ 6 files changed, 1960 insertions(+), 1889 deletions(-) create mode 100755 scripts/tfgen create mode 100644 src/ttyfonts/metamono.tfn diff --git a/.gitignore b/.gitignore index 6cd1797..903a407 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /test/metaverse.img *.o +*.tfo *.map *.elf metaverse_kernel diff --git a/include/kernel/tty.h b/include/kernel/tty.h index 6edf00d..1ee8b57 100644 --- a/include/kernel/tty.h +++ b/include/kernel/tty.h @@ -156,6 +156,7 @@ void tty_disable(tty *ttyx); typedef struct __tty_font_t { + bool initialized; u16 char_width, char_height; u64 **font; } tty_font_t; diff --git a/scripts/tfgen b/scripts/tfgen new file mode 100755 index 0000000..c2a91a9 --- /dev/null +++ b/scripts/tfgen @@ -0,0 +1,57 @@ +#!/usr/bin/python + +from io import TextIOWrapper +import sys +import struct + + +def main(infile: TextIOWrapper, outfile: TextIOWrapper): + size = infile.readline().strip().split(",") + size = (int(size[0].strip()), int(size[1].strip())) + outfile.write(struct.pack('q', size[0])) + outfile.write(struct.pack('q', size[1])) + for _ in range(62): + outfile.write(struct.pack('q', int(0))) + in_char = False + char_buffer = [] + char_count = 0 + for line in infile: + line = line.split("//")[0].strip() + if len(line) == 0: + continue + if line.startswith("{"): + char_buffer = [] + line = line[1:] + in_char = True + if line.endswith("},"): + i = 0 + for d in char_buffer: + outfile.write(struct.pack('q', d)) + i += 1 + while i < 64: + outfile.write(struct.pack('q', int(0))) + i += 1 + char_count += 1 + in_char = False + continue + if len(line) == 0: + continue + if in_char: + data = line.split(",")[0].strip() + data = int(data, 2) + char_buffer.append(data) + while char_count < 256: + for _ in range(64): + outfile.write(struct.pack('q', int(0))) + char_count += 1 + + +if __name__ == "__main__": + if len(sys.argv) < 3: + print("tfgen: Input file and Output file needed.") + exit(1) + infile_name = sys.argv[1] + outfile_name = sys.argv[2] + with open(infile_name) as infile: + with open(outfile_name, "wb") as outfile: + main(infile, outfile) diff --git a/src/Makefile b/src/Makefile index ffbdcc9..7532577 100644 --- a/src/Makefile +++ b/src/Makefile @@ -12,11 +12,15 @@ ifdef release release = 1 endif +ifndef ttyfont + ttyfont = metamono +endif + ALLOCATOR_MAGIC = $(shell "${SOURCE}/magicgen" | sha512sum | head -c 128 | md5sum | head -c 8) -BUILD_ID = $(shell "${SOURCE}/magicgen" | sha512sum | head -c 128 | md5sum | head -c 4) +BUILD_ID = $(shell "${SOURCE}/magicgen" | sha512sum | head -c 128 | md5sum | head -c 8) -SUBOBJS = kernel/kernel.o libk/libk.o rust.o +SUBOBJS = kernel/kernel.o libk/libk.o rust.o font_file.o DEFINES = ARCH="${ARCH}" ASM="${ASM}" ASMFLAGS="${ASMFLAGS}" SOURCE="${SOURCE}" PWD="${PWD}" \ ALLOCATOR_MAGIC="${ALLOCATOR_MAGIC}" BUILD_ID="${BUILD_ID}" @@ -50,7 +54,7 @@ RUST_LIBS = "${RUSTLIB_PATH}/liballoc.rlib" "${RUSTLIB_PATH}/libcompiler_builtin ################################ -metaverse.elf: kernel libk rust metaverse.lds +metaverse.elf: kernel libk rust metaverse.lds font_file.o @echo -e "\e[1;33mld\e[0m \e[1;32m$@\e[0m \e[34m<--\e[0m \e[32m${SUBOBJS}\e[0m" @ld -T metaverse.lds -Map=metaverse.map -unresolved-symbols=ignore-all -o $@ ${SUBOBJS} ${RUST_LIBS} \ 2>&1 | "${SOURCE}/colorize" "warning:=yellow" "error:=red" "ld=lyellow" @@ -92,7 +96,11 @@ rust: postproc @echo -e "\e[1m\e[33mrustc\e[0m \e[34m-->\e[0m \e[1m\e[32m$@.o\e[0m" @rustc ${RSCFLAGS} lib.rs -o rust.o +font_file.o: ttyfonts/${ttyfont}.tfn + @"${SOURCE}/tfgen" $< font_file.tfo + @ld -r -b binary -o $@ font_file.tfo + clear: @make -C kernel clear --no-print-directory ${DEFINES} @make -C libk clear --no-print-directory ${DEFINES} - @-rm metaverse.elf metaverse.map rust.o + @-rm metaverse.elf metaverse.map rust.o font_file.{o,tfo} diff --git a/src/kernel/tty/font.c b/src/kernel/tty/font.c index 57d78f5..80734a0 100644 --- a/src/kernel/tty/font.c +++ b/src/kernel/tty/font.c @@ -1,1892 +1,14 @@ #include #include +#include +#include -u16 font_width = 8, font_height = 16; - -u64 font[256][64] = { - // 带 ‘//' 的是基准线 - // 带 '///' 的是限位 - { - // 光标 - 0b00000000, - 0b01111110, - 0b01111110, /// - 0b01111110, - 0b01111110, - 0b01111110, - 0b01111110, - 0b01111110, - 0b01111110, - 0b01111110, - 0b01111110, - 0b01111110, // - 0b01111110, - 0b01111110, - 0b01111110, - 0b00000000, - }, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - { - // '\n' - // 一行不够长时,打印这个符号换行 - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00000000, - 0b01111110, - 0b00000010, - 0b00000010, - 0b00000010, - 0b00010010, - 0b00100100, // - 0b01111000, - 0b00100000, - 0b00010000, - 0b00000000, - }, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - {}, - { - // space - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // ! - 0b00000000, - 0b00000000, - 0b00011000, /// - 0b00011000, - 0b00011000, - 0b00011000, - 0b00011000, - 0b00011000, - 0b00011000, - 0b00011000, - 0b00000000, - 0b00011000, // - 0b00011000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //" - 0b00000000, - 0b00110110, - 0b00110110, /// - 0b00110110, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // # - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00100100, - 0b00100100, - 0b01111110, - 0b00100100, - 0b00100100, - 0b01111110, - 0b00100100, - 0b00100100, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //$ - 0b00000000, - 0b00001000, - 0b00011100, /// - 0b00101010, - 0b01001010, - 0b01001000, - 0b00111000, - 0b00011100, - 0b00010010, - 0b01010010, - 0b01010100, - 0b00111000, // - 0b00010000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //% - 0b00000000, - 0b00000000, - 0b00100010, /// - 0b01010100, - 0b00100100, - 0b00001000, - 0b00001000, - 0b00010000, - 0b00010000, - 0b00100100, - 0b00101010, - 0b01000100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //& - 0b00000000, - 0b00000000, - 0b00011100, /// - 0b00100010, - 0b00100000, - 0b00010000, - 0b00010000, - 0b00101001, - 0b01000110, - 0b01000110, - 0b01000110, - 0b00111001, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //' - 0b00000000, - 0b00011000, - 0b00011000, /// - 0b00011000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //( - 0b00000000, - 0b00000100, - 0b00001000, /// - 0b00011000, - 0b00010000, - 0b00110000, - 0b00110000, - 0b00110000, - 0b00110000, - 0b00010000, - 0b00011000, - 0b00001000, // - 0b00000100, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //) - 0b00000000, - 0b00100000, - 0b00010000, /// - 0b00011000, - 0b00001000, - 0b00001100, - 0b00001100, - 0b00001100, - 0b00001100, - 0b00001000, - 0b00011000, - 0b00010000, // - 0b00100000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //* - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00001000, - 0b00001000, - 0b11011001, - 0b00111110, - 0b00011000, - 0b00100100, - 0b01000010, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //+ - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00011000, - 0b00011000, - 0b01111110, - 0b00011000, - 0b00011000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //, - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00001100, - 0b00011000, // - 0b00010000, - 0b00110000, - 0b00000000, - 0b00000000, - }, - { - //- - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b01111110, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //. - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00011000, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //\/ - 0b00000000, - 0b00000010, - 0b00000010, /// - 0b00000100, - 0b00000100, - 0b00001000, - 0b00001000, - 0b00010000, - 0b00010000, - 0b00100000, - 0b00100000, - 0b01000000, // - 0b01000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 0 - 0b00000000, - 0b00000000, - 0b00111100, /// - 0b00100100, - 0b01000010, - 0b01000010, - 0b01011010, - 0b01011010, - 0b01000010, - 0b01000010, - 0b00100100, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 1 - 0b00000000, - 0b00000000, - 0b00011000, /// - 0b00101000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 2 - 0b00000000, - 0b00000000, - 0b00111100, /// - 0b01000010, - 0b01000010, - 0b00000010, - 0b00000100, - 0b00011000, - 0b00100000, - 0b01000000, - 0b01000000, - 0b01111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 3 - 0b00000000, - 0b00000000, - 0b01111110, /// - 0b00000100, - 0b00001000, - 0b00011000, - 0b00000100, - 0b00000010, - 0b00000010, - 0b01000010, - 0b01100100, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 4 - 0b00000000, - 0b00000000, - 0b00000100, /// - 0b00001000, - 0b00001000, - 0b00010000, - 0b00010000, - 0b00100010, - 0b00100010, - 0b01111110, - 0b00000010, - 0b00000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 5 - 0b00000000, - 0b00000000, - 0b01111100, /// - 0b01000000, - 0b01000000, - 0b01111000, - 0b01000100, - 0b00000010, - 0b00000010, - 0b00000010, - 0b01000100, - 0b00111000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 6 - 0b00000000, - 0b00000000, - 0b00001000, /// - 0b00010000, - 0b00010000, - 0b00111000, - 0b00100100, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00100100, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 7 - 0b00000000, - 0b00000000, - 0b01111110, /// - 0b01000010, - 0b00000100, - 0b00000100, - 0b00001000, - 0b00001000, - 0b00010000, - 0b00010000, - 0b00100000, - 0b00100000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 8 - 0b00000000, - 0b00000000, - 0b00111100, /// - 0b01000010, - 0b01000010, - 0b00100100, - 0b00011000, - 0b00100100, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // 9 - 0b00000000, - 0b00000000, - 0b00111100, /// - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00111100, - 0b00000100, - 0b00001000, - 0b00010000, - 0b00100000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //: - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00011000, - 0b00011000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00011000, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //; - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00011000, - 0b00011000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00011000, - 0b00011000, // - 0b00010000, - 0b00100000, - 0b00000000, - 0b00000000, - }, - { - //< - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000110, - 0b00001000, - 0b00110000, - 0b01000000, - 0b01000000, - 0b00110000, - 0b00001000, - 0b00000110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //= - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01111110, - 0b00000000, - 0b00000000, - 0b00000000, - 0b01111110, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //> - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b01100000, - 0b00010000, - 0b00001100, - 0b00000010, - 0b00000010, - 0b00001100, - 0b00010000, - 0b01100000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //? - 0b00000000, - 0b00000000, - 0b00111000, /// - 0b01000100, - 0b00000010, - 0b00000010, - 0b00000100, - 0b00011000, - 0b00100000, - 0b00000000, - 0b00110000, - 0b00110000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //@ - 0b00000000, - 0b00000000, - 0b00011100, /// - 0b00100010, - 0b01000010, - 0b01001110, - 0b01010010, - 0b01010010, - 0b01010010, - 0b01010010, - 0b01010010, - 0b01001110, // - 0b01000000, - 0b00100000, - 0b00011100, - 0b00000000, - }, - { - // A - 0b00000000, - 0b00000000, - 0b00011000, /// - 0b00011000, - 0b00101000, - 0b00100100, - 0b00100100, - 0b00111100, - 0b01000100, - 0b01000010, - 0b01000010, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // B - 0b00000000, - 0b00000000, - 0b01111000, /// - 0b01000100, - 0b01000010, - 0b01000100, - 0b01111000, - 0b01000100, - 0b01000010, - 0b01000010, - 0b01000100, - 0b01111000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // C - 0b00000000, - 0b00000000, - 0b00011000, /// - 0b00100100, - 0b01000010, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000010, - 0b00100100, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // D - 0b00000000, - 0b00000000, - 0b01111000, /// - 0b01000100, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000100, - 0b01111000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // E - 0b00000000, - 0b00000000, - 0b01111110, /// - 0b01000000, - 0b01000000, - 0b01000000, - 0b01111110, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // F - 0b00000000, - 0b00000000, - 0b01111110, /// - 0b01000000, - 0b01000000, - 0b01000000, - 0b01111110, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // G - 0b00000000, - 0b00000000, - 0b00011100, /// - 0b00100010, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01001110, - 0b01000010, - 0b01000010, - 0b00100100, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // H - 0b00000000, - 0b00000000, - 0b01000010, /// - 0b01000010, - 0b01000010, - 0b01000010, - 0b01111110, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // I - 0b00000000, - 0b00000000, - 0b00111110, /// - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // J - 0b00000000, - 0b00000000, - 0b00111100, /// - 0b00000100, - 0b00000100, - 0b00000100, - 0b00000100, - 0b00000100, - 0b00000100, - 0b00000100, - 0b01000100, - 0b00111000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // K - 0b00000000, - 0b00000000, - 0b01000010, /// - 0b01000100, - 0b01001000, - 0b01110000, - 0b01010000, - 0b01001000, - 0b01001000, - 0b01000100, - 0b01000100, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // L - 0b00000000, - 0b00000000, - 0b01000000, /// - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // M - 0b00000000, - 0b00000000, - 0b00100010, /// - 0b00100010, - 0b00100110, - 0b01010101, - 0b01001001, - 0b01001001, - 0b01001001, - 0b01000001, - 0b10000001, - 0b10000001, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // N - 0b00000000, - 0b00000000, - 0b01000010, /// - 0b01100010, - 0b01100010, - 0b01010010, - 0b01010010, - 0b01001010, - 0b01001010, - 0b01000110, - 0b01000110, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // O - 0b00000000, - 0b00000000, - 0b00011000, /// - 0b00100100, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00100100, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // P - 0b00000000, - 0b00000000, - 0b01111000, /// - 0b01000100, - 0b01000010, - 0b01000010, - 0b01000100, - 0b01111000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // Q - 0b00000000, - 0b00000000, - 0b00011000, /// - 0b00100100, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00100100, - 0b00011000, // - 0b00000100, - 0b00000010, - 0b00000000, - 0b00000000, - }, - { - // R - 0b00000000, - 0b00000000, - 0b01111000, /// - 0b01000100, - 0b01000010, - 0b01000010, - 0b01111100, - 0b01001000, - 0b01000100, - 0b01000010, - 0b01000010, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // S - 0b00000000, - 0b00000000, - 0b00011100, /// - 0b00100010, - 0b01000010, - 0b01000000, - 0b00110000, - 0b00001100, - 0b00000010, - 0b01000010, - 0b01000100, - 0b00111000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // T - 0b00000000, - 0b00000000, - 0b01111111, /// - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // U - 0b00000000, - 0b00000000, - 0b01000010, /// - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00100100, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // V - 0b00000000, - 0b00000000, - 0b01000010, /// - 0b01000010, - 0b00100100, - 0b00100100, - 0b00100100, - 0b00100100, - 0b00100100, - 0b00011000, - 0b00011000, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // W - 0b00000000, - 0b00000000, - 0b10000001, /// - 0b10000001, - 0b10000001, - 0b10011001, - 0b10011001, - 0b10011001, - 0b10100101, - 0b01100110, - 0b01100110, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // X - 0b00000000, - 0b00000000, - 0b01000010, /// - 0b00100100, - 0b00100100, - 0b00011000, - 0b00011000, - 0b00011000, - 0b00011000, - 0b00100100, - 0b00100100, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // Y - 0b00000000, - 0b00000000, - 0b01000010, /// - 0b01000010, - 0b01000010, - 0b00100100, - 0b00101000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // Z - 0b00000000, - 0b00000000, - 0b01111110, /// - 0b00000100, - 0b00001000, - 0b00001000, - 0b00010000, - 0b00010000, - 0b00100000, - 0b00100000, - 0b01000000, - 0b01111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //[ - 0b00000000, - 0b00011100, - 0b00010000, /// - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, // - 0b00011100, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //'\' - 0b00000000, - 0b01000000, - 0b01000000, /// - 0b00100000, - 0b00100000, - 0b00010000, - 0b00010000, - 0b00001000, - 0b00001000, - 0b00000100, - 0b00000100, - 0b00000010, // - 0b00000010, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //] - 0b00000000, - 0b00111000, - 0b00001000, /// - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, // - 0b00111000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //^ - 0b00000000, - 0b00000000, - 0b00011000, /// - 0b00100100, - 0b01000010, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //_ - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b01111110, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //` - 0b00000000, - 0b00011000, - 0b00001100, /// - 0b00000010, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // a - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00111110, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000110, - 0b00111010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // b - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b01000000, - 0b01000000, - 0b01011100, - 0b01100010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // c - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00111100, - 0b01000010, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000010, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // d - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000010, - 0b00000010, - 0b00111010, - 0b01000110, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // e - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00111100, - 0b01000010, - 0b01000010, - 0b01111100, - 0b01000000, - 0b01000010, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // f - 0b00000000, - 0b00000000, - 0b00001100, /// - 0b00010000, - 0b00010000, - 0b00010000, - 0b01111100, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, // - 0b00010000, - 0b00010000, - 0b01100000, - 0b00000000, - }, - { - // g - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00111010, - 0b01000110, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000110, - 0b00111010, // - 0b00000010, - 0b00000010, - 0b00111100, - 0b00000000, - }, - { - // h - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b01000000, - 0b01000000, - 0b01011100, - 0b01100010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // i - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00011000, - 0b00011000, - 0b00000000, - 0b00011000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // j - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00011000, - 0b00011000, - 0b00000000, - 0b00011000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, // - 0b00001000, - 0b00001000, - 0b01110000, - 0b00000000, - }, - { - // k - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000010, - 0b01100100, - 0b01011000, - 0b01001000, - 0b01000100, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // l - 0b00000000, - 0b00000000, - 0b00110000, /// - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00001100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // m - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01010110, - 0b01101001, - 0b01001001, - 0b01001001, - 0b01001001, - 0b01001001, - 0b01001001, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // n - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01011100, - 0b01100010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // o - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00111100, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // p - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01011100, - 0b01100010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01100010, - 0b01011100, // - 0b01000000, - 0b01000000, - 0b01000000, - 0b00000000, - }, - { - // q - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00111010, - 0b01000110, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000110, - 0b00111010, // - 0b00000010, - 0b00000010, - 0b00000010, - 0b00000000, - }, - { - // r - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01011100, - 0b01100010, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, - 0b01000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // s - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00111100, - 0b01000010, - 0b01000000, - 0b00111100, - 0b00000010, - 0b01000010, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // t - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00010000, - 0b00010000, - 0b01111110, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00001110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // u - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00111100, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // v - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01000010, - 0b01000010, - 0b01000010, - 0b00100100, - 0b00100100, - 0b00100100, - 0b00011000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // w - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b10001001, - 0b10001001, - 0b10001001, - 0b01011001, - 0b01010110, - 0b01100110, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // x - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01000010, - 0b00100100, - 0b00011000, - 0b00011000, - 0b00100100, - 0b01000010, - 0b01000010, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // y - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000010, - 0b01000110, - 0b00111010, // - 0b00000010, - 0b00000010, - 0b00111100, - 0b00000000, - }, - { - // z - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b01111110, - 0b00000100, - 0b00001000, - 0b00010000, - 0b00100000, - 0b01000000, - 0b01111110, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - // { - 0b00000000, - 0b00000110, - 0b00001000, /// - 0b00001000, - 0b00001000, - 0b00001000, - 0b00010000, - 0b00010000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, // - 0b00000110, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //| - 0b00000000, - 0b00001000, - 0b00001000, /// - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, - 0b00001000, // - 0b00001000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //} - 0b00000000, - 0b01100000, - 0b00010000, /// - 0b00010000, - 0b00010000, - 0b00010000, - 0b00001000, - 0b00001000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, // - 0b01100000, - 0b00000000, - 0b00000000, - 0b00000000, - }, - { - //~ - 0b00000000, - 0b00000000, - 0b00000000, /// - 0b00000000, - 0b00000000, - 0b00000000, - 0b00110010, - 0b01001100, - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, // - 0b00000000, - 0b00000000, - 0b00000000, - 0b00000000, - }, -}; - -bool initialized = false; +extern void _binary_font_file_tfo_start; u64 *font_pointers[256]; tty_font_t refont = { + .initialized = false, .font = (u64 **)font_pointers, .char_width = 8, .char_height = 16, @@ -1894,13 +16,17 @@ tty_font_t refont = { tty_font_t *tty_get_font() { - if (initialized == false) + if (refont.initialized == false) { + void *buffer = &_binary_font_file_tfo_start; + refont.char_width = ((u64 *)buffer)[0]; + refont.char_height = ((u64 *)buffer)[1]; + void *font = buffer + sizeof(u64) * 64; for (usize i = 0; i < 256; i++) { - font_pointers[i] = font[i]; + font_pointers[i] = font + i * sizeof(u64) * 64; } - initialized = true; + refont.initialized = true; } return &refont; } diff --git a/src/ttyfonts/metamono.tfn b/src/ttyfonts/metamono.tfn new file mode 100644 index 0000000..a48d4fd --- /dev/null +++ b/src/ttyfonts/metamono.tfn @@ -0,0 +1,1878 @@ +8, 16 +// 带 ‘//' 的是基准线 +// 带 '///' 的是限位 +{ + // 光标 + 00000000, + 01111110, + 01111110, /// + 01111110, + 01111110, + 01111110, + 01111110, + 01111110, + 01111110, + 01111110, + 01111110, + 01111110, // + 01111110, + 01111110, + 01111110, + 00000000, +}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{ + // '\n' + // 一行不够长时,打印这个符号换行 + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00000000, + 01111110, + 00000010, + 00000010, + 00000010, + 00010010, + 00100100, // + 01111000, + 00100000, + 00010000, + 00000000, +}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{}, +{ + // space + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // ! + 00000000, + 00000000, + 00011000, /// + 00011000, + 00011000, + 00011000, + 00011000, + 00011000, + 00011000, + 00011000, + 00000000, + 00011000, // + 00011000, + 00000000, + 00000000, + 00000000, +}, +{ + //" + 00000000, + 00110110, + 00110110, /// + 00110110, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // # + 00000000, + 00000000, + 00000000, /// + 00100100, + 00100100, + 01111110, + 00100100, + 00100100, + 01111110, + 00100100, + 00100100, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //$ + 00000000, + 00001000, + 00011100, /// + 00101010, + 01001010, + 01001000, + 00111000, + 00011100, + 00010010, + 01010010, + 01010100, + 00111000, // + 00010000, + 00000000, + 00000000, + 00000000, +}, +{ + //% + 00000000, + 00000000, + 00100010, /// + 01010100, + 00100100, + 00001000, + 00001000, + 00010000, + 00010000, + 00100100, + 00101010, + 01000100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //& + 00000000, + 00000000, + 00011100, /// + 00100010, + 00100000, + 00010000, + 00010000, + 00101001, + 01000110, + 01000110, + 01000110, + 00111001, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //' + 00000000, + 00011000, + 00011000, /// + 00011000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //( + 00000000, + 00000100, + 00001000, /// + 00011000, + 00010000, + 00110000, + 00110000, + 00110000, + 00110000, + 00010000, + 00011000, + 00001000, // + 00000100, + 00000000, + 00000000, + 00000000, +}, +{ + //) + 00000000, + 00100000, + 00010000, /// + 00011000, + 00001000, + 00001100, + 00001100, + 00001100, + 00001100, + 00001000, + 00011000, + 00010000, // + 00100000, + 00000000, + 00000000, + 00000000, +}, +{ + //* + 00000000, + 00000000, + 00000000, /// + 00000000, + 00001000, + 00001000, + 11011001, + 00111110, + 00011000, + 00100100, + 01000010, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //+ + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00011000, + 00011000, + 01111110, + 00011000, + 00011000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //, + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00001100, + 00011000, // + 00010000, + 00110000, + 00000000, + 00000000, +}, +{ + //- + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00000000, + 00000000, + 01111110, + 00000000, + 00000000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //. + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00011000, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //\/ + 00000000, + 00000010, + 00000010, /// + 00000100, + 00000100, + 00001000, + 00001000, + 00010000, + 00010000, + 00100000, + 00100000, + 01000000, // + 01000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 0 + 00000000, + 00000000, + 00111100, /// + 00100100, + 01000010, + 01000010, + 01011010, + 01011010, + 01000010, + 01000010, + 00100100, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 1 + 00000000, + 00000000, + 00011000, /// + 00101000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 2 + 00000000, + 00000000, + 00111100, /// + 01000010, + 01000010, + 00000010, + 00000100, + 00011000, + 00100000, + 01000000, + 01000000, + 01111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 3 + 00000000, + 00000000, + 01111110, /// + 00000100, + 00001000, + 00011000, + 00000100, + 00000010, + 00000010, + 01000010, + 01100100, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 4 + 00000000, + 00000000, + 00000100, /// + 00001000, + 00001000, + 00010000, + 00010000, + 00100010, + 00100010, + 01111110, + 00000010, + 00000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 5 + 00000000, + 00000000, + 01111100, /// + 01000000, + 01000000, + 01111000, + 01000100, + 00000010, + 00000010, + 00000010, + 01000100, + 00111000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 6 + 00000000, + 00000000, + 00001000, /// + 00010000, + 00010000, + 00111000, + 00100100, + 01000010, + 01000010, + 01000010, + 00100100, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 7 + 00000000, + 00000000, + 01111110, /// + 01000010, + 00000100, + 00000100, + 00001000, + 00001000, + 00010000, + 00010000, + 00100000, + 00100000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 8 + 00000000, + 00000000, + 00111100, /// + 01000010, + 01000010, + 00100100, + 00011000, + 00100100, + 01000010, + 01000010, + 01000010, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // 9 + 00000000, + 00000000, + 00111100, /// + 01000010, + 01000010, + 01000010, + 01000010, + 00111100, + 00000100, + 00001000, + 00010000, + 00100000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //: + 00000000, + 00000000, + 00000000, /// + 00000000, + 00011000, + 00011000, + 00000000, + 00000000, + 00000000, + 00000000, + 00011000, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //; + 00000000, + 00000000, + 00000000, /// + 00000000, + 00011000, + 00011000, + 00000000, + 00000000, + 00000000, + 00000000, + 00011000, + 00011000, // + 00010000, + 00100000, + 00000000, + 00000000, +}, +{ + //< + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000110, + 00001000, + 00110000, + 01000000, + 01000000, + 00110000, + 00001000, + 00000110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //= + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01111110, + 00000000, + 00000000, + 00000000, + 01111110, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //> + 00000000, + 00000000, + 00000000, /// + 00000000, + 01100000, + 00010000, + 00001100, + 00000010, + 00000010, + 00001100, + 00010000, + 01100000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //? + 00000000, + 00000000, + 00111000, /// + 01000100, + 00000010, + 00000010, + 00000100, + 00011000, + 00100000, + 00000000, + 00110000, + 00110000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //@ + 00000000, + 00000000, + 00011100, /// + 00100010, + 01000010, + 01001110, + 01010010, + 01010010, + 01010010, + 01010010, + 01010010, + 01001110, // + 01000000, + 00100000, + 00011100, + 00000000, +}, +{ + // A + 00000000, + 00000000, + 00011000, /// + 00011000, + 00101000, + 00100100, + 00100100, + 00111100, + 01000100, + 01000010, + 01000010, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // B + 00000000, + 00000000, + 01111000, /// + 01000100, + 01000010, + 01000100, + 01111000, + 01000100, + 01000010, + 01000010, + 01000100, + 01111000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // C + 00000000, + 00000000, + 00011000, /// + 00100100, + 01000010, + 01000000, + 01000000, + 01000000, + 01000000, + 01000010, + 00100100, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // D + 00000000, + 00000000, + 01111000, /// + 01000100, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000100, + 01111000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // E + 00000000, + 00000000, + 01111110, /// + 01000000, + 01000000, + 01000000, + 01111110, + 01000000, + 01000000, + 01000000, + 01000000, + 01111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // F + 00000000, + 00000000, + 01111110, /// + 01000000, + 01000000, + 01000000, + 01111110, + 01000000, + 01000000, + 01000000, + 01000000, + 01000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // G + 00000000, + 00000000, + 00011100, /// + 00100010, + 01000000, + 01000000, + 01000000, + 01001110, + 01000010, + 01000010, + 00100100, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // H + 00000000, + 00000000, + 01000010, /// + 01000010, + 01000010, + 01000010, + 01111110, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // I + 00000000, + 00000000, + 00111110, /// + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // J + 00000000, + 00000000, + 00111100, /// + 00000100, + 00000100, + 00000100, + 00000100, + 00000100, + 00000100, + 00000100, + 01000100, + 00111000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // K + 00000000, + 00000000, + 01000010, /// + 01000100, + 01001000, + 01110000, + 01010000, + 01001000, + 01001000, + 01000100, + 01000100, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // L + 00000000, + 00000000, + 01000000, /// + 01000000, + 01000000, + 01000000, + 01000000, + 01000000, + 01000000, + 01000000, + 01000000, + 01111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // M + 00000000, + 00000000, + 00100010, /// + 00100010, + 00100110, + 01010101, + 01001001, + 01001001, + 01001001, + 01000001, + 10000001, + 10000001, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // N + 00000000, + 00000000, + 01000010, /// + 01100010, + 01100010, + 01010010, + 01010010, + 01001010, + 01001010, + 01000110, + 01000110, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // O + 00000000, + 00000000, + 00011000, /// + 00100100, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 00100100, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // P + 00000000, + 00000000, + 01111000, /// + 01000100, + 01000010, + 01000010, + 01000100, + 01111000, + 01000000, + 01000000, + 01000000, + 01000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // Q + 00000000, + 00000000, + 00011000, /// + 00100100, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 00100100, + 00011000, // + 00000100, + 00000010, + 00000000, + 00000000, +}, +{ + // R + 00000000, + 00000000, + 01111000, /// + 01000100, + 01000010, + 01000010, + 01111100, + 01001000, + 01000100, + 01000010, + 01000010, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // S + 00000000, + 00000000, + 00011100, /// + 00100010, + 01000010, + 01000000, + 00110000, + 00001100, + 00000010, + 01000010, + 01000100, + 00111000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // T + 00000000, + 00000000, + 01111111, /// + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // U + 00000000, + 00000000, + 01000010, /// + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 00100100, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // V + 00000000, + 00000000, + 01000010, /// + 01000010, + 00100100, + 00100100, + 00100100, + 00100100, + 00100100, + 00011000, + 00011000, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // W + 00000000, + 00000000, + 10000001, /// + 10000001, + 10000001, + 10011001, + 10011001, + 10011001, + 10100101, + 01100110, + 01100110, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // X + 00000000, + 00000000, + 01000010, /// + 00100100, + 00100100, + 00011000, + 00011000, + 00011000, + 00011000, + 00100100, + 00100100, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // Y + 00000000, + 00000000, + 01000010, /// + 01000010, + 01000010, + 00100100, + 00101000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // Z + 00000000, + 00000000, + 01111110, /// + 00000100, + 00001000, + 00001000, + 00010000, + 00010000, + 00100000, + 00100000, + 01000000, + 01111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //[ + 00000000, + 00011100, + 00010000, /// + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, // + 00011100, + 00000000, + 00000000, + 00000000, +}, +{ + //'\' + 00000000, + 01000000, + 01000000, /// + 00100000, + 00100000, + 00010000, + 00010000, + 00001000, + 00001000, + 00000100, + 00000100, + 00000010, // + 00000010, + 00000000, + 00000000, + 00000000, +}, +{ + //] + 00000000, + 00111000, + 00001000, /// + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, // + 00111000, + 00000000, + 00000000, + 00000000, +}, +{ + //^ + 00000000, + 00000000, + 00011000, /// + 00100100, + 01000010, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + //_ + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, // + 01111110, + 00000000, + 00000000, + 00000000, +}, +{ + //` + 00000000, + 00011000, + 00001100, /// + 00000010, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // a + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00111110, + 01000010, + 01000010, + 01000010, + 01000010, + 01000110, + 00111010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // b + 00000000, + 00000000, + 00000000, /// + 01000000, + 01000000, + 01011100, + 01100010, + 01000010, + 01000010, + 01000010, + 01000010, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // c + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00111100, + 01000010, + 01000000, + 01000000, + 01000000, + 01000010, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // d + 00000000, + 00000000, + 00000000, /// + 00000010, + 00000010, + 00111010, + 01000110, + 01000010, + 01000010, + 01000010, + 01000010, + 00111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // e + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00111100, + 01000010, + 01000010, + 01111100, + 01000000, + 01000010, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // f + 00000000, + 00000000, + 00001100, /// + 00010000, + 00010000, + 00010000, + 01111100, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, // + 00010000, + 00010000, + 01100000, + 00000000, +}, +{ + // g + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00111010, + 01000110, + 01000010, + 01000010, + 01000010, + 01000110, + 00111010, // + 00000010, + 00000010, + 00111100, + 00000000, +}, +{ + // h + 00000000, + 00000000, + 00000000, /// + 01000000, + 01000000, + 01011100, + 01100010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // i + 00000000, + 00000000, + 00000000, /// + 00011000, + 00011000, + 00000000, + 00011000, + 00001000, + 00001000, + 00001000, + 00001000, + 00111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // j + 00000000, + 00000000, + 00000000, /// + 00011000, + 00011000, + 00000000, + 00011000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, // + 00001000, + 00001000, + 01110000, + 00000000, +}, +{ + // k + 00000000, + 00000000, + 00000000, /// + 01000000, + 01000000, + 01000000, + 01000010, + 01100100, + 01011000, + 01001000, + 01000100, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // l + 00000000, + 00000000, + 00110000, /// + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00001100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // m + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01010110, + 01101001, + 01001001, + 01001001, + 01001001, + 01001001, + 01001001, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // n + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01011100, + 01100010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // o + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00111100, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // p + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01011100, + 01100010, + 01000010, + 01000010, + 01000010, + 01100010, + 01011100, // + 01000000, + 01000000, + 01000000, + 00000000, +}, +{ + // q + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00111010, + 01000110, + 01000010, + 01000010, + 01000010, + 01000110, + 00111010, // + 00000010, + 00000010, + 00000010, + 00000000, +}, +{ + // r + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01011100, + 01100010, + 01000000, + 01000000, + 01000000, + 01000000, + 01000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // s + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00111100, + 01000010, + 01000000, + 00111100, + 00000010, + 01000010, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // t + 00000000, + 00000000, + 00000000, /// + 00010000, + 00010000, + 01111110, + 00010000, + 00010000, + 00010000, + 00010000, + 00010000, + 00001110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // u + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 00111100, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // v + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01000010, + 01000010, + 01000010, + 00100100, + 00100100, + 00100100, + 00011000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // w + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 10001001, + 10001001, + 10001001, + 01011001, + 01010110, + 01100110, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // x + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01000010, + 00100100, + 00011000, + 00011000, + 00100100, + 01000010, + 01000010, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // y + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01000010, + 01000010, + 01000010, + 01000010, + 01000010, + 01000110, + 00111010, // + 00000010, + 00000010, + 00111100, + 00000000, +}, +{ + // z + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 01111110, + 00000100, + 00001000, + 00010000, + 00100000, + 01000000, + 01111110, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{ + // { + 00000000, + 00000110, + 00001000, /// + 00001000, + 00001000, + 00001000, + 00010000, + 00010000, + 00001000, + 00001000, + 00001000, + 00001000, // + 00000110, + 00000000, + 00000000, + 00000000, +}, +{ + // | + 00000000, + 00001000, + 00001000, /// + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, + 00001000, // + 00001000, + 00000000, + 00000000, + 00000000, +}, +{ + // } + 00000000, + 01100000, + 00010000, /// + 00010000, + 00010000, + 00010000, + 00001000, + 00001000, + 00010000, + 00010000, + 00010000, + 00010000, // + 01100000, + 00000000, + 00000000, + 00000000, +}, +{ + // ~ + 00000000, + 00000000, + 00000000, /// + 00000000, + 00000000, + 00000000, + 00110010, + 01001100, + 00000000, + 00000000, + 00000000, + 00000000, // + 00000000, + 00000000, + 00000000, + 00000000, +}, +{}, \ No newline at end of file