| Index: Source/platform/fonts/mac/SimpleFontDataMac.mm
|
| diff --git a/Source/platform/fonts/mac/SimpleFontDataMac.mm b/Source/platform/fonts/mac/SimpleFontDataMac.mm
|
| index 4d5533eea80e2c21d4d52f908d99193eb260d405..de856d5862a9773eeae46a8deb25f13dcaf0ab77 100644
|
| --- a/Source/platform/fonts/mac/SimpleFontDataMac.mm
|
| +++ b/Source/platform/fonts/mac/SimpleFontDataMac.mm
|
| @@ -155,7 +155,7 @@ void SimpleFontData::platformInit()
|
| fallbackFontFamily = @"Times New Roman";
|
| else
|
| fallbackFontFamily = webFallbackFontFamily();
|
| -
|
| +
|
| // Try setting up the alternate font.
|
| // This is a last ditch effort to use a substitute font when something has gone wrong.
|
| #if !ERROR_DISABLED
|
| @@ -195,11 +195,12 @@ void SimpleFontData::platformInit()
|
| WTF_LOG_ERROR("failed to set up font, using system font %s", m_platformData.font());
|
| initFontData(this);
|
| }
|
| -
|
| +
|
| int iAscent;
|
| int iDescent;
|
| int iLineGap;
|
| unsigned unitsPerEm;
|
| +
|
| iAscent = CGFontGetAscent(m_platformData.cgFont());
|
| // Some fonts erroneously specify a positive descender value. We follow Core Text in assuming that
|
| // such fonts meant the same distance, but in the reverse direction.
|
| @@ -211,6 +212,7 @@ void SimpleFontData::platformInit()
|
| float ascent = scaleEmToUnits(iAscent, unitsPerEm) * pointSize;
|
| float descent = -scaleEmToUnits(iDescent, unitsPerEm) * pointSize;
|
| float lineGap = scaleEmToUnits(iLineGap, unitsPerEm) * pointSize;
|
| + float underlineThickness = CTFontGetUnderlineThickness(m_platformData.ctFont());
|
|
|
| // We need to adjust Times, Helvetica, and Courier to closely match the
|
| // vertical metrics of their Microsoft counterparts that are the de facto
|
| @@ -230,7 +232,7 @@ void SimpleFontData::platformInit()
|
| lineGap -= 3 - descent;
|
| descent = 3;
|
| }
|
| -
|
| +
|
| if (platformData().orientation() == Vertical && !isTextOrientationFallback())
|
| m_hasVerticalGlyphs = fontHasVerticalGlyphs(m_platformData.ctFont());
|
|
|
| @@ -253,6 +255,7 @@ void SimpleFontData::platformInit()
|
| m_fontMetrics.setDescent(descent);
|
| m_fontMetrics.setLineGap(lineGap);
|
| m_fontMetrics.setXHeight(xHeight);
|
| + m_fontMetrics.setUnderlineThickness(underlineThickness);
|
| }
|
|
|
| static CFDataRef copyFontTableForTag(FontPlatformData& platformData, FourCharCode tableName)
|
| @@ -264,7 +267,7 @@ void SimpleFontData::platformCharWidthInit()
|
| {
|
| m_avgCharWidth = 0;
|
| m_maxCharWidth = 0;
|
| -
|
| +
|
| RetainPtr<CFDataRef> os2Table(AdoptCF, copyFontTableForTag(m_platformData, 'OS/2'));
|
| if (os2Table && CFDataGetLength(os2Table.get()) >= 4) {
|
| const UInt8* os2 = CFDataGetBytePtr(os2Table.get());
|
|
|