Google-fontit BASICissa

Nimeä fonttiperhe ja saat oikeaa vektoritekstiä bittikarttataulun sijaan, sekä odotuksen, jota asynkroninen lataus vaatii, ja mitä tapahtuu, kun peli viedään.

Mihin tätä käytetään#

Klassinen BASIC piirtää tekstiä fonttikuvasta: glyfitaulusta, jonka asetat komennolla TextFontImage(text, image). Se toimii, se on se, mitä murre on aina tehnyt, ja se pysyy tarkalleen paikallaan. Mutta bittikarttataulu ei skaalaudu, ja se näyttää siltä, mitä se on.

LoadGoogleFont nimeää perheen sen sijaan:

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

Mitään ei poisteta. LoadFont, TextFontImage ja bittikarttapolku toimivat kaikki edelleen, ja ohjelma voi sekoittaa niitä.

Odotus ei ole valinnainen#

Fontti on tiedosto, ja tiedosto saapuu vasta kutsun palattua. Jos tulostat ennen kuin se on saapunut, ensimmäiset ruudut tulevat ulos varafontilla, mikä näyttää siltä, että "komento ei tehnyt mitään".

GoogleFontReady on se, jota odotat:

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

Varoitus: sama ansa nappasi kerran sovelluksen omat moduulit. Fontin ilmoittaminen ei ole sen lataamista: kangas lataa perheen vasta, kun joku sitä pyytää, ja vastaus saapuu ruudun tai useamman myöhemmin.

Perheiden selaaminen#

Moottorin mukana tulee lista perheistä, ja ohjelma voi lukea sen, mitä pelin sisäinen fonttivalitsin tarvitsee:

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

Lista täyttää valitsimen; se ei ole rajoitus. Mikä tahansa Google-perhe latautuu nimellä komennolla LoadGoogleFont, listattuna tai ei.

Mitä tapahtuu, kun viet pelin#

Missä peli pyöriiMitä tapahtuu
EditoriPerhe haetaan Googlelta ensimmäisellä kerralla, kun se nimetään.
SelainvientiSama, ja tiedosto tarjoillaan buildista, kun viejä pystyi paketoimaan sen.
Natiivi tai Bevy-buildTiedoston on täytynyt kulkea buildin mukana. Verkkoa ei ole.

Viejä lukee ohjelmasi, löytää jokaisen perheen, jonka nimesit selväkielisenä tekstinä, lataa sen ja kirjoittaa sen kohteeseen assets/fonts/<Family>.woff2. Tämä build toimii sen jälkeen ilman verkkoyhteyttä.

Varoitus: ajon aikana laskettua perhettä ei voida löytää lukemalla ohjelmaa, joten sitä ei voida paketoida. Vientiraportti kertoo tämän, ja build palaa oletusfonttiin. Kirjoita LoadGoogleFont("Inter"), älä LoadGoogleFont(names[i]), kaikelle, minkä on selvittävä viennistä.

Komennot#

KomentoMitä se tekee
LoadGoogleFont(family)Lataa perheen, palauttaa id:n
LoadGoogleFont(fontID, family)Sama, itse valitulla id:llä
GoogleFontReady(fontID)1, kun tiedosto on käyttökelpoinen
GoogleFontCount()Kuinka monta perhettä lista tarjoaa
GoogleFontName(index)Yksi perheen nimi listalta

Kaikki muu on olemassa olevaa fonttikoneistoa: PrintFont(id) komennolle Print, TextFontSet(text, id) Text-objektille, DeleteFont(id) sen pudottamiseksi.

Mene pidemmälle#