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

时间:2011-05-06 20:16:00

标签: c# c++ text typography

通过处理字体,如果它是“1 2”,有没有办法弄清楚两个字符之间应该有什么空间?

如果在C ++或C#中已知,我不介意。如果它是在C ++中,我将整理它,如果在C#中,我将它保存到文件并在C ++中加载它。我试着看看TextMetric结构,但它不存在。

4 个答案:

答案 0 :(得分:2)

通过在前后添加零宽度连接符\u200D

Graphics.MeasureCharacterRanges可以测量单个字形(偶数空格)。然而,由于我认为零宽度连接,它确实忽略了所有的Kerning东西。

您需要一堆额外的参数,但new StringFormat(StringFormat.GenericTypographic)Rectangle.Empty对我来说没问题。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果您需要有关如何呈现文本的指标,则需要提供文本。您需要提供ascii空格字符。使用Kerning调整间距并使文本看起来更具吸引力的现代系统。

答案 3 :(得分:0)

以下是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 ;
}