Padding output with newlines

TL; DR: Для понимания fontconfig необходимо понять, почему он был создан и какие проблемы он пытается решить. Это требует глубокого понимания Xorg.

Конфигурация шрифтов на машинах UNIX проходила разные этапы, и fontconfig - это просто одна из возможностей, которые вы можете использовать для использования шрифтов через Xorg. Читать исходный код fontconfig без хорошего понимания источника Xorg, вероятно, очень сложно.Но я считаю, что понимание концепций, лежащих в основе эволюции шрифтов, может оказаться хорошей отправной точкой.

Отказ от ответственности: я много работаю со шрифтами в Linux, но мне никогда не приходилось менять код Xorg, относящийся к шрифтам.

Вики Arch Linux также содержит много информации об этом

Немного истории

Исходные шрифты UNIX были просто растровыми шрифтами. Сегодня их можно найти в / usr / share / fonts / misc , PCF (переносимый скомпилированный формат) сегодня используется практически для всех из них. Это двоичный формат. Были и другие форматы двоичных шрифтов, но я должен признать, что мне никогда не приходилось использовать какой-либо другой формат, кроме PCF, для двоичных шрифтов. Используя xfontsel , вы можете настроить строку Xorg для определения точек, интервала, размера пикселя, веса терминала (жирный, наклонный), кодировки и прочего шрифта.

Растровые шрифты имеют разные файлы для разных размеров шрифта в пикселях. Растровые шрифты уже представляют концепцию семейства шрифтов.

Postscript (и в некоторой степени TeX) создал шрифты Type 1, которые являются векторными шрифтами. Они находятся в / usr / share / fonts / Type1 . Векторные шрифты имеют несколько значений конфигурации, например сглаживание, жирный шрифт, dpi или размер (на этот раз не обязательно по точкам).

Векторные шрифты масштабируются и не требуют нескольких файлов.

Xorg использовал как растровые, так и шрифты Type1. И он создал XFT (ну, X FreeType - это интерфейс к FreeType, который является библиотекой GPL / BSD, имитирующей и расширяющей Type1). XFT позволяет использовать не только шрифты Type1 и FreeType, но и другие форматы: OTF от Adobe и Microsoft, TTF от Apple. Более того, XFT позволяет масштабировать старые растровые шрифты, чтобы они выглядели как шрифты Type1.

Несколько других атрибутов, например хинтинг или стиль хинта , были добавлены для определения атрибутов этих шрифтов.

Все, что можно найти в подпапках / usr / share / fonts . А параметры XFT можно настроить в ваших Xresources .

FontConfig

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

Растровые шрифты имеют свои проблемы:

  • несколько разных файлов для одного шрифта;
  • ограниченные размеры точками и размерами пикселей.

Но то же самое относится и к векторным шрифтам:

  • масштабирование требует времени, особенно если используются несколько параметров
  • не все атрибуты шрифта одинаково влияют на разные типы шрифтов

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

fc-query сообщает вам, что fontconfig понимает в файле шрифта. В частности, для каких атрибутов предназначен файл (например, для растровых шрифтов) и какие атрибуты можно использовать (для векторных шрифтов).

fc-list - это способ сообщить вам, какие шрифты можно найти в каталогах, которые просматривает fontconfig, и, следовательно, они могут использоваться приложениями. Наконец, fc-cache выполняет индексацию этих шрифтов, чтобы их было легче найти и масштабировать (среди прочего) для использования в приложениях.

С другой стороны, наиболее интересной является разделяемая библиотека fontocnfig. Он использует файлы конфигурации ( / etc / fonts , ~ / .config / fontconfig ) и кэш шрифтов, чтобы передавать подготовленные шрифты непосредственно приложениям, которые связаны с ним. Поскольку большинство приложений использовали XFT (и, следовательно, FreeType), а библиотека FreeType использует вызовы из библиотеки fontconfig, использование этих шрифтов стало повсеместным.

Но обратите внимание, что вы можете скомпилировать программу, которая будет запрашивать у Xorg растровый шрифт в старом стиле (например, - * - terminus-medium-r-normal - * - * - 200 - * - * - c - * - * - u ), и вызов не будет проходить через общую библиотеку fontconfig.

1
09.08.2016, 21:45
0 ответов

Теги

Похожие вопросы