diff options
author | Adrian Johnson <ajohnson@redneon.com> | 2010-11-10 20:09:53 +1030 |
---|---|---|
committer | Adrian Johnson <ajohnson@redneon.com> | 2010-11-21 20:33:57 +1030 |
commit | ccff76433e1cd068e5534d0ab633c27b0faf47d2 (patch) | |
tree | b750d811e4ca6921160fda2252488f5db5decaad | |
parent | e0967ff83c24aaf6d6b3a93a627872820be9012b (diff) | |
download | cairo-ccff76433e1cd068e5534d0ab633c27b0faf47d2.tar.gz |
PDF: Restrict ActualText to PDF version >= 1.5
The use of ActualText in a marked content sequence is a PDF 1.5
feature.
A 'use_actual_text' flag linked to the PDF version has already been
implemented in pdf-operators but for some reason this flag had not
been used to control the use of ActualText.
(cherry picked from commit 3afd7cd031ab9097e37c3e89d86ec41d015fdeb8)
-rw-r--r-- | src/cairo-pdf-operators.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/cairo-pdf-operators.c b/src/cairo-pdf-operators.c index f60fbef30..8d7a97d64 100644 --- a/src/cairo-pdf-operators.c +++ b/src/cairo-pdf-operators.c @@ -1287,7 +1287,7 @@ _cairo_pdf_operators_emit_cluster (cairo_pdf_operators_t *pdf_operators, { cairo_scaled_font_subsets_glyph_t subset_glyph; cairo_glyph_t *cur_glyph; - cairo_status_t status; + cairo_status_t status = CAIRO_STATUS_SUCCESS; int i; /* If the cluster maps 1 glyph to 1 or more unicode characters, we @@ -1322,15 +1322,17 @@ _cairo_pdf_operators_emit_cluster (cairo_pdf_operators_t *pdf_operators, } } - /* Fallback to using ActualText to map zero or more glyphs to a - * unicode string. */ - status = _cairo_pdf_operators_flush_glyphs (pdf_operators); - if (unlikely (status)) - return status; + if (pdf_operators->use_actual_text) { + /* Fallback to using ActualText to map zero or more glyphs to a + * unicode string. */ + status = _cairo_pdf_operators_flush_glyphs (pdf_operators); + if (unlikely (status)) + return status; - status = _cairo_pdf_operators_begin_actualtext (pdf_operators, utf8, utf8_len); - if (unlikely (status)) - return status; + status = _cairo_pdf_operators_begin_actualtext (pdf_operators, utf8, utf8_len); + if (unlikely (status)) + return status; + } cur_glyph = glyphs; /* XXX @@ -1355,11 +1357,14 @@ _cairo_pdf_operators_emit_cluster (cairo_pdf_operators_t *pdf_operators, else cur_glyph++; } - status = _cairo_pdf_operators_flush_glyphs (pdf_operators); - if (unlikely (status)) - return status; - status = _cairo_pdf_operators_end_actualtext (pdf_operators); + if (pdf_operators->use_actual_text) { + status = _cairo_pdf_operators_flush_glyphs (pdf_operators); + if (unlikely (status)) + return status; + + status = _cairo_pdf_operators_end_actualtext (pdf_operators); + } return status; } |