diff options
author | navin patidar <patidar@kacst.edu.sa> | 2013-02-10 09:40:50 +0300 |
---|---|---|
committer | Lior Kaplan <kaplanlior@gmail.com> | 2013-03-14 18:17:23 +0200 |
commit | fc7a1b54cf8edbc52fb48e89043d3b9f9a742a4b (patch) | |
tree | f76f18de4cda597b92b17eb59a1608d22922df2b | |
parent | bdfab9e9f362512f42b040469633851ba4cfa255 (diff) |
fix fdo#60533, Set TEXT_LAYOUT_BIDI_STRONG flag.
Stop ImplLayoutArgs::ImplLayoutArgs() to perform
ubidi algo on text by setting TEXT_LAYOUT_BIDI_STRONG flag.
Change-Id: I7222517c1db6649eef0c0d9c11cbbbed1fc6bb04
Reviewed-on: https://gerrit.libreoffice.org/2076
Reviewed-by: Ahmad Harthi <aalharthi@kacst.edu.sa>
Tested-by: Ahmad Harthi <aalharthi@kacst.edu.sa>
(cherry picked from commit 6708ad7f1baa8d4cef1718bdef1d26fb5d8510f3)
Signed-off-by: Lior Kaplan <kaplanlior@gmail.com>
-rw-r--r-- | drawinglayer/source/processor2d/vclprocessor2d.cxx | 4 | ||||
-rw-r--r-- | editeng/source/editeng/impedit3.cxx | 18 |
2 files changed, 7 insertions, 15 deletions
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx index aeb83c21ca86..adde6aade165 100644 --- a/drawinglayer/source/processor2d/vclprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx @@ -268,8 +268,8 @@ namespace drawinglayer if(rTextCandidate.getFontAttribute().getRTL()) { - sal_uInt32 nRTLLayoutMode(nOldLayoutMode & ~(TEXT_LAYOUT_COMPLEX_DISABLED|TEXT_LAYOUT_BIDI_STRONG)); - nRTLLayoutMode |= TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_TEXTORIGIN_LEFT; + sal_uInt32 nRTLLayoutMode(nOldLayoutMode & ~(TEXT_LAYOUT_COMPLEX_DISABLED)); + nRTLLayoutMode |= TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_BIDI_STRONG | TEXT_LAYOUT_TEXTORIGIN_LEFT; mpOutputDevice->SetLayoutMode(nRTLLayoutMode); } diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index bada916600a4..bcd3695b3da2 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -4299,18 +4299,13 @@ void ImpEditEngine::ImplInitDigitMode( OutputDevice* pOutDev, String* pString, x void ImpEditEngine::ImplInitLayoutMode( OutputDevice* pOutDev, sal_uInt16 nPara, sal_uInt16 nIndex ) { - sal_Bool bCTL = sal_False; sal_Bool bR2L = sal_False; if ( nIndex == 0xFFFF ) { - bCTL = HasScriptType( nPara, i18n::ScriptType::COMPLEX ); bR2L = IsRightToLeft( nPara ); } else { - ContentNode* pNode = GetEditDoc().GetObject( nPara ); - short nScriptType = GetScriptType( EditPaM( pNode, nIndex+1 ) ); - bCTL = nScriptType == i18n::ScriptType::COMPLEX; // this change was discussed in issue 37190 bR2L = GetRightToLeft( nPara, nIndex + 1) % 2 ? sal_True : sal_False; // it also works for issue 55927 @@ -4319,21 +4314,18 @@ void ImpEditEngine::ImplInitLayoutMode( OutputDevice* pOutDev, sal_uInt16 nPara, sal_uLong nLayoutMode = pOutDev->GetLayoutMode(); // We always use the left postion for DrawText() - nLayoutMode &= ~(TEXT_LAYOUT_BIDI_RTL); + // Let VCL do CTL checking + nLayoutMode &= ~(TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_COMPLEX_DISABLED); - if ( !bCTL && !bR2L) + if ( !bR2L ) { // No CTL/Bidi checking neccessary nLayoutMode |= ( TEXT_LAYOUT_COMPLEX_DISABLED | TEXT_LAYOUT_BIDI_STRONG ); } else { - // CTL/Bidi checking neccessary - // Don't use BIDI_STRONG, VCL must do some checks. - nLayoutMode &= ~( TEXT_LAYOUT_COMPLEX_DISABLED | TEXT_LAYOUT_BIDI_STRONG ); - - if ( bR2L ) - nLayoutMode |= TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_TEXTORIGIN_LEFT; + //Use BIDI_STRONG, Stop VCL to perform ubidi algo on text. + nLayoutMode |= TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_TEXTORIGIN_LEFT | TEXT_LAYOUT_BIDI_STRONG; } pOutDev->SetLayoutMode( nLayoutMode ); |