From 21ea1c91529471c05e03b6db61df256f24fa23c1 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 31 Jan 2019 13:49:18 -0800 Subject: [PATCH 1/3] Remove stale comment --- src/hb-dsalgs.hh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/hb-dsalgs.hh b/src/hb-dsalgs.hh index cb3057c54..6ccba158c 100644 --- a/src/hb-dsalgs.hh +++ b/src/hb-dsalgs.hh @@ -321,11 +321,6 @@ template <> struct hb_is_signed<__int8> { enum { value = true }; }; template static inline bool hb_in_range (T u, T lo, T hi) { - /* The sizeof() is here to force template instantiation. - * I'm sure there are better ways to do this but can't think of - * one right now. Declaring a variable won't work as HB_UNUSED - * is unusable on some platforms and unused types are less likely - * to generate a warning than unused variables. */ static_assert (!hb_is_signed::value, ""); /* The casts below are important as if T is smaller than int, From 1e06282105a2d579aab32094cc7abc10ed231978 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 31 Jan 2019 13:56:58 -0800 Subject: [PATCH 2/3] Adjust hb_is_signed<> Fixes https://github.com/harfbuzz/harfbuzz/issues/1535 --- src/hb-dsalgs.hh | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/hb-dsalgs.hh b/src/hb-dsalgs.hh index 6ccba158c..0da244f0a 100644 --- a/src/hb-dsalgs.hh +++ b/src/hb-dsalgs.hh @@ -299,24 +299,15 @@ hb_ceil_to_4 (unsigned int v) } template struct hb_is_signed; -template <> struct hb_is_signed { enum { value = true }; }; -template <> struct hb_is_signed { enum { value = true }; }; -template <> struct hb_is_signed { enum { value = true }; }; -template <> struct hb_is_signed { enum { value = true }; }; -template <> struct hb_is_signed { enum { value = false }; }; -template <> struct hb_is_signed { enum { value = false }; }; -template <> struct hb_is_signed { enum { value = false }; }; -template <> struct hb_is_signed { enum { value = false }; }; -/* We need to define hb_is_signed for the typedefs we use on pre-Visual - * Studio 2010 for the int8_t type, since __int8/__int64 is not considered - * the same as char/long. The previous lines will suffice for the other - * types, though. Note that somehow, unsigned __int8 is considered same - * as unsigned char. - * https://github.com/harfbuzz/harfbuzz/pull/1499 - */ -#if defined(_MSC_VER) && (_MSC_VER < 1600) -template <> struct hb_is_signed<__int8> { enum { value = true }; }; -#endif +/* https://github.com/harfbuzz/harfbuzz/issues/1535 */ +template <> struct hb_is_signed { enum { value = true }; }; +template <> struct hb_is_signed { enum { value = true }; }; +template <> struct hb_is_signed { enum { value = true }; }; +template <> struct hb_is_signed { enum { value = true }; }; +template <> struct hb_is_signed { enum { value = false }; }; +template <> struct hb_is_signed { enum { value = false }; }; +template <> struct hb_is_signed { enum { value = false }; }; +template <> struct hb_is_signed { enum { value = false }; }; template static inline bool hb_in_range (T u, T lo, T hi) From 7859decdd02f65dfb3da07bd95742b14b4697638 Mon Sep 17 00:00:00 2001 From: Ken Cunningham Date: Tue, 5 Feb 2019 20:26:49 -0800 Subject: [PATCH 3/3] hb-coretext.cc: clean up macosx test TARGET_OS_OSX was introduced only in late OS versions so always returns as "0" on older systems. if !TARGET_OS_IPHONE can work, as it returns as !0 on older systems where TARGET_OS_IPHONE is not defined, but is not specific if TARGET_OS_MAC && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) is both specific and accurate on all systems. --- src/hb-coretext.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc index 42ea3ea2b..6d0015151 100644 --- a/src/hb-coretext.cc +++ b/src/hb-coretext.cc @@ -171,7 +171,7 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size) if (CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSText")) || CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSDisplay"))) { -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1080 +#if TARGET_OS_MAC && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) && MAC_OS_X_VERSION_MIN_REQUIRED < 1080 # define kCTFontUIFontSystem kCTFontSystemFontType # define kCTFontUIFontEmphasizedSystem kCTFontEmphasizedSystemFontType #endif @@ -214,7 +214,7 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size) } CFURLRef original_url = nullptr; -#if TARGET_OS_OSX && MAC_OS_X_VERSION_MIN_REQUIRED < 1060 +#if TARGET_OS_MAC && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) && MAC_OS_X_VERSION_MIN_REQUIRED < 1060 ATSFontRef atsFont; FSRef fsref; OSStatus status; @@ -244,7 +244,7 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size) * process in Blink. This can be detected by the new file URL location * that the newly found font points to. */ CFURLRef new_url = nullptr; -#if TARGET_OS_OSX && MAC_OS_X_VERSION_MIN_REQUIRED < 1060 +#if TARGET_OS_MAC && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) && MAC_OS_X_VERSION_MIN_REQUIRED < 1060 atsFont = CTFontGetPlatformFont (new_ct_font, NULL); status = ATSFontGetFileReference (atsFont, &fsref); if (status == noErr) @@ -711,7 +711,7 @@ resize_and_retry: /* What's the iOS equivalent of this check? * The symbols was introduced in iOS 7.0. * At any rate, our fallback is safe and works fine. */ -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 +#if TARGET_OS_MAC && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) && MAC_OS_X_VERSION_MIN_REQUIRED < 1090 # define kCTLanguageAttributeName CFSTR ("NSLanguage") #endif CFStringRef lang = CFStringCreateWithCStringNoCopy (kCFAllocatorDefault, @@ -783,7 +783,7 @@ resize_and_retry: int level = HB_DIRECTION_IS_FORWARD (buffer->props.direction) ? 0 : 1; CFNumberRef level_number = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &level); -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 +#if TARGET_OS_MAC && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) && MAC_OS_X_VERSION_MIN_REQUIRED < 1060 extern const CFStringRef kCTTypesetterOptionForcedEmbeddingLevel; #endif CFDictionaryRef options = CFDictionaryCreate (kCFAllocatorDefault,