Fon Google dalam BASIC

Namakan satu keluarga fon dan dapatkan teks vektor sebenar berbanding satu helaian bitmap, dengan penantian yang diperlukan oleh pemuatan asinkron dan apa yang berlaku sebaik sahaja permainan itu dieksport.

Untuk apa ini#

BASIC klasik melukis teks daripada satu font image: satu helaian glif yang anda tetapkan dengan TextFontImage(text, image). Ia berfungsi, itulah yang sentiasa dilakukan oleh dialek ini, dan ia kekal tepat di tempatnya. Tetapi satu helaian bitmap tidak menskala, dan ia kelihatan seperti apa sebenarnya.

LoadGoogleFont menamakan satu keluarga sebaliknya:

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

Tiada apa yang dibuang. LoadFont, TextFontImage dan laluan bitmap itu semuanya terus berfungsi, dan satu program boleh mencampurkannya.

Penantian itu bukan pilihan#

Satu fon adalah satu fail, dan fail itu tiba selepas panggilan itu memulangkan. Print sebelum ia mendarat dan bingkai pertama keluar dalam fon fallback, yang terbaca sebagai "arahan itu tidak melakukan apa-apa".

GoogleFontReady adalah apa yang anda tunggu:

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

Amaran: perangkap yang sama pernah menjerat modul-modul aplikasi ini sendiri. Mengisytiharkan satu fon bukan memuatkannya: satu kanvas hanya memuat turun satu keluarga apabila sesuatu memintanya, dan jawapan itu tiba satu bingkai atau beberapa kemudian.

Menyemak imbas keluarga#

Enjin ini menyertakan satu senarai keluarga, dan satu program boleh membacanya, iaitu apa yang diperlukan oleh satu pemilih fon di dalam satu permainan:

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

Senarai itu mengisi satu pemilih; ia bukan satu had. Mana-mana keluarga Google dimuatkan mengikut nama melalui LoadGoogleFont, sama ada disenaraikan atau tidak.

Apa yang berlaku apabila anda mengeksport#

Di mana permainan berjalanApa yang berlaku
EditorKeluarga itu diambil daripada Google kali pertama ia dinamakan.
Eksport pelayarSama, dan fail itu dihidangkan daripada binaan itu apabila exporter dapat membungkusnya.
Binaan native atau BevyFail itu mesti telah dibawa bersama binaan itu. Tiada rangkaian.

Exporter itu membaca program anda, mencari setiap keluarga yang anda namakan dalam teks biasa, memuat turunnya dan menulisnya ke assets/fonts/<Family>.woff2. Binaan itu kemudian berfungsi secara offline.

Amaran: satu keluarga yang dikira semasa runtime tidak boleh ditemui dengan membaca program itu, jadi ia tidak boleh dibungkus. Laporan eksport menyatakan begitu, dan binaan itu jatuh kembali kepada fon lalai. Tulis LoadGoogleFont("Inter"), bukan LoadGoogleFont(names[i]), untuk apa-apa yang mesti bertahan satu eksport.

Arahan-arahan#

ArahanApa fungsinya
LoadGoogleFont(family)Memuatkan keluarga itu, menyerahkan satu id
LoadGoogleFont(fontID, family)Sama, dengan satu id yang anda pilih
GoogleFontReady(fontID)1 sebaik sahaja fail itu boleh digunakan
GoogleFontCount()Berapa banyak keluarga yang ditawarkan oleh senarai itu
GoogleFontName(index)Satu nama keluarga daripada senarai itu

Selebihnya adalah jentera fon sedia ada: PrintFont(id) untuk Print, TextFontSet(text, id) untuk satu objek Text, DeleteFont(id) untuk membuangnya.

Meneroka lebih lanjut#