ascii

分配、设置、注册FontOpr结构体,由Font_manager.c通过链表管理。

static T_FontOpr g_tASCIIFontOpr = {.name          = "ascii",.FontInit      = ASCIIFontInit,.GetFontBitmap = ASCIIGetFontBitmap,
};

ASCII字体模块的初始化函数,参数:文件,字体大小(只支持16x16点阵)。

static int ASCIIFontInit(char *pcFontFile, unsigned int dwFontSize){if (dwFontSize != 16)return -1;return 0;
}

获得ASCII字符的位图,参数:字符的ASCII编码值,FontBitMap结构体内含位图信息。程序内含有fontdata_8x16点阵数组

static int ASCIIGetFontBitmap(unsigned int dwCode, PT_FontBitMap ptFontBitMap){int iPenX = ptFontBitMap->iCurOriginX;int iPenY = ptFontBitMap->iCurOriginY;  if (dwCode > (unsigned int)0x80) //不是ASCII编码return -1;//设置FontBitMap结构体ptFontBitMap->iXLeft    = iPenX;ptFontBitMap->iYTop     = iPenY - 16;ptFontBitMap->iXMax     = iPenX + 8;ptFontBitMap->iYMax     = iPenY;ptFontBitMap->iBpp      = 1;ptFontBitMap->iPitch    = 1;ptFontBitMap->pucBuffer = (unsigned char *)&fontdata_8x16[dwCode * 16];;    ptFontBitMap->iNextOriginX = iPenX + 8;ptFontBitMap->iNextOriginY = iPenY; return 0;
}

GBK

static T_FontOpr g_tGBKFontOpr = {.name          = "gbk",.FontInit      = GBKFontInit,.GetFontBitmap = GBKGetFontBitmap,
};

GBK字体模块的初始化函数,参数:GBK字库文件,字符尺寸,必须是16,否则失败(因为我们只有16x16位图)。

static int GBKFontInit(char *pcFontFile, unsigned int dwFontSize){struct stat tStat;if (16 != dwFontSize){DBG_PRINTF("GBK can't support %d fontsize\n", dwFontSize);return -1;}  g_iFdHZK = open(pcFontFile, O_RDONLY); //打开汉字库if(fstat(g_iFdHZK, &tStat))  //获得统计信息g_pucHZKMem = (unsigned char *)mmap(NULL , tStat.st_size, PROT_READ, MAP_SHARED, g_iFdHZK, 0); //映射文件g_pucHZKMemEnd = g_pucHZKMem + tStat.st_size;return 0;
}

获得GBK字符的位图

static int GBKGetFontBitmap(unsigned int dwCode, PT_FontBitMap ptFontBitMap){int iArea;int iWhere;int iPenX = ptFontBitMap->iCurOriginX;int iPenY = ptFontBitMap->iCurOriginY;if (dwCode & 0xffff0000){DBG_PRINTF("don't support this code : 0x%x\n", dwCode);return -1;} iArea  = (int)(dwCode & 0xff) - 0xA1;iWhere = (int)((dwCode >> 8) & 0xff) - 0xA1;if ((iArea < 0) || (iWhere < 0)){DBG_PRINTF("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);return -1;}ptFontBitMap->iXLeft    = iPenX;ptFontBitMap->iYTop     = iPenY - 16;ptFontBitMap->iXMax     = iPenX + 16;ptFontBitMap->iYMax     = iPenY;ptFontBitMap->iBpp      = 1;ptFontBitMap->iPitch    = 2;ptFontBitMap->pucBuffer = g_pucHZKMem + (iArea * 94 + iWhere)*32;; if (ptFontBitMap->pucBuffer >= g_pucHZKMemEnd){return -1;}ptFontBitMap->iNextOriginX = iPenX + 16;ptFontBitMap->iNextOriginY = iPenY;return 0;
}

ascii字体和GBK字体相关推荐

  1. Latex之安装GBK字体

    Latex下支持中文的方式有多种,其中之一就是应用CJK宏包.当Tex发行版,如MikTex,安装CJK后,可以使用中文.但是,发行版中包含的字体较少,例如MikTex,当安装完CJK-Fonts后, ...

  2. 记录一次docker部署tomcat安装GBK字体,容器系统Debian GNU/Linux

    记录一次docker部署tomcat安装GBK字体 docker版本号为:Docker version 20.10.6, build 370c289 下载的官方镜像: tomcat:8.5.32 to ...

  3. 在linux下修改emacs颜色字体,Emacs的字体设置方法总结

    Emacs的字体设置方法总结 在 X 下使用 emacs 时,如果字体配置不好,emacs 就会显得十分丑陋.而作为 emacs 的用户,每天相当长的时间都在盯着这个编辑器,如果字体不好看,对眼 睛是 ...

  4. figma:使用mac上的字体 | 转换ttc字体文件

    figma:使用mac上的字体 | 转换ttc字体文件 现在的主力系统是Mac,偶尔会切到Windows,打开 figma 时发现缺少字体,原来里面有mac上才有的字体,之前都是切回mac重新编辑,但 ...

  5. (整理)HTML字体标记:标题字体,字体大小,物理字体,逻辑字体,字体颜色,客户端字体,字符实体

                            HTML字体标记   HTML字体标记包括:标题字体,字体大小,物理字体,逻辑字体,字体颜色,客户端字体,字符实体等. 1.标题字体: <h#&g ...

  6. 【游戏开发实战】可爱的动物数字,教你在Unity中自制UGUI艺术字体(位图字体)(Bitmap Font Generator)

    文章目录 一.前言 二.最终效果 三.Bitmap Font Generator制作字体 1.准备字体图片 2.下载Bitmap Font Generator 3.bmfont64.exe导入图片 4 ...

  7. h5页面自定义字体_H5自定义字体解决方法(mark)

    应用情景 业务搬砖需求需要用原设计稿给出的字体,使用@font-face引入后,发现字体包太大10M左右,每次请求服务器10M流量会造成服务器压力,影响用户体验 第一步:使用@font-face MD ...

  8. 网络服务器打印系统字体发生改变,管理字体

    管理字体 如果使用激光打印机,则可能需要安装和维护 PostScript 字体.对于许多打印机来说,字体都是在打印机安装过程中设置的. PostScript 字体以轮廓形式存储在打印机上,或与打印机进 ...

  9. arial unicode ms字体_5个检测商用字体和免费字体合集的网站

    对于做新媒体和设计的小伙伴来说,最恐慌的就是加班.改稿.脱发.没钱...侵权问题了.一个不注意就是律师函警告.正所谓律师函不是不到,只是晚到.所以,皮皮特意为小伙伴们搜集了这5个远离字体侵权的网站,有 ...

最新文章

  1. Ajax无刷新实现图片切换特效
  2. CVPR'21 | Involution:超越convolution和self-attention的神经网络新算子
  3. 打开别人Xamarin项目找不到android.jar文件
  4. .NET 6新特性试用 | SDK工作负载
  5. Css Secret 案例Demo全套
  6. I/O复用之 epoll
  7. CCF CSP 201809-1 卖菜
  8. (73)Verilog HDL系统函数和任务:$monitor
  9. redis 在 mac 下的安装与使用
  10. vsftpd基本使用
  11. Abaqus RVE单元 周期性边界施加(PBC) 前处理(一) 单元重新编号及Equation方程建立
  12. MySQL如何修改主键
  13. 2020面试准备之Java集合
  14. 流畅的python 对象引用 可变性和垃圾回收
  15. ReID:通用性能评价标准
  16. CadenceAllegro16.6绘图软件使用二
  17. 【图解算法数据结构】(二)动态规划
  18. 长尾词挖掘-长尾词挖掘工具-长尾关键词挖掘软件
  19. re管理器修改音量_re管理器如何修改机型
  20. 最新《PHP程序员就业指导-新手怎么打造PHP程序员简历》

热门文章

  1. matlab虚线分格线,虚线实线网格线……一分钟看懂路面标志线,不再被扣分!
  2. linux离线升级补丁,Ubuntu 8.04(LTS)离线升级包使用指南
  3. html 调用微信扫一扫,微信开发之调用扫一扫接口
  4. 数据挖掘二:数据整合
  5. [绍棠] Vue中this.$nextTick()实现原理及使用场景学习总结
  6. 【Audio音频兴趣拓展】麦克风阵列_阵列结构
  7. 我的oracle备份经历
  8. 克服三分钟热度的状况 训练自己养成习惯不半途而废
  9. Distilled sesing
  10. 蔡基姆拉尔森计算公式