地主家的好儿子 发表于 2023-3-22 23:20:39

非位图显示点阵字库中文显示


基于上次的帖子 基于HZK16和HZK12的点阵字体显示体验,不过这次是用C语言实现罢了
https://www.cncalc.org/thread-25299-1-1.html

可知如何采用位运算的方法进行像素内容显示,只需要把每个字节与相应的字节位比较即可

比如需要显示一行数据,十进制是6,二进制是110 ,补位后是0110
1110
可以分别与十进制数 8 二进制数 1000
                  十进制数 4 二进制数 0100
                  十进制数 2 二进制数 0010
                  十进制数 1 二进制数 0001

比较 获得每个位的信息

方法比较直观,但是考虑到9860内存只有64K,中文字库不可能直接读到内存中,文件需要一直保持在打卡位置,当应用结束后关闭
int draw_font(int file_handle,char a1,char a2,char x,char y)
{
    unsigned char chunk;
    int i,j,k,n,offset;
    unsigned char data8 = {128,64,32,16,8,4,2,1};
    offset = (94*a1+a2)*24;
    Bfile_ReadFile(file_handle, chunk, 24, offset);
   
    for(j=0;j<12;j++){
      for(k=0;k<2;k++){
            n = chunk;
            for (i=0;i<9;i++){
                if (n>=data8){
                  n = n - data8;
                  Bdisp_SetPoint_VRAM(x+i+8*k,y+j,1);
                }
            }
      }
    }
    Bdisp_PutDisp_DD();
}



源代码在此


地主家的好儿子 发表于 2023-3-22 23:22:56

https://www.xgjzx.cn/gbk 转码工具在此

bioafanda 发表于 2023-4-3 08:41:40

厉害啊。

zqbxcx 发表于 2023-7-14 22:46:29

具体怎么弄,能说具体点吗,大神

mrlgs 发表于 2024-2-5 08:27:54

zqbxcx 发表于 2023-7-14 22:46
具体怎么弄,能说具体点吗,大神

没看明白,没有解释
页: [1]
查看完整版本: 非位图显示点阵字库中文显示