Есть ли способ уменьшить размер шрифтов .ttf? то есть, если мы хотим удалить некоторые глипы, которые мы не используем.
Как уменьшить размер шрифтов .ttf?
Ответы (7)
С помощью веб-шрифтов Google вы можете ограничить набор символов, например:
//fonts.googleapis.com/css?family=FontName&text=Lorem%20Ipsum
Это было бы особенно полезно, если бы у Google были иконочные шрифты, такие как Font Awesome.
генератор веб-шрифтов FontSquirrel позволяет очень легко уменьшить размер шрифта.
- Загрузите свой шрифт
- Выберите Эксперт...
- Выберите, какие глифы включить
- Нажмите Загрузить комплект.
Мне удалось уменьшить шрифт размером 263 КБ до 34 КБ.
Вы можете использовать fontforge, чтобы уменьшить размер файла
Это объясняется в http://www.cnx-software.com/2010/02/19/reduction-truetype-font-file-size-for-embedded-systems/
Я сделал следующее, чтобы удалить все кириллические глифы (буквы) из шрифта, тем самым уменьшив размер файла вдвое, так как мне нужны были только латинские буквы.
- получить FontForge (https://fontforge.github.io/en-US/)
- запустите FontForge и откройте файл шрифта ttf
- перейдите в «Правка» -> «Выбрать» -> «Выбрать по сценарию»
- во всплывающем окне выбора выберите кириллицу из выпадающего меню. Как вы могли догадаться, это будет означать только буквы кириллицы.
- перейдите в раздел «Кодировка» -> «Отсоединить и удалить глифы», подтвердите вопрос. Видите, как исчезают буквы кириллицы?
- перейдите в Encoding -> Compact, чтобы получить лучший обзор оставшихся букв, что упрощает выбор большего количества кандидатов на удаление. (Но вручную удалять/удалять их я не рискнул.)
- перейдите в File -> Generate Fonts и не забудьте выбрать ttf в качестве выходного формата.
Учтите, что я не профи в этом. Но мне нужно было быстрое решение.
Здесь вы можете прочитать больше по этой теме: http://wiki.unity3d.com/index.php?title=Create_a_new_TrueType_font_using_a_subset_of_characters_from_an_existing_TrueType_font
Я использовал fontmin для удаления глифа из шрифтов ttf.
Ему удалось уменьшить размер шрифта Noto Sans (вес=средний) с 20 МБ до менее чем 10 МБ, но при этом покрыть распространенные китайские/японские иероглифы.
Какое приложение для этого? Большинство шрифтов относительно легкие. TTF хранят векторные данные вместо растровых данных, поэтому для описания формы каждого глифа требуется относительно немного байтов. Даже очень загруженные шрифты могут быть меньше 100 КБ. Многие современные шрифты поставляются с хинтингом ClearType, но даже это увеличивает размер файла очень незначительно.
Если вы действительно хотите удалить определенные глифы из шрифта, вам понадобится инструмент для редактирования шрифта (у Macromedia был такой инструмент под названием Fontographer, который теперь принадлежит FontLab). Но вам, вероятно, лучше просто выбрать более светлый шрифт. Например, OCR A Std
имеет размер всего 30 КБ и включает подсказку ClearType, а также все символы US ASCII. Старайтесь избегать шрифтов Unicode, так как для полной поддержки Unicode требуется множество глифов. Но большинство шрифтов не обеспечивают полной поддержки Unicode.
Наконец, если вы решите изменить шрифт, убедитесь, что вы назвали его по-другому. Конфликт имен может привести к очень неприятным сюрпризам для пользователей.
Вы можете использовать fonttools для удаления ненужных глифов из шрифта.
pip install fonttools
pyftsubset myFont.ttf --output-file=mySmallerFont.ttf --unicodes=U+0020-007E
mySmallerFont.ttf будет содержать только символы Юникода в диапазоне от U+0020 до U+007E (базовая латиница).
Полная документация доступна здесь.
Список символов Юникода можно найти в Википедии.