LINUX.ORG.RU

Cоответствие шрифтов в Linux и Windows (c++)


0

2

Доброго времени суток!

Может кто занимался проблемами идентичного отображения шрифтов выводимых с помощью GDI+ и любыми другими открытыми библиотеками С++? Пробовал выводить с помощью Cairo (anti-aliasing,hinting и т.п.), качество не очень устраивает - буквы разной толщины, пиксели затенения не совпадают и т.п. артефакты ...

поделитесь опытом, на сколько удалось добиться идентичности с Windows?


Спасибо за помощь!

Очень зависит от дистрибутива (какие патчи они на cairo) накладывали и от настроек хинтинга и антиалиазинга. Одинакого везде не сделать (хотя это и плюс — каждый настроит как ему нравится)

xorik ★★★★★
()

>качество не очень устраивает - буквы разной толщины, пиксели затенения не совпадают и т.п. артефакты ...

А ты шрифты другие попробуй.

anonymous
()

>поделитесь опытом, на сколько удалось добиться идентичности с Windows?

Странно, многие наоборот пытаются использовать freetype на офтопике для достижения оптимального качества рендеринга.

annulen ★★★★★
()

> поделитесь опытом, на сколько удалось добиться идентичности с Windows?

Самый главный вопрос: зачем.

geekless ★★
()
Ответ на: комментарий от geekless

чтобы сразу нейтрализовать всякого рода офтопик - переносится приложение из Windows под Linux - есть очень много разного рода графической информации которая генерируется им (приложением), необходимо максимальное соответсвие.

art_corp
() автор топика
Ответ на: комментарий от nikitos

Спасибо за ссылку ознакамливаюсь и с ней, - дата 2007, сейчас 2011 не уже ли ничего с тех времен не поменялось?

art_corp
() автор топика
Ответ на: комментарий от anonymous

Не вариант - тут все зависит от пользователя, а не от моих желаний и предпочтений.

art_corp
() автор топика
Ответ на: комментарий от xorik

хотелось бы конкретики - какие дистрибутивы, какие патчи. Качество получаемого результата в процентах, мы же все здесь тех. специалисты - для нас важны факты.

art_corp
() автор топика

> на сколько удалось добиться идентичности с Windows?

Не получится её добиться достаточно хорошо, как ни крутись. Единственный вариант - использовать на обеих системах растровые шрифты.

Кстати, растеризация - вариант для эмуляции оффтопика.

LamerOk ★★★★★
()

Запомни, пожалуйста, одну простую вещь. Ренедерингом шрифтов в альтернативных системах занимается одна-единственная библиотека: freetype. И ИМХО вообще существует всего 3 библиотеки: виндовая, МакОсная и freetype.

Ессно, freetype — достаточно низкоуровневая библиотека, поэтому над ней существуют многочисленные надстроки, напр Xft, Pango, тот же Cairo, решающие различные насущные проблемы.

Нужно понимать, что процесс рендеринга TT шрифтов на устройствах с низким разрешением крайне сложен. В каждем файле TT шрифта есть байткод виртуальной стековой машины, который обеспечивает т.н. hinting: привязку получившихся кривых к сетке (если хоть раз самостоятельно рисовал кривые на дисплее — с легкостью поймешь о чем я).

Проблема № раз: единой спеки на виртуальную машину НЕТ, реализация ее нетривиальна и как результат огрехи в отображении. Например, до недавнего времени во freetype был винрарнейший глюк в отображении глифов x, 8 и 6 шрифта Tahoma 8pt @ 96 dpi. А в убунту 11.10 добавили глюк с отображением глифа «б» на каком-то мелком виндовом Times и ХЗ, то-ли это дистрибутивные проблемы, то-ли проблемы файрфокса.

Проблема № два: каждый глиф шрифта пилится по сути дела руками под конкретную библиотеку и dpi. Так что если Tahoma 8pt @ 96 dpi будет показываться нормально, то на 97 dpi она может показываться очень криво: неминуемые ошибки округления сделают свое дело...

Проблема № три: dpi, используемый при расчете ФИКСИРОВАН. Да-да, фиксирован. Под виндой — 96, линуксы тоже не отстают, в MacOS — ХЗ. Но это не отменяет того факта, что dpi может быть и 72 и 100. Со всеми вытекающими.

Проблема № четыре: некоторые инструкции байткод-интерпретатора защищены патентами. Держатель — Яббл. (К слову сказать, Яббл и есть аффтар TT, что произошло из-за оголтелой копирастии Адобе в конце 80-х годов) И хотя в наст. момент срок действия патента истек, некоторые дистрибутивы (RedHat, например) не используют полную версию freetype'а (задается спецфлагом при компиляции). Результат вполне закономерен: ШГ.

Проблема № пять: различные дистрибутивы оголтело патчат freetype. Тут сказать мне нечего.

Проблема № шесть: свободных шрифтов с полноценным хинтингом НЕТ.

Проблема № семь: антиалиасинг во всех библиотеках рендеринга шрифтов разный и защищен тучей патентов.

Вывод напрашивается сам собой: в общем случае у тебя ничего не выдет.

Если нужно пиксель-в-пиксель: таскай за собой freetype, она и под виндой работает. Но велика вероятность ШГ.

Macil ★★★★★
()
Ответ на: комментарий от Macil

Ах да, забыл еще упомянуть что dpi применяется при переводе pt -> px и на разных dpi физический размер шрифта будет разным.

Macil ★★★★★
()
Ответ на: комментарий от Macil

Я хоть не топикстартер, но разъяснения прочёл с большим интересом, спасибо.

Предполагал, что со шрифтами всё запущено, но не знал, что настолько.

hobbit ★★★★★
()

Привыкай к линуксовым шрифтам и через некоторое время виндовые шрифты покажутся говном.

anonymous
()
Ответ на: комментарий от Macil

> dpi, используемый при расчете ФИКСИРОВАН. Да-да, фиксирован. Под виндой — 96, линуксы тоже не отстают

Что-что?

geekless ★★
()
Ответ на: комментарий от geekless

Поменяйте DPI под виндой и половина программ поедет, так как написаны без Layout'ов и координаты виджетов заданы в пикселях.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.