From 6ecd959dc9112a152089117651e14ece52e9c441 Mon Sep 17 00:00:00 2001 From: daichenjie Date: Thu, 6 Jun 2024 17:00:28 +0800 Subject: [PATCH] Fix #1232 --- ooxml/XWPF/Usermodel/XWPFSharedRun.cs | 21 +++++++++- .../ooxml/XWPF/UserModel/TestXWPFSharedRun.cs | 38 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 testcases/ooxml/XWPF/UserModel/TestXWPFSharedRun.cs diff --git a/ooxml/XWPF/Usermodel/XWPFSharedRun.cs b/ooxml/XWPF/Usermodel/XWPFSharedRun.cs index 5a83575fe..778f677ed 100644 --- a/ooxml/XWPF/Usermodel/XWPFSharedRun.cs +++ b/ooxml/XWPF/Usermodel/XWPFSharedRun.cs @@ -152,7 +152,26 @@ public String GetFontFamily(FontCharRange fcr) } } - public double FontSize { get; set; } + public double FontSize + { + get + { + OpenXmlFormats.Wordprocessing.CT_RPr pr = run.rPr1; + return (pr != null && pr.IsSetSz()) ? pr.sz.val / 2.0 : -1; + } + set + { + OpenXmlFormats.Wordprocessing.CT_RPr pr = run.IsSetRPr1() ? run.rPr1 : run.AddNewRPr1(); + if(value < 1) + { + // fix for TestBug58922() in NPOI + pr.sz = null; // unset + return; + } + OpenXmlFormats.Wordprocessing.CT_HpsMeasure ctSize = pr.IsSetSz() ? pr.sz : pr.AddNewSz(); + ctSize.val = (ulong) (value * 2); + } + } public string Text { diff --git a/testcases/ooxml/XWPF/UserModel/TestXWPFSharedRun.cs b/testcases/ooxml/XWPF/UserModel/TestXWPFSharedRun.cs new file mode 100644 index 000000000..8fa88c9ab --- /dev/null +++ b/testcases/ooxml/XWPF/UserModel/TestXWPFSharedRun.cs @@ -0,0 +1,38 @@ +using NPOI.OpenXmlFormats.Shared; +using NPOI.XWPF.Usermodel; +using NPOI.XWPF.UserModel; +using NUnit.Framework; + +namespace TestCases.XWPF.UserModel +{ + public class TestXWPFSharedRun + { + private CT_R ctRun; + public IRunBody p; + + [SetUp] + public void SetUp() + { + XWPFDocument doc = new XWPFDocument(); + p = doc.CreateParagraph(); + + this.ctRun = new CT_R(); + } + + [Test] + public void TestSetGetFontSize() + { + NPOI.OpenXmlFormats.Wordprocessing.CT_RPr rpr = ctRun.AddNewRPr1(); + rpr.AddNewSz().val = 14; + + XWPFSharedRun run = new XWPFSharedRun(ctRun, p); + Assert.AreEqual(7.0, run.FontSize); + + run.FontSize = 24; + Assert.AreEqual(48, (int) rpr.sz.val); + + run.FontSize = 24.5; + Assert.AreEqual(24.5, run.FontSize); + } + } +}