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.
This commit is contained in:
Adrian Johnson 2010-11-10 20:09:53 +10:30
parent 7ee313d7b8
commit 3afd7cd031

View file

@ -1366,7 +1366,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
@ -1401,15 +1401,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
@ -1434,11 +1436,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;
}