像素精确的文本对齐

时间:2010-10-19 00:17:41

标签: javascript css

我正在使用JavaScript来填充左对齐文本的范围,直到它填充其容器,或者直到它达到高度或宽度的可变阈值。这个过程导致font-size。{/ p>变化很大

我的问题是,对于某些字符,左侧有少量填充...虽然通常不明显,但字体非常大,可以达到10像素或更多。

我掀起了一个页面来展示对各种角色的影响: http://jsfiddle.net/kBu7S/

文本范围存在于一个设计中,其中沿着页面向下的每个其他元素都按像素对齐到左边缘,因此它在视觉上会分散较大的文本大小。

有人能想出一种计算填充量的方法,这样我就可以碰到跨度的相对位置吗?或者甚至可能有CSS解决方案? (letter-spacingword-spacing无效。)

我承认即使是一个肮脏的解决方案似乎也不太可能......感谢您的考虑。

3 个答案:

答案 0 :(得分:3)

填充通常被称为类型的“肩部”,它是字体设计的固有特征。没有简单的方法来反击它,因为它是出于光学原因,给出了正确间距的类型。毕竟,如果你键入IIIIIII,你需要在首都之间留出一些间距,而这只是来自这个填充。其他角色,如WWWWWW,不需要任何角色。

您最好的选择是对字体进行实验,并测量每个字符的实际填充,然后构建一个表格,将字符映射到其填充。然后你可以调整角色的位置。这是很多工作,但我不知道你还能做些什么。

答案 1 :(得分:1)

这适用于小提琴:

#text:first-letter { margin-left:-3px}

您可以将其扩展为类......

.fontCorrection:first-letter { margin-left:-3px }

......并酌情应用它。

答案 2 :(得分:0)

好吧,您可以构建一个脚本,使用相同大小的相同字体(白色背景上的黑色)生成图像,并读取位图以计算从左边缘到第一个黑色像素的距离。

这有点矫枉过正,但这是我唯一能想到的。