Add oblique as a slant.
Some fonts have italic and oblique in the same family, see
http://lucidafonts.com/fonts/family/lucida-sans
http://www.gust.org.pl/projects/e-foundry/latin-modern
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1921903002
Chromium side change at https://crrev.com/1921503006/ .
Review-Url: https://codereview.chromium.org/1921903002
diff --git a/src/fonts/SkFontMgr_fontconfig.cpp b/src/fonts/SkFontMgr_fontconfig.cpp
index fedd3dc..9051170 100644
--- a/src/fonts/SkFontMgr_fontconfig.cpp
+++ b/src/fonts/SkFontMgr_fontconfig.cpp
@@ -168,14 +168,19 @@
static SkFontStyle make_fontconfig_style(FcPattern* match) {
int weight = get_int(match, FC_WEIGHT);
int width = get_int(match, FC_WIDTH);
- int slant = get_int(match, FC_SLANT);
-// SkDebugf("old weight %d new weight %d\n", weight, map_range(weight, 0, 80, 0, 400));
+ int fcSlant = get_int(match, FC_SLANT);
// fontconfig weight seems to be 0..200 or so, so we remap it here
weight = map_range(weight, 0, 80, 0, 400);
width = map_range(width, 0, 200, 0, 9);
- return SkFontStyle(weight, width, slant > 0 ? SkFontStyle::kItalic_Slant
- : SkFontStyle::kUpright_Slant);
+ SkFontStyle::Slant skSlant = SkFontStyle::kUpright_Slant;
+ switch (fcSlant) {
+ case FC_SLANT_ROMAN: skSlant = SkFontStyle::kUpright_Slant; break;
+ case FC_SLANT_ITALIC : skSlant = SkFontStyle::kItalic_Slant ; break;
+ case FC_SLANT_OBLIQUE: skSlant = SkFontStyle::kOblique_Slant; break;
+ default: SkASSERT(false); break;
+ }
+ return SkFontStyle(weight, width, skSlant);
}
SkFontStyleSet_FC::SkFontStyleSet_FC(FcPattern** matches, int count) {