谷歌字体的 CSS 在其 WOFF2 文件中撒谎:我如何在运行时/渲染时知道这一点?

问题描述 投票:0回答:0

上下文

我正在开发一款需要动态分析和应用来自 Google 字体的字体的应用程序。其中一部分包括阅读

unicode-range
CSS属性以:首先,了解给定字体包含哪些字符(这是实际的痛点/谎言);其次,用那种字体渲染那些字符。

问题

给定的

unicode-range
可能会列出不包含/由其各自的WOFF2文件用字形覆盖的代码点。

我确实意识到通过a)视觉测试它:字符将使用给定的后备字体呈现(如果没有后备字体,通常是

serif
);或 b) 通过请求指定 included but actually missing characters 作为其 URL 上的
text
值的字体:在这种情况下,Google 字体使用返回带有损坏的 WOFF2 URL 的 CSS。

问题

  1. 我们可以使用任何 JavaScript/CSS API 来了解字符何时由后备字体呈现吗?
  2. Google Fonts 是否以
    unicode-range
    (s) 可能总是包含一些缺失的代码点的方式自动化其 CSS 构建过程?

例子

为了简单起见,我不会把我想出的所有代码都带到这里来自动执行以下过程,因为它超出了范围。

Roboto 在其

cyrillic-ext
子集中包含以下字符:

Ԕ ԕ Ԗ ԗ Ԙ ԙ Ԛ ԛ Ԝ ԝ Ԟ ԟ Ԡ ԡ
Ԣ ԣ Ԥ ԥ Ԧ ԧ Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ

这里我们有那些角色(实际上不是)用 Roboto 渲染:

/* cyrillic-ext */

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

.fallback--serif {
  font-family: Roboto, serif;
}

.fallback--sans-serif {
  font-family: Roboto, sans-serif;
}

.fallback--monospace {
  font-family: Roboto, monospace;
}
<p class="fallback--serif">
  <code>serif</code> fallback<br/> Ԕ ԕ Ԗ ԗ Ԙ ԙ Ԛ ԛ Ԝ ԝ Ԟ ԟ Ԡ ԡ<br/> Ԣ ԣ Ԥ ԥ Ԧ ԧ Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ
</p>
<p class="fallback--sans-serif">
  <code>sans-serif</code> fallback<br/> Ԕ ԕ Ԗ ԗ Ԙ ԙ Ԛ ԛ Ԝ ԝ Ԟ ԟ Ԡ ԡ<br/> Ԣ ԣ Ԥ ԥ Ԧ ԧ Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ
</p>
<p class="fallback--monospace">
  <code>monospace</code> fallback<br/> Ԕ ԕ Ԗ ԗ Ԙ ԙ Ԛ ԛ Ԝ ԝ Ԟ ԟ Ԡ ԡ<br/> Ԣ ԣ Ԥ ԥ Ԧ ԧ Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ
</p>

javascript css fonts google-font-api
© www.soinside.com 2019 - 2024. All rights reserved.