Example #1
0
        public IEnumerable <SystemFontRecord> GetAllFonts()
        {
            var directories = new List <string>
            {
                "/Library/Fonts/",        // local
                "/System/Library/Fonts/", // system
                "/Network/Library/Fonts/" // network
            };

            try
            {
                var folder = Environment.GetEnvironmentVariable("$HOME");

                if (!string.IsNullOrWhiteSpace(folder))
                {
                    directories.Add($"{folder}/Library/Fonts");
                }
            }
            catch
            {
                // ignored
            }

            foreach (var directory in directories)
            {
                try
                {
                    if (!Directory.Exists(directory))
                    {
                        continue;
                    }
                }
                catch
                {
                    continue;
                }

                string[] files;

                try
                {
                    files = Directory.GetFiles(directory);
                }
                catch
                {
                    continue;
                }

                foreach (var file in files)
                {
                    if (SystemFontRecord.TryCreate(file, out var record))
                    {
                        yield return(record);
                    }
                }
            }
        }
        public IEnumerable <SystemFontRecord> GetAllFonts()
        {
            // TODO: Could use System.Drawing InstalledFontCollection to do this?

            var winDir = Environment.GetFolderPath(Environment.SpecialFolder.Windows);

            var fonts = Path.Combine(winDir, "Fonts");

            if (Directory.Exists(fonts))
            {
                var files = Directory.GetFiles(fonts);

                foreach (var file in files)
                {
                    if (SystemFontRecord.TryCreate(file, out var record))
                    {
                        yield return(record);
                    }
                }
            }

            var psFonts = Path.Combine(winDir, "PSFonts");

            if (Directory.Exists(psFonts))
            {
                var files = Directory.GetFiles(fonts);

                foreach (var file in files)
                {
                    if (SystemFontRecord.TryCreate(file, out var record))
                    {
                        yield return(record);
                    }
                }
            }
        }
Example #3
0
        public IEnumerable <SystemFontRecord> GetAllFonts()
        {
            var directories = new List <string>
            {
                "/usr/local/fonts",        // local
                "/usr/local/share/fonts",  // local shared
                "/usr/share/fonts",        // system
                "/usr/X11R6/lib/X11/fonts" // X
            };

            try
            {
                var folder = Environment.GetEnvironmentVariable("$HOME");
                if (string.IsNullOrWhiteSpace(folder))
                {
                    folder = Environment.GetEnvironmentVariable("HOME");
                }

                if (!string.IsNullOrWhiteSpace(folder))
                {
                    directories.Add($"{folder}/.fonts");
                }
            }
            catch
            {
                // ignored
            }

            foreach (var directory in directories)
            {
                try
                {
                    if (!Directory.Exists(directory))
                    {
                        continue;
                    }
                }
                catch
                {
                    continue;
                }

                string[] files;

                try
                {
                    files = Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories);
                }
                catch
                {
                    continue;
                }

                foreach (var file in files)
                {
                    if (SystemFontRecord.TryCreate(file, out var record))
                    {
                        yield return(record);
                    }
                }
            }
        }