LINUX.ORG.RU

Как устроены существующие системы шрифтов?


3

1

Есть разные Qt, GTK, gnome, KDE и т.п. В настройках gnome-терминала шрифты называются красивыми именами, как в виндовозе. А ещё я видел названия шрифтов типа "-schumacher-clean-medium-r-normal--12-120-75-75-c-60-iso8859-9". А ещё я видел, что в одной и той же софтине под одним и тем же юзером, типа gnome-terminal в настройках профиля ничего не меняется (название шрифта, размер 12), но со сменой WM меняется вид шрифта.

Кто все эти люди? Как во всём этом так разобраться, чтобы я ламерюга понял? Объясните на пальцах пожалуйста, а?

ААААА, ещё одна тема!!111

Короче, гляди сюды, я тоже ламерюга, но что успел выяснить за годы использования иксов.

По поводу работы со шрефтами:

1) Есть чиста иксовые механизмы, "-schumacher-clean-medium-r-normal--12-120-75-75-c-60-iso8859-9" - именно иксовое имя, они не умееют сглаживание и расчитаны на определенный DPI. Единственный плюс - возможно использование server-side.

2) Есть Xft (freetype), который умеет сглаживание и прочие плюшки

По поводу конфигурации:

- с иксовыми шг всё понятно, там фиксированные размеры, фиксированный DPI, сгаживания нет, так что всё просто обычно рисуется в конфиге в том виде, как шумахер выше

- c Xft сложнее:

1) Большинство тулкитов работает с xft напрямую (qt, tk с версии 8.5 итп) и соответственно при запуске зачитывает настройки через fontconfig(/etc/fonts/fonts.conf и дальше по инклюдам из него), а GTK (по крайней мере 2й) - через Cairo, который плевать хотел на fontconfig, а смотрит на базу данных иксовых ресурсов (пользовательский обычно зачитывается из ~/.Xresources автоматом). Потому приходится дублировать настройки.

2) К счастью, freedesktop.org сделали спецификацию XSETTINGS, которая позволяет иксовым приложениям дергать текущую конфигурацию из иксов, более того менять её на лету. Из минусов - необходимость в постоянно висящем демоне, также я не уверен, что все Xft программы поддерживают Xsettings(поправьте если это не так).

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Вообще, Xft изначально были сервер-сайд, но после появления freetype Xft стал обёрткой над ним. fontconfig используется для вывода freetype-шрифтов.

Gtk+ вообще использует Pango (более высокоуровневую обёртку, умеющую интернационализуцию гораздо лучше, включая всякие извращения вроде вертикального текста), Cairo это только бэкэнд рисования («холст») для него, есть и другие варианты, но в Gtk+ дефолтно pangocairo. Ну и в GTK+ есть собственный демон настроек, который оверрайдит fonts.conf при необходимости.

Если коротко, то fonts.conf настраивает freetype, через который работает вообще всё, а XResources - только Xft, тулкиты на него имеют полное право забить (т.к. юзают fontconfig/freetype напрямую, без Xft) + в DE есть settings-daemon для тулкита, который оверрайдит всё.

Ну а нативные иксовые шрифты не нужны.

anonymous
()
Ответ на: комментарий от lazyklimm

А почему одно и то же gnome-приложение под одним и тем же юзером и с одними и теми же настройками в своём окне настроек (в частности одно и то же имя шрифта), но под разными WM показало этот шрифт по-разному? Между какими конкретно двумя файликами есть разница?

kiverattes ★☆
() автор топика
Последнее исправление: kiverattes (всего исправлений: 1)
Ответ на: комментарий от lazyklimm

А что значит сервер-сайт? Иксы - это же сервер и всё что там рисуется происходит, соответственно, «на сервере». Или имеется ввиду, что работа по вычислению пикселей при отрисовке шрифта может выполняться в клиенте, а на X-сервер идёт тупо массив пикселей, который тот показывает не думая шрифты там или фоточка?

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

А почему одно и то же gnome-приложение под одним и тем же юзером и с одними и теми же настройками в своём окне настроек (в частности одно и то же имя шрифта), но под разными WM показало этот шрифт по-разному?

скорее всего потому что один WM запускает settings-daemon, а другой нет

Между какими конкретно двумя файликами есть разница?

XSETTINGS напрямую файлы не использует

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

То есть этих settings-daemon-ов бывает много разных от разных ателье, просто они все работают с протоколом XSETTINGS, через который все X-приложения уже получают настройки? То есть, приложение стучится в иксы, иксы стучатся в settings-daemon (а их много разных), а тот отправляет иксам настройки, которые попадают в приложение? И приложение типа может стучаться в иксы за настройками каждый раз, при использовании этой настройки, поэтому если в очередной раз settings-daemon передал иксам новые настройки, то в приложении куяк и шрифты волшебно поменялись, да? Как-то так?

kiverattes ★☆
() автор топика
Ответ на: комментарий от lazyklimm

Я ж говорю, что я не сильно умный)

Смотри-ка, вот чё есть:

/usr/lib/gnome-settings-daemon/gnome-settings-daemon

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

Скорее всего под разными WM у тебя разные настройки сглаживания шрифтов и DPI, поэтому один и тот же шрифт одного и того же размера (в условных единицах) получается разного размера (в пикселах) и разной формы.

kvap
()
Ответ на: комментарий от lazyklimm

Блин, заработало! Я щас запустил руками под icewm этот

/usr/lib/gnome-settings-daemon/gnome-settings-daemon
и все шрифты во всех терминалах и броузерах на лету стали такими же, как в unity! Офигеть! Как бы теперь его автоматически запускать при старте icewm, пойду погуглю.

kiverattes ★☆
() автор топика
Ответ на: комментарий от kvap

Ну типа я чую, что разница-то какая-то есть. И даже что на тему настроек шрифтов. Было интересно понять откуда они берутся. Берутся они через Xsettings из демона /usr/lib/gnome-settings-daemon/gnome-settings-daemon , который сам наверное загружается из .gconf - файлов в домашнем каталоге.

kiverattes ★☆
() автор топика
Ответ на: комментарий от lazyklimm

Волшебный демон оказался, заработало даже CTRL+L с убунтовой заставкой на заднем плане и переключенеи раскладок, хоть это переключение и прописано в /etc/X11/xorg.conf.d/01-keyboard.conf и в логах иксов этот файл успешно прочитывается. Почему без settings-daemon раскладка не работала тогда?

Насчёт CTRL+L: разве в XSettings была какая-то настройка, которая определила вызываемое приложение для сочетания клавиш CTR+L? А на CTRL+L кто реагирует, сами иксы? Есть же приложение xbindkeys для этого, а сейчас я не вижу, чтобы оно было запущено...

kiverattes ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.