internal static SKTextBlob CreateHorizontal(void *text, int length, SKTextEncoding encoding, SKFont font, ReadOnlySpan <float> positions, float y) { if (font == null) { throw new ArgumentNullException(nameof(font)); } var count = font.CountGlyphs(text, length, encoding); if (count <= 0) { return(null); } using var builder = new SKTextBlobBuilder(); var buffer = builder.AllocateHorizontalRun(font, count, y); font.GetGlyphs(text, length, encoding, buffer.GetGlyphSpan()); positions.CopyTo(buffer.GetPositionSpan()); return(builder.Build()); }
internal static SKTextBlob Create(void *text, int length, SKTextEncoding encoding, SKFont font, SKPoint origin) { if (font == null) { throw new ArgumentNullException(nameof(font)); } var count = font.CountGlyphs(text, length, encoding); if (count <= 0) { return(null); } using var builder = new SKTextBlobBuilder(); var buffer = builder.AllocatePositionedRun(font, count); font.GetGlyphs(text, length, encoding, buffer.GetGlyphSpan()); font.GetGlyphPositions(buffer.GetGlyphSpan(), buffer.GetPositionSpan(), origin); return(builder.Build()); }