第7章 字体
随µC/GUI 一起提供的普通字体大部分是标准字体。实际上,你或许会发现这些字体对于
你的应用已完全足够。对单独的字体,想了解更详细的情况,请参考第 25 章:标准字体,这
一章描述了µC/GUI 中所有的字体,及这些字体在屏幕上显示时的所有字符。
µC/GUI 支持 ASCII,ISO 8859-1 及 Unicode。通常,µC/GUI 按 8 位字符进行编译,允许
最大为 256 的不同的字符代码,32 之前的编码除外,这部分字符作为控制字符保留。字符是
否有效取决所选择的字体(即该字体是否包括有所需的字符)。
µC/GUI 中文手册
第 1 页
第 7 章 字体
7.1 有效字体
当前µC/GUI 版本提供 4 种字体:等宽位图字体,比例位图字体,带有 2bpp(bit/pixel)
用于建立反混淆信息的比例位图字体,带有 4bpp(位/像素)用于建立反混淆信息的反混淆字
体。(更多关于抗锯齿字体的信息请参考第 15 章:“抗锯齿”)
所有的字体会与你的应用相连接,而字体的选择在 GUIConf.h 中定义。我们推荐编译所
有的字体并将它们作为一个库模块进行连接,或者将所有的字体工程文件放入一个你能与你
的应用相连接的库当中。这种方法可以让你确定那些你在应用中需要的字体被真正连接。字
体转换器(在一本独立的手册中描述)用于创建附加的字体。
为了能在你的应用中使用一种字体,你必须要做到下面几点:
• 字体在与µC/GUI 规范相兼容的“C”文件,工程文件或库这三种文件中任一种当中。
• 字体文件与你的应用链接。
• 字体的描述要包含在 GUIConf.h 中(这很必要,这是为了避免由于没有声明的外部
常量而产生的编译警告)
增加字体
一旦你连接过一个如上面所描述的字体文件,将要连接的字体声明为一个外部常量
GUI_FONT,如下面范例所显示的那样:
范例
extern const GUI_FONT GUI_FontNew;
int main (void)
{
}
GUI_Init () ;
GUI_Clear();
GUI_SetFont(&GUI _FontNew);
GUI_DispString("Hello world\n");
return 0;
选择字体
µC/GUI 提供不同的字体,总会有其中的一种被选中。可以通过调用函数 GUI_SetFont()
第 2 页
µC/GUI 中文手册
改变所选择的字体,该函数选择字体用于伴随当前任务的文字输出。
第 7 章 字体
如果在你的应用中没有字体被选择,则使用默认字体。该默认值由 GUIConf.h 配置,可
以进行修改。你应该确认默认字体是你的应用中真正用到的字体,因为默认字体会与你的应
用连接,因此可能会耗尽 ROM 存储空间。
µC/GUI 的兼容性
老版本的µC/GUI 使用一个不同的字体概念,字体在一个字体表中列出,它们在表格中的
位置通过一个整数选择。由于缺乏灵活性,这种概念改变了。新的概念较原来的概念提高了
一个等级,字体标识符(例如 F6x8)依然有效。
7.2 字体API
下表列出了与字体处理相关的函数,在各自的类型中按字母顺序进行排列。函数的详细
描述后面列出。
函 数
说 明
GUI_GetFont()
GUI_SetFont()
字体的选择
返回当前选择字体的指针
设置当前字体
字体相关函数
GUI_GetCharDistX()
返回当前字体中指定字符的宽度(X 轴,以像素为单位)
GUI_GetFontDistY()
返回当前字体 Y 轴方向间距
GUI_GetFontInfo()
返回一个包含字体信息的结构
GUI_GetFontSizeY()
返回当前字体的高度(Y 轴,以像素为单位)
GUI_GetStringDistX()
返回一个使用当前字体的文本的 X 轴尺寸
GUI_GetYDistOfFont()
返回一个特殊字体的 Y 轴间距
GUI_GetYSizeOfFont()
返回一个特殊字体的 Y 轴尺寸
GUI_IsInFont()
估计一个指定的字符是否在一种特殊字体里面
7.3 一种字体的选择
GUI_GetFont()
描述
返回当前选择字体的指针。
µC/GUI 中文手册
第 3 页
第 7 章 字体
函数原型
const GUI_FONT * GUI_GetFont(void)
GUI_SetFont()
描述
设置用于文字输出的字体。
函数原型
const GUI_FONT * GUI_SetFont(const GUI_FONT * pNewFont) ;
参数
pFont
含义
所选择及使用字体的指针
返回值
返回先前所选择字体的指针,这样你可以在稍后一点恢复原先使用的字体。
范例
用 3 种不同尺寸显示样本文字,然后恢复原先的字体:
void DispText(void)
{
}
const GUI_FONT GUI_FLASH* OldFont=GUI_SetFont(&GUI_Font8x16);
GUI_DispStringAt("This text is 8 by 16 pixels", 0, 0);
GUI_SetFont(&GUI_Font6x8);
GUI_DispStringAt("This text is 6 by 8 pixels", 0, 20);
GUI_SetFont(&GUI_Font8);
GUI_DispStringAt("This text is proportional", 0, 40);
GUI_SetFont(OldFont);
// 恢复字体
上面范例程序运行结果的屏幕截图:
第 4 页
µC/GUI 中文手册
第 7 章 字体
用不同的字体显示文字和数值:
GUI_SetFont(&GUI _Font6x8);
GUI_DispString("The result is:");
GUI_SetFont(&GUI_Font8x8);
// 显示文字
GUI_DispDec(42,2);
// 显示数值
上面范例程序运行结果的屏幕截图:
7.4 字体相关函数
GUI_GetCharDistX()
描述
返回当前选择字体中用于显示一个指定字符的宽度(X 轴,以像素为单位)
函数原型
int GUI_GetCharDistX(U16 c);
参数
c
含义
需计算宽度的字符
GUI_GetFontDistY()
描述
返回当前选择字体 Y 轴方向间距
µC/GUI 中文手册
第 5 页
第 7 章 字体
函数原型
int GUI_GetFontDistY(void);
附加信息
Y 轴方向间距是一个以像素为单位在两个文字相邻的线之间的垂直距离。返回值是当前选
择字体入口 Y 轴方向距离数值。该返回值对于比例字体及等宽字体都有效。
GUI_GetFontInfo()
描述
计算指向一个特殊字体的 GUI_FONTINFO 结构的指针。
函数原型
void GUI_GetFontInfo(const GUI_FONT*pFont, GUI_FONTINFO* pfi);
参数
pFont
pfi
含义
指向字体的指针
指向一个 GUI_FONTINFO 结构的指针
附加信息
GUI_FONTINFO 结构的定义如下:
typedef struct
{
U16 Flags;
}GUI_FONTINFO;
变量标志的成员使用以下数值:
GUI_FONTINFO_FLAG_PROP
GUI_FONTINFO_FLAG_MONO
GUI_FONTINFO_FLAG_AA
GUI_FONTINFO_FLAG_AA2
GUI_FONTINFO_FLAG_AA4
第 6 页
µC/GUI 中文手册
第 7 章 字体
范例
获得 GUI_Font6x8 字体的信息。计算后,FontInfo.Flags 包含 GUI_FONTINFO_FLAG_MONO
标志。
GUI_FONTINFO FontInfo;
GUI_GetFontInfo(&GUI_Font6x8, &FontInfo);
GUI_GetFontSizeY()
描述
返回当前选择字体的高度(Y 轴,以像素为单位)
函数原型
int GUI_GetFontSizeY(void);
附加信息
返 回 值 是 当 前 选 择 字 体 入 口 Y 轴 方 向 大 小 数 值 。 该 值 小 于 或 等 于 通 过 执 行
GUI_GetFontDistY()获得的返回值——Y 轴方向间距。
该返回值对于比例字体及等宽字体都有效。
GUI_GetStringDistX()
描述
返回在当前选择的字体中用于显示一个指定字符串的 X 轴尺寸。
函数原型
int GUI_GetStringDistX(const char GUI_FAR *s);
参数
s
含义
字符串的指针
µC/GUI 中文手册
第 7 页
第 7 章 字体
GUI_GetYDistOfFont()
描述
返回一种特殊字体的 Y 轴方向间距。
函数原型
int GUI_GetYDistOfFont(const GUI_FONT* pFont);
参数
pFont
含义
字体的指针
附加信息
参考 GUI_GetFontDistY()。
GUI_GetYSizeOfFont()
描述
返回一种特殊字体的 Y 轴方向尺寸。
函数原型
int GUI_GetYSizeOfFont(const GUI_FONT* pFont);
参数
pFont
含义
字体的指针
附加信息
参考 GUI_GetFontSizeY()
GUI_IsInFont()
描述
估计一个指定的字符是否在一种特殊字体里面
第 8 页
µC/GUI 中文手册