Exemple #1
0
 private static void EnsureSystemFontCache()
 {
     if (FontResolver.gdiFontFamilyToFontFileMap != null)
     {
         return;
     }
     FontResolver.gdiFontFamilyToFontFileMap = new Dictionary <string, List <string> >();
     FontResolver.wpfFontFamilyToFontFileMap = new Dictionary <string, List <string> >();
     foreach (string str in Directory.GetFiles(FontEmbedder.SystemFontsDirectory))
     {
         foreach (Typeface typeface in (IEnumerable <Typeface>)FontEmbedder.GetTypefacesSafe(str))
         {
             bool   useGdiFontNames1         = true;
             string serializeFontFamilyName1 = FontEmbedder.GetSerializeFontFamilyName(typeface, useGdiFontNames1);
             bool   useGdiFontNames2         = false;
             string serializeFontFamilyName2 = FontEmbedder.GetSerializeFontFamilyName(typeface, useGdiFontNames2);
             FontResolver.StoreSystemFont(FontResolver.gdiFontFamilyToFontFileMap, serializeFontFamilyName1, str);
             FontResolver.StoreSystemFont(FontResolver.wpfFontFamilyToFontFileMap, serializeFontFamilyName2, str);
             if (serializeFontFamilyName1 != serializeFontFamilyName2)
             {
                 FontResolver.gdiToWpfSystemFontNameMap[serializeFontFamilyName1] = serializeFontFamilyName2;
                 FontResolver.wpfToGdiSystemFontNameMap[serializeFontFamilyName2] = serializeFontFamilyName1;
             }
         }
     }
 }
Exemple #2
0
 private static void AddFontFileToCache(string fontFile, Dictionary <string, List <KeyValuePair <Typeface, string> > > cache, bool useGdiFontNames, Dictionary <string, string> gdiFontNameMap, Dictionary <string, string> wpfFontNameMap)
 {
     foreach (string str in FontEmbedder.GetFontNamesInFile(fontFile, useGdiFontNames))
     {
         string     index      = FontFamilyHelper.EnsureFamilyName(str);
         FontFamily fontFamily = new FontFamily(fontFile + "#" + index);
         List <KeyValuePair <Typeface, string> > list;
         if (!cache.TryGetValue(str, out list))
         {
             list         = new List <KeyValuePair <Typeface, string> >();
             cache[index] = list;
         }
         foreach (Typeface key in (IEnumerable <Typeface>)FontEmbedder.GetTypefacesSafe(fontFile))
         {
             list.Add(new KeyValuePair <Typeface, string>(key, fontFamily.Source));
         }
     }
     if (gdiFontNameMap == null)
     {
         return;
     }
     foreach (Typeface typeface in (IEnumerable <Typeface>)FontEmbedder.GetTypefacesSafe(fontFile))
     {
         bool   useGdiFontNames1         = true;
         string serializeFontFamilyName1 = FontEmbedder.GetSerializeFontFamilyName(typeface, useGdiFontNames1);
         bool   useGdiFontNames2         = false;
         string serializeFontFamilyName2 = FontEmbedder.GetSerializeFontFamilyName(typeface, useGdiFontNames2);
         if (serializeFontFamilyName1 != serializeFontFamilyName2 && !string.IsNullOrEmpty(serializeFontFamilyName1) && !string.IsNullOrEmpty(serializeFontFamilyName2))
         {
             gdiFontNameMap[serializeFontFamilyName1] = serializeFontFamilyName2;
             wpfFontNameMap[serializeFontFamilyName2] = serializeFontFamilyName1;
         }
     }
 }
Exemple #3
0
 public static IEnumerable <string> GetFontNamesInFile(string fontFile, bool useGdiFontNames)
 {
     foreach (FontFamily fontFamily in (IEnumerable <FontFamily>)FontEmbedder.GetFontFamiliesSafe(fontFile))
     {
         yield return(FontEmbedder.GetSerializeFontFamilyName(fontFamily, useGdiFontNames));
     }
 }
Exemple #4
0
        public static string GetSerializeFontFamilyName(FontFamily fontFamily, bool useGdiFontNames)
        {
            Typeface typeface = Enumerable.FirstOrDefault <Typeface>((IEnumerable <Typeface>)fontFamily.GetTypefaces());

            if (typeface != null)
            {
                return(FontEmbedder.GetSerializeFontFamilyName(typeface, useGdiFontNames));
            }
            return(string.Empty);
        }
Exemple #5
0
        private static void StoreFontLookup(Dictionary <string, List <KeyValuePair <Typeface, string> > > fontFamilyLookup, Dictionary <string, List <string> > fontFamilyToFontFileMap, string fontSource, bool useGdiFontNames)
        {
            if (fontFamilyLookup.ContainsKey(fontSource))
            {
                return;
            }
            string        serializeFontFamilyName = FontEmbedder.GetSerializeFontFamilyName(new FontFamily(fontSource), useGdiFontNames);
            List <string> list;

            if (!fontFamilyToFontFileMap.TryGetValue(serializeFontFamilyName, out list))
            {
                return;
            }
            foreach (string fontFile in list)
            {
                FontResolver.AddFontFileToCache(fontFile, fontFamilyLookup, useGdiFontNames, (Dictionary <string, string>)null, (Dictionary <string, string>)null);
            }
        }
Exemple #6
0
        private static void StoreSystemFont(string fontFile, Typeface typeface, Dictionary <string, SystemFontFamily> fontFileMap, bool useGdiFontNames)
        {
            string serializeFontFamilyName = FontEmbedder.GetSerializeFontFamilyName(typeface, useGdiFontNames);

            if (string.IsNullOrEmpty(serializeFontFamilyName))
            {
                return;
            }
            SystemFontFamily systemFontFamily = (SystemFontFamily)null;

            if (!fontFileMap.TryGetValue(serializeFontFamilyName, out systemFontFamily))
            {
                systemFontFamily = new SystemFontFamily(new FontFamily(serializeFontFamilyName));
                fontFileMap[serializeFontFamilyName] = systemFontFamily;
            }
            if (systemFontFamily.FontSources.Contains(fontFile))
            {
                return;
            }
            systemFontFamily.FontSources.Add(fontFile);
        }