Оптимізація кількості гліфів шрифту для використання у web
Необхідні пакети apt install fontforge и pip install fonttools.
Визначимося з необхідними гліфами, потрібна латиниця, кирилиця, спецсимволи, включаючи деякі грецькі символи (ΣΩαβγμ), аналоги грецького, схожі в накресленні, але такі, що мають інші коди (∆∑µ), і ще трохи, які можуть десь використовуватися в тексті або як елементи, що замінюють графіку (♪♫♬).
Чому декілька варіантів гліфів з різними кодами?
Тому що символ µ (mu U+00b5) та грецька літера μ (mu U+03bc) у розширених шрифтах можуть мати свій гліф з різним накресленням, або навпаки, загальний гліф, де схожі символи з начерку посилаються на один гліф.
Або, наприклад, грецька Σ (Sigma U+03a3) не те саме, що символ ∑ (summation U+2211).
Але можливо, у вас на екрані ці символи виглядають однаково.
Варіант з підготовленими наборами символів у unicode
nano make_menu.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | |
nano ff-conv.sh
На цьому сайті використовується латиниця, але не з усіма символами, наприклад діакритичними, а ще кирилиця, і деякі спеціальні символи.
Символьне представлення юнікод-символів
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
Генеруємо шрифти
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Оригінальний шрифт PTSansNarrowRegular_original.ttf 230K
Деякі шрифти можуть використовувати один гліф для певних комбінацій символів,
для латиниці це часто комбінації fi fl ff ft.
Найчастіше веб-сервіси генерації шрифтів видаляють ці гліфи.
Якщо у вас така проблема, її можна вирішити просто додавши CSS правило
letter-spacing:-0.1pt;
font-glyph-fl-fi-ft.png
font-fl-fi-ft-errore.png
Варіант із вибором кодів вручну
Відкриваємо .ttf у fontforge і починаємо вибирати та копіювати потрібні числові коди гліфів у файл.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
pyftsubset PTSansNarrow-Regular.ttf --output-file=PTSans-sub.ttf --text-file=glyph-symbols
Універсальний css стиль для шрифту та fallback з коригуванням розмірів
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
І ще трошки
Підраховуємо кількість гліфів в оригінальному файлі та зробленому самостійно.
1 2 3 4 5 6 7 8 9 10 11 | |
Для svg це можна зробити наприклад так:
cat PTSansNarrow.svg | grep "glyph-name" | wc -l
723
cat PTSansNarrow_subset.svg | grep "glyph-name" | wc -l
292
Слід зазначити, що гліфів в отриманих шрифтах може бути менше, ніж символів для вибірки, тому що в конкретному шрифті може бути не гліфів для деяких символів, скрипт містить розширений набір символів (кодів) для вибірки з різних шрифтів, але головне, що він не містить не потрібних символів. Проте, все ж таки правильніше буде відкривати конкретний шрифт у редакторі і вибирати потрібні з наявних гліфів.
Якщо планується використовувати шрифт тільки для тексту, який іноді навіть не передбачає додаткових символів до alphanumeric, крім крапки та коми, то кількість гліфів можна скоротити ще більше.
1 2 3 4 5 6 7 8 9 | |