Шрифти 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), щоб прибрати
шрифт.
Далі#
- Уся родина, з кожним параметром: команди Font.
- Сам діалект: мова BASIC.