LINUX.ORG.RU

Как сделать рендеринг шрифтов в браузере, как в W10?

 , ,


0

1

Добрый день друзья. Использую Fedora 33, и никак не могу настроить шрифты в браузере, чтобы страницы были идентичны тому, что видно в W10.

Что я пробовал:

  • Включил 10-sub-pixel-rgb.conf в /etc/fonts/conf.d/
  • Хинтинг слабый 10-hinting-slights.conf Пробовал Также полностью отключать.
  • lcd-filter-default.conf, также пробовал lcd-filter-light, но ничего не меняется.

В гноме шрифты выглядят более менее. Но я не могу пользоваться браузером, т.к привычка превилирует. Нужен рендеринг ровно, как в W10. Раньше вроде можно было с помощью infinality готовый конфиг взять и всё работало. Но как теперь сделать тоже самое с новым freetype? Прилагаю скриншот того, как выглядят шрифты, на примере ютуба. Как видно, в федоре шрифт какой-то жирный и более черный. Режет глаз. Я понимаю, что ценителям с ЛОРа рендеринг шрифтов в W10 покажется говном, но мне нравится. Картинка

UPD: Croscore шрифты (metric compatible к виндовых) смотрятся неплохо, но все-равно не то.

UPD: В Fedora 34 шрифты стали более менее, но все-равно в Win10 лучше. (я прочитал, что в Fedora 34 добавили поддержку harfbuzz во freetype, что бы это не значило, но виндовые шрифты выглядят норм при включенном sub-pixel-rendering). Приходится сидеть ан тестовом бранче (хотя, у меня stable федора вела себя, как тестинг большую часть времени)

UPD: Судя по всему проблема была в том, что хром (firefox тоже кстати) клали болт на ваш fontconfig в /etc/font/. им просто было по***й, они ищут всё в домашней директории

/etc/fonts/local.conf

<match target="pattern">
   <edit name="hinting" mode="assign">
      <bool>true</bool>
   </edit>
   <edit name="hintstyle" mode="assign">
      <const>hintfull</const>
   </edit>
   <edit name="autohint" mode="assign">
      <bool>false</bool>
   </edit>
    <edit name="antialias" mode="assign">
      <bool>true</bool>
   </edit>
   <edit name="rgba" mode="assign">
      <const>rgb</const>
   </edit>
</match>

~/.Xresources

Xft.antialias:			1
Xft.autohint:			0
Xft.dpi:			96
Xft.hintstyle:			hintfull
Xft.rgba:			rgb
Xft.lcdfilter:			lcddefault

~/.gtkrc-2.0

gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"
gtk-xft-rgba="rgb"

~/.gtkrc-3.0

gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"
gtk-xft-rgba="rgb"

Теперь шрифты, как в Win10. Всем спасибо

UPD: Все-равно чувствую что-то не то, не как в винде. Вроде бы тоже самое, но нагрузка на глаза выше. В итоге вернулся на grayscale сглаживание и hintfull.


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

На вкус и цвет, но не подскажете, почему в федоре шрифт более толстый и более черный. Я думал, что дело в хинтинге, отключал - не помогло. Шрифты в заголовке вкладки тоже странные, но этот вопрос яо ставлю на последок.

Shniv ()

Блин, ну реально же на Fedora четче. Я боюсь, что разработчики рендеринга в Linux просто не озаботились режимом «сделать хуже, но чтоб как в Windows» — у них цель сделать лучше.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)

На картинке что слева что справа - сорта говна. Но справа говно читается легче.

Вот чуть лучше: https://strelnikov.xyz/pub/youtube-fonts.png

Но я был бы не против еще DPI увеличить.

aquadon ★★★★★ ()
Последнее исправление: aquadon (всего исправлений: 1)
Ответ на: комментарий от awesomenickname

попробуй переключиться на старый рендеринг FREETYPE_PROPERTIES=truetype:interpreter-version=35

Я так и не смог найти, где прописать это. В интернете пишут, что в /etc/profile.d/freetype.sh Но у меня такого файла нету. Так и быть. я его создал, вписал конфиг - ничего н е поменялось. Как узнать какой рендеринг используется?

Shniv ()
Последнее исправление: Shniv (всего исправлений: 1)
Ответ на: комментарий от anonymous

https://lostpic.net/image/oLZm

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

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

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

env FREETYPE_PROPERTIES="truetype:interpreter-version=35" chromium

Делаем скриншот
Закрыть хром и с другой версией запускаем

env FREETYPE_PROPERTIES="truetype:interpreter-version=40" chromium

И с 38 тоже самое

Изменения в font config тоже после перезагрузки приложения применяются. Он читается при запуске приложения

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

Я боюсь, что разработчики рендеринга в Linux просто не озаботились режимом «сделать хуже, но чтоб как в Windows» — у них цель сделать лучше.

Как раз наоборот, они старательно делают хуже.

mord0d ★★★★★ ()

Все что можно было сделать ты уже сделал (только хинтинг, скорее полный должен быть)

Проблема в том, что полностью повторить рендеринг винды не выйдет - у фритайпа даже вроде бы на тех же алгоритмах (не подтверждено) все равно другие результаты. Главным образом часто хвосты в межбуквенных интервалах, которых нет у винды.

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

Единственное практическое решение, как по мне, переключиться на greyscale и привыкнуть

Midael ★★★★★ ()

Я вроде смог сделать нечто похожее, удалить sub-pixel-rgb и lcdfilter впринципе. Но шрифты все-равно какие-то черные. Я тут прилагаю картинку в 800% увеличении. Видно, что начертания очень похожи, но справа как-то много черного (справа это федора, а слева вин10).Картинка 800% zoom

Shniv ()
Последнее исправление: Shniv (всего исправлений: 1)

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

ШГ на обоих, но на винде шрифты суше, тоньше, а на федоре жирнее, размазанней

Раньше вроде можно было с помощью infinality готовый конфиг взять и всё работало.

Зачастую конфига было недостаточно. Надо было патчить freetype, cairo, fontconfig.

Как узнать какой рендеринг используется?

Кратко:

Уясняешь версию freetype, cairo и fontconfig в дистре. Памятуя эти заветные цифири, чешешь в /usr/include/freetype2/freetype/config/ftoption.h и смотришь там как в твоем дистре сконфигурированы фундаментальные вещи, определяющие уровень ШГ:

FT_CONFIG_OPTION_SUBPIXEL_RENDERING
TT_CONFIG_OPTION_SUBPIXEL_HINTING 

Читаешь там же в ftoption.h что такое Value 1 (38), 2 (40), 3 (38 и 40) для TT_CONFIG_OPTION_SUBPIXEL_HINTING

Это важно. Выше тебе посоветовали попробовать переключать FREETYPE_PROPERTIES=truetype:interpreter-version

Так вот например если у тебя

/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  1         */

#define TT_CONFIG_OPTION_SUBPIXEL_HINTING  2

/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  ( 1 | 2 ) */

то ты можешь переключаться только между 35 и 40, а для того чтобы переключаться между 35, 40, 38

нужно чтобы третья строка имела вид

#define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 )

А теперь тебя ждут патчи Infinality и вопросы интеграции их с современными версиями freetype, …

Смотри сюда https://aur.archlinux.org/packages/?O=0K=infinality https://github.com/archfan/bob-infinality-bundle/commits/master

сюда можно https://gist.github.com/cryze/e002e7057435f02cc7894b9e748c5671

После наложения патчей:

  • 2- симлинки и /etc/profile.d/freetype.{csh,sh}

    • 2-А симлинки и /etc/profile.d/infinality.sh
  • 3- полировка настройкой .Xresources , ~/.config/fontconfig/fonts.conf , .gtkrc-2.0, .gtkrc-3.0

В интернете пишут, что в /etc/profile.d/freetype.sh Но у меня такого файла нету.

Cоздай сам и впиши переменную.

А может ты бы обошелся и без патчей, а только симлинками и пунктом 3.

Огромная тема.

P.S.

У меня YT выглядит так

Это SalixOS 14.2

igor_ubuntu ()
Последнее исправление: igor_ubuntu (всего исправлений: 1)
Ответ на: комментарий от anonymous

Неужели это так принципиально? Шрифты выглядят одинаково хорошо, чуть темнее мне больше по вкусу.

Я пытался. Проблема в том, что я несколько часов каждый день должен сидеть за машиной на Вин10. Потом приходят домой хочу загрузить федору и увидеть тоже самое. А то приходится пару часов привыкать, каждый раз мутит в глазах. Я тут туже самую картинку с 800% закгрузил без увеличения. Что скажете? Сравнение после выключения subpixelrgb и хинтинга, а еще lcdfilter отключил

Shniv ()
Последнее исправление: Shniv (всего исправлений: 1)

Установил OpenSUSE, там по дефолту вместо виндовых шрифтов используются Croscore шрифты. (30-metric-aliases.conf) Arimo даже лучше Arial. Arimo при слабом хинтинге выглядит четче, чем Arial при высоком хинтинге. Короче, проблема решена. Все-таки проблема была в том, что виндовые шрифты не приспособлены к странному фритайпу.

Shniv ()
Последнее исправление: Shniv (всего исправлений: 1)
Ответ на: комментарий от anonymous

вы сударь гений, но видать гамма как-то по хитрому в вин10. я поставил в опенсусе гамму 115%, шрифты стали норм, все остальное белое. предполагаю где-то есть настройка для гаммы шрифтов?

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

возможно дело ещё в гамме. красный цвет иконок тоже отличается.

скопировал icc профиль из под винды (c/windows/system32/spool/drivers/color/*.icm), установил при помощи colord-kde и всё стало отображаться нормально, как в винде. большое спасибо за наводку по гамме.

Shniv ()

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

anonymous ()