我正在尝试编写一个可以渲染泰语的位图字体(以及其他)。我有字符集,但很多字符都是“组合字符”代码点。我正在使用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);
答案 0 :(得分:0)
正如您在对问题的评论中发现的那样,在当前字符单元格中至少没有辅音的情况下渲染组合字符或NSM是没有意义的。
因此,您无法单独渲染这些字符,因为在字体和字体渲染器中,定位取决于前面的字符。
您可能会很幸运,找到一个字体和字体渲染器,它会在与空间结合时显示您需要的字符;但是你发现有些系统会用圆圈渲染。
如果您正在设计位图字体,则只需剪切并粘贴字形区域即可。如果您正在尝试渲染矢量字体并自动获取字形,那么我怀疑您将获得的任何东西,除了一个不适用于所有字体和字体渲染器的hacky解决方案。