<rdar://problem/9973194> Fonts that specify a positive descender value are treated...
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Aug 2011 00:23:52 +0000 (00:23 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Aug 2011 00:23:52 +0000 (00:23 +0000)
https://bugs.webkit.org/show_bug.cgi?id=66515

Reviewed by Darin Adler.

No test because none of the system fonts and test fonts have an incorrectly-specified descender value.

* platform/graphics/mac/SimpleFontDataMac.mm:
(WebCore::SimpleFontData::platformInit): If the font specifies a positive descender, assume that it meant
the same amount, but negative. This is consistent with what Core Text does.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@93376 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm

index 18c8bfa7d51986059c1bbba6cca1317d60b23de3..a7a1710a597301c28c772a3e01f091781238be5a 100644 (file)
@@ -1,3 +1,16 @@
+2011-08-18  Dan Bernstein  <mitz@apple.com>
+
+        <rdar://problem/9973194> Fonts that specify a positive descender value are treated as having descenders ending above the baseline
+        https://bugs.webkit.org/show_bug.cgi?id=66515
+
+        Reviewed by Darin Adler.
+
+        No test because none of the system fonts and test fonts have an incorrectly-specified descender value.
+
+        * platform/graphics/mac/SimpleFontDataMac.mm:
+        (WebCore::SimpleFontData::platformInit): If the font specifies a positive descender, assume that it meant
+        the same amount, but negative. This is consistent with what Core Text does.
+
 2011-08-18  Ryosuke Niwa  <rniwa@webkit.org>
 
         positionForPoint returns wrong VisiblePosition at bidi boundaries
index 75ceeaefcffa2db97776447f0a44cd93c4d865ff..43f7f69474187c31f3eefa9f7793d0c913653cc9 100644 (file)
@@ -187,7 +187,9 @@ void SimpleFontData::platformInit()
     int iLineGap;
     unsigned unitsPerEm;
     iAscent = CGFontGetAscent(m_platformData.cgFont());
-    iDescent = CGFontGetDescent(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.
+    iDescent = -abs(CGFontGetDescent(m_platformData.cgFont()));
     iLineGap = CGFontGetLeading(m_platformData.cgFont());
     unitsPerEm = CGFontGetUnitsPerEm(m_platformData.cgFont());