Difference between revisions of "Fontconfig/ru"

From Gentoo Wiki
Jump to:navigation Jump to:search
Line 172: Line 172:
 
=== Включение Infinality ===
 
=== Включение Infinality ===
  
Включите USE-флаг 'infinality' либо вручную отредактировав файл {{Path|make.conf}}, либо с помощью утилиты {{c|[[euse]]}}.
+
Включите USE-флаг 'infinality' либо вручную отредактировав файл {{Path|make.conf}}, либо с помощью утилиты {{c|[[euse/ru|euse]]}}.
  
 
{{RootCmd|euse -E infinality}}
 
{{RootCmd|euse -E infinality}}

Revision as of 08:54, 26 February 2017

Resources

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

Установка

When fontconfig is needed, it will almost certainly be installed already. If not, make sure to set up the graphical subsystem (i.e., X or Wayland) and desktop environment properly.

USE-флаги

fontconfig не содержит много USE-флагов.

USE flags for media-libs/fontconfig A library for configuring and customizing font access

doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
nls Add Native Language Support (using gettext - GNU locale utilities)
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

Конфигурация

Заметка
Изменения в файлах fontconfig отобразятся только в тех приложениях, которые были запущены после изменений!

Общие сведения

Чтобы сгенерировать свою внутреннюю конфигурацию fontconfig использует XML-файлы в каталоге /etc/fonts/. По умолчанию она парсит /etc/fonts/fonts.conf (пользователю не следует самостоятельно вносить изменения в этот файл!), который хранит некоторые разумные значения, а также зачастую содержит код для парсинга файлов из /etc/fonts/conf.d/. Кроме этого, есть каталог /etc/fonts/conf.avail/, в котором находятся всевозможные конфигурационные файлы, каждый из которых покрывает тот или иной аспект fontconfig. Можно создавать символьные ссылки на необходимые файлы в /etc/fonts/conf.d/. Порядок выполнения зависит от имён файлов; именно поэтому каждое имя начинается с двузначного числа, первая цифра которого (разряд десятков) указывает, на что влияет файл (иначе говоря, класс конфигурационного файла).

Специфика Gentoo

Gentoo предоставляет модуль eselect (eselect fontconfig), который в точности осуществляет описанное общим способом — управляет символьными ссылками в /etc/fonts/conf.avail/, добавляя или удаляя их из каталога /etc/fonts/conf.d/. По понятным причинам изменение конфигурации для всей системы требует соответствующих прав доступа.

Следующие подразделы поясняют работу с модулем eselect fontconfig.

Список доступных файлов

Команда list отображает доступные файлы fontconfig и помечает активные звёздочкой (*).

root #eselect fontconfig list
Available fontconfig .conf files (* is enabled):
  [1]   10-autohint.conf *
  [2]   10-no-sub-pixel.conf
  [3]   10-sub-pixel-bgr.conf
  [4]   10-sub-pixel-rgb.conf
  [5]   10-sub-pixel-vbgr.conf
  [6]   10-sub-pixel-vrgb.conf
  [7]   10-unhinted.conf
  [8]   11-lcdfilter-default.conf
  [9]   11-lcdfilter-legacy.conf
  ...
Предупреждение
Содержимое fonts.avail в разных системах отличается, поэтому вывод будет отличаться. Никогда не используйте не глядя номера из списков, приведённых, например, в блогах или wiki-статьях.

Активация файлов

Файлы могут быть активированы по имени или по номеру в скобках. Следующие две команды выполняют одно и то же действие:

root #eselect fontconfig enable 10-sub-pixel-rgb.conf
root #eselect fontconfig enable 4

Деактивация файлов

Файлы могут быть деактивированы аналогичным образом:

root #eselect fontconfig disable 10-sub-pixel-rgb.conf
root #eselect fontconfig disable 4

Пользовательская конфигурация для всей системы

Чтобы создать пользовательский файл fontconfig, влияющий на всю систему, активируйте 51-local.conf и создайте /etc/fonts/local.conf (это XML-файл).

ФАЙЛ /etc/fonts/local.confПример файла, устанавливающего желаемый порядок резервных шрифтов для sans-serif
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Ubuntu</family>
      <family>TakaoPGothic</family>
      <family>Droid Sans</family>
    </prefer>
    <default><family>DejaVu Sans</family></default>
  </alias>
</fontconfig>

To be clear, this says that when it comes to sans-serif fonts, we prefer using Ubuntu, TakaoPGothic, and Droid Sans fonts (in that order) over DejaVu Sans (which can be used as a default choice only when necessary). Obviously, different choices can be made here.

Конфигурация для каждого пользователя отдельно

Чтобы создать файлы fontconfig для каждого пользователя, активируйте 50-user.conf (может быть активирован по умолчанию) и сделайте так, чтобы пользователи использовали ~/config/fontconfig/fonts.conf. Этот файл имеет тот же формат XML, что и local.conf.

Заметка
Это один из способов, благодаря которому окружение рабочего стола может влиять на отображение шрифтов. Возможно, имеет смысл выключить эту настройку, чтобы убедиться, что при настройке отображаются только действительно общесистемные настройки. Выключение этой настройки также дает более универсальное отображение шрифтов для всех пользователей.
Заметка
Ранее используемый ~/.fonts.conf теперь устарел в пользу месторасположения, указанного в переменной $XDG_CONFIG_HOME. По умолчанию переменная указывает на ~/.config.

Проверка конфигурации

Проверьте замену шрифта по умолчанию, например, для Arial:

user $fc-match Arial

Сглаживание, хинтинг и субпиксельное отображение

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

Параметр Описание
Сглаживание по умолчанию включено, делает шрифты менее угловатыми.
Хинтинг попытка справиться с малым количеством пикселей на единицу площади текущих дисплеев. Корректный хинтинг делает символы более чёткими, но, так как метрики шрифта не меняются (и, собственно, не должны меняться), влияет на то, как отображаемый текст выглядит в целом.
Субпиксельное отображение использует тот факт, что жидкокристаллическая матрица имеет три основных цвета, чтобы фактически утроить разрешение шрифта, но может заставить символы быть не совсем чёрными. Чтобы не допустить этого, следует использовать субпиксельное отображение совместно с lcdfilter (доступно в свежих версиях fontconfig), однако это может слишком сильно размыть шрифт. Наконец, это зависит от личных предпочтений пользователя.

Форсирование хинтинга

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

  1. Активируйте /etc/fonts/local.conf
  2. Отредактируйте файл local.conf, включив полный хинтинг по умолчанию

Этот фрагмент файла local.conf включает полный хинтинг:

ФАЙЛ /etc/fonts/local.confУстановка полного хинтинга
<match target="font">
  <edit mode="assign" name="hintstyle">
    <const>hintfull</const>
  </edit>
</match>
Заметка
Большая часть шрифтов лучше выглядит с полным хинтингом, некоторым требуется легкий хинтинг или, реже, другие настройки хинтинга. По тем или иным причинам, некоторые шрифты всегда выглядят некрасиво.

Использование субпиксельного отображения

Важно определить субпиксельный формат матрицы жидкокристаллического дисплея. Обычно это RGB (10-sub-pixel-rgb.conf), однако для того, чтобы точно его установить, нужно либо обратиться к спецификации дисплея, либо воспользоваться этим тестом субпиксельного формата.

После того, как субпиксельный формат определен, активируйте соответствующий файл 10-sub-pixel-<matrix type>.conf.

root #eselect fontconfig enable 10-sub-pixel-rgb.conf

Для субпиксельного отображения настоятельно рекомендуется использовать lcdfilter, если он доступен. Он доступен в различных вариантах, однако 11-lcdfilter-default.conf, использующийся по умолчанию, должен подойти для всех наиболее распространенных шрифтов.

root #eselect fontconfig enable 11-lcdfilter-default.conf
Предупреждение
The bindist USE flag in media-libs/freetype disables sub-pixel rendering altogether due to potential patenting issues. In order to use sub-pixel rendering, the USE flag must be disabled (i.e., -bindist) for this package.

О autohinter

Autohinter пытается осуществлять автоматический хинтинг, игнорируя существующую информацию о хинтинге. До недавнего времени он использовался по умолчанию, поскольку TrueType2 был защищен патентами. Однако срок патентов истек, и сейчас нет никаких причин для его использования. С технической точки зрения, он работает лучше для шрифтов с неправильной или отсутствующей информацией о хинтинге, однако для шрифтов с хорошей информацией о хинтинге он весьма неоптимален. Системные шрифты, как правило, относятся ко второй категории, поэтому autohinter использовать не следует.

Предупреждение
Autohinter не совместим с субпиксельным отображением, поэтому не используйте их вместе!

Infinality

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

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

Включение Infinality

Включите USE-флаг 'infinality' либо вручную отредактировав файл make.conf, либо с помощью утилиты euse.

root #euse -E infinality

Затем пересоберите программы, на которые влияет этот USE-флаг.

root #emerge --ask -uvDU @world

Активируйте 52-infinality.conf, если сообщения, отображаемые после пересборки, не требуют этого не делать.

root #eselect fontconfig enable 52-infinality.conf

Настройка Infinality

Infinality можно настроить различными способами, включая индивидуальные конфигурации, однако наиболее простым способом является использование готовых профилей, включенных в пакет media-libs/fontconfig-infinality. Этот пакет, вместе с модулями eselect, должен устанавливаться как зависимость USE-флага infinality.

Быстрая и приемлимая конфигурация

root #eselect infinality set infinality
root #eselect lcdfilter set infinality
Заметка
Как и в других случаях, изменения fontconfig влияют только на приложения, запущенные после внесения изменений.

Также рекомендуется выключить все настройки fontconfig кроме 52-infinality.conf, так как они вмешиваются в отображение стилей infinality:

root #eselect fontconfig disable <number>

Некоторые настройки fontconfig не влияют на отображение шрифтов, но определяют шрифты по умолчанию для типов шрифтов (таких как Monospace, sans-serif и так далее). Такие настройки (например, конфигурации 62-croscore-*.conf) можно оставить включенными.

Объяснение

Infinality предоставляет переменные окружения FreeType, которые могут использоваться для настройки возможностей, реализуемых патчами infinality, а также файлы fontconfig для использования с этими изменениями. Управление наборами файлов fontconfig на Gentoo осуществляется с помощью eselect infinality, а поведение FreeType настраивается с помощью eselect lcdfilter.

Эти модули eselect работают, как обычно:

  • Выведение списка доступных наборов файлов fontconfig.
root #eselect infinality list
  • Выведение списка доступных наборов переменных FreeType.
root #eselect lcdfilter list
  • Разумеется, оба набора должны находиться в соответствии друг с другом, за исключением ситуации, когда возможны различные соответствия, как в нижеследующем примере.
root #eselect infinality set win7
root #eselect lcdfilter set windows-7-light

Выбор шрифтов

Choosing the right font can be trickier than deciding on the right hinting type. For one reason or another, some fonts will never be perfect — but it's certainly possible to make them look better than, say, the Windows 7 default font configuration.

Here are some recommendations regarding well known fonts in Gentoo:

Font family Pros Cons
Liberation
media-fonts/liberation-fonts
Red Hat's fonts, which are metric-compatible with MS TrueType corefonts, have a decent, modern look. This is the Gentoo Fonts team recommendation for default Latin fonts. Covers about 2,600 code points. Latin, Greek, Cyrillic, and Hebrew only. A few glyphs may have hinting trouble.
Linux Libertine
media-fonts/libertine
Very similar to Liberation, covering about 2,700 code points. Linux Libertine itself is proportional serif only, but the package contains less extensive sans and mono fonts, as well. Can be used as a fallback for some glyphs not in Liberation. Latin, Greek, Cyrillic, and Hebrew only. Sans and mono fonts are limited.
Noto
media-fonts/noto
Google's font family that aims to support all the world's languages (so, well over 60,000 code points). It goes well with Liberation or Droid. Adobe's Source Han Sans fonts are included for CJK. Recommended as a fallback for many glyphs not covered by Liberation. Big download.
DejaVu
media-fonts/dejavu
Many styles and covers a lot of code points (about 6,100 for sans). Exceptionally wide — even condensed is wider than same-height monospace. Overall second to Verdana (an MS font) in width. Sans-serif font is only average.
Droid
media-fonts/droid
Covers a lot of code points and scripts. Very dry, wide yet thin glyphs. Clearly designed with handheld devices and their small screens in mind.
Gentium Plus
media-fonts/sil-gentium
Fairly distinctive; might appeal to people who like narrow fonts. Serif only. As with other SIL fonts, the hinting is questionable.
Ubuntu
media-fonts/ubuntu-font-family
Used in Ubuntu (obviously). A distinctive font family with a style which might not appeal to everyone. Overall looks good and covers a fair number of code points. Only the sans-serif font is truly polished; narrow and monospaced versions are unfinished. No known serif font that would accompany it well.
URW
media-fonts/urw-fonts
Metric compatible with popular Adobe fonts (among others?). Seem to require slight hinting.
MS TrueType corefonts
media-fonts/corefonts
Includes most fonts used in documents and on the web. MS does not distribute them nowadays, so the available fonts are from many years ago and do not reflect their current state (not to mention the state of the art). Obviously, lacks fonts introduced more recently. Require full hinting.
Unifont
media-fonts/unifont
Covers a lot of code points. In addition to being ugly as sin, it also fails some basic requirements to be considered a typeface. Is it sans-serif? Is it serif? Please never use this.

Внешние ресурсы