Google fonty v BASICu

Pojmenujte rodinu fontu a dostanete skutečný vektorový text místo bitmapové tabulky, s čekáním, které si asynchronní načítání žádá, a s tím, co se stane po exportu hry.

Na co to je#

Klasický BASIC kreslí text z obrázku fontu: tabulky glyfů, kterou nastavíte příkazem TextFontImage(text, image). Funguje to, dialekt to tak dělal vždycky, a zůstává to přesně tam, kde to je. Ale bitmapová tabulka se neškáluje, a vypadá přesně tak, čím je.

LoadGoogleFont místo toho pojmenuje rodinu:

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

Nic se neodstraňuje. LoadFont, TextFontImage a bitmapová cesta dál fungují, a program je může kombinovat.

Čekání není volitelné#

Font je soubor, a soubor dorazí až po tom, co se volání vrátí. Kreslení textu dřív, než dorazí, znamená, že první snímky vyjdou v záložním fontu, což se čte jako "příkaz nic neudělal".

GoogleFontReady je to, na co čekáte:

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

Varování: stejná past jednou nachytala i vlastní moduly aplikace. Deklarovat font neznamená ho načíst: canvas rodinu stáhne, až když si o ni něco řekne, a odpověď dorazí o snímek nebo víc později.

Procházení rodin#

Engine dodává seznam rodin, a program ho může přečíst, což je to, co potřebuje výběr fontu uvnitř hry:

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

Seznam plní výběr; není to limit. Jakákoli rodina Google se načte podle jména přes LoadGoogleFont, ať je na seznamu, nebo ne.

Co se stane při exportu#

Kde hra běžíCo se stane
EditorRodina se poprvé stáhne z Google, jakmile je pojmenovaná.
Export do prohlížečeStejně, a soubor se servíruje z buildu, když ho exportér dokázal zabalit.
Nativní nebo Bevy buildSoubor musí cestovat s buildem. Síť tam není.

Exportér přečte váš program, najde každou rodinu, kterou jste pojmenovali čistým textem, stáhne ji a zapíše do assets/fonts/<Family>.woff2. Ten build pak funguje offline.

Varování: rodinu spočítanou za běhu nelze najít čtením programu, takže se nedá zabalit. Zpráva o exportu to řekne, a build se vrátí k výchozímu fontu. Pro cokoli, co má přežít export, pište LoadGoogleFont("Inter"), ne LoadGoogleFont(names[i]).

Příkazy#

PříkazCo dělá
LoadGoogleFont(family)Načte rodinu, vrátí id
LoadGoogleFont(fontID, family)Totéž, s id, které si zvolíte
GoogleFontReady(fontID)1, jakmile je soubor použitelný
GoogleFontCount()Kolik rodin seznam nabízí
GoogleFontName(index)Jedno jméno rodiny ze seznamu

Vše ostatní je stávající strojovina fontů: PrintFont(id) pro Print, TextFontSet(text, id) pro objekt Text, DeleteFont(id) pro jeho zrušení.

Kam dál#