diff --git a/OOXML/DocxFormat/Numbering.cpp b/OOXML/DocxFormat/Numbering.cpp index aa133538dc..f0cfb1a518 100644 --- a/OOXML/DocxFormat/Numbering.cpp +++ b/OOXML/DocxFormat/Numbering.cpp @@ -112,7 +112,7 @@ namespace ComplexTypes if ( m_sVal.IsInit() ) { - sResult += L"w:val=\"" + *m_sVal + L"\" "; + sResult += L"w:val=\"" + XmlUtils::EncodeXmlString(*m_sVal, false) + L"\" "; } return sResult; } diff --git a/OOXML/DocxFormat/Numbering.h b/OOXML/DocxFormat/Numbering.h index 3becb5a092..5f1bb1dc62 100644 --- a/OOXML/DocxFormat/Numbering.h +++ b/OOXML/DocxFormat/Numbering.h @@ -87,9 +87,8 @@ namespace ComplexTypes void ReadAttributes(XmlUtils::CXmlLiteReader& oReader); public: - - nullable m_oNull; - nullable_string m_sVal; + nullable m_oNull; + nullable_string m_sVal; }; //-------------------------------------------------------------------------------- diff --git a/RtfFile/Format/RtfOldList.cpp b/RtfFile/Format/RtfOldList.cpp index 41ddd90806..469b5e0f58 100644 --- a/RtfFile/Format/RtfOldList.cpp +++ b/RtfFile/Format/RtfOldList.cpp @@ -40,6 +40,10 @@ std::wstring RtfOldList::RenderToRtf(RenderParameter oRenderParameter) sResult += m_oText->RenderToRtf( oRenderParameter ); return sResult; } +static inline bool IsControlSymbol(unsigned short c) +{ + return (c <= 31) ? (true) : (false); +} std::wstring RtfOldList::RenderToOOX(RenderParameter oRenderParameter) { std::wstring sResult; @@ -61,12 +65,15 @@ std::wstring RtfOldList::RenderToOOX(RenderParameter oRenderParameter) if(!sText.empty() ) { - // В символьном шрифте обрезать надо, в других случаях - нет - if (/*bIsSymbol && */(sText[0] & 0xF000) != 0) + wchar_t xchBullet = sText[0]; + if ((xchBullet & 0xF000) != 0) { - sText[0] &= 0x00FF; + xchBullet &= 0x00FF; + } + if (!IsControlSymbol(xchBullet)) + { + sResult += L""; } - sResult += L""; } else {