使用 CSS 水平缩放文本

Posted

技术标签:

【中文标题】使用 CSS 水平缩放文本【英文标题】:Horizontal scaling of text using CSS 【发布时间】:2012-01-30 12:26:45 【问题描述】:

对于我们的网站,我们选择了由日内瓦(Mac 字体)和 Tahoma(Win 字体)组成的字体堆栈,并以 Arial 和 Helvetica 作为备份。理想情况下,我们希望 Geneva(最宽)、Tahoma、Helvetica 和 Arial 都占据每 x 个单词的相似空间(通过调整水平间距)。说 110% 的 Tahoma 就像 100% 的日内瓦。

Font stack- Geneva > Tahoma > Helvetica> Arial > sans

有没有更好的方法来做到这一点?这种类型的方法(例如浏览器支持)是否存在任何问题?如果是这样,那么如何在 CSS 中实现它?

基本上,我们已经在 Photoshop/Illustrator 中完成了这种水平缩放 - 希望为网站实现与文本相同的效果。我想这应该很常见,但是经过长时间的搜索 - 我无法找到任何解决问题的当前资源 - 2-3 岁的结果没有任何解决方案。作为网站新手 - 不允许发布 Photoshop 截图的图片 - 仍然在这里供参考:http://sunriseondarkhorizons.blogspot.com/2011/12/screenshot.html

PS Verdana 有点太宽了,无法考虑 - 尽管它更接近日内瓦空间。

谢谢

【问题讨论】:

为什么不用@font-face 包含你需要的字体呢?我认为这是拥有完全跨平台控制的唯一方法...... 好建议@ptriek!你应该让你的评论成为一个真正的答案。 【参考方案1】:

您拥有的唯一工具是 letter-spacing CSS 属性,它可以增加或减少文本中字符之间的间距。

h1 letter-spacing:2px

AFAIK 跨浏览器兼容性没有问题。

但是在确定何时“激活”此属性时存在问题。由于您无法事先知道客户端将使用哪种字体,因此需要某种逻辑/选择器来决定是否应应用字母间距规则。

我不相信有 CSS 方法可以做到这一点。

你可能会使用 javascript 来计算是否应该扩大字母间距:创建一个

元素带有预设的单词,例如“test”。然后,您可以使用 JavaScript 对照预先计算的此类长度值列表检查元素的宽度

为您的不同字体。根据您添加或删除字母间距属性的结果。

这是一个棘手/棘手的解决方案,但这是我能想到的最好的解决方案。

啊!发现了一些东西:

Font Detector

【讨论】:

以上是关于使用 CSS 水平缩放文本的主要内容,如果未能解决你的问题,请参考以下文章

响应浏览器窗口 (CSS) 调整、缩放和居中图像

text Divi按钮通常与文本一起缩放,看起来很糟糕。使用此CSS设置最小宽度 - 按钮将根据文本co放大

如何将图像居中和自动缩放?

14.浏览器屏幕缩放bug修复

CSS:仅在一个方向上缩放背景 SVG

百度副文本编辑器自动缩放上传的图片