C#:像素宽度匹配在浏览器中呈现的文本

我试图估计像素的宽度,如果在我创建的工具中使用C#为特定字体(Arial 18px)渲染文本。

将我的结果与此工具进行比较(使用浏览器呈现宽度):http://searchwilderness.com/tools/pixel-length/字符串:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit."

计算为439像素宽。

但是用C#中的这段代码,我得到了445px:

var font = new Font("Arial", 18, FontStyle.Regular, GraphicsUnit.Pixel);
var text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
var size = TextRenderer.MeasureText(text, font, new Size(int.MaxValue, int.MaxValue), TextFormatFlags.NoPadding);

我可以修改我的代码,使其呈现类似于浏览器吗?

我试图输出带有字体和文本的标签,并与浏览器渲染进行比较(+/- 1px)。


您可以使用带有StringFormat.GenericTypographic GDI +来代替:

var font = new System.Drawing.Font("Arial", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
var text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
var graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero);
var size = graphics.MeasureString(text, font, int.MaxValue, System.Drawing.StringFormat.GenericTypographic);

另请参阅:https://stackoverflow.com/a/6404811


最简单的方法是构建客户端呈现的字符宽度的数据库。 对于每个独特字体,变体(粗体/斜体),大小,缩放因子,浏览器和平台来衡量所有字符都不是微不足道的。

为了避免这种情况,在客户端执行呈现逻辑可能更明智,其中可以使用与getTextWidth()等效的方法找到实际值。

链接地址: http://www.djcxy.com/p/31635.html

上一篇: C#: Pixel width matching text rendered in a browser

下一篇: Installation error with ipython on macbook