maximilionus/freetype-envision

Параметры не применяются в системе

exzolink opened this issue · 16 comments

Добрый день. Измненение darkening-parameters влияет разве что на иконки в VS Code, в браузере и в системе разницы никакой, даже если x10 значения поставить, использую Manjaro Gnome 46, с чем может быть связано? Grayscale стоит, хинтинг слабый, шрифты пробовал Noto Sans, Inter, Ubuntu.

Привет. Первым же делом - после установки перезагрузку делал? Если да и проблема все та же, то открой любой терминал, введи

echo $FREETYPE_PROPERTIES

И отправь мне сюда вывод.

У меня уже был один подобный отчёт о такой проблеме, но пока что выявить причину игнорирования надстроек не удалось.

autofitter:no-stem-darkening=0 autofitter:darkening-parameters=500,0,1000,400,1500,400,2333,0 cff:no-stem-darkening=0 cff:darkening-parameters=500,475,1000,400,1500,400,2333,0 type1:no-stem-darkening=0 type1:darkening-parameters=500,475,1000,400,1500,400,2333,0 t1cid:no-stem-darkening=0 t1cid:darkening-parameters=500,475,1000,400,1500,400,2333,0

Причем no-stem-darkening=0 срабатывает и свои дефолтные значения он применяет, но вот кастомные - никак

Какой монитор используется (разрешение, диагональ) и применяется ли какой-либо скейлинг? Если скейлинг используется, то стоит проверить изменится ли ситуация после его отключения.

23.8" 1080p, скейлинга нет

Это очень странно, у меня не получается воспроизвести это ни на одной своей машинке. Буквально только что поставил Manjaro на виртуалку, установил основным скриптом проект и все заработало.

  • До:
    image

  • После:
    image

Попробуй запустить любое приложение (тот же браузер) через терминал, затирая переменную FREETYPE_PROPERTIES, вот так:

FREETYPE_PROPERTIES="" firefox

Это запустит выбранное приложение без применения всех твиков к отрисовщику шрифтов, так что ты сразу увидишь разницу (если она есть).

Даже и не знаю в какую сторону копать отсюда. Может были какие-то дополнительные изменения в шрифтах, например изменение фактора их масштабирования через тот же gnome-tweaks? Есть возможность попробовать подключение к другому монитору или сделать установку на другом дистрибутиве (хоть через виртуалку)?

Причем no-stem-darkening=0 срабатывает и свои дефолтные значения он применяет, но вот кастомные - никак

Как я и писал, настройки применяются, не применяются именно изменения darkening-parameters, то есть всегда дефолтные используются, какие бы значения не ставил

Через gnome-tweaks игрался, но сейчас там все дефолтное оставил

Сравнил 1к1 скрины, есть еле заметные изменения, видимо ppi совсем маловат, возможно ли как-то еще сделать толще немного, кручу настройки, но изменения под лупой только видны и всегда тоньше твоих, что уменьшаю, что увеличиваю darkening

Да, ppi ниже 96 это совсем печально конечно, но я не уверен, что дело именно в нем. Как и говорил, у меня есть еще один отчет об отсутствии видимых изменений, вот только он идет от пользователя с 4K монитором 27".

Лично я тестировал только на таких мониторах и результат был везде одинаковый:

  • 2560x1440, 27"
  • 1920x1080, 23"
  • 1920x1080, 13"

Сделать ожирнение (yN) выше 500 попросту нельзя - это ограничение, про которое написано вот тут: https://freetype.org/freetype2/docs/reference/ft2-properties.html#darkening-parameters.

Для визуального понимания моих настроек, вот схема пресета normal (по умолчанию), которую я нагло скопипастил и подогнал с комментариев исходников freetype:

autofitter:darkening-parameters=500,0,1000,400,1500,400,2333,0\

darkening
    ^
    |
    |
    |
    |
    |
    |          (x2,y2)    (x3,y3)
    |            +----------+
    |           /            \
    |          /              \
    |         /                \
    |--------+                  +-----------------
    |      (x1,y1)            (x4,y4)
    +--------------------------------------------->   stem
                                                    thickness
xN - stem thickness
yN - darkening

На бумаге, y1 не должен быть меньше y2..yN, но каким то магическим образом, это заработало и помогло исправить много проблем. Оригинальную версию я оставил для full пресета. Там y1 больше y2 и это ломает некоторые иконки (VS Code например).

Понятно, спасибо за разъяснение.

Закинул еще на посмотреть вот эту библиотеку, ситуацию с мелкими шрифтами исправило, но остальное слишком толстое, попробую поиграться

https://github.com/ryuukk/freetype2-macos/blob/master/9999-macos-like.patch

Занятно, спасибо за ссылку, такого я еще не видел. Есть парочка скриншотов как оно все в итоге выглядит? И что это за "остальное", что становится слишком жирным - иконки?

Не особо я горю желанием встраивать в этот проект такие патчи конечно, а то дойдет и вовсе до своих сборок freetype, где обеспечить поддержку максимального количества дистрибутивов будет очень тяжко после такого.

Есть еще одна догадка у меня. Склонируй мастер ветку этого репозитория, примени этот патч:

diff --git a/src/profile.d/freetype-envision-full.sh b/src/profile.d/freetype-envision-full.sh
index 2e9aab0..95d7b6e 100644
--- a/src/profile.d/freetype-envision-full.sh
+++ b/src/profile.d/freetype-envision-full.sh
@@ -7,8 +7,5 @@ export FREETYPE_PROPERTIES=\
 "autofitter:no-stem-darkening=0\
  autofitter:darkening-parameters=500,475,1000,400,1500,400,2333,0\
  cff:no-stem-darkening=0\
- cff:darkening-parameters=500,475,1000,400,1500,400,2333,0\
  type1:no-stem-darkening=0\
- type1:darkening-parameters=500,475,1000,400,1500,400,2333,0\
- t1cid:no-stem-darkening=0\
- t1cid:darkening-parameters=500,475,1000,400,1500,400,2333,0"
+ t1cid:no-stem-darkening=0"
diff --git a/src/profile.d/freetype-envision-normal.sh b/src/profile.d/freetype-envision-normal.sh
index ab794cd..6413651 100644
--- a/src/profile.d/freetype-envision-normal.sh
+++ b/src/profile.d/freetype-envision-normal.sh
@@ -8,8 +8,5 @@ export FREETYPE_PROPERTIES=\
 "autofitter:no-stem-darkening=0\
  autofitter:darkening-parameters=500,0,1000,400,1500,400,2333,0\
  cff:no-stem-darkening=0\
- cff:darkening-parameters=500,475,1000,400,1500,400,2333,0\
  type1:no-stem-darkening=0\
- type1:darkening-parameters=500,475,1000,400,1500,400,2333,0\
- t1cid:no-stem-darkening=0\
- t1cid:darkening-parameters=500,475,1000,400,1500,400,2333,0"
+ t1cid:no-stem-darkening=0"

и установи через основной скрипт любой пресет.

Скажи что получится. Как будет время, разумеется.

Занятно, спасибо за ссылку, такого я еще не видел. Есть парочка скриншотов как оно все в итоге выглядит? И что это за "остальное", что становится слишком жирным - иконки?

Крупные шрифты, особенно medium, bold. Да, завтра попробую скрипт

Сори за долгий ответ, потыкался еще, ни dpi скейл, ни скрипт выше не помогли, после скрипта еще тоньше выглядят. В общем до уровня винды линукс так и не дошел еще в плане рендера шрифтов, по крайней мере на лоу ppi, ибо на твоем скрине шикарно выглядят

Жаль что не помогло, буду копать дальше.

Винда использует очень много дополнительных техник для улучшения отрисовки, так как изначально целится в максимальный спектр мониторов и отталкивается от самых плохих вариантов:

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

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