return font->status;
goto fail;
cairo_pdf_ft_font_generate (void *abstract_font,			    const char **data, unsigned long *length){    cairo_pdf_ft_font_t *font = abstract_font;    unsigned long start, end, next, checksum;    int i;    if (cairo_pdf_ft_font_write_offset_table (font))	return font->status;    start = cairo_pdf_ft_font_align_output (font);    end = start;    for (i = 0; i < ARRAY_LENGTH (truetype_tables); i++) {	if (truetype_tables[i].write (font, truetype_tables[i].tag))	    goto fail;	end = _cairo_array_num_elements (&font->output);	next = cairo_pdf_ft_font_align_output (font);	cairo_pdf_ft_font_update_entry (font, i, truetype_tables[i].tag,					start, end);	start = next;    }    checksum =	0xb1b0afba - cairo_pdf_ft_font_calculate_checksum (font, 0, end);    *font->checksum_location = cpu_to_be32 (checksum);    *data = _cairo_array_index (&font->output, 0);    *length = _cairo_array_num_elements (&font->output); fail:    return font->status;}