Using docx, I am trying to define for a run multiple attributes. When I set color, rtl, it works fine. But when I add also font size, it is ignored. If I set only font size, it works fine.
This works fine (font color changes and run is right-to-left):
run = p.add_run(line)
font = run.font
font.rtl = True
font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
This also works fine (font size is modified):
run = p.add_run(line)
font = run.font
font.size = Pt(8)
#font.rtl = True # commented out
But this does not change the font's size:
run = p.add_run(line)
font = run.font
font.size = Pt(8)
font.rtl = True
I tried different order of the commands, but nothing works.
ok, found it! It turns out that in word, the font size for such a case has to include complex script instructions. It means that you have to add
<w:szCs w:val="???"/>
instead (or in addition to) the normal
<w:sz w:val="??"/>
I had to add a new attribute to the font in the docx library and it now works fine. The change is in 3 docs files:
text/font.py
oxml/__init.py__
oxml/text/font.py
and the usage in my view:
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
Added a fork to docx library. In https://github.com/Oritk/python-docx