aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 23:42:39 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 23:42:39 +0000
commit1125370d5c99f940f6502374cf5a6a4d4176dec6 (patch)
tree0116a4c68d15e44365c06315e42609c4175b5abf /src
parent45ced503abb4ad1916c4c655578a7b06a5636cd8 (diff)
Read vertical alignment of runs
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java11
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java20
2 files changed, 30 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
index 2a1f693..65cbc82 100644
--- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
@@ -157,7 +157,16 @@ public class BodyXmlReader {
}
private VerticalAlignment readVerticalAlignment(XmlElementLike properties) {
- return VerticalAlignment.BASELINE;
+ String verticalAlignment = readVal(properties, "w:vertAlign").orElse("");
+ switch (verticalAlignment) {
+ case "superscript":
+ return VerticalAlignment.SUPERSCRIPT;
+ case "subscript":
+ return VerticalAlignment.SUBSCRIPT;
+ default:
+ // TODO: warn if set?
+ return VerticalAlignment.BASELINE;
+ }
}
private Result<Optional<Style>> readRunStyle(XmlElementLike properties) {
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
index d06a6a4..517773c 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -267,6 +267,26 @@ public class BodyXmlTests {
}
@Test
+ public void runIsSuperscriptIfVerticalAlignmentPropertyIsSetToSuperscript() {
+ XmlElement element = runXmlWithProperties(
+ element("w:vertAlign", map("w:val", "superscript")));
+
+ assertThat(
+ readSuccess(a(bodyReader), element),
+ hasProperty("verticalAlignment", equalTo(VerticalAlignment.SUPERSCRIPT)));
+ }
+
+ @Test
+ public void runIsSubscriptIfVerticalAlignmentPropertyIsSetToSubscript() {
+ XmlElement element = runXmlWithProperties(
+ element("w:vertAlign", map("w:val", "subscript")));
+
+ assertThat(
+ readSuccess(a(bodyReader), element),
+ hasProperty("verticalAlignment", equalTo(VerticalAlignment.SUBSCRIPT)));
+ }
+
+ @Test
public void canReadTabElement() {
XmlElement element = element("w:tab");