diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-05-30 22:02:01 -0400 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-05-31 16:38:11 +0000 |
commit | 282227a81df90dfe11f0b57a4d7558d7faa56836 (patch) | |
tree | c069802e4cbf84cec59b1e886af6f745d5be7e8d | |
parent | bdf33526442f4a601e6d2a80a4ec3c690b12c3fa (diff) |
fdo#78927: Use different XML attribute names for asian and complex fonts.
Change-Id: I96a26bd495d6a78fffd0854b5084f69b5db84ee6
(cherry picked from commit 1b35c7ea4f7fe1473dbe08ab93b7259403b290ff)
Reviewed-on: https://gerrit.libreoffice.org/9588
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/source/filter/xml/xmlexprt.cxx | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 885b5bcd688b..058e7198d8d7 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -1075,6 +1075,27 @@ void ScXMLExport::ExportExternalRefCacheStyles() namespace { +void handleFont( + std::vector<XMLPropertyState>& rPropStates, + const SfxPoolItem* p, const UniReference<XMLPropertySetMapper>& xMapper, const OUString& rXMLName ) +{ + sal_Int32 nEntryCount = xMapper->GetEntryCount(); + + // Apparently font info needs special handling. + const SvxFontItem* pItem = static_cast<const SvxFontItem*>(p); + + sal_Int32 nIndexFontName = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, rXMLName, 0); + + if (nIndexFontName == -1 || nIndexFontName >= nEntryCount) + return; + + uno::Any aAny; + if (!pItem->QueryValue(aAny, MID_FONT_FAMILY_NAME)) + return; + + rPropStates.push_back(XMLPropertyState(nIndexFontName, aAny)); +} + const SvxFieldData* toXMLPropertyStates( std::vector<XMLPropertyState>& rPropStates, const std::vector<const SfxPoolItem*>& rSecAttrs, const UniReference<XMLPropertySetMapper>& xMapper, const ScXMLEditAttributeMap& rAttrMap ) @@ -1106,22 +1127,13 @@ const SvxFieldData* toXMLPropertyStates( switch (p->Which()) { case EE_CHAR_FONTINFO: + handleFont(rPropStates, p, xMapper, "font-name"); + break; case EE_CHAR_FONTINFO_CJK: + handleFont(rPropStates, p, xMapper, "font-name-asian"); + break; case EE_CHAR_FONTINFO_CTL: - { - // Apparently font info needs special handling. - const SvxFontItem* pItem = static_cast<const SvxFontItem*>(p); - - sal_Int32 nIndexFontName = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, "font-name", 0); - - if (nIndexFontName == -1 || nIndexFontName >= nEntryCount) - break; - - if (!pItem->QueryValue(aAny, MID_FONT_FAMILY_NAME)) - break; - - rPropStates.push_back(XMLPropertyState(nIndexFontName, aAny)); - } + handleFont(rPropStates, p, xMapper, "font-name-complex"); break; case EE_CHAR_WEIGHT: case EE_CHAR_WEIGHT_CJK: |