Преобразование документа Word, содержащего смешанные шрифты, в Unicode - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть текстовый документ, содержащий разные шрифты и разные языки.Одним из примеров будет текст на английском языке и соответствующий перевод на древнегреческом.Для древнегреческой части использовался шрифт TrueType (https://fonts2u.com/greek-regular.font). Теперь этот подход крайне не подходит для обмена этими файлами, и я хотел бы преобразовать древнегреческую часть в соответствующие символы Юникода.

Iпопытался импортировать файл с помощью пакета python python-docx. Несмотря на то, что он успешно импортировал и просматривал содержимое файла, я не смог найти способ выбрать только древнегреческие символы и преобразовать их в соответствующие им символы юникода.

Я думал об использовании карты символов шрифта TrueType и нашел и заменил эти символы соответствующими символами Юникода. Однако, просматривая содержимое, я не смог выбрать только древнегреческие символы.

В: Есть лиКак использовать VBA, Python или экспортировать файлы в разных кодировках, чтобы «преобразовать» древнегреческие символы в соответствующие им символы Юникода?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

с помощью пакета python-docx, который я ищу и выбираю символы на основе их имени шрифта

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

возвращает 'греческий', например

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 и соответствующее шестнадцатеричное значение.В результате сопоставление этих значений корректным значениям Юникода для их греческих символов.

0 голосов
/ 11 декабря 2018

вау, звучит неловко, сложная ломкость!

учитывая, что шрифт использует свое нестандартное определение кодировки символов, вам может быть проще использовать синтаксический анализатор XML для непосредственной работы с файлом.Я бы сделал это главным образом потому, что мне кажется, что проще всего выбрать соответствующие неправильно закодированные части текста.

что-то вроде:

  1. открыть файл(ElementTree в Python).обратите внимание, что файл DOCX на самом деле представляет собой ZIP-файл, содержащий файл с именем word/document.xml и другие связанные изображения / misc в зависимости от ситуации
  2. используйте селектор xpath для получения всех экземпляров текста, которые используют греческий шрифт
  3. используйте код переназначения, чтобы перейти от неработающей греческой кодировки к реальным символам Юникода
  4. сохранить файл

, который вы хотите переключить на шрифт, использующий греческие символы вих стандартные кодовые точки Unicode, вы можете сделать это в сыром XML, или просто открыть файл в Word и установить шрифт везде

...