ascii字体和GBK字体
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字体相关推荐
- Latex之安装GBK字体
Latex下支持中文的方式有多种,其中之一就是应用CJK宏包.当Tex发行版,如MikTex,安装CJK后,可以使用中文.但是,发行版中包含的字体较少,例如MikTex,当安装完CJK-Fonts后, ...
- 记录一次docker部署tomcat安装GBK字体,容器系统Debian GNU/Linux
记录一次docker部署tomcat安装GBK字体 docker版本号为:Docker version 20.10.6, build 370c289 下载的官方镜像: tomcat:8.5.32 to ...
- 在linux下修改emacs颜色字体,Emacs的字体设置方法总结
Emacs的字体设置方法总结 在 X 下使用 emacs 时,如果字体配置不好,emacs 就会显得十分丑陋.而作为 emacs 的用户,每天相当长的时间都在盯着这个编辑器,如果字体不好看,对眼 睛是 ...
- figma:使用mac上的字体 | 转换ttc字体文件
figma:使用mac上的字体 | 转换ttc字体文件 现在的主力系统是Mac,偶尔会切到Windows,打开 figma 时发现缺少字体,原来里面有mac上才有的字体,之前都是切回mac重新编辑,但 ...
- (整理)HTML字体标记:标题字体,字体大小,物理字体,逻辑字体,字体颜色,客户端字体,字符实体
HTML字体标记 HTML字体标记包括:标题字体,字体大小,物理字体,逻辑字体,字体颜色,客户端字体,字符实体等. 1.标题字体: <h#&g ...
- 【游戏开发实战】可爱的动物数字,教你在Unity中自制UGUI艺术字体(位图字体)(Bitmap Font Generator)
文章目录 一.前言 二.最终效果 三.Bitmap Font Generator制作字体 1.准备字体图片 2.下载Bitmap Font Generator 3.bmfont64.exe导入图片 4 ...
- h5页面自定义字体_H5自定义字体解决方法(mark)
应用情景 业务搬砖需求需要用原设计稿给出的字体,使用@font-face引入后,发现字体包太大10M左右,每次请求服务器10M流量会造成服务器压力,影响用户体验 第一步:使用@font-face MD ...
- 网络服务器打印系统字体发生改变,管理字体
管理字体 如果使用激光打印机,则可能需要安装和维护 PostScript 字体.对于许多打印机来说,字体都是在打印机安装过程中设置的. PostScript 字体以轮廓形式存储在打印机上,或与打印机进 ...
- arial unicode ms字体_5个检测商用字体和免费字体合集的网站
对于做新媒体和设计的小伙伴来说,最恐慌的就是加班.改稿.脱发.没钱...侵权问题了.一个不注意就是律师函警告.正所谓律师函不是不到,只是晚到.所以,皮皮特意为小伙伴们搜集了这5个远离字体侵权的网站,有 ...
最新文章
- Ajax无刷新实现图片切换特效
- CVPR'21 | Involution:超越convolution和self-attention的神经网络新算子
- 打开别人Xamarin项目找不到android.jar文件
- .NET 6新特性试用 | SDK工作负载
- Css Secret 案例Demo全套
- I/O复用之 epoll
- CCF CSP 201809-1 卖菜
- (73)Verilog HDL系统函数和任务:$monitor
- redis 在 mac 下的安装与使用
- vsftpd基本使用
- Abaqus RVE单元 周期性边界施加(PBC) 前处理(一) 单元重新编号及Equation方程建立
- MySQL如何修改主键
- 2020面试准备之Java集合
- 流畅的python 对象引用 可变性和垃圾回收
- ReID:通用性能评价标准
- CadenceAllegro16.6绘图软件使用二
- 【图解算法数据结构】(二)动态规划
- 长尾词挖掘-长尾词挖掘工具-长尾关键词挖掘软件
- re管理器修改音量_re管理器如何修改机型
- 最新《PHP程序员就业指导-新手怎么打造PHP程序员简历》
热门文章
- matlab虚线分格线,虚线实线网格线……一分钟看懂路面标志线,不再被扣分!
- linux离线升级补丁,Ubuntu 8.04(LTS)离线升级包使用指南
- html 调用微信扫一扫,微信开发之调用扫一扫接口
- 数据挖掘二:数据整合
- [绍棠] Vue中this.$nextTick()实现原理及使用场景学习总结
- 【Audio音频兴趣拓展】麦克风阵列_阵列结构
- 我的oracle备份经历
- 克服三分钟热度的状况 训练自己养成习惯不半途而废
- Distilled sesing
- 蔡基姆拉尔森计算公式