[Skia] Avoid rendering adjacent characters connected to each other.

If a glyph's default width is the same as its width defined in the PDF,
we should avoid using the device driver to render such a glyph so that
the adjacent glyphs won't be connected to each other. Instead, render
these glyphs with their adjustable paths.

Bug: chromium:736703
Change-Id: I115773beaa64031d982f362f946d19ec68c126fc
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/93890
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Nigi <nigi@chromium.org>
diff --git a/testing/SUPPRESSIONS b/testing/SUPPRESSIONS
index bac9e2d..6903a24 100644
--- a/testing/SUPPRESSIONS
+++ b/testing/SUPPRESSIONS
@@ -360,10 +360,7 @@
 # TODO(chromium:725555, skia:9265): Remove after associated bug is fixed
 bug_725555.in * * * skia,skiapaths
 
-#TODO(chromium:736703): Remove after associated bug is fixed
-bug_736703.in * * * skia,skiapaths
-
-# TODO(pdfiu,:1310): Remove after associated bug is fixed
+# TODO(pdfium:1310): Remove after associated bug is fixed
 radial_shading_point_at_border.in * * * skia,skiapaths
 
 # TODO(chromium:1028991): Remove after associated bug is fixed
diff --git a/testing/embedder_test_constants.cpp b/testing/embedder_test_constants.cpp
index d72b7ec..b0fc3ac 100644
--- a/testing/embedder_test_constants.cpp
+++ b/testing/embedder_test_constants.cpp
@@ -10,16 +10,14 @@
 
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 const char kAnnotationStampWithApChecksum[] =
-    "e4e7dc6446fa763a245e03eb5de6ed28";
-#else
-#if BUILDFLAG(IS_APPLE)
+    "a31381406d0b95049e418720750b78dd";
+#elif BUILDFLAG(IS_APPLE)
 const char kAnnotationStampWithApChecksum[] =
     "d243b5d64752be0f45b86df7bd2e2708";
 #else
 const char kAnnotationStampWithApChecksum[] =
     "cdde6c161679ab10b07c38c1ef04b7e8";
 #endif
-#endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 
 const char kBlankPage612By792Checksum[] = "1940568c9ba33bac5d0b1ee9558c76b3";
 
@@ -29,17 +27,15 @@
 const char kBug890322Checksum[] = "6c674642154408e877d88c6c082d67e9";
 #endif
 
-#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-const char kHelloWorldChecksum[] = "fea3e59b7ac7b7a6940018497034f6cf";
-#elif BUILDFLAG(IS_APPLE)
+#if BUILDFLAG(IS_APPLE) && !defined(_SKIA_SUPPORT_) && \
+    !defined(_SKIA_SUPPORT_PATHS_)
 const char kHelloWorldChecksum[] = "6eef7237f7591f07616e238422086737";
 #else
 const char kHelloWorldChecksum[] = "c1c548442e0e0f949c5550d89bf8ae3b";
 #endif
 
-#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-const char kHelloWorldRemovedChecksum[] = "e51fe51cc5f03ad66f603030df9b0400";
-#elif BUILDFLAG(IS_APPLE)
+#if BUILDFLAG(IS_APPLE) && !defined(_SKIA_SUPPORT_) && \
+    !defined(_SKIA_SUPPORT_PATHS_)
 const char kHelloWorldRemovedChecksum[] = "6e1cae48a2e35c521dee4ca502f48af6";
 #else
 const char kHelloWorldRemovedChecksum[] = "4a9b80f675f7f3bf2da1b02f12449e4b";
@@ -54,7 +50,7 @@
 #endif
 
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-const char kTextFormChecksum[] = "f8f0817b19ef07d0404caf008964b7f2";
+const char kTextFormChecksum[] = "e6d2eb75f18d773f0dad938b1bb22e23";
 #elif BUILDFLAG(IS_APPLE)
 const char kTextFormChecksum[] = "fa2bf756942a950101fc147fc4ef3f82";
 #else
diff --git a/testing/resources/pixel/bug_1072440_expected_skia.pdf.0.png b/testing/resources/pixel/bug_1072440_expected_skia.pdf.0.png
index b0d2d8d..6ce4fbe 100644
--- a/testing/resources/pixel/bug_1072440_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_1072440_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_1072440_expected_skiapaths.pdf.0.png b/testing/resources/pixel/bug_1072440_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..1d29cb2
--- /dev/null
+++ b/testing/resources/pixel/bug_1072440_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_113910_expected_skia.pdf.0.png b/testing/resources/pixel/bug_113910_expected_skia.pdf.0.png
index 4eb3fa0..3c3cd81 100644
--- a/testing/resources/pixel/bug_113910_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_113910_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_113910_expected_skiapaths.pdf.0.png b/testing/resources/pixel/bug_113910_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..c3e6a65
--- /dev/null
+++ b/testing/resources/pixel/bug_113910_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_733528_expected_skia.pdf.0.png b/testing/resources/pixel/bug_733528_expected_skia.pdf.0.png
index a743dd6..6dfa99d 100644
--- a/testing/resources/pixel/bug_733528_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_733528_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_733528_expected_skiapaths.pdf.0.png b/testing/resources/pixel/bug_733528_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..d18d646
--- /dev/null
+++ b/testing/resources/pixel/bug_733528_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png b/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png
index ae0d5e5..8e01ded 100644
--- a/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_736695_2_expected_skiapaths.pdf.0.png b/testing/resources/pixel/bug_736695_2_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..109b409
--- /dev/null
+++ b/testing/resources/pixel/bug_736695_2_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png b/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png
index e5cd11c..591ddc0 100644
--- a/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_736695_3_expected_skiapaths.pdf.0.png b/testing/resources/pixel/bug_736695_3_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..52177cd
--- /dev/null
+++ b/testing/resources/pixel/bug_736695_3_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_846_expected_skia.pdf.0.png b/testing/resources/pixel/bug_846_expected_skia.pdf.0.png
index a3dfa58..47304a5 100644
--- a/testing/resources/pixel/bug_846_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_846_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_846_expected_skia_mac.pdf.0.png b/testing/resources/pixel/bug_846_expected_skia_mac.pdf.0.png
index 6472887..d09a095 100644
--- a/testing/resources/pixel/bug_846_expected_skia_mac.pdf.0.png
+++ b/testing/resources/pixel/bug_846_expected_skia_mac.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_846_expected_skia_win.pdf.0.png b/testing/resources/pixel/bug_846_expected_skia_win.pdf.0.png
index 6472887..d09a095 100644
--- a/testing/resources/pixel/bug_846_expected_skia_win.pdf.0.png
+++ b/testing/resources/pixel/bug_846_expected_skia_win.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/password_expected_skia.pdf.0.png b/testing/resources/pixel/password_expected_skia.pdf.0.png
index dea7e7b..01b4b68 100644
--- a/testing/resources/pixel/password_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/password_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/password_expected_skiapaths.pdf.0.png b/testing/resources/pixel/password_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..f1dd5de
--- /dev/null
+++ b/testing/resources/pixel/password_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png b/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png
index 949b557..cd2fe05 100644
--- a/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/scrollable_widgets1_expected_skiapaths.pdf.0.png b/testing/resources/pixel/scrollable_widgets1_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..74860d9
--- /dev/null
+++ b/testing/resources/pixel/scrollable_widgets1_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png b/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png
index 305acb1..eb7d992 100644
--- a/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/scrollable_widgets2_expected_skiapaths.pdf.0.png b/testing/resources/pixel/scrollable_widgets2_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..28e51ba
--- /dev/null
+++ b/testing/resources/pixel/scrollable_widgets2_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png
index bf6e241..e4ad159 100644
--- a/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/barcode_test_expected_skiapaths.pdf.0.png b/testing/resources/pixel/xfa_specific/barcode_test_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..6507e89
--- /dev/null
+++ b/testing/resources/pixel/xfa_specific/barcode_test_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png
index ae7e919..107768c 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png
index 2784897..ca386c8 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skiapaths.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..fa3f18e
--- /dev/null
+++ b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skiapaths_mac.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skiapaths_mac.pdf.0.png
new file mode 100644
index 0000000..5ecc169
--- /dev/null
+++ b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skiapaths_mac.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png
index cb36393..2c7c93a 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skiapaths.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skiapaths.pdf.0.png
index 1460a37..548f3df 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skiapaths.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_table_color_and_width_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_table_color_and_width_expected_skia.pdf.0.png
index 7e11024..fab2d41 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_table_color_and_width_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_table_color_and_width_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_table_color_and_width_expected_skiapaths.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_table_color_and_width_expected_skiapaths.pdf.0.png
new file mode 100644
index 0000000..fa03e41
--- /dev/null
+++ b/testing/resources/pixel/xfa_specific/dynamic_table_color_and_width_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png
index a062484..30f7709 100644
--- a/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skiapaths.pdf.0.png b/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skiapaths.pdf.0.png
index 2522aa5..db738e5 100644
--- a/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skiapaths.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png
index 389f4a5..8c32771 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png
index 0a86fad..2641c70 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png
index 154841c..f95433f 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png
index 4dc7a80..4ef1290 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.0.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.0.png
index eb7bfbb..467aa37 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.1.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.1.png
index 701c277..cfb099d 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.1.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths.pdf.1.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths_win.pdf.0.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths_win.pdf.0.png
new file mode 100644
index 0000000..96dfdde
--- /dev/null
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths_win.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths_win.pdf.1.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths_win.pdf.1.png
new file mode 100644
index 0000000..040de88
--- /dev/null
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skiapaths_win.pdf.1.png
Binary files differ