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)));
            }
        }
Example #3
0
        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()}");
        }
Example #4
0
        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()}");
        }