Bug 1583707 - enable text subpixel positioning on Android and Linux. r=jfkthame

Differential Revision: https://phabricator.services.mozilla.com/D47035

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Lee Salzman 2019-10-02 14:04:45 +00:00
Родитель 1a47fa0d8f
Коммит fd28aa44da
34 изменённых файлов: 102 добавлений и 90 удалений

Просмотреть файл

@ -37,6 +37,11 @@ ScaledFontFontconfig::ScaledFontFontconfig(
mFace(std::move(aFace)),
mInstanceData(aInstanceData) {}
bool ScaledFontFontconfig::UseSubpixelPosition() const {
return mInstanceData.mAntialias != AntialiasMode::NONE &&
FT_IS_SCALABLE(mFace->GetFace());
}
#ifdef USE_SKIA
SkTypeface* ScaledFontFontconfig::CreateSkTypeface() {
SkPixelGeometry geo = mInstanceData.mFlags & InstanceData::SUBPIXEL_BGR
@ -51,8 +56,7 @@ SkTypeface* ScaledFontFontconfig::CreateSkTypeface() {
}
void ScaledFontFontconfig::SetupSkFontDrawOptions(SkFont& aFont) {
// SkFontHost_cairo does not support subpixel text positioning
aFont.setSubpixel(false);
aFont.setSubpixel(UseSubpixelPosition());
if (mInstanceData.mFlags & InstanceData::AUTOHINT) {
aFont.setForceAutoHinting(true);
@ -180,7 +184,7 @@ ScaledFontFontconfig::InstanceData::InstanceData(FcPattern* aPattern)
int filter;
if (mAntialias == AntialiasMode::SUBPIXEL &&
FcPatternGetInteger(aPattern, FC_LCD_FILTER, 0, &filter) ==
FcResultMatch) {
FcResultMatch) {
switch (filter) {
case FC_LCD_NONE:
mLcdFilter = FT_LCD_FILTER_NONE;
@ -263,7 +267,9 @@ void ScaledFontFontconfig::InstanceData::SetupFontOptions(
unsigned int* aOutSynthFlags) const {
// For regular (non-printer) fonts, enable hint metrics as well as hinting
// and (possibly subpixel) antialiasing.
cairo_font_options_set_hint_metrics(aFontOptions, mFlags & HINT_METRICS ? CAIRO_HINT_METRICS_ON : CAIRO_HINT_METRICS_OFF);
cairo_font_options_set_hint_metrics(
aFontOptions,
mFlags & HINT_METRICS ? CAIRO_HINT_METRICS_ON : CAIRO_HINT_METRICS_OFF);
cairo_hint_style_t hinting;
switch (mHinting) {
@ -291,8 +297,7 @@ void ScaledFontFontconfig::InstanceData::SetupFontOptions(
cairo_font_options_set_antialias(aFontOptions, CAIRO_ANTIALIAS_GRAY);
break;
case AntialiasMode::SUBPIXEL: {
cairo_font_options_set_antialias(aFontOptions,
CAIRO_ANTIALIAS_SUBPIXEL);
cairo_font_options_set_antialias(aFontOptions, CAIRO_ANTIALIAS_SUBPIXEL);
cairo_font_options_set_subpixel_order(
aFontOptions,
mFlags & SUBPIXEL_BGR
@ -302,16 +307,16 @@ void ScaledFontFontconfig::InstanceData::SetupFontOptions(
: CAIRO_SUBPIXEL_ORDER_RGB));
cairo_lcd_filter_t lcdFilter = CAIRO_LCD_FILTER_DEFAULT;
switch (mLcdFilter) {
case FT_LCD_FILTER_NONE:
case FT_LCD_FILTER_NONE:
lcdFilter = CAIRO_LCD_FILTER_NONE;
break;
case FT_LCD_FILTER_DEFAULT:
case FT_LCD_FILTER_DEFAULT:
lcdFilter = CAIRO_LCD_FILTER_FIR5;
break;
case FT_LCD_FILTER_LIGHT:
case FT_LCD_FILTER_LIGHT:
lcdFilter = CAIRO_LCD_FILTER_FIR3;
break;
case FT_LCD_FILTER_LEGACY:
case FT_LCD_FILTER_LEGACY:
lcdFilter = CAIRO_LCD_FILTER_INTRA_PIXEL;
break;
}
@ -358,9 +363,10 @@ bool ScaledFontFontconfig::GetWRFontInstanceOptions(
std::vector<FontVariation>* aOutVariations) {
wr::FontInstanceOptions options;
options.render_mode = wr::FontRenderMode::Alpha;
// FIXME: Cairo-FT metrics are not compatible with subpixel positioning.
// options.flags = wr::FontInstanceFlags_SUBPIXEL_POSITION;
options.flags = wr::FontInstanceFlags{0};
if (UseSubpixelPosition()) {
options.flags |= wr::FontInstanceFlags_SUBPIXEL_POSITION;
}
options.bg_color = wr::ToColorU(Color());
options.synthetic_italics =
wr::DegreesToSyntheticItalics(GetSyntheticObliqueAngle());

Просмотреть файл

@ -32,6 +32,8 @@ class ScaledFontFontconfig : public ScaledFontBase {
AntialiasMode GetDefaultAAMode() override;
bool UseSubpixelPosition() const;
bool CanSerialize() override { return true; }
bool GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton) override;

Просмотреть файл

@ -26,14 +26,17 @@ ScaledFontFreeType::ScaledFontFreeType(
mFace(std::move(aFace)),
mApplySyntheticBold(aApplySyntheticBold) {}
bool ScaledFontFreeType::UseSubpixelPosition() const {
return FT_IS_SCALABLE(mFace->GetFace());
}
#ifdef USE_SKIA
SkTypeface* ScaledFontFreeType::CreateSkTypeface() {
return SkCreateTypefaceFromCairoFTFont(mFace->GetFace(), mFace.get());
}
void ScaledFontFreeType::SetupSkFontDrawOptions(SkFont& aFont) {
// SkFontHost_cairo does not support subpixel text positioning
aFont.setSubpixel(false);
aFont.setSubpixel(UseSubpixelPosition());
if (mApplySyntheticBold) {
aFont.setEmbolden(true);
@ -83,9 +86,10 @@ bool ScaledFontFreeType::GetWRFontInstanceOptions(
std::vector<FontVariation>* aOutVariations) {
wr::FontInstanceOptions options;
options.render_mode = wr::FontRenderMode::Alpha;
// FIXME: Cairo-FT metrics are not compatible with subpixel positioning.
// options.flags = wr::FontInstanceFlags_SUBPIXEL_POSITION;
options.flags = wr::FontInstanceFlags{0};
if (UseSubpixelPosition()) {
options.flags |= wr::FontInstanceFlags_SUBPIXEL_POSITION;
}
options.flags |= wr::FontInstanceFlags_EMBEDDED_BITMAPS;
options.bg_color = wr::ToColorU(Color());
options.synthetic_italics =

Просмотреть файл

@ -33,6 +33,8 @@ class ScaledFontFreeType : public ScaledFontBase {
AntialiasMode GetDefaultAAMode() override { return AntialiasMode::GRAY; }
bool UseSubpixelPosition() const;
bool CanSerialize() override { return true; }
bool GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton) override;

Просмотреть файл

@ -510,6 +510,14 @@ void SkScalerContext_CairoFT::generateMetrics(SkGlyph* glyph)
FT_BBox bbox;
FT_Outline_Get_CBox(&fFTFace->glyph->outline, &bbox);
if (this->isSubpixel()) {
int dx = SkFixedToFDot6(glyph->getSubXFixed());
int dy = SkFixedToFDot6(glyph->getSubYFixed());
bbox.xMin += dx;
bbox.yMin -= dy;
bbox.xMax += dx;
bbox.yMax -= dy;
}
bbox.xMin &= ~63;
bbox.yMin &= ~63;
bbox.xMax = (bbox.xMax + 63) & ~63;

Просмотреть файл

@ -471,6 +471,15 @@ uint32_t gfxFT2FontBase::GetGlyph(uint32_t unicode,
return GetGlyph(unicode);
}
bool gfxFT2FontBase::ShouldRoundXOffset(cairo_t* aCairo) const {
// Force rounding if outputting to a Cairo context. Otherwise, allow subpixel
// positioning (no rounding) if rendering a scalable outline font with
// anti-aliasing. Monochrome rendering or some bitmap fonts can become too
// distorted with subpixel positioning, so force rounding in those cases.
return aCairo != nullptr || !mFTFace || !FT_IS_SCALABLE(mFTFace->GetFace()) ||
(mFTLoadFlags & FT_LOAD_MONOCHROME);
}
FT_Vector gfxFT2FontBase::GetEmboldenStrength(FT_Face aFace) {
FT_Vector strength = {0, 0};
if (!mEmbolden) {
@ -524,8 +533,7 @@ bool gfxFT2FontBase::GetFTGlyphExtents(uint16_t aGID, int32_t* aAdvance,
// applying hinting. Otherwise, prefer hinted width from glyph->advance.x.
if (aAdvance) {
FT_Fixed advance;
if (face.get()->glyph->format == FT_GLYPH_FORMAT_OUTLINE &&
(!hintMetrics || FT_HAS_MULTIPLE_MASTERS(face.get()))) {
if (!ShouldRoundXOffset(nullptr) || FT_HAS_MULTIPLE_MASTERS(face.get())) {
advance = face.get()->glyph->linearHoriAdvance;
} else {
advance = face.get()->glyph->advance.x << 10; // convert 26.6 to 16.16

Просмотреть файл

@ -15,9 +15,8 @@
#include "nsHashKeys.h"
class gfxFT2FontEntryBase : public gfxFontEntry {
public:
explicit gfxFT2FontEntryBase(const nsACString& aName)
: gfxFontEntry(aName) {}
public:
explicit gfxFT2FontEntryBase(const nsACString& aName) : gfxFontEntry(aName) {}
struct CmapCacheSlot {
CmapCacheSlot() : mCharCode(0), mGlyphIndex(0) {}
@ -53,6 +52,8 @@ class gfxFT2FontBase : public gfxFont {
FontType GetType() const override { return FONT_TYPE_FT2; }
bool ShouldRoundXOffset(cairo_t* aCairo) const override;
static void SetupVarCoords(FT_MM_Var* aMMVar,
const nsTArray<gfxFontVariation>& aVariations,
FT_Face aFTFace);

Просмотреть файл

@ -5,8 +5,8 @@ fuzzy-if(cocoaWidget,0-1,0-1) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == bidi-001.html bidi-001-ref.html # Bug 1392106
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == bidi-001-j.html bidi-001-ref.html # Bug 1392106
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == bidi-001-v.html bidi-001-ref.html # Bug 1392106
== bidi-002.html bidi-002-ref.html
== bidi-003.html bidi-003-ref.html
fuzzy-if(Android,0-1,0-1) == bidi-002.html bidi-002-ref.html
fuzzy-if(Android,0-1,0-1) == bidi-003.html bidi-003-ref.html
fuzzy-if(gtkWidget,0-255,0-17) == bidi-004.html bidi-004-ref.html # inconsistency in the Hebrew font that gets used
fuzzy-if(gtkWidget,0-255,0-17) == bidi-004-j.html bidi-004-ref.html # inconsistency in the Hebrew font that gets used
== bidi-005.html bidi-005-ref.html
@ -50,8 +50,8 @@ random-if(cocoaWidget) == with-first-letter-2b.html with-first-letter-2-ref.html
== 83958-1a.html 83958-1-ref.html
== 83958-1b.html 83958-1-ref.html
== 83958-1c.html 83958-1-ref.html
fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&!layersGPUAccelerated&&!azureSkia,0-111,0-7) == 83958-2a.html 83958-2-ref.html
fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&!layersGPUAccelerated&&!azureSkia,0-111,0-7) == 83958-2b.html 83958-2-ref.html
fuzzy-if(Android,0-1,0-3) fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&!layersGPUAccelerated&&!azureSkia,0-111,0-7) == 83958-2a.html 83958-2-ref.html
fuzzy-if(Android,0-1,0-3) fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&!layersGPUAccelerated&&!azureSkia,0-111,0-7) == 83958-2b.html 83958-2-ref.html
== 115921-1.html 115921-1-ref.html
== 115921-2.html 115921-2-ref.html
== 151407-1.html 151407-1-ref.html
@ -162,11 +162,11 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-1c-ltr.html bra
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-1c-rtl.html brackets-1c-rtl-ref.html # Bug 1392106
fuzzy-if(Android,0-1,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-2a-ltr.html brackets-2a-ltr-ref.html # Bug 1392106
fuzzy-if(cocoaWidget,0-1,0-2) fuzzy-if(Android,0-254,0-557) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-2a-rtl.html brackets-2a-rtl-ref.html # Bug 1392106
fuzzy-if(Android,0-1,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-2b-ltr.html brackets-2b-ltr-ref.html # Bug 1392106
fuzzy-if(Android,0-1,0-8) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-2b-ltr.html brackets-2b-ltr-ref.html # Bug 1392106
fuzzy-if(cocoaWidget,0-1,0-2) fuzzy-if(Android,0-1,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-2b-rtl.html brackets-2b-rtl-ref.html # Bug 1392106
fuzzy-if(cocoaWidget,0-1,0-2) fuzzy-if(Android,0-1,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-2c-ltr.html brackets-2c-ltr-ref.html # Bug 1392106
fuzzy-if(Android,0-254,0-231) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-2c-rtl.html brackets-2c-rtl-ref.html # Bug 1392106
fuzzy-if(cocoaWidget,0-1,0-3) fuzzy-if(Android,0-1,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-3a-ltr.html brackets-3a-ltr-ref.html # Bug 1392106
fuzzy-if(cocoaWidget,0-1,0-3) fuzzy-if(Android,0-1,0-8) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-3a-ltr.html brackets-3a-ltr-ref.html # Bug 1392106
fuzzy-if(cocoaWidget,0-1,0-2) fuzzy-if(Android,0-1,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-3a-rtl.html brackets-3a-rtl-ref.html # Bug 1392106
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-3b-ltr.html brackets-3b-ltr-ref.html # Bug 1392106
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == brackets-3b-rtl.html brackets-3b-rtl-ref.html # Bug 1392106

Просмотреть файл

@ -1608,7 +1608,7 @@ fuzzy-if(Android,0-8,0-20) fails-if(webrender) == 602200-3.html 602200-3-ref.htm
== 602200-4.html 602200-4-ref.html
== 603423-1.html 603423-1-ref.html
== 604737.html 604737-ref.html
fuzzy-if(geckoview&&webrender,11-11,630-637) fuzzy-if(webrender&&cocoaWidget,0-7,0-610) == 605138-1.html 605138-1-ref.html
fuzzy-if(webrender&&cocoaWidget,0-7,0-610) == 605138-1.html 605138-1-ref.html
== 605157-1.xhtml 605157-1-ref.xhtml
== 607267-1.html 607267-1-ref.html
== 608636-1.html 608636-1-ref.html
@ -2101,8 +2101,8 @@ pref(image.downscale-during-decode.enabled,true) == 1553571-1.html 1553571-1-ref
== 1558937-1.html 1558937-1-ref.html
!= 1563484.html 1563484-notref.html
== 1563484.html 1563484-ref.html
fuzzy-if(!webrender||!winWidget,251-255,464-1613) fuzzy-if(geckoview&&webrender,251-253,1392-1397) == 1562733-rotated-nastaliq-1.html 1562733-rotated-nastaliq-1-ref.html
fuzzy-if(winWidget&&webrender,0-31,0-3) fuzzy-if(geckoview&&webrender,0-93,0-26) == 1562733-rotated-nastaliq-2.html 1562733-rotated-nastaliq-2-ref.html
fuzzy-if(!webrender||!winWidget,251-255,464-1613) fuzzy-if(geckoview&&webrender,251-253,1392-1401) == 1562733-rotated-nastaliq-1.html 1562733-rotated-nastaliq-1-ref.html
fuzzy-if(winWidget&&webrender,0-31,0-3) fuzzy-if(geckoview&&webrender,0-93,0-87) == 1562733-rotated-nastaliq-2.html 1562733-rotated-nastaliq-2-ref.html
test-pref(plain_text.wrap_long_lines,false) != 1565129.txt 1565129.txt
fuzzy(0-32,0-8) fuzzy-if(Android&&webrender,0-32,0-1458) == 1576553-1.html 1576553-1-ref.html
== 1579953-2.html 1579953-2-ref.html

Просмотреть файл

@ -25,7 +25,7 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == intrinsic-isize-2.html i
== justification-1.html justification-1-ref.html
== justification-2.html justification-2-ref.html
fuzzy-if(winWidget,0-255,0-792) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == lang-specific-style-1.html lang-specific-style-1-ref.html # bug 1134947, Bug 1392106
== line-breaking-1.html line-breaking-1-ref.html
fuzzy-if(Android,0-96,0-18) == line-breaking-1.html line-breaking-1-ref.html
== line-breaking-2.html line-breaking-2-ref.html
== line-breaking-3.html line-breaking-3-ref.html
fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-3,0-2) == line-break-suppression-1.html line-break-suppression-1-ref.html

Просмотреть файл

@ -12,7 +12,7 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 355548-5.xml 355548-5-re
== 373533-2.xhtml about:blank
== 373533-3.xhtml about:blank
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 393760-1.xml 393760-1-ref.xml # Bug 1392106
fuzzy-if(skiaContent,0-2,0-500) == 393760-2.xml 393760-2-ref.xml
fuzzy-if(skiaContent,0-2,0-529) == 393760-2.xml 393760-2-ref.xml
== 414123.xhtml 414123-ref.xhtml
== dir-1.html dir-1-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == dir-2.html dir-2-ref.html # Bug 1392106
@ -23,7 +23,7 @@ fuzzy-if(cocoaWidget,0-135,0-56) == dir-6a.html dir-6a-ref.html
== css-spacing-1.html css-spacing-1-ref.html
pref(mathml.disabled,true) == disabled-scriptlevel-1.html disabled-scriptlevel-1-ref.html
pref(mathml.disabled,true) == disabled-scriptlevel-1.xhtml disabled-scriptlevel-1-ref.xhtml
random-if(smallScreen&&Android) fuzzy(0-255,0-200) fuzzy-if(geckoview&&webrender,216-216,312-314) fuzzy-if(webrender&&winWidget,114-255,245-361) fuzzy-if(webrender&&OSX,79-153,307-314) == mirror-op-1.html mirror-op-1-ref.html
random-if(smallScreen&&Android) fuzzy(0-255,0-200) fuzzy-if(geckoview&&webrender,201-216,312-316) fuzzy-if(webrender&&winWidget,114-255,245-361) fuzzy-if(webrender&&OSX,79-153,307-314) == mirror-op-1.html mirror-op-1-ref.html
!= mirror-op-2.html mirror-op-2-ref.html
!= mirror-op-3.html mirror-op-3-ref.html
!= mirror-op-4.html mirror-op-4-ref.html
@ -351,18 +351,18 @@ pref(mathml.deprecated_alignment_attributes.disabled,false) == mfrac-A-7.html mf
== mfrac-B-1.html mfrac-B-1-ref.html
pref(mathml.mfrac_linethickness_names.disabled,false) == mfrac-B-2.html mfrac-B-2-3-ref.html
pref(mathml.mfrac_linethickness_names.disabled,false) == mfrac-B-3.html mfrac-B-2-3-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-198,0-781) == mfrac-B-4.html mfrac-B-4-5-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-239,0-781) == mfrac-B-4.html mfrac-B-4-5-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) == mfrac-B-5.html mfrac-B-4-5-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-198,0-781) == mfrac-B-6.html mfrac-B-6-7-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-239,0-781) == mfrac-B-6.html mfrac-B-6-7-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) == mfrac-B-7.html mfrac-B-6-7-ref.html
fuzzy-if(OSX,0-1,0-100) fuzzy-if(skiaContent,0-1,0-14) == mfrac-C-1.html mfrac-C-1-ref.html
pref(mathml.mfrac_linethickness_names.disabled,false) == mfrac-C-2.html mfrac-C-2-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-198,0-776) == mfrac-C-3.html mfrac-C-3-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-198,0-271) == mfrac-C-4.html mfrac-C-4-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-239,0-776) == mfrac-C-3.html mfrac-C-3-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-239,0-271) == mfrac-C-4.html mfrac-C-4-ref.html
fuzzy-if(OSX,0-1,0-100) fuzzy-if(skiaContent,0-1,0-14) == mfrac-D-1.html mfrac-D-1-ref.html
pref(mathml.mfrac_linethickness_names.disabled,false) == mfrac-D-2.html mfrac-D-2-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-198,0-776) == mfrac-D-3.html mfrac-D-3-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-198,0-271) == mfrac-D-4.html mfrac-D-4-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-239,0-776) == mfrac-D-3.html mfrac-D-3-ref.html
pref(mathml.deprecated_alignment_attributes.disabled,false) fuzzy-if(geckoview&&webrender,0-239,0-271) == mfrac-D-4.html mfrac-D-4-ref.html
== mfrac-E-1.html mfrac-E-1-ref.html
== shadow-dom-1.html shadow-dom-1-ref.html
pref(dom.meta-viewport.enabled,true) pref(font.size.inflation.emPerLine,25) fuzzy-if(webrender&&!gtkWidget,0-255,0-324) == font-inflation-1.html font-inflation-1-ref.html

Просмотреть файл

@ -16,26 +16,26 @@
== clip-path-polygon-012.html clip-path-stripes-001-ref.html
fuzzy-if(skiaContent,0-1,0-20) fuzzy-if(webrender&&gtkWidget,8-8,20-20) fails-if(webrender&&!gtkWidget) == clip-path-polygon-013.html clip-path-stripes-003-ref.html
fuzzy-if(webrender,35-35,699-708) == clip-path-circle-001.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-708) == clip-path-circle-002.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-708) == clip-path-circle-003.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-708) == clip-path-circle-004.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-005.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-708) == clip-path-circle-006.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-007.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-008.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-708) == clip-path-circle-009.html clip-path-circle-003-ref.html
fuzzy-if(webrender,35-35,699-731) == clip-path-circle-010.html clip-path-circle-004-ref.html
fuzzy-if(webrender,35-35,699-719) == clip-path-circle-011.html clip-path-circle-005-ref.html
fuzzy-if(webrender,35-35,699-708) == clip-path-circle-012.html clip-path-circle-006-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-013.html clip-path-circle-002-ref.html
fuzzy-if(webrender,34-35,699-882) == clip-path-circle-014.html clip-path-circle-007-ref.html
fuzzy-if(webrender,34-35,699-901) == clip-path-circle-015.html clip-path-circle-008-ref.html
fuzzy-if(webrender,34-35,699-836) == clip-path-circle-016.html clip-path-circle-009-ref.html
fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-16,0-9) fuzzy-if(webrender,34-35,699-882) == clip-path-circle-017.html clip-path-circle-007-ref.html
fuzzy-if(webrender,35-35,699-712) == clip-path-circle-018.html clip-path-circle-010-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-019.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-020.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-001.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-002.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-003.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-004.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-712) == clip-path-circle-005.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-006.html clip-path-circle-001-ref.html
fuzzy-if(webrender,35-35,699-712) == clip-path-circle-007.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-712) == clip-path-circle-008.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-009.html clip-path-circle-003-ref.html
fuzzy-if(webrender,35-35,699-733) == clip-path-circle-010.html clip-path-circle-004-ref.html
fuzzy-if(webrender,35-35,699-721) == clip-path-circle-011.html clip-path-circle-005-ref.html
fuzzy-if(webrender,35-35,699-710) == clip-path-circle-012.html clip-path-circle-006-ref.html
fuzzy-if(webrender,35-35,699-712) == clip-path-circle-013.html clip-path-circle-002-ref.html
fuzzy-if(webrender,34-35,699-884) == clip-path-circle-014.html clip-path-circle-007-ref.html
fuzzy-if(webrender,34-35,699-903) == clip-path-circle-015.html clip-path-circle-008-ref.html
fuzzy-if(webrender,34-35,699-838) == clip-path-circle-016.html clip-path-circle-009-ref.html
fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-16,0-9) fuzzy-if(webrender,34-35,699-884) == clip-path-circle-017.html clip-path-circle-007-ref.html
fuzzy-if(webrender,35-35,699-714) == clip-path-circle-018.html clip-path-circle-010-ref.html
fuzzy-if(webrender,35-35,699-712) == clip-path-circle-019.html clip-path-circle-002-ref.html
fuzzy-if(webrender,35-35,699-712) == clip-path-circle-020.html clip-path-circle-002-ref.html
fuzzy-if(webrender&&(winWidget||cocoaWidget),0-1,0-5) == clip-path-circle-021.html clip-path-circle-021-ref.html
fuzzy-if(webrender,36-36,1099-1100) == clip-path-ellipse-001.html clip-path-ellipse-001-ref.html

Просмотреть файл

@ -56,14 +56,14 @@ fuzzy-if(webrender&&winWidget,132-138,183-206) == simple-rtl.svg simple-rtl-ref.
== multiple-x-dx-bidi.svg multiple-x-dx-bidi-ref.svg
== multiple-x-dx-rtl.svg multiple-x-dx-rtl-ref.svg
== multiple-x-dx.svg multiple-x-dx-ref.svg
== multiple-x-holes-bidi.svg multiple-x-holes-bidi-ref.svg
fuzzy-if(Android,0-65,0-55) == multiple-x-holes-bidi.svg multiple-x-holes-bidi-ref.svg
== multiple-x-holes-dx-bidi.svg multiple-x-holes-dx-bidi-ref.svg
== multiple-x-holes.svg multiple-x-holes-ref.svg
== multiple-x-holes-dx.svg multiple-x-holes-dx-ref.svg
== multiple-x-holes-multiple-dx-bidi.svg multiple-x-holes-multiple-dx-bidi-ref.svg
== multiple-x-holes-multiple-dx-rtl.svg multiple-x-holes-multiple-dx-rtl-ref.svg
== multiple-x-holes-multiple-dx.svg multiple-x-holes-multiple-dx-ref.svg
== multiple-x-holes-rtl.svg multiple-x-holes-rtl-ref.svg
fuzzy-if(Android,0-192,0-82) == multiple-x-holes-rtl.svg multiple-x-holes-rtl-ref.svg
== multiple-x-multiple-dx-bidi.svg multiple-x-multiple-dx-bidi-ref.svg
== multiple-x-multiple-dx-rtl.svg multiple-x-multiple-dx-rtl-ref.svg
== multiple-x-multiple-dx.svg multiple-x-multiple-dx-ref.svg

Просмотреть файл

@ -186,7 +186,7 @@ random-if(!winWidget) == arial-bold-lam-alef-1.html arial-bold-lam-alef-1-ref.ht
fails-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 1320665-cmap-format-13.html 1320665-cmap-format-13-ref.html # see bug 1320665 comments 8-9
== 1331339-script-extensions-shaping-1.html 1331339-script-extensions-shaping-1-ref.html
skip-if(!cocoaWidget) != 1349308-1.html 1349308-notref.html # macOS-specific test for -apple-system glyph metrics
fails-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)) == 1463020-letter-spacing-text-transform-1.html 1463020-letter-spacing-text-transform-1-ref.html # Win10: regional indicators not supported by system emoji font
fuzzy-if(Android,0-128,0-230) fails-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)) == 1463020-letter-spacing-text-transform-1.html 1463020-letter-spacing-text-transform-1-ref.html # Win10: regional indicators not supported by system emoji font
fails-if(Android) == 1463020-letter-spacing-text-transform-2.html 1463020-letter-spacing-text-transform-2-ref.html # missing font coverage on Android
== 1507661-spurious-hyphenation-after-explicit.html 1507661-spurious-hyphenation-after-explicit-ref.html
fuzzy-if(!webrender,12-66,288-1660) fails-if(gtkWidget&&!webrender) == 1522857-1.html 1522857-1-ref.html # antialiasing fuzz in non-webrender cases
@ -325,7 +325,7 @@ pref(gfx.font_rendering.graphite.enabled,true) == glyph-decomposition-graphite.h
== hyphenation-control-2.html hyphenation-control-2-ref.html
== hyphenation-control-3.html hyphenation-control-3-ref.html
== hyphenation-control-4.html hyphenation-control-4-ref.html
fuzzy-if(winWidget,0-56,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == hyphenation-control-5.html hyphenation-control-5-ref.html # Bug 1392106
fuzzy-if(Android,0-64,0-18) fuzzy-if(winWidget,0-56,0-6) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == hyphenation-control-5.html hyphenation-control-5-ref.html # Bug 1392106
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == hyphenation-control-6.html hyphenation-control-6-ref.html # Bug 1392106
== hyphenation-control-7.html hyphenation-control-7-ref.html

Просмотреть файл

@ -31,7 +31,7 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 1102175-1b.html 1102175-
== 1105268-2-min-max-dimensions.html 1105268-2-min-max-dimensions-ref.html
== 1106669-1-intrinsic-for-container.html 1106669-1-intrinsic-for-container-ref.html
== 1108923-1-percentage-margins.html 1108923-1-percentage-margins-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 1111944-1-list-marker.html 1111944-1-list-marker-ref.html # Bug 1392106
fuzzy-if(Android,0-128,0-78) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 1111944-1-list-marker.html 1111944-1-list-marker-ref.html # Bug 1392106
fuzzy(0-116,0-94) fuzzy-if(winWidget,0-135,0-124) == 1115916-1-vertical-metrics.html 1115916-1-vertical-metrics-ref.html
== 1117210-1-vertical-baseline-snap.html 1117210-1-vertical-baseline-snap-ref.html
== 1117227-1-text-overflow.html 1117227-1-text-overflow-ref.html
@ -150,7 +150,7 @@ random-if(gtkWidget) == 1193519-sideways-lr-1.html 1193519-sideways-lr-1-ref.htm
random-if(gtkWidget) == 1193519-sideways-lr-2.html 1193519-sideways-lr-2-ref.html
fuzzy-if(winWidget,0-3,0-84) fails-if(webrender&&winWidget) == 1193519-sideways-lr-3.html 1193519-sideways-lr-3-ref.html
fuzzy-if(winWidget,0-3,0-112) fails-if(webrender&&!cocoaWidget) fails-if(Android) random-if(gtkWidget) == 1193519-sideways-lr-4.html 1193519-sideways-lr-4-ref.html # see bug 1366692. Rounding error with WR enabled, and on Android.
fuzzy-if(gtkWidget,0-255,0-12) fuzzy-if(cocoaWidget,0-65,0-69) fuzzy-if(geckoview&&webrender,0-255,0-7) == 1193519-sideways-lr-decoration-1.html 1193519-sideways-lr-decoration-1-ref.html
fuzzy-if(gtkWidget,0-255,0-12) fuzzy-if(cocoaWidget,0-65,0-69) fuzzy-if(geckoview&&webrender,0-255,0-13) == 1193519-sideways-lr-decoration-1.html 1193519-sideways-lr-decoration-1-ref.html
== 1196887-1-computed-display-inline-block.html 1196887-1-computed-display-inline-block-ref.html
== 1205787-legacy-svg-values-1.html 1205787-legacy-svg-values-1-ref.html

Просмотреть файл

@ -1,3 +1,4 @@
[floats-143.xht]
expected:
if (os == "win"): FAIL
if (os == "android"): FAIL

Просмотреть файл

@ -0,0 +1,3 @@
[white-space-processing-054.xht]
expected:
if os == "android": FAIL

Просмотреть файл

@ -2,5 +2,3 @@
expected:
if os == "win": FAIL
if os == "mac": FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -2,5 +2,3 @@
expected:
if os == "win": FAIL
if os == "mac": FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -2,5 +2,3 @@
expected:
if os == "win": FAIL
if os == "mac": FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -2,3 +2,4 @@
expected:
if (os == "win") and (version == "6.1.7601"): FAIL
if not webrender and (os == "win") and (version == "10.0.17134"): FAIL
if (os == "android"): FAIL

Просмотреть файл

@ -6,4 +6,4 @@
if not webrender and (os == "win") and (version == "10.0.17134"): FAIL
if os == "mac": FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: PASS
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -1,5 +1,3 @@
[text-emphasis-style-021.html]
expected:
if (os == "android") and not e10s: PASS
if (os == "android") and e10s: PASS
FAIL

Просмотреть файл

@ -2,5 +2,3 @@
expected:
if (os == "mac") and (version == "OS X 10.14") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "mac") and (version == "OS X 10.14.5") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -2,5 +2,3 @@
expected:
if (os == "mac") and (version == "OS X 10.14") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "mac") and (version == "OS X 10.14.5") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -1,6 +1,4 @@
[transform-input-004.html]
expected:
if (os == "android") and not e10s: FAIL
if (os == "mac") and (version == "OS X 10.14") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "mac") and (version == "OS X 10.14.5") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -2,5 +2,3 @@
expected:
if (os == "mac") and (version == "OS X 10.14") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "mac") and (version == "OS X 10.14.5") and (processor == "x86_64") and (bits == 64): FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -1,5 +1,3 @@
[transform-input-014.html]
expected:
if os == "mac": FAIL
if (os == "android") and not e10s: FAIL
if (os == "android") and e10s: FAIL

Просмотреть файл

@ -1,5 +1,4 @@
[frac-parameters-gap-001.html]
expected:
if os == "android": PASS
if os == "linux": PASS
FAIL

Просмотреть файл

@ -1,5 +1,4 @@
[frac-parameters-gap-002.html]
expected:
if os == "android": PASS
if os == "linux": PASS
FAIL

Просмотреть файл

@ -1,5 +1,4 @@
[frac-parameters-gap-003.html]
expected:
if os == "android": PASS
if os == "linux": PASS
FAIL

Просмотреть файл

@ -1,5 +1,4 @@
[frac-parameters-gap-004.html]
expected:
if os == "android": PASS
if os == "linux": PASS
FAIL

Просмотреть файл

@ -1,5 +1,4 @@
[frac-parameters-gap-005.html]
expected:
if os == "linux": PASS
if os == "android": PASS
FAIL

Просмотреть файл

@ -1,5 +1,4 @@
[frac-parameters-gap-006.html]
expected:
if os == "linux": PASS
if os == "android": PASS
FAIL