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); } } } }
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); } } } }