字由等字体软件是如何将字体加入应用的

2020-08-11 12:00:44 +08:00
 zjty

问题一:最近在做一款设计软件,需要在 pdf 上添加文本,文本的样式是外部设定的,pyqt5 开发的 windows 上 font 对话框,font.family()和字体的文件名是不对应的,

# 需要是微软雅黑粗体转换成对应的文件名,才可以正常将字体样式写入的 pdf 中
choose_file_name = "msyhbd.ttc"
page.insertText(point, text, fontsize=fontsize * 1.2, fontname="{0}{1}".format(choose_file_name, index), fontfile="C:/Windows/Fonts/{0}".format(choose_file_name), color=color)

比如微软雅黑是 msyh.ttc ,粗体和斜体也无法获取,外加部分字体在 PDF 写入时不支持中文,会乱码。有没有解决办法,我自己想了一个替代方案:字体需要提前备好放入应用,后续增加字体,要放入系统的字体库,需要导入对应字体的常规,粗体,斜体(有的话),外加添加字体的名称和对应的文件名,建立好映射表。
问题二:我看了字由加字体这些,Windows/Fonts 文件里没有这个字体的,它是如何实现添加相关字体会导入到对话框,ps 这些软件中的呢,有相关经验的朋友告知下么

1576 次点击
所在节点    程序员
1 条回复
zjty
2020-08-17 17:13:13 +08:00
现阶段,我自己是把字体放到了软件应用里,选了几个字体,太多字体会导致软件过大,QFontDatabase 加载到系统中,如果放到局域网的本地服务器中,使用 addApplicationFont 一个个添加,会卡死主线程,使用多线程并不能解决这个问题,目前没有找到解决方法和替代方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/697326

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX