Изменение кернинга в System.Drawing.Graphics.DrawString () - PullRequest
4 голосов
/ 13 июля 2010

Я рендерим текст на изображение, используя класс System.Drawing.Graphics и метод DrawString ().

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

Проблема в том, что текст, сгенерированный DrawString (), имеет кернинг, отличный от текста на существующем изображении (мое лучшее предположение - приблизительно 0,5 - 1 пиксель написьмо).

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

Кроме того, это пользовательский шрифт, который мы используем, и нам пришлось преобразовать этоот открытого типа (который использовал исходное изображение) к истинному типу.Может быть, кернинг был изменен на этом этапе?

1 Ответ

2 голосов
/ 13 июля 2010

http://blog.stevex.net/rendering-text-using-the-net-framework/

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

Решение:

ExtTextOut не был достаточно умен для такого рода кернинга, поэтому у вас нет этой проблемы. К сожалению, .NET Framework не имеет какой-либо функции рисования текста, к которой можно прибегнуть, поэтому единственный способ получить старое поведение - это через P / Invoke функцию ExtTextOut в GDI.

Ссылка содержит пример кода .. надеюсь, это поможет!

...