V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zjty
V2EX  ›  程序员

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

  •  
  •   zjty · 2020-08-11 12:00:44 +08:00 · 1551 次点击
    这是一个创建于 1326 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题一:最近在做一款设计软件,需要在 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 条回复    2020-08-17 17:13:13 +08:00
    zjty
        1
    zjty  
    OP
       2020-08-17 17:13:13 +08:00
    现阶段,我自己是把字体放到了软件应用里,选了几个字体,太多字体会导致软件过大,QFontDatabase 加载到系统中,如果放到局域网的本地服务器中,使用 addApplicationFont 一个个添加,会卡死主线程,使用多线程并不能解决这个问题,目前没有找到解决方法和替代方案。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5237 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:15 · PVG 17:15 · LAX 02:15 · JFK 05:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.