1

我正在尝试编写一种可以呈现泰语(以及其他)的位图字体。我有字符集,但很多字符都是“组合字符”代码点。我正在使用 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);
4

1 回答 1

0

正如您在对问题的评论中发现的那样,在当前字符单元格中至少没有辅音来呈现组合字符或 NSM 是没有意义的。

因此,您不能单独渲染这些字符,因为在字体和字体渲染器中,定位取决于前面的字符。

你可能会很幸运,找到一个字体和字体渲染器,当与空格结合时,它会显示你需要的字符;但是正如您发现的那样,某些系统会以圆圈呈现。

如果您正在设计位图字体,则只需剪切并粘贴字形区域。如果您尝试渲染矢量字体并自动抓取字形,那么我怀疑您将实现任何东西,但除了不适用于所有字体和字体渲染器的 hacky 解决方案。

于 2016-02-12T10:59:26.863 回答