【发布时间】:2018-08-03 11:26:57
【问题描述】:
我使用的是来自http://fonts.googleapis.com/css?family=Open+Sans 的Open Sansfont。由于安全原因,一些客户端使用封闭环境,所以我需要使用从 npm 安装的本地字体。
我已经为Open Sans 尝试了来自 npm 的多个包,例如 "open-sans-all": "^0.1.3"、"typeface-open-sans": "^0.0.54",但是具有相同 css 的字体与之前使用来自 GoogleApis 的字体呈现不同,尤其是在应用 font-weight: bold; 时。
我是不同的图像。
任何资源都没有HTTP 404,所有字体和资源都可以正常下载。
我不确定我做错了什么,因此具有相同 css 的相同字体呈现不同的效果?
【问题讨论】:
-
一个版本可能被浏览器渲染为仿粗体(即它被人为地渲染为粗体,因为该字体的实际粗体版本不存在)。另一个版本可能使用实际存在的粗体字体呈现。提供的 fonts.googleapis url 不包含字体的实际粗体版本,但 npm 的 (open-sans-all) 包含。由于您尚未提供MCVE,因此我认为您的问题可以接受猜测答案(如果有的话)。或许将
@fontface规则和 CSS 规则集添加到您的 OP 中。可能有助于获得答案。 -
@RobC 你是对的,它可能是浏览器的假粗体,因为在 npm 的字体中存在特定的粗体定义,但在 GoogleApi 中没有。它很蹩脚,但客户更喜欢旧的,即来自浏览器的仿制品,因此需要下载相同的 woff2 文件并在本地引用,但再次需要为 IE 添加额外的 EOT 文件,因为 IE 无法识别 woff 并且 chrome 无法识别 EOT
-
感谢普拉纳夫的反馈。 "...client prefer old one" 听起来我很熟悉。我也和客户有过类似的情况。我现在通常选择一个字体系列,它具有所有浏览器都支持的各种粗细/样式(粗体、半粗体、斜体等)。我在
@font-face规则中声明它们,并在每个规则集中明确引用它们,即.quux { font-family: 'SomeFontBold'}而不是.quux { font-family: 'SomeFont'; font-weight: bold;}。我尽量避免使用声明font-weight: bold;和font-style: italic;以避免可能的虚假渲染。 -
这是一个很好的推荐,我以后会尝试的
标签: css npm fonts font-family