问题一:最近在做一款设计软件,需要在 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 这些软件中的呢,有相关经验的朋友告知下么
1
zjty OP 现阶段,我自己是把字体放到了软件应用里,选了几个字体,太多字体会导致软件过大,QFontDatabase 加载到系统中,如果放到局域网的本地服务器中,使用 addApplicationFont 一个个添加,会卡死主线程,使用多线程并不能解决这个问题,目前没有找到解决方法和替代方案。
|