我能使用普通字体替代粗体字吗?

3
我希望使用两种字体:"A-Md"和"A-Bd"。
"A-Bd"看起来比"A-Md"更加粗体,但实际上"A-Md"和"A-Bd"都只有常规字重。
在这种情况下,我想将"A-Bd"作为"A-Md"更粗的字体。 我的CSS写成了:
@font-face {
  font-family: 'A-font';
  font-weight: normal;
  src: local('A-Md');
}
@font-face {
  font-family: 'A-font';
  font-weight: bold;
  src: local('A-Bd');
}
body {
  font-family: 'A-font';
  font-weight: bold;
}

我希望将"A-Bd"应用于文本上,但是结果文本的字体会变得更加粗细,看起来不太好。如果我将字体设置为"A-Bd",那么文本就没问题了,我想将"A-Bd"作为我定义的"A-font"的粗体文本使用。如何让"A-Bd"本身成为"A-font"的粗体版本呢?

你试图通过这种方法解决什么问题?为什么不直接使用常规字体呢? - Jukka K. Korpela
@JukkaK.Korpela 实际上,我正在处理一些支持多种语言的移动网页。当一个是常规字体,另一个是粗体字体时,它可以成功工作。但现在我想为另一种语言使用两种不同的常规字体。当我以相同的方式使用它们时,它失败了。当我使用font-weight:bold时,浏览器会呈现我定义的'A-Bd'粗体字体的粗体版本。如果无法正常工作,我应该为所有粗体文本指定font-family:A-Bd,并在仅支持一种例外语言时删除font-weight:bold。 - user3461590
在你的问题中,你写道“"A-Md"和"A-Bd"字体实际上只有常规重量”,所以你可以得到的粗体(取决于浏览器)将是浏览器相关的“伪粗体”(合成粗体)。这确实是一个问题,但如果没有更具体的数据,包括一些HTML示例和相关的CSS规则,我无法理解你的意思。 - Jukka K. Korpela
2个回答

0

编辑:你正在尝试做一些不太常规的事情,特别是在设计方面,其中字体越少越好。但你可以通过类似以下的方式来实现:

@import url(http://fonts.googleapis.com/css?family=Droid+Sans+Mono);
@import url(http://fonts.googleapis.com/css?family=Nothing+You+Could+Do);
@import url(http://fonts.googleapis.com/css?family=Bangers);
@import url(http://fonts.googleapis.com/css?family=Sonsie+One);

b {
    font-family: 'Nothing You Could Do', cursive;
    font-weight: normal;
    }
p {
    font-family: 'Droid Sans Mono', san-serif;
    font-weight: normal;
    }
p#bangers {
    font-family: 'Bangers', cursive;
    font-weight: normal;
}
span.sonsie {
    font-family: 'Sonsie One', cursive;
    font-weight: normal;
}

然后在你的文档主体中,你可以用以下方式应用其他字体:

<p>Main font is Droid Sans Mono and other is <b>Nothing You Could Do</b></p>
<p id="bangers">This is Bangers and <span class="sonsie">this is Sonsie</span></p>

在这里查看我的JSFiddle示例:http://jsfiddle.net/Incredulous/GpJtP/

使用了来自这里的Google字体:https://www.google.com/fonts 来源于这里:http://www.456bereastreet.com/archive/201012/font-face_tip_define_font-weight_and_font-style_to_keep_your_css_simple/


我不这么认为。根据您提供的页面,似乎可以使用不同的字体文件定义一个字体系列“DroidSerif”及其粗体、斜体和斜体粗体类型。此外,通过这种方式,无需覆盖font-weight和font-family。我想用两个常规字重字体来实现这样的效果,但浏览器不仅使用我定义的粗体字体('A-Bd'),而且使它更加粗体。 - user3461590
根据您的其他评论,我已更新我的FIDDLE以演示使用超过2种字体。请告诉我这是否达到了您的要求。 - Incredulous
我写了一个新的 小提琴 来展示我的意图。主要字体是 'Droid Sans Mono',加粗字体是 'Nothing You Could Do'。我可以使用 'Nothing You Can Do',即使我没有指定 font-family: 'Nothing You Could Do',只需指定 font-weight:bold。它工作得很好,浏览器不会使 'Nothing You Could Do' 变得更加粗体。我用 A-Bd 和 A-Md 字体做同样的事情,以将 A-Bd 用作 A-Md 的粗体字,但浏览器渲染出更粗的 A-Bd 文本。我看不出这个小提琴和我的 A-Bd 和 A-Md 工作之间有什么区别。 - user3461590
我需要看到你使用的字体演示。当你加粗文本时,你成功地使用了不同的字体,所以我不知道你仍然有什么问题。 - Incredulous
是的,jsfiddle 运行良好,但我的页面仍然有问题。我想我找到了原因。当字体从本地字体加载时,浏览器会使其加粗。我安装了“Nothing You Could Do”,再次查看我的 fiddle,浏览器渲染错误。一旦我使用 REGULAR 的“Nothing You Could Do”作为粗体字体,浏览器就会将 BOLD 的“Nothing You Could Do”显示为粗体字体(由于没有它的粗体字体,浏览器会渲染伪粗体)。这似乎是一个 bug。我在 Mac 上的 Chrome 和 iOS webview 上进行了测试。 - user3461590
显示剩余2条评论

0

如果您使用标签来指定加粗:b、strong、em 或任何 h# 标签(例如),您可以将这些设置为显示“您的加粗字体”和 font-weight:normal;

您甚至可以将这些属性一起设置多个元素,如下所示:

 b, strong, em  {
      font-weight: normal;
      font-family: 'your bold font';
 }

如有必要,请将其他类添加到列表中。


实际上,我很少使用b、strong标签,而是想通过CSS指定粗体。我应该定义两个不同的字体系列,并在需要加粗的地方用font-weight:normal指定粗体字体系列吗?我不能只使用一个字体系列和不同的font-weight CSS属性来使用两种不同的字体吗? - user3461590
你想要的似乎无法仅使用你想要使用的 CSS 实现。 在应该加粗和正常字重之间没有使用类别区别吗?(例如 <p>我是粗体文本</p><p>我是普通文本</p>) 如果是这种情况,那么我建议为应该加粗的文本引入 span 标签。(例如 <p><span>我是粗体文本</span></p><p>我是普通文本</p>,并使用 CSS span {/* 粗体字设置 */}) - JRulle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接