/// <summary> /// An XGlyphTypeface for a font souce that comes from a custom font resolver /// creates a solitary font family exclusively for it. /// </summary> internal static XFontFamily CreateSolitary(string name) { // Custom font resolver face names must not clash with platform family names. FontFamilyInternal fontFamilyInternal = FontFamilyCache.GetFamilyByName(name); if (fontFamilyInternal == null) { fontFamilyInternal = FontFamilyInternal.GetOrCreateFromName(name, false); fontFamilyInternal = FontFamilyCache.CacheOrGetFontFamily(fontFamilyInternal); } // Create font family and save it in cache. Do not try to create platform objects. return(new XFontFamily(fontFamilyInternal)); //// Custom font resolver face names must not clash with platform family names. //if (FontFamilyCache.GetFamilyByName(name) != null) //{ // // User must rename its font face to resolve naming confilict. // throw new InvalidOperationException(String.Format("Font face name {0} clashs with existing family name.", name)); //} //// Create font family and save it in cache. Do not try to create platform objects. //FontFamilyInternal fontFamilyInternal = FontFamilyInternal.GetOrCreateFromName(name, false); //fontFamilyInternal = FontFamilyCache.CacheFontFamily(fontFamilyInternal); //return new XFontFamily(fontFamilyInternal); }
internal static FontFamilyInternal GetOrCreateFromWpf(WpfFontFamily wpfFontFamily) { FontFamilyInternal fontFamily = new FontFamilyInternal(wpfFontFamily); fontFamily = FontFamilyCache.CacheOrGetFontFamily(fontFamily); return(fontFamily); }
internal static FontFamilyInternal GetOrCreateFromGdi(GdiFontFamily gdiFontFamily) { try { Lock.EnterFontFactory(); FontFamilyInternal fontFamily = new FontFamilyInternal(gdiFontFamily); fontFamily = FontFamilyCache.CacheOrGetFontFamily(fontFamily); return(fontFamily); } finally { Lock.ExitFontFactory(); } }
internal static FontFamilyInternal GetOrCreateFromName(string familyName, bool createPlatformObject) { try { Lock.EnterFontFactory(); FontFamilyInternal family = FontFamilyCache.GetFamilyByName(familyName); if (family == null) { family = new FontFamilyInternal(familyName, createPlatformObject); family = FontFamilyCache.CacheOrGetFontFamily(family); } return(family); } finally { Lock.ExitFontFactory(); } }
/// <summary> /// Caches the font family or returns a previously cached one. /// </summary> public static FontFamilyInternal CacheOrGetFontFamily(FontFamilyInternal fontFamily) { try { Lock.EnterFontFactory(); // Recall that a font family is uniquely identified by its case insensitive name. FontFamilyInternal existingFontFamily; if (Singleton._familiesByName.TryGetValue(fontFamily.Name, out existingFontFamily)) { #if DEBUG_ if (fontFamily.Name == "xxx") { fontFamily.GetType(); } #endif return(existingFontFamily); } Singleton._familiesByName.Add(fontFamily.Name, fontFamily); return(fontFamily); } finally { Lock.ExitFontFactory(); } }
/// <summary> /// Initializes a new instance of the <see cref="XFontFamily"/> class from FontFamilyInternal. /// </summary> XFontFamily(FontFamilyInternal fontFamilyInternal) { FamilyInternal = fontFamilyInternal; }
internal XFontFamily(string familyName, bool createPlatformObjects) { FamilyInternal = FontFamilyInternal.GetOrCreateFromName(familyName, createPlatformObjects); }
/// <summary> /// Initializes a new instance of the <see cref="XFontFamily"/> class. /// </summary> /// <param name="familyName">The family name of a font.</param> public XFontFamily(string familyName) { FamilyInternal = FontFamilyInternal.GetOrCreateFromName(familyName, true); }
internal static XFontFamily GetOrCreateFromWpf(WpfFontFamily wpfFontFamily) { FontFamilyInternal fontFamilyInternal = FontFamilyInternal.GetOrCreateFromWpf(wpfFontFamily); return(new XFontFamily(fontFamilyInternal)); }
internal static XFontFamily GetOrCreateFromGdi(GdiFont font) { FontFamilyInternal fontFamilyInternal = FontFamilyInternal.GetOrCreateFromGdi(font.FontFamily); return(new XFontFamily(fontFamilyInternal)); }