2014-05-03 22 views
1

我正在写的小型web应用程序用一些文本填充一个临时不可见的容器,测量所得到的高度,然后使用它来根据该高度生成一些guis。缩放时字体字形保持比例吗?

这样做的原因是,并非所有字体都是单间隔的,因此每次都需要测量以确定它们将占用多少空间。

现在,我可能需要缩放整个UI以适应不同的屏幕尺寸,并且想知道我是否可以可靠地缩放最终的高度。

简单地说:所有前面的字形都保证在缩放时保持相称,或者您可以在不同的字体大小下具有不同的字形宽度/间距?

例如设置为20 总是的字体是正好是10号字体大小的2倍吗?

编辑:这里是测试我做,并张贴在下面的评论的另一种观点认为: A test confirming width isn't the same at least for this font.

+0

您可以使用'em'测量值来衡量。 – royhowie

+0

这对于这个系统并不适用。用户界面非常复杂,基于每个像素值生成。一系列行背景(具有固定高度的风格化div)放置在每行文本后面。行数由测试div的高度决定,由指定的行高决定。我真的只需要知道我是否可以可靠地缩放比例结果,或者是否需要重新计算不同字体大小的值。 –

+0

有趣的问题。你可以写一个循环并测试你想要的字体。我的猜测是他们会相似。让应用程序计算一次8-72像素的大小(例如)并存储所有后续访问的结果并不会太昂贵。 –

回答

2

当您双击字体大小,它整整翻了一倍。但这并不意味着字形按比例缩放。字体大小只是字体的属性,而不是字形的属性。缩放字形,但由于渲染粒度的原因,结果并非也不准确:抽象字形必须被光栅化,即转换为像素贴图,这不可避免地会改变其形状。

例如,考虑字母“e”的横向笔划。当然,宽度取决于字体大小,但在光栅化过程中,它需要映射到一个像素,两个像素或一些其他数量的像素。即使是亚像素渲染也不会改变这一点;它只是修改了光栅化的工作方式。因此,在屏幕(或纸张)上呈现的笔画宽度不能准确反映字体大小。字形中的不同笔划的行为会有所不同,因此字体大小的增加并不意味着字形的精确放大。

+0

很好的答案,谢谢 –