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

发布于 2024-08-11 04:57:35 字数 249 浏览 9 评论 0 原文

我有一个程序,可以在 C# 中使用 PDFsharp 手动生成 PDF。虽然它相当乏味,但我必须使用它并且即将完成任务。只剩下一个问题了。

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

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

有什么帮助吗?

谢谢

I have a program that is manually generating a PDF using PDFsharp in C#. Although it is rather tedious I have to use it and am nearing completion of the task. Only one issue remains.

Problem: I am wondering how I can find out what the width of a given char is for a given font size in Arial.

I am having trouble coming up with a more precise text wrapping method. Right now one defines a width of box in pixels and then proceeds to write out a string in that box. I kinda just guess at the max length of the string that can fit in the box and there are some visual oddities that crop up from time to time.

Any help?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月牙弯弯 2024-08-18 04:57:35

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

在一般的.Net中,您可以使用 的 >MeasureText 方法TextRenderer 类(来自 Windows 表单):

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

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

I'm not sure from your question whether you want a way to measure the size of a string specifically using PDF#, or just a generic way.

In general .Net, you can use the MeasureText method of the TextRenderer class (from Windows forms):

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

This will return a Size instance that will contain Width=12, Height=2.

扭转时空 2024-08-18 04:57:35

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

PDFsharp 包含执行此换行操作的 XTextFormatter 类(带有完整源代码)。它可以适应特定的要求。
它使用 gfx.MeasureString(token, this.font).Width 来测量字符串的宽度。

In the days of True Type fonts with kerning etc. there is not a single character width.
The width of the string "VA" is probably less then the sum of the widths of the strings "V" and "A".
Summing up the widths if individual characters is a starting point - but finally you have to measure the complete string.

PDFsharp includes the class XTextFormatter (with full source code) that does this line wrapping. It can be adapted for specific requirements.
It uses gfx.MeasureString(token, this.font).Width to measure the width of a string.

﹂绝世的画 2024-08-18 04:57:35

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 );

XGraphics.MeasureString(string s, Font f) does the trick.

  //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 );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文