1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2015 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkFontMgr_android_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define SkFontMgr_android_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker #include <memory> 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker class SkFontMgr; 16*c8dee2aaSAndroid Build Coastguard Worker class SkFontScanner; 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker struct SkFontMgr_Android_CustomFonts { 19*c8dee2aaSAndroid Build Coastguard Worker /** When specifying custom fonts, indicates how to use system fonts. */ 20*c8dee2aaSAndroid Build Coastguard Worker enum SystemFontUse { 21*c8dee2aaSAndroid Build Coastguard Worker kOnlyCustom, /** Use only custom fonts. NDK compliant. */ 22*c8dee2aaSAndroid Build Coastguard Worker kPreferCustom, /** Use custom fonts before system fonts. */ 23*c8dee2aaSAndroid Build Coastguard Worker kPreferSystem /** Use system fonts before custom fonts. */ 24*c8dee2aaSAndroid Build Coastguard Worker }; 25*c8dee2aaSAndroid Build Coastguard Worker /** Whether or not to use system fonts. */ 26*c8dee2aaSAndroid Build Coastguard Worker SystemFontUse fSystemFontUse; 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard Worker /** Base path to resolve relative font file names. If a directory, should end with '/'. */ 29*c8dee2aaSAndroid Build Coastguard Worker const char* fBasePath; 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker /** Optional custom configuration file to use. */ 32*c8dee2aaSAndroid Build Coastguard Worker const char* fFontsXml; 33*c8dee2aaSAndroid Build Coastguard Worker 34*c8dee2aaSAndroid Build Coastguard Worker /** Optional custom configuration file for fonts which provide fallback. 35*c8dee2aaSAndroid Build Coastguard Worker * In the new style (version > 21) fontsXml format is used, this should be NULL. 36*c8dee2aaSAndroid Build Coastguard Worker */ 37*c8dee2aaSAndroid Build Coastguard Worker const char* fFallbackFontsXml; 38*c8dee2aaSAndroid Build Coastguard Worker 39*c8dee2aaSAndroid Build Coastguard Worker /** Optional custom flag. If set to true the SkFontMgr will acquire all requisite 40*c8dee2aaSAndroid Build Coastguard Worker * system IO resources on initialization. 41*c8dee2aaSAndroid Build Coastguard Worker */ 42*c8dee2aaSAndroid Build Coastguard Worker bool fIsolated; 43*c8dee2aaSAndroid Build Coastguard Worker }; 44*c8dee2aaSAndroid Build Coastguard Worker 45*c8dee2aaSAndroid Build Coastguard Worker /** Create a font manager for Android. If 'custom' is NULL, use only system fonts. */ 46*c8dee2aaSAndroid Build Coastguard Worker 47*c8dee2aaSAndroid Build Coastguard Worker // Deprecated 48*c8dee2aaSAndroid Build Coastguard Worker SK_API sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom); 49*c8dee2aaSAndroid Build Coastguard Worker 50*c8dee2aaSAndroid Build Coastguard Worker SK_API sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom, 51*c8dee2aaSAndroid Build Coastguard Worker std::unique_ptr<SkFontScanner> scanner); 52*c8dee2aaSAndroid Build Coastguard Worker #endif // SkFontMgr_android_DEFINED 53