Отклонить все шрифты из каталога, кроме одного с помощью fontconfig

Да, если локаль en _US.utf8 (например ), обе строки кажутся равными:

$ printf "%s\n" "いあ" "あい" "いあ" "あい"
いあ
あい
いあ
あい

$ LC_COLLATE=en_US.utf8 bash -c '
    printf "%s\n" "いあ" "あい" "いあ" "あい" |
    sort | 
    uniq '
いあ

Однако, если язык изменить на ja _JP, все работает правильно:

$ LC_COLLATE=ja_JP.utf8 bash -c '
    printf "%s\n" "いあ" "あい" "いあ" "あい" | 
    sort | 
    uniq '
あい
いあ

Интересно отметить, что (в этом случае )локаль C также работает:

$ LC_COLLATE=C bash -c '
    printf "%s\n" "いあ" "あい" "いあ" "あい" |
    sort |
    uniq '
あい
いあ

Это только показывает, что en _US отсутствует порядок сортировки для некоторых кодовых точек.

1
07.08.2019, 10:29
1 ответ

Добавьте в файл следующий XML-файл ~/.config/fontconfig/fonts.conf, он внесет в черный список все шрифты, специфичные для языка ното:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<selectfont>
    <rejectfont>
        <glob>/usr/share/fonts/truetype/noto/NotoKufi*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoNaskh*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoNastaliq*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif*</glob>
    </rejectfont>
    <acceptfont>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-Bold.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-BoldItalic.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-Italic.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-Regular.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-Bold.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-BoldItalic.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-Italic.ttf</glob>
        <glob>/usr/share/fonts/noto/NotoSans-*</glob>
        <glob>/usr/share/fonts/noto/NotoSerif-*</glob>
    </acceptfont>
</selectfont>

и перестройте кэш шрифтов :fc-cache -f -v.

После этого количество шрифтов Noto, перечисленных в Writer, уменьшится с сотен до 17.

2
02.02.2020, 09:19

Теги

Похожие вопросы