如何计算 x 高度,即 Font 对象的 ex?

Posted

技术标签:

【中文标题】如何计算 x 高度,即 Font 对象的 ex?【英文标题】:How do I calculate x-height i.e. ex of a Font object? 【发布时间】:2011-05-01 22:10:49 【问题描述】:

x-height 是一个字体度量,以 em-height 给出, 大约是 0.48 个 em,但这取决于字体...

在 CSS 中这两个单位是可用的,我对 ex 单位感兴趣。还有一个 em 单位,因此 ex 单位是根据它给出的。

下表显示了一些指标,可通过以下网站获得:

http://www.cs.tut.fi/~jkorpela/x-height.html

Arial               0.519
Arial Unicode MS    0.518
Calibri             0.466
Cambria             0.466
Candara             0.463
Code2000            0.444
Comics Sans MS      0.532
Courier             0.425
Courier New         0.423
Garamond            0.384
Georgia             0.481
Helvetica           0.523
Tahoma              0.545
Times New Roman     0.448
Trebuchet MS        0.523
Verdana             0.545

我想知道 C# 中给定 Font 对象的 x 高度。我得到这样的 M 高度:

TextRenderer.MeasureText("M", font).Height

但我不知道如何获得 x 高度。

使用 WinAPI 是可以接受的。方式无关紧要......浏览器会这样做。他们知道如何计算 ex 值,我也想知道如何获得这个值。请帮忙!!

谢谢。

有助于转化的相关问题 字体转字体:

How to convert System.Drawing.font to System.Windows.Media.Fonts or TypeFace

【问题讨论】:

【参考方案1】:

查看GlyphTypeface Class 或FamilyTypeface Class。

【讨论】:

两个类都提供了 XHeight 属性。谢谢...这是要走的路。它还有许多其他有趣的属性,关于字体度量。虽然它是用于 WPF,但很容易将 System.Drawing.Font 对象转换为 System.Windows.Media.Typeface。我已将问题更改为在 SO 中包含指向相关问题的链接。

以上是关于如何计算 x 高度,即 Font 对象的 ex?的主要内容,如果未能解决你的问题,请参考以下文章

html5哪些属性用于定义盒子的宽度值和高度值是不是包含元素的内边距和边框

css中的单位

line-height的使用

浏览器对象表示宽高属性的整理

iPhone:如何通过 UILabel 内容高度更改行高

CSS 获取当前可视屏幕高度--使用calc()方法动态计算宽度或者高度