查找各种Arial字体大小的字符宽度(以像素为单位)

时间:2009-11-12 23:41:39

标签: c# string pdf char pdfsharp

我有一个程序,它使用C#中的PDFsharp手动生成PDF。虽然它相当繁琐但我必须使用它并接近完成任务。只剩下一个问题了。

问题:我想知道如何在Arial中找出给定字符大小的给定字符的宽度。

我无法想出更精确的文字包装方法。现在,一个以像素为单位定义框的宽度,然后继续在该框中写出一个字符串。我只是猜测可以装在盒子里的弦的最大长度,并且有时会出现一些视觉上的奇怪现象。

任何帮助?

由于

3 个答案:

答案 0 :(得分:7)

我不确定你的问题是否想要一种方法来专门使用PDF#来测量字符串的大小,或者只是一种通用的方法。

通常.Net,您可以使用MeasureText类的TextRenderer方法(来自Windows窗体):

TextRenderer.MeasureText("some text", new Font("Arial", 1.0f, FontStyle.Regular))

这将返回一个Size个实例,其中包含Width=12, Height=2

答案 1 :(得分:5)

在具有字距调整等的True Type字体的日子里,没有单个字符宽度。 字符串“VA”的宽度可能小于字符串“V”和“A”的宽度之和。 如果单个字符是起点,则总结宽度 - 但最后你必须测量完整的字符串。

PDFsharp包含执行此换行的XTextFormatter类(包含完整源代码)。它可以根据具体要求进行调整。 它使用gfx.MeasureString(token, this.font).Width来测量字符串的宽度。

答案 2 :(得分:1)

XGraphics.MeasureString(string s,Font f)可以解决问题。

  //l_Page is of type PdfPage

  var l_Graphics = XGraphics.FromPdfPage( l_Page );
  var l_TitleFont = new Font( "Arial", 15f, GraphicsUnit.World )
  var l_Title = "Hallo Welt";
  //l_TitleSize will be of type XSize and has properties for Width and Height
  var l_TitleSize = l_Graphics.MeasureString( l_Title, l_TitleFont );