Set*_*gie 3 c++ fonts gdi+ typography kerning
我觉得我读过一个类似的问题,但我找不到,所以如果重复,请关闭。
我正在尝试Graphics::DrawString使用等宽字体(Consolas)绘制文本。但是,当我绘制文本时,字母的间距不均匀。这是它的样子:

如您所见,这些字母被分为两个和三个一组。我读了这篇文章,我认为我已经采取了足够的措施来避免它使用StringFormat::GenericTypographic,但显然没有。我也在使用,TextRenderingHintClearTypeGridFit因为所有其他人看起来都像垃圾(TextRenderingHintClearType没有这个GridFit部分就没有)。
如何像所有其他使用等宽字体绘制文本的程序一样绘制文本,使其看起来正确?
问题在于 GDI+ 使用不同的(并且早已废弃)系统来绘制文本。从 .NET framework 2.0 开始,Microsoft 将所有控件更改为实际使用 GDI 进行文本呈现,而不是 GDI+。GDI 中的文本渲染是硬件加速的,并且通过字符渲染、Uniscribe、连字继续得到改进。GDI+ 中的文本渲染不是硬件加速,也没有得到任何修复或改进。
GDI 也可以绘制抗锯齿,使用 CLEARTYPE_QUALITY 或 ANTIALIASED_QUALITY。
这是一个比较
Graphics.DrawString)TextRenderer.DrawText)