Pull to refresh
  • by relevance
  • by date
  • by rating

Разоблачение алгоритмов растеризации шрифтов (2/2)

Typography
Translation
(вторая часть перевода статьи Разоблачение алгоритмов растеризации шрифтов)

Linux


Наследуя худшее


Windows растеризует шрифты плохо, Linux ещё хуже. Во всех Linux-системах, которые я видел, используется FreeType [10] Дэвида Тёрнера, Роберта Вильгельма и Вернера Лемберга. Это отличная библиотека, но способ её использования, к сожалению, нельзя назвать удачным. Типичный скриншот Linux выглядит так:



Вот полный скриншот:
ссылка

Сразу заметна проблема — чёрные пятна в скругленных углах, образовавшиеся в результате сглаживания. Вцелом, можно сказать, что косые штрихи выглядят тяжелее чем вертикальные, что в регультате производит впечатление «грязи». Вы можете возразить, что FreeType и Linux могли бы использовать схожую с ClearType субпиксельную растеризацию, но по мне это не даёт заметных преимуществ.
Читать дальше →
Total votes 124: ↑121 and ↓3+118
Views9K
Comments 48

Разоблачение алгоритмов растеризации шрифтов (1/2)

Typography
Translation
Попытка улучшить алгоритмы растеризации шрифтов, пользуясь исключительно общедоступной информацией.

От переводчика


В первый раз я столкнулся с этой статьей в 2008 году. С тех пор я неоднократно задумывался о переводе (так как лучшего материала по теме не найти), и вдруг ссылка на оригинал всплыла на Хабре в обсуждении топика «Сглаживание шрифтов, анти-алиасинг, и субпиксельный рендеринг». Это стало решающим фактором (раз на материал ссылаются, значит, он кому-то нужен), и работа была, наконец, закончена.
Читать дальше →
Total votes 132: ↑130 and ↓2+128
Views12K
Comments 60

Объявлен сбор пожертвований на развитие проекта FreeType

Open source
Вы используете iPhone, iPad или Android-устройство? Может быть вы используете Linux? Все эти платформы используют FreeType для отображения шрифтов и делают это отлично.

FreeType используется в сотнях миллионов компьютеров, но при этом никто не спонсировал его разработку. Не очень справедливо, правда?

Кроме поддержки пользователей и исправления багов, собранные деньги пойдут на реализацию некоторых важных и полезных вещей вроде поддержки WOFF.

Подробнее на странице пожертвований
Сайт проекта FreeType
Total votes 44: ↑38 and ↓6+32
Views7.3K
Comments 30

Незаметный релиз FreeType 2.5 — прорыв в рендеринге шрифтов

Open source
image Проект FreeType — это библиотека, которая используется для растеризации шрифтов и операций над ними. В частности используется для отображения шрифтов в X11.

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

Дальше — больше. В конце 2012 был объявлен сбор денег на развитие проекта. А в июне 2013 фандрайзинговая кампания успешно завершилась, принеся проекту 20 тысяч долларов. Тем временем компании Adobe (которая раньше мешала техническому прогрессу своими патентами!) и Google совместно внесли ряд улучшений, которые, в частности, значительно улучшили работу приснопамятного хинтинга на всех поддерживаемых проектом платформах. Вместе с рядом других улучшений это привело к выпуску новой версии — FreeType 2.5.

Особенности релиза
CHANGES BETWEEN 2.4.12 and 2.5

I. IMPORTANT BUG FIXES

— The cache manager function `FTC_Manager_Reset' didn't flush the
cache.

II. IMPORTANT CHANGES

— Behdad Esfahbod (on behalf of Google) contributed support for
color embedded bitmaps (eg. color emoji).

A new load flag, FT_LOAD_COLOR, makes FreeType load color
embedded-bitmaps, following this draft specification

color-emoji.googlecode.com/git/specification/v1.html

which defines two new SFNT tables, `CBDT' and `CBLC' (named and
modeled after `EBDT' and `EBLC', respectively). The color
bitmaps are stored in the new FT_PIXEL_MODE_BGRA format to
represent BGRA pre-multiplied sRGB images. If PNG support is
available, PNG color images as defined in the same proposed
specification are supported also.

Note that color bitmaps are converted to grayscale if client
didn't ask for color.

— As announced in the previous release, the old FreeType CFF
engine is now disabled by default. It can be conditionally
compiled by defining the configuration macro
CFF_CONFIG_OPTION_OLD_ENGINE.

— As announced in the previous release, all code related to macro
FT_CONFIG_OPTION_OLD_INTERNALS has been removed, thus becoming
obsolete.

III. MISCELLANEOUS

— The property API (`FT_Property_Get' and `FT_Property_Set') is
now declared as stable.

The exception, however, are the experimental auto-hinter
properties `glyph-to-script-map' and `fallback-script' which are
subject to change in a forthcoming release.

— `ftview' has been updated to support color embedded bitmaps; it
can be toggled on and off with key `c'. The small cache toggle
is now key `K'.

— It is now possible to control the version of the TrueType
hinting engine using the new `interpreter-version' property of
the `truetype' module: Versions 35 and 38 (the default) are
supported, which roughly corresponds to disable and enable
subpixel hinting support, respectively.

In both `ftview' and `ftdiff', switching between the two
versions can be done with key `H'. In the `ftbench' demo
program, command line option `-H' has been extended to activate
the non-default interpreter version.

— The `ttdebug' program has been further improved. In particular,
it accepts a new command line option `-H' to select the hinting
engine.

— Another round of TrueType subpixel hinting fixes.

— The `apinames' tool can now create an import file for NetWare.

— 64bit compilation of the new CFF engine was buggy.

— Some fixes to improve robustness in memory-tight situations.

Читать дальше →
Total votes 76: ↑65 and ↓11+54
Views25K
Comments 22

Сборка FreeType2 под iOS

Development for iOS
imageimage
В интернете есть множество заметок о том, как собирать freetype под iOS.
Все эти заметки объединены общей характеристикой — они не работают.
Дело в том, что все инструкции оперируют gcc для сборки библиотеки, но начиная с XCode 5 gcc не входит в поставку и для сборки под iOS надо использовать clang.
Нет ни одной заметки о том, как компилировать правильно.
Исправляем эту несправедливость.

Читать дальше →
Total votes 23: ↑18 and ↓5+13
Views7.6K
Comments 21

Современный рендеринг текста в Linux: часть 1

TypographyDevelopment for LinuxGraphic design
Translation
Добро пожаловать в первую часть «Современного рендеринга текста в Linux». В каждой статье из этой серии мы разработаем самодостаточную программу на C для визуализации символа или последовательности символов. Каждая из этих программ будет реализовывать функцию, которую я считаю необходимой для современного рендеринга текста.

В первой части настроим FreeType и напишем простой рендерер символов в консоли.



Вот что мы будем писать. А вот и код.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Views8.4K
Comments 15

Learn OpenGL. Урок 7.2 – Отрисовка текста

ProgrammingC++Game development
Translation
Tutorial

imageВ некоторый момент ваших графических приключений вам захочется вывести текст через OpenGL. Вопреки тому, что вы могли ожидать, получить простую строку на экране довольно сложно с низкоуровневой библиотекой, такой как OpenGL. Если вам не нужно больше 128 различных символов для отрисовки текста, тогда это не будет сложно. Сложности появляются, когда у символов не совпадают высота, ширина и смещение. В зависимости от того, где вы живете, вам может потребоваться больше 128 символов. А что, если вам захочется спецсимволов, математических или музыкальных символов? Как только вы поймете, что отрисовка текста — не самое простое занятие, то к вам придет осознание того, что это, скорее всего, не должно принадлежать такому низкоуровневому API, как OpenGL.


Поскольку OpenGL не предоставляет никаких средств для отрисовки текста, все трудности этого дела оказываются на нас. Поскольку не существует графического примитива "Символ", нам придется придумывать его самим. Уже есть готовые примеры: рисовать символ через GL_LINES, создать 3D-модели символов или отрисовывать символы на плоские четырехугольники в трехмерном пространстве.


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

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Views14K
Comments 7