浏览器计算的TTF字体高度错误,基线

时间:2016-12-05 10:37:09

标签: css fonts true-type-fonts typography

我正在开发一个应用程序,我必须完全控制区域中的字符占用。比方说,例如,如果我的容器宽度为100px,而我的字母“A”的宽度为5px,如果你插入20次“A”,我必须说“嘿,你的总职业是100px”。

我创建了自己的TTF字体。字符以DIV宽度100px显示,每个字符都包裹在没有给定宽度的SPAN中。

我使用fontstruct创建自己的字体。经过大量的测试,我得到了字体的“高度”是上限和下限之间的距离。因此,例如,如果我的最高角色是“A”并且它是6px高,而我的最低角色是“p”并且它在基线下是2px,那么字体高度是8px。

这当然是相对的。我的意思是通过CSS我可以将font-size设置为10px,11px,无论如何。 重要的是比例是正确的,所以我可以得到正确的宽度。例如:如果在我的fontstruct编辑器中,如果font-size为8px,则“A”的宽度为5px,而在浏览器中则为5px。如果font-size是16px,它将是10px宽。等等。

有了这个,如果我通过CSS链接我的TTF字体并创建一个DIV宽度高度:8px和line-height:8px,那么浏览器上显示的每个字符都有预期的宽度,例如我的“A”是5px在fontstruct的编辑器中,在浏览器中它也是5px。

没关系。 当我在基线下绘制一些像素的角色时,即使它是一个通常不低于基线的角色,也会发生奇怪的事情。例如,如果我在基线下绘制“A”2px,当我在浏览器中键入一些文本时(即使我键入B),宽度/高度完全错误。例如,它不是5x8,而是4x7。一切都是错的,即使对于所有其他角色也是如此。似乎浏览器“知道”哪些字符允许低于基线,如果我制定了这个规则,那就搞砸了。

那么,我们假设有一个允许但不允许低于基线的字符列表,我必须严格遵守。我做了一些研究,但似乎这样的清单不存在!令我惊讶的是,似乎“有时”某些通常不会低于基线的角色确实会这样做,只是为了给出他们在基线上休息的假象。例如圆形的,如G或Q.

根据我的测试,无论如何,如果我在基线下绘制任何“不应低于基线”(例如G或Q)的字符,浏览器就会生气。那么呢?规则在哪里?这份清单?我应该遵循哪一套规则来创建一个TTF字体,以便完全控制其角色的宽度和高度?

谢谢

0 个答案:

没有答案