CSSFontFeatureValuesMap
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Das CSSFontFeatureValuesMap-Interface des CSS Object Model (CSSOM) stellt eine durchlaufbare und schreibgeschützte Menge der CSSFontFeatureValuesRule-Eigenschaften dar, wie z.B. swash, annotation, ornaments, usw.
Eine Instanz von CSSFontFeatureValuesMap ist ein schreibgeschütztes Map-ähnliches Objekt, in dem jeder Schlüssel der benutzerdefinierte Name ist, der verwendet wird, um ein Schriftmerkmal zu referenzieren, und der entsprechende Wert der Index für das Schriftmerkmal innerhalb der Schriftart ist.
Instanz-Eigenschaften
CSSFontFeatureValuesMap.size-
Gibt eine positive ganze Zahl zurück, die die Größe des
CSSFontFeatureValuesMap-Objekts enthält.
Instanz-Methoden
CSSFontFeatureValuesMap.clear()-
Entfernt alle Deklarationen im
CSSFontFeatureValuesMap. CSSFontFeatureValuesMap.delete()-
Entfernt die CSS-Deklaration mit der angegebenen Eigenschaft im
CSSFontFeatureValuesMap. CSSFontFeatureValuesMap.entries()-
Gibt ein neues Map-Iterator-Objekt zurück, das die
[Schlüssel, Wert]-Paare für jede Deklaration in diesemCSSFontFeatureValuesMapin Einfüge-Reihenfolge enthält. CSSFontFeatureValuesMap.forEach()-
Führt eine bereitgestellte Funktion einmal pro Schlüssel/Wert-Paar in diesem
CSSFontFeatureValuesMapin Einfüge-Reihenfolge aus. CSSFontFeatureValuesMap.get()-
Gibt den Wert zurück, der dem Schlüssel in diesem
CSSFontFeatureValuesMapentspricht, oderundefined, wenn keiner vorhanden ist. CSSFontFeatureValuesMap.has()-
Gibt einen Boolean zurück, der anzeigt, ob ein Eintrag mit dem angegebenen Schlüssel in diesem
CSSFontFeatureValuesMapexistiert oder nicht. CSSFontFeatureValuesMap.keys()-
Gibt ein neues Map-Iterator-Objekt zurück, das den
Schlüsselfür jede Deklaration in diesemCSSFontFeatureValuesMapin Einfüge-Reihenfolge enthält. CSSFontFeatureValuesMap.set()-
Fügt einen neuen Eintrag mit einem angegebenen Schlüssel und Wert zu diesem
CSSFontFeatureValuesMaphinzu oder aktualisiert einen vorhandenen Eintrag, wenn der Schlüssel bereits existiert. CSSFontFeatureValuesMap.values()-
Gibt ein neues Map-Iterator-Objekt zurück, das den
Wertfür jede Deklaration in diesemCSSFontFeatureValuesMapin Einfüge-Reihenfolge enthält. CSSFontFeatureValuesMap.[Symbol.iterator]()-
Gibt das Iterator-Objekt selbst zurück. Dies erlaubt es, dass Iterator-Objekte auch durchlaufbar sind.
Beispiele
>Benutzerdefinierte Namen protokollieren
Dieses Beispiel zeigt, wie Sie die benutzerdefinierten Namen (und deren zugeordnete Indizes), die in einem CSSFontFeatureValuesMap gespeichert sind, protokollieren können (für bestimmte CSSFontFeatureValuesRule-Eigenschaften).
CSS
Zuerst deklarieren wir ein @font-feature-values für die Schriftfamilie Font One.
Dies beinhaltet die Deklaration der Namen "nice-style" und "odd-style", die verwendet werden können, um die styleset-alternativen Glyphen für Font One zu repräsentieren und die Indexwerte für diese Alternativen zu spezifizieren.
Es beinhaltet auch die Deklaration des Namens "swishy", der verwendet werden kann, um die swash-alternativen Glyphen für Font One zu repräsentieren und den Index für diese Alternative zu spezifizieren.
Die "nice-style"-alternativen Glyphen werden dann für jede .nice-look-Klasse angewendet, indem die font-variant-alternates-Eigenschaft verwendet wird und der Name an die styleset()-Funktion übergeben wird.
Dieselbe Vorgehensweise gilt für den Namen "swishy" für die swash-alternativen Glyphen, die dann an die swash()-Funktion übergeben wird.
Die "odd-style"-Glyphen werden nicht verwendet (sie werden nur hinzugefügt, um zu demonstrieren, dass mehrere Werte in der Karte definiert sein können).
/* At-rule for "nice-style", "odd-style", and "swishy" in Font One */
@font-feature-values Font One {
@styleset {
nice-style: 12; /* name used to represent the alternate set of glyphs at index 12 */
odd-style: 10; /* name used to represent the alternate set of glyphs at index 10 */
}
@swash {
swishy: 1; /* name used to represent the alternate set of glyphs at index 1 */
}
}
/* Apply the at-rules to the appropriate selectors */
.nice-look {
font-variant-alternates: styleset(nice-style);
}
.swoosh {
font-variant-alternates: swash(swishy);
}
JavaScript
Der untenstehende Code findet die entsprechende CSSFontFeatureValuesRule für die oben hinzugefügte CSS-@font-feature-values-Regel.
Dann iteriert er die Werte der styleset- und swash-Eigenschaften, die durch CSSFontFeatureValuesMap-Instanzen repräsentiert werden, unter Verwendung der forEach()-Methode.
In jedem Schritt protokolliert er die benutzerdefinierten Namen und Indexwerte.
const logElement = document.querySelector("#log");
function log(text) {
logElement.innerText = `${logElement.innerText}${text}\n`;
logElement.scrollTop = logElement.scrollHeight;
}
const rules = document.querySelector("#css-output").sheet.cssRules;
const fontOne = rules[0]; // A CSSFontFeatureValuesRule
if (fontOne.styleset) {
// styleset property is supported
log(
"The user has defined the following name(s)/index(s) for CSSFontFeatureValuesRule.styleset:",
);
fontOne.styleset.forEach((value, key) => log(` ${key} : ${value}`));
} else {
log("Browser does not support CSSFontFeatureValuesMap.styleset property.");
}
if (fontOne.swash) {
log(
"The user has defined the following name(s)/index(s) for CSSFontFeatureValuesRule.swash:",
);
fontOne.swash.forEach((value, key) => log(` ${key} : ${value}`));
} else {
log("Browser does not support CSSFontFeatureValuesMap.swash property.");
}
Ergebnis
Spezifikationen
| Specification |
|---|
| CSS Fonts Module Level 4> # cssfontfeaturevaluesmap> |