通过处理字体,如果它是“1 2”,有没有办法弄清楚两个字符之间应该有什么空间?
如果在C ++或C#中已知,我不介意。如果它是在C ++中,我将整理它,如果在C#中,我将它保存到文件并在C ++中加载它。我试着看看TextMetric结构,但它不存在。
答案 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 ;
}