修改System.Drawing.Graphics.DrawString()中的字距调整

时间:2010-07-13 07:45:27

标签: .net graphics text kerning

我使用System.Drawing.Graphics类和DrawString()方法将文本渲染到图像上。

我需要以非常特定的方式生成此图像的文本,以便它 - 像素的像素 - 匹配现有图像。

问题是DrawString()生成的文本与现有图像中的文本有不同的字距(我的最佳猜测是每个字母大约0.5 - 1个像素)。

有人能告诉我是否可以在使用此命名空间和方法时修改字距调整?

此外,它是我们正在使用的自定义字体,我们必须将其从open-type(使用的源图像)转换为true-type。在这个阶段可能会修改字距调整吗?

1 个答案:

答案 0 :(得分:2)

  

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

这些问题在于文本字距调整的测量方式不同 - 更准确 - 但是这种方式通常与应用开发者想要使用这些功能的方式不相容。

解决方案:

ExtTextOut不够聪明,不能进行这种字距调整,所以你没有这个问题。遗憾的是,.NET框架没有任何可以依赖的文本绘制功能,因此获得旧行为的唯一方法是通过P / Invoke到GDI中的ExtTextOut函数。

该链接有一些示例代码..希望有所帮助!