summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2014-01-11 20:57:44 +1030
committerAdrian Johnson <ajohnson@redneon.com>2014-01-11 21:03:58 +1030
commitee0e2b9272f6f21092fde7bee9b9237e682d4147 (patch)
tree8bad9642358d1bc3cfd1f02283b433108e3a769a
parent2d3ee70ed37ed2120d5c5f75277172620e32084c (diff)
ps: add font DSC comments
-rw-r--r--src/cairo-ps-surface.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c
index f66c195..706e305 100644
--- a/src/cairo-ps-surface.c
+++ b/src/cairo-ps-surface.c
@@ -374,12 +374,11 @@ _cairo_ps_surface_emit_header (cairo_ps_surface_t *surface)
_cairo_output_stream_printf (surface->final_stream,
"%%%%EndProlog\n");
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%BeginSetup\n");
num_comments = _cairo_array_num_elements (&surface->dsc_setup_comments);
if (num_comments) {
- _cairo_output_stream_printf (surface->final_stream,
- "%%%%BeginSetup\n");
-
comments = _cairo_array_index (&surface->dsc_setup_comments, 0);
for (i = 0; i < num_comments; i++) {
_cairo_output_stream_printf (surface->final_stream,
@@ -387,9 +386,6 @@ _cairo_ps_surface_emit_header (cairo_ps_surface_t *surface)
free (comments[i]);
comments[i] = NULL;
}
-
- _cairo_output_stream_printf (surface->final_stream,
- "%%%%EndSetup\n");
}
}
@@ -417,8 +413,13 @@ _cairo_ps_surface_emit_type1_font_subset (cairo_ps_surface_t *surface,
"%% _cairo_ps_surface_emit_type1_font_subset\n");
#endif
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%BeginResource: font %s\n",
+ subset.base_font);
length = subset.header_length + subset.data_length + subset.trailer_length;
_cairo_output_stream_write (surface->final_stream, subset.data, length);
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%EndResource\n");
_cairo_type1_subset_fini (&subset);
@@ -441,15 +442,18 @@ _cairo_ps_surface_emit_type1_font_fallback (cairo_ps_surface_t *surface,
if (unlikely (status))
return status;
- /* FIXME: Figure out document structure convention for fonts */
-
#if DEBUG_PS
_cairo_output_stream_printf (surface->final_stream,
"%% _cairo_ps_surface_emit_type1_font_fallback\n");
#endif
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%BeginResource: font %s\n",
+ subset.base_font);
length = subset.header_length + subset.data_length + subset.trailer_length;
_cairo_output_stream_write (surface->final_stream, subset.data, length);
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%EndResource\n");
_cairo_type1_fallback_fini (&subset);
@@ -478,6 +482,9 @@ _cairo_ps_surface_emit_truetype_font_subset (cairo_ps_surface_t *surface,
#endif
_cairo_output_stream_printf (surface->final_stream,
+ "%%%%BeginResource: font %s\n",
+ subset.ps_name);
+ _cairo_output_stream_printf (surface->final_stream,
"11 dict begin\n"
"/FontType 42 def\n"
"/FontName /%s def\n"
@@ -559,9 +566,11 @@ _cairo_ps_surface_emit_truetype_font_subset (cairo_ps_surface_t *surface,
"/f-%d-%d currentdict end definefont pop\n",
font_subset->font_id,
font_subset->subset_id);
-
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%EndResource\n");
_cairo_truetype_subset_fini (&subset);
+
return CAIRO_STATUS_SUCCESS;
}
@@ -656,6 +665,8 @@ _cairo_ps_surface_emit_type3_font_subset (cairo_ps_surface_t *surface,
#endif
_cairo_output_stream_printf (surface->final_stream,
+ "%%%%BeginResource: font\n");
+ _cairo_output_stream_printf (surface->final_stream,
"8 dict begin\n"
"/FontType 3 def\n"
"/FontMatrix [1 0 0 1 0 0] def\n"
@@ -735,6 +746,8 @@ _cairo_ps_surface_emit_type3_font_subset (cairo_ps_surface_t *surface,
- _cairo_fixed_to_double (font_bbox.p1.y),
font_subset->font_id,
font_subset->subset_id);
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%EndResource\n");
return CAIRO_STATUS_SUCCESS;
}
@@ -1598,6 +1611,9 @@ _cairo_ps_surface_finish (void *abstract_surface)
if (unlikely (status))
goto CLEANUP;
+ _cairo_output_stream_printf (surface->final_stream,
+ "%%%%EndSetup\n");
+
status = _cairo_ps_surface_emit_body (surface);
if (unlikely (status))
goto CLEANUP;