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 |
|---|---|
| Editor | Rodina se poprvé stáhne z Google, jakmile je pojmenovaná. |
| Export do prohlížeče | Stejně, a soubor se servíruje z buildu, když ho exportér dokázal zabalit. |
| Nativní nebo Bevy build | Soubor 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"), neLoadGoogleFont(names[i]).
Příkazy#
| Příkaz | Co 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#
- Celá rodina, s každým parametrem: příkazy Font.
- Samotný dialekt: jazyk BASIC.