public override void Render(QuadRenderer renderer) { if (_stringBuilder.Length == 0) { return; } var originPos = Position + Origin; Vector2 originBuffer; var posBuffer = Position; var destBuffer = new Box2(); var lineStart = posBuffer.X; //pos = origin pos //origin = desired pos - pos for (int i = 0; i < _stringBuilder.Length; i++) { var character = _stringBuilder[i]; if (character == '\n') { posBuffer.X = lineStart; posBuffer.Y -= _font.Spacing.Y; continue; } if (character == ' ') { posBuffer.X += _font.SpaceWidth; continue; } var glyph = _font.GetGlyph(character); originBuffer = originPos - posBuffer; destBuffer.Min = Position; destBuffer.Max = destBuffer.Min + glyph.Size; renderer.SubmitQuad(destBuffer, glyph.Source, Color, originBuffer, Scale, Rotation, _font.Texture); posBuffer.X += glyph.Size.X + _font.Spacing.X; } }