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); }
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(); }