Fonturi Google în BASIC

Numește o familie de fonturi și obții text vectorial real în loc de o foaie bitmap, cu așteptarea pe care o cere încărcarea asincronă și ce se întâmplă odată ce jocul este exportat.

Pentru ce este asta#

BASIC clasic desenează text dintr-o imagine de font: o foaie de glife pe care o setezi cu TextFontImage(text, image). Funcționează, este ceea ce a făcut mereu dialectul, și rămâne exact unde este. Dar o foaie bitmap nu se scalează, și arată exact ca ceea ce este.

LoadGoogleFont numește o familie în schimb:

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

Nimic nu este eliminat. LoadFont, TextFontImage și calea bitmap continuă toate să funcționeze, iar un program le poate amesteca.

Așteptarea nu este opțională#

Un font este un fișier, iar fișierul sosește după ce apelul se întoarce. Desenează înainte să sosească, și primele cadre ies în fontul de rezervă, ceea ce se citește drept „comanda nu a făcut nimic".

GoogleFontReady este ce trebuie să aștepți:

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

Avertisment: aceeași capcană a prins chiar modulele aplicației la un moment dat. A declara un font nu înseamnă a-l încărca: un canvas descarcă o familie doar când ceva o cere, iar răspunsul sosește un cadru sau mai multe mai târziu.

Răsfoirea familiilor#

Motorul livrează o listă de familii, iar un program o poate citi, ceea ce este exact ce are nevoie un selector de font într-un joc:

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

Lista populează un selector; nu este o limită. Orice familie Google se încarcă după nume prin LoadGoogleFont, listată sau nu.

Ce se întâmplă când exporți#

Unde rulează joculCe se întâmplă
EditorulFamilia este preluată de la Google prima dată când este numită.
Export browserLa fel, iar fișierul este servit din build atunci când exportatorul a putut să îl includă.
Build nativ sau BevyFișierul trebuie să fi călătorit odată cu build-ul. Nu există rețea.

Exportatorul îți citește programul, găsește fiecare familie pe care ai numit-o în text simplu, o descarcă și o scrie în assets/fonts/<Family>.woff2. Acel build funcționează apoi offline.

Avertisment: o familie calculată la runtime nu poate fi găsită citind programul, așa că nu poate fi inclusă. Raportul de export spune asta, iar build-ul revine la fontul implicit. Scrie LoadGoogleFont("Inter"), nu LoadGoogleFont(names[i]), pentru orice trebuie să supraviețuiască unui export.

Comenzile#

ComandăCe face
LoadGoogleFont(family)Încarcă familia, întoarce un id
LoadGoogleFont(fontID, family)La fel, cu un id ales de tine
GoogleFontReady(fontID)1 odată ce fișierul este utilizabil
GoogleFontCount()Câte familii oferă lista
GoogleFontName(index)Un nume de familie din listă

Tot restul este mecanica existentă de fonturi: PrintFont(id) pentru Print, TextFontSet(text, id) pentru un obiect Text, DeleteFont(id) pentru a-l elimina.

Mergi mai departe#