OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkFontConfigInterface.h" | 8 #include "SkFontConfigInterface.h" |
9 #include "SkFontConfigTypeface.h" | 9 #include "SkFontConfigTypeface.h" |
10 #include "SkFontMgr.h" | 10 #include "SkFontMgr.h" |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 int old_min, int old_max, int new_min, int new_max) { | 161 int old_min, int old_max, int new_min, int new_max) { |
162 SkASSERT(old_min < old_max); | 162 SkASSERT(old_min < old_max); |
163 SkASSERT(new_min < new_max); | 163 SkASSERT(new_min < new_max); |
164 return new_min + SkMulDiv(value - old_min, | 164 return new_min + SkMulDiv(value - old_min, |
165 new_max - new_min, old_max - old_min); | 165 new_max - new_min, old_max - old_min); |
166 } | 166 } |
167 | 167 |
168 static SkFontStyle make_fontconfig_style(FcPattern* match) { | 168 static SkFontStyle make_fontconfig_style(FcPattern* match) { |
169 int weight = get_int(match, FC_WEIGHT); | 169 int weight = get_int(match, FC_WEIGHT); |
170 int width = get_int(match, FC_WIDTH); | 170 int width = get_int(match, FC_WIDTH); |
171 int slant = get_int(match, FC_SLANT); | 171 int fcSlant = get_int(match, FC_SLANT); |
172 // SkDebugf("old weight %d new weight %d\n", weight, map_range(weight, 0, 80,
0, 400)); | |
173 | 172 |
174 // fontconfig weight seems to be 0..200 or so, so we remap it here | 173 // fontconfig weight seems to be 0..200 or so, so we remap it here |
175 weight = map_range(weight, 0, 80, 0, 400); | 174 weight = map_range(weight, 0, 80, 0, 400); |
176 width = map_range(width, 0, 200, 0, 9); | 175 width = map_range(width, 0, 200, 0, 9); |
177 return SkFontStyle(weight, width, slant > 0 ? SkFontStyle::kItalic_Slant | 176 SkFontStyle::Slant skSlant = SkFontStyle::kUpright_Slant; |
178 : SkFontStyle::kUpright_Slant); | 177 switch (fcSlant) { |
| 178 case FC_SLANT_ROMAN: skSlant = SkFontStyle::kUpright_Slant; break; |
| 179 case FC_SLANT_ITALIC : skSlant = SkFontStyle::kItalic_Slant ; break; |
| 180 case FC_SLANT_OBLIQUE: skSlant = SkFontStyle::kOblique_Slant; break; |
| 181 default: SkASSERT(false); break; |
| 182 } |
| 183 return SkFontStyle(weight, width, skSlant); |
179 } | 184 } |
180 | 185 |
181 SkFontStyleSet_FC::SkFontStyleSet_FC(FcPattern** matches, int count) { | 186 SkFontStyleSet_FC::SkFontStyleSet_FC(FcPattern** matches, int count) { |
182 fRecCount = count; | 187 fRecCount = count; |
183 fRecs = new Rec[count]; | 188 fRecs = new Rec[count]; |
184 for (int i = 0; i < count; ++i) { | 189 for (int i = 0; i < count; ++i) { |
185 fRecs[i].fStyleName.set(get_name(matches[i], FC_STYLE)); | 190 fRecs[i].fStyleName.set(get_name(matches[i], FC_STYLE)); |
186 fRecs[i].fFileName.set(get_name(matches[i], FC_FILE)); | 191 fRecs[i].fFileName.set(get_name(matches[i], FC_FILE)); |
187 fRecs[i].fStyle = make_fontconfig_style(matches[i]); | 192 fRecs[i].fStyle = make_fontconfig_style(matches[i]); |
188 } | 193 } |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 SkTypeface* onLegacyCreateTypeface(const char familyName[], SkFontStyle styl
e) const override { | 326 SkTypeface* onLegacyCreateTypeface(const char familyName[], SkFontStyle styl
e) const override { |
322 FCLocker lock; | 327 FCLocker lock; |
323 return FontConfigTypeface::LegacyCreateTypeface(familyName, style); | 328 return FontConfigTypeface::LegacyCreateTypeface(familyName, style); |
324 } | 329 } |
325 }; | 330 }; |
326 | 331 |
327 SkFontMgr* SkFontMgr::Factory() { | 332 SkFontMgr* SkFontMgr::Factory() { |
328 SkFontConfigInterface* fci = RefFCI(); | 333 SkFontConfigInterface* fci = RefFCI(); |
329 return fci ? new SkFontMgr_fontconfig(fci) : nullptr; | 334 return fci ? new SkFontMgr_fontconfig(fci) : nullptr; |
330 } | 335 } |
OLD | NEW |