metrics->SelectFont(ctx);
nsSVGCairoGlyphGeometry::ContainsPoint(float x, float y, PRBool *_retval){  *_retval = PR_FALSE;  // early reject test  if (mCoveredRegion) {    nsCOMPtr<nsISVGCairoRegion> region = do_QueryInterface(mCoveredRegion);    if (!region->Contains(x,y))      return NS_OK;  }  /* get the metrics */  nsCOMPtr<nsISVGCairoGlyphMetrics> metrics;  {    nsCOMPtr<nsISVGRendererGlyphMetrics> xpmetrics;    mSource->GetMetrics(getter_AddRefs(xpmetrics));    metrics = do_QueryInterface(xpmetrics);    NS_ASSERTION(metrics, "wrong metrics object!");    if (!metrics)      return NS_ERROR_FAILURE;  }  cairo_font_t *font = metrics->GetFont();  cairo_t *ctx = cairo_create();  cairo_set_tolerance(ctx, 1.0);  cairo_set_font(ctx, font);  GetGlobalTransform(ctx);  nsAutoString text;  mSource->GetCharacterData(text);  cairo_text_path(ctx, (unsigned char*)NS_ConvertUCS2toUTF8(text).get());  cairo_default_matrix(ctx);  *_retval = cairo_in_fill(ctx, x, y);  cairo_destroy(ctx);  return NS_OK;}