Linux с красивыми шрифтами

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.

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

Читайте также:  Регистрация службы отсутствует или повреждена центра обновления windows

Позволю себе немного пафоса. Пока что Майкрософт не спешит дарить патенты на 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 пока не стабилизировался.

Читайте также:  Сбивается время windows после линукс

Для консервативного Debian, наверное придется ждать следующего релиза, а у пользователей Ubuntu и так все хорошо со шрифтами, им торопиться некуда.

Источник

LiveStreet

Блог им. panoptus → Красивые шрифты в Linux

Людям, которые пользуются ЭЛТ-мониторами, шрифты в Linux кажутся нормальными. Но, к счастью, таких людей с каждым годом все меньше и меньше, а большинство уже обзавелось TFT.
Для того, чтоб шрифты у вас на TFT-мониторе шрифты выглядели красиво нужно совсем немного.
Приступим.

Установим паки шрифтов. Команда установки для Ubuntu / Kubuntu:

В других дистрибутивах вы без труда должны найти эти пакеты, возможно только под немного другими названиями. Если вы знаете названия этих пакетов в репозитории своего дистрибутива — напишите их в комментариях.

ttf-mscorefonts-installer – пак шрифтов майкрософта, многие из которых используются на популярных сайтах.
ttf-liberation – шрифты, которые я рекомендую использовать в качестве дефолтных в системе, если у вас не Ubuntu / Kubuntu, для них используйте шрифт «Ubuntu».

Дальше, если у вас KDE:
Идем в Настройка-Параметры системы-Внешний вид
Нажимаем «Изменить все шрифты» и выбираем «Liberation Sans», если у вас Ubuntu / Kubuntu — вам может больше понравиться шрифт «Ubuntu»

Использовать сглаживание: Параметры системы
Использовать другой DPI: выключено

Если ваш DE – Gnome:
Идем в Система – Параметры – Внешний вид – Шрифты

Там везде, кроме моноширинного выставляем шрифт «Liberation Sans» или «Ubuntu» для ОС Ubuntu / Kubuntu. Моноширинной оставляем дефолтный.
Размеры оставляем везде такие же, кроме моноширинного, его уменьшаем до 9-го (результат можно увидеть в терминале).
Затем заходим в «Подробнее», выставляем «Сглаживание» – Нет, «Уточнение» – Среднее (или на ваш вкус).

Для всех систем:
Теперь нужно сделать тонкую настройку шрифтов, чтоб система не сглаживала нужные нам шрифты нужных размеров (приблизительно так ведет себя со шрифтами XP).
К этому я шел долгим и нудным тернистым путем, но вам повезло!
Итак, создаем в своем домашней директории файл «.fonts.conf»
Записываем в него следующее:

Немного расшифровки .fonts.conf:
В этом конфиге включено сглаживание для всех шрифтов всех размеров, кроме тех, которым оно не нужно:
Liberation Sans, Liberation Serif, Tahoma, Verdana, Arial, Times, Times New Roman, Sans, Serif, monospace, helvetica, ubuntu но только если эти шрифты в размере пикселей (не путать с размером шрифта) от 10 до 17.

Для того, чтоб в инете шрифты выглядели номально (а почти все сайты используют шрифт tahoma) нужно найти шрифты tahoma.ttf и tahomabd.ttf (желательно в принадлежащей вам винде 🙂 ) и закинуть их в папку .fonts в вашей домашней директории. Если такой папки еще нет — смело создавайте.

Все, рестарт и энджой!

Результатом вашей работы должно стать что-то вроде этого:

Источник

Делаем красивые шрифты с новым freetype2 в Linux

Итак, друзья, в моей жизни произошло поворотное событие. Эта своеобразная точка бифуркации, сулила мне или отказ от старого, удобного и привычного инструмента — infinality, в угоду новому freetype2, который, по моему мнению, не компенсировал все возможности infinality, или инерционное поедание кактуса со старым инструментом — infinality или вообще послать все эти ваши линупсы и уйти в ubuntu.

Читайте также:  Windows 10 доступ по сети политика

Началось всё с того, что в Manjaro Linux перестали работать репозитории bohoomil, собственно из которых, мною ставились патченные freetype2-infinality, fontconfig-infinality и cairo-infinality. И всё бы ничего, но с недавним обновлением в KDE, иксы отказывались стартовать, как выяснилось по причине несовместимости новых пакетов harfbuzz и harfbuzz-ico с патченными infinality файлами. Первым решением было заморозить обновление harfbuzz и harfbuzz-ico в /etc/pacman.conf, но со временем я понял, что это лишь временное решение и нельзя игнорировать проблему вечно.

Так же рекомендую прочитать статью продолжающую мой цикл о линукс под названием: Linux mint 19 Tara системные требования (Xfce, Cinnamon, Mate)

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

Первым делом ставим freetype2, соглашаясь на удаление infinality патченных версий, если у вас таковые были установленны, если нет, то пропускаем это шаг(если установлены ubuntu патчи, то тоже выполняем этот шаг):

Далее устанавливаем нужные, для приведения к красивости, шрифты:

В двух словах опишу что это за шрифты:

  • ttf-croscore — шрифты из ChromeOS, они метрически совместимы с MS шрифтами, и уж точно не хуже их выглядят, содержат Arimo, Tinos, Cousine и прочие.
  • ttf-dejavu и ttf-liberation — базовые шрифты в Manjaro, и есть по умолчанию, насколько я знаю в любом DE, если ошибаюсь исправьте в комментариях.
  • ttf-carlito — метрически совместим с MS Calibri
  • ttf-caladea — метрически совместим с MS Cambria

Ну и теперь переходим к самому важному шагу, выбираем метод рендеринга шрифтов. Начиная с freetype2 версии 2.7 появились следующие варианты:

  • truetype:interpreter-version=35 # Classic mode (используется по умолчанию в freetype2 — 2.6)
  • truetype:interpreter-version=38 # Infinality mode (более кастомизируемая настройка использует встроенные Infinality патчи)
  • truetype:interpreter-version=40 # Minimal mode (используется по умолчанию в freetype2 — 2.7)

Меняется это редактированием выполнив команду:

Меняем нижнюю строку делая ее раскомментированной:

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

Приводя его к виду:

приводим к виду:

После чего заставляем xrdb прочесть наш конфиг:

Если используете Gnome, Mate, Cinnamon, Budgie, то измените в настройках сглаживание с grayscale на RGBa. После всего проделанного перезагружаемся или просто убиваем иксы ctrl+alt+backspace.

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

Источник

Оцените статью