Set SkPaint stroke width to 0 to guarantee drawing hairline.
This CL makes sure that when filling a zero-area path, the rendering
result will be a hairline (exactly one pixel wide in device space).
Change-Id: I22e175653111518ce93bbf24ec241900aa05893a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/103876
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Nigi <nigi@chromium.org>
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index 57c692d..e615529 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -607,9 +607,11 @@
SkVector deviceUnits[2] = {{0, 1}, {1, 0}};
inverse.mapPoints(deviceUnits, std::size(deviceUnits));
- float width =
- std::max(graph_state->m_LineWidth,
- std::min(deviceUnits[0].length(), deviceUnits[1].length()));
+ float width = fill_options.zero_area
+ ? 0.0f
+ : std::max(graph_state->m_LineWidth,
+ std::min(deviceUnits[0].length(),
+ deviceUnits[1].length()));
if (!graph_state->m_DashArray.empty()) {
size_t count = (graph_state->m_DashArray.size() + 1) / 2;
DataVector<SkScalar> intervals(count * 2);