.net DrawString шрифт для иврита с символами нулевой ширины

Существуют ли какие-либо дополнительные свойства или параметры в DrawString для решения этой проблемы. У меня есть шрифт на иврите со многими символами нулевой ширины, поэтому два символа должны отображаться в одном месте.

В этом примере слева показана проблема .NET, а справа она должна выглядеть так:

http://hebrewresources.com/html5/images/rendering_issue.png

Текстовые поля Word и Visual Studio отображаются одинаково, но в SumTotal'sToolbook они отображаются правильно.

На самом деле это очень старый шрифт True Type, созданный более 15 лет назад, и он даже не написан справа налево. Я могу переключиться на более новый шрифт, но тогда мне придется написать программу для переназначения каждого символа и гласной.

objGraphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
objGraphics.DrawString(text, objFont, Brushes.Black, border / 2, border / 2);

person NealWalters    schedule 24.10.2010    source источник


Ответы (1)


Тебе придется:

objGraphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
var stringFormat = new StringFormat(StringFormatFlags.DirectionRightToLeft);
float x = border / 2;
float y = border / 2;
objGraphics.DrawString(text, objFont, Brushes.Black, x, y, stringFormat);

Если это не сработает, вам придется попробовать другие флаги:

http://msdn.microsoft.com/en-us/library/system.drawing.stringformatflags(v=VS.71).aspx

person Jader Dias    schedule 24.10.2010
comment
Как я уже сказал, мой шрифт действительно был создан до того, как появились шрифты с письмом справа налево, я только сейчас попробовал этот вариант, и вообще ничего не печаталось. Я также пробовал NoWrap, NoFontFallback, NoFit и FitBlackBox. Все они печатают буквы, но выглядят так же, как в моем исходном посте. - person NealWalters; 25.10.2010