OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "SkDataTable.h" | 8 #include "SkDataTable.h" |
9 #include "SkFixed.h" | 9 #include "SkFixed.h" |
10 #include "SkFontDescriptor.h" | 10 #include "SkFontDescriptor.h" |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 { SkTFixed<FC_WIDTH_SEMICONDENSED>::value, SkTFixed<SkFS::kSemiCondense
d_Width>::value }, | 338 { SkTFixed<FC_WIDTH_SEMICONDENSED>::value, SkTFixed<SkFS::kSemiCondense
d_Width>::value }, |
339 { SkTFixed<FC_WIDTH_NORMAL>::value, SkTFixed<SkFS::kNormal_Width
>::value }, | 339 { SkTFixed<FC_WIDTH_NORMAL>::value, SkTFixed<SkFS::kNormal_Width
>::value }, |
340 { SkTFixed<FC_WIDTH_SEMIEXPANDED>::value, SkTFixed<SkFS::kSemiExpanded
_Width>::value }, | 340 { SkTFixed<FC_WIDTH_SEMIEXPANDED>::value, SkTFixed<SkFS::kSemiExpanded
_Width>::value }, |
341 { SkTFixed<FC_WIDTH_EXPANDED>::value, SkTFixed<SkFS::kExpanded_Wid
th>::value }, | 341 { SkTFixed<FC_WIDTH_EXPANDED>::value, SkTFixed<SkFS::kExpanded_Wid
th>::value }, |
342 { SkTFixed<FC_WIDTH_EXTRAEXPANDED>::value, SkTFixed<SkFS::kExtraExpande
d_Width>::value }, | 342 { SkTFixed<FC_WIDTH_EXTRAEXPANDED>::value, SkTFixed<SkFS::kExtraExpande
d_Width>::value }, |
343 { SkTFixed<FC_WIDTH_ULTRAEXPANDED>::value, SkTFixed<SkFS::kUltaExpanded
_Width>::value }, | 343 { SkTFixed<FC_WIDTH_ULTRAEXPANDED>::value, SkTFixed<SkFS::kUltaExpanded
_Width>::value }, |
344 }; | 344 }; |
345 int width = map_ranges(get_int(pattern, FC_WIDTH, FC_WIDTH_NORMAL), | 345 int width = map_ranges(get_int(pattern, FC_WIDTH, FC_WIDTH_NORMAL), |
346 widthRanges, SK_ARRAY_COUNT(widthRanges)); | 346 widthRanges, SK_ARRAY_COUNT(widthRanges)); |
347 | 347 |
348 SkFS::Slant slant = get_int(pattern, FC_SLANT, FC_SLANT_ROMAN) > 0 | 348 SkFS::Slant slant = SkFS::kUpright_Slant; |
349 ? SkFS::kItalic_Slant | 349 switch (get_int(pattern, FC_SLANT, FC_SLANT_ROMAN)) { |
350 : SkFS::kUpright_Slant; | 350 case FC_SLANT_ROMAN: slant = SkFS::kUpright_Slant; break; |
| 351 case FC_SLANT_ITALIC : slant = SkFS::kItalic_Slant ; break; |
| 352 case FC_SLANT_OBLIQUE: slant = SkFS::kOblique_Slant; break; |
| 353 default: SkASSERT(false); break; |
| 354 } |
351 | 355 |
352 return SkFontStyle(weight, width, slant); | 356 return SkFontStyle(weight, width, slant); |
353 } | 357 } |
354 | 358 |
355 static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) { | 359 static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) { |
356 FCLocker::AssertHeld(); | 360 FCLocker::AssertHeld(); |
357 | 361 |
358 typedef SkFontStyle SkFS; | 362 typedef SkFontStyle SkFS; |
359 | 363 |
360 static const MapRanges weightRanges[] = { | 364 static const MapRanges weightRanges[] = { |
(...skipping 16 matching lines...) Expand all Loading... |
377 { SkTFixed<SkFS::kCondensed_Width>::value, SkTFixed<FC_WIDTH_CONDEN
SED>::value }, | 381 { SkTFixed<SkFS::kCondensed_Width>::value, SkTFixed<FC_WIDTH_CONDEN
SED>::value }, |
378 { SkTFixed<SkFS::kSemiCondensed_Width>::value, SkTFixed<FC_WIDTH_SEMICO
NDENSED>::value }, | 382 { SkTFixed<SkFS::kSemiCondensed_Width>::value, SkTFixed<FC_WIDTH_SEMICO
NDENSED>::value }, |
379 { SkTFixed<SkFS::kNormal_Width>::value, SkTFixed<FC_WIDTH_NORMAL
>::value }, | 383 { SkTFixed<SkFS::kNormal_Width>::value, SkTFixed<FC_WIDTH_NORMAL
>::value }, |
380 { SkTFixed<SkFS::kSemiExpanded_Width>::value, SkTFixed<FC_WIDTH_SEMIEX
PANDED>::value }, | 384 { SkTFixed<SkFS::kSemiExpanded_Width>::value, SkTFixed<FC_WIDTH_SEMIEX
PANDED>::value }, |
381 { SkTFixed<SkFS::kExpanded_Width>::value, SkTFixed<FC_WIDTH_EXPAND
ED>::value }, | 385 { SkTFixed<SkFS::kExpanded_Width>::value, SkTFixed<FC_WIDTH_EXPAND
ED>::value }, |
382 { SkTFixed<SkFS::kExtraExpanded_Width>::value, SkTFixed<FC_WIDTH_EXTRAE
XPANDED>::value }, | 386 { SkTFixed<SkFS::kExtraExpanded_Width>::value, SkTFixed<FC_WIDTH_EXTRAE
XPANDED>::value }, |
383 { SkTFixed<SkFS::kUltaExpanded_Width>::value, SkTFixed<FC_WIDTH_ULTRAE
XPANDED>::value }, | 387 { SkTFixed<SkFS::kUltaExpanded_Width>::value, SkTFixed<FC_WIDTH_ULTRAE
XPANDED>::value }, |
384 }; | 388 }; |
385 int width = map_ranges(style.width(), widthRanges, SK_ARRAY_COUNT(widthRange
s)); | 389 int width = map_ranges(style.width(), widthRanges, SK_ARRAY_COUNT(widthRange
s)); |
386 | 390 |
| 391 int slant = FC_SLANT_ROMAN; |
| 392 switch (style.slant()) { |
| 393 case SkFS::kUpright_Slant: slant = FC_SLANT_ROMAN ; break; |
| 394 case SkFS::kItalic_Slant : slant = FC_SLANT_ITALIC ; break; |
| 395 case SkFS::kOblique_Slant: slant = FC_SLANT_OBLIQUE; break; |
| 396 default: SkASSERT(false); break; |
| 397 } |
| 398 |
387 FcPatternAddInteger(pattern, FC_WEIGHT, weight); | 399 FcPatternAddInteger(pattern, FC_WEIGHT, weight); |
388 FcPatternAddInteger(pattern, FC_WIDTH, width); | 400 FcPatternAddInteger(pattern, FC_WIDTH , width); |
389 FcPatternAddInteger(pattern, FC_SLANT, style.isItalic() ? FC_SLANT_ITALIC :
FC_SLANT_ROMAN); | 401 FcPatternAddInteger(pattern, FC_SLANT , slant); |
390 } | 402 } |
391 | 403 |
392 class SkTypeface_stream : public SkTypeface_FreeType { | 404 class SkTypeface_stream : public SkTypeface_FreeType { |
393 public: | 405 public: |
394 /** @param data takes ownership of the font data.*/ | 406 /** @param data takes ownership of the font data.*/ |
395 SkTypeface_stream(SkFontData* data, const SkFontStyle& style, bool fixedWidt
h) | 407 SkTypeface_stream(SkFontData* data, const SkFontStyle& style, bool fixedWidt
h) |
396 : INHERITED(style, SkTypefaceCache::NewFontID(), fixedWidth) | 408 : INHERITED(style, SkTypefaceCache::NewFontID(), fixedWidth) |
397 , fData(data) | 409 , fData(data) |
398 { }; | 410 { }; |
399 | 411 |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 return typeface.release(); | 933 return typeface.release(); |
922 } | 934 } |
923 | 935 |
924 return this->matchFamilyStyle(nullptr, style); | 936 return this->matchFamilyStyle(nullptr, style); |
925 } | 937 } |
926 }; | 938 }; |
927 | 939 |
928 SK_API SkFontMgr* SkFontMgr_New_FontConfig(FcConfig* fc) { | 940 SK_API SkFontMgr* SkFontMgr_New_FontConfig(FcConfig* fc) { |
929 return new SkFontMgr_fontconfig(fc); | 941 return new SkFontMgr_fontconfig(fc); |
930 } | 942 } |
OLD | NEW |