与 PC 或平板电脑不同,大多数嵌入式设备存储图形内容的内存空间有限。 这些硬件限制使设计高质量的图形用户界面 (GUI) 成为设计人员的一项艰巨任务。 在这篇 Altia 开发者博客系列文章中,我们将提供一些使用我们的 GUI 编辑器 Altia Design 创建的设计技术和示例设计,以演示如何在嵌入式设备 GUI 中构建有效的字体使用。

处理字体的方法

Altia 以两种不同的方式处理字体。 使用第一种方法,可以在代码生成时生成字体字形并将其保存在刷新文件中。 使用第二种方法,您可以使用运行时字体生成代码,这将在运行时根据需要生成字体字形。

首先,我们将讨论在代码生成时生成设计中所需的所有字体字形的更简单的选项。 这些生成的字体字符也称为预渲染字形。 设计中使用的每种字体都需要将其完整的字符目录添加到刷新资源中。 此外,每种字体的每种尺寸都需要将此数据添加到刷新数据中。 每种字体中每种大小的每种粗体,每种字体中每种大小的每种斜体都是相同的……你明白了。

通过查看您的 reflash/fonts 文件夹,您将能够看到您在设计中使用的字体的数量、大小和变体。 在下图中,您可以看到此设计使用 Arial Bold Italic 18、Arial Bold 17、Arial Italic 16、Arial Italic 17 和 Arial Normal 17。

字体文件

我们的第二种字体处理方法,使用运行时字体,生成设计中使用的字体引擎的源代码并将其加载到您的硬件中。 然后当需要一个字符时,就从这个代码生成字体字形。 如果您使用像中文这样需要数万个字符的语言,这将特别有用。 不是在生产 GUI 中加载您可能需要的每一个字符,而是根据需要生成每个字符。

那么你选择哪种方法呢? 老实说,这取决于。 如果字体引擎和整形器代码的大小小于生成的字形字体文件的大小,通常建议使用运行时字体。 如果它们相等,我们建议使用预渲染字形(第一种方法),因为预渲染字形与运行时字体引擎的 CPU 和 RAM 要求不同。 此外,在某些特殊情况下,当使用正确的渲染管道时,预渲染字形将具有比运行时选项更小的编码和压缩格式。

字体范围

另一个节省硬件空间的好方法是修改 .gen 文件以生成代码以仅加载某些字体范围。 如果您的设计使用单一字体大小或仅在初始屏幕中键入一次,您可以对软件进行编程以仅加载具有 Unicode 字体的 ASCII 英文字母部分。 这可以节省大量的硬件空间!

屏幕上的字体代码

在上面的示例中,您可以看到操作字体范围是多么简单。 在第一行,我们只加载字符范围 [\32-\127]。 在第二行中,字符范围应用于项目中特定的表示字体。 -Arial-medium-r-正常–_-170。 这是唯一受影响的字体,因此该字体只会将预定的可打印字符加载到硬件中。 第三行将限制应用于某个系列的所有字体,包括上面的字体。 %FONTRANGEFLAG% 最多支持 1024 个选择(与示例中的 1024 个不同的括号范围),这些选择可以是字符或字符代码。 这些行不会在同一个 .gen 文件中一起使用; 它只是三个单行示例。

字体优化结果

请注意,以下刷新文件大小适用于本文的非常简单的测试设计。 了解它们将如何影响您的设计的唯一方法是在您自己的 GUI 项目中使用这些测试。

在示例 A 中,您将看到 13 种不同的字体。 第二种设计,示例 B,使用单一字体。 示例 A 的刷新 .bin 文件大小为 73 kB。 示例 B 仅使用一种字体,不包括任何粗体或斜体,.bin 大小为 24kB。 当我们为示例 B 生成代码并在 .gen 文件中使用 %FONTRANGEFLAG% * [\32-~] 时,我们将 .bin 大小降至 2kB!

字体特殊图像
例A
特殊字体
例B

需要注意的是,这种规模的优化会影响 GUI 的整体用户体验。 在设计和内存使用之间取得适当的平衡至关重要,因此请务必尽早并经常进行测试。 该测试的一部分可能包括了解您的设计中使用的每种字体是否都是必要的。 Altia 使开发过程中的用户测试变得容易,因此您甚至可以在使用硬件之前找到平衡。 实施任何反馈也很快!

使用字体范围也可以对 .bin 文件大小产生巨大影响。 这也必须小心翼翼地完成。 如果您在 GUI 中使用的字符未包含在指定的字体范围内,您将收到错误消息。 将测试作为开发过程的一部分的另一个原因!

最后,将您的 GUI 设计减少到最少的字体数量可以提供令人难以置信的 RAM 节省。 虽然像我们在示例中所做的那样将您的字体使用减少到一种可能没有意义,但这是您的设计团队可以真正影响您的内存使用的领域。

结论

有许多方法可以帮助防止设计人员在为嵌入式设备设计高质量 GUI 时遇到 RAM 空间和 CPU 使用问题。 这些用于嵌入式 GUI 的字体设计技术只是需要考虑的几个。

Altia 专注于在尽可能低的硬件上获得高影响力的图形。 我们的 GUI 专家拥有强大的技术,可以用更少的时间和精力创建和实施高质量的图形。 随意 请求演示 与我们的团队讨论如何为内存受限的硬件创建令人兴奋的、丰富的 GUI。