C#实现根据字体名称获取字体文件名

  《简单测试.NET开源的PDF文档生成器QuestPDF》中提到,绘制文字时指定字体用的不是字体名称,而是字体文件名。之前学习C# GDI+、HTML5中的Canvas、Tkinter中的Canvas,绘制文本都用的字体名称,C#本身的类中并没有提供根据字体名称获取字体文件名的函数,需要自己写程序去找。
  根据参考文献2,获取字体文件名的方式有多种,首先可以在注册表中找到部分字体名称及对应的字体文件名,其路径为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Fonts,可以调用注册表读取函数获取。但是注册表中的信息不全,有一部分字体没有在里面,例如宋体、黑体等(至少我电脑上没有)。

在这里插入图片描述
  除了查询注册表,参考文献2,还介绍了一种方式,即枚举Windows\Fonts中的字体文件,通过PrivateFontCollection类获取字体文件对应的字体名。
在这里插入图片描述
  本文整合参考文献1-2中的给出根据字体名称获取字体文件名的示例代码,主要逻辑为:

  1. 调用InstalledFontCollection类获取本机已安装字体名;
  2. 选择某一字体,首先检查注册表中是否有该字体对应的文件名,如有则返回,没有则跳转到第3步;
  3. 查找Windows\Fonts中后缀名为ttf或ttc的字体文件名,检查是否有字体文件对应的文件名。

  程序执行效果如下所示。程序源码已提交至GitHub,地址为:https://github.com/guochao2299/GetFontFileName
在这里插入图片描述

参考文献:
[1]https://blog.csdn.net/giswhw66/article/details/52094986
[2]http://wjhsh.net/wxylog-p-6871815.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值