Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 internal static FontFamilyInternal GetOrCreateFromGdi(GdiFontFamily gdiFontFamily)
 {
     try
     {
         Lock.EnterFontFactory();
         FontFamilyInternal fontFamily = new FontFamilyInternal(gdiFontFamily);
         fontFamily = FontFamilyCache.CacheOrGetFontFamily(fontFamily);
         return(fontFamily);
     }
     finally { Lock.ExitFontFactory(); }
 }
Beispiel #3
0
 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))
         {
             return(existingFontFamily);
         }
         Singleton._familiesByName.Add(fontFamily.Name, fontFamily);
         return(fontFamily);
     }
     finally { Lock.ExitFontFactory(); }
 }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="XFontFamily"/> class from FontFamilyInternal.
 /// </summary>
 XFontFamily(FontFamilyInternal fontFamilyInternal)
 {
     FamilyInternal = fontFamilyInternal;
 }
Beispiel #6
0
 internal XFontFamily(string familyName, bool createPlatformObjects)
 {
     FamilyInternal = FontFamilyInternal.GetOrCreateFromName(familyName, createPlatformObjects);
 }
Beispiel #7
0
 /// <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);
 }
Beispiel #8
0
        internal static XFontFamily GetOrCreateFromWpf(WpfFontFamily wpfFontFamily)
        {
            FontFamilyInternal fontFamilyInternal = FontFamilyInternal.GetOrCreateFromWpf(wpfFontFamily);

            return(new XFontFamily(fontFamilyInternal));
        }
Beispiel #9
0
        internal static XFontFamily GetOrCreateFromGdi(GdiFont font)
        {
            FontFamilyInternal fontFamilyInternal = FontFamilyInternal.GetOrCreateFromGdi(font.FontFamily);

            return(new XFontFamily(fontFamilyInternal));
        }