Winding Trail project

 

Поправила CD3DFont

Январь 23, 2006, 20:27
Автор:
Alena
Категория: Программист

Некоторое время назад у меня наблюдались проблемы со шрифтами. Сейчас мне удалось решить часть из них, а именно - сейчас я могу нормально вывести на экран неформатированный текст: крупные заголовки, пункты меню и тому подобное. Сделала я их таки с помощью стандартного CD3DFont, который переделала. Результат в целом хороший:


Какие были проблемы с CD3DFont и как я их решала.

  1. “Волосатость” шрифтов. Наблюдалась из-за того, что шрифт формировался таким образом, что антиалиасинг работал только при выводе светлых букв на темном фоне. Сначала все буквы печатались белым цветом на черном фоне, а потом, исходя из градаций серого по краям букв, проставлялась прозрачность. Я поменяла подсчет прозрачности на обратный. И получила нормальный антиалиасинг у темных шрифтов на белом фоне. Я не стала оставлять нормальную работу со светлыми шрифтами на темном фоне, потому что они пока не нужны. Будут нужны - верну обратно.
  2. Артефакт рядом с буквой i. Который оказался хвостиком от буквы j. Проблема возникала из-за того, что i и j печатались в текстуру слишком близко друг к другу. Когда из текстуры вырезалась i, она захватывала хвостик от j. Я увеличила расстояние между i и j.
  3. Не было русского языка. Добавила. По-хорошему здесь надо было добавить возможность работы с юникодом. Но я пока сделала только работу с ANSI.

Поскольку CD3DFont обладает крайне скудными возможностями форматирования текста, для вывода форматированного текста я хотела использовать ID3DXFont, у которого с этим все хорошо. У ID3DXFont те же проблемы с алиасингом, какими страдал CD3DFont до моей правки. Но форматированный текст, который я собиралась выводить с его помощью, будет достаточно мелким, артефакты на нем незаметны. Исходников ID3DXFont нет, поэтому тут не ничего поправишь. Однако таки придется мне писать форматирование самой. Потому что нам нужен скроллинг текста. ID3DXFont такое делать не умеет, а мне для скроллинга надо знать ширину форматированной строки. Я порылась в документации, ID3DXFont вроде как не может мне эту величину отдавать.


Автор: Alena (01.29.06, Январь 29, 2006, 2:47)

Интересный момент: вышеприведенный скриншот вызвал легкую панику, народ решил, что это я как-то странно отстайлила заголовки на блоге :-) . Что доказывает, что шрифты удались.

Автор: Air (05.17.06, Май 17, 2006, 10:17)

Привет, Алена.
Кстати, можно использовать не true type шрифты, а растровые. Так как они не сглаживаются, то “волосатости” не будет

Автор: Alena (05.17.06, Май 17, 2006, 13:47)

Кстати, можно использовать не true type шрифты, а растровые. Так как они не сглаживаются, то “волосатости” не будет

Угу, но true type посимпатичнее все же…