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

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

Issue 685803003: Revert of Extend SkFontMgr_Custom to cover ttc, otf, pfb. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « src/ports/SkFontHost_linux.cpp ('k') | src/ports/SkFontMgr_fontconfig.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "SkFontConfigParser_android.h" 8 #include "SkFontConfigParser_android.h"
9 #include "SkFontDescriptor.h" 9 #include "SkFontDescriptor.h"
10 #include "SkFontHost_FreeType_common.h" 10 #include "SkFontHost_FreeType_common.h"
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 full->set(basePath); 131 full->set(basePath);
132 } else { 132 } else {
133 full->set(getenv("ANDROID_ROOT")); 133 full->set(getenv("ANDROID_ROOT"));
134 full->append(SK_FONT_FILE_PREFIX); 134 full->append(SK_FONT_FILE_PREFIX);
135 } 135 }
136 full->append(name); 136 full->append(name);
137 } 137 }
138 138
139 class SkFontStyleSet_Android : public SkFontStyleSet { 139 class SkFontStyleSet_Android : public SkFontStyleSet {
140 public: 140 public:
141 explicit SkFontStyleSet_Android(const FontFamily& family, const char* basePa th, 141 explicit SkFontStyleSet_Android(const FontFamily& family, const char* basePa th) {
142 const SkTypeface_FreeType::Scanner& scanner)
143 {
144 const SkString* cannonicalFamilyName = NULL; 142 const SkString* cannonicalFamilyName = NULL;
145 if (family.fNames.count() > 0) { 143 if (family.fNames.count() > 0) {
146 cannonicalFamilyName = &family.fNames[0]; 144 cannonicalFamilyName = &family.fNames[0];
147 } 145 }
148 // TODO? make this lazy 146 // TODO? make this lazy
149 for (int i = 0; i < family.fFonts.count(); ++i) { 147 for (int i = 0; i < family.fFonts.count(); ++i) {
150 const FontFileInfo& fontFile = family.fFonts[i]; 148 const FontFileInfo& fontFile = family.fFonts[i];
151 149
152 SkString pathName; 150 SkString pathName;
153 get_path_for_sys_fonts(basePath, fontFile.fFileName, &pathName); 151 get_path_for_sys_fonts(basePath, fontFile.fFileName, &pathName);
154 152
155 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(pathName.c_str() )); 153 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(pathName.c_str() ));
156 if (!stream.get()) { 154 if (!stream.get()) {
157 DEBUG_FONT(("---- SystemFonts[%d] file=%s (NOT EXIST)", i, pathN ame.c_str())); 155 DEBUG_FONT(("---- SystemFonts[%d] file=%s (NOT EXIST)", i, pathN ame.c_str()));
158 continue; 156 continue;
159 } 157 }
160 158
161 const int ttcIndex = fontFile.fIndex; 159 const int ttcIndex = fontFile.fIndex;
162 SkString familyName; 160 SkString familyName;
163 SkFontStyle style; 161 SkFontStyle style;
164 bool isFixedWidth; 162 bool isFixedWidth;
165 if (!scanner.scanFont(stream.get(), ttcIndex, &familyName, &style, & isFixedWidth)) { 163 if (!SkTypeface_FreeType::ScanFont(stream.get(), ttcIndex,
164 &familyName, &style, &isFixedWidt h)) {
166 DEBUG_FONT(("---- SystemFonts[%d] file=%s (INVALID)", i, pathNam e.c_str())); 165 DEBUG_FONT(("---- SystemFonts[%d] file=%s (INVALID)", i, pathNam e.c_str()));
167 continue; 166 continue;
168 } 167 }
169 168
170 const SkLanguage& lang = family.fLanguage; 169 const SkLanguage& lang = family.fLanguage;
171 uint32_t variant = family.fVariant; 170 uint32_t variant = family.fVariant;
172 if (kDefault_FontVariant == variant) { 171 if (kDefault_FontVariant == variant) {
173 variant = kCompact_FontVariant | kElegant_FontVariant; 172 variant = kCompact_FontVariant | kElegant_FontVariant;
174 } 173 }
175 174
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 428
430 virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERRIDE { 429 virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERRIDE {
431 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path)); 430 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path));
432 return stream.get() ? this->createFromStream(stream, ttcIndex) : NULL; 431 return stream.get() ? this->createFromStream(stream, ttcIndex) : NULL;
433 } 432 }
434 433
435 virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVERRIDE { 434 virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVERRIDE {
436 bool isFixedPitch; 435 bool isFixedPitch;
437 SkFontStyle style; 436 SkFontStyle style;
438 SkString name; 437 SkString name;
439 if (!fScanner.scanFont(stream, ttcIndex, &name, &style, &isFixedPitch)) { 438 if (!SkTypeface_FreeType::ScanFont(stream, ttcIndex, &name, &style, &isF ixedPitch)) {
440 return NULL; 439 return NULL;
441 } 440 }
442 return SkNEW_ARGS(SkTypeface_AndroidStream, (stream, ttcIndex, 441 return SkNEW_ARGS(SkTypeface_AndroidStream, (stream, ttcIndex,
443 style, isFixedPitch, name)) ; 442 style, isFixedPitch, name)) ;
444 } 443 }
445 444
446 445
447 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], 446 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
448 unsigned styleBits) const SK_OVER RIDE { 447 unsigned styleBits) const SK_OVER RIDE {
449 SkFontStyle style = SkFontStyle(styleBits); 448 SkFontStyle style = SkFontStyle(styleBits);
450 449
451 if (familyName) { 450 if (familyName) {
452 // On Android, we must return NULL when we can't find the requested 451 // On Android, we must return NULL when we can't find the requested
453 // named typeface so that the system/app can provide their own recov ery 452 // named typeface so that the system/app can provide their own recov ery
454 // mechanism. On other platforms we'd provide a typeface from the 453 // mechanism. On other platforms we'd provide a typeface from the
455 // default family instead. 454 // default family instead.
456 return this->onMatchFamilyStyle(familyName, style); 455 return this->onMatchFamilyStyle(familyName, style);
457 } 456 }
458 return fDefaultFamily->matchStyle(style); 457 return fDefaultFamily->matchStyle(style);
459 } 458 }
460 459
461 460
462 private: 461 private:
463 462
464 SkTypeface_FreeType::Scanner fScanner;
465
466 SkTArray<SkAutoTUnref<SkFontStyleSet_Android>, true> fFontStyleSets; 463 SkTArray<SkAutoTUnref<SkFontStyleSet_Android>, true> fFontStyleSets;
467 SkFontStyleSet* fDefaultFamily; 464 SkFontStyleSet* fDefaultFamily;
468 SkTypeface* fDefaultTypeface; 465 SkTypeface* fDefaultTypeface;
469 466
470 SkTDArray<NameToFamily> fNameToFamilyMap; 467 SkTDArray<NameToFamily> fNameToFamilyMap;
471 SkTDArray<NameToFamily> fFallbackNameToFamilyMap; 468 SkTDArray<NameToFamily> fFallbackNameToFamilyMap;
472 469
473 void buildNameToFamilyMap(SkTDArray<FontFamily*> families, const char* baseP ath) { 470 void buildNameToFamilyMap(SkTDArray<FontFamily*> families, const char* baseP ath) {
474 for (int i = 0; i < families.count(); i++) { 471 for (int i = 0; i < families.count(); i++) {
475 FontFamily& family = *families[i]; 472 FontFamily& family = *families[i];
476 473
477 SkTDArray<NameToFamily>* nameToFamily = &fNameToFamilyMap; 474 SkTDArray<NameToFamily>* nameToFamily = &fNameToFamilyMap;
478 if (family.fIsFallbackFont) { 475 if (family.fIsFallbackFont) {
479 nameToFamily = &fFallbackNameToFamilyMap; 476 nameToFamily = &fFallbackNameToFamilyMap;
480 477
481 if (0 == family.fNames.count()) { 478 if (0 == family.fNames.count()) {
482 SkString& fallbackName = family.fNames.push_back(); 479 SkString& fallbackName = family.fNames.push_back();
483 fallbackName.printf("%.2x##fallback", i); 480 fallbackName.printf("%.2x##fallback", i);
484 } 481 }
485 } 482 }
486 483
487 SkFontStyleSet_Android* newSet = 484 SkFontStyleSet_Android* newSet = SkNEW_ARGS(SkFontStyleSet_Android, (family, basePath));
488 SkNEW_ARGS(SkFontStyleSet_Android, (family, basePath, fScanner)) ;
489 if (0 == newSet->count()) { 485 if (0 == newSet->count()) {
490 SkDELETE(newSet); 486 SkDELETE(newSet);
491 continue; 487 continue;
492 } 488 }
493 fFontStyleSets.push_back().reset(newSet); 489 fFontStyleSets.push_back().reset(newSet);
494 490
495 for (int j = 0; j < family.fNames.count(); j++) { 491 for (int j = 0; j < family.fNames.count(); j++) {
496 NameToFamily* nextEntry = nameToFamily->append(); 492 NameToFamily* nextEntry = nameToFamily->append();
497 SkNEW_PLACEMENT_ARGS(&nextEntry->name, SkString, (family.fNames[ j])); 493 SkNEW_PLACEMENT_ARGS(&nextEntry->name, SkString, (family.fNames[ j]));
498 nextEntry->styleSet = newSet; 494 nextEntry->styleSet = newSet;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 SkDEBUGF(("Use Test Config File Main %s, Fallback %s, Font Dir %s", 552 SkDEBUGF(("Use Test Config File Main %s, Fallback %s, Font Dir %s",
557 gTestMainConfigFile, gTestFallbackConfigFile, gTestFontFilePrefix) ); 553 gTestMainConfigFile, gTestFallbackConfigFile, gTestFontFilePrefix) );
558 } 554 }
559 555
560 void SkGetTestFontConfiguration(const char** mainconf, const char** fallbackconf , 556 void SkGetTestFontConfiguration(const char** mainconf, const char** fallbackconf ,
561 const char** fontsdir) { 557 const char** fontsdir) {
562 *mainconf = gTestMainConfigFile; 558 *mainconf = gTestMainConfigFile;
563 *fallbackconf = gTestFallbackConfigFile; 559 *fallbackconf = gTestFallbackConfigFile;
564 *fontsdir = gTestFontFilePrefix; 560 *fontsdir = gTestFontFilePrefix;
565 } 561 }
OLDNEW
« no previous file with comments | « src/ports/SkFontHost_linux.cpp ('k') | src/ports/SkFontMgr_fontconfig.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698