836
836
NS_WARNING("nsFontMetricsPango::GetBoundingMetrics invalid unicode to follow");
837
837
DUMP_PRUNICHAR(aString, aLength)
839
aBoundingMetrics.leftBearing = 0;
840
aBoundingMetrics.rightBearing = 0;
841
aBoundingMetrics.width = 0;
842
aBoundingMetrics.ascent = 0;
843
aBoundingMetrics.descent = 0;
839
aBoundingMetrics.Clear();
845
841
rv = NS_ERROR_FAILURE;
849
pango_layout_set_text(layout, text, strlen(text));
845
pango_layout_set_text(layout, text, -1);
850
846
FixupSpaceWidths(layout, text);
852
// Get the logical extents
853
848
PangoLayoutLine *line;
854
849
if (pango_layout_get_line_count(layout) != 1) {
855
850
printf("Warning: more than one line!\n");
857
852
line = pango_layout_get_line(layout, 0);
859
// Get the ink extents
861
pango_layout_line_get_extents(line, NULL, &rect);
854
// Get the ink and logical extents
855
PangoRectangle ink, logical;
856
pango_layout_line_get_extents(line, &ink, &logical);
864
859
P2T = mDeviceContext->DevUnitsToAppUnits();
866
aBoundingMetrics.leftBearing =
867
NSToCoordRound(rect.x * P2T / PANGO_SCALE);
868
aBoundingMetrics.rightBearing =
869
NSToCoordRound(rect.width * P2T / PANGO_SCALE);
870
aBoundingMetrics.width = NSToCoordRound((rect.x + rect.width) * P2T / PANGO_SCALE);
871
aBoundingMetrics.ascent = NSToCoordRound(rect.y * P2T / PANGO_SCALE);
872
aBoundingMetrics.descent = NSToCoordRound(rect.height * P2T / PANGO_SCALE);
861
aBoundingMetrics.leftBearing = NSToCoordRound(PANGO_LBEARING(ink) * P2T / PANGO_SCALE);
862
aBoundingMetrics.rightBearing = NSToCoordRound(PANGO_RBEARING(ink) * P2T / PANGO_SCALE);
863
aBoundingMetrics.ascent = NSToCoordRound(PANGO_ASCENT(ink) * P2T / PANGO_SCALE);
864
aBoundingMetrics.descent = NSToCoordRound(PANGO_DESCENT(ink) * P2T / PANGO_SCALE);
865
aBoundingMetrics.width = NSToCoordRound(logical.width * P2T / PANGO_SCALE);