From 1047dc6b944d802eca441ec4956f7b5e1745fe60 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Tue, 2 Nov 2010 21:38:06 +1030 Subject: [PATCH] PDF: Use correct bfchar size in toUnicode for latin fonts poppler was printing warnings about the wrong size --- src/cairo-pdf-surface.c | 27 +++++++++++++-------------- src/cairo-scaled-font-subsets.c | 1 + 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c index 549d6dcd7..4b42f88cc 100644 --- a/src/cairo-pdf-surface.c +++ b/src/cairo-pdf-surface.c @@ -3785,7 +3785,6 @@ _create_font_subset_tag (cairo_scaled_font_subset_t *font_subset, static cairo_int_status_t _cairo_pdf_surface_emit_to_unicode_stream (cairo_pdf_surface_t *surface, cairo_scaled_font_subset_t *font_subset, - cairo_bool_t is_composite, cairo_pdf_resource_t *stream) { unsigned int i, num_bfchar; @@ -3813,7 +3812,7 @@ _cairo_pdf_surface_emit_to_unicode_stream (cairo_pdf_surface_t *surface, "/CMapType 2 def\n" "1 begincodespacerange\n"); - if (is_composite) { + if (font_subset->is_composite) { _cairo_output_stream_printf (surface->output, "<0000> \n"); } else { @@ -3865,7 +3864,7 @@ _cairo_pdf_surface_emit_to_unicode_stream (cairo_pdf_surface_t *surface, "%d beginbfchar\n", num_bfchar - i > 100 ? 100 : num_bfchar - i); } - if (is_composite) + if (font_subset->is_composite) _cairo_output_stream_printf (surface->output, "<%04x> ", i + 1); else _cairo_output_stream_printf (surface->output, "<%02x> ", i + 1); @@ -3932,7 +3931,7 @@ _cairo_pdf_surface_emit_cff_font (cairo_pdf_surface_t *surface, return status; status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, TRUE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) return status; @@ -4167,7 +4166,7 @@ _cairo_pdf_surface_emit_type1_font (cairo_pdf_surface_t *surface, return status; status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, FALSE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) return status; @@ -4352,7 +4351,7 @@ _cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, } status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, TRUE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) { _cairo_truetype_subset_fini (&subset); @@ -4725,7 +4724,7 @@ _cairo_pdf_surface_emit_type3_font_subset (cairo_pdf_surface_t *surface, free (glyphs); status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, FALSE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) { free (widths); @@ -4786,15 +4785,15 @@ _cairo_pdf_surface_emit_unscaled_font_subset (cairo_scaled_font_subset_t *font_s cairo_pdf_surface_t *surface = closure; cairo_status_t status; - if (font_subset->is_composite) { - status = _cairo_pdf_surface_emit_cff_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + status = _cairo_pdf_surface_emit_cff_font_subset (surface, font_subset); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; - status = _cairo_pdf_surface_emit_truetype_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + status = _cairo_pdf_surface_emit_truetype_font_subset (surface, font_subset); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; + if (font_subset->is_composite) { status = _cairo_pdf_surface_emit_cff_fallback_font (surface, font_subset); if (status != CAIRO_INT_STATUS_UNSUPPORTED) return status; diff --git a/src/cairo-scaled-font-subsets.c b/src/cairo-scaled-font-subsets.c index f5e6dec2a..aa259d038 100644 --- a/src/cairo-scaled-font-subsets.c +++ b/src/cairo-scaled-font-subsets.c @@ -638,6 +638,7 @@ _cairo_sub_font_map_glyph (cairo_sub_font_t *sub_font, (latin_character == 0 && sub_font->num_glyphs_in_latin_subset > 0)) { is_latin = TRUE; + sub_font->is_composite = FALSE; } }