summarylogtreecommitdiffstats
path: root/evince-poppler-subpixel.patch
diff options
context:
space:
mode:
authorYichao Zhou2016-01-04 03:07:43 -0800
committerYichao Zhou2016-01-04 03:07:43 -0800
commit241d4901f590b857227cc18a16759cc39149f208 (patch)
treeca0d1f5ae14c9a5c01087c8b99115c1265daaaa6 /evince-poppler-subpixel.patch
downloadaur-241d4901f590b857227cc18a16759cc39149f208.tar.gz
Initial commit
Diffstat (limited to 'evince-poppler-subpixel.patch')
-rw-r--r--evince-poppler-subpixel.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/evince-poppler-subpixel.patch b/evince-poppler-subpixel.patch
new file mode 100644
index 000000000000..4f49d4514b75
--- /dev/null
+++ b/evince-poppler-subpixel.patch
@@ -0,0 +1,51 @@
+diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
+index f3a6510..747d7fd 100644
+--- a/backend/pdf/ev-poppler.cc
++++ b/backend/pdf/ev-poppler.cc
+@@ -393,11 +393,31 @@ 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);
++ cairo_font_options_set_hint_style (fo, CAIRO_HINT_STYLE_SLIGHT);
++
++ subpixel_rendering = poppler_page_support_subpixel_rendering (page);
++ printf("subpixel_rendering: %d\n", subpixel_rendering);
++ printf("subpixel_rendering: %d\n", subpixel_rendering);
++ 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);
+@@ -420,9 +440,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);
+