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>
This commit is contained in:
parent
4ee88511bc
commit
13197b8d4f
@ -410,6 +410,10 @@ template<int n> struct SkTFixed {
|
|||||||
static const SkFixed value = static_cast<SkFixed>(n << 16);
|
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) {
|
static SkFontStyle skfontstyle_from_fcpattern(FcPattern* pattern) {
|
||||||
typedef SkFontStyle SkFS;
|
typedef SkFontStyle SkFS;
|
||||||
|
|
||||||
@ -417,6 +421,8 @@ static SkFontStyle skfontstyle_from_fcpattern(FcPattern* pattern) {
|
|||||||
{ SkTFixed<FC_WEIGHT_THIN>::value, SkTFixed<SkFS::kThin_Weight>::value },
|
{ SkTFixed<FC_WEIGHT_THIN>::value, SkTFixed<SkFS::kThin_Weight>::value },
|
||||||
{ SkTFixed<FC_WEIGHT_EXTRALIGHT>::value, SkTFixed<SkFS::kExtraLight_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_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_REGULAR>::value, SkTFixed<SkFS::kNormal_Weight>::value },
|
||||||
{ SkTFixed<FC_WEIGHT_MEDIUM>::value, SkTFixed<SkFS::kMedium_Weight>::value },
|
{ SkTFixed<FC_WEIGHT_MEDIUM>::value, SkTFixed<SkFS::kMedium_Weight>::value },
|
||||||
{ SkTFixed<FC_WEIGHT_DEMIBOLD>::value, SkTFixed<SkFS::kSemiBold_Weight>::value },
|
{ SkTFixed<FC_WEIGHT_DEMIBOLD>::value, SkTFixed<SkFS::kSemiBold_Weight>::value },
|
||||||
@ -460,6 +466,8 @@ static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) {
|
|||||||
{ SkTFixed<SkFS::kThin_Weight>::value, SkTFixed<FC_WEIGHT_THIN>::value },
|
{ SkTFixed<SkFS::kThin_Weight>::value, SkTFixed<FC_WEIGHT_THIN>::value },
|
||||||
{ SkTFixed<SkFS::kExtraLight_Weight>::value, SkTFixed<FC_WEIGHT_EXTRALIGHT>::value },
|
{ SkTFixed<SkFS::kExtraLight_Weight>::value, SkTFixed<FC_WEIGHT_EXTRALIGHT>::value },
|
||||||
{ SkTFixed<SkFS::kLight_Weight>::value, SkTFixed<FC_WEIGHT_LIGHT>::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::kNormal_Weight>::value, SkTFixed<FC_WEIGHT_REGULAR>::value },
|
||||||
{ SkTFixed<SkFS::kMedium_Weight>::value, SkTFixed<FC_WEIGHT_MEDIUM>::value },
|
{ SkTFixed<SkFS::kMedium_Weight>::value, SkTFixed<FC_WEIGHT_MEDIUM>::value },
|
||||||
{ SkTFixed<SkFS::kSemiBold_Weight>::value, SkTFixed<FC_WEIGHT_DEMIBOLD>::value },
|
{ SkTFixed<SkFS::kSemiBold_Weight>::value, SkTFixed<FC_WEIGHT_DEMIBOLD>::value },
|
||||||
|
@ -31,10 +31,10 @@
|
|||||||
class SkData;
|
class SkData;
|
||||||
|
|
||||||
// FC_POSTSCRIPT_NAME was added with b561ff20 which ended up in 2.10.92
|
// 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
|
// Ubuntu 14.04 is on 2.11.0
|
||||||
// Debian 7 is on 2.9.0, 8 is on 2.11
|
// Debian 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
|
// OpenSUSE Leap 42.1 is on 2.11.0 (42.3 is on 2.11.1)
|
||||||
// Fedora 19 is on 2.10.93
|
// Fedora 24 is on 2.11.94
|
||||||
#ifndef FC_POSTSCRIPT_NAME
|
#ifndef FC_POSTSCRIPT_NAME
|
||||||
# define FC_POSTSCRIPT_NAME "postscriptname"
|
# define FC_POSTSCRIPT_NAME "postscriptname"
|
||||||
#endif
|
#endif
|
||||||
@ -178,6 +178,7 @@ enum SkWeakReturn {
|
|||||||
};
|
};
|
||||||
/** Ideally there would exist a call like
|
/** Ideally there would exist a call like
|
||||||
* FcResult FcPatternIsWeak(pattern, object, id, FcBool* isWeak);
|
* 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.
|
* 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.
|
* 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);
|
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) {
|
static SkFontStyle skfontstyle_from_fcpattern(FcPattern* pattern) {
|
||||||
typedef SkFontStyle SkFS;
|
typedef SkFontStyle SkFS;
|
||||||
|
|
||||||
|
// FcWeightToOpenType was buggy until 2.12.4
|
||||||
static const MapRanges weightRanges[] = {
|
static const MapRanges weightRanges[] = {
|
||||||
{ SkTFixed<FC_WEIGHT_THIN>::value, SkTFixed<SkFS::kThin_Weight>::value },
|
{ SkTFixed<FC_WEIGHT_THIN>::value, SkTFixed<SkFS::kThin_Weight>::value },
|
||||||
{ SkTFixed<FC_WEIGHT_EXTRALIGHT>::value, SkTFixed<SkFS::kExtraLight_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_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_REGULAR>::value, SkTFixed<SkFS::kNormal_Weight>::value },
|
||||||
{ SkTFixed<FC_WEIGHT_MEDIUM>::value, SkTFixed<SkFS::kMedium_Weight>::value },
|
{ SkTFixed<FC_WEIGHT_MEDIUM>::value, SkTFixed<SkFS::kMedium_Weight>::value },
|
||||||
{ SkTFixed<FC_WEIGHT_DEMIBOLD>::value, SkTFixed<SkFS::kSemiBold_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;
|
typedef SkFontStyle SkFS;
|
||||||
|
|
||||||
|
// FcWeightFromOpenType was buggy until 2.12.4
|
||||||
static const MapRanges weightRanges[] = {
|
static const MapRanges weightRanges[] = {
|
||||||
{ SkTFixed<SkFS::kThin_Weight>::value, SkTFixed<FC_WEIGHT_THIN>::value },
|
{ SkTFixed<SkFS::kThin_Weight>::value, SkTFixed<FC_WEIGHT_THIN>::value },
|
||||||
{ SkTFixed<SkFS::kExtraLight_Weight>::value, SkTFixed<FC_WEIGHT_EXTRALIGHT>::value },
|
{ SkTFixed<SkFS::kExtraLight_Weight>::value, SkTFixed<FC_WEIGHT_EXTRALIGHT>::value },
|
||||||
{ SkTFixed<SkFS::kLight_Weight>::value, SkTFixed<FC_WEIGHT_LIGHT>::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::kNormal_Weight>::value, SkTFixed<FC_WEIGHT_REGULAR>::value },
|
||||||
{ SkTFixed<SkFS::kMedium_Weight>::value, SkTFixed<FC_WEIGHT_MEDIUM>::value },
|
{ SkTFixed<SkFS::kMedium_Weight>::value, SkTFixed<FC_WEIGHT_MEDIUM>::value },
|
||||||
{ SkTFixed<SkFS::kSemiBold_Weight>::value, SkTFixed<FC_WEIGHT_DEMIBOLD>::value },
|
{ SkTFixed<SkFS::kSemiBold_Weight>::value, SkTFixed<FC_WEIGHT_DEMIBOLD>::value },
|
||||||
|
Loading…
Reference in New Issue
Block a user