You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Graphics.DrawString布局矩形过大导致字距异常问题求助

DrawString() 布局矩形过大时字距调整(Kerning)失效问题

我正在开发一款标签设计程序,遇到一个怪异且全网未找到解决方案的问题:使用DrawString()绘制文本时,若layoutRectangle设置为略大于文本实际长度的尺寸,字距调整(kerning)会失效,其中'Te'字符组合的表现尤为明显。

现象对比

  • 当layoutRectangle刚好适配文本长度时,字距显示正常:
    字距正常的Te组合
  • 当layoutRectangle大于文本所需尺寸时,字距显示异常:
    字距异常的Te组合

可以明显看到第二张图中的'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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:12:17