{"id":19423666,"url":"https://github.com/ryancheung/skiatextrenderer","last_synced_at":"2025-08-13T23:10:24.183Z","repository":{"id":144131567,"uuid":"237357400","full_name":"ryancheung/SkiaTextRenderer","owner":"ryancheung","description":"A Winform-liked cross-platform TextRenderer implemented with SkiaSharp","archived":false,"fork":false,"pushed_at":"2020-03-10T01:49:33.000Z","size":136,"stargazers_count":32,"open_issues_count":3,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-01T06:03:27.123Z","etag":null,"topics":["skia","skiasharp","textrenderer","wordbreak"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryancheung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-31T04:06:23.000Z","updated_at":"2025-07-03T03:39:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f836534-3807-4343-a71d-9c4fcccc3126","html_url":"https://github.com/ryancheung/SkiaTextRenderer","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/ryancheung/SkiaTextRenderer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancheung%2FSkiaTextRenderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancheung%2FSkiaTextRenderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancheung%2FSkiaTextRenderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancheung%2FSkiaTextRenderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryancheung","download_url":"https://codeload.github.com/ryancheung/SkiaTextRenderer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancheung%2FSkiaTextRenderer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270330595,"owners_count":24565816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["skia","skiasharp","textrenderer","wordbreak"],"created_at":"2024-11-10T13:40:20.176Z","updated_at":"2025-08-13T23:10:24.165Z","avatar_url":"https://github.com/ryancheung.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://github.com/ryancheung/SkiaTextRenderer/workflows/.NET%20Core/badge.svg)\n[![Nuget](https://img.shields.io/nuget/v/SkiaTextRenderer)](https://www.nuget.org/packages/SkiaTextRenderer/)\n\n## A Winform-liked TextRenderer implemented with SkiaSharp\n\nSkiaTextRenderer is a text renderer that simulate the [`System.Windows.Forms.TextRenderer`](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.textrenderer.drawtext?view=netframework-4.8).\n\nIts goal is to provider a cross-platform **TextRenderer** that can be easly used in game or app.\n\nThe APIs are just like the Winform version. Even [`TextFormatFlags`](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.textformatflags?view=netframework-4.8) was directly copied and used. Most of the flags are implemented for now, left flags could be implemented later.\n\n### Examples\n\n#### TextFormatFlags.Default\n\n![TextFormatFlags.Default](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/Hello-你好-world!-20-Default.png)\n\n#### TextFormatFlags.HorizontalCenter\n\n![TextFormatFlags.HorizontalCenter](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/Hello-你好-world!-20-HorizontalCenter.png)\n\n#### TextFormatFlags.LeftAndRightPadding\n\n![TextFormatFlags.LeftAndRightPadding](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/Hello-你好-world!-20-LeftAndRightPadding.png)\n\n#### TextFormatFlags.NoPadding\n\n![TextFormatFlags.NoPadding](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/Hello-你好-world!-20-NoPadding.png)\n\n#### Italic \u0026 TextFormatFlags.Default\n\n![Italic \u0026 TextFormatFlags.Default](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/italic-Hello-你好-world!-20-Default.png)\n\n#### Underline \u0026 TextFormatFlags.Default\n\n![Underline \u0026 TextFormatFlags.Default](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/underline-Hello-你好-world!-20-Default.png)\n\n#### StrikeThrough \u0026 TextFormatFlags.Default\n\n![StrikeThrough \u0026 TextFormatFlags.Default](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/strikethrough-Hello-你好-world!-20-Default.png)\n\n#### Sized \u0026 TextFormatFlags.Default\n\n![Sized \u0026 TextFormatFlags.Default](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/sized-Hello-你好-world!-12-Default.png)\n\n#### Sized \u0026 TextFormatFlags.VertialCenter\n\n![Sized \u0026 TextFormatFlags.VertialCenter \u0026 TextFormatFlags.WordBreak](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/sized-Hello-你好-world!-12-VerticalCenter.png)\n\n#### Sized \u0026 TextFormatFlags.VertialCenter \u0026 TextFormatFlags.WordBreak\n\n![Sized \u0026 TextFormatFlags.VertialCenter \u0026 TextFormatFlags.WordBreak](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/sized-Hello-你好-world!-12-GlyphOverhangPadding--Left--Top--VerticalCenter--WordBreak.png)\n\n#### Sized \u0026 TextFormatFlags.HorizontalCenter \u0026 TextFormatFlags.VerticalCenter \u0026 TextFormatFlags.WordBreak\n\n![Sized \u0026 TextFormatFlags.HorizontalCenter \u0026 TextFormatFlags.VerticalCenter \u0026 TextFormatFlags.WordBreak](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/sized-Hello-你好-world!-12-GlyphOverhangPadding--Left--Top--HorizontalCenter--VerticalCenter--WordBreak.png)\n\n#### Auto break line with newline character '\\n' or '\\r' or \"\\r\\n\"\n\n![Auto break line with newline character '\\n' or '\\r' or \"\\r\\n\"](https://github.com/ryancheung/SkiaTextRenderer/raw/master/examples/multiline-Hello-你-好-world!-20-Default.png)\n\n### Install\n\n```\nnuget install SkiaTextRenderer\n```\n\n### Usage\n\n**note `TextRenderer` class is deprecated and will be removed in v2.1.0, please use the new `TextRendererSk` instead.**\n\n```csharp\nstatic void TestDraw(string text, Font font, TextFormatFlags flags)\n{\n    var size = TextRendererSk.MeasureText(text, font, 0, flags);\n    var BackColour = SKColors.Black;\n\n    using (SKBitmap bitmap = new SKBitmap(size.Width, size.Height, SKColorType.Rgba8888, SKAlphaType.Unpremul))\n    using (var canvas = new SKCanvas(bitmap))\n    {\n        canvas.Clear(BackColour);\n\n        TextRendererSk.DrawText(canvas, text, font, new Rectangle(0, 0, size.Width, size.Height), SKColors.White, flags);\n\n        using (Stream s = File.Open(fileName, FileMode.Create))\n        {\n            SKData d = SKImage.FromBitmap(bitmap).Encode(SKEncodedImageFormat.Png, 100);\n            d.SaveTo(s);\n        }\n    }\n}\n```\n\n### TODO\n\n- Implement `TextFormatFlags.WordEllipsis`\n- Support long text drawing with offset defined by cursor position\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryancheung%2Fskiatextrenderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryancheung%2Fskiatextrenderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryancheung%2Fskiatextrenderer/lists"}