Commit 9ba296cc authored by Jake Petroules's avatar Jake Petroules
Browse files

Add constants for the CoreText font weights.


Incidentally, this corrects two small errors in the values of the
Medium and Heavy font weights.

Change-Id: I17d4410890f1f3bd1ed72e94f5ca0d43c21484e1
Reviewed-by: default avatarKonstantin Ritt <ritt.ks@gmail.com>
Showing with 52 additions and 9 deletions
...@@ -41,6 +41,49 @@ ...@@ -41,6 +41,49 @@
#include <cmath> #include <cmath>
#if defined(Q_OS_OSX) && !QT_OSX_DEPLOYMENT_TARGET_BELOW(__MAC_10_11)
#import <AppKit/AppKit.h>
#endif
#if defined(Q_OS_IOS) && !QT_IOS_DEPLOYMENT_TARGET_BELOW(__IPHONE_8_2)
#import <UIKit/UIKit.h>
#endif
// These are available cross platform, exported as kCTFontWeightXXX from CoreText.framework,
// but they are not documented and are not in public headers so are private API and exposed
// only through the NSFontWeightXXX and UIFontWeightXXX aliases in AppKit and UIKit (rdar://26109857)
#if QT_MAC_DEPLOYMENT_TARGET_BELOW(__MAC_10_11, __IPHONE_8_2)
#define kCTFontWeightUltraLight -0.8
#define kCTFontWeightThin -0.6
#define kCTFontWeightLight -0.4
#define kCTFontWeightRegular 0
#define kCTFontWeightMedium 0.23
#define kCTFontWeightSemibold 0.3
#define kCTFontWeightBold 0.4
#define kCTFontWeightHeavy 0.56
#define kCTFontWeightBlack 0.62
#elif defined(Q_OS_OSX)
#define kCTFontWeightUltraLight NSFontWeightUltraLight
#define kCTFontWeightThin NSFontWeightThin
#define kCTFontWeightLight NSFontWeightLight
#define kCTFontWeightRegular NSFontWeightRegular
#define kCTFontWeightMedium NSFontWeightMedium
#define kCTFontWeightSemibold NSFontWeightSemibold
#define kCTFontWeightBold NSFontWeightBold
#define kCTFontWeightHeavy NSFontWeightHeavy
#define kCTFontWeightBlack NSFontWeightBlack
#elif defined(Q_OS_IOS)
#define kCTFontWeightUltraLight UIFontWeightUltraLight
#define kCTFontWeightThin UIFontWeightThin
#define kCTFontWeightLight UIFontWeightLight
#define kCTFontWeightRegular UIFontWeightRegular
#define kCTFontWeightMedium UIFontWeightMedium
#define kCTFontWeightSemibold UIFontWeightSemibold
#define kCTFontWeightBold UIFontWeightBold
#define kCTFontWeightHeavy UIFontWeightHeavy
#define kCTFontWeightBlack UIFontWeightBlack
#endif
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
static float SYNTHETIC_ITALIC_SKEW = std::tan(14.f * std::acos(0.f) / 90.f); static float SYNTHETIC_ITALIC_SKEW = std::tan(14.f * std::acos(0.f) / 90.f);
...@@ -63,23 +106,23 @@ bool QCoreTextFontEngine::ct_getSfntTable(void *user_data, uint tag, uchar *buff ...@@ -63,23 +106,23 @@ bool QCoreTextFontEngine::ct_getSfntTable(void *user_data, uint tag, uchar *buff
QFont::Weight QCoreTextFontEngine::qtWeightFromCFWeight(float value) QFont::Weight QCoreTextFontEngine::qtWeightFromCFWeight(float value)
{ {
if (value >= 0.62) if (value >= kCTFontWeightBlack)
return QFont::Black; return QFont::Black;
if (value >= 0.5) if (value >= kCTFontWeightHeavy)
return QFont::ExtraBold; return QFont::ExtraBold;
if (value >= 0.4) if (value >= kCTFontWeightBold)
return QFont::Bold; return QFont::Bold;
if (value >= 0.3) if (value >= kCTFontWeightSemibold)
return QFont::DemiBold; return QFont::DemiBold;
if (value >= 0.2) if (value >= kCTFontWeightMedium)
return QFont::Medium; return QFont::Medium;
if (value == 0.0) if (value == kCTFontWeightRegular)
return QFont::Normal; return QFont::Normal;
if (value <= -0.8) if (value <= kCTFontWeightUltraLight)
return QFont::Thin; return QFont::Thin;
if (value <= -0.6) if (value <= kCTFontWeightThin)
return QFont::ExtraLight; return QFont::ExtraLight;
if (value <= -0.4) if (value <= kCTFontWeightLight)
return QFont::Light; return QFont::Light;
return QFont::Normal; return QFont::Normal;
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment