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)
Ответ на: комментарий от posixbit

Да, распространяются с дистрибутивом, применяются перед сборкой.

e1nste1n ★★★★★
()
Ответ на: комментарий от serg002
<edit mode="assign" name="antialias">
	<bool>true</bool>
</edit>
<edit mode="assign" name="hinting">
	<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
	<const>hintslight</const>
</edit>
<edit mode="assign" name="rgba">
	<const>rgb</const>
</edit>
<edit mode="assign" name="autohint">
	<bool>false</bool>
</edit>
<edit mode="assign" name="lcdfilter">
	<const>lcdlight</const>
</edit>
<edit name="dpi" mode="assign">
	<double>96</double>
</edit>

Это из хомяка и, чтобы во всей системе было так, соответствующие сслыки из /usr/share/fontconfig/conf.avail в /etc/fonts/conf.d

$ ls /etc/fonts/conf.d/|grep -ehinting -esub-pixel -elcdfilter
10-hinting-slight.conf
10-sub-pixel-rgb.conf
11-lcdfilter-light.conf
papin-aziat ★★★★★
()
Ответ на: комментарий от Jameson

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

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

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

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

Тебеж говорят что одни и те же данные разные матрицы показывают по разному, это как одну и туже картинку с точками накладывать на два разных трафарета с дырками. В одном сойдётся в другом нет. Итог на дном монике ШГ в другом нет и наоборот.

Вот если бы друг другу модели мониторов (матриц) скинули и они оказались бы одинаковыми вот тогда да, можно обмениваться картинками.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от 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 ★★
()
Ответ на: комментарий от rupert

Насколько плохим должно быть зрение, чтобы не замечать радугу на тёмном фоне? Можно конечно себя убеждать, что она не мешает, но... Даже ~200 dpi не сильно спасает. Хотя grayscale мыло ещё хуже. Только православный растр! Которого нет больших размеров кроме весьма вырвиглазного терминуса. В результате у меня глаза быстрее устают от hidpi этого вашего.

bread
()
Ответ на: комментарий от 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

Насколько плохим должно быть зрение, чтобы не замечать радугу на тёмном фоне?

Видишь радугу? И я не вижу. А она есть! RGBA включен. А вот специально снято камерой, чтобы показать, как примерно глаз видит этот текст. На этом экране плотность пикселей где-то 150 PPI.

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

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

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

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

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

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

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

serg002 ★★★
() автор топика

Никак. Любое «сглаживание» — это компромис.

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

Дело не в андроиди, а в DPI дисплея. На мобильных девайсах он значительно выше. Купи к компу 26" 4к моник, и будет норм.

Но если приближение включить, то

Зачем?

P.S. Используй растровые шрифты, и будет тебе счастье. Если почему-то не нравится Terminus (как по мне, он близок к идеалу), есть полно других. Terminus это как-то так http://0x0.st/odM9.png

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

автохинтинг … придуман для сделанных непрофессионалами шрифтов не содержащих в себе правила хинтинга, шрифты с прописанными в них правилами хинтинга он портит, так как кладёт на них болт

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

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

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

Да, всё так, патенты Адоба не позволяли. ЕМНИП их Космонавт выкупил, или не он, не помню уже, но кто то их выкупил и «освободил». Я это причину несколькими постами ниже вспомнил.

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