LINUX.ORG.RU

Правило fontconfig для жирных и наклонных шрифтов

 ,


0

1

Пытаюсь написать правило для шрифтов, а именно - для среднего диапазона отключить сглаживание (работает), кроме жирных и наклонных шрифтов (не работает).
Соответственно это строки 1 и 2, которые не работают - как их правильно написать ?
kubuntu 18.04

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <dir>~/.fonts</dir>

 <match target="font"><edit mode="assign" name="rgba"><const>none</const></edit></match>
 <match target="font"><edit mode="assign" name="hinting"><bool>true</bool></edit></match>
 <match target="font"><edit mode="assign" name="hintstyle"><const>hintfull</const></edit></match>
 <match target="font"><edit mode="assign" name="antialias"><bool>true</bool></edit></match>


 <match target="font">
 <test compare="more_eq" name="size"   qual="any"><double>10</double></test>
 <test compare="less_eq" name="size"   qual="any"><double>13</double></test>
 <test compare="less"    name="weight" qual="any"><double>100</double></test> <!-- 1 -->
 <test compare="not_eq"  name="slant"  qual="any"><const>italic</const></test> <!-- 2 -->
 <edit mode="assign"     name="antialias"><bool>false</bool></edit></match>

</fontconfig>


★★★★★

По первой нерабочей строчке вообще не понял, ты пишешь проверить weight меньше 100, но 100 - это то ли тонкий, то ли ультратонкий, 400 - регуляр. Вероятно, фонтконфиг вообще строчку игнорирует - иначе он не должен был убрать антиалиасинг только на шрифтах, тоньше thin. Не знаю как правильно указывать weight цифрами, попробуй задать «больше» чем «medium».

По второй - slant должен быть не италик, a 0.

Погляди примеры в арчевики https://wiki.archlinux.org/index.php/Font_configuration/Examples и почитай manual fontconfig (есть где-то в сети, тот что открывается по man fontconfig - ни разу не видел), там очень подробно все расписано.

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

я использовал https://www.freedesktop.org/software/fontconfig/fontconfig-user.html

еслибы fontconfig строчку игнорил, то писал бы варнинг в консоль, видел такое при ошибке записи

константы можно задавать буквами, тогда пишется <const>italic</const>, а можно цифрами, тогда пишется <double>100</double>

примеры видел, собственно от туда и брал, не помогает

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

Ок, ясно, тогда я вообще ничего не понимаю)) Объясни что по-твоему должна делать первая неработающая строчка.

Как вариант, попробуй разбить на три блока. Первый отключает сглаживание, для среднего диапазона. Второй включает его для всех жирных шрифтов, третий для всех италиков.

Еще погляди ссылку на арчевики, No hinting for italic or bold, там в строчках с slant и weight не используют qual=any, возможно это как-то мешает.

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

Еще одна штука, гном вроде бы может перезаписывать какие-то правила фонтконфига, подставляя вместо них свои, может kde тоже страдает таким недугом.

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

это фраза мне не помогает
нужно чтото типа логов или еще чего - например отображаю один шрифт, что при этом делал fontconfig, какие настройки и как принял

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

хм, заметил странное, что для некоторых шрифтов работает определение италика
для Arial,TimesNewRoman - не работает
для DejavuSansMono, OpenSans - работает

 <match target="font"><edit mode="assign" name="rgba"><const>none</const></edit></match>
 <match target="font"><edit mode="assign" name="hinting"><bool>true</bool></edit></match>
 <match target="font"><edit mode="assign" name="hintstyle"><const>hintfull</const></edit></match>
 <match target="font"><edit mode="assign" name="antialias"><bool>true</bool></edit></match>

<!-- test -->
 <match target="font">
 <test compare="more_eq" name="size"   qual="any"><double>10</double></test>
 <test compare="less_eq" name="size"   qual="any"><double>13</double></test>
 <edit mode="assign"     name="antialias"><bool>false</bool></edit></match>

 <match target="font">
 <test compare="not_eq"  name="slant"  qual="any"><const>roman</const></test>
 <edit mode="assign"     name="antialias"><bool>true</bool></edit></match>
<!-- test -->



но нельзя сказать что нет италка для Arial, т.к. если оставить только четыре первые строки (убрать что между test), то сглаживание будет для всех и для италика также

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

Такая конструкция работает?

Для Arial/Times Italic можешь отдельное правило прописать

fullname        String  Font full names (often includes style)

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

сообщением выше, установка настроек для шрифтов определенного размера, а затем установка других настоек для наклонных шрифтов.

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

так я там написал, что такая конструкция работает не для всех шрифтов, что для меня странно
т.е. логика вроде верная в моем конфиге,но почемуто не до конца

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

для некоторых шрифтов работает определение италика

Может быть поэтому:

  Property        Type    Description
  --------------------------------------------------------------
  style           String  Font style. Overrides weight and slant

Или вместо <match target="font"> использовать <match target="pattern"> или просто <match>.

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

Может быть поэтому

не уловил мысль, я такого не писал

Или вместо <match target=«font»> использовать <match target=«pattern»> или просто <match>.

попробовал - вообще перестало работать там, где работало

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

не уловил мысль, я такого не писал

Это написано в документации, которой ты пользовался, в общем списке свойств. Я к тому, что если оно overrides weight and slant, то может и условия по этим свойствам не срабатывают. Надо смотреть, что там для Arial и TimesNewRoman прописано в style.

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

а как посмотреть что прописано для этих шрифтов ?
и интересно зачем это сделано, если оно так ?

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