Fix build with CoreText on OS X 10.7 and earlier (#952)
This commit is contained in:
parent
d3984b45b5
commit
58e569e5f7
|
@ -168,6 +168,10 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size)
|
||||||
if (CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSText")) ||
|
if (CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSText")) ||
|
||||||
CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSDisplay")))
|
CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSDisplay")))
|
||||||
{
|
{
|
||||||
|
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1080
|
||||||
|
# define kCTFontUIFontSystem kCTFontSystemFontType
|
||||||
|
# define kCTFontUIFontEmphasizedSystem kCTFontEmphasizedSystemFontType
|
||||||
|
#endif
|
||||||
CTFontUIFontType font_type = kCTFontUIFontSystem;
|
CTFontUIFontType font_type = kCTFontUIFontSystem;
|
||||||
if (CFStringHasSuffix (cg_postscript_name, CFSTR ("-Bold")))
|
if (CFStringHasSuffix (cg_postscript_name, CFSTR ("-Bold")))
|
||||||
font_type = kCTFontUIFontEmphasizedSystem;
|
font_type = kCTFontUIFontEmphasizedSystem;
|
||||||
|
@ -206,7 +210,18 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size)
|
||||||
return ct_font;
|
return ct_font;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFURLRef original_url = (CFURLRef)CTFontCopyAttribute(ct_font, kCTFontURLAttribute);
|
CFURLRef original_url = NULL;
|
||||||
|
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
|
||||||
|
ATSFontRef atsFont;
|
||||||
|
FSRef fsref;
|
||||||
|
OSStatus status;
|
||||||
|
atsFont = CTFontGetPlatformFont (ct_font, NULL);
|
||||||
|
status = ATSFontGetFileReference (atsFont, &fsref);
|
||||||
|
if (status == noErr)
|
||||||
|
original_url = CFURLCreateFromFSRef (NULL, &fsref);
|
||||||
|
#else
|
||||||
|
original_url = (CFURLRef) CTFontCopyAttribute (ct_font, kCTFontURLAttribute);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Create font copy with cascade list that has LastResort first; this speeds up CoreText
|
/* Create font copy with cascade list that has LastResort first; this speeds up CoreText
|
||||||
* font fallback which we don't need anyway. */
|
* font fallback which we don't need anyway. */
|
||||||
|
@ -225,7 +240,15 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size)
|
||||||
* system locations that we cannot access from the sandboxed renderer
|
* system locations that we cannot access from the sandboxed renderer
|
||||||
* process in Blink. This can be detected by the new file URL location
|
* process in Blink. This can be detected by the new file URL location
|
||||||
* that the newly found font points to. */
|
* that the newly found font points to. */
|
||||||
CFURLRef new_url = (CFURLRef) CTFontCopyAttribute (new_ct_font, kCTFontURLAttribute);
|
CFURLRef new_url = NULL;
|
||||||
|
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
|
||||||
|
atsFont = CTFontGetPlatformFont (new_ct_font, NULL);
|
||||||
|
status = ATSFontGetFileReference (atsFont, &fsref);
|
||||||
|
if (status == noErr)
|
||||||
|
new_url = CFURLCreateFromFSRef (NULL, &fsref);
|
||||||
|
#else
|
||||||
|
new_url = (CFURLRef) CTFontCopyAttribute (new_ct_font, kCTFontURLAttribute);
|
||||||
|
#endif
|
||||||
// Keep reconfigured font if URL cannot be retrieved (seems to be the case
|
// Keep reconfigured font if URL cannot be retrieved (seems to be the case
|
||||||
// on Mac OS 10.12 Sierra), speculative fix for crbug.com/625606
|
// on Mac OS 10.12 Sierra), speculative fix for crbug.com/625606
|
||||||
if (!original_url || !new_url || CFEqual (original_url, new_url)) {
|
if (!original_url || !new_url || CFEqual (original_url, new_url)) {
|
||||||
|
@ -944,6 +967,9 @@ resize_and_retry:
|
||||||
|
|
||||||
int level = HB_DIRECTION_IS_FORWARD (buffer->props.direction) ? 0 : 1;
|
int level = HB_DIRECTION_IS_FORWARD (buffer->props.direction) ? 0 : 1;
|
||||||
CFNumberRef level_number = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &level);
|
CFNumberRef level_number = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &level);
|
||||||
|
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
|
||||||
|
extern const CFStringRef kCTTypesetterOptionForcedEmbeddingLevel;
|
||||||
|
#endif
|
||||||
CFDictionaryRef options = CFDictionaryCreate (kCFAllocatorDefault,
|
CFDictionaryRef options = CFDictionaryCreate (kCFAllocatorDefault,
|
||||||
(const void **) &kCTTypesetterOptionForcedEmbeddingLevel,
|
(const void **) &kCTTypesetterOptionForcedEmbeddingLevel,
|
||||||
(const void **) &level_number,
|
(const void **) &level_number,
|
||||||
|
|
Loading…
Reference in New Issue