Im Gegensatz zu einem PC oder einem Tablet haben die meisten eingebetteten Geräte nur begrenzten Speicherplatz zum Speichern von Grafikinhalten. Diese Hardwareeinschränkungen machen das Entwerfen einer qualitativ hochwertigen grafischen Benutzeroberfläche (GUI) zu einer herausfordernden Aufgabe für Designer. In diesem Artikel der Altia Developer Blog Series stellen wir einige Designtechniken und Beispieldesigns vor, die mit Altia Design, unserem GUI-Editor, erstellt wurden, um zu demonstrieren, wie Sie eine effiziente Verwendung von Schriftarten in die GUIs Ihrer eingebetteten Geräte integrieren können.

Methoden zum Umgang mit Schriftarten

Altia behandelt Schriftarten auf zwei verschiedene Arten. Mit der ersten Methode können Font-Glyphen zum Zeitpunkt der Codegenerierung generiert und in einer Reflash-Datei gespeichert werden. Mit der zweiten Methode können Sie Code mit Laufzeitschriftarten generieren, die Schriftartglyphen generieren, wenn sie während der Laufzeit benötigt werden.

Zunächst sprechen wir über die einfachere Möglichkeit, alle im Design benötigten Font-Glyphen bei der Codegenerierung zu generieren. Diese generierten Schriftzeichen werden auch als vorgerenderte Glyphen bezeichnet. Jede in Ihrem Design verwendete Schriftart erfordert, dass ihr vollständiger Zeichenkatalog zu den Reflash-Assets hinzugefügt wird. Darüber hinaus erfordert jede Größe jeder Schriftart, dass diese Daten zu den Reflash-Daten hinzugefügt werden. Dasselbe gilt für jeden Fettdruck in jeder Größe in jeder Schriftart, für jede Kursivschrift in jeder Größe in jeder Schriftart … Sie bekommen das Bild.

Wenn Sie sich Ihren Ordner „Reflash/Fonts“ ansehen, können Sie die Anzahl, Größe und Variationen der Schriftarten sehen, die Sie in Ihrem Design verwenden. Im Bild unten sehen Sie, dass dieses Design Arial Bold Italic 18, Arial Bold 17, Arial Italic 16, Arial Italic 17 und Arial Normal 17 verwendet.

Schriftartendateien

Bei unserer zweiten Methode zur Handhabung von Schriftarten, bei der Runtime-Schriftarten verwendet werden, wird der Quellcode für die im Design verwendete Schriftart-Engine generiert und auf Ihre Hardware geladen. Wenn dann ein Zeichen benötigt wird, wird die Schriftglyphe aus diesem Code generiert. Dies kann besonders vorteilhaft sein, wenn Sie Sprachen wie Chinesisch verwenden, für die Zehntausende von Zeichen erforderlich sind. Anstatt jedes einzelne Zeichen, das Sie möglicherweise benötigen, in Ihre Produktions-GUI zu laden, wird jedes nach Bedarf generiert.

Welche Methode wählen Sie also? Ehrlich gesagt kommt es darauf an. Runtime-Fonts werden im Allgemeinen empfohlen, wenn die Größe der Font-Engine und des Shaper-Codes kleiner ist als die Größe der generierten Glyphen-Fontdateien. Wenn diese gleich sind, empfehlen wir die Verwendung der vorgerenderten Glyphen (die erste Methode), da vorgerenderte Glyphen nicht die gleichen CPU- und RAM-Anforderungen einer Runtime-Schriftart-Engine haben. Außerdem haben in einigen Sonderfällen, wenn die richtige Rendering-Pipeline verwendet wird, vorgerenderte Glyphen kleinere Codierungs- und Komprimierungsformate als die Laufzeitoption.

Schriftbereich

Eine weitere großartige Möglichkeit, Speicherplatz auf Ihrer Hardware zu sparen, besteht darin, Ihre .gen-Datei für die Codegenerierung so zu ändern, dass nur bestimmte Schriftbereiche geladen werden. Wenn Sie ein Design haben, das eine einzige Schriftgröße verwendet oder nur einmal in einem Begrüßungsbildschirm tippt, können Sie Ihre Software so programmieren, dass nur der Abschnitt mit englischen ASCII-Buchstaben mit einer Unicode-Schriftart geladen wird. Dadurch kann viel Platz auf der Hardware gespart werden!

Schriftartcode auf dem Bildschirm

Im obigen Beispiel können Sie sehen, wie einfach es ist, einen Schriftbereich zu manipulieren. In der ersten Zeile laden wir nur den Zeichenbereich [\32-\127]. In der zweiten Zeile wird der Zeichenbereich auf eine bestimmte bezeichnete Schriftart im Projekt angewendet. -Arial-mittel-r-normal–_-170. Dies ist die einzige Schriftart, die betroffen ist, sodass für diese Schriftart nur die vorbestimmten druckbaren Zeichen auf die Hardware geladen werden. Die dritte Zeile wendet das Limit auf alle Schriftarten einer bestimmten Familie an, einschließlich der Schriftart oben. Das %FONTRANGEFLAG% unterstützt bis zu 1024 Auswahlen (1024 verschiedene Bereiche in Klammern aus dem Beispiel), und diese Auswahlen können Zeichen oder Zeichencodes sein. Diese Zeilen würden nicht zusammen in derselben .gen-Datei verwendet; es sind nur drei einzeilige Beispiele.

Ergebnisse der Schriftoptimierung

Bitte beachten Sie, dass die folgenden Reflash-Dateigrößen für die sehr einfachen Testdesigns für diesen Artikel gelten. Die einzige Möglichkeit zu wissen, wie sie sich auf Ihre Designs auswirken, besteht darin, diese Tests in Ihren eigenen GUI-Projekten zu verwenden.

In Beispiel A sehen Sie 13 verschiedene Schriftarten. Das zweite Design, Beispiel B, verwendet eine einzige Schriftart. Beispiel A hat eine .bin-Reflash-Dateigröße von 73 kB. Beispiel B verwendet nur eine Schriftart und enthält keine Fett- oder Kursivschrift, hat eine .bin-Größe von 24 KB. Wenn wir Code für Beispiel B generieren und %FONTRANGEFLAG% * [\32-~] in der .gen-Datei verwenden, erhalten wir die .bin-Größe auf 2 KB!

Schriftart spezielles Bild
Beispiel A
Schriftart speziell
Beispiel B

Es ist wichtig zu beachten, dass Optimierungen dieser Größenordnung die allgemeine Benutzererfahrung Ihrer GUI beeinflussen können. Es ist wichtig, das richtige Gleichgewicht zwischen Design und Speichernutzung zu finden, also testen Sie früh und oft. Ein Teil dieser Tests kann beinhalten, zu verstehen, ob jede in Ihrem Design verwendete Schriftart notwendig ist. Altia macht es einfach, Benutzertests während der Entwicklung durchzuführen, sodass Sie dieses Gleichgewicht finden können, bevor Sie sich überhaupt mit der Hardware befassen. Auch die Umsetzung von Feedback geht schnell!

Die Verwendung von Font Ranging kann auch einen großen Unterschied in der Größe der .bin-Datei machen. Auch hier muss sorgfältig vorgegangen werden. Wenn Sie in Ihrer GUI ein Zeichen verwenden, das nicht im angegebenen Schriftbereich enthalten ist, erhalten Sie eine Fehlermeldung. Ein weiterer Grund, das Testen zu einem Teil Ihres Entwicklungsprozesses zu machen!

Schließlich kann die Reduzierung Ihres GUI-Designs auf eine minimale Anzahl von Schriftarten zu unglaublichen RAM-Einsparungen führen. Auch wenn es vielleicht keinen Sinn macht, Ihre Schriftartnutzung auf nur eine zu reduzieren, wie wir es in unserem Beispiel getan haben, ist dies ein Bereich, in dem Ihr Designteam wirklich Einfluss auf Ihre Speichernutzung nehmen kann.

Zusammenfassung

Es gibt viele Möglichkeiten, um zu verhindern, dass Designer beim Entwerfen hochwertiger GUIs für eingebettete Geräte auf Probleme mit dem RAM-Speicher und der CPU-Auslastung stoßen. Diese Schriftart-Designtechniken für eingebettete GUIs sind nur einige, die berücksichtigt werden sollten.

Altia ist darauf spezialisiert, leistungsstarke Grafiken auf die niedrigstmögliche Hardware zu bringen. Unsere GUI-Experten verfügen über leistungsstarke Techniken zum Erstellen und Implementieren hochwertiger Grafiken mit weniger Zeit und Aufwand. Bitte zögere nicht DEMOVERSION ANFORDERN mit unserem Team, um zu besprechen, wie Sie aufregende, reichhaltige GUIs für Ihre speicherbeschränkte Hardware erstellen können.