qt: fix broken unicode chars on osx 10.10
The default font changed again. The real fix is to compile qt against a >= 10.8 sdk, but this is simple enough to backport to 0.10 to avoid having to do that there. Note: NSAppKitVersionNumber is a double and there's no official value for NSAppKitVersionNumber10_10. Since == isn't reliable for doubles, use Apple's guidelines for testing versions here: https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/ Chinese and Japanese fonts have been hard-coded as well, otherwise they fail to show up at all.
This commit is contained in:
parent
f5ad78b34a
commit
52954e6efd
1 changed files with 21 additions and 2 deletions
|
@ -67,6 +67,9 @@ static boost::filesystem::detail::utf8_codecvt_facet utf8;
|
||||||
|
|
||||||
#if defined(Q_OS_MAC)
|
#if defined(Q_OS_MAC)
|
||||||
extern double NSAppKitVersionNumber;
|
extern double NSAppKitVersionNumber;
|
||||||
|
#if !defined(NSAppKitVersionNumber10_8)
|
||||||
|
#define NSAppKitVersionNumber10_8 1187
|
||||||
|
#endif
|
||||||
#if !defined(NSAppKitVersionNumber10_9)
|
#if !defined(NSAppKitVersionNumber10_9)
|
||||||
#define NSAppKitVersionNumber10_9 1265
|
#define NSAppKitVersionNumber10_9 1265
|
||||||
#endif
|
#endif
|
||||||
|
@ -393,12 +396,28 @@ void SubstituteFonts(const QString& language)
|
||||||
// If this fallback is not properly loaded, some characters may fail to
|
// If this fallback is not properly loaded, some characters may fail to
|
||||||
// render correctly.
|
// render correctly.
|
||||||
//
|
//
|
||||||
|
// The same thing happened with 10.10. .Helvetica Neue DeskInterface is now default.
|
||||||
|
//
|
||||||
// Solution: If building with the 10.7 SDK or lower and the user's platform
|
// Solution: If building with the 10.7 SDK or lower and the user's platform
|
||||||
// is 10.9 or higher at runtime, substitute the correct font. This needs to
|
// is 10.9 or higher at runtime, substitute the correct font. This needs to
|
||||||
// happen before the QApplication is created.
|
// happen before the QApplication is created.
|
||||||
#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
|
#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
|
||||||
if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_9)
|
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_8)
|
||||||
QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande");
|
{
|
||||||
|
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_9)
|
||||||
|
/* On a 10.9 - 10.9.x system */
|
||||||
|
QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* 10.10 or later system */
|
||||||
|
if (language == "zh_CN" || language == "zh_TW" || language == "zh_HK") // traditional or simplified Chinese
|
||||||
|
QFont::insertSubstitution(".Helvetica Neue DeskInterface", "Heiti SC");
|
||||||
|
else if (language == "ja") // Japanesee
|
||||||
|
QFont::insertSubstitution(".Helvetica Neue DeskInterface", "Songti SC");
|
||||||
|
else
|
||||||
|
QFont::insertSubstitution(".Helvetica Neue DeskInterface", "Lucida Grande");
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue