OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2009-2015 Google Inc. | 2 * Copyright 2009-2015 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 /* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */ | 8 /* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */ |
9 | 9 |
10 #include "SkBuffer.h" | 10 #include "SkBuffer.h" |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 { SkTFixed<FC_WIDTH_SEMICONDENSED>::value, SkTFixed<SkFS::kSemiCondense
d_Width>::value }, | 380 { SkTFixed<FC_WIDTH_SEMICONDENSED>::value, SkTFixed<SkFS::kSemiCondense
d_Width>::value }, |
381 { SkTFixed<FC_WIDTH_NORMAL>::value, SkTFixed<SkFS::kNormal_Width
>::value }, | 381 { SkTFixed<FC_WIDTH_NORMAL>::value, SkTFixed<SkFS::kNormal_Width
>::value }, |
382 { SkTFixed<FC_WIDTH_SEMIEXPANDED>::value, SkTFixed<SkFS::kSemiExpanded
_Width>::value }, | 382 { SkTFixed<FC_WIDTH_SEMIEXPANDED>::value, SkTFixed<SkFS::kSemiExpanded
_Width>::value }, |
383 { SkTFixed<FC_WIDTH_EXPANDED>::value, SkTFixed<SkFS::kExpanded_Wid
th>::value }, | 383 { SkTFixed<FC_WIDTH_EXPANDED>::value, SkTFixed<SkFS::kExpanded_Wid
th>::value }, |
384 { SkTFixed<FC_WIDTH_EXTRAEXPANDED>::value, SkTFixed<SkFS::kExtraExpande
d_Width>::value }, | 384 { SkTFixed<FC_WIDTH_EXTRAEXPANDED>::value, SkTFixed<SkFS::kExtraExpande
d_Width>::value }, |
385 { SkTFixed<FC_WIDTH_ULTRAEXPANDED>::value, SkTFixed<SkFS::kUltaExpanded
_Width>::value }, | 385 { SkTFixed<FC_WIDTH_ULTRAEXPANDED>::value, SkTFixed<SkFS::kUltaExpanded
_Width>::value }, |
386 }; | 386 }; |
387 int width = map_ranges(get_int(pattern, FC_WIDTH, FC_WIDTH_NORMAL), | 387 int width = map_ranges(get_int(pattern, FC_WIDTH, FC_WIDTH_NORMAL), |
388 widthRanges, SK_ARRAY_COUNT(widthRanges)); | 388 widthRanges, SK_ARRAY_COUNT(widthRanges)); |
389 | 389 |
390 SkFS::Slant slant = get_int(pattern, FC_SLANT, FC_SLANT_ROMAN) > 0 | 390 SkFS::Slant slant = SkFS::kUpright_Slant; |
391 ? SkFS::kItalic_Slant | 391 switch (get_int(pattern, FC_SLANT, FC_SLANT_ROMAN)) { |
392 : SkFS::kUpright_Slant; | 392 case FC_SLANT_ROMAN: slant = SkFS::kUpright_Slant; break; |
| 393 case FC_SLANT_ITALIC : slant = SkFS::kItalic_Slant ; break; |
| 394 case FC_SLANT_OBLIQUE: slant = SkFS::kOblique_Slant; break; |
| 395 default: SkASSERT(false); break; |
| 396 } |
393 | 397 |
394 return SkFontStyle(weight, width, slant); | 398 return SkFontStyle(weight, width, slant); |
395 } | 399 } |
396 | 400 |
397 static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) { | 401 static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) { |
398 typedef SkFontStyle SkFS; | 402 typedef SkFontStyle SkFS; |
399 | 403 |
400 static const MapRanges weightRanges[] = { | 404 static const MapRanges weightRanges[] = { |
401 { SkTFixed<SkFS::kThin_Weight>::value, SkTFixed<FC_WEIGHT_THIN>::v
alue }, | 405 { SkTFixed<SkFS::kThin_Weight>::value, SkTFixed<FC_WEIGHT_THIN>::v
alue }, |
402 { SkTFixed<SkFS::kExtraLight_Weight>::value, SkTFixed<FC_WEIGHT_EXTRALIG
HT>::value }, | 406 { SkTFixed<SkFS::kExtraLight_Weight>::value, SkTFixed<FC_WEIGHT_EXTRALIG
HT>::value }, |
(...skipping 14 matching lines...) Expand all Loading... |
417 { SkTFixed<SkFS::kCondensed_Width>::value, SkTFixed<FC_WIDTH_CONDEN
SED>::value }, | 421 { SkTFixed<SkFS::kCondensed_Width>::value, SkTFixed<FC_WIDTH_CONDEN
SED>::value }, |
418 { SkTFixed<SkFS::kSemiCondensed_Width>::value, SkTFixed<FC_WIDTH_SEMICO
NDENSED>::value }, | 422 { SkTFixed<SkFS::kSemiCondensed_Width>::value, SkTFixed<FC_WIDTH_SEMICO
NDENSED>::value }, |
419 { SkTFixed<SkFS::kNormal_Width>::value, SkTFixed<FC_WIDTH_NORMAL
>::value }, | 423 { SkTFixed<SkFS::kNormal_Width>::value, SkTFixed<FC_WIDTH_NORMAL
>::value }, |
420 { SkTFixed<SkFS::kSemiExpanded_Width>::value, SkTFixed<FC_WIDTH_SEMIEX
PANDED>::value }, | 424 { SkTFixed<SkFS::kSemiExpanded_Width>::value, SkTFixed<FC_WIDTH_SEMIEX
PANDED>::value }, |
421 { SkTFixed<SkFS::kExpanded_Width>::value, SkTFixed<FC_WIDTH_EXPAND
ED>::value }, | 425 { SkTFixed<SkFS::kExpanded_Width>::value, SkTFixed<FC_WIDTH_EXPAND
ED>::value }, |
422 { SkTFixed<SkFS::kExtraExpanded_Width>::value, SkTFixed<FC_WIDTH_EXTRAE
XPANDED>::value }, | 426 { SkTFixed<SkFS::kExtraExpanded_Width>::value, SkTFixed<FC_WIDTH_EXTRAE
XPANDED>::value }, |
423 { SkTFixed<SkFS::kUltaExpanded_Width>::value, SkTFixed<FC_WIDTH_ULTRAE
XPANDED>::value }, | 427 { SkTFixed<SkFS::kUltaExpanded_Width>::value, SkTFixed<FC_WIDTH_ULTRAE
XPANDED>::value }, |
424 }; | 428 }; |
425 int width = map_ranges(style.width(), widthRanges, SK_ARRAY_COUNT(widthRange
s)); | 429 int width = map_ranges(style.width(), widthRanges, SK_ARRAY_COUNT(widthRange
s)); |
426 | 430 |
| 431 int slant = FC_SLANT_ROMAN; |
| 432 switch (style.slant()) { |
| 433 case SkFS::kUpright_Slant: slant = FC_SLANT_ROMAN ; break; |
| 434 case SkFS::kItalic_Slant : slant = FC_SLANT_ITALIC ; break; |
| 435 case SkFS::kOblique_Slant: slant = FC_SLANT_OBLIQUE; break; |
| 436 default: SkASSERT(false); break; |
| 437 } |
| 438 |
427 FcPatternAddInteger(pattern, FC_WEIGHT, weight); | 439 FcPatternAddInteger(pattern, FC_WEIGHT, weight); |
428 FcPatternAddInteger(pattern, FC_WIDTH, width); | 440 FcPatternAddInteger(pattern, FC_WIDTH , width); |
429 FcPatternAddInteger(pattern, FC_SLANT, style.isItalic() ? FC_SLANT_ITALIC :
FC_SLANT_ROMAN); | 441 FcPatternAddInteger(pattern, FC_SLANT , slant); |
430 } | 442 } |
431 | 443 |
432 } // anonymous namespace | 444 } // anonymous namespace |
433 | 445 |
434 /////////////////////////////////////////////////////////////////////////////// | 446 /////////////////////////////////////////////////////////////////////////////// |
435 | 447 |
436 #define kMaxFontFamilyLength 2048 | 448 #define kMaxFontFamilyLength 2048 |
437 | 449 |
438 SkFontConfigInterfaceDirect::SkFontConfigInterfaceDirect() { | 450 SkFontConfigInterfaceDirect::SkFontConfigInterfaceDirect() { |
439 SkAutoMutexAcquire ac(mutex_); | 451 SkAutoMutexAcquire ac(mutex_); |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 const char* famName = get_name(match, FC_FAMILY); | 676 const char* famName = get_name(match, FC_FAMILY); |
665 if (famName && !find_name(names, famName)) { | 677 if (famName && !find_name(names, famName)) { |
666 *names.append() = famName; | 678 *names.append() = famName; |
667 *sizes.append() = strlen(famName) + 1; | 679 *sizes.append() = strlen(famName) + 1; |
668 } | 680 } |
669 } | 681 } |
670 | 682 |
671 return SkDataTable::NewCopyArrays((const void*const*)names.begin(), | 683 return SkDataTable::NewCopyArrays((const void*const*)names.begin(), |
672 sizes.begin(), names.count()); | 684 sizes.begin(), names.count()); |
673 } | 685 } |
OLD | NEW |