Beispiel #1
0
    private static void ScanFont(string uri, ref List <NoesisFont> fonts)
    {
        int index = uri.IndexOf('#');

        if (index != -1)
        {
            string folder = uri.Substring(0, index);
            if (Directory.Exists(folder))
            {
                string family = uri.Substring(index + 1);
                var    files  = Directory.GetFiles(folder).Where(s => IsFont(s));

                foreach (var font in files)
                {
                    bool hasFamily = false;

                    using (FileStream file = File.Open(font, FileMode.Open, FileAccess.Read))
                    {
                        hasFamily = NoesisUnity.HasFamily(file, family);
                    }

                    if (hasFamily)
                    {
                        fonts.Add(ImportFont(font, false, false));
                    }
                }
            }
        }
    }
    private static void FindFamilyNames(string directory, string family, HashSet <NoesisFont> fonts)
    {
        try
        {
            var files = Directory.GetFiles(directory)
                        .Where(s => s.EndsWith(".ttf", StringComparison.OrdinalIgnoreCase) ||
                               s.EndsWith(".otf", StringComparison.OrdinalIgnoreCase));

            foreach (var filename in files)
            {
                using (FileStream file = File.Open(filename, FileMode.Open))
                {
                    if (NoesisUnity.HasFamily(file, family))
                    {
                        string uri  = Path.ChangeExtension(NormalizePath(filename), ".asset");
                        string guid = AssetDatabase.AssetPathToGUID(uri);

                        if (!String.IsNullOrEmpty(guid))
                        {
                            NoesisFont f = AssetDatabase.LoadAssetAtPath <NoesisFont>(uri);

                            if (f != null)
                            {
                                fonts.Add(f);
                            }
                        }
                    }
                }
            }
        }
        catch (System.Exception) {}
    }