如何避免 Graphics.MeasureString() 中零宽度连接器出现异常?
How can I avoid exceptions in Graphics.MeasureString() with bad zero width joiner?
当我调用 Graphics.MeasureString("?\u200d")
时,我得到一个 ExternalException "A generic error occurred in GDI+"。
\u200d 是 unicode "zero width joiner",我猜它使用不正确,但我无法控制用户提供的数据,但我想测量它以供显示。它在绘制时也会抛出异常。
我想我只需要解决这个问题,尽管它让我感到惊讶。
我注意到 Visual Studio 可以渲染字符串,也许是因为它不是建立在 GDI+ 之上?
有什么建议吗?
使用 TextRenderer.MeasureText()
,并在 Graphics.DrawString vs TextRenderer.DrawText?Which can Deliver Better Quality
中查看优秀(长)答案
当我调用 Graphics.MeasureString("?\u200d")
时,我得到一个 ExternalException "A generic error occurred in GDI+"。
\u200d 是 unicode "zero width joiner",我猜它使用不正确,但我无法控制用户提供的数据,但我想测量它以供显示。它在绘制时也会抛出异常。
我想我只需要解决这个问题,尽管它让我感到惊讶。
我注意到 Visual Studio 可以渲染字符串,也许是因为它不是建立在 GDI+ 之上?
有什么建议吗?
使用 TextRenderer.MeasureText()
,并在 Graphics.DrawString vs TextRenderer.DrawText?Which can Deliver Better Quality