Я пытаюсь написать растровый шрифт, который может отображать тайский язык (среди прочего). У меня есть набор символов, но многие символы являются кодовыми точками "комбинирования символов". Я использую Graphics.DrawString, чтобы получить растровое изображение символов. Это отлично работало, например, для Латиница, кириллица и вьетнамский.
Однако, когда я визуализирую выделенный объединяющий символ, Windows .Net отображает пунктирный круг под объединяющим символом следующим образом:
Есть ли способ удалить эти круги? (Они не всегда находятся в одном и том же месте)
Вот код, который я сейчас использую:
string face = "Arial";
Font chosenFont = new Font(face, GetFontSize(), fontStyle));
string str = " " + Char.ConvertFromUtf32(c) + " ";
UnsafeBitmap32 bmp = new UnsafeBitmap32(width, height);
Graphics gfx = Graphics.FromImage(bmp.Bitmap);
gfx.FillRectangle(Brushes.Black, 0, 0, width, height);
gfx.DrawString(str, chosenFont, Brushes.White, posX, posY);
c
- это всего лишь один комбинированный символ (например, MaiEk, MaiTo и т. Д.)? Если да, то это недопустимая строка Unicode. Он может что-то отображать, но реализации платформы могут отличаться. Я думаю, есть два хороших решения: (1) для тайского языка: используйте согласный звук KoKai (U+0E01
); (2) Международные стандарты: используйтеU+25CC
ТОЧЕЧНЫЙ КРУГ. Это Статья содержит большое количество плюсов и минусов каждого решения. - person bytebuster   schedule 03.02.2016