【问题标题】:Font face according to language根据语言的字体
【发布时间】:2018-07-03 08:14:13
【问题描述】:

案例: 我有试卷 html,其中我的页眉、页脚和一些标题是英语,问题、选项和答案文本将是不同的语言,英语或印地语或马拉地语。所有数据均来自数据库。我有三种可用的字体 freeserif、freeserifbold 和 mangal。

问题: 我想为英文内容应用 freeserif 字体,为粗体文本应用 freeserif 粗体字体,为非英文内容应用 mangal 字体。 我做的是

@font-face {
        font-family: FreeSerif;
        src: url("<?= asset_url('fonts', 'FreeSerif.ttf'); ?>");
    }
    @font-face {
        font-family: FreeSerif;
        src: url("<?= asset_url('fonts', 'FreeSerifBold.ttf'); ?>");
        font-weight: bold;
    }
    @font-face {
        font-family: Mangal;
        src: url("<?= asset_url('fonts', 'mangal.ttf'); ?>");
    }
    body, html, font, * {padding: 0;margin: 0;font-family:"FreeSerif" !important;font-size:14px;}

但每次 mangal 字体都会被覆盖。我想将 freeserif 用于英文内容,将 mangal 用于非英文内容。

有没有更好的方法来做到这一点?

【问题讨论】:

  • 好吧,您没有提供任何信息,您的代码中的语言之间有何不同。我假设您为此使用类。所以你应该能够制作 ".english{ font-family: FreeSerif;}" 和 ".marathi{ font-family: "Mangal";} 而且你应该在你提供的代码中删除字体系列的 !important . 但是如前所述,如果您提供更多有关 HTML-DOM 的信息会更容易
  • 我无法上课,因为内容没有固定语言。实际上,正如我在问题中提到的那样,我需要为英文内容应用免费衬线,为非英文内容应用 mangal。
  • 你不应该使用类来识别不同语言的内容,你应该使用 html lang 属性来代替
  • 谢谢@VilleKoo。但是我的页面中有英语和非英语两种类型的内容,我的最后一个字体每次都被覆盖。这就是问题所在。
  • 我们需要更多代码来提供有用的答案。向我们展示整个事物是如何构建的。我的猜测仍然是您的 !important 会覆盖其余部分

标签: php html css fonts font-face


【解决方案1】:

如果你在 html 中使用正确的语言属性,你可以在 CSS 中定位不同的语言(你应该这样做)

[lang="en"] {
  font-family: sans-serif
}

[lang="ne"] {
  font-family: serif;
}
<div>
  <p lang="en">this is english</p>
  <p lang="ne">and this is Nepali</p>
</div>

【讨论】:

  • 感谢您的回答!但是我如何确定问题所在的内容语言:(
  • 您不能仅在 css 中神奇地检测不同的语言。您需要在 html 中提供该信息,使用语言属性、类或其他方式
猜你喜欢
  • 1970-01-01
  • 2019-03-02
  • 2013-02-22
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多