Alter ego (unix_junkie) wrote in ru_linux,
Alter ego
unix_junkie
ru_linux

Category:

Добавление core X11-шрифтов в FontPath X-сервера в Debian Linux

Товарищи, здравствуйте.

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

В свете того, что из Debian исключили пакет xfs, а пересобрать libxft2 с нужными ключами и опакетить оба компонента под Debian 9 я так и не собрался, фрагмент моего 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"

	#
	# ... ещё 100+ строк аналогичного содержания
	#

	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 и ранее всем этим занимался Defoma ([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 тоже не хочется.

Всем заранее спасибо.
Tags: debian, fonts, x11, xfs
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments