Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Використання шрифтів

Godot дозволяє встановлювати певні шрифти для різних вузлів інтерфейсу.

Є три різні місця, де ви можете налаштувати використання шрифту. Перший — редактор тем. Виберіть вузол, для якого потрібно встановити шрифт, і виберіть вкладку шрифту. Другий — в інспекторі вузлів керування в розділі Заміни теми > Шрифти. Нарешті, у налаштуваннях інспектора для тем у розділі Шрифт за замовчуванням.

Якщо заміна шрифту ніде не вказана, Open Sans SemiBold використовується як шрифт проекту за умовчанням.

Примітка

Починаючи з Godot 4.0, розміри шрифтів більше не визначаються в самому шрифті, а визначаються у вузлі, який використовує шрифт. Це робиться в розділі інспектора Заміна теми > Розмір шрифту.

Це дозволяє змінювати розмір шрифту без необхідності дублювати ресурс шрифту для кожного іншого розміру шрифту.

Існує 2 типи файлів шрифтів: динамічні (формати TTF/OTF/WOFF/WOFF2) і растрові (формат BMFont .fnt або моноширинне зображення). Динамічні шрифти є найпоширенішим варіантом, оскільки їх можна змінювати, але вони виглядають чітко при більших розмірах. Завдяки своїй векторній природі вони також можуть містити набагато більше гліфів, зберігаючи розумний розмір файлу порівняно з растровими шрифтами. Динамічні шрифти також підтримують деякі розширені функції, які растрові шрифти не підтримують, наприклад лігатури (декілька символів, що перетворюються на один інший дизайн).

Порада

Ви можете знайти безкоштовно ліцензовані файли шрифтів на таких веб-сайтах, як Google Fonts і Font Library.

Шрифти захищені авторським правом. Перевірте ліцензію шрифту перед його використанням, оскільки не всі шрифти дозволяють комерційне використання без придбання ліцензії.

Дивись також

Ви можете побачити, як шрифти працюють у дії, використовуючи демонстраційний проект BiDI та Font Features <https://github.com/godotengine/godot-demo-projects/tree/master/gui/bidi_and_font_features>`__.

Динамічні шрифти

Godot підтримує такі динамічні формати шрифтів:

  • Шрифт або колекція TrueType (.ttf, .ttc)

  • Шрифт або колекція OpenType (.otf, .otc)

  • Веб-формат відкритого шрифту 1 (.woff)

  • Формат відкритого веб-шрифту 2 (.woff2)

Хоча .woff і особливо .woff2, як правило, призводять до менших розмірів файлів, не існує універсального "кращого" формату шрифту. У більшості ситуацій рекомендується використовувати формат шрифту, наданий на веб-сайті розробника шрифту.

Растрові шрифти

Godot підтримує формат растрового шрифту BMFont (.fnt). Це формат, створений програмою BMFont. Також існує багато програм, сумісних із BMFont, наприклад BMGlyph або веб-базований fontcutter.

Або ж ви можете імпортувати будь-яке зображення для використання як растрового шрифту. Для цього виберіть зображення на панелі файлової системи, перейдіть на панель імпорту, змініть тип імпорту на Дані шрифту (шрифт зображення), а потім натисніть Повторно імпортувати:

Зміна типу імпорту на Дані шрифту (Шрифт зображення)

Зміна типу імпорту на Дані шрифту (шрифт зображення)

Розкладка набору символів шрифту може бути в будь-якому порядку, але рекомендовано використовувати порядок, який відповідає стандартному Unicode, оскільки для імпорту потрібно набагато менше конфігурації. Наприклад, наведений нижче растровий шрифт містить символи ASCII і відповідає стандартному порядку ASCII:

Приклад растрового шрифту

Авторство: LibreQuake (масштабовано та обрізано, щоб виключити розширений діапазон)

Щоб успішно імпортувати наведене вище зображення шрифту, можна використати такі параметри імпорту:

Параметри імпорту для наведеного вище прикладу шрифту

Параметри імпорту для наведеного вище прикладу шрифту

Параметр Діапазон символів — це масив, який відображає кожну позицію на зображенні (у мозаїчних координатах, а не в пікселях). Шрифтовий атлас проходить зліва направо і зверху вниз. Символи можна вказати за допомогою десяткових чисел (127), шістнадцяткових чисел (0x007f) або в одинарних лапках ('~'). Діапазони можна вказувати за допомогою дефіса між символами.

Наприклад, 0-127 (або 0x0000-0x007f) позначає повний діапазон ASCII. Як інший приклад, ' '-'~' еквівалентний 32-127 і позначає діапазон друкованих (видимих) символів ASCII.

Переконайтеся, що параметр Діапазон символів не перевищує визначену кількість Стовпців × Рядків. Інакше не вдасться імпортувати шрифт.

Якщо ваше зображення шрифту містить поля, які не використовуються для гліфів шрифту (наприклад, інформацію про авторство), спробуйте налаштувати Поля зображення. Це поле, яке застосовується лише один раз навколо всього зображення.

Якщо ваше зображення шрифту містить напрямні (у вигляді ліній між гліфами) або якщо інтервали між символами здаються неправильними, спробуйте налаштувати Поля символів. Ця маржа застосовується до кожного імпортованого гліфа.

Якщо вам потрібен точніший контроль над інтервалами між символами, ніж той, що пропонують опції Поля символів, у вас є додаткові можливості.

По-перше, Діапазон символів підтримує 3 додаткові аргументи після зазначеного діапазону символів. Ці додаткові аргументи керують їхнім розташуванням та інтервалами. Вони представляють просування пробілу, зміщення по осі X та зміщення по осі Y у такому порядку. Вони змінюватимуть просування пробілу та зміщення кожного символу на кількість записаних пікселів. Просування пробілу найкорисніше, якщо, наприклад, ваші малі літери тонші за великі.

Діаграма, що показує значення просування та зміщення, що використовуються в діапазонах символів.

Зверніть увагу, що зміщення можуть призвести до обрізання тексту за межами етикетки.

По-друге, ви також можете налаштувати пари кернінгу для окремих символів. Вкажіть пару кернінгу, ввівши два набори символів, розділені пробілом, а потім ще один пробіл – число, яке вказує, на скільки додаткових/менших пікселів потрібно розмістити ці два набори символів, якщо їх розмістити поруч.

../../_images/using_fonts_bitmap_kerning_pairs_example.webp

За потреби, символи вашої пари кернінгу можна вказати за допомогою коду символів Unicode, ввівши \uXXXX, де XXXX — це шістнадцяткове значення символу Unicode.

Завантаження файлу шрифту

Щоб завантажити файл шрифту (динамічний або растровий), скористайтеся параметром Швидке завантаження або Завантажити у спадному списку ресурсів поруч із властивістю шрифту, а потім перейдіть до відповідного файлу шрифту:

../../_images/using_fonts_load_font.webp

Завантаження файлу шрифту

Ви також можете перетягнути файл шрифту з док-станції FileSystem до властивості інспектора, яка приймає ресурс Font.

Попередження

У Godot 4.0 і пізніших версіях текстурний фільтр і властивості повторення визначаються в місці, де використовується текстура, а не в самій текстурі. Це також стосується шрифтів (як динамічних шрифтів, так і растрових шрифтів).

Шрифти, які мають вигляд піксельного мистецтва, мають вимкнути білінійну фільтрацію, змінивши параметр проекту Відтворення > Текстури > Текстури полотна > Фільтр текстури за замовчуванням на Найближчий.

Розмір шрифту також має бути цілим кратним розміру дизайну (який змінюється залежно від шрифту), а контрольний вузол, який використовує шрифт, також має бути масштабований цілим кратним. Інакше шрифт може виглядати розмитим. Розмір шрифту в Godot вказується в пікселях (px), а не в точках (pt). Пам’ятайте про це, порівнюючи розмір шрифту в різних програмах.

Режим текстурного фільтра також можна встановити на окремих вузлах, які успадковують від CanvasItem, встановивши CanvasItem.texture_filter.

Контури і тіні шрифту

Контури шрифту та тіні можна використовувати для покращення читабельності, якщо колір фону невідомий заздалегідь. Наприклад, це стосується елементів HUD, які малюються поверх 2D/3D сцени.

На додачу до Label3D контури шрифтів доступні в більшості вузлів, які походять від Control.

Щоб увімкнути контур для шрифту на певному вузлі, налаштуйте перевизначення теми Колір контуру шрифту і Розмір контуру в інспекторі. Результат повинен виглядати так:

Приклад контуру шрифту

Приклад контуру шрифту

Примітка

Якщо використовується шрифт із рендерингом MSDF, для параметра імпорту MSDF Pixel Range має бути встановлено принаймні подвійне значення розміру контуру, щоб рендеринг контуру виглядав правильно. Інакше контур може здатися обрізаним раніше, ніж передбачалося.

Підтримка тіней шрифту більш обмежена: вони доступні лише в Label і class_RichTextLabel. Крім того, тіні шрифту завжди мають жорсткий край (але ви можете зменшити їхню непрозорість, щоб вони виглядали більш тонкими). Щоб увімкнути тіні шрифту на певному вузлі, налаштуйте Колір тіні шрифту, Зсув тіні X і Зсув тіні Y у вузлі Label або RichTextLabel відповідно:

Налаштування тіні шрифту у вузлі Label

Налаштування тіні шрифту у вузлі Label

Результат повинен виглядати так:

Приклад тіні від шрифту

Приклад тіні від шрифту

Порада

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

Розширені функції шрифту

Згладжування

Ви можете налаштувати спосіб згладжування шрифту під час візуалізації, налаштувавши згладжування та підказки. Це різні властивості з різними випадками використання.

Згладжування контролює, як краї гліфів мають бути згладжені під час растеризації шрифту. Метод згладжування за замовчуванням (Відтінки сірого) добре працює з усіма технологіями відображення. Однак за малих розмірів згладжування відтінків сірого може призвести до того, що шрифти виглядатимуть розмитими.

Чіткість згладжування можна покращити за допомогою субпіксельної оптимізації РК-дисплея, яка використовує шаблони субпікселів більшості РК-дисплеїв шляхом компенсації згладжування шрифту на основі кожного каналу (червоний/зелений/синій). Недоліком є те, що це може призвести до «бахроми» на краях, особливо на технологіях відображення, які не використовують стандартні субпікселі RGB (наприклад, OLED-дисплеї).

У більшості ігор рекомендується використовувати стандартне згладжування Відтінки сірого. Для неігрових додатків варто дослідити субпіксельну оптимізацію РК-дисплея.

Порівняння згладжування шрифтів

Зверху вниз: вимкнено, відтінки сірого, РК-субпіксель (RGB)

Примітка

Згладжування не можна змінити на MSDF-rendered fonts – вони завжди відображаються зі згладжуванням у відтінках сірого.

Підказка

Підказки контролюють, наскільки агресивно краї гліфів мають бути прив’язані до пікселів під час растеризації шрифту. Немає забезпечує максимально гладкий вигляд, через що шрифт може виглядати розмитим при малих розмірах. Світлий (за замовчуванням) є чіткішим завдяки прив’язці країв гліфа до пікселів лише на осі Y, тоді як Повний є ще чіткішим завдяки прив’язці країв гліфа до пікселів на обох осях X і Y. Залежно від особистих уподобань, ви можете віддати перевагу використанню одного режиму підказки над іншим.

Порівняння підказок шрифту

Зверху вниз: жодного, легкого, повного підказування

Примітка

Якщо зміна режиму підказок не має видимого ефекту після натискання Повторно імпортувати, зазвичай це тому, що шрифт не містить інструкцій щодо підказок. Цю проблему можна вирішити, знайшовши версію файлу шрифту, яка містить інструкції щодо підказок, або ввімкнувши Примусову автопідказку на панелі імпорту. Це використовуватиме автопідказку FreeType для автоматичного додавання інструкцій підказки до імпортованого шрифту.

Субпіксельне позиціонування

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

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

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

Попередження

Шрифти, які мають вигляд піксельного зображення, повинні мати режим позиціонування субпікселя на Вимкнено. Інакше шрифт може мати неоднаковий розмір пікселів.

Цей крок не є обов’язковим для растрових шрифтів, оскільки субпіксельне позиціонування актуальне лише для динамічних шрифтів (які зазвичай складаються з векторних елементів).

Mip-текстурування

За замовчуванням шрифти не створюють міп-мапи, щоб зменшити використання пам’яті та прискорити растеризацію. Однак це може призвести до того, що зменшені шрифти стануть зернистими. Це може бути особливо помітно з 3D текст, для якого не ввімкнено Фіксований розмір. Це також може статися під час відображення тексту традиційним растеризованим (не-MSDF) шрифтом у контрольному вузлі, масштаб якого нижчий за (1, 1).

Вибравши шрифт у док-станції FileSystem, ви можете ввімкнути Mipmaps у док-станції «Імпорт», щоб покращити відображення зменшених шрифтів.

Mipmaps також можна ввімкнути для шрифтів MSDF. Це може трохи покращити якість візуалізації шрифтів при розмірах, менших за замовчування, але шрифти MSDF уже готові до зернистості.

Візуалізація шрифтів MSDF

Візуалізація шрифтів у багатоканальному полі відстаней зі знаком (MSDF) дозволяє відтворювати шрифти будь-якого розміру без необхідності їх повторної растеризації при зміні розміру.

Візуалізація шрифтів MSDF має 2 переваги порівняно з традиційною растеризацією шрифтів, яку Godot використовує за замовчуванням:

  • Шрифт завжди буде виглядати чітким, навіть при великих розмірах.

  • Під час відтворення символів великого розміру вперше спостерігається менше затримок, оскільки растеризація не виконується.

Недоліки відтворення шрифтів MSDF:

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

  • Шрифти невеликого розміру виглядатимуть не так чітко, як растеризовані, через відсутність підказок.

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

  • Для шрифтів MSDF не можна ввімкнути субпіксельну оптимізацію РК-дисплея.

  • Шрифти з контурами, що перетинаються, не відображатимуться належним чином у режимі MSDF. Якщо ви помітили проблеми із відтворенням шрифтів, завантажених із таких веб-сайтів, як Google Fonts, спробуйте замість цього завантажити шрифт з офіційного веб-сайту автора шрифту.

Порівняння методів растеризації шрифтів

Порівняння методів растеризації шрифтів. Зверху донизу: растрований без передискретизації, растрований із передискретизацією, MSDF

Щоб увімкнути рендеринг MSDF для певного шрифту, виберіть його в док-станції FileSystem, перейдіть до док-станції «Імпорт», увімкніть Поле відстані з багатоканальним знаком, а потім натисніть Повторний імпорт:

Увімкнення MSDF у параметрах імпорту шрифту

Увімкнення MSDF у параметрах імпорту шрифту

Використання емодзі

Godot має обмежену підтримку шрифтів emoji:

  • Підтримуються шрифти emoji CBDT/CBLC (вбудовані PNG) і SVG.

  • Шрифти емодзі COLR/CPAL (власний векторний формат) не підтримуються.

  • Стиснення растрового зображення EMJC (використовується системним шрифтом смайлів iOS) не підтримується. Це означає, що для підтримки emoji в iOS потрібно використовувати спеціальний шрифт, який використовує стиснення растрового зображення SVG або PNG.

Щоб Godot міг відображати емодзі, використовуваний шрифт (або один із його fallbacks) має містити їх. Інакше емодзі не відображатимуться, а замість них з’являться символи-заповнювачі «тофу»:

Вигляд за замовчуванням під час спроби використання емодзі в мітці

Вигляд за замовчуванням під час спроби використання емодзі в мітці

Додавши шрифт для відображення емодзі, як-от Noto Color Emoji, ви отримаєте очікуваний результат:

Правильний вигляд після додавання шрифту emoji до мітки

Правильний вигляд після додавання шрифту emoji до мітки

Щоб використовувати звичайний шрифт разом із emoji, рекомендується вказати fallback font, який вказує на шрифт emoji в розширених параметрах імпорту звичайного шрифту. Якщо ви бажаєте використовувати шрифт проекту за замовчуванням під час відображення емодзі, залиште властивість Base Font у FontVariation порожнім, додаючи резервний шрифт, який вказує на шрифт емодзі:

Порада

Шрифти Emoji мають досить великий розмір, тому ви можете load a system font, щоб надати гліфи emoji, а не додавати його до свого проекту. Це дозволяє забезпечити повну підтримку емодзі у вашому проекті без збільшення розміру його експортованого PCK. Недоліком є те, що емодзі виглядатимуть по-різному залежно від платформи, а завантаження системних шрифтів підтримується не на всіх платформах.

Також можна використовувати системний шрифт як запасний.

Використання значкових шрифтів

Такі інструменти, як Fontello, можна використовувати для створення файлів шрифтів, які містять вектори, імпортовані з файлів SVG. Це можна використовувати для візуалізації власних векторних елементів як частини тексту або для створення екструдованих 3D-іконок за допомогою 3D текст і TextMesh.

Примітка

Наразі Fontello не підтримує створення різнокольорових шрифтів (які Godot може відобразити). Станом на листопад 2022 року підтримка різнокольорових шрифтів в інструментах створення шрифтів значків залишається малою.

Залежно від ваших випадків використання це може призвести до кращих результатів порівняно з використанням тегу img у RichTextLabel. На відміну від растрових зображень (включаючи SVG, які растеризуються під час імпорту Godot), справжні векторні дані можна змінити до будь-якого розміру без втрати якості.

Завантаживши згенерований файл шрифту, завантажте його у свій проект Godot, а потім укажіть його як спеціальний шрифт для вузла Label, RichTextLabel або Label3D. Перейдіть до веб-інтерфейсу Fontello, потім скопіюйте символ, вибравши його та натиснувши Ctrl + C (Cmd + C на macOS). Вставте символ у властивість Text вашого вузла Label. Символ відображатиметься як гліф-заповнювач в інспекторі, але він має правильно відображатися у вікні перегляду 2D/3D.

Щоб використовувати шрифт значка поряд із традиційним шрифтом у тому самому елементі керування, ви можете вказати шрифт значка як fallback. Це працює, оскільки шрифти піктограм використовують область приватного використання Unicode, яка зарезервована для використання користувальницькими шрифтами та не містить стандартних гліфів.

Примітка

Кілька сучасних шрифтів значків, таких як Font Awesome 6, мають варіант для робочого столу, який використовує лігатури для визначення значків. Це дозволяє вказувати піктограми, вводячи їх назву безпосередньо у властивість Текст будь-якого вузла, який може відображати шрифти. Після того, як назву піктограми буде повністю введено як текст (наприклад, будинок), її буде замінено піктограмою.

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

Запасні шрифти

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

  • Використовуйте шрифт, який підтримує лише латинські набори символів, але використовуйте інший шрифт, щоб мати можливість відображати текст іншим набором символів, наприклад кирилицею.

  • Використовуйте шрифт для відтворення тексту та інший шрифт для відтворення смайлів або значків.

Відкрийте діалогове вікно додаткових параметрів імпорту, двічі клацнувши файл шрифту в док-станції FileSystem. Ви також можете вибрати шрифт у док-станції FileSystem, перейти до док-станції «Імпорт» і вибрати Додатково… внизу:

../../_images/using_fonts_advanced_import_settings.webp

Імпорт дока

У діалоговому вікні, що з’явиться, знайдіть розділ Резервні варіанти на бічній панелі праворуч, натисніть текст Масив[Шрифт] (розмір 0), щоб розгорнути властивість, а потім натисніть Додати елемент:

../../_images/using_fonts_font_fallbacks_add.webp

Додавання резервного шрифту

Натисніть стрілку розкривного меню на новому елементі, а потім виберіть файл шрифту за допомогою параметрів Швидке завантаження або Завантажити:

../../_images/using_fonts_font_fallbacks_load.webp

Завантаження резервного шрифту

Можна додати запасні шрифти, використовуючи стандартний шрифт проекту. Для цього залиште властивість Базовий шрифт порожнім, додавши один або кілька запасних шрифтів.

Примітка

Запасні шрифти також можна визначити на локальній основі, подібно до Особливості шрифту OpenType, але це не описано тут з причин стислості.

Змінні шрифти

Godot має повну підтримку змінних шрифтів, які дозволяють використовувати один файл шрифту для представлення різної товщини та стилю шрифту (звичайний, жирний, курсив, …). Це має підтримуватися файлом шрифту, який ви використовуєте.

Щоб використовувати змінний шрифт, створіть ресурс FontVariation у місці, де ви збираєтеся використовувати шрифт, а потім завантажте файл шрифту в ресурс FontVariation:

../../_images/using_fonts_font_variation_create.webp

Створення ресурсу FontVariation

../../_images/using_fonts_font_variation_load.webp

Завантаження файлу шрифту в ресурс FontVariation

Прокрутіть униз до розділу Variation у FontVariation, а потім клацніть текст Variation Coordinates, щоб розгорнути список осей, які можна налаштувати:

../../_images/using_fonts_font_variation_variable_font.webp

Список варіаційних осей

Набір осей, які можна налаштувати, залежить від завантаженого шрифту. Деякі змінні шрифти підтримують лише одну вісь коригування (зазвичай weight або slant), а інші можуть підтримувати кілька осей коригування.

Наприклад, ось шрифт Inter V з вагою 900 і нахилом -10:

../../_images/using_fonts_font_variation_variable_font_example.webp

Приклад змінного шрифту (Inter V)

Порада

Хоча змінні назви осей шрифтів і масштаби не стандартизовані, деякі загальні угоди зазвичай дотримуються дизайнерами шрифтів. Вісь weight стандартизована в OpenType і працює таким чином:

Значення осі

Ефективна вага шрифту

100

Тонкий (лінія волосся)

200

Надлегкий (Ultra Light)

300

Світло

400

Звичайний (Нормальний)

500

Середній

600

Напівжирний (напівжирний)

700

Жирний

800

Наджирний (ультражирний)

900

Чорний (важкий)

950

Екстра чорний (ультра чорний)

Ви можете зберегти FontVariation у файлі ресурсів .tres, щоб використовувати його в інших місцях:

../../_images/using_fonts_font_variation_save_to_file.webp

Збереження FontVariation у файл зовнішнього ресурсу

Штучний жирний шрифт і курсив

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

Однак для справжніх жирних і курсивних шрифтів потрібно надсилати більше файлів шрифтів, що збільшує розмір розподілу. Також можна використовувати один файл variable font, але цей файл буде більшим, ніж один незмінний шрифт. Хоча розмір файлу зазвичай не є проблемою для настільних проектів, він може бути проблемою для мобільних/веб-проектів, які прагнуть зберегти розмір розповсюдження якомога меншим.

Щоб дозволити відображати жирні шрифти та курсив без необхідності надсилати додаткові шрифти (або використовувати змінний шрифт більшого розміру), Godot підтримує несправжні жирний шрифт і курсив.

Штучний жирний/курсив (угорі), справжній жирний/курсив (внизу). Використовується звичайний шрифт: Open Sans SemiBold

Штучний жирний/курсив (угорі), справжній жирний/курсив (внизу). Використовується звичайний шрифт: Open Sans SemiBold

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

Щоб використовувати штучний жирний шрифт, створіть ресурс FontVariation у властивості, де очікується ресурс Font. Установіть Variation > Embolden додатне значення, щоб зробити шрифт більш жирним, або від’ємне значення, щоб зробити його менш жирним. Рекомендовані значення від 0,5 до 1,2 залежно від шрифту.

Фальшивий курсив створюється шляхом перекосу тексту, що виконується зміною кожного символу. Це також надається у FontVariation за допомогою властивості Variation > Transform. Встановлення додатного значення для компонента yx символьного перетворення призведе до виділення тексту курсивом. Рекомендовані значення від 0,2 до 0,4 залежно від шрифту.

Налаштування інтервалу між шрифтами

Для стилістичних цілей або для кращої читабельності ви можете налаштувати спосіб представлення шрифту в Godot.

Створіть ресурс FontVariation у властивості, де очікується ресурс Font. У розділі Варіація > Додатковий інтервал є 4 властивості, які приймають додатні та від’ємні значення:

  • Гліф: додатковий інтервал між кожним гліфом.

  • Пробіл: додатковий інтервал між словами.

  • Вгорі: додатковий інтервал над гліфами. Це використовується для багаторядкового тексту, а також для обчислення мінімального розміру елементів керування, таких як Label і Button.

  • Внизу: Додатковий інтервал під гліфами. Це використовується для багаторядкового тексту, а також для обчислення мінімального розміру елементів керування, таких як Label і Button.

Властивість Variation > Transform також можна налаштувати для розтягування символів горизонтально або вертикально. Зокрема, це робиться за допомогою налаштування компонентів xx (горизонтальний масштаб) і yy (вертикальний масштаб). Не забувайте налаштовувати інтервал між гліфами, щоб врахувати будь-які зміни, оскільки перетворення гліфів не впливає на те, скільки місця кожен гліф займає в тексті. Нерівномірне масштабування такого роду слід використовувати обережно, оскільки шрифти, як правило, не призначені для відображення з розтягуванням.

Особливості шрифту OpenType

Godot підтримує ввімкнення функцій шрифту OpenType, які є стандартизованим способом визначення альтернативних символів, які можна перемикати без необхідності повністю міняти файли шрифтів. Незважаючи на назву функцій шрифту OpenType, вони також підтримуються у файлах шрифтів TrueType (.ttf) і WOFF/WOFF2.

Підтримка функцій OpenType сильно залежить від використовуваного шрифту. Деякі шрифти не підтримують жодних функцій OpenType, тоді як інші шрифти можуть підтримувати десятки функцій, які можна перемикати.

Існує 2 способи використання функцій шрифту OpenType:

Глобально у файлі шрифту

Відкрийте діалогове вікно додаткових параметрів імпорту, двічі клацнувши файл шрифту в док-станції FileSystem. Ви також можете вибрати шрифт у док-станції FileSystem, перейти до док-станції «Імпорт» і вибрати Додатково… внизу:

../../_images/using_fonts_advanced_import_settings.webp

Імпорт дока

У діалоговому вікні, що з’явиться, знайдіть розділ Заміна метаданих > Функції OpenType на бічній панелі праворуч, клацніть текст Функції (набір 0 із N), щоб розгорнути властивість, а потім натисніть Додати Функція:

../../_images/using_fonts_advanced_import_settings_opentype_features.webp

Функція OpenType замінює параметри розширеного імпорту

У певному використанні шрифту (FontVariation)

Щоб скористатися функцією шрифту, створіть ресурс FontVariation, як ви зробили б для variable font, а потім завантажте файл шрифту в ресурс FontVariation:

../../_images/using_fonts_font_variation_create.webp

Створення ресурсу FontVariation

../../_images/using_fonts_font_variation_load.webp

Завантаження файлу шрифту в ресурс FontVariation

Прокрутіть униз до розділу Функції OpenType у FontVariation, клацніть текст Функції (набір 0 з N), щоб розгорнути властивість, потім натисніть Додати функцію та виберіть потрібну функцію у спадному списку:

../../_images/using_fonts_font_variation_opentype_features.webp

Визначення функцій OpenType у ресурсі FontVariation

Наприклад, ось шрифт Inter без функції Slashed Zero (угорі), потім із увімкненою функцією Slashed Zero OpenType (внизу):

../../_images/using_fonts_font_variation_slashed_zero.webp

Порівняння функцій OpenType (Inter)

Ви можете вимкнути лігатури та/або кернінг для певного шрифту, додавши функції OpenType, а потім знявши їх в інспекторі:

../../_images/using_fonts_font_variation_disable_ligatures.webp

Вимкнення лігатур і кернінгу для шрифту

Системні шрифти

Попередження

Завантаження системних шрифтів підтримується лише в Windows, macOS, Linux, Android та iOS.

Однак завантаження системних шрифтів на Android є ненадійним, оскільки для цього немає офіційного API. Godot повинен покладатися на аналіз файлів конфігурації системи, які можуть бути змінені сторонніми постачальниками Android. Це може призвести до нефункціонального завантаження системного шрифту.

Системні шрифти — це інший тип ресурсу порівняно з імпортованими шрифтами. Вони насправді ніколи не імпортуються в проект, а завантажуються під час виконання. Це має 2 переваги:

  • Шрифти не включені в експортований файл PCK, що призводить до меншого розміру файлу для експортованого проекту.

  • Оскільки шрифти не входять до експортованого проекту, це дозволяє уникнути проблем з ліцензуванням, які могли б виникнути, якщо власницькі системні шрифти розповсюджувалися разом із проектом.

Механізм автоматично використовує системні шрифти як резервні шрифти, що дає змогу відображати символи CJK і емодзі без необхідності завантажувати спеціальний шрифт. Однак існують певні обмеження, як зазначено в розділі Using emoji.

Створіть ресурс class_SystemFont у місці, де ви бажаєте використовувати системний шрифт:

../../_images/using_fonts_system_font_create.webp

Створення ресурсу SystemFont

../../_images/using_fonts_system_font_specify.webp

Визначення назви шрифту для використання в ресурсі SystemFont

Ви можете або явно вказати одне або кілька назв шрифтів (наприклад, Arial), або вказати назву псевдоніма шрифту, який відповідає «стандартному» шрифту за замовчуванням для системи:

Псевдонім шрифту

Windows

macOS/iOS

Linux

Android

sans-serif

Arial

Helvetica

Обробляється fontconfig

Roboto / Noto Sans

serif

Times New Roman

Times

Обробляється fontconfig

Noto Serif

monospace

Courier New

Courier

Обробляється fontconfig

Droid Sans Mono

cursive

Comic Sans MS

Apple Chancery

Обробляється fontconfig

Dancing Script

fantasy

Gabriola

papyrus

Обробляється fontconfig

Droid Sans Mono

На Android Roboto використовується для тексту латиницею/кирилицею, а Noto Sans використовується для гліфів інших мов, наприклад CJK. У сторонніх дистрибутивах Android точний вибір шрифту може відрізнятися.

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

Як і варіанти шрифтів, ви можете зберегти розташування SystemFont у файлі ресурсів, щоб використовувати його в інших місцях.

Пам’ятайте, що різні системні шрифти мають різні показники, а це означає, що текст, який може поміститися в межах прямокутника на одній платформі, може не поміститися на іншій платформі. Завжди резервуйте додатковий простір під час розробки, щоб за потреби можна було розширити мітки.

Примітка

На відміну від Windows і macOS/iOS, набір стандартних шрифтів, що постачаються в Linux, залежить від дистрибутива. Це означає, що в різних дистрибутивах Linux різні шрифти можуть відображатися для певної назви або псевдоніма системного шрифту.

Також можна завантажувати шрифти під час виконання, навіть якщо вони не встановлені в системі. Дивіться Runtime loading and saving для деталей.

Попереднє відтворення шрифтів

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

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

Щоб уникнути проблем із заїканням, пов’язаних із відтворенням шрифтів, можна попередньо відобразити певні гліфи. Це можна зробити для всіх гліфів, які ви збираєтеся використовувати (для отримання оптимальних результатів), або лише для звичайних гліфів, які найімовірніше з’являться під час гри (щоб зменшити розмір файлу). Гліфи, які не були попередньо відрендерені, будуть растеризовані на льоту, як зазвичай.

Примітка

В обох випадках (традиційному та MSDF) растеризація шрифту виконується на ЦП. Це означає, що продуктивність GPU не впливає на тривалість растеризації шрифтів.

Відкрийте діалогове вікно додаткових параметрів імпорту, двічі клацнувши файл шрифту в док-станції FileSystem. Ви також можете вибрати шрифт у док-станції FileSystem, перейти до док-станції «Імпорт» і вибрати Додатково… внизу:

../../_images/using_fonts_advanced_import_settings.webp

Імпорт дока

Перейдіть на вкладку Конфігурації попередньої візуалізації діалогового вікна «Додаткові параметри імпорту», а потім додайте конфігурацію, натиснувши символ «плюс»:

Додавання нової конфігурації попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту»

Додавання нової конфігурації попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту»

Після додавання конфігурації переконайтеся, що її вибрано, клацнувши її назву один раз. Ви також можете перейменувати конфігурацію, двічі клацнувши її.

Є 2 способи додати гліфи для попереднього візуалізації до даної конфігурації. Можна використовувати обидва підходи в сукупності:

Використання тексту з перекладів

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

Після додавання перекладів до налаштувань проекту скористайтеся вкладкою Гліфи з вкладки Переклади, щоб перевірити переклади, двічі клацнувши їх, а потім натисніть Сформувати всі рядки в перекладах і додати гліфи внизу:

Увімкнення попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту» за допомогою гліфів із вкладки «Переклад»

Увімкнення попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту» за допомогою вкладки Гліфи з перекладу

Примітка

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

Використання спеціального тексту

Хоча для цього потрібно вручну вказати текст, який з’являтиметься в грі, це найефективніший підхід для ігор, у яких не передбачено введення тексту користувачем. Цей підхід варто вивчити для мобільних ігор, щоб зменшити розмір файлу розповсюдженої програми.

Щоб використати наявний текст як базову лінію для попереднього відтворення, перейдіть на підвкладку Гліфи з тексту діалогового вікна «Додаткові параметри імпорту», введіть текст у вікні на праворуч, потім натисніть Сформувати текст і додати гліфи внизу діалогового вікна:

Увімкнення попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту», «Гліфи» на вкладці «Текст»

Увімкнення попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту» за допомогою вкладки Гліфи з тексту

Порада

Якщо ваш проект підтримує internationalization, ви можете вставити вміст файлів CSV або PO у вікно вище, щоб швидко відтворити всі можливі символи, які можуть відтворюватися під час гри (за винятком наданих користувачем або неперекладних). рядки).

Увімкнувши набори символів

Другий спосіб вимагає менше конфігурації та оновлень, якщо текст вашої гри змінюється, і він більше підходить для ігор із великим навантаженням на текст або ігор для кількох гравців із чатом. З іншого боку, це може спричинити попередню візуалізацію гліфів, які ніколи не з’являються в грі, що менш ефективно з точки зору розміру файлу.

Щоб використати існуючий текст як базову лінію для попереднього відтворення, перейдіть на підвкладку Гліфи з карти символів діалогового вікна «Додаткові параметри імпорту», а потім двічі клацніть набори символів, які потрібно ввімкнути, праворуч:

Увімкнення попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту», «Гліфи» на вкладці «Карта символів»

Увімкнення попереднього відтворення в діалоговому вікні «Додаткові параметри імпорту» за допомогою вкладки Гліфи з карти символів

Щоб забезпечити повну попередню візуалізацію, набори символів, які потрібно ввімкнути, залежать від того, які мови підтримуються у вашій грі. Для англійської мови потрібно ввімкнути лише Basic Latin. Увімкнення Latin-1 Supplement також дозволяє повністю охопити багато інших мов, наприклад французьку, німецьку та іспанську. Для російської мови потрібно ввімкнути кирилицю тощо.

Властивості шрифтів проекту за замовчуванням

У розділі GUI > Theme розширених налаштувань проекту ви можете вибрати спосіб відображення шрифту за замовчуванням:

  • Згладжування шрифту за замовчуванням: Керує методом antialiasing, що використовується для шрифту проекту за замовчуванням.

  • Підказка шрифту за замовчуванням: Керує методом hinting, що використовується для шрифту проекту за замовчуванням.

  • Субпіксельне розташування шрифту за замовчуванням: Керує методом subpixel positioning для стандартного шрифту проекту.

  • Шрифт за замовчуванням, багатоканальне поле відстані зі знаком: Якщо true, стандартний шрифт проекту використовує MSDF font rendering замість традиційної растеризації.

  • Шрифт за замовчуванням генерує Mipmaps: Якщо true, увімкне mipmap створення та використання шрифту проекту за замовчуванням.

Примітка

Ці налаштування проекту тільки впливають на шрифт проекту за замовчуванням (той, який жорстко закодовано у двійковому коді двигуна).

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