无法设置字体大小和rtl

时间:2018-11-11 08:25:17

标签: python docx right-to-left

使用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 :(得分:3)

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

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

代替(或补充)正常

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

我必须在docx库中为字体添加一个新属性,现在它可以正常工作。更改在3个docs文件中:

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库添加了一个fork。在https://github.com/Oritk/python-docx

答案 1 :(得分:0)

接受 我还没有开始使用docx(我主要使用Excel python模块),但是根据此处的文档,您好像在修改错误的style属性。根据rtl属性的定义,Font属性只会修改添加的运行(通过myparagraph.add_run(“ H​​ello 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')

同样,只是关闭文档,所以让我知道是否可行