Hello, I've been looking at fdo#34814 and I know what the problem is, but I'm not sure how that should be fixed.
The problem is that the document imported uses Wingdings (2) as the fonts for bullet points, but that's a Windows font that is not available on Linux. The attached workaround somehow makes LO handle it correctly, by knowing that the font is RTL_TEXTENCODING_SYMBOL and using the matching Linux font. And the document includes this information, but the .docx importer does not seem to do anything with font data in the document, and AFAICT there is no support for handling unavailable fonts except for immediately trying to map them to something that exists. Am I right about this? And is there some way how to make Writer know about fonts that do not exist on the system but the document uses them? Sadly the .docx importer is UNO-based, so I cannot easily handle the fonts in the importer and call SetBulletFont(). -- Lubos Lunak l.lu...@suse.cz
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx index ea77e4f..af0f746 100644 --- a/sw/source/core/unocore/unocrsrhelper.cxx +++ b/sw/source/core/unocore/unocrsrhelper.cxx @@ -652,6 +652,10 @@ void setNumberingProperty(const Any& rValue, SwPaM& rPam) FontInfo aInfo = pList->Get( pBulletFontNames[i],WEIGHT_NORMAL, ITALIC_NONE); Font aFont(aInfo); + if( aFont.GetName() == String(RTL_CONSTASCII_USTRINGPARAM("Wingdings" ))) + aFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); + else if( aFont.GetName() == String(RTL_CONSTASCII_USTRINGPARAM("Wingdings 2" ))) + aFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); aFmt.SetBulletFont(&aFont); } aRule.Set( i, aFmt ); diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx index ca9c4b4..3529eac 100644 --- a/sw/source/core/unocore/unosett.cxx +++ b/sw/source/core/unocore/unosett.cxx @@ -1982,6 +1982,10 @@ void SwXNumberingRules::SetNumberingRuleByIndex( FontInfo aInfo = pList->Get( sBulletFontName, WEIGHT_NORMAL, ITALIC_NONE); Font aFont(aInfo); + if( aFont.GetName() == String(RTL_CONSTASCII_USTRINGPARAM("Wingdings" ))) + aFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); + else if( aFont.GetName() == String(RTL_CONSTASCII_USTRINGPARAM("Wingdings 2" ))) + aFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); aFmt.SetBulletFont(&aFont); } else diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index 7a901c5..ae8d220 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -1798,6 +1798,10 @@ void lcl_SetStyleProperty(const SfxItemPropertySimpleEntry& rEntry, FontInfo aInfo = pList->Get( pBulletFontNames[i],WEIGHT_NORMAL, ITALIC_NONE); Font aFont(aInfo); + if( aFont.GetName() == String(RTL_CONSTASCII_USTRINGPARAM("Wingdings" ))) + aFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); + else if( aFont.GetName() == String(RTL_CONSTASCII_USTRINGPARAM("Wingdings 2" ))) + aFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); aFmt.SetBulletFont(&aFont); } aSetRule.Set( i, &aFmt );
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice