--- mozilla/gfx/src/gtk/nsFontMetricsPango.cpp.mathml 2006-02-23 16:01:42.000000000 -0500 +++ mozilla/gfx/src/gtk/nsFontMetricsPango.cpp 2006-08-22 20:06:40.000000000 -0400 @@ -829,30 +829,27 @@ nsFontMetricsPango::GetBoundingMetrics(c goto loser; } - pango_layout_set_text(layout, text, strlen(text)); + pango_layout_set_text(layout, text, -1); FixupSpaceWidths(layout, text); - // Get the logical extents PangoLayoutLine *line; if (pango_layout_get_line_count(layout) != 1) { printf("Warning: more than one line!\n"); } line = pango_layout_get_line(layout, 0); - // Get the ink extents - PangoRectangle rect; - pango_layout_line_get_extents(line, NULL, &rect); + // Get the ink and logical extents + PangoRectangle ink, logical; + pango_layout_line_get_extents(line, &ink, &logical); float P2T; P2T = mDeviceContext->DevUnitsToAppUnits(); - aBoundingMetrics.leftBearing = - NSToCoordRound(rect.x * P2T / PANGO_SCALE); - aBoundingMetrics.rightBearing = - NSToCoordRound(rect.width * P2T / PANGO_SCALE); - aBoundingMetrics.width = NSToCoordRound((rect.x + rect.width) * P2T / PANGO_SCALE); - aBoundingMetrics.ascent = NSToCoordRound(rect.y * P2T / PANGO_SCALE); - aBoundingMetrics.descent = NSToCoordRound(rect.height * P2T / PANGO_SCALE); + aBoundingMetrics.leftBearing = NSToCoordRound(PANGO_LBEARING(ink) * P2T / PANGO_SCALE); + aBoundingMetrics.rightBearing = NSToCoordRound(PANGO_RBEARING(ink) * P2T / PANGO_SCALE); + aBoundingMetrics.ascent = NSToCoordRound(PANGO_ASCENT(ink) * P2T / PANGO_SCALE); + aBoundingMetrics.descent = NSToCoordRound(PANGO_DESCENT(ink) * P2T / PANGO_SCALE); + aBoundingMetrics.width = NSToCoordRound(logical.width * P2T / PANGO_SCALE); loser: g_free(text);