[webkit-changes] [WebKit/WebKit] 9bdb0a: [Cocoa] Use kCTFontVariationAxesAttribute where we...
Myles C. Maxfield
noreply at github.com
Wed Jan 11 16:00:09 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9bdb0a69c53e7c86138c20f222110df8b7ede16f
https://github.com/WebKit/WebKit/commit/9bdb0a69c53e7c86138c20f222110df8b7ede16f
Author: Myles C. Maxfield <mmaxfield at apple.com>
Date: 2023-01-11 (Wed, 11 Jan 2023)
Changed paths:
M Source/WTF/wtf/PlatformUse.h
M Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp
Log Message:
-----------
[Cocoa] Use kCTFontVariationAxesAttribute where we can
https://bugs.webkit.org/show_bug.cgi?id=250370
rdar://104066949
Reviewed by Cameron McCormack.
For https://bugs.webkit.org/show_bug.cgi?id=247987, we want to create as few CTFonts, for
performance. Our current font code converts between CTFonts and CTFontDescriptors fairly
freely; however, all these conversions are somewhat wasteful.
Instead, if we were using the Core Text API properly, we would simply go CFDictionary ->
CTFontDescriptor -> CTFont once. Instead of going back and forth between all these types,
we'd build in everything we need into a single dictionary/descriptor, and have one single
place where we turn that descriptor into a font.
This patch is one step along that journey, and removes one place where we have to create
a font. Currently, we use CTFontCopyVariationAxes(), which requires a whole CTFont, which
causes us to go CTFontDescriptor -> CTFont -> CTFontDescriptor. Instead, we can use
kCTFontVariationAxesAttribute, which operates on a CTFontDescriptor, thereby using a
FontDescriptor more often.
There are more steps along this journey; this is just one step.
No tests because there is no behavior change.
* Source/WTF/wtf/PlatformUse.h:
* Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::variationAxes):
(WebCore::variationCapabilitiesForFontDescriptor):
Canonical link: https://commits.webkit.org/258809@main
More information about the webkit-changes
mailing list