LINUX.ORG.RU

Идеальное сглаживание шрифта. Как?

 , ,


0

2

Попробовал такие варианты:

  <match target="font">
    <test name="prgname" compare="contains"><string>st</string></test>
    <!-- v0 Без радуги. Самый вменяемый визуально вариант -->
    <edit name="rgba" mode="assign"><const>none</const></edit>
    <edit mode="assign" name="embeddedbitmap"><bool>false</bool></edit>
    <edit mode="assign" name="hinting"><bool>true</bool></edit>
    <edit mode="assign" name="hintstyle"><const>hintfull</const></edit>
    <edit mode="assign" name="lcdfilter"><const>lcddefault</const></edit>
    <edit mode="assign" name="autohint"><bool>true</bool></edit>
    
    <!-- v1 Без радуги. Чуть хуже(буквы разной ширины)  -->
    <!-- <edit name="rgba" mode="assign"><const>none</const></edit> -->
    <!-- <edit mode="assign" name="embeddedbitmap"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="hinting"><bool>true</bool></edit> -->
    <!-- <edit mode="assign" name="hintstyle"><const>hintslight</const></edit> -->
    <!-- <edit mode="assign" name="lcdfilter"><const>lcddefault</const></edit> -->
    <!-- <edit mode="assign" name="autohint"><bool>true</bool></edit> -->

    <!-- v0 Радуга. Самая небольшая радуга -->
    <!-- <edit mode="assign" name="rgba"><const>rgb</const></edit> -->
    <!-- <edit mode="assign" name="embeddedbitmap"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="hinting"><bool>true</bool></edit> -->
    <!-- <edit mode="assign" name="hintstyle"><const>hintslight</const></edit> -->
    <!-- <edit mode="assign" name="lcdfilter"><const>lcddefault</const></edit> -->
    <!-- <edit mode="assign" name="autohint"><bool>true</bool></edit> -->
        
    <!-- v1  -->
    <!-- <edit mode="assign" name="antialias"><bool>true</bool></edit> -->
    <!-- <edit mode="assign" name="autohint"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="hintstyle"><const>hintnone</const></edit> -->
    <!-- <edit mode="assign" name="hinting"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="lcdfilter"><const>lcddefault</const></edit> -->

    <!-- v2 -->
    <!-- <edit mode="assign" name="rgba"><const>none</const></edit> -->
    <!-- <edit mode="assign" name="antialias"><bool>true</bool></edit> -->
    <!-- <edit mode="assign" name="hintstyle"><const>hintnone</const></edit> -->
    <!-- <edit mode="assign" name="hinting"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="lcdfilter"><const>lcddefault</const></edit> -->
    
    <!-- v3 самое вменяемое сглаживание, но цветное -->
    <!-- <edit mode="assign" name="hintstyle"><const>hintmedium</const></edit> -->
    <!-- <edit mode="assign" name="hintstyle"><const>hintfull</const></edit> -->
    <!-- <edit mode="assign" name="lcdfilter"><const>lcdnone</const></edit> -->
    
    <!-- v5 -->
    <!-- <edit mode="assign" name="antialias"><bool>true</bool></edit> -->
    <!-- <edit mode="assign" name="embeddedbitmap"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="force_autohint"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="force_bw"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="force_bw_monospace"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="hinting"><bool>false</bool></edit> -->
    <!-- <edit mode="assign" name="force_hintstyle"><const>hintnone</const></edit> -->
    <!-- <edit mode="assign" name="lcdfilter"><const>lcdnone</const></edit> -->
    <!-- <edit mode="assign" name="rgba"><const>none</const></edit> -->

Но не один из них не сглаживает идеально шрифты. Если включать rgb - то вырвиглаз радуга, невозможно сидеть. Если выключить то самый лучший v0, но всё как-то не идеально. Взять какой-то андроид - там шрифты идеально сглаженные, при любом увеличении.

Без приблежения выглядит у меня конечно при v0 более-менее https://i.paste.pics/a88017acce572db8cd96fe7f6b9ec6cf.png

Но если приближение включить, то: https://pasteboard.co/VIsZ9QT4QnJo.png

Шрифт Consolas

Это ж, млеать, безобразие!!!

★★★

Последнее исправление: serg002 (всего исправлений: 2)
Ответ на: комментарий от Jameson

автохинтинг прописанную в шрифте инфу просто не учитывает (его в том числе и внедряли потому что «честный» хинтинг на основе шрифтовой информации использовать было нельзя из за патентов Адоба) и пытается автоматически универсально размазать всё что рисует

автохинтинг он такой, он особенности не учитывает и размазывает всё без разбора

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

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

Ну я как шесть лет назад шрифты настроил так с тех пор ничего и не меняю. А про автохинтинг помню со времён патентов Адоба, когда нужно было либо в исходниках fontconfig байтовый интерпретатор самому раскомментировать и либу пересобирать, дабы иметь нормальный хинтинг, либо автохинтинг, он делал все шрифты жирными, «мохнатыми» и расплывчатыми, лично меня это бесило, я люблю тонкие и чёткие начертания. Может ему алгоритм с тех пор как то радикально улучшили, я не следил. Но факт остаётся фактом, автохинтинг не использует содержащийся в шрифтах байткод. Байткод индивидуален для конкретного шрифта, может и вообще отсутствовать, автохинтинг же работает одинаково с любым шрифтом. Восприятие всего этого дело вкуса.

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

Лучше для теста использовать латиницу, так как на ручной хинтинг литер отличных от латиницы дизайнеры шрифтов часто забивают и там прописано то что алгоритм типа автохинтинга автоматически при создании шрифта нагенерил. Этим например славится Микрософт, их шрифты имеют приличный хинтинг и кернинг пар только для латиницы, кириллица же сделана «на отвали», чтобы была, над ней никто не напрягался. Важно, речь в данном случае идет о читаемости, а не о сохранении красоты и правильности начертания. Чтобы это увидеть нужно чтобы в конфиге не было настроек выключающих хинтирование на малых кеглях вообще.

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

Видимо автохинт ничего не делает, когда включены другие настройки.

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

А как в гтк включить автохинтинг?

А фиг его знает. Ручки наружу не выведены, значит, не переопределяет, пользуется системной установкой. Но не факт.

Потом ФФ и qt–проги читают fonts.conf

Скорее, не перебивают своими значениями то, что там прописано. Qt так точно, все около-qt'шные конфигураторы (KDE, qt5ct(?, не помню уже, есть ли там про шрифты)) писали настройки шрифтов в пользовательский fonts.conf, что намекает.

Видимо автохинт ничего не делает, когда включены другие настройки.

Делает. Независимо от других настроек, без автохинтинга и с ним Consolas, например, выглядит совершенно по-разному (и неудивительно, оно ж из Microsoft ClearType Fonts Collection).

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

Кстати правильнее всего проверять хинтинг на малых кеглях

Это если для малых размеров в шрифт не зашит битмап, отрисованный «как надо».

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

Всего один аргумент

Так я ж не возражаю, я и написал, что qt точно пользуется системными настройками и не трогает их. Про FF просто был не в курсе.

Работает ли автохинтинг можно проверить на майкрософтовских шрифтах из ClearType Fonts Collection (Consolas, Cambria, Constantia и что там еще было).

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

У меня везде робото и на майкрософтские и на эппловские тоже сделал альясы на разные робото (иногда в интернете помогает), кантарель заменил робото общесистемно, шикарные шрифты, больше ничего не недо :-)

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

Помню, что ещё в ~/.Xresources нужно было прописывать для особо одаренных программ. Настройка шрифтов в линуксе сделана какими-то извращенцами. Да как и всё остальное впрочем.

bread
()
Ответ на: комментарий от papin-aziat

Робото моно весьма всратый однако. Хотя моноширинных вообще нормальных не бывает, и в растровых тоже свои тараканы.

bread
()
Ответ на: комментарий от papin-aziat

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

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

То есть по-твоему шрифт это некий стационарный в идеальных обстоятельствах объект, который воспринимают люди, у которых все те же физические зрительные характеристики и содержимое «памяти», обусловливающее восприятие, что и у хлебушка?! Кроме того сам хлебушек неизменяемая структура и всегда всё воспринимает одинаково.

Это был риторический вопрос.

papin-aziat ★★★★★
()
Ответ на: комментарий от Shadow

В «новой редакции» да, но ЕМНИП её нельзя в Линукс использовать из лицензионных соображений, так что пакетный менеджер скачивает «старые» шрифты.

Jameson ★★★★★
()
Ответ на: комментарий от papin-aziat

Покажи в редакторе твой roboto

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