Шрифти Google у BASIC

Назвіть родину шрифтів і отримайте справжній векторний текст замість бітмап-листа, з очікуванням, якого вимагає асинхронне завантаження, і тим, що станеться після експорту гри.

Для чого це#

Класичний BASIC малює текст із зображення шрифту: листа гліфів, який ви задаєте через TextFontImage(text, image). Це працює, це те, що діалект завжди робив, і воно лишається саме там, де є. Але бітмап-лист не масштабується, і виглядає саме так, як він є.

LoadGoogleFont натомість називає родину:

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

Нічого не прибрано. LoadFont, TextFontImage і бітмап-шлях продовжують працювати, і програма може їх поєднувати.

Очікування не опційне#

Шрифт це файл, і файл приходить після того, як виклик уже повернувся. Викликати друк до того, як він прийшов, і перші кадри вийдуть у запасному шрифті, що виглядає як «команда нічого не зробила».

GoogleFontReady це те, на що чекають:

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

Попередження: та сама пастка колись впіймала власні модулі застосунку. Оголосити шрифт не означає завантажити його: полотно завантажує родину лише тоді, коли щось її запитує, а відповідь приходить на кадр чи кілька пізніше.

Перегляд родин#

Рушій постачає список родин, і програма може його прочитати, саме це потрібно для вибору шрифту всередині гри:

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

Список наповнює вибір; це не обмеження. Будь-яка родина Google завантажується за назвою через LoadGoogleFont, є вона в списку чи ні.

Що відбувається під час експорту#

Де працює граЩо відбувається
РедакторРодина завантажується з Google при першому називанні.
Експорт у браузерТак само, і файл віддається зі збірки, коли експортер зміг його запакувати.
Native чи Bevy-збіркаФайл мусив подорожувати разом зі збіркою. Мережі немає.

Експортер читає вашу програму, знаходить кожну названу вами родину у звичайному тексті, завантажує її і записує в assets/fonts/<Family>.woff2. Ця збірка потім працює офлайн.

Попередження: родину, обчислену під час виконання, не можна знайти читанням програми, тож її не можна запакувати. Звіт експорту повідомляє про це, і збірка переходить на типовий шрифт. Пишіть LoadGoogleFont("Inter"), а не LoadGoogleFont(names[i]), для всього, що має пережити експорт.

Команди#

КомандаЩо вона робить
LoadGoogleFont(family)Завантажує родину, повертає id
LoadGoogleFont(fontID, family)Те саме, з id, який ви обираєте
GoogleFontReady(fontID)1, щойно файл придатний до використання
GoogleFontCount()Скільки родин пропонує список
GoogleFontName(index)Одна назва родини зі списку

Усе інше це наявна машинерія шрифтів: PrintFont(id) для Print, TextFontSet(text, id) для об'єкта Text, DeleteFont(id), щоб прибрати шрифт.

Далі#