MiniGui使用矢量字库-英文不能用矢量

MiniGui使用矢量字库-英文不能用矢量

MiniGui使用矢量字库-英文不能用矢量

# The first system font must be a logical font using RBF device font.

[systemfont]

font_number=4

font0=*-SansSerif-rrncnn-*-32-ISO8859-1

font1=*-Helvetica-rrncnn-*-16-GB2312

font2=ttf-arialuni-rrncnn-16-32-UTF-8

font3=ttf-Helvetica-rrncnn-16-32-ISO8859-1

default=2

wchar_def=2

fixed=2

caption=2

menu=2

control=2

在此处要设置两个字库,一个显示中文的,一个显示英文的,要不英文显示的不是矢量字体。

[truetypefonts]

font_number=2

name0=ttf-Helvetica.ttf-rrncnn-0-0-ISO8859-1

fontfile0=/mnt/nand1-2/Helvetica.ttf

name1=ttf-wenquanyi-rrncnn-0-0-GB18030-0

#fontfile1=/opt/smdt/Qt486_421/lib/share/minigui/res/font/wenquanyi.ttf

fontfile1=/mnt/nand1-2/arialuni.ttf

在此处加入两个矢量字体的路径。在程序中创建两个字体,这样矢量字体的中英文就可以正常显示了。

点阵字库的原理

点阵字库的原理 2010-12-06 17:12:46 分类: 点阵字库的原理(引文) 所有的汉字或者英文都是下面的原理, 由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低位排列。 生成的字库说明:(以12×12例子) 一个汉字占用字节数:12÷8=1····4也就是占用了2×12=24个字节。 编码排序A0A0→A0FE A1A0→A2FE依次排列。 以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个。所以在12×12字库的起始位置就是[{FE-A0}*2EH+32H]*24=104976开始的24个字节就是我的点阵模。 其他的类推即可。 英文点阵也是如此推理。 在DOS程序中使用点阵字库的方法 首先需要理解的是点阵字库是一个数据文件,在这个数据文件里面保存了所有文字的点阵数据.至于什么是点阵,我想我不讲大家都知道的,使用过"文曲星"之类的电子辞典吧,那个的液晶显示器上面显示的汉子就能够明显的看出"点阵"的痕迹.在PC 机上也是如此,文字也是由点阵来组成了,不同的是,PC机显示器的显示分辨率更高,高到了我们肉眼无法区分的地步,因此"点阵"的痕迹也就不那么明显了. 点阵、矩阵、位图这三个概念在本质上是有联系的,从某种程度上来讲,这三个就是同义词.点阵从本质上讲就是单色位图,他使用一个比特来表示一个点,如果这个比特为0,表示某个位置没有点,如果为1表示某个位置有点.矩阵和位图有着密不可分的联系,矩阵其实是位图的数学抽象,是一个二维的阵列.位图就是这种二维的阵列,这个阵列中的(x,y) 位置上的数据代表的就是对原始图形进行采样量化后的颜色值.但是,另一方面,我们要面对的问题是,计算机中数据的存放都是一维的,线性的.因此,我们需要将二维的数据线性化到一维里面去.通常的做法就是将二维数据按行顺序的存放,这样就线性化到了一维. 那么点阵字的数据存放细节到底是怎么样的呢.其实也十分的简单,举个例子最能说明问题.比如说16*16 的点阵,也就是说每一行有16个点,由于一个点使用一个比特来表示,如果这个比特的值为1,则表示这个位置有点,如果这个比特的值为0,则表示这个位置没有点,那么一行也就需要16个比特,而8个比特就是一个字节,也就是说,这个点阵中,一行的数据需要两个字节来存放.第一行的前八个点的数据存放在点阵数据的第一个字节里面,第一行的后面八个点的数据存放在点阵数据的第二个字节里面,第二行的前八个点的数据存放在点阵数据的

字体库制作的方法和流程哦

字体库制作的方法和流 程哦 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

字体库制作的方法和流程 利用现有程序进行字库制作 如果你是专业字体设计师,那么你一定有过制作一套属于自己的全新的中文字库之梦。但是,毕竟中文字库属大字符集(当然是或大于6763个字符的字库),个人想徒手直接设计一整套中文字体谈何容易!其繁复程度足以使任何人却步。但是,当今世界上图形图像程序软件已经如此发达,难道没有什么办法利用现在已有的通用软件,将复杂的工作简化,使设计师自己可以独立完成这一艰巨的工作的吗本文就时装字体的设计经验,介绍一种相对简单的方法,帮你完成的心愿。这种方法的意义在于能够使得字体设计工作化繁为简。 大前提:如果你仅仅是为了设计新字样或仅只几个字,那么研读本文对你没多大帮助。本文并不介绍新字样的设计。本文是帮你在已产生了字体设计的设想之后,如何利用已有资源、不花费太大力气地将整个字库(6763汉字或更多,如欲英文、数字、标点一起处理的话,包括进来即可)制作出来。因此,你必须会使用图形处理的通用软件,这包括:PhotoShop、Illustrator、CorelDRAW(考虑到字库制作的特殊性,应当以矢量软件为主)。什么程度算是“会使用”本文是在介绍字库设计方法,不是软件教学,所以,软件使用方法点到为止。如果不能看明白,说明你还不会熟练使用,即请自行加强研究。这样做的主要目的是为了在尽量短的文字里多介绍具体方法的关键之处。 关于硬件要求。说起来似乎可笑:介绍软件应用的文章,说什么硬件要求!尽管如此,还是想说说:CPU当然越快越好,硬盘也是越快越大越好。硬盘设定提醒:最好把Windows的临时文档和应用图形图像软件的临时文档不要放到同一分区上,找一个空(没有存放任何文件)的分区更好,另放一张空的物理硬盘最好。如有条件,专门软件可做一个内存虚拟的硬盘,把那些需要倒来倒去的文件放在上面,速度会快不少。关键是内存一定要大。会使用PS的人都知道,如果图大,内存又不很充足的话,PS的某些特效是不能使用的。Illustrator有过之而无不及。即便内存足够充分,也会经常出现out of memory的要求放弃选框。我们最好不要让它出现。内存越大越好。最小 1G。为什么要这么强调计算机的物理指标因为我们希望一次性地将GB2312里面的6763个字符处理完毕,这样才可以达到简化字符操作之目的。所以我们最好把所有文字放在一个文件里。在建立文件的时候,如果有可能,当然建立一个包含6763个汉字的文档。这样才能在以后动作时不必反复操作。这时就看出机器物理指标的重要性了。如果你一时无法满足要求,那么就只好退而求其次,将6763个字分割成为几块,分块处理,也没什么别的,就是麻烦点。 具体方法 1. 启动PS,将现有字体按照需要排列在一起,位图化。注意:1,字与字之间留有足够的空隙,以免在分割字符的时候相互影响。2,字要足够大,一般应当在10cm10cm 以上,否则矢量化的时候,精密程度会受影响。 2. 按照事先的设想,对每一个字的位图笔画进行分层划分,一层一种笔画。例如1层,丶;2层,一;3层,丨;4层,丿;5层…….汉字所有不同的笔画加在一起,大

单片机用矢量字库的C语言调用

单片机用矢量字库的C语言调用 用TFT 320 X 240分辨路的液晶屏的显示效果如下图: 本文演示了用STM8S的单片机调用矢量模块的宋体,黑体字符。模块大小比一元硬币稍大,目前该模块已经批量生产,该模块采用SPI串行总线作为数据接口,包含汉字一二三四级字库,生僻字库,以及汉字的标点符号,数字符号,特殊符号,希腊字母,采用几何学中二次B样条曲线及直线来描述字体的外形轮廓,既可以作打印字体,又可以用作屏幕显示;由于它是由指令对字形进行描述,因此它与分辨率无关,输出时总是按照打印机的分辨率输出。无论放大或缩小,字符总是光滑的,不会有锯齿出现。目前可输出16X16点阵到256X256点阵大小的汉字和字母字符,使用方便,速度较快。适合打印机等行业采用,本模块采用3.3V 供电,工作温度在-25~+80℃ 引脚顺序为1:CS# (模块片选控制脚),2:SO(数据输出脚)3:BUSY_G(芯片忙判断脚)4:地线,5:SI(数据输入脚)6:CLK(时钟输入脚),7:RESET(芯片复位脚),8:VCC(芯片电源脚),本模块使用简单,硬件连接示意图如下: 硬件连接示意图

本例采用STM8来驱动该模块,流程为: 以ST的低端单片机STM8为例的读取过程:实现程序如下: void Delay(unsigned long nCount) { for(; nCount!=0; nCount--); } ;

int main() { unsigned int n=0; zk_data[0]=0x03; //表示显示的是宋体的字符 zk_data[1]=0x30; //汉字长度48 zk_data[2]=0x30; //汉字宽度48 zk_data[3]=0x30; //汉字厚度48 RCC_Configuration(); GPIO_Configuration(); TFT_Init(); clr_TFT(); RSTL; //模块复位 Delay(140); RSTH; Delay(140); for(n=0;n<4;n++) { Send_Byte(zk_data[n]);//发送要显示的字体风格,字体大小。设置一次即可。 Delay(14); } while(1) { unsigend char *text="啊"; for(n=0;n<2;n++) //将啊字的信息发送到模块 { CS_L2; Delay(14); Send_Byte(*text,*(text+1)); Delay(14); CS_H2; } while(CBUSY==SET); //判忙,等待模块内部处理完毕 for(n=0;n<288;n++) //开始接收啊字的数据排置为横置横排 { CS_L2; Delay(14); Bits[n]=Get_Byte(); Delay(14); CS_H2; } Display(Bits,9,10,48,48,0xf800,0x00ff); //将啊字的数据送到TFT液晶屏上面显示 Delay(144);

GUI原理4 - 矢量字体

说起矢量字体,不得不说一下多边形填充原理。本来是想将多边形填充作为单独的一节内容,可惜说得太细我累大家也累。 多边形填充最需要关注的就是斜率,计算每条边的斜率,从而得到每条边在每一行上的切点。然后从左到右,将各切点连接起来,逐行进行。 多边形有两种填充方式,Alternate和Winding。矢量字体主要用的前一种方式,而winding会将所有的切点都连接起来,没有了中间的分隔区域。 比如,在Alternate模式下,从最左边的切点1,会连接切点2,然后从切点3连接到切点4,而2到3是不连接的。这样就形成了一个空洞,也是矢量字的奥秘所在。Winding模式会将所有的切点都连接起来,即从最左边的一直画到最右边。 FillMode

多边形组——PolyPolygon 将多个多边形组合成一个组,从而形成复杂的多边形组。同样,这个组也依赖于FillMode的填充模式。下面我们来看一下中文的“口”是如何写出来的。 “口”由两条多边形组合而成,根据FillMode为Alternate,相重叠的部分不显示。用笔在字的中央画一条横线,就可以找到4个交点,而交点2到3是不连接的,这样就形成了“口”中间的洞。

微软Arial字体中“S”的曲线 微软的Arial字体中存储的“S”,就是多个Bezier3点组成的。点41是锚点,而40和42是控制点,来控制通过41的曲线的张力。在点的定义上,有on curve和not on curve两种,通常将在曲线上的点定为锚点,而不在曲线上的点为控制点。 这是我年初的时候,为了研究矢量字体,将字母P用微软的方式输出后,再读取字库点阵数据,使用红叉画出字库中所有的点。P是由两条Bezier曲线包围而成的,第二条起着切割的目的,已形成P中间的圆洞。 看看字母“B”的填充。 字体是如何保证对齐的呢?原来在字库内部,有一个基准线,就好像信纸的虚线,用来水平方向对齐的,同样,也有个垂直方向的基准线。每个字都有上浮和下沉的高度,这也是该字的最上和最下的点所处的位置。

字体库制作的方法和流程(免费哦)

字体库制作的方法和流 程 利用现有程序进行字库制作 如果你是专业字体设计师,那么你一定有过制作一套属于自己的全新的中文字库之梦。但是,毕竟中文字库属大字符集(当然是或大于6763个字符的字库),个人想徒手直接设计一整套中文字体谈何容易!其繁复程度足以使任何人却步。但是,当今世界上图形图像程序软件已经如此发达,难道没有什么办法利用现在已有的通用软件,将复杂的工作简化,使设计师自己可以独立完成这一艰巨的工作的吗?本文就时装字体的设计经验,介绍一种相对简单的方法,帮你完成的心愿。这种方法的意义在于能够使得字体设计工作化繁为简。 大前提:如果你仅仅是为了设计新字样或仅只几个字,那么研读本文对你没多大帮助。本文并不介绍新字样的设计。本文是帮你在已产生了字体设计的设想之后,如何利用已有资源、不花费太大力气地将整个字库(6763汉字或更多,如欲英文、数字、标点一起处理的话,包括进来即可)制作出来。因此,你必须会使用图形处理的通用软件,这包括:PhotoShop、Illustrator、CorelDRAW(考虑到字库制作的特殊性,应当以矢量软件为主)。什么程度算是“会使用”?本文是在介绍字库设计方法,不是软件教学,所以,软件使用方法点到为止。如果不能看明白,说明你还不会熟练使用,即请自行加强研究。

这样做的主要目的是为了在尽量短的文字里多介绍具体方法的关键之处。 关于硬件要求。说起来似乎可笑:介绍软件应用的文章,说什么硬件要求?!尽管如此,还是想说说:CPU当然越快越好,硬盘也是越快越大越好。硬盘设定提醒:最好把Windows的临时文档和应用图形图像软件的临时文档不要放到同一分区上,找一个空(没有存放任何文件)的分区更好,另放一张空的物理硬盘最好。如有条件,专门软件可做一个内存虚拟的硬盘,把那些需要倒来倒去的文件放在上面,速度会快不少。关键是内存一定要大。会使用PS的人都知道,如果图大,内存又不很充足的话,PS的某些特效是不能使用的。Illustrator有过之而无不及。即便内存足够充分,也会经常出现out of memory的要求放弃选框。我们最好不要让它出现。内存越大越好。最小1G。为什么要这么强调计算机的物理指标?因为我们希望一次性地将GB2312里面的6763个字符处理完毕,这样才可以达到简化字符操作之目的。所以我们最好把所有文字放在一个文件里。在建立文件的时候,如果有可能,当然建立一个包含6763个汉字的文档。这样才能在以后动作时不必反复操作。这时就看出机器物理指标的重要性了。如果你一时无法满足要求,那么就只好退而求其次,将6763个字分割成为几块,分块处理,也没什么别的,就是麻烦点。 具体方法

矢量小字库制作

矢量小字库制作步骤 1.建立一个test.txt文档,其中输入创建小字库需要的中文字(英文默认添加),去掉重复 的汉字,请保持汉字唯一性。 示例:函数常用于再分配一个以存在构 2.用UE打开该testx.txt文档,使用Ctrl+H键,切换成16进制显示。选择“文件---转换 ---ASCII Unicode”按钮,既得出这些汉字的Unicode索引。(FF FE 是Unicode编码的标识符,有效数据从第三位开始,两个字节表示一个汉字) 3.打开FontCreator,选择“File---Open---Font file”,查找并打开FontSTB.ttf文件,里面包 含了基础的英文和数字。再次选择“File---Open---Installed Font”,会出现windows里的字库文件,选择你需要的字体文件打开,(我们现在选择的是楷体-GB2312:SIMKAI.TTF). 4.选择FontSTB.ttf页卡,选择“Insert—Characters”,会出现Insert Characters卡,在Font 选项中选择刚才添加Windows的那个字库(我们现在选择的是楷体-GB2312:SIMKAI.TTF),在最下面一条输入行里(Add these characters and/or character ranges….)依次输入test.txt 中字符的Unicode编码,输入格式$xxxx(注意字符Unicode编码输入顺序,参考图1中顺序)比如字符”函数”,$51FD, $6570.添加完成后,点击OK。

5.这样会在刚才的FontSTB.ttf页卡中增加N个空白的字符框,N等于你要添加的字符个数。 点击其中一个字符框,右键,选择“Caption—Symbol Chars“,所有的字符框头上显示的数字就是这个字符所对应的Unicode码,也就是刚才你输入的数字,如果输入错误,需要改变,点击右键,选择”Properties---Mappings“,在Mappings选项框内选择对应的数值,点击右边的”Delete”,然后在上面的V alue中输入正确的Unicode码,点击Add,最好点击OK,完成修改。 6.这样就完成了小字库的索引建立,还差字图信息,还是依次添加. 下面以汉字”函”字为 例说明,选择刚才打开的windows字库所对应的页卡(楷体-GB2312:SIMKAI.TTF),然后选择“Edit—Search---Mapping”,在Platforms选项框中选择Microsoft Unicode BMP Only,然后在右面数值输入框中输入”函”字的Unicode码,,这是点击Find.这时就在windows 字库页卡中找到了汉字“函”,然后拷贝(CTRL+C),这时切换页卡到FontSTB.ttf页卡,选择“函”字对应的空白字符框,黏贴(CTRL+V),这时”函”字的字图信息就添加OK了,然后依次添加其他字符。

点阵字库和矢量字库性能的比较

点阵字库和矢量字库性能的比较 矢量字符的显示也分为两步。首先从字库中将它的字符信息。然后取出端点坐标,对其进行适当的几何变换,再根据各端点的标志显示出字符。 矢量字符记录字符的笔画信息而不是整个位图,具有存储空间小,美观、变换方便等优点。例如:在AutoCAD中使用图形实体-形(Shape)-来定义矢量字符,其中,采用了直线和圆弧作为基本的笔画来对矢量字符进行描述。 对于字符的旋转、放大、缩小等几何变换,点阵字符需要对其位图中的每个象素进行变换,而矢量字符则只需要对其几何图素进行变换就可以了,例如:对直线笔画的两个端点进行变换,对圆弧的起点、终点、半径和圆心进行变换等等。 在实际应用中,同一个字符有多种字体(如宋体、楷体等),每种字体又有多种大小型号,因此字库的存储空间分庞大。为了减少存储空间,一般采用压缩技术。 在点阵字库中,每个字符由一个位图表示(如图2、5所示),并把它用一个称为字符掩膜的矩阵来表示,其中的每个元素都是一位二进制数,如果该位为1表示字符的笔画经过此位,该像素置为字符颜色;如果该位为0,表示字符的笔画不经过此位,该像素置为背景颜色。点阵字符的显示分为两步:首先从字库中将它的位图检索出来,然后将检索到的位图写到帧缓冲器中。

矢量字库是把每个字符的笔划分解成各种直线和曲线,然后记下这些直线和曲线的参数,在显示的时候,再根据具体的尺寸大小,画出这些线条,就还原了原来的字符。它的好处就是可以随意放大缩小而不失真。而且所需存储量和字符大小无关。矢量字库有很多种,区别在于他们采用的不同数学模型来描述组成字符的线条。常见的矢量字库有 Type1字库和Truetype字库。 矢量字库我们都只知道,各种字符在电脑屏幕上都是以一些点来表示的,因此也叫点阵。最早的字库就是直接把这些点存储起来,就是点阵字库。常见的汉字点阵字库有16x16,24x24 等。点阵字库也有很多种,主要区别在于其中存储编码的方式不同。点阵字库的最大缺点就是它是固定分辨率的,也就是每种字库都有固定的大小尺寸,在原始尺寸下使用,效果很好,但如果将其放大或缩小使用,效果就很糟糕了,就会出现我们通常说的锯齿现象。因为需要的字体大小组合有无数种,我们也不可能为每种大小都定义一个点阵字库。于是就出现了矢量字库。

矢量字体

矢量字体 简介 矢量字体(Vector font)中每一个字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,字体的渲染引擎通过读取这些数学矢量,然后进行一定的数学运算来进行渲染。这类字体的优点是字体实际尺寸可以任意缩放而不变形、变色。矢量字体主要包括 Type1 、TrueType、OpenType等几类。 又叫Outline font,通常使用贝塞尔曲线,绘图指令和数学公式进行绘制。这样可以在对字体进行任意缩放的时候保持字体边缘依然光滑,字体色素不会丢失。 编辑本段分类 目前主流的矢量字体格式有3种:Type1,TrueType和OpenType,这三种格式都是平台无关的。 Type1全称PostScript Type1,是1985年由Adobe公司提出的一套矢量字体标准,由于这个标准是基于PostScript Description Language(PDL),而PDL又是高端打印机首选的打印描述语言,所以Type1迅速流行起来。但是Type1是非开放字体,Adobe对使用Type1的公司征收高额的使用费。 TrueType是1991年由Apple公司与Microsoft公司联合提出另一套矢量字标准。 Type1使用三次贝塞尔曲线来描述字形,TrueType则使用二次贝塞尔曲线来描述字形。所以Type1的字体比TrueType字体更加精确美观。一个误解是,Type1字体比TrueType字体占用空间多。这是因为同样描述一个圆形,二次贝塞尔曲线只需要8个关键点和7段二次曲线;而三次贝塞尔曲线则需要12个关键点和11段三次曲线。然而实际情况是一般来说 Type1比TrueType要小10%左右。这是因为对于稍微复杂的字形,为了保持平滑,TrueType必须使用更多的关键点。由于现代大部分打印机都是使用PDL作为打印描述语言,所以True1字体打印的时候不会产生形变,速度快;而TrueType则需要翻译成PDL,由于曲线方程的变化,还会产生一定的形变,不如Type1美观。 这么说来,Type1应该比TrueType更具有优势,为什么如今的计算机上TrueType反而比Type1使用更广泛呢?这是因为第一:Type1由于字体方程的复杂,所以在屏幕上渲染的时候,花费的时间多,解决方案是大部分Type1字体嵌入了点阵字体,这样渲染快,但是边缘不光滑,比较难看。

点阵字库的原理及与矢量字库的差别

点阵字库的原理及与矢量字库的差别 点阵字库的生产原理 所有的汉字或者英文都是下面的原理,由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低位排列。 生成的字库说明:(以12×12例子) 一个汉字占用字节数:12÷8=1····4也就是占用了2×12=24个字节。 编码排序A0A0→A0FE A1A0→A2FE依次排列。 以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个。所以在12×12字库的起始位置就是[{FE-A0}*2EH+32H]*24=104976开始的24个字节就是我的点阵模。 其他的类推即可。 英文点阵也是如此推理。 在DOS程序中使用点阵字库的方法 首先需要理解的是点阵字库是一个数据文件,在这个数据文件里面保存了所有文字的点阵数据。至于什么是点阵,我想我不讲大家都知道的,使用过"文曲星"之类的电子辞典吧,那个的液晶显示器上面显示的汉子就能够明显的看出"点阵"的痕迹。在PC 机上也是如此,文字也是由点阵来组成了,不同的是,PC机显示器的显示分辨率更高,高到了我们肉眼无法区分的地步,因此"点阵"的痕迹也就不那么明显了。 点阵、矩阵、位图这三个概念在本质上是有联系的,从某种程度上来讲,这三个就是同义词。点阵从本质上讲就是单色位图,他使用一个比特来表示一个点,如果这个比特为0,表示某个位置没有点,如果为1表示某个位置有点。矩阵和位图有着密不可分的联系,矩阵其实是位图的数学抽象,是一个二维的阵列。位图就是这种二维的阵列,这个阵列中的(x,y)位置上的数据代表的就是对原始图形进行采样量化后的颜色值。但是,另一方面,我们要面对的问题是,计算机中数据的存放都是一维的,线性的。因此,我们需要将

点阵字库和矢量字库性能的比较

点阵字库和矢量字库性能的比较 文章由合肥明园点阵字https://www.360docs.net/doc/d82348183.html,编辑发布 轮廓字形法是当今国际上最流行的一种字符表示方法,其压缩比大,且能保证字符质量。轮廓字形法采用直线、B样条/Bezier曲线的集合来描述一个字符的轮廓线。轮廓线构成一个或若干个封闭的平面区域。轮廓线定义加上一些指示横宽、竖宽、基点、基线等等控制信息就构成了字符的压缩数据。 矢量字符的显示也分为两步。首先从字库中将它的字符信息。然后取出端点坐标,对其进行适当的几何变换,再根据各端点的标志显示出字符。 矢量字符记录字符的笔画信息而不是整个位图,具有存储空间小,美观、变换方便等优点。例如:在AutoCAD中使用图形实体-形(Shape)-来定义矢量字符,其中,采用了直线和圆弧作为基本的笔画来对矢量字符进行描述。对于字符的旋转、放大、缩小等几何变换,点阵字符需要对其位图中的每个象素进行变换,而矢量字符则只需要对其几何图素进行变换就可以了,例如:对直线笔画的两个端点进行变换,对圆弧的起点、终点、半径和圆心进行变换等等。 在实际应用中,同一个字符有多种字体(如宋体、楷体等),每种字体又有多种大小型号,因此字库的存储空间十分庞大。为了减少存储空间,一般采用压缩技术。 在点阵字库中,每个字符由一个位图表示(如图2.5所示),并把它用一个称为字符掩膜的矩阵来表示,其中的每个元素都是一位二进制数,如果该位为1表示字符的笔画经过此位,该像素置为字符颜色;如果该位为0,表示字符的笔画不经过此位,该像素置为背景颜色。点阵字符的显示分为两步:首先从字库中将它的位图检索出来,然后将检索到的位图写到帧缓冲器中。 矢量字库是把每个字符的笔划分解成各种直线和曲线,然后记下这些直线和曲线的参数,在显示的时候,再根据具体的尺寸大小,画出这些线条,就还原了原来的字符。它的好处就是可以随意放大缩小而不失真。而且所需存储量和字符大小无关。矢量字库有很多种,区别在于他们采用的不同数学模型来描述组成字符的线条。常见的矢量字库有Type1字库和Truetype字库。 矢量字库 我们都只知道,各种字符在电脑屏幕上都是以一些点来表示的,因此也叫点阵。最早的字库就是直接把这些点存储起来,就是点阵字库。常见的汉字点阵字库有16x16,24x24 等。点阵字库也有很多种,主要区别在于其中存储编码的方式不同。点阵字库的最大缺点就是它是固定分辨率的,也就是每种字库都有固定的大小尺寸,在原始尺寸下使用,效果很好,但如果将其放大或缩小使用,效果就很糟糕了,就会出现我们通常说的锯齿现象。因为需要的字体大小组合有无数种,我们也不可能为每种大小都定义一个点阵字库。于是就出现了矢量字库。

点阵字库

点阵字库 一. 什么是点阵字库? 我们先了解什么是点阵,简单的说,点阵就是一幅位图。一般默认都指单色位图,即它是用一个bit表示一个点(像素);其实还有灰阶点阵字库(抗锯齿)和彩色点阵字库(绚丽,但不实用),即多个bit表示一个点(像素)。 点阵字库是指多个(>=1)字符的点阵信息的集合,亦可理解为位图组合。 二. 编码格式 目前主要分内码字库和Unicode字库。 (之前项目中应用的是GBK的内码字库,如果要显示日文则无能为力了,目前引入了UNICODE的点阵字库,解决了多语言显示的问题。) 三. 存储格式 目前主要分为“Not Fixed” 和“Height Fixed”。 Not Fixed:自适应宽高。 Height Fixed:等高非等宽。

Not Fixed Height Fixed 四. 输出格式 输出格式是将字符点阵信息以不同的方式存放,反应给用户。 (目前修改使用的是bin输出格式,当然这是指个名字)五.增加日语等多国语言显示工作流程

六.字库生成工具及示例 步骤说明: 如上图示,分5 步。 1. 选择矢量字库文件(*.ttf)或bdf 格式文件(.bdf). A.先将c:\windows\fonts 目录下的字体文件拷贝(ctrl+c)出来,然后本软件即可选择。 B.建议去网上找一个ArialUni.ttf 字库 下载地址:https://www.360docs.net/doc/d82348183.html,/f/4942778.html 2. 选择编码格式,转换模式,字体大小,DPI. 3. 选择需要支持的字符集。 4. 设置输出文件类型,及输出路径。 5. 点击build 按钮,转换生成字库。 补充说明:

AutoCAD的汉字矢量字库

AutoCAD汉字矢量字库 1Cbs-hztxt. shx汉字简体(仿宋),中英文单线,英文稍大。 2Chin2 . shx汉字宋体,中英文单线,英文小。 3China . shx汉字宋体空心,英文单线,中英文大小统一。 4Chinese . shx汉字仿宋体单线,英文单线,中英文大小统一。 5complex. shx不支持中文,英文双线。 6FS64f . shx汉字简体(楷体)空心字,英文单线,稍大。 7FS64S . shx汉字简体(楷体)实心字,英文单线,大小一致。 8Fstxt . shx汉字仿宋体单线,英文单线,中英文大小统一。 9gbcbig . shx汉字简体(长仿宋)单线,英文三线,稍宽。 10gothice 哥特式英文字体。 11gothicg 哥特式德文字体 12gothici 哥特式意大利文字体。 13greekc 这种字体是Greek 字体的繁体(双笔划,有衬线) 14greeks 这种字体是Greek 字体的简体(单笔划,无衬线) 15hhzfs . shx汉字楷体实心,英文单线,英文稍大。 16hhzft . shx汉字楷体空心,英文单线,英文稍大。 17hhzftxt . shx汉字仿宋体单线,英文单线,中英文大小统一。 18ht . shx汉字黑体空心,英文单线,大小一致。 19hts . shx汉字黑体实心,英文单线,大小一致。 20Hzdg . shx汉字简体(仿宋),中英文单线,英文稍大。 21Hzdx . shx汉字简体(楷体),中英文单线,大小一致。 22Hzfs . shx汉字简体(仿宋),中英文单线,英文稍大。 23hznum. shx汉字幼体,中英文单线,大小完全一致。 24hztxt . shx汉字简体(长宋体)单线,英文单线,大小不一。 25Hztxt0 . shx汉字仿宋体单线,英文单线,大小一致。 26Hztxtb.shx汉字简体(仿宋),中英文单线,大小一致。 27Hztxts.shx汉字简体(仿宋)双线,英文单线,大小一致。 28hztxz1. shx汉字简体(宋体)英文单线,大小一致。 29Hztxz2 . shx汉字简体(宋体)空心字,英文单线,大小统一。 30italicc 这种字体是italic 字体的繁体(双笔划,有衬线)。 31italict 这种字体是三笔划的italic 字体(三笔划,有衬线)。 32kkhz . shx汉字简体(长楷体)空心字,英文单线,英文稍大。 33kshz . shx汉字简体(长宋体)空心字,英文单线,大小统一。 34 Kt64f . shx汉字简体(楷体)空心字,英文空心字,大小统一。 35monotxt等宽的txt 字体。在这种字体中,除了分配给每个字符的空间大小相同(等宽)以外,其他所有的特征都与txt 字体相同。因此,这种字体尤其适合于书写明细表或在表格中需要垂直书写文字的场合。 36pdahztxt . shx汉字简体(仿宋带边)单线,英文双线,大小统一。 37romanc 这种字体是roman 字体的繁体(双笔划,有衬线) 38romand 这种字体与romans 字体相似,但它是使用双笔划定义的。该字体能产生更粗、颜色更深的字符,特别适用于在高分辨率的打印机(如激光打印机)上使用。 39romans 这种字体是由许多短线段绘制的roman 字体的简体(单笔划绘制,没有衬线)。该字体可以产生比txt 字体看上去更为单薄的字符。

UCDOS中的点阵字库HZK

UCDOS中的点阵字库HZK12 UCDOS中的点阵字库HZK12,HZK16,HZK24,ASC12,ASC16[转] 2009年03月10日星期二 13:40 如何在嵌入式系统中使用大量的汉字和字符呢 DOS前辈们经过艰辛的努力,将制作好的字模放到了一个个标准的库中以免去后辈的麻烦,这就是点阵字库文件。 一般我们使用16*16的点阵宋体字库,所谓16*16,是每一个汉字在纵、横各16点的区域内显示的。不过后来又有了HZK12、HZK24,HZK32和HZK48字库及黑体、楷体和隶书字库。虽然汉字库种类繁多,但都是按照区位的顺序排列的。前一个字节为该汉字的区号,后一个字节为该字的位号。每一个区记录94个汉字,位号则为该字在该区中的位置。 因此,汉字在汉字库中的具体位置计算公式为:94*(区号-1)+位号-1。减1是因为数组是以0为开始而区号位号是以1为开始的。这仅为以汉字为单位该汉字在汉字库中的位置,那么,如何得到以字节为单位得到该汉字在汉字库中的位置呢只需乘上一个汉字 字模占用的字节数即可,即:(94*(区号-1)+位号-1)*一个汉字字模占用字节数,而按每种汉字库的汉字大小不同又会得到不同的结果。以16*16点阵字库为例,计算公式则为:(94*(区号-1)+(位号 -1))*32。汉字库文该从该位置起的32字节信息即记录了该字的字模信息。 ☆打印字库文件和HZK12 如果你有UCDOS的HZK24S(宋体)、HZK24K(楷体)或HZK24H (黑体),你还可以使用不同字体的大字模汉字了。HZK24系列是24*24的点阵字库,每字模占用3*24字节。如果你按照HZK16的显示方法的话,你会看到......呵呵,字被放倒了。这是因为该类字库与一般的汉字库不同,这类大字模汉字库是专供打印的打印字库,为了打印的方便将字模都放倒了,你使用时,只要将字模的位信息纵横转置显示即可。例如你如果定义为mat[24][3]则应该这样输出: for(i=0;i<24;i++) for(j=0;j<24;j++) if((0x80>>i%8)&mat[j][i/8]) /*转置显示*/ putpixel(j+x,y+i,color);

字体库制作的方法和流程

字体库制作的方法和流程 利用现有程序进行字库制作 如果你是专业字体设计师,那么你一定有过制作一套属于自己的全新的中文字库之梦。但是,毕竟中文字库属大字符集(当然是或大于6763个字符的字库),个人想徒手直接设计一整套中文字体谈何容易!其繁复程度足以使任何人却步。但是,当今世界上图形图像程序软件已经如此发达,难道没有什么办法利用现在已有的通用软件,将复杂的工作简化,使设计师自己可以独立完成这一艰巨的工作的吗?本文就时装字体的设计经验,介绍一种相对简单的方法,帮你完成的心愿。这种方法的意义在于能够使得字体设计工作化繁为简。 大前提:如果你仅仅是为了设计新字样或仅只几个字,那么研读本文对你没多大帮助。本文并不介绍新字样的设计。本文是帮你在已产生了字体设计的设想之后,如何利用已有资源、不花费太大力气地将整个字库(6763汉字或更多,如欲英文、数字、标点一起处理的话,包括进来即可)制作出来。因此,你必须会使用图形处理的通用软件,这包括:PhotoShop、Illustrator、CorelDRAW(考虑到字库制作的特殊性,应当以矢量软件为主)。什么程度算是“会使用”?本文是在介绍字库设计方法,不是软件教学,所以,软件使用方法点到为止。如果不能看明白,说明你还不会熟练使用,即请自行加强研究。这样做的主要目的是为了在尽量短的文字里多介绍具体方法的关键之处。 关于硬件要求。说起来似乎可笑:介绍软件应用的文章,说什么硬件要求?!尽管如此,还是想说说:CPU当然越快越好,硬盘也是越快越大越好。硬盘设定提醒:最好把Windows 的临时文档和应用图形图像软件的临时文档不要放到同一分区上,找一个空(没有存放任何文件)的分区更好,另放一张空的物理硬盘最好。如有条件,专门软件可做一个内存虚拟的硬盘,把那些需要倒来倒去的文件放在上面,速度会快不少。关键是内存一定要大。会使用PS的人都知道,如果图大,内存又不很充足的话,PS的某些特效是不能使用的。Illustrator 有过之而无不及。即便内存足够充分,也会经常出现out of memory的要求放弃选框。我们最好不要让它出现。内存越大越好。最小1G。为什么要这么强调计算机的物理指标?因为我们希望一次性地将GB2312里面的6763个字符处理完毕,这样才可以达到简化字符操作之目的。所以我们最好把所有文字放在一个文件里。在建立文件的时候,如果有可能,当然建立一个包含6763个汉字的文档。这样才能在以后动作时不必反复操作。这时就看出机器物理指标的重要性了。如果你一时无法满足要求,那么就只好退而求其次,将6763个字分割成为几块,分块处理,也没什么别的,就是麻烦点。 具体方法 1. 启动PS,将现有字体按照需要排列在一起,位图化。注意:1,字与字之间留有足够的空隙,以免在分割字符的时候相互影响。 2,字要足够大,一般应当在10cm10cm以上,否则矢量化的时候,精密程度会受影响。 2. 按照事先的设想,对每一个字的位图笔画进行分层划分,一层一种笔画。例如1层,丶;2层,一;3层,丨;4层,丿;5层…….汉字所有不同的笔画加在一起,大概在40~50之间,应当不会超过255个,PS最多能够接受255层,满足一般的设计要求应当没有问题。

点阵字库的生产原理

点阵字库 ?·点阵字库的生产原理 点阵字库的概述 ?·在DOS程序中使用点阵字库的... ?·点阵字库和矢量字库的差别 ?·如何使用Windows的系统字库... ?·Unicode中文点阵字库的生成... 点阵字库的应用 ?·标准点阵字库芯片 ?·标准点阵字库芯片的种类和应用 ?·51单片机的13×14点阵缩码汉卡 ?·标准点阵汉字字库芯片 点阵字库的生产原理 所有的汉字或者英文都是下面的原理, 由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低位排列。 生成的字库说明:(以12×12例子) 一个汉字占用字节数:12÷8=1····4也就是占用了2×12=24个字节。 编码排序A0A0→A0FE A1A0→A2FE依次排列。 以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个。 所以在12×12字库的起始位置就是[{FE-A0}*2EH+32H]*24=104976开始的24个字节就是我的点阵模。 其他的类推即可。 英文点阵也是如此推理。 在DOS程序中使用点阵字库的方法 首先需要理解的是点阵字库是一个数据文件,在这个数据文件里面保存了所有文字的点阵数据.至于什么是点阵,我想我不讲大家都知道的,使用过"文曲星"之类的电子辞典吧,那个的液晶显示器上面显示的汉子就能够明显的看出"点阵"的痕迹.在 PC 机上也是如此,文字也是由点阵来组成了,不同的是,PC机显示器的显示分辨率更高,高到了我们肉眼无法区分的地步,因此"点阵"的痕迹也就不那么明显了. 点阵、矩阵、位图这三个概念在本质上是有联系的,从某种程度上来讲,这三个就是同义词.点阵从本质上讲就是单色位图,他使用一个比特来表示一个点,如果这个比特为0,表示某个位置没有点,如果为1表示某个位置有点.矩阵和位图有着密不可分的联系,矩阵其实是位图的数学抽象,是一个二维的阵列.位图就是

相关主题
相关文档
最新文档