internal static async Task ExportFontsToFolderAsync(List <FontVariant> fonts) { FolderPicker picker = new FolderPicker { SuggestedStartLocation = PickerLocationId.DocumentsLibrary }; picker.FileTypeFilter.Add("*"); if (await picker.PickSingleFolderAsync() is StorageFolder folder) { await Task.Run(async() => { ExportNamingScheme scheme = ResourceHelper.AppSettings.ExportNamingScheme; foreach (var font in fonts) { if (DirectWrite.IsFontLocal(font.FontFace)) { string fileName = GetFileName(font, scheme); StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); await TryWriteToFileAsync(font, file); } } }); Messenger.Default.Send(new AppNotificationMessage(true, new ExportFontFileResult(folder, true))); } }
internal static async Task ExportFontsAsZipAsync(List <FontVariant> fonts, string name) { if (await PickFileAsync(name, "ZIP", new[] { ".zip" }) is StorageFile file) { await Task.Run(async() => { ExportNamingScheme scheme = ResourceHelper.AppSettings.ExportNamingScheme; using var i = await file.OpenStreamForWriteAsync(); i.SetLength(0); using ZipArchive z = new ZipArchive(i, ZipArchiveMode.Create); foreach (var font in fonts) { if (DirectWrite.IsFontLocal(font.FontFace)) { string fileName = GetFileName(font, scheme); ZipArchiveEntry entry = z.CreateEntry(fileName); using IOutputStream s = entry.Open().AsOutputStream(); await DirectWrite.WriteToStreamAsync(font.FontFace, s); } } }); Messenger.Default.Send(new AppNotificationMessage(true, new ExportFontFileResult(true, file))); } }
private static string GetFileName(FontVariant font, ExportNamingScheme scheme) { string fileName = null; string ext = ".ttf"; var src = DirectWrite.GetFileName(font.FontFace); if (!string.IsNullOrWhiteSpace(src)) { var strsrc = Path.GetExtension(src); if (!string.IsNullOrWhiteSpace(strsrc)) { ext = strsrc; } } if (string.IsNullOrEmpty(ext)) { if (scheme == ExportNamingScheme.System) { fileName = src; } } if (string.IsNullOrWhiteSpace(fileName)) { fileName = $"{font.FamilyName.Trim()} {font.PreferredName.Trim()}{ext}"; } return($"{Utils.Humanise(Path.GetFileNameWithoutExtension(fileName), false)}{Path.GetExtension(fileName).ToLower()}"); }
internal static async Task ExportFontsToFolderAsync(List <FontVariant> fonts) { if (await PickFolderAsync() is StorageFolder folder) { await Task.Run(async() => { ExportNamingScheme scheme = ResourceHelper.AppSettings.ExportNamingScheme; foreach (var font in fonts) { if (DirectWrite.IsFontLocal(font.FontFace)) { string fileName = GetFileName(font, scheme); StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting).AsTask().ConfigureAwait(false); await TryWriteToFileAsync(font, file).ConfigureAwait(false); } } }); WeakReferenceMessenger.Default.Send(new AppNotificationMessage(true, new ExportFontFileResult(folder, true))); } }
private static string GetFileName(FontVariant font, ExportNamingScheme scheme) { string fileName = null; string ext = ".ttf"; var src = DirectWrite.GetFileName(font.FontFace); if (!string.IsNullOrWhiteSpace(src)) { ext = Path.GetExtension(src); } if (scheme == ExportNamingScheme.System) { fileName = src; } if (string.IsNullOrWhiteSpace(fileName)) { fileName = $"{font.FamilyName} {font.PreferredName}{ext}"; } return($"{Humanizer.To.SentenceCase.Transform(Path.GetFileNameWithoutExtension(fileName))}{Path.GetExtension(fileName).ToLower()}"); }