Example #1
0
        public async Task SerializeAsync(AngelfontDescription description, string path)
        {
            var builder = new StringBuilder();

            var info   = description.Info;
            var common = description.Common;

            builder.AppendLine($"info face=\"{info.Face}\" size={info.Size} bold={(info.Bold ? 1 : 0)} italic={(info.Italic ? 1 : 0)} charset=\"{info.Charset}\" unicode={(info.Unicode ? 1 :  0)} stretchH={info.StretchH} smooth={(info.Smooth ? 1 : 0)} aa={info.AntiAliasing } padding={info.Padding.Top},{info.Padding.Bottom},{info.Padding.Left},{info.Padding.Right} spacing={info.Spacing.X},{info.Spacing.Y}");
            builder.AppendLine($"common lineHeight={common.LineHeight} base={common.Base} scaleW={common.ScaleWidth} scaleH={common.ScaleHeight} pages={description.Pages.Length} packed={(common.Packed ? 1 : 0)}");

            foreach (var page in description.Pages)
            {
                builder.AppendLine($"page id={page.Id} file=\"{page.File}\"");
            }

            builder.AppendLine($"chars count={description.Characters.Length}");
            foreach (var character in description.Characters)
            {
                builder.AppendLine($"char id={character.Id} x={character.X} y={character.Y}width={character.Width} height={character.Height} xoffset={character.XOffset} yoffset={character.YOffset} xadvance={character.XAdvance} page={character.Page} chnl={(int)character.Channel}");
            }

            builder.AppendLine($"kernings count={description.Kernings.Length}");
            foreach (var kerning in description.Kernings)
            {
                builder.AppendLine($"kerning first={kerning.First} second={kerning.Second} amount={kerning.Amount}");
            }

            var snakeCaseName = description.Info.Face.ToLowerInvariant().Replace(" ", "_");
            await File.WriteAllTextAsync(Path.Combine(path, snakeCaseName + ".fnt"), builder.ToString());
        }
Example #2
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var desc = new AngelfontDescription
            {
                Pages = new[] { new Page {
                                    File = "test_file1.png", Id = 1
                                } },
                Characters = new[]
                {
                    new Character
                    {
                        Id       = 'a',
                        Page     = 0,
                        Y        = 10,
                        X        = 20,
                        Height   = 30,
                        Width    = 40,
                        YOffset  = 50,
                        XAdvance = 60,
                        XOffset  = 70,
                        Channel  = Channel.All
                    },
                },
                Kernings = new[]
                {
                    new Kerning
                    {
                        First  = 'a',
                        Second = 'b',
                        Amount = 10
                    },
                },
                Info = new Info
                {
                    Size    = 50,
                    Padding = new Padding {
                        Top = 1, Bottom = 2, Right = 3, Left = 4
                    },
                    Spacing = new Spacing
                    {
                        Y = 10, X = 20
                    },
                    Italic       = true,
                    Bold         = false,
                    Unicode      = true,
                    Charset      = "utf8",
                    Smooth       = true,
                    AntiAliasing = 3,
                    Face         = "Segoe UI Light",
                    StretchH     = 10
                },
                Common = new Common
                {
                    Packed      = true,
                    Base        = 10,
                    ScaleHeight = 20,
                    ScaleWidth  = 30,
                    LineHeight  = 40
                }
            };

            new TextSerializer()
            .SerializeAsync(desc, "c:/temp/")
            .ConfigureAwait(false)
            .GetAwaiter()
            .GetResult();
        }