Example #1
0
        public Vector2 MeasureString(string fontFamily, int emSize, string text)
        {
            var chars = text.ToCharArray();
            var pos   = Vector2.Zero;
            var size  = Vector2.Zero;

            foreach (var ch in chars)
            {
                if (ch == '\n')
                {
                    pos.X  = 0;
                    pos.Y += 1.5f * emSize;
                }
                else
                {
                    FontPage <TTexture> page = GetFontPage(fontFamily, emSize, ch);
                    pos.X += page.CharSizes[ch].X;

                    size.X = Math.Max(pos.X + page.CharSizes[ch].X, size.X);
                    size.Y = Math.Max(pos.Y + page.CharSizes[ch].Y, size.Y);
                }
            }

            return(size);
        }
Example #2
0
        public void DrawString(Vector2 position, string fontFamily, int emSize, string text, Color4 color)
        {
            spriteBatch.Begin();

            var chars = text.ToCharArray();
            var pos   = position - new Vector2(emSize, emSize);
            var size  = 4 * new Vector2(emSize, emSize);

            foreach (var ch in chars)
            {
                if (ch == '\n')
                {
                    pos.X  = position.X - emSize;
                    pos.Y += 1.5f * emSize;
                }
                else
                {
                    FontPage <TTexture> page = GetFontPage(fontFamily, emSize, ch);
                    (TTexture texture, TextureRegion region) = GetCharTextureRegion(fontFamily, emSize, ch);
                    var sprite = new Sprite <TTexture>(pos, size, texture, region, color);
                    spriteBatch.Draw(sprite);
                    pos.X += page.CharSizes[ch].X;
                }
            }

            spriteBatch.End();
        }