與 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。