查找文本“空格”值(以像素为单位)

本文关键字:像素 为单位 文本 空格 查找 | 更新日期: 2023-09-27 17:55:26

在处理字体时,有没有办法弄清楚如果是"1 2",两个字符之间的空格应该是多少?

如果在 C++ 或 C# 中已知,我不介意。如果它在C++中,我将对其进行封送,如果是 C# 中,我会将其保存到文件中并在 C++ 中加载它。我试着看看TextMetric结构,但它不存在。

查找文本“空格”值(以像素为单位)

Graphics.MeasureCharacterRanges通过在前后添加零宽度连接器字符'u200D来测量单个字形(偶数空格)获得了非常好的结果。然而,它确实忽略了所有字距调整的内容,因为我认为是零宽度的连接器。

你需要一堆额外的参数,但new StringFormat(StringFormat.GenericTypographic)Rectangle.Empty对我来说做得很好。

它返回字符串中每个字符的漂亮浮点边界数组。

如果你想要文本呈现方式的指标,你需要提供文本。您需要提供 ASCII 空格字符。使用字距调整间距并使文本看起来更具吸引力的现代系统。

您可以使用 Graphics.MeasureString() 并传入字体并" "带空格的字符串吗?

下面是

C# 中使用窗体的 Paint 事件处理程序的示例:

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    float widthWithSpace = e.Graphics.MeasureString("1 2", new Font("Arial", 12)).Width;
    float widthWithoutSpace = e.Graphics.MeasureString("12", new Font("Arial", 12)).Width;
    float spaceWidthInPixels = widthWithSpace - widthWithoutSpace ;
}