LINUX.ORG.RU

Шрифты в Debian Buster

 , , ,


0

1

Может кто в курсе, как нормально настроить рендеринг шрифтов в Buster'е? В gtk приложениях все ок. Мыло в половине qt приложений (в т.ч. в телеге), во всех хромобраузерах и приложениях на электроне. Иногда в firefox всречаются сайты с мыльными шрифтами. Бывает, что на сайте везде используется один и тот же шрифт с одним и тем же размером и толщиной, но в одной части ок, а в другой мыло. Конфиг шрифтов сгенерен через qt5ct, подобрал самые оптимальные настройки.

/etc/environment

QT_QPA_PLATFORMTHEME=qt5ct

~/.config/fontconfig/fonts.conf

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <edit name="antialias" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="hinting" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign">
            <const>hintmedium</const>
        </edit>
        <edit name="rgba" mode="assign">
            <const>rgb</const>
        </edit>
        <edit name="autohint" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="lcdfilter" mode="assign">
            <const>lcdnone</const>
        </edit>
        <edit name="dpi" mode="assign">
            <double>94</double>
        </edit>
    </match>
    <match target="font">
        <test name="weight" compare="more">
            <const>medium</const>
        </test>
        <edit name="autohint" mode="assign">
            <bool>true</bool>
        </edit>
    </match>
</fontconfig>

Пробовал добавлять

FREETYPE_PROPERTIES=truetype:interpreter-version=35
в /etc/profile, но разницы не заметил.

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

моник - ips, 1920*1200, ~94ppi

★★★

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

Походу и на эти конфиги тоже плевать. Сначала удалил лишнее из /etc/conf.d/, насоздавал ссылок на нужные конфиги, результата ноль. Потом создал свой local.conf и прописал нужные настройки, тоже никаких изменений.

zevilz ★★★ ()
Ответ на: комментарий от anonymous
10-autohint.conf -> /usr/share/fontconfig/conf.avail/10-autohint.conf
10-hinting-medium.conf -> /usr/share/fontconfig/conf.avail/10-hinting-medium.conf
10-scale-bitmap-fonts.conf -> /usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf
10-sub-pixel-rgb.conf -> /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf
11-lcdfilter-none.conf -> /usr/share/fontconfig/conf.avail/11-lcdfilter-none.conf
20-unhint-small-dejavu-lgc-sans.conf -> ../conf.avail/20-unhint-small-dejavu-lgc-sans.conf
20-unhint-small-dejavu-lgc-sans-mono.conf -> ../conf.avail/20-unhint-small-dejavu-lgc-sans-mono.conf
20-unhint-small-dejavu-lgc-serif.conf -> ../conf.avail/20-unhint-small-dejavu-lgc-serif.conf
20-unhint-small-dejavu-sans.conf -> ../conf.avail/20-unhint-small-dejavu-sans.conf
20-unhint-small-dejavu-sans-mono.conf -> ../conf.avail/20-unhint-small-dejavu-sans-mono.conf
20-unhint-small-dejavu-serif.conf -> ../conf.avail/20-unhint-small-dejavu-serif.conf
20-unhint-small-vera.conf -> /usr/share/fontconfig/conf.avail/20-unhint-small-vera.conf
30-0-google-crosextra-carlito-fontconfig.conf -> ../conf.avail/30-0-google-crosextra-carlito-fontconfig.conf
30-metric-aliases.conf -> /usr/share/fontconfig/conf.avail/30-metric-aliases.conf
30-opensymbol.conf -> /usr/share/fontconfig/conf.avail/30-opensymbol.conf
40-nonlatin.conf -> /usr/share/fontconfig/conf.avail/40-nonlatin.conf
45-generic.conf -> /usr/share/fontconfig/conf.avail/45-generic.conf
45-latin.conf -> /usr/share/fontconfig/conf.avail/45-latin.conf
49-sansserif.conf -> /usr/share/fontconfig/conf.avail/49-sansserif.conf
50-user.conf -> /usr/share/fontconfig/conf.avail/50-user.conf
51-local.conf -> /usr/share/fontconfig/conf.avail/51-local.conf
57-dejavu-sans.conf -> ../conf.avail/57-dejavu-sans.conf
57-dejavu-sans-mono.conf -> ../conf.avail/57-dejavu-sans-mono.conf
57-dejavu-serif.conf -> ../conf.avail/57-dejavu-serif.conf
58-dejavu-lgc-sans.conf -> ../conf.avail/58-dejavu-lgc-sans.conf
58-dejavu-lgc-sans-mono.conf -> ../conf.avail/58-dejavu-lgc-sans-mono.conf
58-dejavu-lgc-serif.conf -> ../conf.avail/58-dejavu-lgc-serif.conf
60-generic.conf -> /usr/share/fontconfig/conf.avail/60-generic.conf
60-latin.conf -> /usr/share/fontconfig/conf.avail/60-latin.conf
65-fonts-persian.conf -> /usr/share/fontconfig/conf.avail/65-fonts-persian.conf
65-nonlatin.conf -> /usr/share/fontconfig/conf.avail/65-nonlatin.conf
69-unifont.conf -> /usr/share/fontconfig/conf.avail/69-unifont.conf
70-fonts-noto-cjk.conf -> /usr/share/fontconfig/conf.avail/70-fonts-noto-cjk.conf
70-no-bitmaps.conf -> /usr/share/fontconfig/conf.avail/70-no-bitmaps.conf
80-delicious.conf -> /usr/share/fontconfig/conf.avail/80-delicious.conf
90-fonts-linux-libertine.conf -> /usr/share/fontconfig/conf.avail/90-fonts-linux-libertine.conf
90-synthetic.conf -> /usr/share/fontconfig/conf.avail/90-synthetic.conf
zevilz ★★★ ()
Ответ на: комментарий от zevilz

10-autohint.conf автохинт нормальные шрифты только портит lcdfilter-none.conf без фильтра опять же на lcd мониторах дерьмо будет hinting-medium на любителя если нужны четкие не размазанные hinting-full

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

Сейчас еще проверил разные варианты.

Если отключить автохинтинг, то вместо тонких шрифтов тонкая радуга с разрывами.

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

С любым фильтром появляется мыло вообще везде, читать не возможно, как будто ослеп)

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

zevilz ★★★ ()

Зачем автохинтинг включил? Выключай. FREETYPE_PROPERTIES верни на 40. Это рендер Harmony, по сути sub-pixel rendering + lightlcdfilter, так что никаких больше фильтров не нужно. делаешь так:

~/.config/fontconfig/fonts.conf

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <edit name="antialias" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="hinting" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign">
            <const>hintfull</const>
        </edit>
        <edit name="rgba" mode="assign">
            <const>rgb</const>
        </edit>
        <edit name="autohint" mode="assign">
            <bool>false</bool>
        </edit>
        <edit name="lcdfilter" mode="assign">
            <const>lcdnone</const>
        </edit>
    </match>
</fontconfig>

В мониторе пиксели точно идут в порядке rgb? Впрочем, был бы не rgb, уже понял бы, наверное.

rbh-17m ()

Мыло в половине qt приложений (в т.ч. в телеге)

Если это не дистрибутивные приложения, как тот же Telegram, то они могут таскать с собой свою копию Qt, собранную с плохими настройками.

во всех хромобраузерах и приложениях на электроне

И даже в дистрибутивном chromium? А то он по умолчанию не использует системную freetype, и в Debian его заставляют это делать опцией сборки, а Google-овский рисует шрифты по-своему. То же касается и приложений на Electron.

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

Моник Benq BL2411PT. Тут точно RGB, на других режимах сразу видно. В калькуляторе ppi выдал 94.34. Убрал свое значение из конфига, hintfull получше стал переваривать, но с hintmedium + autohinting шрифты все равно почетче, хоть и немного корявые. Шрифт везде Open Sans.

zevilz ★★★ ()
Последнее исправление: zevilz (всего исправлений: 1)
Ответ на: комментарий от rbh-17m

Зачем автохинтинг включил?

с ним четче и не радуга вместо тонких шрифтов

FREETYPE_PROPERTIES верни на 40

вернул - так же, убрал - так же

В мониторе пиксели точно идут в порядке rgb?

да

пока оставил твой конфиг. попробую добавить автохинтинг только для тонких шрифтов

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

Если это не дистрибутивные приложения, как тот же Telegram, то они могут таскать с собой свою копию Qt, собранную с плохими настройками.

Как я понимаю, это никак не лечится? У меня такое ощущение, что там по дефолту включен фильтр. Если в конфиге прописать какой-нибудь фильтр, то в gtk становится шрифты становятся такими же размытыми, но немного отличается хинтинг.

И даже в дистрибутивном chromium?

Да, на нем и проверяю. Стоит из репов дебиана. На обычном хроме точно такие же шрифты, как и в хромиуме.

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

Боже мой blyad, шёл 2019 год... Ну неужели на всей это планетке никто не в состоянии забацать нормальные шрифты и отправить их в Debian с соответствующей лицензией.

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

Больные ненормальные дети, покупающие машины за 7кк+, ну задонатьте мужикам на пиво, чтобы они шрифты забацали под ваш заказ, да отправьте в Debian. Сцуко, впишите себя в историю чем-то лучшим, чем вечерние хроники Мск.

Как жаль, что они даже не откроют никогда этот портал :(

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

Так они есть, но мы включим autohinting и возьмем Open Sans. И будем кричать шрифты на линукс гавно.

ТС возьми нормальный шрифт «DejaVu Sans Mono» «Book» а лучше Verdana

для гтк ~/.config/gtk-3.0/settings.ini

gtk-font-name=DejaVu Sans 11
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=rgb

для хресурсов ~/.Xresources

Xft.dpi: значение!свое dpi   
Xft.antialias:  true
Xft.rgba:       rgb
Xft.hinting:    true
Xft.hintstyle:  hintfull
Xft.lcdfilter: lcddefault
Xft.autohint: false

для системы /etc/fonts/local.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
       <edit name="antialias" mode="assign">
           <bool>true</bool>
       </edit>
       <edit name="autohint" mode="assign">
           <bool>false</bool>
       </edit>
       <edit name="embeddedbitmap" mode="assign">
           <bool>false</bool>
       </edit>
       <edit name="hinting" mode="assign">
           <bool>true</bool>
       </edit>
       <edit name="hintstyle" mode="assign">
           <const>hintsfull</const>
       </edit>
       <edit name="lcdfilter" mode="assign">
           <const>lcddefault</const>
       </edit>
       <edit name="rgba" mode="assign">
           <const>rgb</const>
       </edit>
    <edit name="autohint" mode="assign">
        <bool>false</bool>
    </edit>
   </match>
</fontconfig>
В /etc/profile.d/freetype2.sh и перезагрузиться
export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
Будет так примерно https://img16.lostpic.net/2019/08/14/8a54eb329b5cdb985e495fbde007feed.png

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

А вот тут уже вкусовщина(скриншот в натуральном разрешении рассматривал если) хинтованые шрифты с лсд фильтром не нравятся. Шрифты на твоих скринах для меня тихий ужас Говори какие ты хочешь шрифты тогда, а то мы советуем каждый свое болото:) лучше с скриншотами

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

qt и телега если не снап и прочие контейнеры юзают системные настройки. Хром смотря как собран и флаги, у меня тоже системные юзает на глаз отличие еле уловимое. Не забываем что на сайтах свои шрифты

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

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

zevilz ★★★ ()