Blob Blame History Raw
--- 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);