diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c index 8a7de0065..99046200e 100644 --- a/src/cairo-cff-subset.c +++ b/src/cairo-cff-subset.c @@ -2600,7 +2600,8 @@ cairo_cff_font_generate (cairo_cff_font_t *font, if (unlikely (font->ps_name == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - snprintf(font->ps_name, 30, "CairoFont-%u-%u", + snprintf(font->ps_name, 30, "f-%s-%u-%u", + _cairo_unique_id(), font->scaled_font_subset->font_id, font->scaled_font_subset->subset_id); } @@ -3279,7 +3280,8 @@ cairo_cff_font_fallback_generate (cairo_cff_font_t *font, /* Create Top Dict */ font->is_cid = FALSE; - snprintf((char*)buf, sizeof(buf), "CairoFont-%u-%u", + snprintf((char*)buf, sizeof(buf), "f-%s-%u-%u", + _cairo_unique_id(), font->scaled_font_subset->font_id, font->scaled_font_subset->subset_id); sid = NUM_STD_STRINGS + _cairo_array_num_elements (&font->strings_subset_index); diff --git a/src/cairo-misc.c b/src/cairo-misc.c index 59cf76fc9..b954fe762 100644 --- a/src/cairo-misc.c +++ b/src/cairo-misc.c @@ -1212,3 +1212,23 @@ _cairo_intern_string_reset_static_data (void) } CAIRO_MUTEX_UNLOCK (_cairo_intern_string_mutex); } + +/** + * _cairo_unique_id: + * + * Generates a unique id consisting of pid and timestamp. + * The unique id will only be generated once. + * + * Returns: the unique id. + * + * Since: 1.17 + **/ +const char * +_cairo_unique_id () +{ + static char unique_id[40] = {0}; + if (unique_id[0] == 0) { + snprintf (unique_id, sizeof (unique_id), "%0x%0x", getpid(), (unsigned)time(NULL)); + } + return unique_id; +} diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c index 60807c1c4..80724a5fc 100644 --- a/src/cairo-pdf-surface.c +++ b/src/cairo-pdf-surface.c @@ -6243,7 +6243,8 @@ _cairo_pdf_surface_emit_cff_font_subset (cairo_pdf_surface_t *surface, cairo_cff_subset_t subset; char name[64]; - snprintf (name, sizeof name, "CairoFont-%d-%d", + snprintf (name, sizeof name, "f-%s-%d-%d", + _cairo_unique_id(), font_subset->font_id, font_subset->subset_id); status = _cairo_cff_subset_init (&subset, name, font_subset); if (unlikely (status)) @@ -6269,7 +6270,8 @@ _cairo_pdf_surface_emit_cff_fallback_font (cairo_pdf_surface_t *surface, if (!font_subset->is_composite && !font_subset->is_latin) return CAIRO_INT_STATUS_UNSUPPORTED; - snprintf (name, sizeof name, "CairoFont-%d-%d", + snprintf (name, sizeof name, "f-%s-%d-%d", + _cairo_unique_id(), font_subset->font_id, font_subset->subset_id); status = _cairo_cff_fallback_init (&subset, name, font_subset); if (unlikely (status)) @@ -6436,7 +6438,8 @@ _cairo_pdf_surface_emit_type1_font_subset (cairo_pdf_surface_t *surface, if (font_subset->is_composite && !font_subset->is_latin) return CAIRO_INT_STATUS_UNSUPPORTED; - snprintf (name, sizeof name, "CairoFont-%d-%d", + snprintf (name, sizeof name, "f-%s-%d-%d", + _cairo_unique_id(), font_subset->font_id, font_subset->subset_id); status = _cairo_type1_subset_init (&subset, name, font_subset, FALSE); if (unlikely (status)) @@ -6460,7 +6463,8 @@ _cairo_pdf_surface_emit_type1_fallback_font (cairo_pdf_surface_t *surface, if (font_subset->is_composite && !font_subset->is_latin) return CAIRO_INT_STATUS_UNSUPPORTED; - snprintf (name, sizeof name, "CairoFont-%d-%d", + snprintf (name, sizeof name, "f-%s-%d-%d", + _cairo_unique_id(), font_subset->font_id, font_subset->subset_id); status = _cairo_type1_fallback_init_binary (&subset, name, font_subset); if (unlikely (status)) diff --git a/src/cairo-truetype-subset.c b/src/cairo-truetype-subset.c index a8551117c..7413e2cd5 100644 --- a/src/cairo-truetype-subset.c +++ b/src/cairo-truetype-subset.c @@ -253,7 +253,8 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset, goto fail3; } - snprintf(font->base.ps_name, 30, "CairoFont-%u-%u", + snprintf(font->base.ps_name, 30, "f-%s-%u-%u", + _cairo_unique_id(), scaled_font_subset->font_id, scaled_font_subset->subset_id); } diff --git a/src/cairo-type1-subset.c b/src/cairo-type1-subset.c index 5c3766e3a..bce09ef1b 100644 --- a/src/cairo-type1-subset.c +++ b/src/cairo-type1-subset.c @@ -1777,7 +1777,8 @@ _cairo_type1_subset_init (cairo_type1_subset_t *type1_subset, if (font.base.base_font) { type1_subset->base_font = strdup (font.base.base_font); } else { - snprintf(buf, sizeof (buf), "CairoFont-%u-%u", + snprintf(buf, sizeof (buf), "f-%s-%u-%u", + _cairo_unique_id(), scaled_font_subset->font_id, scaled_font_subset->subset_id); type1_subset->base_font = strdup (buf); } diff --git a/src/cairo.c b/src/cairo.c index ccf4a56d5..78c60df5c 100644 --- a/src/cairo.c +++ b/src/cairo.c @@ -49,8 +49,6 @@ #include "cairo-surface-backend-private.h" #include -#include -#include /** * SECTION:cairo @@ -4356,26 +4354,6 @@ cairo_append_path (cairo_t *cr, _cairo_set_error (cr, status); } -/** - * _cairo_unique_id: - * - * Generates a unique id consisting of pid and timestamp. - * The unique id will only be generated once. - * - * Returns: the unique id. - * - * Since: 1.17 - **/ -const char * -_cairo_unique_id () -{ - static char unique_id[40] = {0}; - if (unique_id[0] == 0) { - snprintf (unique_id, sizeof (unique_id), "%0x%0x", getpid(), (unsigned)time(NULL)); - } - return unique_id; -} - /** * cairo_status: * @cr: a cairo context diff --git a/src/cairoint.h b/src/cairoint.h index be1a4ba2a..a6edb0df2 100644 --- a/src/cairoint.h +++ b/src/cairoint.h @@ -61,6 +61,8 @@ #include #include #include +#include +#include #include "cairo.h" #include @@ -941,6 +943,9 @@ _cairo_get_locale_decimal_point (void); cairo_private double _cairo_strtod (const char *nptr, char **endptr); +cairo_private const char * +_cairo_unique_id (void); + #ifdef HAVE_STRNDUP #define _cairo_strndup strndup #else