Exemplo n.º 1
0
        public static BitmapFont LoadFromFnt(string name, string text, Func <string, TextureRegion2D> textureLoader)
        {
            var data = new Cyotek.Drawing.BitmapFont.BitmapFont();

            data.LoadText(text);

            // Resolve pages
            var pageRegions = new TextureRegion2D[data.Pages.Length];

            for (var i = 0; i < data.Pages.Length; ++i)
            {
                var fn     = data.Pages[i].FileName;
                var region = textureLoader(fn);
                if (region == null)
                {
                    throw new Exception(string.Format("Unable to resolve texture {0}", fn));
                }

                pageRegions[i] = region;
            }

            var glyphs = new List <BitmapFontRegion>();

            foreach (var pair in data.Characters)
            {
                var character = pair.Value;

                var bounds = character.Bounds;

                var pageRegion = pageRegions[pair.Value.TexturePage];
                bounds.Offset(pageRegion.X, pageRegion.Y);

                var region = new TextureRegion2D(pageRegion.Texture, bounds);
                var glyph  = new BitmapFontRegion(region, character.Char, character.Offset.X, character.Offset.Y, character.XAdvance);
                glyphs.Add(glyph);
            }

/*			var characterMap = glyphs.ToDictionary(a => a.Character);
 *
 *                      // Process kernings
 *                      foreach (var pair in data.Kernings)
 *                      {
 *                              var kerning = pair.Key;
 *
 *                              BitmapFontRegion glyph;
 *                              if (!characterMap.TryGetValue(kerning.FirstCharacter, out glyph))
 *                              {
 *                                      continue;
 *                              }
 *
 *                              glyph.Kernings[kerning.SecondCharacter] = kerning.Amount;
 *                      }*/

            var result = new BitmapFont(name, glyphs, data.LineHeight);

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Ensures that the specified text contains valid description for BMFont
        /// </summary>
        /// <param name="input"></param>
        public static void Validate(string input)
        {
            var data = new Cyotek.Drawing.BitmapFont.BitmapFont();

            data.LoadText(input);
        }