计算机图形学(二)输出图元_15_字符图元

来源:互联网 发布:js 空格换成换行符 编辑:程序博客网 时间:2024/06/07 03:25
字符图元
       图形显示中常包括文字信息,如图表上的标记、大楼或汽车上的牌号以及模拟和可视化应用中的标识信息。多数图形软件包中都有生成字符图元的子程序。有些系统提供庞大的字符函数集,而其他的系统则仅提供对字符生成的有限支持。
       字母、数字和其他字符可以显示成不同的大小和风格。一组字符的完整设计风格称为字样(typeface )目前,有上百种字样可供计算机的应用程序使用。常用的字样有Courier , Helvetica , NewYork ,  Palatino和Zapf Chancery等。早先,术语字体(font)指的是一组按照特定尺寸和格式的模板字符式样。例如10磅Courier:斜体,或12磅Palatino黑体。l4磅字体的字符高度约为0.5厘米。换句话说,72磅大约等于2.54厘米(1英寸)。现在术语字体和字样经常互用,因为印刷过程不再使用金属模板。
       字体可分成两大类:有衬线(serif)和无衬线(sans serif )。有衬线字体在字符主笔划末端带有细线或是笔划加重,而无衬线字体则没有加重。有衬线字体的可读性较好,即在正文的较长段落中容易阅读。另一方面,无衬线字体的单个字符易被识别。由于这个原因,无衬线字体被认为是字迹清楚的。由于可以很快地识别无衬线字符,因而这种字体特别适用于标识和短标题。
       字体也按是否为单一宽度(monospace)比例宽度(proportional)而进行分类。单一宽度字体中所有字符有同样的宽度。比例宽度字体中有多种字符宽度。

       存储的计算机字体有两种不同的表示方法。一种表示某种字体字符形状的简单办法是使用矩形网格图案。这样的字符组称为位图字体(bitmap font,或位图化的字体)。位图化的字符集有时也称光栅字体(raster font)另一种更灵活的方法是用直线和曲线段来描述字符形状,例如在PostScript中的处理,这种字符组称为轮廓字体(outline font)笔划字体( stroke font )。图3.62给出了两种字符表示方法。当把图3.62(a)中的图案复制到帧缓存的某个区域时,值为1的位确定监视器上对应的哪一个像素位置将要用指定颜色显示。为了显示图3.62(b)中的字符形状,字符轮廓的内部按填充区处理。


       位图字体的定义和显示最简单,仅需将字符网格映射到帧缓存位置。但是,因为每种(尺寸和格式的)变化都必须存储在字形的高速缓存中,所以位图字体通常需要更多的存储空间。尽管有可能从一组点阵字符生成不同尺寸以及类似粗体、斜体等其他变体的字体,但通常结果并不是很好。我们只能以像素大小的整数倍方式增加或减少字符位图的尺寸。两倍尺寸的字符,需要位图中的四倍像素,但这增加了边缘的粗糙表现。
    与位图字体相比,轮廓字体在增加大小时其字符形状不会变形。轮廓字体需要较少的存储空间,因为每种变体并不需要各自的字形缓存。通过控制字符轮廓的曲线定义,可以产生粗体、斜体或不同尺寸的字体。但这需要更多的时间来处理轮廓字体,因为必须将它们扫描转换到帧缓存中。
    可用于字符显示的函数有许多个。有的图形软件包提供的函数可接受任意的字符串及相应的帧缓存起始位置。另一类函数仅在选定的一处或几处显示字符串。由于字符子程序对为网状布局或离散数据集显示给出标记很有用,因此该子程序显示的字符有时称为标记符号(marker symbol)多点标记(polymarker),这与折线图元相似。另外,标准字符、点、圆和十字等常用做标记符号。
图3.63给出了用星号作为标记的离散点集图。

    和其他图元一样,字符的几何描述在世界坐标系中给出,该信息由观察变换映射到屏幕坐标系。位图字符使用矩形网格的二进制值及网格参考位置来描述。该位置随后被映射到帧缓存中的指定位置。轮廓字符由一组用曲线或线段连接的坐标位置和参考位置来定义,该参考位置随后也映射到给定的帧缓存位置。参考位置可用于一个字符或一个字符串。一般情况下,字符子程序可生成二维或三维字符显示。
0 0