From b04f9bda4a4786e42805942c1358b79c8cc3b9b9 Mon Sep 17 00:00:00 2001 From: Green Date: Tue, 10 Jun 2025 14:11:39 +0300 Subject: [PATCH] For bug #73716 --- HwpFile/HwpDoc/Conversion/Converter2OOXML.cpp | 1 - HwpFile/HwpDoc/Conversion/StyleConverter.cpp | 23 +++++++++++++++---- HwpFile/HwpDoc/Conversion/StyleConverter.h | 6 +++-- .../HwpDoc/HWPElements/HWPRecordCharShape.cpp | 8 +++++++ .../HwpDoc/HWPElements/HWPRecordCharShape.h | 1 + 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/HwpFile/HwpDoc/Conversion/Converter2OOXML.cpp b/HwpFile/HwpDoc/Conversion/Converter2OOXML.cpp index d2273db5dc..c40772722b 100644 --- a/HwpFile/HwpDoc/Conversion/Converter2OOXML.cpp +++ b/HwpFile/HwpDoc/Conversion/Converter2OOXML.cpp @@ -23,7 +23,6 @@ #include "Transform.h" #define PARA_SPACING_SCALE 0.85 -#define SPACING_SCALE_MS_WORD 1.21 namespace HWP { diff --git a/HwpFile/HwpDoc/Conversion/StyleConverter.cpp b/HwpFile/HwpDoc/Conversion/StyleConverter.cpp index af29b7eb87..7cd937cc29 100644 --- a/HwpFile/HwpDoc/Conversion/StyleConverter.cpp +++ b/HwpFile/HwpDoc/Conversion/StyleConverter.cpp @@ -11,6 +11,8 @@ namespace HWP #define DEFAULT_STYLE_NAME L"Style" #define DEFAULT_SPACING 240 +#define SPACING_SCALE_MS_WORD 1.21 + #define ADD_COLOR(r, g, b, enum_value) {{r, g, b}, enum_value} static const std::vector> s_arHighlightColors @@ -232,6 +234,8 @@ CRunnerStyle CStyleConverter::GenerateRunnerStyle(const CHWPRecordCharShape& oCh oRunnerStyle.SetAscii(oCharShape.GetFontName(ELang::LATIN)); oRunnerStyle.SetEastAsia(oCharShape.GetFontName(ELang::HANGUL)); + oRunnerStyle.SetRatio(oCharShape.GetRatio(ELang::LATIN)); + oRunnerStyle.SetSpacing(static_cast((double)oCharShape.GetSpacing(ELang::LATIN) * SPACING_SCALE_MS_WORD)); if (oCharShape.Bold()) oRunnerStyle.SetBold(true); @@ -439,6 +443,12 @@ void CStyleConverter::WriteRunnerProperties(const CRunnerStyle& oRunnerStyle, NS if (oRunnerStyle.ColorIsSet()) oBuilder.WriteString(L""); + if (oRunnerStyle.RatioIsSet() && 100 != oRunnerStyle.GetRatio()) + oBuilder.WriteString(L""); + + if (oRunnerStyle.SpacingIsSet() && 0 != oRunnerStyle.GetSpacing()) + oBuilder.WriteString(L""); + if (oRunnerStyle.UIsSet()) { oBuilder.WriteString(L" m_nSz; CProperty m_oColor; CProperty m_nShadeColor; + CProperty m_shRatio; CProperty m_oU; CProperty m_eStrike; - CProperty m_nSpacing; + CProperty m_shSpacing; CProperty m_oHighlight; CProperty m_eVerticalAlign; }; diff --git a/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.cpp b/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.cpp index e2243720cb..88643cf086 100644 --- a/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.cpp +++ b/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.cpp @@ -360,6 +360,14 @@ HWP_STRING CHWPRecordCharShape::GetFontName(ELang eLang) const return m_arFontNames[(int)eLang]; } +short CHWPRecordCharShape::GetRatio(ELang eLang) const +{ + if (ELang::MAX == eLang) + return 0; + + return m_arRatios[(int)eLang]; +} + short CHWPRecordCharShape::GetSpacing(ELang eLang) const { if (ELang::MAX == eLang) diff --git a/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.h b/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.h index 3e6606c28e..b3a978975b 100644 --- a/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.h +++ b/HwpFile/HwpDoc/HWPElements/HWPRecordCharShape.h @@ -121,6 +121,7 @@ public: short GetRelSize(ELang eLang) const; HWP_STRING GetFontName(ELang eLang) const; + short GetRatio(ELang eLang) const; short GetSpacing(ELang eLang) const; int GetTextColor() const; int GetShadeColor() const;