diff options
author | Aron Budea <aron.budea@collabora.com> | 2017-02-16 19:36:54 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-02-17 08:32:50 +0000 |
commit | 6e3a84023b46f6be632b43d2f5713d8d4bb2ba62 (patch) | |
tree | b00ca94b520907f98fc43ae8258505767499505e /writerfilter/source | |
parent | fa1ac3381d2c9faf7af562de85a379196a5704de (diff) |
tdf#106001: Treat CharScaleWidth outliers as 100 in DOCX import
Spec limit is [1..600], sometimes documents contain 0,
which, similar to other values outside the limit should be
treated as 100.
Change-Id: I04aec25b638762392de3f9881cd72588f2753e71
Reviewed-on: https://gerrit.libreoffice.org/34341
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'writerfilter/source')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 823640c8e15c..fe7b9a97b0b4 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1694,8 +1694,17 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) rContext->Insert(PROP_CHAR_AUTO_KERNING, uno::makeAny( nIntValue != 0 ) ); break; case NS_ooxml::LN_EG_RPrBase_w: - rContext->Insert(PROP_CHAR_SCALE_WIDTH, - uno::makeAny( sal_Int16(nIntValue) )); + // ST_TextScale must fall between 1% and 600% according to spec, otherwise resets to 100% according to experience + if ((1 <= nIntValue) && (nIntValue <= 600)) + { + rContext->Insert(PROP_CHAR_SCALE_WIDTH, + uno::makeAny( sal_Int16(nIntValue) )); + } + else + { + rContext->Insert(PROP_CHAR_SCALE_WIDTH, + uno::makeAny( sal_Int16(100) )); + } break; case NS_ooxml::LN_EG_RPrBase_imprint: // FontRelief: NONE, EMBOSSED, ENGRAVED |