Adventures in Text Rendering: Atlas of Kerning and Glyphs

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

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

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

Візуалізація тексту - вид з висоти 10 000 футів Формування - вид з 9000 футів Растеризація - вид з 5000 футів Прискоріть відтворення тексту за допомогою атласу гліфів Замініть наближення кращими наближеннями Обгортка Додаток: Розглянуті альтернативи

‍‍‍

Візуалізація тексту - вид з висоти 10 000 футів

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

Шрифт — це вся інформація, необхідна для відображення рядка символів із певним дизайном, вагою (жирний) і стилем (як курсив). Разом набір шрифтів із певним дизайном називається гарнітурою або сімейством шрифтів (наприклад, Times New Roman або Comic Sans). Шрифти можуть бути пропорційними — кожен символ займає стільки місця, скільки йому потрібно — або моноширинними — кожен символ займає однакову кількість горизонтального простору, незалежно від ширини самого символу (іноді називається «фіксованою шириною»). Більшість шрифтів, які ви зустрічаєте на своєму комп’ютері чи у веб-браузері, є пропорційними, але в контекстах програмування, таких як редактори коду та термінали, моноширинні шрифти є майже універсальними.

Шрифт містить дві основні категорії даних 1:

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

Якщо два або більше символів поєднуються в один гліф, це називається лігатурою. Традиційні приклади лігатур включають æ і  (лігатура з трьох символів). Користувачі терміналів можуть бути більш знайомі з тими, які поєднують => з ⇒ або ~= з ≃, приклади яких можна знайти в багатьох програмно націлених шрифтах.

Більшість шрифтів представляють гліфи як векторну графіку (наприклад, зображення SVG) – математичні описи ліній, форм і кривих, які визначають контур гліфа. Деякі шрифти є растровими (наприклад, зображення у форматі JPG) — вони представляють гліфи у вигляді піксельної сітки (деякі включені, деякі вимкнені). Контурні шрифти є набагато більш поширеними, оскільки їх можна масштабувати до будь-якого розміру, великого чи малого, без втрати точності чи точності зображення.

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

Форматування: процес отримання рядка тексту - l...

Adventures in Text Rendering: Atlas of Kerning and Glyphs

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

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

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

Візуалізація тексту - вид з висоти 10 000 футів Формування - вид з 9000 футів Растеризація - вид з 5000 футів Прискоріть відтворення тексту за допомогою атласу гліфів Замініть наближення кращими наближеннями Обгортка Додаток: Розглянуті альтернативи

‍‍‍

Візуалізація тексту - вид з висоти 10 000 футів

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

Шрифт — це вся інформація, необхідна для відображення рядка символів із певним дизайном, вагою (жирний) і стилем (як курсив). Разом набір шрифтів із певним дизайном називається гарнітурою або сімейством шрифтів (наприклад, Times New Roman або Comic Sans). Шрифти можуть бути пропорційними — кожен символ займає стільки місця, скільки йому потрібно — або моноширинними — кожен символ займає однакову кількість горизонтального простору, незалежно від ширини самого символу (іноді називається «фіксованою шириною»). Більшість шрифтів, які ви зустрічаєте на своєму комп’ютері чи у веб-браузері, є пропорційними, але в контекстах програмування, таких як редактори коду та термінали, моноширинні шрифти є майже універсальними.

Шрифт містить дві основні категорії даних 1:

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

Якщо два або більше символів поєднуються в один гліф, це називається лігатурою. Традиційні приклади лігатур включають æ і  (лігатура з трьох символів). Користувачі терміналів можуть бути більш знайомі з тими, які поєднують => з ⇒ або ~= з ≃, приклади яких можна знайти в багатьох програмно націлених шрифтах.

Більшість шрифтів представляють гліфи як векторну графіку (наприклад, зображення SVG) – математичні описи ліній, форм і кривих, які визначають контур гліфа. Деякі шрифти є растровими (наприклад, зображення у форматі JPG) — вони представляють гліфи у вигляді піксельної сітки (деякі включені, деякі вимкнені). Контурні шрифти є набагато більш поширеними, оскільки їх можна масштабувати до будь-якого розміру, великого чи малого, без втрати точності чи точності зображення.

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

Форматування: процес отримання рядка тексту - l...

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow