A differenza di un PC o di un tablet, la maggior parte dei dispositivi incorporati ha uno spazio di memoria limitato per archiviare il contenuto grafico. Questi vincoli hardware rendono la progettazione di un'interfaccia utente grafica (GUI) di alta qualità un compito impegnativo per i progettisti. In questo articolo della serie di blog per sviluppatori Altia, forniremo alcune tecniche di progettazione e progetti di esempio creati con Altia Design, il nostro editor GUI, per dimostrare come creare un utilizzo efficiente dei caratteri nelle GUI dei dispositivi incorporati.

Metodi di gestione dei caratteri

Altia gestisce i caratteri in due modi diversi. Con il primo metodo, i glifi dei caratteri possono essere generati e salvati in un file reflash al momento della generazione del codice. Con il secondo metodo, puoi generare codice con font di runtime che genereranno glifi di font quando sono necessari durante il runtime.

In primo luogo, parleremo dell'opzione più semplice di generare tutti i glifi dei caratteri necessari nella progettazione durante la generazione del codice. Questi caratteri di carattere generati sono anche chiamati glifi pre-renderizzati. Ogni font utilizzato nel tuo progetto richiede che il suo catalogo completo di caratteri venga aggiunto alle risorse di reflash. Inoltre, ogni dimensione di ogni carattere richiede che questi dati vengano aggiunti ai dati di reflash. È lo stesso per ogni grassetto in ogni dimensione in ogni carattere, per ogni corsivo in ogni dimensione in ogni carattere... si ottiene l'immagine.

Osservando la tua cartella reflash/fonts, sarai in grado di vedere il numero, le dimensioni e le variazioni dei font che stai utilizzando nel tuo progetto. Nell'immagine qui sotto, puoi vedere che questo design utilizza Arial Bold Italic 18, Arial Bold 17, Arial Italic 16, Arial Italic 17 e Arial Normal 17.

file di caratteri

Il nostro secondo metodo di gestione dei caratteri, utilizzando i caratteri di runtime, il codice sorgente per il motore dei caratteri utilizzato nella progettazione viene generato e caricato sull'hardware. Quindi, quando è necessario un carattere, il glifo del carattere viene generato da questo codice. Ciò può essere particolarmente utile se utilizzi lingue come il cinese in cui sono richieste decine di migliaia di caratteri. Invece di caricare tutti i caratteri di cui potresti aver bisogno nella GUI di produzione, ognuno viene generato secondo necessità.

Quindi quale metodo scegli? Sinceramente, dipende. I caratteri di runtime sono generalmente consigliati se la dimensione del motore dei caratteri e del codice dello shaper è inferiore alla dimensione dei file dei caratteri dei glifi generati. Se questi sono uguali, si consiglia di utilizzare i glifi prerenderizzati (il primo metodo), perché i glifi prerenderizzati non hanno gli stessi requisiti di CPU e RAM di un motore di font di runtime. Inoltre, in alcuni casi speciali quando viene utilizzata la pipeline di rendering corretta, i glifi pre-renderizzati avranno formati di codifica e compressione più piccoli rispetto all'opzione di runtime.

Intervallo di caratteri

Un altro ottimo modo per risparmiare spazio sull'hardware è modificare il file .gen per la generazione del codice per caricare solo determinati intervalli di caratteri. Se hai un design che utilizza una singola dimensione del carattere o digita una sola volta in una schermata iniziale, puoi programmare il tuo software per caricare solo la sezione delle lettere inglesi ASCII con un carattere Unicode. Questo può far risparmiare molto spazio sull'hardware!

codice carattere sullo schermo

Nell'esempio sopra, puoi vedere quanto sia semplice manipolare un intervallo di caratteri. Nella prima riga, stiamo caricando solo l'intervallo di caratteri [\32-\127]. Nella seconda riga, l'intervallo di caratteri viene applicato a uno specifico carattere indicato nel progetto. -Arial-medio-r-normale–_-170. Questo è l'unico font interessato, quindi questo font avrà solo i caratteri stampabili predeterminati caricati sull'hardware. La terza riga applica il limite a tutti i caratteri di una determinata famiglia, incluso il carattere sopra. %FONTRANGEFLAG% supporta fino a 1024 selezioni (1024 intervalli tra parentesi diversi dall'esempio) e tali selezioni possono essere caratteri o codici carattere. Queste righe non verrebbero utilizzate insieme nello stesso file .gen; sono solo tre esempi a riga singola.

Risultati dell'ottimizzazione dei caratteri

Tieni presente che le seguenti dimensioni del file reflash si applicano ai progetti di test molto semplici per questo articolo. L'unico modo per sapere come influenzeranno i tuoi progetti è utilizzare questi test sui tuoi progetti GUI.

Nell'esempio A, vedrai 13 diversi tipi di carattere. Il secondo disegno, Esempio B, utilizza un unico carattere. L'esempio A ha una dimensione del file .bin reflash di 73 kB. L'esempio B utilizza un solo carattere e non include grassetto o corsivo, ha una dimensione .bin di 24 kB. Quando generiamo codice per l'esempio B e utilizziamo %FONTRANGEFLAG% * [\32-~] nel file .gen, otteniamo la dimensione .bin fino a 2kB!

immagine speciale del carattere
Esempio A
carattere speciale
Esempio B

È importante notare che ottimizzazioni di questa portata possono influire sull'esperienza utente complessiva della GUI. Trovare il giusto equilibrio tra design e utilizzo della memoria è essenziale, quindi assicurati di testare presto e spesso. Parte di quel test può includere la comprensione se ogni carattere utilizzato nel tuo progetto è necessario. Altia semplifica il test dell'utente durante lo sviluppo in modo da poter trovare quell'equilibrio prima ancora di arrivare all'hardware. Anche l'implementazione di qualsiasi feedback è veloce!

L'uso della selezione dei caratteri può anche fare un'enorme differenza nella dimensione del file .bin. Anche questo va fatto con attenzione. Se usi un carattere nella tua GUI che non è incluso nell'intervallo di caratteri specificato, riceverai un errore. Un motivo in più per rendere i test parte integrante del tuo processo di sviluppo!

Infine, ridurre la progettazione della GUI a un numero minimo di caratteri può fornire incredibili risparmi di RAM. Anche se potrebbe non avere senso ridurre l'utilizzo dei caratteri a uno solo come abbiamo fatto nel nostro esempio, questa è un'area in cui il tuo team di progettazione può davvero avere un impatto sull'utilizzo della memoria.

Conclusione

Esistono molti modi per impedire ai progettisti di imbattersi in problemi di spazio RAM e di utilizzo della CPU durante la progettazione di GUI di alta qualità per dispositivi incorporati. Queste tecniche di progettazione dei caratteri per le GUI integrate sono solo alcune da considerare.

Altia è specializzata nell'ottenere grafica ad alto impatto sull'hardware più basso possibile. I nostri esperti di GUI dispongono di potenti tecniche per creare e implementare grafica di alta qualità con meno tempo e fatica. Sentiti libero di Richiedi una demo con il nostro team per discutere di come creare GUI eccitanti e ricche per il tuo hardware con limitazioni di memoria.