From 1125370d5c99f940f6502374cf5a6a4d4176dec6 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 23:42:39 +0000 Subject: Read vertical alignment of runs --- .../java/org/zwobble/mammoth/docx/BodyXmlReader.java | 11 ++++++++++- .../org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) (limited to 'src') 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> 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 @@ -266,6 +266,26 @@ public class BodyXmlTests { hasProperty("verticalAlignment", equalTo(VerticalAlignment.BASELINE))); } + @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"); -- cgit v1.2.3