我有一个程序,它使用C#中的PDFsharp手动生成PDF。虽然它很乏味,但我必须使用它,并且即将完成任务。只剩下一个问题。查找以像素为单位的各种Arial字体的字符宽度
问题:我想知道我怎么可以找出给定字符的宽度为宋体给定的字体大小。
我无法提出更精确的文本包装方法。现在,我们以像素为单位定义一个框的宽度,然后继续在该框中写出一个字符串。我只是猜测可以放在盒子里的字符串的最大长度,有时会出现一些视觉上的古怪。
任何帮助?
感谢
我有一个程序,它使用C#中的PDFsharp手动生成PDF。虽然它很乏味,但我必须使用它,并且即将完成任务。只剩下一个问题。查找以像素为单位的各种Arial字体的字符宽度
问题:我想知道我怎么可以找出给定字符的宽度为宋体给定的字体大小。
我无法提出更精确的文本包装方法。现在,我们以像素为单位定义一个框的宽度,然后继续在该框中写出一个字符串。我只是猜测可以放在盒子里的字符串的最大长度,有时会出现一些视觉上的古怪。
任何帮助?
感谢
在具有字距等的True Type字体的时代,没有单个字符宽度。 字符串“VA”的宽度可能小于字符串“V”和“A”的宽度之和。 如果单个字符是一个起点,总结宽度 - 但最后你必须测量完整的字符串。
PDFsharp包括执行此自动换行类XTextFormatter(提供完整的源代码)。它可以适应特定的要求。 它使用gfx.MeasureString(token, this.font).Width
来测量字符串的宽度。
我不是从你的问题确定是否要使用专门的PDF#,或者只是一个通用的方法提供了一种衡量一个字符串的大小。
一般来说.NET中,可以使用TextRenderer
类的MeasureText
方法(从Windows窗体):
TextRenderer.MeasureText("some text", new Font("Arial", 1.0f, FontStyle.Regular))
这将返回一个Size
实例将包涵Width=12, Height=2
。
XGraphics.MeasureString(字符串s,字体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);