I font di Google in BASIC
Nomina una famiglia di font e ottieni testo vettoriale vero invece di un foglio bitmap, con l'attesa che il caricamento asincrono richiede e cosa succede una volta esportato il gioco.
A cosa serve#
Il BASIC classico disegna il testo da un'immagine font: un foglio di
glifi che imposti con TextFontImage(text, image). Funziona, è ciò che il
dialetto ha sempre fatto, e resta esattamente dove si trova. Ma un foglio
bitmap non scala, e si vede che lo è.
LoadGoogleFont nomina invece una famiglia:
font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
Sync()
LOOP
Nulla viene rimosso. LoadFont, TextFontImage e il percorso bitmap
continuano tutti a funzionare, e un programma può mescolarli.
L'attesa non è facoltativa#
Un font è un file, e il file arriva dopo che la chiamata ritorna. Stampa prima che arrivi e i primi fotogrammi escono nel font di ripiego, il che si legge come "il comando non ha fatto nulla".
GoogleFontReady è ciò su cui aspetti:
font = LoadGoogleFont("Inter")
ready = 0
DO
IF ready = 0
IF GoogleFontReady(font) = 1
PrintFont(font)
ready = 1
ENDIF
ENDIF
Print("Hello")
Sync()
LOOP
Attenzione: la stessa trappola ha colto una volta i moduli dell'app stessa. Dichiarare un font non significa caricarlo: una tela scarica una famiglia solo quando qualcosa la richiede, e la risposta arriva un fotogramma o diversi dopo.
Sfogliare le famiglie#
Il motore fornisce un elenco di famiglie, e un programma può leggerlo, il che è ciò di cui ha bisogno un selettore di font dentro un gioco:
count = GoogleFontCount()
FOR i = 0 TO count - 1
Print(GoogleFontName(i))
NEXT i
L'elenco popola un selettore; non è un limite. Qualsiasi famiglia di Google
si carica per nome tramite LoadGoogleFont, elencata o no.
Cosa succede quando esporti#
| Dove gira il gioco | Cosa succede |
|---|---|
| L'editor | La famiglia viene scaricata da Google la prima volta che viene nominata. |
| Esportazione browser | Uguale, e il file viene servito dalla build quando l'esportatore ha potuto incorporarlo. |
| Build nativa o Bevy | Il file deve aver viaggiato con la build. Non c'è rete. |
L'esportatore legge il tuo programma, trova ogni famiglia che hai nominato
in testo semplice, la scarica e la scrive in
assets/fonts/<Family>.woff2. Quella build funziona quindi offline.
Attenzione: una famiglia calcolata a runtime non può essere trovata leggendo il programma, quindi non può essere inclusa. Il rapporto di esportazione lo segnala, e la build torna al font predefinito. Scrivi
LoadGoogleFont("Inter"), nonLoadGoogleFont(names[i]), per qualsiasi cosa debba sopravvivere a un'esportazione.
I comandi#
| Comando | Cosa fa |
|---|---|
LoadGoogleFont(family) | Carica la famiglia, restituisce un id |
LoadGoogleFont(fontID, family) | Uguale, con un id scelto da te |
GoogleFontReady(fontID) | 1 quando il file è utilizzabile |
GoogleFontCount() | Quante famiglie offre l'elenco |
GoogleFontName(index) | Un nome di famiglia dall'elenco |
Tutto il resto è la solita meccanica dei font: PrintFont(id) per Print,
TextFontSet(text, id) per un oggetto Text, DeleteFont(id) per eliminarlo.
Per approfondire#
- L'intera famiglia, con ogni parametro: i comandi Font.
- Il dialetto stesso: il linguaggio BASIC.