summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper/FontTable.cxx
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2011-03-03 14:38:21 +0100
committerLuboš Luňák <l.lunak@suse.cz>2011-03-03 14:39:29 +0100
commitd5254f9aa29dffd045bf5f42104afdc1923dd8f2 (patch)
tree93a03ddd9a90acfd3d1150b82198aa5ebba264a0 /writerfilter/source/dmapper/FontTable.cxx
parent3df75d3c0a485a447981d9944b11d3d475cdbc32 (diff)
read w:characterSet (fdo#34814)
Diffstat (limited to 'writerfilter/source/dmapper/FontTable.cxx')
-rw-r--r--writerfilter/source/dmapper/FontTable.cxx24
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)