将包含混合字体的word文档转换为unicode



我有一个包含不同字体和不同语言的word文档。一个例子是英文文本和相应的古希腊译文。古希腊部分使用TrueType字体(https://fonts2u.com/greek-regular.font)。现在,这种方法非常不适合共享这些文件,我想将古希腊部分转换为相应的unicode字符。

我尝试了python包python-docx来导入该文件。尽管成功地导入和查看了文件内容,但我找不到只选择古希腊字符并将其转换为相应的unicode字符的方法。

我正在考虑使用TrueType字体字符映射,并用相应的unicode字符查找和替换这些字符。然而,在查看内容时,我无法只选择古希腊文字。

问:有没有办法使用VBA、python或导出不同编码的文件,将古希腊字符"翻译"为相应的unicode字符

使用python docx包,我正在根据字符的字体名称搜索和选择字符

import docx
doc = docx.Document('greek_text.docx')
doc.paragraphs[3].runs[10].font.name

返回"Greek",例如

for run in doc.paragraphs[3].runs:
if run.font.name == "Greek":
for char in run.text:
print (char +" "+ str(hex(ord(char))))

g 0x67

u 0x75

n 0x6e

»0xbb

返回unicode字符和相应的十六进制值。这就留下了这些值到其希腊字符的正确unicode值的映射。

哇,听起来很尴尬,很复杂!

考虑到字体使用自己的非标准字符编码定义,使用XML解析器直接处理文件可能会更容易。我之所以这么做,主要是因为这是我认为最容易选择文本中相关错误编码部分的方式。

类似于:

  1. 打开文件(Python中的ElementTree(。请注意,DOCX文件实际上是一个ZIP文件,包含一个名为word/document.xml的文件和其他适当的关联图像/misc
  2. 使用xpath选择器获取使用希腊字体的所有文本实例
  3. 使用重新映射的代码从破碎的希腊语编码转换为使用真正的Unicode字符
  4. 保存文件

如果你想切换到在标准unicode代码点中使用希腊字符的字体,你可以在原始XML中这样做,也可以在Word中重新打开文件,并在中处处设置字体

最新更新