From fd80c82f4700346a079572e289be2098a898b4e4 Mon Sep 17 00:00:00 2001 From: Alexis Beingessner Date: Fri, 13 Oct 2017 10:43:48 -0400 Subject: [PATCH 1/2] Fix aa clamping for transparent text My previous patch accidentally resulted in upgrading mono to alpha --- webrender/src/frame_builder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webrender/src/frame_builder.rs b/webrender/src/frame_builder.rs index 4d55754cae..5eb4449e6a 100644 --- a/webrender/src/frame_builder.rs +++ b/webrender/src/frame_builder.rs @@ -1248,7 +1248,7 @@ impl FrameBuilder { // We defer this until after fast-shadows so that shadows of transparent text // get subpixel-aa if color.a != 1.0 { - prim.font.render_mode = FontRenderMode::Alpha; + prim.font.render_mode = prim.font.render_mode.limit_by(FontRenderMode::Alpha); } // Create (and add to primitive store) the primitive that will be From 621ffdde17644a2768a0283e6d79d9e75587da32 Mon Sep 17 00:00:00 2001 From: Alexis Beingessner Date: Fri, 13 Oct 2017 10:43:48 -0400 Subject: [PATCH 2/2] Add reftest for aa clamping of transparent text --- wrench/reftests/text/reftest.list | 1 + wrench/reftests/text/transparent-no-aa-ref.yaml | 17 +++++++++++++++++ wrench/reftests/text/transparent-no-aa.yaml | 9 +++++++++ wrench/src/reftest.rs | 4 ++++ 4 files changed, 31 insertions(+) create mode 100644 wrench/reftests/text/transparent-no-aa-ref.yaml create mode 100644 wrench/reftests/text/transparent-no-aa.yaml diff --git a/wrench/reftests/text/reftest.list b/wrench/reftests/text/reftest.list index 8246f3337a..8e8c5d481c 100644 --- a/wrench/reftests/text/reftest.list +++ b/wrench/reftests/text/reftest.list @@ -31,3 +31,4 @@ fuzzy(1,4) platform(linux) options(disable-subpixel) == colors.yaml colors-alpha fuzzy(1,2) platform(linux) == colors.yaml colors-subpx.png platform(linux) options(disable-subpixel) == border-radius.yaml border-radius-alpha.png platform(linux) == border-radius.yaml border-radius-subpx.png +options(disable-aa) == transparent-no-aa.yaml transparent-no-aa-ref.yaml diff --git a/wrench/reftests/text/transparent-no-aa-ref.yaml b/wrench/reftests/text/transparent-no-aa-ref.yaml new file mode 100644 index 0000000000..800b7a9f2a --- /dev/null +++ b/wrench/reftests/text/transparent-no-aa-ref.yaml @@ -0,0 +1,17 @@ +--- +root: + items: + - + type: "shadow" + bounds: [0, 0, 200, 200] + offset: [0, 0] + blur-radius: 0 + color: [0, 0, 0, 0.5] + - + text: "hello everybody" + origin: [10, 20] + size: 18 + color: [0, 0, 0, 0] + font: "VeraBd.ttf" + - + type: "pop-all-shadows" diff --git a/wrench/reftests/text/transparent-no-aa.yaml b/wrench/reftests/text/transparent-no-aa.yaml new file mode 100644 index 0000000000..3a5376f7a2 --- /dev/null +++ b/wrench/reftests/text/transparent-no-aa.yaml @@ -0,0 +1,9 @@ +--- +root: + items: + - + text: "hello everybody" + origin: [10, 20] + size: 18 + color: [0, 0, 0, 0.5] + font: "VeraBd.ttf" diff --git a/wrench/src/reftest.rs b/wrench/src/reftest.rs index 7e2fce5dd9..4ad6870369 100644 --- a/wrench/src/reftest.rs +++ b/wrench/src/reftest.rs @@ -29,6 +29,7 @@ const PLATFORM: &str = "mac"; const PLATFORM: &str = "other"; const OPTION_DISABLE_SUBPX: &str = "disable-subpixel"; +const OPTION_DISABLE_AA: &str = "disable-aa"; pub struct ReftestOptions { // These override values that are lower. @@ -213,6 +214,9 @@ impl ReftestManifest { if args.iter().any(|arg| arg == &OPTION_DISABLE_SUBPX) { font_render_mode = Some(FontRenderMode::Alpha); } + if args.iter().any(|arg| arg == &OPTION_DISABLE_AA) { + font_render_mode = Some(FontRenderMode::Mono); + } } "==" => { op = ReftestOp::Equal;