Google-typsnitt i BASIC
Namnge en typsnittsfamilj och få riktig vektortext i stället för en bitmapstabell, med väntan som asynkron inläsning kräver och vad som händer när spelet väl exporteras.
Vad det här är till för#
Klassisk BASIC ritar text från en typsnittsbild: en tabell med tecken du
ställer in med TextFontImage(text, image). Det fungerar, det är vad
dialekten alltid har gjort, och det ligger kvar exakt där det är. Men en
bitmapstabell skalar inte, och den ser ut som vad den är.
LoadGoogleFont namnger en familj i stället:
font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
Sync()
LOOP
Inget tas bort. LoadFont, TextFontImage och bitmapvägen fungerar alla
fortfarande, och ett program kan blanda dem.
Väntan är inte valfri#
Ett typsnitt är en fil, och filen anländer efter att anropet returnerat. Skriv ut innan den landar och de första bildrutorna kommer ut i reservtypsnittet, vilket läses som "kommandot gjorde ingenting".
GoogleFontReady är det du väntar på:
font = LoadGoogleFont("Inter")
ready = 0
DO
IF ready = 0
IF GoogleFontReady(font) = 1
PrintFont(font)
ready = 1
ENDIF
ENDIF
Print("Hello")
Sync()
LOOP
Varning: samma fälla fångade en gång appens egna moduler. Att deklarera ett typsnitt är inte att ladda det: en canvas laddar bara ner en familj när något efterfrågar den, och svaret anländer en bildruta eller flera senare.
Att bläddra bland familjerna#
Motorn levererar en lista med familjer, och ett program kan läsa den, vilket är vad en typsnittsväljare inuti ett spel behöver:
count = GoogleFontCount()
FOR i = 0 TO count - 1
Print(GoogleFontName(i))
NEXT i
Listan fyller en väljare; den är ingen gräns. Vilken Google-familj som helst
laddas via namn genom LoadGoogleFont, listad eller inte.
Vad som händer när du exporterar#
| Var spelet körs | Vad som händer |
|---|---|
| Editorn | Familjen hämtas från Google första gången den namnges. |
| Webbläsarexport | Detsamma, och filen serveras från bygget när exportören kunde bunta den. |
| Native- eller Bevy-bygge | Filen måste ha följt med bygget. Det finns inget nätverk. |
Exportören läser ditt program, hittar varje familj du namngett i klartext,
laddar ner den och skriver den till assets/fonts/<Family>.woff2. Det bygget
fungerar sedan offline.
Varning: en familj beräknad vid körning kan inte hittas genom att läsa programmet, så den kan inte buntas. Exportrapporten säger det, och bygget faller tillbaka på standardtypsnittet. Skriv
LoadGoogleFont("Inter"), inteLoadGoogleFont(names[i]), för allt som måste överleva en export.
Kommandona#
| Kommando | Vad det gör |
|---|---|
LoadGoogleFont(family) | Laddar familjen, lämnar tillbaka ett id |
LoadGoogleFont(fontID, family) | Detsamma, med ett id du väljer |
GoogleFontReady(fontID) | 1 när filen är användbar |
GoogleFontCount() | Hur många familjer listan erbjuder |
GoogleFontName(index) | Ett familjenamn från listan |
Allt annat är det befintliga typsnittsmaskineriet: PrintFont(id) för
Print, TextFontSet(text, id) för ett Text-objekt, DeleteFont(id) för att
ta bort det.
Att gå vidare#
- Hela familjen, med varje parameter: Font-kommandona.
- Dialekten själv: BASIC-språket.