diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2011-03-03 14:38:21 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2011-03-03 14:39:29 +0100 |
commit | d5254f9aa29dffd045bf5f42104afdc1923dd8f2 (patch) | |
tree | 93a03ddd9a90acfd3d1150b82198aa5ebba264a0 /writerfilter/source/dmapper/FontTable.cxx | |
parent | 3df75d3c0a485a447981d9944b11d3d475cdbc32 (diff) |
read w:characterSet (fdo#34814)
Diffstat (limited to 'writerfilter/source/dmapper/FontTable.cxx')
-rw-r--r-- | writerfilter/source/dmapper/FontTable.cxx | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/writerfilter/source/dmapper/FontTable.cxx b/writerfilter/source/dmapper/FontTable.cxx index 5557bb869078..3459fedba359 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<Properties>::Pointer_t pProperties = r_Sprm.getProps(); + if( pProperties.get()) + pProperties->resolve(*this); } void FontTable::entry(int /*pos*/, writerfilter::Reference<Properties>::Pointer_t ref) |