Index: sd/source/filter/eppt/epptso.cxx =================================================================== RCS file: /cvs/graphics/sd/source/filter/eppt/epptso.cxx,v retrieving revision 1.90 diff -u -r1.90 epptso.cxx --- sd/source/filter/eppt/epptso.cxx 6 Mar 2006 09:03:32 -0000 1.90 +++ sd/source/filter/eppt/epptso.cxx 26 Oct 2006 17:40:59 -0000 @@ -1773,6 +1808,7 @@ { String aString( rXTextRange->getString() ); String aURL; + BOOL bRTL_endingParen = FALSE; mnTextSize = aString.Len(); if ( bLast ) @@ -1821,8 +1857,15 @@ } else { - mpText = new sal_uInt16[ mnTextSize ]; const sal_Unicode* pText = aString.GetBuffer(); + // For i39516 - a closing parenthesis that ends an RTL string is displayed backwards by PPT + // Solution: add a Unicode Right-to-Left Mark, following the method described in i18024 + if (mbLastPortion && pText[ aString.Len() - 1 ] == sal_uInt16(')') && mnAsianOrComplexFont) + { + mnTextSize++; + bRTL_endingParen = TRUE; + } + mpText = new sal_uInt16[ mnTextSize ]; sal_uInt16 nChar; for ( int i = 0; i < aString.Len(); i++ ) { @@ -1873,6 +1916,9 @@ mpText[ i ] = nChar; } } + if (bRTL_endingParen) + mpText[ mnTextSize - 2 ] = 0x200F; // Unicode Right-to-Left mark + if ( bLast ) mpText[ mnTextSize - 1 ] = 0xd;