diff --git a/writerfilter/source/dmapper/FontTable.cxx b/writerfilter/source/dmapper/FontTable.cxx index 8410780..5ebf867 100644 --- a/writerfilter/source/dmapper/FontTable.cxx +++ b/writerfilter/source/dmapper/FontTable.cxx @@ -101,6 +101,18 @@ void FontTable::attribute(Id Name, Value & val) case NS_ooxml::LN_CT_Font_name: m_pImpl->pCurrentEntry->sFontName = sValue; break; + case NS_ooxml::LN_CT_Charset_val: + // w:characterSet has higher priority, set only if that one is not set + if( m_pImpl->pCurrentEntry->nTextEncoding == RTL_TEXTENCODING_DONTKNOW ) + m_pImpl->pCurrentEntry->nTextEncoding = rtl_getTextEncodingFromWindowsCharset( nIntValue ); + break; + case NS_ooxml::LN_CT_Charset_characterSet: + { + rtl::OString tmp; + sValue.convertToString( &tmp, RTL_TEXTENCODING_ASCII_US, OUSTRING_TO_OSTRING_CVTFLAGS ); + m_pImpl->pCurrentEntry->nTextEncoding = rtl_getTextEncodingFromMimeCharset( tmp ); + break; + } default: { //----> debug @@ -125,12 +137,16 @@ void FontTable::sprm(Sprm& rSprm) switch(nSprmId) { case NS_ooxml::LN_CT_Font_charset: - m_pImpl->pCurrentEntry->nTextEncoding = rtl_getTextEncodingFromWindowsCharset( nIntValue ); - break; - default: - break; + resolveSprm( rSprm ); + break; } +} +void FontTable::resolveSprm(Sprm & r_Sprm) +{ + writerfilter::Reference::Pointer_t pProperties = r_Sprm.getProps(); + if( pProperties.get()) + pProperties->resolve(*this); } void FontTable::entry(int /*pos*/, writerfilter::Reference::Pointer_t ref) diff --git a/writerfilter/source/dmapper/FontTable.hxx b/writerfilter/source/dmapper/FontTable.hxx index 84f0b02..7344203 100644 --- a/writerfilter/source/dmapper/FontTable.hxx +++ b/writerfilter/source/dmapper/FontTable.hxx @@ -75,6 +75,7 @@ public: // Properties virtual void attribute(Id Name, Value & val); virtual void sprm(Sprm & sprm); + void resolveSprm(Sprm & r_sprm); // Table virtual void entry(int pos, writerfilter::Reference::Pointer_t ref); diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index ba836fe..2285cec 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -20377,7 +20377,12 @@ - + + + + + + @@ -20433,6 +20438,18 @@ + + + + + + + + + + + + @@ -23282,6 +23299,10 @@ + + + + decorative modern @@ -23318,6 +23339,7 @@ +