Pull to refresh

Comments 49

Всегда хотел разобраться в типографике (а также причине, почему текст на экране выглядит именно так, как выглядит)) и всегда попадались какие-то обрывочные статьи. Эта же — просто супер, низкий поклон переводчику и автору.
Я выступлю в некоей роли в виде «адвоката дьявола», но все-таки рискну сказать, что при всей объемности исследования и при том, что оригинальный автор написал свой собственный растеризатор, основную мысль автора можно сформулировать в одну строчку:

«Единственно верный способ растеризации шрифтов — с антиалиасингом, с субпиксельным сглаживанием, с хинтингом по Y и отсутствием хинтинга по X».

Как и почти все «вкусовые» решения — к сожалению, это просто одно из мнений. Для тех, кто последует этому мнению — ничего автоматически не произойдет, не начнут сваливаться с неба мешки денег, довольные заказчики и т.п. Кому-то это будет нравится, кому-то — нет.
Для меня суть статьи не в том, что автор показал _что_ ему нравится, а том, что он рассказал _как_ и _почему_ это работает. (Прошу прощения за 3 «что»))
P.S. Но согласитесь, при его подходе шрифты выглядят и ведут себя лучше, чем в «дефолтных» вариантах. Разве нет?
Мне лично вообще хинтинг кажется зверством и диким пережитком 90-х, когда разрешение у мониторов было правда порядка 640*480 на 15" => 53 PPI, ну или в лучшем случае 1024*768 на 17" => 75 PPI.

Современные мониторы и ноутбуки вполне уже технологически готовы к тому, чтобы поставить нижнюю планку где-то в районе 110-120 PPI, а для мобильных устройств мы подходим вплотную к 220-300 PPI (т.е. многократно лучше, чем средненький лазерный принтер).

Если отказаться от зверского искажения форм глифов шрифтов в угоду тому, чтобы их края попадали в целые пиксели (и начать жить, наконец-таки, с толщиной штриха не в 1-2 пикселя, а хотя бы в 3-4-5), то шрифты вдруг начинают выглядеть интересно, у них появляется некий характер, начинаешь отличать разные sans'ы и sans serif'ы друг от дружки, начинаешь замечать определенные графические решения и т.д. и т.п.

Если же мы все-таки хотим говорить о низких разрешениях (и PPI), то здесь я никогда не понимал смысла использования векторных шрифтов вообще. Какая-нибудь вручную растрированная Lucida или Terminus дадут сто очков вперед любой растеризации векторного шрифта на таких разрешениях.
А там же нет никакой толщины штриха. Оно же всё рендерится многоугольниками, а не линиями. И ещё вопрос: а зачем стремится к интересности шрифта? Я понимаю, например, когда речь идёт о вывеске для магазина или там рекламном плакате, это имеет значение. Но когда мне надо читать учебник по квантовой механике или писать программу, то чем проще шрифт, тем лучше, чтобы не было дополнительного насилия над мозгом в виде необходимости распознавать и отфильтровывать все эти интересности.

Поэтому, бррРр. Шрифт для работы с текстом должен быть абсолютно прямой, тупой, без всяких завитушек. Чёткий, не размазанный, не подкрашенный на границах всеми цветами радуги при subpixel-rendering (ну различаю я эти subpixels, очень хорошо различаю, и это мешает).

Почему-то потребности людей, которые профессионально работают с текстом (с содержимым, а не с тем, как оно выглядит) никак не учитываются. И это печально.
Это всё вкусовщина конечно, но бумажные книги издавна печатались антиквой, и я никак не могу сказать, что новомодный набор рубленым шрифтом с изрезанным правым краем и без абзацных отступов хоть в чём-то лучше для восприятия, хотя он именно что «прямой и тупой».
В экранных шрифтах точно не будет единогласия до повсеместного распространения 300 ppi дисплеев. Вас раздражают радужные ореолы, верю. Я их почти никогда не вижу (в линуксе по крайней мере, ClearType пестрит гораздо больше), у меня действительно плохое зрение (хотя при 100 ppi пиксель на расстояние 60 см — это меньше 2′, что близко к пределу разрешающей способности здорового глаза). Но меня при этом напрягают лесенки растровых шрифтов, их я почему-то вижу и создаваемый ими шум не переношу.
Так разве абзацные отступы и переносы — это проблема шрифтов? Я могу и Верданой набирать всё в TeX аккуратно.

НО. У меня есть два сомнения на счёт того, что Вы написали.

1. Я сомневаюсь, что у нас будут 300dpi дисплеи. Его, конечно, можно изготовить, но какого он будет размера? Если обеспечивать и размер, и такой мелкий пиксель, то какого же разрешения такое устройство должно быть? А это уже чисто технологическая проблема: как развести столько проводочков?

2. Как бы нам не было печально (я среди скорбящих по закрывающимся книжным магазинам), но бумага будет уходить из оборота. Останется, скорее всего, как вариант для элитных, очень дорогих изданий, и как архивная hardcopy, которая требует минимум технологий для прочтения. Но массовый пользователь будет читать и писать электронно. Да и уже так. Я давным давно не читаю бумажные книги, потому что, того, что мне интересно и нужно в книжном (даже Ozon) фиг найдёшь, приходится читать электронные варианты.

То есть, как бы, область применения шрифтов поменялась, а нам по-прежнему пытаются обеспечить отрисовку текста на устройстве с заметными пикселями 'книжными' шрифтами. Вот взять тот же TeX, он же в итоге выдаёт некий документ для печати, а не для чтения на экране. И печатается всё просто отлично, но только проблема в том, что PDF'ки уже почти никто не печатает. Разве только для почеркаться, когда идёт какое-нибудь рецензирование.

А необходимость читать вот эту PDF'ную размытую размытость, хоть ClerType'ом, хоть Graphite'ом, лично меня уж очень напрягает.

Нужно, чтобы в головах компьютерных типографов уже что-то изменилось немного, и они начали придумывать другие алгоритмы, а то современные-то они же совсем примитивные. И все эти лесенки, когда идёт рендеринг без размазывания причины имеют две: (1) книжные шрифты, (2) ОЧЕНЬ примитивные алгоритмы растеризации. Весь этот subpixel rendering, который представляется, как продвинутая технология, на деле-то является просто расширением того же тупого отрисовывания трапециями фигурки буквы. IMHO, для того, чтобы сделать красиво, нужна немного другая геометрия и математика, но кто этим займётся? Если основная задача типографа-программиста — это вот ковыряние в настройке каких-то процентиков в баллансе яркости.

БррРрр. Неприятная, imho, ситуация.
1. Пример большого монитора с близким (200 ppi) разрешением — IBM T220. Пример маленького экрана с разрешением 300 ppi — iPhone 4. Вопрос в том, удастся ли снизить цену большого дисплея с таким разрешенеим до приемлемой. В этом я тоже сильно сомневаюсь.
2. А вот как избежать одновременно и размазывания, и лесенок, и шрифтов а-ля «семисегментный индикатор» я совершенно не представляю.
Всегда можно показать 1000 человекам три картинки и попросить выбрать ту, которая больше нравится. Это будет объективно.
Только нужно брать людей, не связанных с компьютерами, иначе они выберут не «лучшую» картинку, а похожую на то, к чему они привыкли
А как быть людям, которые связаны с компьютером? Зачем вообще делать рендеринг шрифтов для показа на мониторе компьютера, основываясь на мнении людей, которые с компьютерами не связаны? это какой-то non-sense получается.
Дело в том, что Вам сейчас дать новый шрифт (который объективно может быть лучше чем сейчас), то привычка заставит говорить, что он «какой-то не такой».
А если производители ПО его насильственно ввели, то народ бы через какое-то время привык и всем бы стало лучше.

Для меня, к примеру (хотя тут дело может быть в том, что я и от искусства далек, и зрение не очень) во многих случаях разница в шрифтах, или оформлении чего-либо малозаметна. Будь-то шрифты, обои, скринсейвер или цветовая гамма. Причём разницу-то я вижу, но оценить — как лучше не могу. Во многих случаях «лучшим» для меня кажется то, к чему я привык.

Поэтому делать выбор нужно или на основе каких-то теоретических соображений, или предоставить выбор комитету людей, у которых не сформировалась привычка. В случае шрифтов — «не сформировалась привычка» у людей, которые не пользовались ранее компьютером.

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

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

Изначально-то я отвечал на комментарий про 1000 человек, и говорил, что если кто-то будет оценивать качество шрифта, то пусть это будут люди, со «свежим» взглядом, не приученные к какому-то определённому начертанию, за годы использования определённой ОС. Про профессионалов речи не шло.
Ой. Вот это ещё хуже. Профессиональные шрифтовщики уже наворотили столько профессионального, что дико страшно. Простую буковку превратили в какой-то мегасложный объект, потому что реально, руководство по typesetting'у оно толще, чем учебник по Общей Теории Относительности раза в три, и во столько же раз непонятнее и запутанней. То есть реально, люди, которые занимаются типографией, совсем уже куда-то ушли в отрыв от потребностей простого читателя-писателя.
Напрасно вы так. Закопайтесь в любую узкоспециализированную область поглубже, и вы узнаете, что там тоже всё сопоставимо по сложности с ОТО ;-)
Так о том и речь: типографы копаются в каких-то там совершенно дремучих своих шрифтовых дебрях, а проблемы, заметные обычным пользователям, совсем не решаются: (
Ой, да ладно. Уверен, что большинство людей, связанных с компьютером просто плюются на шрифты существующие. Одна из популярнейших тем у программистов: народ, подскажите нормальный шрифт для работы. И этих шрифтов для программистов уже сотни вокруг, а всё никак нормальный не могут сгенерировать (вообще, не понимаю, в чём тут мистическая проблема: убрать засечки, расставить буквы пошире, сбалансировать ширину и высоту). Так что, у компьютерных людей нет никаких привычек, потому что не к чему привыкать, нет хорошего варианта.
Ну у меня практически никогда не было недовольства стандартными шрифтами.

Может быть те программисты, что вечно ищут «идеальный» шрифт, ждут от него чудес?
Типа настроят IDE, и код будет писаться сам, можно будет работать по 20 часов и не уставать? Тогда понятно, почему до сих пор не нашли.
Вот здесь, в комментариях, много раз задается вопрос про идеальный шрифт «по умолчанию». Я думаю, там эта дискуссия будет уместнее, чем здесь. Я же, всё-таки, не профессиональный шрифтовик :)
Ну. Они ищут именно такой, от которого не уставали бы во время длительной работы. На который бы просто можно было бы не обращать внимния. Для меня вот такой шрифт для WEB-это Verdana. Минимум украшательств. Я не задумываюсь совсем о буквах, когда пишу этим шрифтом. А вот когда пишу Courier'ом, то часто скатываюсь в 'любование' буковками. Это плохо, в общем-то.
Интересно, но не для всех типов шрифтов отображение «как оно есть» подходит для компьютера, а сглаживание только мешает. Яркий пример — азиатские иероглифические шрифты (китайский, японский).

Например, в Mac OS текст, написанный мелкими иероглифами, превращается в полную кашу и очень плохо воспринимается из-за попытки отобразить мелкий текст «как он есть». В этом плане, стандартный механизм отображения шрифтов Windows (и Ubuntu в стандартной поставке) намного лучше подходит для таких текстов. Пусть геометрия не на 100% соответствует тому, что нужно, но зато читаемость очень хорошая.

Было бы здорово, если бы разработчики систем больше задумывались о том, что их могут использовать в других странах и с другими системами письменности. И, конечно, чем больше у пользователя «крутилок», тем лучше — можно настроить все под себя.
Вот, кстати, что меня всегда сильно поражало в шрифтах по умолчанию в операционных системах Microsoft — это то, насколько там красивые и читаемые растровые иероглифические шрифты. Вместить 4-радикальный иероглиф в сетку пикселей типа 8*8 — это надо иметь определенный талант :)
Кстати — Office:Mac 2011 использует FreeType
Почему бы просто не отключить сглаживание для шрифтов <10pt?
я у себя делал это както так…
в файл /etc/fonts/fonts.conf и файл
/etc/fonts/local.conf
Добавляем:
<match target="font">
    <test name="size" compare="less">
        <double>14</double>
    </test>
    <edit name="antialias" mode="assign">
        <bool>false</bool>
    </edit>

UFO just landed and posted this here
Одна из моих первых статей была именно про это. Для тех кого интересует современный код (без всяких там windows api), вот ссылка.
Пожалуйста, давайте не будем о том что «стильно, модно, молодежно» и что WinAPI это не модно. Простите, но темы вашей статьи и этого перевода, мягко говоря не одно и тоже. Да и если говорить о вашей статье, реализация, уж простите, не блещет.
Эмм… я к тому, что если вы посмотрите на исходники алгоритма в оригинале, то вряд ли много поймете, т.к. там помимо алгоритма еще а) использование winapi; и б) много бит-манипуляционной магии.

А сам по себе алгоритм достаточно прост.
У вас в статье картинки пропали. Перезалейте, пожалуйста (на вебархиве их тоже нет, увы).
Где-то читал (возможно даже здесь, на хабре), что MS не использует в WinXP субпиксельное позиционирование для совместимости со старыми программами, чтобы текст в них сохранил ширину. То есть расстановка глифов в строке для TrueType шрифтов такая же, как и для шрифтов без сглаживания вообще.
Так и есть. При использовании gdipp ( code.google.com/p/gdipp/ ), который меняет рендеринг шрифтов с ClearType на FreeType, текст в некоторых формах не помещается в определенное для него место.
Это библиотека работает для шрифтов, отрендеренных средствами DirectX? Я, к сожалению, не имею представления как он работает.
Эта библиотека заменяет системный рендеринг шрифтов своим, основанным на FreeType. Она ставит хуки на функции вывода текста GDI.
en.wikipedia.org/wiki/ClearType#ClearType_in_WPF
DirectX использует аппаратное ускорение для рендера текста, и встаёт вопрос — а использует ли он GDI вообще?
Собственно вот, что я имел ввиду.
Вау, спасибо за ссылку. Поставил.
в Vista, по умолчанию установлено 96dpi. у меня экран 129dpi и поэтому текст выглядит очень мелко. если выставить в настройках эти самые 129dpi, то текст во многих приложениях перестает помещаться в отведенную ему место.
Ни наю, ни наю. Но лично мне пример с автохинтингом больше понравился. Более чёткий и читабельный.
ID в URL второй части (112400) на единицу меньше ID первой части (112401). =)
Надеялся получить правильный порядок частей. Чтобы сначала на главной висела первая часть, затем — вторая.

Не вышло.

Зато в блоге «типографика» по порядку идут.
А есть какое-нибудь практичное пошаговое руководство, как сделать шрифты линуксе лучше?
Эх, очень жаль, antigrain.com видимо тоже ушел из жизни… и все рисунки к статье были туда…

Интересно читать серию таких статей в 2022 году, с телефона с 411 DPI)

Sign up to leave a comment.

Articles