diff options
author | 2016-04-27 10:21:04 -0700 | |
---|---|---|
committer | 2016-04-27 10:21:05 -0700 | |
commit | b4bb7d825566042ed64697be49457dbac060e6c4 (patch) | |
tree | baad2b4f5125674cc06c06a7d2dd04f7100379c4 /src/ports/SkFontConfigInterface_direct.cpp | |
parent | 12135f50bd8d7d8abbb2befb99a9784043cb90e5 (diff) |
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
Diffstat (limited to 'src/ports/SkFontConfigInterface_direct.cpp')
-rw-r--r-- | src/ports/SkFontConfigInterface_direct.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/ports/SkFontConfigInterface_direct.cpp b/src/ports/SkFontConfigInterface_direct.cpp index cc80fbe647..d384f707b1 100644 --- a/src/ports/SkFontConfigInterface_direct.cpp +++ b/src/ports/SkFontConfigInterface_direct.cpp @@ -387,9 +387,13 @@ static SkFontStyle skfontstyle_from_fcpattern(FcPattern* pattern) { int width = map_ranges(get_int(pattern, FC_WIDTH, FC_WIDTH_NORMAL), widthRanges, SK_ARRAY_COUNT(widthRanges)); - SkFS::Slant slant = get_int(pattern, FC_SLANT, FC_SLANT_ROMAN) > 0 - ? SkFS::kItalic_Slant - : SkFS::kUpright_Slant; + SkFS::Slant slant = SkFS::kUpright_Slant; + switch (get_int(pattern, FC_SLANT, FC_SLANT_ROMAN)) { + case FC_SLANT_ROMAN: slant = SkFS::kUpright_Slant; break; + case FC_SLANT_ITALIC : slant = SkFS::kItalic_Slant ; break; + case FC_SLANT_OBLIQUE: slant = SkFS::kOblique_Slant; break; + default: SkASSERT(false); break; + } return SkFontStyle(weight, width, slant); } @@ -424,9 +428,17 @@ static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) { }; int width = map_ranges(style.width(), widthRanges, SK_ARRAY_COUNT(widthRanges)); + int slant = FC_SLANT_ROMAN; + switch (style.slant()) { + case SkFS::kUpright_Slant: slant = FC_SLANT_ROMAN ; break; + case SkFS::kItalic_Slant : slant = FC_SLANT_ITALIC ; break; + case SkFS::kOblique_Slant: slant = FC_SLANT_OBLIQUE; break; + default: SkASSERT(false); break; + } + FcPatternAddInteger(pattern, FC_WEIGHT, weight); - FcPatternAddInteger(pattern, FC_WIDTH, width); - FcPatternAddInteger(pattern, FC_SLANT, style.isItalic() ? FC_SLANT_ITALIC : FC_SLANT_ROMAN); + FcPatternAddInteger(pattern, FC_WIDTH , width); + FcPatternAddInteger(pattern, FC_SLANT , slant); } } // anonymous namespace |