如何在 Chrome 中使用来自谷歌字体的 Roboto Light/Thin

Posted

技术标签:

【中文标题】如何在 Chrome 中使用来自谷歌字体的 Roboto Light/Thin【英文标题】:How to use Roboto Light/Thin from google fonts in Chrome 【发布时间】:2014-07-17 22:13:58 【问题描述】:

我在 Chrome 浏览器中使用 Roboto 字体时遇到问题。特别是我似乎无法获得 Condensed 和 Thin/Light 等字体粗细。我下载了所有 3 种完整的字体:

@import url(https://fonts.googleapis.com/css?family=Roboto:100,100italic,300,300italic,400,400italic,500,500italic,700,700italic,900,900italic&subset=latin,latin-ext,cyrillic,cyrillic-ext,greek-ext,greek,vietnamese);
@import url(https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext,cyrillic-ext,cyrillic,greek-ext,greek,vietnamese);
@import url(https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700&subset=latin,latin-ext,greek-ext,greek,vietnamese,cyrillic,cyrillic-ext);

然后我在如下声明中使用它们:

Roboto 浓缩版

.mas-1st-col 
font-family: Roboto !important;
font-size: 8pt; !important
font-weight: 200 !important;
font-stretch: condensed !important;

机器人灯

span.f, div.f.kv + div.f.slp 
font-family: Roboto !important;
font-size: 8pt !important;
font-weight: 200 !important;

然而,它给我的是普通的 Roboto。如果我将“Condensed”更改为使用字体系列“Roboto Condensed”,它可以工作......这是有道理的,因为显然 chrome 采用font-stretch 很晚。但是,将字体系列更改为“roboto condensed”不会使用较轻的 font-weight(即 300),它保持在 400。即使我将 font-weight 更改为 300,它特别具有,它将保持在 400(在控制台中在 200、300 和 400 之间切换根本没有效果)。我必须专门输入“Roboto Condensed Light”,以获得较轻的字体粗细。

那么其他人呢? “Roboto Thin”不是专门下载或设置在 @font-face 中的......当我只想要一个字体粗细时,我不应该使用像“roboto Thin”这样的名称,不是吗?

详情

由于特里的好建议,下面是基本完整的相关代码:

    function _miscCSS () 
        var css = function()/*
@import url(https://fonts.googleapis.com/css?family=Roboto:100,100italic,300,300italic,400,400italic,500,500italic,700,700italic,900,900italic&subset=latin,latin-ext,cyrillic,cyrillic-ext,greek-ext,greek,vietnamese);
@import url(https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext,cyrillic-ext,cyrillic,greek-ext,greek,vietnamese);
@import url(https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700&subset=latin,latin-ext,greek-ext,greek,vietnamese,cyrillic,cyrillic-ext);

 ...[css declarations follow]...

*/.toString().slice(14,-3); 
        return css;
    

    var misc_css = '<style>'+ _miscCSS() +'</style>';
    jQ(misc_css).appendTo('head');

【问题讨论】:

【参考方案1】:

Css 文件(例如)(MaterializeCSS)

p 
  font-family:Roboto;
  font-weight: 200;

【讨论】:

【参考方案2】:

首先——避免使用!important。实际需要这样做的场景数量非常有限。

Roboto 和 Roboto Condensed 由 Google Fonts 作为两个独立的字体系列提供,因此如果您想使用精简版,您必须声明 font-family: "Roboto Condensed",因为精简版不包含在 Roboto 字体系列中。

Roboto Condensed 的可用字体粗细数量也更有限:300、400 和 700 与 Roboto 的 100、300、400、700 和 900 相比。简单地说,使用 100 和 900 的字体粗细不适用于 Roboto Condensed , 并将回退到最接近的字体粗细。

您如何确认 Roboto Condensed 没有使用 300 字体粗细?它似乎对我很好(我也在一些网站上使用它)......在这个小提琴中也很好用:http://jsfiddle.net/8k72a/1/

因此,例如,不可能使用字体粗细为 100 的 Roboto Condensed。


有了更新的问题,为什么不改用这个脚本呢?我看到你已经把你的 CSS 样式分成了几行——记得在 JS 中用反斜杠 \ 转义换行符:

var css = '@import url(https://fonts.googleapis.com/css?family=Roboto:100,100italic,300,300italic,400,400italic,500,500italic,700,700italic,900,900italic&subset=latin,latin-ext,cyrillic,cyrillic-ext,greek-ext,greek,vietnamese);\
           @import url(https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext,cyrillic-ext,cyrillic,greek-ext,greek,vietnamese);\
           @import url(https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700&subset=latin,latin-ext,greek-ext,greek,vietnamese,cyrillic,cyrillic-ext);',
    head = document.head || document.getElementsByTagName('head')[0],
    style = document.createElement('style');

style.type = 'text/css';
if (style.styleSheet)
    style.styleSheet.cssText = css;
 else 
    style.appendChild(document.createTextNode(css));

head.appendChild(style);

【讨论】:

那是一个很棒的小提琴谢谢你..它奇怪地正在为我工作。但在我的用户脚本上,它肯定是 not 工作的。 @robertotomás 你检查过脚本的输出了吗? 我要把这个标记为答案——我的脚本正在运行,我没有看到任何流量被阻止的字体,但你已经说服我字体的工作方式我认为它们在 chrome 中应该是这样的,所以问题是别的。 您好....我将@Terry 的小提琴分叉以包含Roboto+Slab,这样您就可以看到字体系列的衬线版本以及常规和浓缩字体。这里:jsfiddle.net/Dt4pu

以上是关于如何在 Chrome 中使用来自谷歌字体的 Roboto Light/Thin的主要内容,如果未能解决你的问题,请参考以下文章

如何在Chrome谷歌浏览器下设置小于12px的字体

谷歌字体“Merriweather”没有出现在 Chrome 中。?

chrome 字体发虚模糊是因为啥

当所有其他浏览器都显示时,Chrome 不显示谷歌字体

win7chrome中文显示不全

谷歌浏览器字体模糊