Les polices Google en BASIC
Nommez une famille et obtenez du vrai texte vectoriel au lieu d'une planche de bitmap, avec l'attente qu'impose un chargement asynchrone et ce qui se passe une fois le jeu exporté.
À quoi ça sert#
Le BASIC classique dessine le texte depuis une image de police : une planche
de glyphes que l'on pose avec TextFontImage(texte, image). Ça fonctionne,
c'est ce que le dialecte a toujours fait, et ça reste exactement en place. Mais
une planche bitmap ne se met pas à l'échelle, et ça se voit.
LoadGoogleFont nomme une famille à la place :
font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Bonjour")
DO
Sync()
LOOP
Rien n'est retiré. LoadFont, TextFontImage et tout le chemin bitmap
continuent de marcher, et un programme peut mélanger les deux.
L'attente n'est pas facultative#
Une police est un fichier, et le fichier arrive après le retour de l'appel. Affichez avant qu'il ne soit là et les premières images sortent dans la police de repli, ce qui se lit comme « la commande n'a rien fait ».
GoogleFontReady est ce qu'on attend :
font = LoadGoogleFont("Inter")
pret = 0
DO
IF pret = 0
IF GoogleFontReady(font) = 1
PrintFont(font)
pret = 1
ENDIF
ENDIF
Print("Bonjour")
Sync()
LOOP
Attention : le même piège a déjà attrapé les modules de l'app. Déclarer une police ne la charge pas : un canvas ne télécharge une famille que lorsque quelque chose la réclame, et la réponse arrive une image ou plusieurs plus tard.
Parcourir les familles#
Le moteur porte une liste de familles, et un programme peut la lire, ce qu'il faut pour offrir un sélecteur de police dans un jeu :
nb = GoogleFontCount()
FOR i = 0 TO nb - 1
Print(GoogleFontName(i))
NEXT i
La liste sert à remplir un sélecteur, ce n'est pas une limite : n'importe quelle famille Google se charge par son nom, qu'elle y figure ou non.
Ce qui se passe à l'export#
| Où tourne le jeu | Ce qui se passe |
|---|---|
| L'éditeur | La famille est récupérée chez Google au premier appel. |
| Export navigateur | Pareil, et le fichier vient du build quand l'exporteur a pu l'embarquer. |
| Build natif ou Bevy | Le fichier doit avoir voyagé avec le build. Il n'y a pas de réseau. |
L'exporteur lit votre programme, relève chaque famille nommée en clair, la
télécharge et l'écrit dans assets/fonts/<Famille>.woff2. Ce build fonctionne
alors hors ligne.
Attention : une famille calculée à l'exécution ne peut pas être trouvée en lisant le programme, donc pas embarquée. Le rapport d'export le dit, et le build retombe sur la police par défaut. Écrivez
LoadGoogleFont("Inter"), pasLoadGoogleFont(noms[i]), pour tout ce qui doit survivre à un export.
Les commandes#
| Commande | Ce qu'elle fait |
|---|---|
LoadGoogleFont(family) | Charge la famille, rend un identifiant |
LoadGoogleFont(fontID, family) | Pareil, avec un identifiant que vous choisissez |
GoogleFontReady(fontID) | Vaut 1 dès que le fichier est utilisable |
GoogleFontCount() | Le nombre de familles proposées |
GoogleFontName(index) | Un nom de famille de la liste |
Le reste passe par la machinerie de polices existante : PrintFont(id) pour
Print, TextFontSet(texte, id) pour un objet Text, DeleteFont(id) pour la
libérer.
Pour aller plus loin#
- Toute la famille, avec chaque paramètre : les commandes Font.
- Le dialecte lui-même : le langage BASIC.