Graphics.DrawString布局矩形过大导致字距异常问题求助
DrawString() 布局矩形过大时字距调整(Kerning)失效问题
我正在开发一款标签设计程序,遇到一个怪异且全网未找到解决方案的问题:使用DrawString()绘制文本时,若layoutRectangle设置为略大于文本实际长度的尺寸,字距调整(kerning)会失效,其中'Te'字符组合的表现尤为明显。
现象对比
- 当
layoutRectangle刚好适配文本长度时,字距显示正常:
- 当
layoutRectangle大于文本所需尺寸时,字距显示异常:
可以明显看到第二张图中的'e'比第一张图位置更靠后。我在全新项目中测试也出现同样问题,甚至不指定layoutRectangle时该现象依然存在。
绘图代码
canvasGraphics.Graphics.DrawString( _displayText.FormattedTextValue, new Font(FontName, (float)((drawFontSizeToUse / 72d) * Canvas.RenderDPI), fontStyle, GraphicsUnit.Pixel), Brushes.Black, (Rectangle)new RectangleD(ScreenBounds.X, ScreenBounds.Y, ScreenBounds.Width, ScreenBounds.Height), stringFormat );
注:stringFormat仅用于调整文本对齐方式,未做其他特殊设置。
已尝试的解决方向
- 调整不同的
StringFormat参数 - 修改
TextRenderingHint选项 - 更换多种Font相关设置
以上尝试均未解决问题,且因项目需要支持打印功能,无法改用TextRenderer实现文本绘制。
请问有什么可行的解决方案吗?感谢!
内容的提问来源于stack exchange,提问作者Velox
相关产品推荐
相关产品推荐

