PDF 中音标的字体指定的是:MyriadPro-Regular,这个字体并不能正确显示音标,然而 PDF 中其实内嵌了一个未使用的可以显示音标的 SonyphoneticPlain 字体。尝试过更换音标指定的字体(就像是更换 CSS 中的font-family),未能如愿。现在是直接把内嵌的 MyriadPro-Regular 字体换成了 SonyphoneticPlain 字体。还可以有其他方法,比如直接重新写一遍 PDF,把每个文本框都重新写一下,顺便把字体也换了,不过我并没有试,因为 PDF 格式虽然开放,但是便捷的操作 PDF 库还是不多。
# pip install pymupdf
import fitz
doc=fitz.open("./中学英汉双解多功能学习词典.pdf")
# 错误的音标字体的 xref 不止一个,需要全部都换掉
to_be_replaced = []
for page in doc:
fonts = page.get_fonts()
for font in fonts:
if 'MyriadPro-Regular' in font[3]:
to_be_replaced.append(font[0])
elif "Sony" in font[3]:
sony_font = font[0]
for i in to_be_replaced:
doc.xref_copy( sony_font, i )
doc.ez_save("中学英汉双解多功能学习词典_fix_font.pdf")
doc.close()