Подтвердить что ты не робот

Почему шрифт не содержит все символы Unicode?

В значительной степени, как говорится в названии. Предоставляя весь формат юникода правильно, что с составными символами и символами, которые влияют на другие символы и лигатуры, действительно сложно, я это понимаю. У нас есть шрифты, которые, как представляется, предназначены для максимальной поддержки символов Unicode (Symbola, Code2001 и др.) И специализированных шрифтов для определенных плоскостей или диапазонов символов (BabelStone Han, другие).

Я не очень разбираюсь в основных технических характеристиках шрифтов. Максимальный размер? Это проблема авторских прав? Существенно ли перерисовывает все ~ 110 000 существующих глифов? Я понимаю проблемы стиля, но почему бы не вернуться к шрифту "по умолчанию", на котором были глифы? Они находятся на unicode.org, перерисовывая их, все будет довольно тяжелой работой, но тогда у вас будет гарантированный запасной шрифт для всего. Если у вас есть права на некоторые ранее существовавшие шрифты, вы можете просто собрать их, и это должно многое помочь. Такой шрифт был бы большой помощью для человечества, и я не вижу хорошей технической причины, почему этого не существует или, по крайней мере, усилия с открытым исходным кодом для его создания, поэтому я предполагаю, что это невидимое для меня причина, почему не может быть сделано.

В чем причина?

4b9b3361

Ответ 1

"Почему ты вообще этого хочешь?" кроме вопросов, с точки зрения программирования есть очень простая причина: спецификация OpenType предоставляет только адресуемое пространство индекса глифа из одного USHORT, поэтому один шрифт может поддерживать только 16-битные идентификаторы глифов, или максимум 65536 глифов.

Текущая версия Unicode, v8 на этот ответ, содержит 120737 назначенных кодовых точек, или почти вдвое больше, чем у современного шрифта. Фактически, с 2001 года Unicode не вписывается в современный шрифт OpenType, с выпуском Unicode 3.1, который увеличил число кодовых точек с 49259 до 94205.

"Так что насчет коллекций шрифтов?" Я слышал, вы спрашиваете. Почему бы не использовать несколько шрифтов и поддерживать все Unicode таким образом? Итак, вы только что описали Adobe Source Pro и Google Noto (которые являются одним и тем же шрифтом).

Что касается того, "насколько это может быть сложно": единый стиль для всех символов в Юникоде из 129 установленных письменных сценариев на этой планете, каждый со своими правилами набора текста? Невероятно сложно. Вы можете подумать, что шрифты - это просто файлы с картинками для букв, и кто-то печатает букву, эта картинка появляется: это не так, как работают шрифты, и не так, как шрифты работали с конца 1980-х годов.

Современные шрифты являются типографским эквивалентом игрового ПЗУ: конечно, он мало используется без аппаратного или программного обеспечения для запуска этого ПЗУ, но все, что действительно имеет значение, находится в ПЗУ. Точно так же современные шрифты содержат всю информацию для набора текста. Не только изображения, они содержат метаданные, метрики, правила позиционирования и замены для произвольных последовательностей, с отдельными наборами правил для каждого написанного сценария, поддерживаемого OpenType, возможными откатами для растровых изображений для рендеринга мелких точек, подсказками по правильной растеризации вектора графика, которая по своей природе не выровнена по какой-либо конкретной пиксельной сетке и многое другое. Современный шрифт - это невероятно сложное приложение, с которым движок шрифтов справляется, чтобы выяснить, как набирать последовательности кодовых точек, и создание (набор) Unicode-охватывающих шрифтов является огромным командным усилием.

Итак: "Почему нет шрифта, который содержит все глифы Unicode?", Потому что это технически невозможно с 2001 года. Мы можем и делаем семейства шрифтов, которые охватывают весь Unicode, но с 129 различными сценариями, каждый со своими собственными Правила набора текста, это большие командные усилия.

А что касается этого:

Такой шрифт очень помог бы человечеству, и я не вижу веских технических причин, почему он не существует, или, по крайней мере, усилий по его созданию с открытым исходным кодом, поэтому я полагаю, что причина этого невидима для меня. не может быть сделано

То, что вы не знали о них, не означает, что они не существуют, с миллионами людей, которые знакомы с ними. Они существуют, они даже с открытым исходным кодом, выйти и поблагодарить людей, которые сделали их =)

Ответ 2

Есть GNU Unifont. Он призван содержать все Unicode, кроме Apple Emoji.