ClearType и выворотка
От: Аноним  
Дата: 11.07.14 08:33
Оценка:
... — выглядит как гавно. Можно ли с этим что-то сделать? Конкретно, сценарий такой: темно-синяя полупрозрачная панель (непрозрачность — 80%, то есть, почти непрозрачная), поверх — белый текст Тахомой, 14px. Когда эта панель выводится над белым фоном, это выглядит вырвиглазно. Вокруг букв появляются какие-то черные разводы.

Почему я думаю, что дело в ClearType? Потому, что, во-первых, если его отключить, все достаточно зубчато, но этот мерзкий эффект исчезает. Во-вторых, в Inkscape используется какое-то свое сглаживание (оно не зависит от галки CT), похожее на адобовское, и в нем все то же самое смотрится вполне себе ничего.

Может, я CT неправильно готовлю? Точнее, не я, а либа, которую я использую. Я настраивал-настраивал CT, но текст как выглядет мерзостно, так и выглядит. Win8, если что.
Re: ClearType и выворотка
От: wildwind Россия  
Дата: 11.07.14 09:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>... — выглядит как гавно. Можно ли с этим что-то сделать? Конкретно, сценарий такой: темно-синяя полупрозрачная панель (непрозрачность — 80%, то есть, почти непрозрачная), поверх — белый текст Тахомой, 14px. Когда эта панель выводится над белым фоном, это выглядит вырвиглазно. Вокруг букв появляются какие-то черные разводы.


Для правильной работы алгоритмов субпиксельного сглаживания (в том числе и ClearType) необходимо для каждого пикселя точно знать и цвет шрифта, и цвет фона под ним. У тебя ClearType думает, что фон синий, а на самом деле синий с белым. Отсюда результат.

Думаю, сделать ничего нельзя. Только если делать всю композицию, кроме текста, на битмапе. А затем поверх рисовать текст.
Re: ClearType и выворотка
От: c-smile Канада http://terrainformatica.com
Дата: 14.07.14 04:41
Оценка: 27 (1)
Здравствуйте, Аноним, Вы писали:

А>... — выглядит как гавно. Можно ли с этим что-то сделать? Конкретно, сценарий такой: темно-синяя полупрозрачная панель (непрозрачность — 80%, то есть, почти непрозрачная), поверх — белый текст Тахомой, 14px. Когда эта панель выводится над белым фоном, это выглядит вырвиглазно. Вокруг букв появляются какие-то черные разводы.


Как ты думаешь почему в Windows/Aero, в windows caption буквы на белом glow фоне?

В GDI ClearType ничего не знает про альфа канал. Поэтому ClearType средствами GDI всегда должен рисоваться на чем-то непрозрачном.
Иначе поуличишь вот такую лабуду как в caption здесь



Сравни с буквами на непрозначном фоне там же. Это все GDI и его ClearType

А теперь смотрим на ClearType в Direct2D/DirectWrite:



Видишь разницу? DirectWrite знает и умеет рисовать с альфой.

А>Может, я CT неправильно готовлю? Точнее, не я, а либа, которую я использую. Я настраивал-настраивал CT, но текст как выглядет мерзостно, так и выглядит. Win8, если что.


Sciter пользуй и будет тебе шастя.
Re[2]: ClearType и выворотка
От: Аноним  
Дата: 14.07.14 06:53
Оценка:
Здравствуйте, c-smile, Вы писали:

А>>Может, я CT неправильно готовлю? Точнее, не я, а либа, которую я использую. Я настраивал-настраивал CT, но текст как выглядет мерзостно, так и выглядит. Win8, если что.


CS>Sciter пользуй и будет тебе шастя.


А вы думали, про какую либу я говорю?

Кстати, а D2D у вас что, перерендерит текст на каждый move окна? Как он определяет, что фон под прозрачным окном сменился? Мало что про него знаю.
Re[3]: ClearType и выворотка
От: c-smile Канада http://terrainformatica.com
Дата: 14.07.14 17:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, c-smile, Вы писали:


А>>>Может, я CT неправильно готовлю? Точнее, не я, а либа, которую я использую. Я настраивал-настраивал CT, но текст как выглядет мерзостно, так и выглядит. Win8, если что.


CS>>Sciter пользуй и будет тебе шастя.


А>А вы думали, про какую либу я говорю?


Ну Sciter тоже разный бывает. Sciter v 1.*.*.* это GDI backend с проблемами которые я изложил.
Sciter 3.*.*.* это Direct2D (и GDI+ на XP).

А>Кстати, а D2D у вас что, перерендерит текст на каждый move окна? Как он определяет, что фон под прозрачным окном сменился? Мало что про него знаю.


"перерендерит текст на каждый move окна" — нет, зачем это?

Окно это bitmap c альфаканалом. Move окна (если на нем ничего не меняется по ходу) это просто translate(xpos,ypos) внутри GPU.
Крайне дешёвая операция. Да ты и сам можешь посмотреть в Process Explorer. Там CPU — 0% при перетаскивании окна.
Re[4]: ClearType и выворотка
От: wildwind Россия  
Дата: 14.07.14 21:20
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Окно это bitmap c альфаканалом. Move окна (если на нем ничего не меняется по ходу) это просто translate(xpos,ypos) внутри GPU.

CS>Крайне дешёвая операция.

И все-таки откуда D2D берет фон? Он ведь в общем случае результат сложной композиции. Из фреймбуфера что ли?
Re[5]: ClearType и выворотка
От: c-smile Канада http://terrainformatica.com
Дата: 14.07.14 21:37
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, c-smile, Вы писали:


CS>>Окно это bitmap c альфаканалом. Move окна (если на нем ничего не меняется по ходу) это просто translate(xpos,ypos) внутри GPU.

CS>>Крайне дешёвая операция.

W>И все-таки откуда D2D берет фон? Он ведь в общем случае результат сложной композиции. Из фреймбуфера что ли?


На прозрачных surfaces он переключается на gray scale alpha blending.

Поэкспериментируюй с sciter.exe и примером \sdk\samples\basics\test-font-rendering.htm

Там есть кнопка "glass" (слева внизу, нажата)


Все увидишь с magnifying glass.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.