Fonturi Google în BASIC
Numește o familie de fonturi și obții text vectorial real în loc de o foaie bitmap, cu așteptarea pe care o cere încărcarea asincronă și ce se întâmplă odată ce jocul este exportat.
Pentru ce este asta#
BASIC clasic desenează text dintr-o imagine de font: o foaie de glife pe
care o setezi cu TextFontImage(text, image). Funcționează, este ceea ce a
făcut mereu dialectul, și rămâne exact unde este. Dar o foaie bitmap nu se
scalează, și arată exact ca ceea ce este.
LoadGoogleFont numește o familie în schimb:
font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
Sync()
LOOP
Nimic nu este eliminat. LoadFont, TextFontImage și calea bitmap continuă
toate să funcționeze, iar un program le poate amesteca.
Așteptarea nu este opțională#
Un font este un fișier, iar fișierul sosește după ce apelul se întoarce. Desenează înainte să sosească, și primele cadre ies în fontul de rezervă, ceea ce se citește drept „comanda nu a făcut nimic".
GoogleFontReady este ce trebuie să aștepți:
font = LoadGoogleFont("Inter")
ready = 0
DO
IF ready = 0
IF GoogleFontReady(font) = 1
PrintFont(font)
ready = 1
ENDIF
ENDIF
Print("Hello")
Sync()
LOOP
Avertisment: aceeași capcană a prins chiar modulele aplicației la un moment dat. A declara un font nu înseamnă a-l încărca: un canvas descarcă o familie doar când ceva o cere, iar răspunsul sosește un cadru sau mai multe mai târziu.
Răsfoirea familiilor#
Motorul livrează o listă de familii, iar un program o poate citi, ceea ce este exact ce are nevoie un selector de font într-un joc:
count = GoogleFontCount()
FOR i = 0 TO count - 1
Print(GoogleFontName(i))
NEXT i
Lista populează un selector; nu este o limită. Orice familie Google se
încarcă după nume prin LoadGoogleFont, listată sau nu.
Ce se întâmplă când exporți#
| Unde rulează jocul | Ce se întâmplă |
|---|---|
| Editorul | Familia este preluată de la Google prima dată când este numită. |
| Export browser | La fel, iar fișierul este servit din build atunci când exportatorul a putut să îl includă. |
| Build nativ sau Bevy | Fișierul trebuie să fi călătorit odată cu build-ul. Nu există rețea. |
Exportatorul îți citește programul, găsește fiecare familie pe care ai
numit-o în text simplu, o descarcă și o scrie în
assets/fonts/<Family>.woff2. Acel build funcționează apoi offline.
Avertisment: o familie calculată la runtime nu poate fi găsită citind programul, așa că nu poate fi inclusă. Raportul de export spune asta, iar build-ul revine la fontul implicit. Scrie
LoadGoogleFont("Inter"), nuLoadGoogleFont(names[i]), pentru orice trebuie să supraviețuiască unui export.
Comenzile#
| Comandă | Ce face |
|---|---|
LoadGoogleFont(family) | Încarcă familia, întoarce un id |
LoadGoogleFont(fontID, family) | La fel, cu un id ales de tine |
GoogleFontReady(fontID) | 1 odată ce fișierul este utilizabil |
GoogleFontCount() | Câte familii oferă lista |
GoogleFontName(index) | Un nume de familie din listă |
Tot restul este mecanica existentă de fonturi: PrintFont(id) pentru
Print, TextFontSet(text, id) pentru un obiect Text, DeleteFont(id)
pentru a-l elimina.
Mergi mai departe#
- Întreaga familie, cu fiecare parametru: comenzile Font.
- Dialectul propriu-zis: limbajul BASIC.