Русскоязычное Linux-сообщество's Journal
 
[Most Recent Entries] [Calendar View]

Thursday, February 21st, 2019

    Time Event
    12:03p
    Добавление 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 тоже не хочется.

    Всем заранее спасибо.

    << Previous Day 2019/02/21
    [Calendar]
    Next Day >>

Русскоязычное Linux-сообщество   About LJ.Rossia.org