Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(852)

Side by Side Diff: src/ports/SkFontConfigInterface_direct.cpp

Issue 1921903002: Add oblique as a slant. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Rebase and add test. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698