FontFaceSet: check() 方法

Baseline 2023
新推出

自 ⁨2023 年 12 月⁩起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能無法在較舊的裝置或瀏覽器上使用。

注意:此功能在 Web Workers 中可用。

FontFaceSet 物件的 check() 方法會在您可以使用給定的字型描述來渲染文字,而無需嘗試使用此 FontFaceSet 中尚未完全載入的任何字型時,返回 true。這意味著您可以使用該字型描述而不會引起 字型切換

注意: check() 方法並非用於驗證是否可以渲染特定的字型樣式,或者特定字型是否已完全載入。相反,如果給定的字型描述所指定的文字無需引起字型切換即可渲染,則該方法返回 true。這意味著,即使請求的字型不可用或未完全載入,該方法仍可能返回 true。此行為有助於避免與字型切換相關的視覺問題,但如果您試圖確認特定字型的可用性,可能會產生誤導。

語法

js
check(font)
check(font, text)

引數

font

使用 CSS font 屬性語法的字型描述,例如 "italic bold 16px Roboto"

文字

將字型限制在 Unicode 範圍至少包含文字中任一字元的字型。此操作 不會檢查單個字形覆蓋

返回值

一個 Boolean 值。如果使用給定的字型描述渲染文字不會嘗試使用此 FontFaceSet 中尚未完全載入的任何字型,則返回 true

這意味著此 FontFaceSet 中與給定的字型描述匹配的所有字型,其 status 屬性都設定為 "loaded"

否則,該函式返回 false

示例

在以下示例中,我們建立一個新的 FontFace 並將其新增到 FontFaceSet

js
const font = new FontFace("molot", 'url("/shared-assets/fonts/molot.woff2")', {
  style: "normal",
  weight: "400",
  stretch: "condensed",
});

document.fonts.add(font);

未載入的字型

字型尚未載入,因此 check("12px molot") 返回 false,表明如果我們嘗試使用給定的字型描述,我們將觸發字型載入

js
console.log(document.fonts.check("12px molot"));
// false: the matching font is in the set, but is not yet loaded

系統字型

如果我們僅在 check() 的引數中指定系統字型,它將返回 true,因為我們可以使用系統字型而無需載入該集合中的任何字型

js
console.log(document.fonts.check("12px Courier"));
// true: the matching font is a system font

不存在的字型

如果我們指定一個不在 FontFaceSet 中也不是系統字型的字型,check() 返回 true,因為在這種情況下我們不會依賴該集合中的任何字型

js
console.log(document.fonts.check("12px i-dont-exist"));
// true: the matching font is a nonexistent font

系統字型和未載入的字型

如果我們同時指定一個系統字型和一個集合中尚未載入的字型,那麼 check() 返回 false

js
console.log(document.fonts.check("12px molot, Courier"));
// false: `molot` is in the set but not yet loaded

正在載入的字型

如果我們指定了集合中仍在載入的字型,check() 返回 false

js
function check() {
  font.load();
  console.log(document.fonts.check("12px molot"));
  // false: font is still loading
  console.log(font.status);
  // "loading"
}

check();

已載入的字型

如果我們指定了集合中已載入的字型,check() 返回 true

js
async function check() {
  await font.load();
  console.log(document.fonts.check("12px molot"));
  // true: font has finished loading
  console.log(font.status);
  // "loaded"
}

check();

規範

規範
CSS 字型載入模組等級 3
# dom-fontfaceset-check

瀏覽器相容性