public static void DrawGlypth(this Image <Rgba32> target, SixLabors.Fonts.RendererOptions options, int x, int y, char character) { var origin = new PointF(x, y); // origin += new SizeF(0.5f, 0.5f); var path = options .GetCharacterGlypth(character) .Translate(origin); target.Mutate(dc => dc.Fill(Rgba32.White, path)); }
// https://github.com/SixLabors/Fonts/issues/57 public static RectangleF GetGlypthMaxBounds(this SixLabors.Fonts.RendererOptions options, params char[] characters) { var rect = new SixLabors.Primitives.RectangleF(float.PositiveInfinity, float.PositiveInfinity, float.NegativeInfinity, float.NegativeInfinity); foreach (var c in characters) { var r = options.GetCharacterGlypth(c).Bounds; rect = rect.IsInitialized() ? rect.UnionWith(r) : r; } return(rect); }
private static void _DrawGlyph(Image <Rgba32> dstImage, Size cellSize, Size padding, SixLabors.Fonts.RendererOptions context, char c) { var x = ((int)c) % 16; var y = ((int)c) / 16; x *= cellSize.Width; y *= cellSize.Height; x += padding.Width; y += padding.Height; var glyph = context.GetCharacterGlypth(c); var bounds = glyph.Bounds; dstImage.DrawGlypth(context, x, y, c); }