diff options
Diffstat (limited to '01-evince-subpixel-rendering-by-poppler.patch')
-rw-r--r-- | 01-evince-subpixel-rendering-by-poppler.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/01-evince-subpixel-rendering-by-poppler.patch b/01-evince-subpixel-rendering-by-poppler.patch new file mode 100644 index 000000000000..ccacd99a9d8e --- /dev/null +++ b/01-evince-subpixel-rendering-by-poppler.patch @@ -0,0 +1,52 @@ +From: Jeffrey Feng <galago1992@gmail.com> +Subject: [PATCH 1/3] evince subpixel rendering provided by poppler cairo backend +--- +diff -rup a/backend/pdf b/backend/pdf|diffstat + ev-poppler.cc | 23 ++++++++++++++++++++--- + 1 file changed, 20 insertions(+), 3 deletions(-) + +diff -rup a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc +--- a/backend/pdf/ev-poppler.cc 2018-05-21 22:07:17.707456820 +0800 ++++ b/backend/pdf/ev-poppler.cc 2018-05-21 22:20:05.643425328 +0800 +@@ -388,11 +388,26 @@ pdf_page_render (PopplerPage *page, + cairo_t *cr; + double page_width, page_height; + double xscale, yscale; ++ gboolean subpixel_rendering; ++ cairo_font_options_t *fo; + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + width, height); + cr = cairo_create (surface); + ++ fo = cairo_font_options_create (); ++ cairo_get_font_options (cr, fo); ++ subpixel_rendering = poppler_page_support_subpixel_rendering (page); ++ // printf("subpixel_rendering: %d\n", subpixel_rendering); ++ if (subpixel_rendering) { ++ cairo_set_source_rgb (cr, 1., 1., 1.); ++ cairo_paint (cr); ++ cairo_font_options_set_antialias (fo, CAIRO_ANTIALIAS_SUBPIXEL); ++ cairo_font_options_set_subpixel_order (fo, CAIRO_SUBPIXEL_ORDER_RGB); ++ } ++ cairo_set_font_options (cr, fo); ++ cairo_font_options_destroy (fo); ++ + switch (rc->rotation) { + case 90: + cairo_translate (cr, width, 0); +@@ -415,9 +430,11 @@ pdf_page_render (PopplerPage *page, + cairo_rotate (cr, rc->rotation * G_PI / 180.0); + poppler_page_render (page, cr); + +- cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER); +- cairo_set_source_rgb (cr, 1., 1., 1.); +- cairo_paint (cr); ++ if (!subpixel_rendering) { ++ cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER); ++ cairo_set_source_rgb (cr, 1., 1., 1.); ++ cairo_paint (cr); ++ } + + cairo_destroy (cr); + |