【字符图元】
【字体/字样】一组字符的完整设计风格
【有衬线/无衬线字体】是字体可分的两大类,有衬线字体在字符主笔划末端带有细线或笔划加重,而无衬线字体没有。有衬线字体可读性较好,容易阅读。无衬线字体的单个字符容易被识别。
【计算机字体存储方法】
① 位图字体:也称为光栅字体,使用矩阵网格表示某种字体,如下图

当把图中的图案复制到帧缓存的某个区域时,值为1的位确定监视器上对应哪一个像素位置将要用指定颜色显示。
字图字体的定义和显示简单,仅需将字符网格映射到帧缓存的位置
每一种(尺寸和格式的)变化都必须储存,因此位图字体通常需要更多的存储空间
只能以像素大小的整数倍方式增加或减少字符位图的尺寸,增加了边缘粗糙度的表现。
② 轮廓字体:用直线和曲线段来描述字符形状。

与位图字体相比,轮廓字体在增加大小时其字符形状不会变形。如上图所示
轮廓字体需要较少的存储空间
通过控制字符轮廓曲线的定义,可以产生粗体斜体或不同尺寸的字体
需要更多时间来处理轮廓字体(需要计算与扫面转换到帧缓存中)
【OpenGL字符函数】
①位图字符函数
使用下面的函数可显示GLUT位图字符
glutBitmapCharacter(FONT, character);
FONT:符号常量,用以确定字体和大小,有GLUT_BITMAP_8_BY_13, GLUT_BITMAP_9_BY_15来选择一种固定宽度字体。也可用GLUT_BITMAP_TIMES_ROMAN_10或GLUT_BITMAP_TIMES_HELVETICA_10选择罗马字体或HELVERICA字体。
Character:要显示的字符
【实例】
glColor3f(1.0, 0.0, 0.2);//设定字体的RGB颜色
char text[12]= { "hello world" };
glRasterPos2f(100.0f, 100.0f);
for (int k = 0; k < 12;++k)
glutBitmapCharacter(GLUT_BITMAP_9_BY_15, text[k]);

使用下面的函数可显示GLUT轮廓字符
glutStrokeCharacter(FONT, text[k]);
FONT:符号常量,用以确定字体和大小,有GLUT_STROKE_ROMAN来显示比例空间的字体。或GLUT_STROKE_MONO_ROMAN来显示常量间隔的字体。字符的大小和位置以后讨论
Character:要显示的字符
【实例】
char text[12]= { "hello" };
glRasterPos2f(100.0f, 100.0f);//轮廓字符位置控制在这里没有用
for (int k = 0; k < 12;++k)
glutStrokeCharacter(GLUT_STROKE_ROMAN, text[k]);
