Google-lettertypen in BASIC
Noem een lettertypefamilie en krijg echte vectortekst in plaats van een bitmapblad, met de wachttijd die asynchroon laden vereist en wat er gebeurt zodra de game is geëxporteerd.
Waar dit voor dient#
Klassiek BASIC tekent tekst vanaf een lettertypeafbeelding: een blad
met glyphs dat u instelt met TextFontImage(text, image). Het werkt, het
is wat het dialect altijd al deed, en het blijft precies waar het is. Maar
een bitmapblad schaalt niet, en het ziet eruit zoals het is.
LoadGoogleFont noemt in plaats daarvan een familie:
font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
Sync()
LOOP
Er wordt niets verwijderd. LoadFont, TextFontImage en het bitmappad
blijven allemaal werken, en een programma kan ze mengen.
De wachttijd is niet optioneel#
Een lettertype is een bestand, en het bestand komt binnen nadat de aanroep terugkeert. Print voordat het is aangekomen, en de eerste frames komen eruit in het terugvallettertype, wat aanvoelt als "het commando deed niets".
GoogleFontReady is waar u op wacht:
font = LoadGoogleFont("Inter")
ready = 0
DO
IF ready = 0
IF GoogleFontReady(font) = 1
PrintFont(font)
ready = 1
ENDIF
ENDIF
Print("Hello")
Sync()
LOOP
Waarschuwing: dezelfde valkuil ving ooit de eigen modules van de app. Een lettertype declareren is het niet laden: een canvas downloadt een familie pas zodra iets erom vraagt, en het antwoord komt een frame of enkele frames later.
De families doorbladeren#
De engine levert een lijst met families, en een programma kan die lezen, wat precies is wat een lettertypekiezer in een game nodig heeft:
count = GoogleFontCount()
FOR i = 0 TO count - 1
Print(GoogleFontName(i))
NEXT i
De lijst vult een kiezer; ze is geen beperking. Elke Google-familie laadt
op naam via LoadGoogleFont, of ze nu op de lijst staat of niet.
Wat er gebeurt bij het exporteren#
| Waar de game draait | Wat er gebeurt |
|---|---|
| De editor | De familie wordt de eerste keer dat ze wordt genoemd, van Google opgehaald. |
| Browserexport | Hetzelfde, en het bestand wordt vanuit de build geserveerd wanneer de exporteur het kon meebundelen. |
| Native- of Bevy-build | Het bestand moet met de build zijn meegereisd. Er is geen netwerk. |
De exporteur leest uw programma, vindt elke familie die u in platte
tekst hebt genoemd, downloadt haar en schrijft haar naar
assets/fonts/<Family>.woff2. Die build werkt vervolgens offline.
Waarschuwing: een familie die tijdens het draaien wordt berekend, kan niet worden gevonden door het programma te lezen, en kan dus niet worden meegebundeld. Het exportrapport meldt dit, en de build valt terug op het standaardlettertype. Schrijf
LoadGoogleFont("Inter"), nietLoadGoogleFont(names[i]), voor alles wat een export moet overleven.
De commando's#
| Commando | Wat het doet |
|---|---|
LoadGoogleFont(family) | Laadt de familie, geeft een id terug |
LoadGoogleFont(fontID, family) | Hetzelfde, met een id die u zelf kiest |
GoogleFontReady(fontID) | 1 zodra het bestand bruikbaar is |
GoogleFontCount() | Hoeveel families de lijst biedt |
GoogleFontName(index) | Eén familienaam uit de lijst |
Al de rest is de bestaande lettertypemachinerie: PrintFont(id) voor
Print, TextFontSet(text, id) voor een Text-object, DeleteFont(id) om
het te verwijderen.
Verder gaan#
- De hele familie, met elke parameter: de Font-commando's.
- Het dialect zelf: de BASIC-taal.