1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkTypeface_win_DEFINED 9 #define SkTypeface_win_DEFINED 10 11 #include "SkTypeface.h" 12 13 /** 14 * Like the other Typeface create methods, this returns a new reference to the 15 * corresponding typeface for the specified logfont. The caller is responsible 16 * for calling unref() when it is finished. 17 */ 18 SK_API SkTypeface* SkCreateTypefaceFromLOGFONT(const LOGFONT&); 19 20 /** 21 * Copy the LOGFONT associated with this typeface into the lf parameter. Note 22 * that the lfHeight will need to be set afterwards, since the typeface does 23 * not track this (the paint does). 24 * typeface may be NULL, in which case we return the logfont for the default font. 25 */ 26 SK_API void SkLOGFONTFromTypeface(const SkTypeface* typeface, LOGFONT* lf); 27 28 /** 29 * Set an optional callback to ensure that the data behind a LOGFONT is loaded. 30 * This will get called if Skia tries to access the data but hits a failure. 31 * Normally this is null, and is only required if the font data needs to be 32 * remotely (re)loaded. 33 */ 34 SK_API void SkTypeface_SetEnsureLOGFONTAccessibleProc(void (*)(const LOGFONT&)); 35 36 // Experimental! 37 // 38 class SkFontMgr; 39 class SkRemotableFontMgr; 40 struct IDWriteFactory; 41 42 SK_API SkFontMgr* SkFontMgr_New_GDI(); 43 SK_API SkFontMgr* SkFontMgr_New_DirectWrite(IDWriteFactory* factory = NULL); 44 45 /** 46 * Creates an SkFontMgr which renders using DirectWrite and obtains its data 47 * from the SkRemotableFontMgr. 48 * 49 * If DirectWrite could not be initialized, will return NULL. 50 */ 51 SK_API SkFontMgr* SkFontMgr_New_DirectWriteRenderer(SkRemotableFontMgr*); 52 53 /** 54 * Creates an SkRemotableFontMgr backed by DirectWrite using the default 55 * system font collection in the current locale. 56 * 57 * If DirectWrite could not be initialized, will return NULL. 58 */ 59 SK_API SkRemotableFontMgr* SkRemotableFontMgr_New_DirectWrite(); 60 61 #endif 62