[cairo] Solid stroke of lines with thickness less than 1 pixel broken after r191658
authorfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Dec 2015 09:17:38 +0000 (09:17 +0000)
committerfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Dec 2015 09:17:38 +0000 (09:17 +0000)
https://bugs.webkit.org/show_bug.cgi?id=151947

Reviewed by Martin Robinson.

Source/WebCore:

Test: mathml/presentation/radical-bar-visibility.html

* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::drawLine): Force a minimal thickness of 1px

LayoutTests:

Add a test to check that the radical overbar appears on the screen when it has thickness less than 1px.

* mathml/presentation/radical-bar-visibility-expected-mismatch.html: Added.
* mathml/presentation/radical-bar-visibility.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193743 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/mathml/presentation/radical-bar-visibility-expected-mismatch.html [new file with mode: 0644]
LayoutTests/mathml/presentation/radical-bar-visibility.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp

index d6d3058..5ce00fc 100644 (file)
@@ -1,3 +1,15 @@
+2015-12-08  Frederic Wang  <fred.wang@free.fr>
+
+        [cairo] Solid stroke of lines with thickness less than 1 pixel broken after r191658
+        https://bugs.webkit.org/show_bug.cgi?id=151947
+
+        Reviewed by Martin Robinson.
+
+        Add a test to check that the radical overbar appears on the screen when it has thickness less than 1px.
+
+        * mathml/presentation/radical-bar-visibility-expected-mismatch.html: Added.
+        * mathml/presentation/radical-bar-visibility.html: Added.
+
 2015-12-07  Brady Eidson  <beidson@apple.com>
 
         Move an IDB test from the "generic failure" section to the "fails because no workers" section.
diff --git a/LayoutTests/mathml/presentation/radical-bar-visibility-expected-mismatch.html b/LayoutTests/mathml/presentation/radical-bar-visibility-expected-mismatch.html
new file mode 100644 (file)
index 0000000..f9e10b6
--- /dev/null
@@ -0,0 +1,17 @@
+<!doctype html>
+<html>
+  <head>
+    <title>Radical bar visibility</title>
+    <meta charset="utf-8"/>
+  </head>
+  <body>
+
+    <p>This test passes if you see the radical bar.</p>
+
+    <div>
+      <!-- blue square to hide the radical symbol -->
+      <div style="position: absolute; background: blue; width: 100px; height: 100px;"></div>
+    </div>
+
+  </body>
+</html>
diff --git a/LayoutTests/mathml/presentation/radical-bar-visibility.html b/LayoutTests/mathml/presentation/radical-bar-visibility.html
new file mode 100644 (file)
index 0000000..a86b2e9
--- /dev/null
@@ -0,0 +1,34 @@
+<!doctype html>
+<html>
+  <head>
+    <title>Radical bar visibility</title>
+    <meta charset="utf-8"/>
+    <style>
+      math, msqrt {
+        /* Latin Modern Math has
+           RadicalRuleThickess = 40
+           em = 1000
+           So the actual rule thickness is 24 * 40 / 1000 = 0.96 < 1 pixel */
+        font-family: Latin Modern Math;
+        font-size: 24px;
+      }
+    </style>
+  </head>
+  <body>
+
+    <p>This test passes if you see the radical bar.</p>
+
+    <div>
+      <div style="position: absolute">
+        <math>
+          <msqrt>
+            <mspace width="500px"/>
+          </msqrt>
+        </math>
+      </div>
+      <!-- blue square to hide the radical symbol -->
+      <div style="position: absolute; background: blue; width: 100px; height: 100px;"></div>
+    </div>
+
+  </body>
+</html>
index 95b1170..962f77e 100644 (file)
@@ -1,3 +1,15 @@
+2015-12-08  Frederic Wang  <fred.wang@free.fr>
+
+        [cairo] Solid stroke of lines with thickness less than 1 pixel broken after r191658
+        https://bugs.webkit.org/show_bug.cgi?id=151947
+
+        Reviewed by Martin Robinson.
+
+        Test: mathml/presentation/radical-bar-visibility.html
+
+        * platform/graphics/cairo/GraphicsContextCairo.cpp:
+        (WebCore::GraphicsContext::drawLine): Force a minimal thickness of 1px
+
 2015-12-08  Gwang Yoon Hwang  <yoon@igalia.com>
 
         [ThreadedCompositor] Support WebGL for OpenGL.
index 22c88ab..1e51c4b 100644 (file)
@@ -311,8 +311,12 @@ void GraphicsContext::drawLine(const FloatPoint& point1, const FloatPoint& point
         }
         const double dashedLine[2] = { static_cast<double>(patternWidth), static_cast<double>(patternWidth) };
         cairo_set_dash(cairoContext, dashedLine, 2, patternOffset);
-    } else
+    } else {
         setSourceRGBAFromColor(cairoContext, strokeColor);
+        if (thickness < 1)
+            cairo_set_line_width(cairoContext, 1);
+    }
+
 
     FloatPoint p1 = point1;
     FloatPoint p2 = point2;