[Cocoa] System fonts do not get correct tracking
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Apr 2015 01:08:15 +0000 (01:08 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Apr 2015 01:08:15 +0000 (01:08 +0000)
commit500e57f6473ae59c971df8c7f7d5c9cdf3c7d0ea
tree12520c3fdf17ce68895201e82773637d2519122b
parent18be39a8d1442f9296fb38cc7424790a6f6a25fb
[Cocoa] System fonts do not get correct tracking
https://bugs.webkit.org/show_bug.cgi?id=143395

Reviewed by Ryosuke Niwa.

Inside FontPlatformData, we have two CTFonts. If the user has specified
-webkit-system-font, we will pass in a CTFont, and the FontPlatformData
will wrap it. However, we will then roundtrip through CGFont in order
to create a second CTFont. We were basing our tracking and system
font knowledge off of this round-tripped font instead of the original font.

Note that this design is terrible and needs to be overhauled.
FontPlatformData should only have a single platform font inside it.

This patch also caches whether or not a font is a system font.

No new tests because it is impossible to test the tracking of the
system font in a robust way.

* platform/graphics/Font.cpp:
(WebCore::Font::Font): Rearrange member variables.
* platform/graphics/Font.h: Move member variables around for better
packing, and cache whether or not the font is a system font.
* platform/graphics/FontData.h: Add comment
* platform/graphics/cocoa/FontCocoa.mm:
(WebCore::Font::platformInit): Cache whether or not the font is a system
font.
(WebCore::hasCustomTracking): Use cached value.
(WebCore::canUseFastGlyphAdvanceGetter):
(WebCore::Font::platformWidthForGlyph):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@182512 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/Font.cpp
Source/WebCore/platform/graphics/Font.h
Source/WebCore/platform/graphics/FontPlatformData.h
Source/WebCore/platform/graphics/cocoa/FontCocoa.mm