110 likes | 267 Views
字符的生成和显示. 国际字符编码: ASCII ( American Standard Code for Information Interchange ) 7 位二进制编码,共 128 个字符。 一个字符的 ASCII 码用一个字节 (8 位 ) 表示,其最高位不用或作为奇偶校验位。 汉字编码: 国家标准信息交换编码 GB2312-80 汉字 6763 个、图形符号 682 个。 所有字符组成 94×94 矩阵表示,行称为区,用区码标识,列称为位,用位码标识; 一个字符由一个区码和一个位码共同标识。区码和位码分别需要 7 个二进制,汉字字符国标码占两个字节。
E N D
国际字符编码: ASCII(American Standard Code for Information Interchange) 7位二进制编码,共128个字符。 一个字符的ASCII码用一个字节(8位)表示,其最高位不用或作为奇偶校验位。 汉字编码:国家标准信息交换编码GB2312-80 汉字6763个、图形符号682个。 所有字符组成94×94矩阵表示,行称为区,用区码标识,列称为位,用位码标识; 一个字符由一个区码和一个位码共同标识。区码和位码分别需要7个二进制,汉字字符国标码占两个字节。 通常,采用字符中冗余的最高位来标识一个字节所表示的码: 最高位为0:表示ASCII码; 最高位为1:表示汉字编码的高位字节(区码)或低位字节(位码)。 字符的表示与输出 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ◘ 点阵字符存储 ◘ 点阵字符显示 ◘ 矢量字符存储 ◘ 矢量字符显示 ◘ 两种字符比较 ● 字符属性
点阵字符是由一个位图表示 保存字符就是保存表示它的位图。 字型7×9、9×16、16×24等指的是位图的尺寸。 对于16×24的汉字:一个汉字需要16x24=384位,即:48个字节, 常用汉字有6763个,从而存储这种型号需要6763×48≈324K字节。 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 点阵字符的存储 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ◘ 点阵字符存储 ◘ 点阵字符显示 ◘ 矢量字符存储 ◘ 矢量字符显示 ◘ 两种字符比较 ● 字符属性 • 在实际应用中需要多种字体(如宋体、揩体等),每种字体又有十多种型号。 • 因此汉字字库所占的存储空间是相当庞大的。 • 解决办法是采用压缩技术。
从给定字符编码,到在屏幕上将它显示出来,需要经历两个步骤:从给定字符编码,到在屏幕上将它显示出来,需要经历两个步骤: 第一步:从字库中将它的位图检索出来,由于表示同一型号字符的位图所占空间大小相同,可以直接将一个字符在字库中的位置计算出来; 第二步:将检索到的位图写到帧缓存中,这可以利用光栅系统的位拷贝功能。 点阵字符的显示 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ◘ 点阵字符存储 ◘ 点阵字符显示 ◘ 矢量字符存储 ◘ 矢量字符显示 ◘ 两种字符比较 ● 字符属性
字符矢量表示中,记录的是字符的笔画信息。 选一个正方形网格作为字符的局部坐标空间,网格大小可取:16×16、32×32、64×64等。 对一个字符来说,它由构成它的笔画组成,而每一笔又由其两端确定。 对于每一个端点,只要保存它的坐标值和由前一端点到此端点是否连线的标志即可。 表示一个矢量字符最终只需要所有的端点坐标信息及其是否连线的标志。 实际的矢量字符的存储结构要加上一些管理信息和字型信息等。 字符的编码 x0 y0 0 不连线 x1 y1 1 连线 x2 y2 0 x3 y3 1 x4 y4 0 x5 y5 1 -1 字符结束标志 (63,63) P2 P0 P1 P4 P5 P3 矢量字符的存储 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ◘ 点阵字符存储 ◘ 点阵字符显示 ◘ 矢量字符存储 ◘ 矢量字符显示 ◘ 两种字符比较 ● 字符属性
第一步根据给定字符的编码,在字库中检索出表示该字符的数据。第一步根据给定字符的编码,在字库中检索出表示该字符的数据。 由于各个字符的笔画不一样多,端点也不一样多,造成存储各个字符的记录所占字节数也不同,给检索带来一定困难。 为了提高检索效率,可以改变字符的存储结构。 第二步是取出端点坐标,对其进行适当的几何变换,再根据各端点的标志显示出字符。 字符的编码 x0 y0 0 不连线 x1 y1 1 连线 x2 y2 0 x3 y3 1 x4 y4 0 x5 y5 1 -1 字符结束标志 (63,63) P2 P0 P1 P4 P5 P3 矢量字符的显示 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ◘ 点阵字符存储 ◘ 点阵字符显示 ◘ 矢量字符存储 ◘ 矢量字符显示 ◘ 两种字符比较 ● 字符属性
字符变换不同 表示点阵字符的是位图,对点阵字符的变换要对位图中的每一个像素进行,是图像变换,放大或旋转时会失真。 表示矢量字符的是端点坐标,对矢量字符的变换是对端点的变换,是图形的几何变换,不会影响显示效果。 占用空间不同 矢量字符占用空间较少, 首先其单个字符占用较少空间; 其次,矢量字符只需保存一套字符,所需的不同型号的字符可以通过相应的几何变换来产生。 矢量字符美观 除了直线段外,还可以用二次曲线段、三次曲线段等来表示笔画,使字符更加美观。 矢量字符占用空间小、美观、变换方便等优点得到越来越广泛的应用,特别是在排版、软件和工程图软件中它几乎已经完全取代了点阵字符。 点阵字符和矢量字符 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ◘ 点阵字符存储 ◘ 点阵字符显示 ◘ 矢量字符存储 ◘ 矢量字符显示 ◘ 两种字符比较 ● 字符属性
字体 字体从一组预先定义的网格图案或一些用多边形和样条曲线设计的字符集中选择, 揩体、宋体和Times Roman等特定设计风格的一组字符和一些特殊符号组。 揩体 宋体 Times Roman 黑体 所选字体的字符也可用附加的下横线风格、黑体、斜体、轮廓或影线风格。 颜色 显示文本的颜色设置存储在系统属性表中并由软件函数来控制管理。 字符字体和颜色 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ● 字符文本属性 ◘ 字体和颜色 ◘ 字符大小 ◘ 方向和路径 ◘ 对齐与精度
调整文本大小可通过缩放字符的整体尺寸(高度和宽度),或仅缩放字符宽度来实现。调整文本大小可通过缩放字符的整体尺寸(高度和宽度),或仅缩放字符宽度来实现。 相同大小的不同字体按其字体的不同有不同大小 在指定大小的一种字体中的所有字符的底线和顶线间的距离是相同的,但字符体的宽度可能不同: 窄字符i、j、l和f的字符体宽度要比宽字符W或M来得小。 字符高度被定义为字符基线(Baseline)和帽线(Capline)间的距离,像f和j这样的有核字符通常超出字符体的限制,下行字符(g,j,p,q,y)要超出基线以下。 a b c d i l f g j q y f j 字符大小 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ● 字符文本属性 ◘ 字体和颜色 ◘ 字符大小 ◘ 方向和路径 ◘ 对齐与精度 i j l f M W
方向:字符串显示方向按字符向上向量的方向设置方向:字符串显示方向按字符向上向量的方向设置 文本以字符基线到帽线的向上矢量的方向显示。 间隔:确定沿打印线的字符体间间距。 负值造成字符体的重迭。 正值插入空隙以拉开显示的字符。 赋零值使得显示的文本在字符间没有空隙。 实际的字符间隔值由值乘以字符高度(基线和帽线间的距离)而得到。 路径:文本路径参数可以设置成如下几个值之一: 向右、向左、向上、或向下。 也可用向上向量与文本路径说明结合的方法来对字符串定向而生成倾斜的文本。 字符方向和路径 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ● 字符文本属性 ◘ 字体和颜色 ◘ 字符大小 ◘ 方向和路径 ◘ 对齐与精度 请在此键入您自己的内容 请在此键入您自己的内容 请在此键入您自己的内容 请在此键入您自己的内容 请在此键入您自己的内容 请在此键入您自己的内容 请在此键入您自己的内容 请在此键入您自己的内容
对齐:这个属性指定文本如何按起始坐标定位。对齐:这个属性指定文本如何按起始坐标定位。 对齐值的结果取决于对文本路径的当前设置 字符对齐和精度 ☆填充图元生成 ● 扫描转换填充 ● 区域填充算法 ■ 两种方法转换 ■ 两种方法区别 ● 填充图元属性 ● 字符表示/输出 ● 字符文本属性 ◘ 字体和颜色 ◘ 字符大小 ◘ 方向和路径 ◘ 对齐与精度 • 精度:对文本显示的精度指定用文本精度参数的下列值之一设置:string,char或stroke。 • 当精度参数设置stroke值时将显示最高质量的文本, • 对于这种精度设置,在定义字符形状时要用到更多的细节,且属性选择的处理和其它字串管理要以尽可能高的精度执行。 • 最低质量的精度设置string则用于快速显示字符串。 • 对这种精度,许多像文本路径这样的属性选择被忽略,并且字符串管理程序被简化来减少处理时间。