本文将和大家介绍在 C# 里面简单使用 SharpFont 对 FreeType 的封装,读取 ttf 等字体文件信息,绘制出某个文字到图片文件
由于本文使用的 SharpFont 库已经很久没有维护了,本文的例子里面使用的 .NET 框架就退回到 .NET Framework 4.7.2 版本。我大概看了代码,预计 dotnet 6 等版本还是能够兼容的,只是为了方便我写例子代码,减少遇到一些奇怪的问题,本文的例子就采用比较旧的框架
开始之前先感谢 Robert Rouhani 大佬开源的 https://github.com/Robmaister/SharpFont 项目,尽管这个项目已经很久没有维护了
按照 .NET 的惯例,先通过 NuGet 安装库,我通过编辑 csproj 文件快速进行安装,编辑之后的 csproj 项目文件的代码如下
先通过 SetDllDirectory 按照 x64 或 x86 方式加载库,代码如下,以下这部分感觉是基础库没有封装好的部分
以上代码我是去找 NuGet 文件夹里面的依赖包里面的文件
完成以上步骤之后,即可创建出 Face 对象。如以下代码随意给一个字体文件进行测试
接下来的代码将演示如何获取某个字符在字体里面的信息,以及将这个字体用这个字体渲染到本地图片文件
获取字符在字体里面的信息,需要先获取到字符在字体里面的索引,代码如下
以上代码就可以获取到 林
字在字体文件里面的索引
接下来为了将字体加载到 slot 里面,需要先设置一点必要的初始化参数
接着将字体加载到 slot 里面,用于后续获取 Glyph 属性,获取信息
完成以上步骤即可使用以下代码,获取到字符的信息
以上的各个变量就是对于传入的字符的信息
将字体渲染到图片需要借助 GDI 部分的辅助,先调用 RenderGlyph 方法,再通过 ToGdipBitmap 转换为 System.Drawing.Bitmap 对象,用于保存到本地文件
以上的代码我都放在一个 Main 方法里面,代码如下
尝试运行代码,可以看到运行之后输出了 1.png 文件,用图片查看器打开可以看到里面绘制出了字符
本文代码放在 github 和 gitee 上,可以使用如下命令行拉取代码
先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码
以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码,将 gitee 源换成 github 源进行拉取代码
获取代码之后,进入 ChewukeriLudikanal 文件夹,即可获取到源代码
其他字体相关请参阅:
原文链接: http://blog.lindexi.com/post/dotnet-C-%E4%BD%BF%E7%94%A8-FreeType-%E8%AF%BB%E5%8F%96%E5%92%8C%E7%BB%98%E5%88%B6%E5%AD%97%E4%BD%93
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。