cyf1029 发表于 2025-9-8 15:22:35

字库生成工具生成GBK编码

根据 GBK 编码的索引计算公式:
index = (ch1 - 0x81) * 190 + (ch2 - 0x40) - (ch2 >= 0x80 ? 1 : 0) 或
index = (ch1 - 0x81) * 191 + (ch2 - 0x40) - (ch2 >= 0x80 ? 1 : 0)
汉字"中"在GBK中的编码位置应该是16293(每个区190个字符)或16378(每个区190个字符)。为什么使用STC生成的字库,“中”的位置是16379,请问计算公式是什么?

soma 发表于 2025-9-8 19:48:27

如图所示,按点位实现的

DebugLab 发表于 2025-9-9 05:18:01

可以参考实验箱例程,结构体字库检索,这样字库可以乱序

cyf1029 发表于 2025-9-9 08:47:36

DebugLab 发表于 2025-9-9 05:18
可以参考实验箱例程,结构体字库检索,这样字库可以乱序

你这种对单片机flash要求太大
我现在是要通过查找字库文件来显示汉字

zhp 发表于 2025-9-9 10:38:45

索引 =(区码 - 0x81) * 191 + (位码 - 0x40) ;
“中”:区码为0xD6(214),位码为0xD0(208)
“中”的索引=(214 - 0x81)*191 + (208 - 0x40) = 16379

软件产生的字库自动将位码为0x7F的保留位填充为00
所以不需要额外对位码大于等于0x80进行特殊处理

cyf1029 发表于 2025-9-10 08:20:33

zhp 发表于 2025-9-9 10:38
索引 =(区码 - 0x81) * 191 + (位码 - 0x40) ;
“中”:区码为0xD6(214),位码为0xD0(208)
“中”的 ...

好的,谢谢
页: [1]
查看完整版本: 字库生成工具生成GBK编码