无法设置字体大小和 rtl

Can't set font size and rtl

使用 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

我尝试了不同的命令顺序,但没有任何效果。

已接受 我还没有开始玩 docx(我主要使用 Excel python 模块),但是根据此处的文档,您似乎在修改错误的 属性风格。根据 rtl 属性 的定义,字体 属性 只会修改添加的 运行(通过 myparagraph.add_run("Hello World",样式 = "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')

再说一次,只是离开了文档,所以让我知道它是否有效

好的,找到了! 事实证明,在word中,这种情况的字体大小必须包括复杂的脚本指令。这意味着您必须添加

<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