我目前正在建立一个PSD网站。大多数字体的字母跟踪为-25(<- AV->
:我猜这是字母间距的符号?)。
我如何在CSS中获得相同的效果?我知道该属性是letter-spacing: X
,但它没有占用百分比,-25px或pts将是一个巨大的数字!
答案 0 :(得分:21)
在Photoshop中,字母间距称为字母跟踪,特别是每个文字字母之间的空格。问题是Photoshop Letter Tracking不会将1:1转换为CSS中的Letter Spacing。
虽然很容易计算从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
公式如果您更喜欢使用&#34; px&#34;公式的值是
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 。
答案 1 :(得分:10)
您可以使用em
维度而不是px
,从而调整相对于字体大小的间距(因此,Photoshop的25%大约是.25em
)。
答案 2 :(得分:7)
在这样的背景下,无单位数通常意味着印刷单位只占em
单位的一小部分。它通常被称为“单位”。此单位的值取决于字体,它表示为UPM(每个单位的单位)值。常见的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的渲染机制与浏览器的渲染机制不同。
答案 3 :(得分:2)
如果您的问题只是单位转换,则可以使用em
代替px
虽然em
允许使用十进制数字,但它并不会改变渲染精度。浏览器上未显示0.5px
或同等精度 - 它将变为0或1px。仅仅因为屏幕不能显示半个像素,充其量只能通过消除锯齿来显示。
对于较小的字体,抗锯齿可能看起来比间距差。另一种选择是找到一个默认具有所需间距的Web字体。通过这种方式,您可以得到与您想要的类似的结果,但可能意味着更改字体。
CSS间距不如photoshop准确。一个原因是,Photoshop也可以进行打印 - 使用屏幕/像素分辨率,您必须使用像素精度。虽然从理论上讲,字母间距可以在缩放等方面变得更加准确,但我不知道任何实际上会以这种方式工作的实现。
如果正确的字母间距对您来说非常重要,您可以尝试使用SIFR比浏览器能够更准确地呈现字体间距 - 他们可能能够使用更改的抗锯齿。显然,如果字母间距是一个大问题,这只会有意义。