From b717cd7be506217e466e32a456df9af4d2720c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20R=C3=B6ttsches?= Date: Wed, 7 Sep 2016 23:56:57 +0300 Subject: [PATCH] Do reconfigure the cascade list for Emoji font on OS X 10.9.5 (#313) This seems to fix crash issues on 10.9.5 reported on Chrome, compare crbug.com/549610 --- src/hb-coretext.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc index 9e24e9063..ee7f91cc9 100644 --- a/src/hb-coretext.cc +++ b/src/hb-coretext.cc @@ -149,9 +149,16 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size) /* crbug.com/576941 and crbug.com/625902 and the investigation in the latter * bug indicate that the cascade list reconfiguration occasionally causes * crashes in CoreText on OS X 10.9, thus let's skip this step on older - * operating system versions. */ - if (&CTGetCoreTextVersion != NULL && CTGetCoreTextVersion() <= kCTVersionNumber10_9) - return ct_font; + * operating system versions. Except for the emoji font, where _not_ + * reconfiguring the cascade list causes CoreText crashes. For details, see + * crbug.com/549610 */ + if (&CTGetCoreTextVersion != NULL && CTGetCoreTextVersion() < kCTVersionNumber10_10) { + CFStringRef fontName = CTFontCopyPostScriptName (ct_font); + bool isEmojiFont = CFStringCompare (fontName, CFSTR("AppleColorEmoji"), 0) == kCFCompareEqualTo; + CFRelease (fontName); + if (!isEmojiFont) + return ct_font; + } CFURLRef original_url = (CFURLRef)CTFontCopyAttribute(ct_font, kCTFontURLAttribute);