2010-10-17 3 views
3

Я пытаюсь сгладить рендеринг текста с помощью сглаживания. Но это не сглаживание.Сглаживание шрифта с использованием cairo

http://tinypic.com/r/2h7dy1i/4 http://oi38.tinypic.com/2h7dy1i.jpg

Первая строка является PNG изображение, созданное с помощью Pango и Каиром. Вторая строка - это только тег html <span>. Это в firefox, Ubuntu с Gnome DE. Разницу можно лучше понять, если вы сравниваете «W» и «v» между двумя строками.

Код ответственность нарисовать текст можно найти на http://pastie.org/1073683 вариантов шрифтов устанавливаются на линиях 17 и 20, как так:

// setting up antialiasing 
cairo_font_options_set_antialias(cfo, CAIRO_ANTIALIAS_GRAY); 

// set the font options to cairo 
cairo_set_font_options(this->cro, cfo); 

Может кто-нибудь пожалуйста, скажите мне, как я могу сделать эти две строки выглядят одинаково ?

ответ

2
cairo_font_options_set_antialias(cfo, CAIRO_ANTIALIAS_GRAY); 

Вы просили об этом, вы его получили. Чтобы получить совпадение, вам понадобится CAIRO_ANTIALIAS_SUBPIXEL. Это, однако, не подходит, когда вы рисуете текст для изображения, которое может отображаться на другом компьютере. Нет никакой гарантии, что монитор на этой машине представляет собой ЖК-панель с полосками RGB в предсказуемом порядке. Или что это в альбомной ориентации. Или что он отображается с точным оригинальным размером. Когда есть несоответствие, текст будет выглядеть довольно бедно.

+0

Я буду использовать этот код для создания изображения на моем сервере под управлением Debian lenny. Люди увидят это на своем мониторе. И у меня нет способа узнать, какой монитор они будут использовать. Поэтому из вашего ответа мне кажется, что если используется VRGB, сгенерированное изображение будет выглядеть сглаженным на дисплее, совместимом с VRGB. И это будет плохо выглядеть на другом дисплее. Я прав?? –

+0

То, что у вас есть, является правильным. Сравните с этим: http://meta.stackexchange.com/questions/65398/disable-cleartype-subpixel-rendering-for-image-based-flair –

+0

Итак, Firefox также определяет мой тип отображения. Затем используется опция совместимого субпиксельного антиалиаса. Если да. как узнать, какой вариант antialias использует firefox? и как я имитирую то же поведение в моем скрипте, чтобы, по крайней мере, в моем компьютере, я вижу, что он сглажен правильно. –

Смежные вопросы