Не могу установить размер шрифта и RTL - PullRequest
0 голосов
/ 11 ноября 2018

Используя docx, я пытаюсь определить для запуска несколько атрибутов. Когда я устанавливаю цвет, RTL, он работает нормально. Но когда я добавляю также размер шрифта, он игнорируется. Если я установлю только размер шрифта, он будет работать нормально.

Это прекрасно работает (цвет шрифта меняется и запускается справа налево):

run = p.add_run(line)
font = run.font
font.rtl = True
font.color.rgb = RGBColor(0x42, 0x24, 0xE9)

Это также хорошо работает (размер шрифта изменен):

run = p.add_run(line)
font = run.font
font.size = Pt(8)
#font.rtl = True # commented out

Но это не меняет размер шрифта:

run = p.add_run(line)
font = run.font
font.size = Pt(8)
font.rtl = True

Я пробовал другой порядок команд, но ничего не работает.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

ок, нашел! Получается, что одним словом, размер шрифта для такого случая должен включать сложные инструкции сценария. Это означает, что вы должны добавить

<w:szCs w:val="???"/> 

вместо (или в дополнение к) нормальному

<w:sz w:val="??"/> 

Мне пришлось добавить новый атрибут к шрифту в библиотеке docx, и теперь он работает нормально. Изменение в 3 файлах документов:

text/font.py
oxml/__init.py__
oxml/text/font.py

и использование на мой взгляд:

run = p.add_run(line)
font = run.font
#font.size = Pt(8) This line is redundant - but you can leave it
font.cs_size = Pt(8)
font.rtl = True

Добавлена ​​вилка в библиотеку docx. В https://github.com/Oritk/python-docx

0 голосов
/ 11 ноября 2018

принят Я еще не дошел до игры с docx (я в основном использовал модули Python для Excel), но, основываясь на документации, похоже, что вы изменяете неправильное свойство стиля. Свойство Font, согласно этому определению свойства rtl, будет изменять только добавленный прогон (через myparagraph.add_run ("Hello World", style = "rtl")). Насколько я могу судить, код, который вы ищете для это:

missingwords = Document()
style = missingwords.styles.add_style('rtl', WD_STYLE_TYPE.PARAGRAPH)
style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

И тогда вы можете продолжить и добавить абзац, как вы были

paragraph = missingwords.add_paragraph("Hello world",style='rtl')

Опять же, просто убираю документацию, поэтому дайте мне знать, если это работает

...