--- scriptinfo.1.19.hxx 2007-09-27 08:58:02.000000000 +0000 +++ scriptinfo.hxx 2008-04-11 07:23:13.833000000 +0000 @@ -107,6 +107,7 @@ private: SvXub_StrLens aDirChg; SvBytes aDirType; SvXub_StrLens aKashida; + SvXub_StrLens aKashidaInvalid; SvXub_StrLens aCompChg; SvXub_StrLens aCompLen; SvXub_StrLens aHiddenChg; @@ -116,6 +117,9 @@ private: void UpdateBidiInfo( const String& rTxt ); + sal_Bool IsKashidaValid ( xub_StrLen nKashPos ) const; + void MarkKashidaInvalid ( xub_StrLen nKashPos ); + public: enum CompType { KANA, SPECIAL_LEFT, SPECIAL_RIGHT, NONE }; @@ -263,9 +267,21 @@ public: The value which has to be added to a kashida opportunity. @return The number of kashida opportunities in the given range */ - USHORT KashidaJustify( sal_Int32* pKernArray ,sal_Int32* pScrArray, - xub_StrLen nIdx, xub_StrLen nLen, - long nSpaceAdd = 0 ) const; + USHORT KashidaJustify( sal_Int32* pKernArray, + sal_Int32* pScrArray, + xub_StrLen nStt, + xub_StrLen nLen, + long nSpaceAdd = 0) const; + +/** Marks a kashida as invalid for the given text range. + Returns the number of remaining valid kashidas for + the text range. +*/ + USHORT DropKashida ( xub_StrLen nStt, xub_StrLen nLen ); + +/** Clears array of kashidas marked as invalid +*/ + void ClearDroppedKashidas (); /** Checks if language is one of the 16 Arabic languages @@ -303,6 +319,7 @@ public: sal_Bool bAllowInvalid = sal_False ); static BYTE WhichFont( xub_StrLen nIdx, const String* pTxt, const SwScriptInfo* pSI ); + }; inline void SwScriptInfo::SetInvalidity( const xub_StrLen nPos )