Skip to content

Commit

Permalink
PDF: Restrict ActualText to PDF version >= 1.5
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Adrian Johnson committed Nov 10, 2010
1 parent 7ee313d commit 3afd7cd
Showing 1 changed file with 18 additions and 13 deletions.
31 changes: 18 additions & 13 deletions src/cairo-pdf-operators.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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;
}
Expand Down

0 comments on commit 3afd7cd

Please sign in to comment.