diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/gdi/outdev3.cxx | 5 | ||||
-rw-r--r-- | vcl/win/source/gdi/winlayout.cxx | 11 |
2 files changed, 9 insertions, 7 deletions
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx index ec235cc487b3..5aa82a3562cf 100644 --- a/vcl/source/gdi/outdev3.cxx +++ b/vcl/source/gdi/outdev3.cxx @@ -5906,7 +5906,10 @@ ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( String& rStr, || ((*pStr >= 0x1100) && (*pStr < 0x1200)) // hangul jamo || ((*pStr >= 0x1700) && (*pStr < 0x1900)) // many CTL scripts || ((*pStr >= 0xFB1D) && (*pStr < 0xFE00)) // middle east presentation - || ((*pStr >= 0xFE70) && (*pStr < 0xFEFF)) ) // arabic presentation B + || ((*pStr >= 0xFE70) && (*pStr < 0xFEFF)) // arabic presentation B + || ((*pStr >= 0xFE00) && (*pStr < 0xFE10)) // variation selectors in BMP + || ((pStr + 1 < pEnd) && (pStr[0] == 0xDB40) && (0xDD00 <= pStr[1]) && (pStr[1] < 0xDEF0)) // variation selector supplement + ) break; if( pStr >= pEnd ) nLayoutFlags |= SAL_LAYOUT_COMPLEX_DISABLED; diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx index b4b719845605..eb8c88985dc4 100644 --- a/vcl/win/source/gdi/winlayout.cxx +++ b/vcl/win/source/gdi/winlayout.cxx @@ -85,8 +85,8 @@ using namespace rtl; class ImplWinFontEntry : public ImplFontEntry { public: - ImplWinFontEntry( ImplFontSelectData& ); - ~ImplWinFontEntry(); + explicit ImplWinFontEntry( ImplFontSelectData& ); + virtual ~ImplWinFontEntry(); private: // TODO: also add HFONT??? Watch out for issues with too many active fonts... @@ -1306,6 +1306,7 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs ) SCRIPT_CONTROL aScriptControl = {nLangId,false,false,false,false,false,false,false,false,0}; aScriptControl.fNeutralOverride = aScriptState.fOverrideDirection; aScriptControl.fContextDigits = (0 != (rArgs.mnFlags & SAL_LAYOUT_SUBSTITUTE_DIGITS)); + aScriptControl.fMergeNeutralItems = true; // determine relevant substring and work only on it // when Bidi status is unknown we need to look at the whole string though mnSubStringMin = 0; @@ -1542,11 +1543,10 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs ) { if( mpLogClusters[ c ] == i ) { - // --> HDU/FME 2005-10-25 #i55716# skip WORDJOINER + // #i55716# skip WORDJOINER if( rArgs.mpStr[ c ] == 0x2060 ) mpOutGlyphs[ i + rVisualItem.mnMinGlyphPos ] = 1; else - // <-- rArgs.NeedFallback( c, false ); } } @@ -1558,11 +1558,10 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs ) { if( mpLogClusters[ c ] == i ) { - // --> HDU/FME 2005-10-25 #i55716# skip WORDJOINER + // #i55716# skip WORDJOINER if( rArgs.mpStr[ c ] == 0x2060 ) mpOutGlyphs[ i + rVisualItem.mnMinGlyphPos ] = 1; else - // <-- rArgs.NeedFallback( c, true ); } } |