diff options
author | Ben Wagner <bungeman@google.com> | 2017-08-14 11:06:12 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-18 17:40:54 +0000 |
commit | 13197b8d4f1000249fa98b587c047d35f4ab1cf2 (patch) | |
tree | 326a2b2b8346a79426f496613012e9d333a8832f /src/ports/SkFontMgr_fontconfig.cpp | |
parent | 4ee88511bc04dcfb66c4c58d3b600f329bedb44e (diff) |
Add BOOK and DEMI_LIGHT.
It would be nice to use FcWeightToOpenType but this was buggy until
2.12.4.
Change-Id: Ifcf9bfc783ea63c684bedb2a22267e97461d4945
Reviewed-on: https://skia-review.googlesource.com/129182
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'src/ports/SkFontMgr_fontconfig.cpp')
-rw-r--r-- | src/ports/SkFontMgr_fontconfig.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/ports/SkFontMgr_fontconfig.cpp b/src/ports/SkFontMgr_fontconfig.cpp index c2ba1c038d..944f8049b2 100644 --- a/src/ports/SkFontMgr_fontconfig.cpp +++ b/src/ports/SkFontMgr_fontconfig.cpp @@ -31,10 +31,10 @@ class SkData; // FC_POSTSCRIPT_NAME was added with b561ff20 which ended up in 2.10.92 -// Ubuntu 12.04 is on 2.8.0, 13.10 is on 2.10.93 -// Debian 7 is on 2.9.0, 8 is on 2.11 -// OpenSUSE 12.2 is on 2.9.0, 12.3 is on 2.10.2, 13.1 2.11.0 -// Fedora 19 is on 2.10.93 +// Ubuntu 14.04 is on 2.11.0 +// Debian 8 is on 2.11 +// OpenSUSE Leap 42.1 is on 2.11.0 (42.3 is on 2.11.1) +// Fedora 24 is on 2.11.94 #ifndef FC_POSTSCRIPT_NAME # define FC_POSTSCRIPT_NAME "postscriptname" #endif @@ -178,6 +178,7 @@ enum SkWeakReturn { }; /** Ideally there would exist a call like * FcResult FcPatternIsWeak(pattern, object, id, FcBool* isWeak); + * Sometime after 2.12.4 FcPatternGetWithBinding was added which can retrieve the binding. * * However, there is no such call and as of Fc 2.11.0 even FcPatternEquals ignores the weak bit. * Currently, the only reliable way of finding the weak bit is by its effect on matching. @@ -327,13 +328,20 @@ template<int n> struct SkTFixed { static const SkFixed value = static_cast<SkFixed>(n << 16); }; +#ifndef FC_WEIGHT_DEMILIGHT +#define FC_WEIGHT_DEMILIGHT 65 +#endif + static SkFontStyle skfontstyle_from_fcpattern(FcPattern* pattern) { typedef SkFontStyle SkFS; + // FcWeightToOpenType was buggy until 2.12.4 static const MapRanges weightRanges[] = { { SkTFixed<FC_WEIGHT_THIN>::value, SkTFixed<SkFS::kThin_Weight>::value }, { SkTFixed<FC_WEIGHT_EXTRALIGHT>::value, SkTFixed<SkFS::kExtraLight_Weight>::value }, { SkTFixed<FC_WEIGHT_LIGHT>::value, SkTFixed<SkFS::kLight_Weight>::value }, + { SkTFixed<FC_WEIGHT_DEMILIGHT>::value, SkTFixed<350>::value }, + { SkTFixed<FC_WEIGHT_BOOK>::value, SkTFixed<380>::value }, { SkTFixed<FC_WEIGHT_REGULAR>::value, SkTFixed<SkFS::kNormal_Weight>::value }, { SkTFixed<FC_WEIGHT_MEDIUM>::value, SkTFixed<SkFS::kMedium_Weight>::value }, { SkTFixed<FC_WEIGHT_DEMIBOLD>::value, SkTFixed<SkFS::kSemiBold_Weight>::value }, @@ -375,10 +383,13 @@ static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) { typedef SkFontStyle SkFS; + // FcWeightFromOpenType was buggy until 2.12.4 static const MapRanges weightRanges[] = { { SkTFixed<SkFS::kThin_Weight>::value, SkTFixed<FC_WEIGHT_THIN>::value }, { SkTFixed<SkFS::kExtraLight_Weight>::value, SkTFixed<FC_WEIGHT_EXTRALIGHT>::value }, { SkTFixed<SkFS::kLight_Weight>::value, SkTFixed<FC_WEIGHT_LIGHT>::value }, + { SkTFixed<350>::value, SkTFixed<FC_WEIGHT_DEMILIGHT>::value }, + { SkTFixed<380>::value, SkTFixed<FC_WEIGHT_BOOK>::value }, { SkTFixed<SkFS::kNormal_Weight>::value, SkTFixed<FC_WEIGHT_REGULAR>::value }, { SkTFixed<SkFS::kMedium_Weight>::value, SkTFixed<FC_WEIGHT_MEDIUM>::value }, { SkTFixed<SkFS::kSemiBold_Weight>::value, SkTFixed<FC_WEIGHT_DEMIBOLD>::value }, |