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 "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" |
11 #include "SkFontMgr.h" | 11 #include "SkFontMgr.h" |
12 #include "SkFontMgr_android.h" | 12 #include "SkFontMgr_android.h" |
13 #include "SkFontStyle.h" | 13 #include "SkFontStyle.h" |
14 #include "SkStream.h" | 14 #include "SkStream.h" |
15 #include "SkTDArray.h" | 15 #include "SkTDArray.h" |
16 #include "SkTSearch.h" | 16 #include "SkTSearch.h" |
17 #include "SkTypeface.h" | 17 #include "SkTypeface.h" |
18 #include "SkTypeface_android.h" | |
19 #include "SkTypefaceCache.h" | 18 #include "SkTypefaceCache.h" |
20 | 19 |
21 #include <limits> | 20 #include <limits> |
22 | 21 |
23 // For test only. | |
24 static const char* gTestFontsXml = NULL; | |
25 static const char* gTestFallbackFontsXml = NULL; | |
26 static const char* gTestBasePath = NULL; | |
27 | |
28 class SkTypeface_Android : public SkTypeface_FreeType { | 22 class SkTypeface_Android : public SkTypeface_FreeType { |
29 public: | 23 public: |
30 SkTypeface_Android(const SkFontStyle& style, | 24 SkTypeface_Android(const SkFontStyle& style, |
31 bool isFixedPitch, | 25 bool isFixedPitch, |
32 const SkString& familyName) | 26 const SkString& familyName) |
33 : INHERITED(style, SkTypefaceCache::NewFontID(), isFixedPitch) | 27 : INHERITED(style, SkTypefaceCache::NewFontID(), isFixedPitch) |
34 , fFamilyName(familyName) | 28 , fFamilyName(familyName) |
35 { } | 29 { } |
36 | 30 |
37 protected: | 31 protected: |
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 fDefaultFamily = fFontStyleSets[0]; | 561 fDefaultFamily = fFontStyleSets[0]; |
568 fDefaultTypeface = fDefaultFamily->createTypeface(0); | 562 fDefaultTypeface = fDefaultFamily->createTypeface(0); |
569 } | 563 } |
570 SkASSERT(fDefaultFamily); | 564 SkASSERT(fDefaultFamily); |
571 SkASSERT(fDefaultTypeface); | 565 SkASSERT(fDefaultTypeface); |
572 } | 566 } |
573 | 567 |
574 typedef SkFontMgr INHERITED; | 568 typedef SkFontMgr INHERITED; |
575 }; | 569 }; |
576 | 570 |
577 /////////////////////////////////////////////////////////////////////////////// | |
578 #ifdef SK_DEBUG | 571 #ifdef SK_DEBUG |
579 static char const * const gSystemFontUseStrings[] = { | 572 static char const * const gSystemFontUseStrings[] = { |
580 "OnlyCustom", "PreferCustom", "PreferSystem" | 573 "OnlyCustom", "PreferCustom", "PreferSystem" |
581 }; | 574 }; |
582 #endif | 575 #endif |
583 SkFontMgr* SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom) { | 576 SkFontMgr* SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom) { |
584 if (custom) { | 577 if (custom) { |
585 SkASSERT(0 <= custom->fSystemFontUse); | 578 SkASSERT(0 <= custom->fSystemFontUse); |
586 SkASSERT(custom->fSystemFontUse < SK_ARRAY_COUNT(gSystemFontUseStrings))
; | 579 SkASSERT(custom->fSystemFontUse < SK_ARRAY_COUNT(gSystemFontUseStrings))
; |
587 SkDEBUGF(("SystemFontUse: %s BasePath: %s Fonts: %s FallbackFonts: %s\n"
, | 580 SkDEBUGF(("SystemFontUse: %s BasePath: %s Fonts: %s FallbackFonts: %s\n"
, |
588 gSystemFontUseStrings[custom->fSystemFontUse], | 581 gSystemFontUseStrings[custom->fSystemFontUse], |
589 custom->fBasePath, | 582 custom->fBasePath, |
590 custom->fFontsXml, | 583 custom->fFontsXml, |
591 custom->fFallbackFontsXml)); | 584 custom->fFallbackFontsXml)); |
592 } | 585 } |
593 | 586 |
594 return SkNEW_ARGS(SkFontMgr_Android, (custom)); | 587 return SkNEW_ARGS(SkFontMgr_Android, (custom)); |
595 } | 588 } |
596 | |
597 SkFontMgr* SkFontMgr::Factory() { | |
598 // These globals exist so that Chromium can override the environment. | |
599 // TODO: these globals need to be removed, and Chromium use SkFontMgr_New_An
droid instead. | |
600 if ((gTestFontsXml || gTestFallbackFontsXml) && gTestBasePath) { | |
601 SkFontMgr_Android_CustomFonts custom = { | |
602 SkFontMgr_Android_CustomFonts::kOnlyCustom, | |
603 gTestBasePath, | |
604 gTestFontsXml, | |
605 gTestFallbackFontsXml | |
606 }; | |
607 return SkFontMgr_New_Android(&custom); | |
608 } | |
609 | |
610 return SkFontMgr_New_Android(NULL); | |
611 } | |
612 | |
613 void SkUseTestFontConfigFile(const char* fontsXml, const char* fallbackFontsXml, | |
614 const char* basePath) | |
615 { | |
616 gTestFontsXml = fontsXml; | |
617 gTestFallbackFontsXml = fallbackFontsXml; | |
618 gTestBasePath = basePath; | |
619 SkASSERT(gTestFontsXml); | |
620 SkASSERT(gTestFallbackFontsXml); | |
621 SkASSERT(gTestBasePath); | |
622 SkDEBUGF(("Test BasePath: %s Fonts: %s FallbackFonts: %s\n", | |
623 gTestBasePath, gTestFontsXml, gTestFallbackFontsXml)); | |
624 } | |
OLD | NEW |