diff options
author | Robin Watts <robin.watts@artifex.com> | 2017-02-08 13:32:07 +0000 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2017-02-08 13:35:02 +0000 |
commit | 90fa6203ad032fe161d85a3e580941ce3d1216f0 (patch) | |
tree | c8a27bdeb255cfd259a97166e05f5142515cb9f4 | |
parent | 24bfb2d798c12c3da44547054331cedb1dcac683 (diff) | |
download | mupdf-90fa6203ad032fe161d85a3e580941ce3d1216f0.tar.xz |
Add SVG_TEXT_AS_TEXT define.
Build with this defined, and we no longer send text as
reusable symbols, but instead send it as genuine text,
with all the potential problems (mismatching fonts etc)
that this entails.
Requested by a customer.
-rw-r--r-- | source/fitz/svg-device.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/source/fitz/svg-device.c b/source/fitz/svg-device.c index 0d01ae64..3db68ada 100644 --- a/source/fitz/svg-device.c +++ b/source/fitz/svg-device.c @@ -1,6 +1,12 @@ #include "fitz-imp.h" #include "glyph-cache-imp.h" +#ifdef SVG_TEXT_AS_TEXT +#define SVG_TEXT_ALPHA(A) A +#else +#define SVG_TEXT_ALPHA(A) 0 +#endif + typedef struct svg_device_s svg_device; typedef struct tile_s tile; @@ -595,14 +601,16 @@ svg_dev_fill_text(fz_context *ctx, fz_device *dev, const fz_text *text, const fz for (span = text->head; span; span = span->next) { fz_printf(ctx, out, "<text"); - svg_dev_fill_color(ctx, sdev, colorspace, color, 0.0f); + svg_dev_fill_color(ctx, sdev, colorspace, color, SVG_TEXT_ALPHA(alpha)); svg_dev_text_span(ctx, sdev, ctm, span); } +#ifndef SVG_TEXT_AS_TEXT for (span = text->head; span; span = span->next) { fnt = svg_dev_text_span_as_paths_defs(ctx, dev, span, ctm); svg_dev_text_span_as_paths_fill(ctx, dev, span, ctm, colorspace, color, alpha, fnt); } +#endif } static void @@ -617,14 +625,16 @@ svg_dev_stroke_text(fz_context *ctx, fz_device *dev, const fz_text *text, const for (span = text->head; span; span = span->next) { fz_printf(ctx, out, "<text"); - svg_dev_fill_color(ctx, sdev, colorspace, color, 0.0f); + svg_dev_fill_color(ctx, sdev, colorspace, color, SVG_TEXT_ALPHA(alpha)); svg_dev_text_span(ctx, sdev, ctm, span); } +#ifndef SVG_TEXT_AS_TEXT for (span = text->head; span; span = span->next) { fnt = svg_dev_text_span_as_paths_defs(ctx, dev, span, ctm); svg_dev_text_span_as_paths_stroke(ctx, dev, span, stroke, ctm, colorspace, color, alpha, fnt); } +#endif } static void @@ -647,14 +657,16 @@ svg_dev_clip_text(fz_context *ctx, fz_device *dev, const fz_text *text, const fz for (span = text->head; span; span = span->next) { fz_printf(ctx, out, "<text"); - svg_dev_fill_color(ctx, sdev, fz_device_rgb(ctx), white, 0.0f); + svg_dev_fill_color(ctx, sdev, fz_device_rgb(ctx), white, SVG_TEXT_ALPHA(1)); svg_dev_text_span(ctx, sdev, ctm, span); } +#ifndef SVG_TEXT_AS_TEXT for (span = text->head; span; span = span->next) { fnt = svg_dev_text_span_as_paths_defs(ctx, dev, span, ctm); svg_dev_text_span_as_paths_fill(ctx, dev, span, ctm, fz_device_rgb(ctx), white, 1.0f, fnt); } +#endif fz_printf(ctx, out, "</mask>\n"); out = end_def(ctx, sdev); fz_printf(ctx, out, "<g mask=\"url(#ma%d)\">\n", num); @@ -681,14 +693,16 @@ svg_dev_clip_stroke_text(fz_context *ctx, fz_device *dev, const fz_text *text, c { fz_printf(ctx, out, "<text"); svg_dev_stroke_state(ctx, sdev, stroke, &fz_identity); - svg_dev_stroke_color(ctx, sdev, fz_device_rgb(ctx), white, 0.0f); + svg_dev_stroke_color(ctx, sdev, fz_device_rgb(ctx), white, SVG_TEXT_ALPHA(1)); svg_dev_text_span(ctx, sdev, ctm, span); } +#ifndef SVG_TEXT_AS_TEXT for (span = text->head; span; span = span->next) { fnt = svg_dev_text_span_as_paths_defs(ctx, dev, span, ctm); svg_dev_text_span_as_paths_stroke(ctx, dev, span, stroke, ctm, fz_device_rgb(ctx), white, 1.0f, fnt); } +#endif fz_printf(ctx, out, "</mask>\n"); out = end_def(ctx, sdev); fz_printf(ctx, out, "<g mask=\"url(#ma%d)\">\n", num); |