return CAIRO_STATUS_SUCCESS;
for (i = 0; i < num_glyphs; i++) { GlyphID theGlyph = glyphs[i].index;  ATSGlyphScreenMetrics metrics; ATSUGlyphGetScreenMetrics(font->style, 1, &theGlyph, 0, true, true, &metrics);  x1 = _cairo_fixed_from_double(glyphs[i].x + metrics.topLeft.x); y1 = _cairo_fixed_from_double(glyphs[i].y - metrics.topLeft.y); x2 = x1 + _cairo_fixed_from_double(metrics.height); y2 = y1 + _cairo_fixed_from_double(metrics.width);  if (x1 < bbox->p1.x) bbox->p1.x = x1;  if (y1 < bbox->p1.y) bbox->p1.y = y1;  if (x2 > bbox->p2.x) bbox->p2.x = x2;  if (y2 > bbox->p2.y) bbox->p2.y = y2; }  return CAIRO_STATUS_SUCCESS;
_cairo_atsui_font_glyph_bbox(	void				*abstract_font,								cairo_font_scale_t 	*sc,								const cairo_glyph_t	*glyphs,								int					num_glyphs,								cairo_box_t 		*bbox){	cairo_atsui_font_t	*font = abstract_font;	cairo_fixed_t		x1, y1, x2, y2;	int					i;	OSStatus			err;	ATSUStyle			style;		bbox->p1.x = bbox->p1.y = CAIRO_MAXSHORT << 16;	bbox->p2.x = bbox->p2.y = CAIRO_MINSHORT << 16;			style = CreateSizedCopyOfStyle(font->style, sc);			for (i = 0; i < num_glyphs; i++)	{		GlyphID					theGlyph = glyphs[i].index;		ATSGlyphIdealMetrics	metrics;						err = ATSUGlyphGetIdealMetrics(	style,										1,										&theGlyph,										0,										&metrics);				x1 = _cairo_fixed_from_double(glyphs[i].x);		y1 = _cairo_fixed_from_double(glyphs[i].y);		x2 = x1 + _cairo_fixed_from_double(metrics.advance.x);		y2 = y1 + _cairo_fixed_from_double(metrics.advance.y);				if (x1 < bbox->p1.x)			bbox->p1.x = x1;				if (y1 < bbox->p1.y)			bbox->p1.y = y1;				if (x2 > bbox->p2.x)			bbox->p2.x = x2;				if (y2 > bbox->p2.y)			bbox->p2.y = y2;	}			ATSUDisposeStyle(style);		return CAIRO_STATUS_SUCCESS;}