From e514b1be4ffc630984329afe0235b7fb46b5d084 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 13 Nov 2024 19:51:36 +0100 Subject: [PATCH] Fix DocX line height setting --- novelwriter/constants.py | 3 +++ novelwriter/formats/todocx.py | 35 +++++++++++++++-------------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/novelwriter/constants.py b/novelwriter/constants.py index 2d67b5a7..bd5efac5 100644 --- a/novelwriter/constants.py +++ b/novelwriter/constants.py @@ -105,6 +105,9 @@ class nwStyles: H_LEVEL = {"H0": 0, "H1": 1, "H2": 2, "H3": 3, "H4": 4} H_SIZES = {0: 2.50, 1: 2.00, 2: 1.75, 3: 1.50, 4: 1.25} + T_NORMAL = 1.0 + T_SMALL = 0.8 + T_LABEL = { "H0": QT_TRANSLATE_NOOP("Constant", "Title"), "H1": QT_TRANSLATE_NOOP("Constant", "Heading 1 (Partition)"), diff --git a/novelwriter/formats/todocx.py b/novelwriter/formats/todocx.py index 5b499b45..6410a5e9 100644 --- a/novelwriter/formats/todocx.py +++ b/novelwriter/formats/todocx.py @@ -521,12 +521,6 @@ class ToDocX(Tokenizer): hScale = self._scaleHeads hColor = _docXCol(self._theme.head) if self._colorHeads else None fSz = self._fontSize - fnSz = 0.8 * self._fontSize - fSz0 = (nwStyles.H_SIZES[0] * fSz) if hScale else fSz - fSz1 = (nwStyles.H_SIZES[1] * fSz) if hScale else fSz - fSz2 = (nwStyles.H_SIZES[2] * fSz) if hScale else fSz - fSz3 = (nwStyles.H_SIZES[3] * fSz) if hScale else fSz - fSz4 = (nwStyles.H_SIZES[4] * fSz) if hScale else fSz # Add Normal Style styles.append(DocXParStyle( @@ -545,12 +539,12 @@ class ToDocX(Tokenizer): styles.append(DocXParStyle( name="Title", styleId=S_TITLE, - size=fSz0, + size=(nwStyles.H_SIZES[0] * fSz) if hScale else fSz, basedOn=S_NORM, nextStyle=S_NORM, before=fSz * self._marginTitle[0], after=fSz * self._marginTitle[1], - line=fSz0 * self._lineHeight, + line=fSz * self._lineHeight, level=0, bold=self._boldHeads, )) @@ -559,12 +553,12 @@ class ToDocX(Tokenizer): styles.append(DocXParStyle( name="Heading 1", styleId=S_HEAD1, - size=fSz1, + size=(nwStyles.H_SIZES[1] * fSz) if hScale else fSz, basedOn=S_NORM, nextStyle=S_NORM, before=fSz * self._marginHead1[0], after=fSz * self._marginHead1[1], - line=fSz1 * self._lineHeight, + line=fSz * self._lineHeight, level=0, color=hColor, bold=self._boldHeads, @@ -574,12 +568,12 @@ class ToDocX(Tokenizer): styles.append(DocXParStyle( name="Heading 2", styleId=S_HEAD2, - size=fSz2, + size=(nwStyles.H_SIZES[2] * fSz) if hScale else fSz, basedOn=S_NORM, nextStyle=S_NORM, before=fSz * self._marginHead2[0], after=fSz * self._marginHead2[1], - line=fSz2 * self._lineHeight, + line=fSz * self._lineHeight, level=1, color=hColor, bold=self._boldHeads, @@ -589,12 +583,12 @@ class ToDocX(Tokenizer): styles.append(DocXParStyle( name="Heading 3", styleId=S_HEAD3, - size=fSz3, + size=(nwStyles.H_SIZES[3] * fSz) if hScale else fSz, basedOn=S_NORM, nextStyle=S_NORM, before=fSz * self._marginHead3[0], after=fSz * self._marginHead3[1], - line=fSz3 * self._lineHeight, + line=fSz * self._lineHeight, level=1, color=hColor, bold=self._boldHeads, @@ -604,12 +598,12 @@ class ToDocX(Tokenizer): styles.append(DocXParStyle( name="Heading 4", styleId=S_HEAD4, - size=fSz4, + size=(nwStyles.H_SIZES[4] * fSz) if hScale else fSz, basedOn=S_NORM, nextStyle=S_NORM, before=fSz * self._marginHead4[0], after=fSz * self._marginHead4[1], - line=fSz4 * self._lineHeight, + line=fSz * self._lineHeight, level=1, color=hColor, bold=self._boldHeads, @@ -653,12 +647,12 @@ class ToDocX(Tokenizer): styles.append(DocXParStyle( name="Footnote Text", styleId=S_FNOTE, - size=fnSz, + size=nwStyles.T_SMALL * fSz, basedOn=S_NORM, before=0.0, - after=fnSz * self._marginFoot[1], - left=fnSz * self._marginFoot[0], - line=fnSz * self._lineHeight, + after=fSz * self._marginFoot[1], + left=fSz * self._marginFoot[0], + line=fSz * self._lineHeight, )) # Add to Cache @@ -795,6 +789,7 @@ class ToDocX(Tokenizer): _wTag("before"): str(int(20.0 * firstFloat(style.before))), _wTag("after"): str(int(20.0 * firstFloat(style.after))), _wTag("line"): str(int(20.0 * firstFloat(style.line, size))), + _wTag("lineRule"): "auto", }) if style.left is not None: xmlSubElem(pPr, _wTag("ind"), attrib={