maximilionus / freetype-envision

FreeType adjustments designed to improve fonts visibility
BSD 2-Clause "Simplified" License
34 stars 2 forks source link

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

Open exzolink opened 2 months ago

exzolink commented 2 months ago

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

maximilionus commented 2 months ago

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

echo $FREETYPE_PROPERTIES

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

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

exzolink commented 2 months ago

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

exzolink commented 2 months ago

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

maximilionus commented 2 months ago

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

exzolink commented 2 months ago

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

maximilionus commented 2 months ago

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

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

FREETYPE_PROPERTIES="" firefox

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

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

exzolink commented 2 months ago

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

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

exzolink commented 2 months ago

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

exzolink commented 2 months ago

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

maximilionus commented 2 months ago

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

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

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

Для визуального понимания моих настроек, вот схема пресета normal (по умолчанию), которую я нагло скопипастил и подогнал с комментариев исходников freetype: https://github.com/maximilionus/freetype-envision/blob/b4bbd8fd64bb5041ccec2478ac675655c238b0c3/src/profile.d/freetype-envision-normal.sh#L9

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

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

exzolink commented 2 months ago

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

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

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

maximilionus commented 2 months ago

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

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

maximilionus commented 2 months ago

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

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"

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

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

exzolink commented 1 month ago

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

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

exzolink commented 1 month ago

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

maximilionus commented 1 month ago

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

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

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