summaryrefslogtreecommitdiff
path: root/src/cairo-truetype-subset.c
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2017-09-22 20:24:45 +0930
committerAdrian Johnson <ajohnson@redneon.com>2017-09-22 20:25:59 +0930
commitdccbed7d78d32bd3b912e8810379451dd94e6a1f (patch)
tree1c9af6c0dfeca294426ce3464b847941fe34ffb5 /src/cairo-truetype-subset.c
parent52cbf42b74785c3c3c2d15effe7bdb416ff9c8b2 (diff)
downloadcairo-dccbed7d78d32bd3b912e8810379451dd94e6a1f.tar.gz
truetype: clarify glyph count variables
- move num_glyphs_in_face to base struct as it is the number in the font - move num_glyphs to the subset variables as it is the num glyphs in the subset - move widths to subset variables as it uses the subset id as the array index
Diffstat (limited to 'src/cairo-truetype-subset.c')
-rw-r--r--src/cairo-truetype-subset.c54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/cairo-truetype-subset.c b/src/cairo-truetype-subset.c
index c4e550c75..e934689a6 100644
--- a/src/cairo-truetype-subset.c
+++ b/src/cairo-truetype-subset.c
@@ -77,22 +77,22 @@ struct _cairo_truetype_font {
struct {
char *font_name;
char *ps_name;
- unsigned int num_glyphs;
- int *widths;
+ int num_glyphs_in_face; /* glyphs in font */
long x_min, y_min, x_max, y_max;
long ascent, descent;
int units_per_em;
} base;
- subset_glyph_t *glyphs;
+ subset_glyph_t *glyphs; /* array size: num_glyphs_in_face + 2 */
const cairo_scaled_font_backend_t *backend;
- int num_glyphs_in_face;
+ unsigned int num_glyphs; /* glyphs used */
+ int *widths; /* array size: num_glyphs_in_face + 1 */
int checksum_index;
cairo_array_t output;
cairo_array_t string_offsets;
unsigned long last_offset;
unsigned long last_boundary;
- int *parent_to_subset;
+ int *parent_to_subset; /* array size: num_glyphs_in_face + 1 */
cairo_status_t status;
cairo_bool_t is_pdf;
};
@@ -198,7 +198,7 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset,
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
font->backend = backend;
- font->num_glyphs_in_face = be16_to_cpu (maxp.num_glyphs);
+ font->base.num_glyphs_in_face = be16_to_cpu (maxp.num_glyphs);
font->scaled_font_subset = scaled_font_subset;
font->last_offset = 0;
@@ -211,21 +211,21 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset,
/* Add 2: +1 case font does not contain .notdef, and +1 because an extra
* entry is required to contain the end location of the last glyph.
*/
- font->glyphs = calloc (font->num_glyphs_in_face + 2, sizeof (subset_glyph_t));
+ font->glyphs = calloc (font->base.num_glyphs_in_face + 2, sizeof (subset_glyph_t));
if (unlikely (font->glyphs == NULL)) {
status = _cairo_error (CAIRO_STATUS_NO_MEMORY);
goto fail1;
}
/* Add 1 in case font does not contain .notdef */
- font->parent_to_subset = calloc (font->num_glyphs_in_face + 1, sizeof (int));
+ font->parent_to_subset = calloc (font->base.num_glyphs_in_face + 1, sizeof (int));
if (unlikely (font->parent_to_subset == NULL)) {
status = _cairo_error (CAIRO_STATUS_NO_MEMORY);
goto fail2;
}
font->is_pdf = is_pdf;
- font->base.num_glyphs = 0;
+ font->num_glyphs = 0;
font->base.x_min = (int16_t) be16_to_cpu (head.x_min);
font->base.y_min = (int16_t) be16_to_cpu (head.y_min);
font->base.x_max = (int16_t) be16_to_cpu (head.x_max);
@@ -258,8 +258,8 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset,
}
/* Add 1 in case font does not contain .notdef */
- font->base.widths = calloc (font->num_glyphs_in_face + 1, sizeof (int));
- if (unlikely (font->base.widths == NULL)) {
+ font->widths = calloc (font->base.num_glyphs_in_face + 1, sizeof (int));
+ if (unlikely (font->widths == NULL)) {
status = _cairo_error (CAIRO_STATUS_NO_MEMORY);
goto fail4;
}
@@ -277,7 +277,7 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset,
fail5:
_cairo_array_fini (&font->string_offsets);
- free (font->base.widths);
+ free (font->widths);
fail4:
free (font->base.ps_name);
fail3:
@@ -296,7 +296,7 @@ static void
cairo_truetype_font_destroy (cairo_truetype_font_t *font)
{
_cairo_array_fini (&font->string_offsets);
- free (font->base.widths);
+ free (font->widths);
free (font->base.ps_name);
free (font->base.font_name);
free (font->parent_to_subset);
@@ -618,9 +618,9 @@ cairo_truetype_font_write_glyf_table (cairo_truetype_font_t *font,
return _cairo_truetype_font_set_error (font, status);
if (be16_to_cpu (header.index_to_loc_format) == 0)
- size = sizeof (int16_t) * (font->num_glyphs_in_face + 1);
+ size = sizeof (int16_t) * (font->base.num_glyphs_in_face + 1);
else
- size = sizeof (int32_t) * (font->num_glyphs_in_face + 1);
+ size = sizeof (int32_t) * (font->base.num_glyphs_in_face + 1);
u.bytes = malloc (size);
if (unlikely (u.bytes == NULL))
@@ -632,7 +632,7 @@ cairo_truetype_font_write_glyf_table (cairo_truetype_font_t *font,
return _cairo_truetype_font_set_error (font, status);
start_offset = _cairo_array_num_elements (&font->output);
- for (i = 0; i < font->base.num_glyphs; i++) {
+ for (i = 0; i < font->num_glyphs; i++) {
index = font->glyphs[i].parent_index;
if (be16_to_cpu (header.index_to_loc_format) == 0) {
begin = be16_to_cpu (u.short_offsets[index]) * 2;
@@ -760,7 +760,7 @@ cairo_truetype_font_write_hhea_table (cairo_truetype_font_t *font, unsigned long
if (unlikely (status))
return _cairo_truetype_font_set_error (font, status);
- hhea->num_hmetrics = cpu_to_be16 ((uint16_t)(font->base.num_glyphs));
+ hhea->num_hmetrics = cpu_to_be16 ((uint16_t)(font->num_glyphs));
return CAIRO_STATUS_SUCCESS;
}
@@ -790,7 +790,7 @@ cairo_truetype_font_write_hmtx_table (cairo_truetype_font_t *font,
num_hmetrics = be16_to_cpu(hhea.num_hmetrics);
- for (i = 0; i < font->base.num_glyphs; i++) {
+ for (i = 0; i < font->num_glyphs; i++) {
long_entry_size = 2 * sizeof (int16_t);
short_entry_size = sizeof (int16_t);
status = cairo_truetype_font_allocate_write_buffer (font,
@@ -824,7 +824,7 @@ cairo_truetype_font_write_hmtx_table (cairo_truetype_font_t *font,
if (unlikely (status))
return _cairo_truetype_font_set_error (font, status);
}
- font->base.widths[i] = be16_to_cpu (p[0]);
+ font->widths[i] = be16_to_cpu (p[0]);
}
return CAIRO_STATUS_SUCCESS;
@@ -851,10 +851,10 @@ cairo_truetype_font_write_loca_table (cairo_truetype_font_t *font,
if (be16_to_cpu (header.index_to_loc_format) == 0)
{
- for (i = 0; i < font->base.num_glyphs + 1; i++)
+ for (i = 0; i < font->num_glyphs + 1; i++)
cairo_truetype_font_write_be16 (font, font->glyphs[i].location / 2);
} else {
- for (i = 0; i < font->base.num_glyphs + 1; i++)
+ for (i = 0; i < font->num_glyphs + 1; i++)
cairo_truetype_font_write_be32 (font, font->glyphs[i].location);
}
@@ -882,7 +882,7 @@ cairo_truetype_font_write_maxp_table (cairo_truetype_font_t *font,
if (unlikely (status))
return _cairo_truetype_font_set_error (font, status);
- maxp->num_glyphs = cpu_to_be16 (font->base.num_glyphs);
+ maxp->num_glyphs = cpu_to_be16 (font->num_glyphs);
return CAIRO_STATUS_SUCCESS;
}
@@ -1026,13 +1026,13 @@ cairo_truetype_font_use_glyph (cairo_truetype_font_t *font,
unsigned short glyph,
unsigned short *out)
{
- if (glyph >= font->num_glyphs_in_face)
+ if (glyph >= font->base.num_glyphs_in_face)
return CAIRO_INT_STATUS_UNSUPPORTED;
if (font->parent_to_subset[glyph] == 0) {
- font->parent_to_subset[glyph] = font->base.num_glyphs;
- font->glyphs[font->base.num_glyphs].parent_index = glyph;
- font->base.num_glyphs++;
+ font->parent_to_subset[glyph] = font->num_glyphs;
+ font->glyphs[font->num_glyphs].parent_index = glyph;
+ font->num_glyphs++;
}
*out = font->parent_to_subset[glyph];
@@ -1185,7 +1185,7 @@ cairo_truetype_subset_init_internal (cairo_truetype_subset_t *truetype_subse
goto fail3;
}
for (i = 0; i < font->scaled_font_subset->num_glyphs; i++)
- truetype_subset->widths[i] = (double)font->base.widths[i]/font->base.units_per_em;
+ truetype_subset->widths[i] = (double)font->widths[i]/font->base.units_per_em;
truetype_subset->x_min = (double)font->base.x_min/font->base.units_per_em;
truetype_subset->y_min = (double)font->base.y_min/font->base.units_per_em;