From 82cf4b101e9c0be86ba9696013e25808a8f63f36 Mon Sep 17 00:00:00 2001 From: Walkline Wang Date: Wed, 25 Aug 2021 22:19:22 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=AD=97=E7=AC=A6=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E9=80=9F=E5=BA=A6=E6=8F=90=E9=AB=985?= =?UTF-8?q?=E5=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fontlib.py | 49 ++++++++++++++++--------------------------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/fontlib.py b/fontlib.py index 01e5fa8..b9d31b2 100644 --- a/fontlib.py +++ b/fontlib.py @@ -81,7 +81,7 @@ class FontLib(object): with open(self.__font_filename, 'rb') as font_file: self.__header = FontLibHeader(memoryview(font_file.read(FontLibHeader.LENGTH))) - self.__placeholder_buffer = self.__get_character_unicode_buffer(font_file, {ord('?')})[0][1] + self.__placeholder_buffer = self.__get_character_unicode_buffer(font_file, {ord('?')})[ord('?')] gc.collect() @@ -92,40 +92,34 @@ class FontLib(object): return 0x80 <= char_code <= 0xffef def __get_character_unicode_buffer(self, font_file, unicode_set): - buffer_list = [] - - def __seek(data, target): - for index in range(0, 2000, 2): - if data[index: index + 2] == target: - return offset + index - else: - return 0 + buffer_list = {} for unicode in unicode_set: if self.__is_ascii(unicode): char_offset = self.__header.ascii_start + (unicode - 0x20) * self.__header.data_size elif self.__is_gb2312(unicode): - gb2312_index = memoryview(struct.pack('= 0: + char_index_offset += offset break else: - buffer_list.append([unicode, self.__placeholder_buffer]) + buffer_list[unicode] = self.__placeholder_buffer continue char_offset = self.__header.gb2312_start + (char_index_offset - self.__header.index_table_address) / 2 * self.__header.data_size else: - buffer_list.append([unicode, self.__placeholder_buffer]) + buffer_list[unicode] = self.__placeholder_buffer continue font_file.seek(int(char_offset)) info_data = font_file.read(self.__header.data_size) - buffer_list.append([unicode, info_data]) + buffer_list[unicode] = info_data gc.collect() return buffer_list @@ -181,13 +175,6 @@ HZK Info: {}\n\ )) -def is_font_file_exist(font_file): - try: - os.stat(font_file) - return True - except: - return False - def reverseBits(n): bits = "{:0>8b}".format(n) return int(bits[::-1], 2) @@ -233,7 +220,7 @@ def run_test(): break except: pass - + if selected: fontlib = FontLib(font_files[selected - 1]) fontlib.info() @@ -258,11 +245,6 @@ def run_test(): if fontlib.scan_mode == FontLib.SCAN_MODE_HORIZONTAL: format = framebuf.MONO_HMSB if fontlib.byte_order == FontLib.BYTE_ORDER_MSB else framebuf.MONO_HLSB - - def get_buffer(char): - for buffer in buffer_list: - if buffer[0] == ord(char): - return buffer[1] def oled_show(buffer, width, height, x, y): fb = framebuf.FrameBuffer(bytearray(buffer), width, height, format) @@ -273,7 +255,7 @@ def run_test(): width = height = fontlib.font_height for char in chars: - buffer = get_buffer(char) + buffer = buffer_list[ord(char)] if x > ((128 // width - 1) * width): x = 0 @@ -282,11 +264,12 @@ def run_test(): oled_show(buffer, width, height, x, y) x += width else: - buffer_list = fontlib.get_characters('爱我,中华!Hello⒉あβǚㄘB⑴■☆') + buffer_dict = fontlib.get_characters('爱我,中华!Hello⒉あβǚㄘB⑴■☆') + buffer_list = [] - for buffer in buffer_list: - character = chr(buffer[0]) - print("'{}' {}\n".format(character, buffer)) + for unicode, buffer in buffer_dict.items(): + buffer_list.append([unicode, buffer]) + print("'{}' {}\n".format(chr(unicode), buffer)) data_size = fontlib.data_size font_height = fontlib.font_height -- Gitee From d3066050aa75b3f104c52549e9074db94e24cd76 Mon Sep 17 00:00:00 2001 From: Walkline Wang Date: Wed, 25 Aug 2021 22:23:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fontlib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fontlib.py b/fontlib.py index b9d31b2..8323ff3 100644 --- a/fontlib.py +++ b/fontlib.py @@ -269,7 +269,7 @@ def run_test(): for unicode, buffer in buffer_dict.items(): buffer_list.append([unicode, buffer]) - print("'{}' {}\n".format(chr(unicode), buffer)) + print("{}: {}\n".format(chr(unicode), buffer)) data_size = fontlib.data_size font_height = fontlib.font_height -- Gitee From 11a48171d525bd5aadd0088f15e1d64adc650a53 Mon Sep 17 00:00:00 2001 From: Walkline Wang Date: Wed, 25 Aug 2021 22:59:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 212 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 124 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index b42979d..0ff2c51 100644 --- a/README.md +++ b/README.md @@ -75,94 +75,111 @@ HZK Info: .//client/combined.bin byte order : LSB characters : 8932 -'!' [65281, b'\x00\x00\x00\x00\x00\x00\x08\x00\x0c\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x08\x00\x08\x00\x00\x00'] - -'☆' [9734, b'\x00\x00\x00\x00\x00\x80\x01\x80\x01\x80\x01@\x02@~? \x04\x10\x08\x0c\x10\x08\x10\x08\x90\x0bH\x148\x18\x08'] - -'⒉' [9353, b'\x00\x00\x00\x00\x00\x00\x07\xc0\x08@\x00@\x00@\x00@\x00\x80\x01\x00\x01\x00\x02\x00\x04\x00\x0c\x08\x0f\xcc\x00\x00'] - -',' [65292, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00p\x000\x00 \x00'] - -'我' [25105, b'\x00\x00\x00@\x07PxH\x08D\x08D\x7f\xfe\x08D\x08D\t(\x0e0x0\x080\x08R\t\x8ax\x06'] - -'ㄘ' [12568, b'\x00\x00\x00\x00\x00\x00\x01\x00\x01\x80\x00\x80\x01\x00\x03\xf0\x1d\x00\x01\x00\x02\xe0\x03`\x00@\x00\x80\x00\x00\x00\x00'] - -'■' [9632, b'\x00\x00\x00\x00\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff'] - -'B' [65314, b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x060\x068\x060\x06p\x07\xf0\x06\x18\x06\x18\x06\x18\x07\xf0\x00\x00\x00\x00'] - -'中' [20013, b'\x00\x00\x01\x00\x01\x00\x01\x00?\xfc!\x04!\x04!\x04!\x04!\x04!\x04?\xfc\x01\x00\x01\x00\x01\x00\x01\x00'] - -'爱' [29233, b'\x00\x00\x00\x00?\xf8\x11\x10\t\x10?\xfcD\x02B\x02\x1f\xf8\x04\x00\x07\xf8\x0e\x08\x13\x10 \xe0\x01\xe0\x1e\x1e'] - -'β' [946, b'\x00\x00\x00\x00\x00\x00\x01\xe0\x01\x10\x030\x02 \x02\xc0\x02`\x06 \x04 \x04`\x04`\x07\xc0\x0c\x00\x08\x00'] - -'あ' [12354, b"\x00\x00\x00\x00\x03\x00\x03\x00\x02\xc0\x1f\x80\x02\x00\x06\x80\x07\xf0\x0c\x98\x15\x0c'\x0c&\x0c/\x088\x10\x01\xe0"] - -'H' [72, b'\x00\x00\x00\x00\x00\x00\xe7\x00B\x00B\x00B\x00B\x00~\x00B\x00B\x00B\x00B\x00\xe7\x00\x00\x00\x00\x00'] - -'华' [21326, b'\x00\x00\x00\x00\x08@\x08H\x18p(\xc0+BHB\x08~\x01\x00\x01\x00\x7f\xfe\x01\x00\x01\x00\x01\x00\x01\x00'] - -'ǚ' [474, b"\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x08\x004\x00C\x00C\x00C\x00C\x00C\x00C\x00'\x00\x18\x00\x00\x00"] - -'e' [101, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<\x00B\x00~\x00@\x00@\x00B\x00<\x00\x00\x00\x00\x00'] - -'l' [108, b'\x00\x00\x00\x00\x00\x00p\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00|\x00\x00\x00\x00\x00'] - -'o' [111, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<\x00B\x00B\x00B\x00B\x00B\x00<\x00\x00\x00\x00\x00'] - -'⑴' [9332, b'\x00\x00\x00\x00\x08\x00\x10\x08!\x84 \x82@\x82@\x83@\x81@\x81@\x81@\x82 \x82 \x84\x13\xc4\x10\x08'] - -................ ................ ................ ................ ................ ................ ................ ................ -................ ................ ................ ................ .........@...... ................ ................ ................ -................ ........@....... ................ ................ .....@@@.@.@.... ................ .@@@@@@@@@@@@@@@ ................ -....@........... .......@@....... .....@@@@@...... ................ .@@@@....@..@... .......@........ .@@@@@@@@@@@@@@@ ................ -....@@.......... .......@@....... ....@....@...... ................ ....@....@...@.. .......@@....... .@@@@@@@@@@@@@@@ .....@@@@@@@.... -....@........... .......@.@...... .........@...... ................ ....@....@...@.. ........@....... .@@@@@@@@@@@@@@@ .....@@...@@.... -....@........... ......@..@...... .........@...... ................ .@@@@@@@@@@@@@@. .......@........ .@@@@@@@@@@@@@@@ .....@@...@@@... -....@........... .@@@@@@...@@@@@@ .........@...... ................ ....@....@...@.. ......@@@@@@.... .@@@@@@@@@@@@@@@ .....@@...@@.... -....@........... ..@..........@.. ........@....... ................ ....@....@...@.. ...@@@.@........ .@@@@@@@@@@@@@@@ .....@@..@@@.... -....@........... ...@........@... .......@........ ................ ....@..@..@.@... .......@........ .@@@@@@@@@@@@@@@ .....@@@@@@@.... -....@........... ....@@.....@.... .......@........ ................ ....@@@...@@.... ......@.@@@..... .@@@@@@@@@@@@@@@ .....@@....@@... -....@........... ....@......@.... ......@......... ................ .@@@@.....@@.... ......@@.@@..... .@@@@@@@@@@@@@@@ .....@@....@@... -................ ....@...@..@.... .....@.......... ................ ....@.....@@.... .........@...... .@@@@@@@@@@@@@@@ .....@@....@@... -....@........... ....@.@@.@..@... ....@@......@... .@@@............ ....@....@.@..@. ........@....... .@@@@@@@@@@@@@@@ .....@@@@@@@.... -....@........... ...@.@....@@@... ....@@@@@@..@@.. ..@@............ ....@..@@...@.@. ................ .@@@@@@@@@@@@@@@ ................ -................ ...@@.......@... ................ ..@............. .@@@@........@@. ................ .@@@@@@@@@@@@@@@ ................ - -................ ................ ................ ................ ................ ................ ................ ................ -.......@........ ................ ................ ................ ................ ................ ................ ................ -.......@........ ..@@@@@@@@@@@... ................ ......@@........ ................ ....@....@...... ................ ................ -.......@........ ...@...@...@.... .......@@@@..... ......@@........ @@@..@@@........ ....@....@..@... ................ ................ -..@@@@@@@@@@@@.. ....@..@...@.... .......@...@.... ......@.@@...... .@....@......... ...@@....@@@.... ...@.@.......... ................ -..@....@.....@.. ..@@@@@@@@@@@@.. ......@@..@@.... ...@@@@@@....... .@....@......... ..@.@...@@...... ....@........... ................ -..@....@.....@.. .@...@........@. ......@...@..... ......@......... .@....@......... ..@.@.@@.@....@. ..@@.@.......... ................ -..@....@.....@.. .@....@.......@. ......@.@@...... .....@@.@....... .@....@......... .@..@....@....@. .@....@@........ ..@@@@.......... -..@....@.....@.. ...@@@@@@@@@@... ......@..@@..... .....@@@@@@@.... .@@@@@@......... ....@....@@@@@@. .@....@@........ .@....@......... -..@....@.....@.. .....@.......... .....@@...@..... ....@@..@..@@... .@....@......... .......@........ .@....@@........ .@@@@@@......... -..@....@.....@.. .....@@@@@@@@... .....@....@..... ...@.@.@....@@.. .@....@......... .......@........ .@....@@........ .@.............. -..@@@@@@@@@@@@.. ....@@@.....@... .....@...@@..... ..@..@@@....@@.. .@....@......... .@@@@@@@@@@@@@@. .@....@@........ .@.............. -.......@........ ...@..@@...@.... .....@...@@..... ..@..@@.....@@.. .@....@......... .......@........ .@....@@........ .@....@......... -.......@........ ..@.....@@@..... .....@@@@@...... ..@.@@@@....@... @@@..@@@........ .......@........ ..@..@@@........ ..@@@@.......... -.......@........ .......@@@@..... ....@@.......... ..@@@......@.... ................ .......@........ ...@@........... ................ -.......@........ ...@@@@....@@@@. ....@........... .......@@@@..... ................ .......@........ ................ ................ - -................ ................ ................ -................ ................ ................ -................ ................ ....@........... -.@@@............ ................ ...@........@... -...@............ ................ ..@....@@....@.. -...@............ ................ ..@.....@.....@. -...@............ ................ .@......@.....@. -...@............ ..@@@@.......... .@......@.....@@ -...@............ .@....@......... .@......@......@ -...@............ .@....@......... .@......@......@ -...@............ .@....@......... .@......@......@ -...@............ .@....@......... .@......@.....@. -...@............ .@....@......... ..@.....@.....@. -.@@@@@.......... ..@@@@.......... ..@.....@....@.. -................ ................ ...@..@@@@...@.. -................ ................ ...@........@... +!: b'\x00\x00\x00\x00\x00\x00\x08\x00\x0c\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x08\x00\x08\x00\x00\x00' + +☆: b'\x00\x00\x00\x00\x00\x80\x01\x80\x01\x80\x01@\x02@~? \x04\x10\x08\x0c\x10\x08\x10\x08\x90\x0bH\x148\x18\x08' + +⒉: b'\x00\x00\x00\x00\x00\x00\x07\xc0\x08@\x00@\x00@\x00@\x00\x80\x01\x00\x01\x00\x02\x00\x04\x00\x0c\x08\x0f\xcc\x00\x00' + +,: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00p\x000\x00 \x00' + +我: b'\x00\x00\x00@\x07PxH\x08D\x08D\x7f\xfe\x08D\x08D\t(\x0e0x0\x080\x08R\t\x8ax\x06' + +ㄘ: b'\x00\x00\x00\x00\x00\x00\x01\x00\x01\x80\x00\x80\x01\x00\x03\xf0\x1d\x00\x01\x00\x02\xe0\x03`\x00@\x00\x80\x00\x00\x00\x00' + +■: b'\x00\x00\x00\x00\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff\x7f\xff' + +B: b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x060\x068\x060\x06p\x07\xf0\x06\x18\x06\x18\x06\x18\x07\xf0\x00\x00\x00\x00' + +中: b'\x00\x00\x01\x00\x01\x00\x01\x00?\xfc!\x04!\x04!\x04!\x04!\x04!\x04?\xfc\x01\x00\x01\x00\x01\x00\x01\x00' + +爱: b'\x00\x00\x00\x00?\xf8\x11\x10\t\x10?\xfcD\x02B\x02\x1f\xf8\x04\x00\x07\xf8\x0e\x08\x13\x10 \xe0\x01\xe0\x1e\x1e' + +β: b'\x00\x00\x00\x00\x00\x00\x01\xe0\x01\x10\x030\x02 \x02\xc0\x02`\x06 \x04 \x04`\x04`\x07\xc0\x0c\x00\x08\x00' + +あ: b"\x00\x00\x00\x00\x03\x00\x03\x00\x02\xc0\x1f\x80\x02\x00\x06\x80\x07\xf0\x0c\x98\x15\x0c'\x0c&\x0c/\x088\x10\x01\xe0" + +H: b'\x00\x00\x00\x00\x00\x00\xe7\x00B\x00B\x00B\x00B\x00~\x00B\x00B\x00B\x00B\x00\xe7\x00\x00\x00\x00\x00' + +华: b'\x00\x00\x00\x00\x08@\x08H\x18p(\xc0+BHB\x08~\x01\x00\x01\x00\x7f\xfe\x01\x00\x01\x00\x01\x00\x01\x00' + +ǚ: b"\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x08\x004\x00C\x00C\x00C\x00C\x00C\x00C\x00'\x00\x18\x00\x00\x00" + +e: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<\x00B\x00~\x00@\x00@\x00B\x00<\x00\x00\x00\x00\x00' + +l: b'\x00\x00\x00\x00\x00\x00p\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00|\x00\x00\x00\x00\x00' + +o: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<\x00B\x00B\x00B\x00B\x00B\x00<\x00\x00\x00\x00\x00' + +⑴: b'\x00\x00\x00\x00\x08\x00\x10\x08!\x84 \x82@\x82@\x83@\x81@\x81@\x81@\x82 \x82 \x84\x13\xc4\x10\x08' + +................ ................ ................ ................ ................ ................ +................ ................ ................ ................ .........@...... ................ +................ ........@....... ................ ................ .....@@@.@.@.... ................ +....@........... .......@@....... .....@@@@@...... ................ .@@@@....@..@... .......@........ +....@@.......... .......@@....... ....@....@...... ................ ....@....@...@.. .......@@....... +....@........... .......@.@...... .........@...... ................ ....@....@...@.. ........@....... +....@........... ......@..@...... .........@...... ................ .@@@@@@@@@@@@@@. .......@........ +....@........... .@@@@@@...@@@@@@ .........@...... ................ ....@....@...@.. ......@@@@@@.... +....@........... ..@..........@.. ........@....... ................ ....@....@...@.. ...@@@.@........ +....@........... ...@........@... .......@........ ................ ....@..@..@.@... .......@........ +....@........... ....@@.....@.... .......@........ ................ ....@@@...@@.... ......@.@@@..... +....@........... ....@......@.... ......@......... ................ .@@@@.....@@.... ......@@.@@..... +................ ....@...@..@.... .....@.......... ................ ....@.....@@.... .........@...... +....@........... ....@.@@.@..@... ....@@......@... .@@@............ ....@....@.@..@. ........@....... +....@........... ...@.@....@@@... ....@@@@@@..@@.. ..@@............ ....@..@@...@.@. ................ +................ ...@@.......@... ................ ..@............. .@@@@........@@. ................ + +................ ................ ................ ................ ................ ................ +................ ................ .......@........ ................ ................ ................ +.@@@@@@@@@@@@@@@ ................ .......@........ ..@@@@@@@@@@@... ................ ......@@........ +.@@@@@@@@@@@@@@@ ................ .......@........ ...@...@...@.... .......@@@@..... ......@@........ +.@@@@@@@@@@@@@@@ .....@@@@@@@.... ..@@@@@@@@@@@@.. ....@..@...@.... .......@...@.... ......@.@@...... +.@@@@@@@@@@@@@@@ .....@@...@@.... ..@....@.....@.. ..@@@@@@@@@@@@.. ......@@..@@.... ...@@@@@@....... +.@@@@@@@@@@@@@@@ .....@@...@@@... ..@....@.....@.. .@...@........@. ......@...@..... ......@......... +.@@@@@@@@@@@@@@@ .....@@...@@.... ..@....@.....@.. .@....@.......@. ......@.@@...... .....@@.@....... +.@@@@@@@@@@@@@@@ .....@@..@@@.... ..@....@.....@.. ...@@@@@@@@@@... ......@..@@..... .....@@@@@@@.... +.@@@@@@@@@@@@@@@ .....@@@@@@@.... ..@....@.....@.. .....@.......... .....@@...@..... ....@@..@..@@... +.@@@@@@@@@@@@@@@ .....@@....@@... ..@....@.....@.. .....@@@@@@@@... .....@....@..... ...@.@.@....@@.. +.@@@@@@@@@@@@@@@ .....@@....@@... ..@@@@@@@@@@@@.. ....@@@.....@... .....@...@@..... ..@..@@@....@@.. +.@@@@@@@@@@@@@@@ .....@@....@@... .......@........ ...@..@@...@.... .....@...@@..... ..@..@@.....@@.. +.@@@@@@@@@@@@@@@ .....@@@@@@@.... .......@........ ..@.....@@@..... .....@@@@@...... ..@.@@@@....@... +.@@@@@@@@@@@@@@@ ................ .......@........ .......@@@@..... ....@@.......... ..@@@......@.... +.@@@@@@@@@@@@@@@ ................ .......@........ ...@@@@....@@@@. ....@........... .......@@@@..... + +................ ................ ................ ................ ................ ................ +................ ................ ................ ................ ................ ................ +................ ....@....@...... ................ ................ ................ ................ +@@@..@@@........ ....@....@..@... ................ ................ .@@@............ ................ +.@....@......... ...@@....@@@.... ...@.@.......... ................ ...@............ ................ +.@....@......... ..@.@...@@...... ....@........... ................ ...@............ ................ +.@....@......... ..@.@.@@.@....@. ..@@.@.......... ................ ...@............ ................ +.@....@......... .@..@....@....@. .@....@@........ ..@@@@.......... ...@............ ..@@@@.......... +.@@@@@@......... ....@....@@@@@@. .@....@@........ .@....@......... ...@............ .@....@......... +.@....@......... .......@........ .@....@@........ .@@@@@@......... ...@............ .@....@......... +.@....@......... .......@........ .@....@@........ .@.............. ...@............ .@....@......... +.@....@......... .@@@@@@@@@@@@@@. .@....@@........ .@.............. ...@............ .@....@......... +.@....@......... .......@........ .@....@@........ .@....@......... ...@............ .@....@......... +@@@..@@@........ .......@........ ..@..@@@........ ..@@@@.......... .@@@@@.......... ..@@@@.......... +................ .......@........ ...@@........... ................ ................ ................ +................ .......@........ ................ ................ ................ ................ + +................ +................ +....@........... +...@........@... +..@....@@....@.. +..@.....@.....@. +.@......@.....@. +.@......@.....@@ +.@......@......@ +.@......@......@ +.@......@......@ +.@......@.....@. +..@.....@.....@. +..@.....@....@.. +...@..@@@@...@.. +...@........@... ``` #### 使用开发板测试 @@ -203,6 +220,25 @@ client/combined.bin fontlib.py ``` +### 关于速度 + +> 以当前字库文件举例: +> * 文件名:`combined.bin` +> * 文件大小:`303,520`字节 +> * `GB2312`索引表大小:`17,672`字节 +> * 点阵大小:`16x16`像素 +> * 字符数据大小:`32`字节 +> * 字符总数:`8932`个(包含`ASCII`和`GB2312`) + + +* 实例化`FontLib`时打开字库文件,读取文件头信息,大约 12 ms +* 同时读取`?`的字符数据作为占位符,大约 5 ms +* 打印字库信息,大约 39 ms(简直无语,建议实际使用时不要打印) +* 检索字符数据前再次打开字库文件,大约 12 ms +* 检索字符数据,每字符大约 12 ms +* 字符数据使用`Dict`存储,字符`Unicode`值作为关键字,取值耗时可以忽略 +* 显示字符耗时未统计 + ### 合作交流 * 联系邮箱: -- Gitee