| 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());
 | 
| 
 |