LINUX.ORG.RU

Как нынче правильно добавлять в систему core X11 fonts?

 , , , ,


1

1

Я по-прежнему использую core X11 fonts.

В свете того, что из Debian выпилили xfs, а пересобрать libxft2 с нужными ключами и опакетить оба компонента под Debian 9 я так и не собрался (готов дать денег тому, кто сделает это за меня либо сэкономит моё время, проведя через адъ утилит dh_* и бюрократию WNPP), фрагмент моего xorg.conf сейчас выглядит так:

Section "Files"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "unix/:7100"
	FontPath     "/usr/share/fonts/X11/misc"
	FontPath     "/usr/share/fonts/X11/cyrillic"
	FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/Type1"
	FontPath     "/usr/share/fonts/X11/100dpi"
	FontPath     "/usr/share/fonts/X11/75dpi"
	FontPath     "built-ins"
	FontPath	"/usr/share/fonts/opentype/cantarell"
	FontPath	"/usr/share/fonts/opentype/fonts-prociono"
	FontPath	"/usr/share/fonts/opentype/freefont"
	FontPath	"/usr/share/fonts/opentype/linux-libertine"
	FontPath	"/usr/share/fonts/opentype/radisnoir"
	FontPath	"/usr/share/fonts/opentype/scheherazade"
	FontPath	"/usr/share/fonts/opentype/stix"
	FontPath	"/usr/share/fonts/opentype/stix-word"
	FontPath	"/usr/share/fonts/opentype/yozvox-yozfont"
	FontPath	"/usr/share/fonts/sortsmill"
	FontPath	"/usr/share/fonts/truetype"
	FontPath	"/usr/share/fonts/truetype/adf"
	FontPath	"/usr/share/fonts/truetype/aenigma"
	FontPath	"/usr/share/fonts/truetype/alee"
	FontPath	"/usr/share/fonts/truetype/ancient-scripts"
	FontPath	"/usr/share/fonts/truetype/anonymous-pro"
	FontPath	"/usr/share/fonts/truetype/arundina"
	FontPath	"/usr/share/fonts/truetype/baekmuk"
	FontPath	"/usr/share/fonts/truetype/dejavu"
	FontPath	"/usr/share/fonts/truetype/denemo"
	FontPath	"/usr/share/fonts/truetype/droid"
	FontPath	"/usr/share/fonts/truetype/engadget"
	FontPath	"/usr/share/fonts/truetype/femkeklaver"
	FontPath	"/usr/share/fonts/truetype/fifthhorseman"
	FontPath	"/usr/share/fonts/truetype/fonts-arabeyes"
	FontPath	"/usr/share/fonts/truetype/fonts-atarismall"
	FontPath	"/usr/share/fonts/truetype/fonts-georgewilliams"
	FontPath	"/usr/share/fonts/truetype/fonts-prociono"
	FontPath	"/usr/share/fonts/truetype/fonts-tiresias"
	FontPath	"/usr/share/fonts/truetype/freefarsi"
	FontPath	"/usr/share/fonts/truetype/freefont"
	FontPath	"/usr/share/fonts/truetype/gentium"
	FontPath	"/usr/share/fonts/truetype/gentium-basic"
	FontPath	"/usr/share/fonts/truetype/hanazono"
	FontPath	"/usr/share/fonts/truetype/isabella"
	FontPath	"/usr/share/fonts/truetype/jsmath"
	FontPath	"/usr/share/fonts/truetype/junicode"
	FontPath	"/usr/share/fonts/truetype/kacst"
	FontPath	"/usr/share/fonts/truetype/kacst-one"
	FontPath	"/usr/share/fonts/truetype/lato"
	FontPath	"/usr/share/fonts/truetype/liberation"
	FontPath	"/usr/share/fonts/truetype/lyx"
	FontPath	"/usr/share/fonts/truetype/mikachan"
	FontPath	"/usr/share/fonts/truetype/mph-2b-damase"
	FontPath	"/usr/share/fonts/truetype/mplus"
	FontPath	"/usr/share/fonts/truetype/msttcorefonts"
	FontPath	"/usr/share/fonts/truetype/noto"
	FontPath	"/usr/share/fonts/truetype/openoffice"
	FontPath	"/usr/share/fonts/truetype/sjfonts"
	FontPath	"/usr/share/fonts/truetype/tlwg"
	FontPath	"/usr/share/fonts/truetype/tomsontalks"
	FontPath	"/usr/share/fonts/truetype/ttf-bitstream-vera"
	FontPath	"/usr/share/fonts/truetype/ttf-dejavu"
	FontPath	"/usr/share/fonts/truetype/ttf-essays"
	FontPath	"/usr/share/fonts/truetype/ttf-liberation"
	FontPath	"/usr/share/fonts/truetype/ttf-marvosym"
	FontPath	"/usr/share/fonts/truetype/ttf-staypuft"
	FontPath	"/usr/share/fonts/truetype/ttf-summersby"
	FontPath	"/usr/share/fonts/truetype/ttf-tagbanwa"
	FontPath	"/usr/share/fonts/truetype/ttf-xfree86-nonfree"
	FontPath	"/usr/share/fonts/truetype/ttf-xfree86-nonfree-syriac"
	FontPath	"/usr/share/fonts/truetype/unifont"
	FontPath	"/usr/share/fonts/truetype/wqy"
	FontPath	"/usr/share/fonts/truetype/yanone-kaffeesatz"
EndSection

В каждом из каталогов из списка – сгенерённые fonts.dir и fonts.scale.

Хотя, если бы в системе был xfs, то весь этот зоопарк попал бы в /etc/X11/fs/config, но от этого не перестал бы быть зоопарком.

И вот хочется этот процесс автоматизировать:

  • автоматически регистрировать/дерегистрировать в xorg.conf и/или /etc/X11/fs/config каталоги при установке и удалении шрифтов;
  • автоматически создавать fonts.dir и fonts.scale при установке/обновлении пакетов и удалять при удалении.

Раньше (Debian 6 и ранее) всем этим занимался _Defom_a (1, 2), но метаинформацию ему предоставляли сопровождающие пакетов со шрифтами (чего сейчас они делать, вестимо, не будут).

Сейчас я посмотрел на соотв. триггеры в Debian 9, но состояние там малоутешительное: в /etc/X11/fonts/* можно создать свои *.dir/*.scale/*.alias (через dh_installxfonts), но, во-первых, это должен сделать сам сопровождающий пакета, и, во-вторых, это работает только для шрифтов, устанавливаемых в /usr/share/fonts/X11/:

# PROMISE: DH NOOP WITHOUT tmp(usr/share/fonts/X11)

foreach my $package (@{$dh{DOPACKAGES}}) {
        my $tmp=tmpdir($package);

        # Find all font directories in the package build directory.
        my @fontdirs;
        foreach my $parentdir ("$tmp/usr/share/fonts/X11/") {
                opendir(DIR, $parentdir) || next;
                @fontdirs = grep { -d "$parentdir/$_" && !/^\./ } (readdir DIR);
                closedir DIR;
        }

        # ...
}

Можно ли решить проблему через дебиановские триггеры? Может, я таки до конца не разобрался?

Или какие альтернативы посоветуете?

Дебановских машин несколько (рабочая, домашняя, несколько мобильных), поэтому подход «напиши на bash цикл и запускай его каждый раз после обновления пакетов» не нравится.

Запускать виртуальную машину со старым Debian Squeeze и xfs и забирать шрифты с tcp://squeeze-vm:7100 тоже не хочется.

★★★