我目前正在从 PSD 构建网站。大多数字体的字母跟踪为-25(<- AV->
:我猜这是字母间距的符号?)。
我如何在 CSS 中获得相同的效果?我知道该属性是letter-spacing: X
,但它不需要百分比,-25px 或 pts 将是一个巨大的数字!
我目前正在从 PSD 构建网站。大多数字体的字母跟踪为-25(<- AV->
:我猜这是字母间距的符号?)。
我如何在 CSS 中获得相同的效果?我知道该属性是letter-spacing: X
,但它不需要百分比,-25px 或 pts 将是一个巨大的数字!
在 Photoshop 中,字母间距称为字母跟踪,特别是每个文本字母之间的间距。问题是 Photoshop 字母跟踪不会将 1:1 转换为 CSS 中的字母间距。
不过,计算从 Photoshop 到 CSS 的转换非常容易。
em
公式 X / 1000 = Y
X is the value of the letter-tracking in Photoshop
Y is the value in "em" to use in CSS
考虑以下示例:Photoshop 的字母跟踪值为 200..
200 / 1000 = 0.2
结果是CSS 中的0.2em。
px
公式如果您更喜欢使用“px”值,则公式为
X * S / 1000 = P
X is equal to the letter-tracking value in Photoshop
S is the font-size in pixels
P is the resulted value in "px" to use in CSS
考虑以下示例:Photoshop 的字母跟踪值为 200,字体大小值为 10。
200 * 10 / 1000 = 2
结果是CSS 中的2px。
您可以使用em
尺寸而不是px
,从而调整相对于字体大小的间距(因此 Photoshop 的 25% 大约是.25em
)。
在这种情况下,无单位数字通常意味着印刷单位是该em
单位的一小部分。它通常被称为“单位”。该单位的值取决于字体,并表示为 UPM(每 em 单位)值。常见的 UPM 值为 1,000,但 Microsoft 字体有 2,048,并且还会出现其他值。(这个问题在UPM value of 1000 set in stone? 一文中有详细描述?)
假设 UPM 值为 1,000,-25 将映射到 -0.025em。设置letter-spacing: -0.025em
往往会产生相当小的影响:较长的文本行会缩短大约一个“i”。使用 CSS 获得的效果不应与 PhotoShop 中的相同;PhotoShop 的渲染机制与浏览器不同。
如果您的问题只是单位转换,您可以使用em
而不是px
虽然em
允许十进制数字,但它不会改变渲染精度。0.5px
或同等精度不会在浏览器上显示 - 它将变为 0 或 1px。仅仅因为屏幕不能显示半个像素,它充其量只能通过抗锯齿来近似。
对于较小的字体,抗锯齿可能看起来比间距更差。另一种选择是查找默认具有所需间距的网络字体。这样,您将获得与您想要的相似的结果,但可能意味着更改字体。
CSS 间距根本不如 Photoshop 准确。一个原因是 Photoshop 也可以渲染打印 - 使用屏幕/像素分辨率,您必须忍受像素精度。尽管从理论上讲,字母间距在缩放等方面变得更加准确是可能的,但我不知道任何实际可以以这种方式工作的实现。
如果正确的字母间距对您来说真的很重要,您可以尝试使用 SIFR 以比浏览器的能力更准确地呈现字体间距 - 他们可能能够使用更改抗锯齿。显然,这只有在字母间距是一个大问题时才有意义。