diff --git a/gfx/thebes/gfxUserFontSet.h b/gfx/thebes/gfxUserFontSet.h index 3a13573ac..2570bd711 100644 --- a/gfx/thebes/gfxUserFontSet.h +++ b/gfx/thebes/gfxUserFontSet.h @@ -191,14 +191,23 @@ public: FLAG_FORMAT_WOFF = 1 << 6, FLAG_FORMAT_WOFF2 = 1 << 7, + FLAG_FORMAT_OPENTYPE_VARIATIONS = 1 << 8, + FLAG_FORMAT_TRUETYPE_VARIATIONS = 1 << 9, + FLAG_FORMAT_WOFF_VARIATIONS = 1 << 10, + FLAG_FORMAT_WOFF2_VARIATIONS = 1 << 11, + // the common formats that we support everywhere FLAG_FORMATS_COMMON = FLAG_FORMAT_OPENTYPE | FLAG_FORMAT_TRUETYPE | FLAG_FORMAT_WOFF | - FLAG_FORMAT_WOFF2, + FLAG_FORMAT_WOFF2 | + FLAG_FORMAT_OPENTYPE_VARIATIONS | + FLAG_FORMAT_TRUETYPE_VARIATIONS | + FLAG_FORMAT_WOFF_VARIATIONS | + FLAG_FORMAT_WOFF2_VARIATIONS, // mask of all unused bits, update when adding new formats - FLAG_FORMAT_NOT_USED = ~((1 << 8)-1) + FLAG_FORMAT_NOT_USED = ~((1 << 12)-1) }; diff --git a/layout/inspector/nsFontFace.cpp b/layout/inspector/nsFontFace.cpp index abf9f6439..03ac0d583 100644 --- a/layout/inspector/nsFontFace.cpp +++ b/layout/inspector/nsFontFace.cpp @@ -178,6 +178,18 @@ nsFontFace::GetFormat(nsAString & aFormat) if (formatFlags & gfxUserFontSet::FLAG_FORMAT_WOFF2) { AppendToFormat(aFormat, "woff2"); } + if (formatFlags & gfxUserFontSet::FLAG_FORMAT_OPENTYPE_VARIATIONS) { + AppendToFormat(aFormat, "opentype-variations"); + } + if (formatFlags & gfxUserFontSet::FLAG_FORMAT_TRUETYPE_VARIATIONS) { + AppendToFormat(aFormat, "truetype-variations"); + } + if (formatFlags & gfxUserFontSet::FLAG_FORMAT_WOFF_VARIATIONS) { + AppendToFormat(aFormat, "woff-variations"); + } + if (formatFlags & gfxUserFontSet::FLAG_FORMAT_WOFF2_VARIATIONS) { + AppendToFormat(aFormat, "woff2-variations"); + } } return NS_OK; } diff --git a/layout/style/FontFaceSet.cpp b/layout/style/FontFaceSet.cpp index cb968e248..b27fb3d9b 100644 --- a/layout/style/FontFaceSet.cpp +++ b/layout/style/FontFaceSet.cpp @@ -1130,6 +1130,15 @@ FontFaceSet::FindOrCreateUserFontEntryFromFontFace(const nsAString& aFamilyName, face->mFormatFlags |= gfxUserFontSet::FLAG_FORMAT_EOT; } else if (valueString.LowerCaseEqualsASCII("svg")) { face->mFormatFlags |= gfxUserFontSet::FLAG_FORMAT_SVG; + } else if (valueString.LowerCaseEqualsASCII("woff-variations")) { + face->mFormatFlags |= gfxUserFontSet::FLAG_FORMAT_WOFF_VARIATIONS; + } else if (Preferences::GetBool(GFX_PREF_WOFF2_ENABLED) && + valueString.LowerCaseEqualsASCII("woff2-variations")) { + face->mFormatFlags |= gfxUserFontSet::FLAG_FORMAT_WOFF2_VARIATIONS; + } else if (valueString.LowerCaseEqualsASCII("opentype-variations")) { + face->mFormatFlags |= gfxUserFontSet::FLAG_FORMAT_OPENTYPE_VARIATIONS; + } else if (valueString.LowerCaseEqualsASCII("truetype-variations")) { + face->mFormatFlags |= gfxUserFontSet::FLAG_FORMAT_TRUETYPE_VARIATIONS; } else { // unknown format specified, mark to distinguish from the // case where no format hints are specified