Google-skrifttyper i BASIC

Navngiv en skrifttypefamilie og få rigtig vektortekst i stedet for et bitmap-ark, med ventetiden asynkron indlæsning kræver, og hvad der sker, når spillet eksporteres.

Hvad dette er til#

Klassisk BASIC tegner tekst fra et font-billede: et ark med glyffer, du sætter med TextFontImage(text, image). Det virker, det er, hvad dialekten altid har gjort, og det bliver, præcis hvor det er. Men et bitmap-ark skalerer ikke, og det ser ud, som det er.

LoadGoogleFont navngiver en familie i stedet:

font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
  Sync()
LOOP

Intet fjernes. LoadFont, TextFontImage og bitmap-vejen virker alle stadig, og et program kan blande dem.

Ventetiden er ikke valgfri#

En skrifttype er en fil, og filen ankommer, efter kaldet returnerer. At udskrive før den lander, og de første billeder kommer ud i fallback-fonten, hvilket læses som "kommandoen gjorde ingenting".

GoogleFontReady er det, du venter på:

font = LoadGoogleFont("Inter")
ready = 0
DO
  IF ready = 0
    IF GoogleFontReady(font) = 1
      PrintFont(font)
      ready = 1
    ENDIF
  ENDIF
  Print("Hello")
  Sync()
LOOP

Advarsel: den samme fælde fangede engang appens egne moduler. At erklære en skrifttype er ikke at indlæse den: et canvas downloader kun en familie, når noget beder om den, og svaret ankommer et billede eller flere senere.

Gennemse familierne#

Motoren leveres med en liste over familier, og et program kan læse den, hvilket er, hvad en font-vælger inde i et spil har brug for:

count = GoogleFontCount()
FOR i = 0 TO count - 1
  Print(GoogleFontName(i))
NEXT i

Listen befolker en vælger; den er ikke en grænse. Enhver Google-familie indlæses ved navn gennem LoadGoogleFont, listet eller ej.

Hvad der sker, når du eksporterer#

Hvor spillet kørerHvad der sker
EditorenFamilien hentes fra Google, første gang den navngives.
Browser-eksportDet samme, og filen serveres fra builden, når eksportøren kunne pakke den med.
Native eller Bevy-buildFilen skal have rejst med builden. Der er intet netværk.

Eksportøren læser dit program, finder hver familie, du har navngivet i ren tekst, downloader den og skriver den til assets/fonts/<Family>.woff2. Den build virker derefter offline.

Advarsel: en familie beregnet ved runtime kan ikke findes ved at læse programmet, så den kan ikke pakkes med. Eksportrapporten siger det, og builden falder tilbage til standardskrifttypen. Skriv LoadGoogleFont("Inter"), ikke LoadGoogleFont(names[i]), for alt, der skal overleve en eksport.

Kommandoerne#

KommandoHvad den gør
LoadGoogleFont(family)Indlæser familien, giver et id tilbage
LoadGoogleFont(fontID, family)Det samme, med et id du selv vælger
GoogleFontReady(fontID)1 når filen kan bruges
GoogleFontCount()Hvor mange familier listen tilbyder
GoogleFontName(index)Ét familienavn fra listen

Alt andet er den eksisterende font-maskine: PrintFont(id) til Print, TextFontSet(text, id) til et Text-objekt, DeleteFont(id) for at fjerne den.

Gå videre#