如何在python-pptx中添加并使用自定义OTF/TTF字体?
使用python-pptx配置自定义OTF/TTF字体方法
核心逻辑
python-pptx本身不直接支持嵌入字体,但可以指定文本使用的字体名称。只要打开PPT的设备上安装了该自定义字体,就能正常显示;如果需要确保无字体环境下也能正确渲染,需要额外步骤完成字体嵌入。
步骤1:获取自定义字体的真实名称
字体文件名(比如Org-Sans-Text-Regular.otf)不等于字体的内部识别名称,必须使用真实名称才能让PPT正确匹配。获取方式:
- Windows:打开控制面板→字体,找到目标字体,查看其显示名称(示例:“Org Sans Text Regular”)
- Mac:打开字体册,选中字体后查看顶部标注的正式名称
- 代码方式(需先安装
fonttools库):
from fontTools.ttLib import TTFont # 替换为你的字体文件路径 font = TTFont("Org-Sans-Text-Regular.ttf") # 输出字体的真实内部名称 print(font["name"].getDebugName(4))
步骤2:在python-pptx中指定字体名称
修改你的代码,给文本段落的字体对象设置name属性:
from pptx import Presentation from pptx.util import Inches,Pt from pptx.enum.text import PP_ALIGN # 替换为你获取到的字体真实名称 CUSTOM_FONT_NAME = "Org Sans Text Regular" ppt = Presentation() slide_layout = ppt.slide_layouts[6] slide = ppt.slides.add_slide(slide_layout) text_box1 = slide.shapes.add_textbox(Inches(0), Inches(0.15), Inches(10), Inches(0.35)) tf1 = text_box1.text_frame p = tf1.paragraphs[0] p.text = 'Sample Title' p.alignment = PP_ALIGN.CENTER p.font.bold = True # 设置自定义字体 p.font.name = CUSTOM_FONT_NAME # 若使用中文/非拉丁字符,需额外设置以下属性 # p.font.name_asian = CUSTOM_FONT_NAME # p.font.name_complex = CUSTOM_FONT_NAME # 可按需设置字体大小 p.font.size = Pt(24) ppt.save('test.pptx')
步骤3:嵌入字体(可选,适配无字体环境)
由于python-pptx原生不支持嵌入字体,可通过pywin32库调用PowerPoint COM接口完成嵌入操作:
import win32com.client as win32 import os ppt_path = os.path.abspath("test.pptx") powerpoint = win32.Dispatch("PowerPoint.Application") presentation = powerpoint.Presentations.Open(ppt_path) # 启用TrueType字体嵌入 presentation.Fonts.EmbedTrueTypeFonts = True # 禁用系统字体嵌入(减少文件体积) presentation.Fonts.EmbedSystemFonts = False presentation.Save() presentation.Close() powerpoint.Quit()
注意:此方法仅适用于Windows系统且安装了Microsoft PowerPoint的环境,同时嵌入字体需符合字体版权要求,请确认授权后使用。
内容的提问来源于stack exchange,提问作者Pooja Shah
相关产品推荐
相关产品推荐

