Страницы
- Android (21)
- Dev (55)
- Dingux (14)
- EZX (31)
- Half-Life (3)
- Manuals (34)
- MotoMAGX (166)
- Others (43)
- Reviews (10)
Поиск
Мне очень нравится Microsoft’овский моноширинный шрифт Consolas, разработанный Luc(as)’ом de Groot’ом специально для технологии сглаживания ClearType. На мой взгляд, основное из преимуществ этого шрифта — это перечеркнутый нуль, сильно отличающийся от буквы «O». Ну и полная поддержка кириллицы, разумеется. Однако в некоторых дистрибутивах GNU/Linux с отображением текста с помощью этого и некоторых других шрифтов не всё так гладко, в прямом и переносном смыслах.
Шрифт Consolas, изображение взято с en.wikipedia.org
Перенесенные из MS Windows «*.ttf»-файлы шрифта никак не хотели отображаться у меня в Linux Mint 15 KDE, так же, как и в Windows 7. Субпиксельное сглаживание, применявшееся в этом дистрибутиве, постоянно «размазывало» текст, отображаемый этим шрифтом, делая его невероятно отвратным. Иногда было невозможно отличить жирный текст от нормального.
К счастью, немного погуглив в интернете, я наткнулся на замечательный проект infinality, энтузиасты из которого разрабатывают патчи для библиотеки freetype. Благодаря этому проекту можно не только улучшить качество рендеринга шрифтов, но и тонко настроить способ субпиксельного сглаживания: имеется несколько предустановленных схем, которые имитируют популярные технологии рендеринга текста в различных операционных системах.
Установка infinality
Установка патчей от infinality в debian-based дистрибутив довольно проста. С помощью команд, опубликованных ниже, добавляется репозиторий с патченными библиотеками, обновляется список доступных пакетов, устанавливается fontconfig-infinality и обновляется библиотека libfreetype6.
Инструкции по установке infinality в другие GNU/Linux дистрибутивы можно найти здесь:
После установки infinality, система нуждается в настройке. Для этого выполняем следующую команду:
sudo bash / etc / fonts / infinality / infctl . sh setstyle
После её выполнения вам будет предложено сменить стиль сглаживания шрифтов:
Просто набираем цифру, к примеру, в контексте этой статьи это «6», и нажимаем «Enter».
Для более тонкой настройки необходимо отредактировать файл «/etc/profile.d/infinality-settings.sh»:
sudo vim / etc / profile . d / infinality — settings . sh
В этом файле можно изменить параметры каждого стиля, полностью настроив отображение шрифтов под себя. Этот файлик неплохо прокомментирован, что поможет вам освоиться в многочисленных параметрах рендеринга.
Кстати, в Linux Mint 15 KDE и других дистрибутивах GNU/Linux, использующих в качестве «login screen» приложение mdm, всплыл очень интересный баг: при использовании патчей от infinality, mdm не стартует автоматически. И при запуске системы нас встречает голая консоль. Чтобы исправить это недоразумение, необходимо выполнить в терминале следующие команды:
И добавить в файл «
/.bashrc» строку, подгружающую настройки infinality:
echo — e ‘. /etc/infinality-settings.sh’ >>
Если вы используете Linux Mint, обязательно выполните команды, написанные выше. Если любой другой дистрибутив, не использующий mdm, просто проигнорируйте их.
После всего этого можно перезагрузить систему и увидеть новое сглаживание, максимально приближенное к технологии ClearType, использующейся в Windows 7.
Результаты
Посмотреть на получившиеся результаты и сравнить их между собой можно в этой таблице:
Шрифт | Linux Mint 15 KDE default; Use anti-aliasing: Enabled | Windows 7 default | Linux Mint 15 KDE infinality; Use anti-aliasing: Enabled |
| | | |
| | | |
| | | |
| | | |
Для демонстрации рендеринга шрифтов в различных системах используется кросс-платформенная IDE — Qt Creator
Как видно из таблицы, infinality просто отлично справляется со своей задачей. Шрифт Consolas отображается практически так же, как и в Windows 7. Только линии немного толще. В Courier New междустрочные интервалы менее заметны, чем в Windows 7, хотя начертание букв практически одинаково. Свободный шрифт Fira Mono рендерится с большими междустрочными интервалами, из-за чего в GNU/Linux-системах он выглядит немного «разряженным». Ну а пиксельный Terminus, как и ожидаемо, рендерится во всех системах одинаково. Различия как всегда в междустрочных интервалах.
Удаление infinality
Для удаления infinality и его репозитория следует выполнить следующие команды:
Источник
Как настроить сглаживание шрифтов в Linux Mint / Ubuntu как в Debian
В Минте/Убунту шрифты нормальные, но только на рабочем столе, в Yandex/Google браузерах — просто ужас, чего не скажешь про Debian. Вопрос в теме. Как?
И в Debian’e в хроме шрифты хрень! В FF же как в системных настройках;-) Как там у вас в убунтах — хз.
Не надо инфиналити,
по каким то причинам на некоторые приложение в минте (firefox точно) не распространяются системные настройки сглаживания. Этот файлик им поможет. Hintstyle можно и light выставить — эт на любителя
А чего Infinality не нужен?
А то я думал поставить себе попробовать
Да, так намного лучше, но инфиналити — просто красавчик!
Если кеды, то руками вообще ничего править не нужно. В натройках есть сглаживание. Я ставлю межпиксельное сглаживание RGB и легкий хинтинг.
а если gnome/cinnamon/xfce, то надо?
А вот тут не знаю. Надо пробовать.
Я к тому, что в тех окружениях тоже есть настройки шрифтов в «центрах настроек».
В минте, например, одновременно много разных версий софта (корица такая, из кусков), и тот же фаерфокс не подхватывает сглаживания указанного в окружении.
Лично у меня в арче с гномом 3.20 опера, как и весь остальной установленный софт (и на гтк2 и на къюти4/5) всё подхватывает.
Опять таки применительно к kde, в минте 17 у меня и в ff и в chromium шрифты норм все были, системные настройки подхватывали.
Источник
FreeType 2.7 — превосходное качество шрифтов Linux
В первой декаде сентября без фанфар и шумихи вышел FreeType версии 2.7, и это событие, без сомнения, можно назвать праздником на улице пользователей Linux, FreeBSD, NetBSD, ReactOS и других товарищей. Попробуем разобраться, от чего у нас такое безудержное веселье.
FreeType — библиотека с открытым кодом на Си, которую используют для растеризации шрифтов и операций над ними. В новой версии по-умолчанию используется алгоритм обработки инструкций TrueType v40.
Это позволило добиться качественного субпиксельного сглаживания шрифтов, как в майкрософтовском DirectWrite/ClearType , но на самом деле никакого субпиксельного сглаживания не используется. Кроме того, алгоритм v40 рендерит быстрее Infinality , который использовался в предыдущем алгоритме v38, при этом конечный результат не хуже.
Infinality, патенты и ШГ
Исторически, было две проблемы со шрифтами в Linux. Во-первых, это минное поле патентов Microsoft и Apple, из-за чего разработчики мучительно шли обходными путями. Частично, эту проблему решал набор патчей Infinality , но ценой была низкая скорость и чересчур усложненный код. К тому же, по словам мейнтейнера, FreeType разработчик Infinality потерял интерес к своему проекту.
Давайте приглядимся к этим патентам чуть подробнее. С 10-го мая 2010-года истекли три патента Apple на байткодное сглаживание TrueType шрифтов. Теперь нет необходимости отключать его использование по-умолчанию.
Patent US5155805:
Method and apparatus for moving control points in displaying digital typeface on raster output devices
Patent US5159668:
Method and apparatus for manipulating outlines in improving digital typeface on raster output devices
Patent US5325479:
Method and apparatus for moving control points in displaying digital typeface on raster output devices
Но еще 9 патентов на ClearType Майкрософт остаются в силе.
Patent US6239783:
Weighted mapping of image data samples to pixel sub-components on a display device
Patent US6243070:
Method and apparatus for detecting and reducing color artifacts in images
Patent US6282327:
Maintaining advance widths of existing characters that have been resolution enhanced
Patent US6307566:
Methods and apparatus for performing image rendering and rasterization operations
Patent US6393145:
Methods apparatus and data structures for enhancing the resolution of images to be rendered on patterned display devices
Patent US6421054:
Methods and apparatus for performing grid fitting and hinting operations
Patent US6624828:
Method and apparatus for improving the quality of displayed images through the use of user reference information
Эти патенты можно разделить на три условные категории:
- показ рисунков, когда информация отображается на уровне отдельных LCD субпикселей, вместо цельных пикселей
- показ тех же рисунков после применения разнообразных фильтров, например для подавления артефактов цветного окаймления
- обработка размеров и расстояний в красочном мире субпикселей
И это еще не все, есть и другие патенты. Прелесть ситуации еще в том, что Microsoft и Apple подписали соглашение о кросс-лицензировании в то время, как разработчики FreeType и их коллеги по цеху открытого ПО должны героически преодолевать ШГ препятствия.
Ценность этих патентов весьма сомнительна. Сразу же после того, как Майкрософт запатентовала ClearType, появились сомнения относительно их правомочности и новизны, причем писали об этом в газете Нью-Йорк Таймс, не на безызвестном случайном форуме. Один из активных разоблачителей Стив Гибсон на свой интернет страничке пишет, что ClearType — хорошо забытые технологии, которые Стив Возняк запатентовал 20 лет назад для Apple II. Никакого существенного прорыва технической мысли нет и в помине, а значит и интеллектуальной собственности нет.
Thus, Microsoft’s ‘ClearType’ application of sub-pixel text rendering does not represent the dramatic breakthrough that they claim and it can not be the valid subject for intellectual property acquisition.
К сожалению, американское патентное право устроено таким образом, что все это остается разговором в пользу бедных. Хорош он или плох, но патент есть, и значит, остальным надо платить денежки за его использование.
Позволю себе немного пафоса. Пока что Майкрософт не спешит дарить патенты на ClearType сообществу открытого ПО, как это сделала компания Adobe с OpenType/CFF движком. Об этом неплохо помнить, когда мы очередной раз видим слоган Microsoft сердечко Linux. По примеру американского президента Рейгана хочется воскликнуть: «Господин Наделла, если Майкрософт любит Linux, разрушьте эти патентные стены!».
Новый рендеринг для TrueType
Наследие программных алгоритмов рендеринга шрифтов для ЭЛТ мониторов 90-х гг. прошлого столетия — это вторая проблема Linux со шрифтами. Семейство TrueType шрифтов появилось на свет в эпоху зернистых мониторов с электронно-лучевыми трубками. В снимках экрана Windows 95 из текста так и лезут пиксели. Каждый отдельный глиф намертво вколачивался в сетку из пикселей. Майкрософт вложила в это дело уйму человеко-часов, обсчитывая и оптимизируя глифы для всевозможных размеров, чтобы т. н. основные вэб шрифты ( Arial, Times New Roman, Courier New и т. д.) на экране выглядели достойно.
Сизифов труд однако возымел последствия. Настала новая эпоха ЖК-мониторов и тут оказалась, что старые TrueType инструкции надо перепрограммировать для того, чтобы использовать эти новые возможности или хотя бы для того, чтобы шрифты отображались корректно. Нет необходимости пристегивать каждый глиф к сетке полных пикселей, вместо этого их можно пристегнуть к одному из трех субпикселей, даже к части их и добиться гораздо более качественного изображения, благодаря такому субпиксельному сглаживанию. Здраво рассудив, что переписать весь старый багаж TrueType инструкций нереально, в MS придумали асимметрическую сверх-дискретизацию и режим совместимости, в котором использовали много лихих приемчиков и костылей из инструкций старых шрифтов. Таким образом, и старые шрифты могли в некоторой степени воспользоваться увеличенным кратно горизонтальным разрешением.
Разработчики FreeType решили не городить этот огород и проигнорировали режим совместимости. Это конечно же имело последствия. Новые шрифты, натасканные на костыльный режим совместимости и асинхронную сверх-дискретизацию, смотрелись кривовато.
Впрочем, нашелся герой, который пошел трудным путем и реализовал в Infinality все вышеназванное спагетти старых и новых инструкций. Какое-то время FreeType включал в себя интерпретатор v38 — набор патчей Infinality , но затем код был удален в пользу интерпретатора v35. Разработчик Infinality поистине взялся за невыполнимую миссию — сделать так, чтобы шрифты выглядели лучше чем в Windows, и чтобы их можно было тонко настроить.
Here is the core secret to making fonts render like through DirectWrite/ClearType on Windows: There actually is no subpixel hinting going on here. Shock. The code simply ignores all horizontal hinting instructions.
В итоге, удалив Infinality , мейнтейнер FreeType сделал выбор в пользу простоты и чистоты кода. Так появился алгоритм обработки инструкций TrueType v40. Его принцип прост как копейка — полное игнорирование всех инструкций горизонтального сглаживания. Никакого субпиксельного сглаживания. Гораздо меньше труда, а результат практический одинаковый. Заодно решается проблема с шагом глифа и меж-символьными расстояниями в старых не обученных шрифтах.
Как достичь гармонии шрифтов с FreeType 2.7
Хорошая новость в том, что для этого ничего делать не нужно, обновления сами появятся в репозитарии вашего Linux или BSD дистрибутива. Просто обновитесь до новой версии и перезагрузите X.Org Server. Настройте FontConfig по вкусу. А плохая новость в том, что хочется прям сейчас, а ждать несколько дней или недель иногда тяжко. Ну а особо нетерпеливые пользователи могут сами собрать новую версию из исходников или установить с помощью штатного установщика пакетов. В моем Gentoo FreeType 2.7 пока не стабилизировался.
Для консервативного Debian, наверное придется ждать следующего релиза, а у пользователей Ubuntu и так все хорошо со шрифтами, им торопиться некуда.
Источник