Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


If the font has no Kashida glyph (or if its width is <= 0) no Kashida
gets inserted but the place of Kashida would still be filled with blank
space (intercharacter) which is wrong.

This patch removes the "reasonable default" value of mnMinKashida which
makes no sense at all; either the font have a Kashida glyph and
mnMinKashida is set to its width or it doesn't and mnMinKashida is kept
0.

This value is then queried in sw and if <= 0 then there is no valid
Kashidas (the place of the return is arbitrary chosen by trial and
error; returning earlier in lcl_CheckKashidaPositions either always
disables Kasida justification or does not have any effect at all.)
---
 sw/source/core/text/itradj.cxx    |    4 ++++
 vcl/generic/glyphs/gcach_ftyp.cxx |    1 -
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/sw/source/core/text/itradj.cxx b/sw/source/core/text/itradj.cxx
index 19fb4d1..190cc4a 100644
--- a/sw/source/core/text/itradj.cxx
+++ b/sw/source/core/text/itradj.cxx
@@ -166,6 +166,10 @@ bool lcl_CheckKashidaPositions( SwScriptInfo& rSI, SwTxtSizeInfo& rInf, 
SwTxtIte
         xub_StrLen nKashidasInAttr = rSI.KashidaJustify ( 0, 0, nIdx, nNext - nIdx );
         if ( nKashidasInAttr )
         {
+            // Kashida glyph looks suspicious, skip Kashida justification
+            if ( rInf.GetOut()->GetMinKashida() <= 0 )
+                return false;
+
             xub_StrLen nKashidasDropped = 0;
             if ( !SwScriptInfo::IsArabicText( rInf.GetTxt(), nIdx, nNext - nIdx ) )
             {
diff --git a/vcl/generic/glyphs/gcach_ftyp.cxx b/vcl/generic/glyphs/gcach_ftyp.cxx
index 44d8958..49bac49 100644
--- a/vcl/generic/glyphs/gcach_ftyp.cxx
+++ b/vcl/generic/glyphs/gcach_ftyp.cxx
@@ -1099,7 +1099,6 @@ void ServerFont::FetchFontMetric( ImplFontMetricData& rTo, long& rFactor ) 
const
 
     // initialize kashida width
     // TODO: what if there are different versions of this glyph available
-    rTo.mnMinKashida = rTo.mnAscent / 4; // a reasonable default
     const int nKashidaGlyphId = GetRawGlyphIndex( 0x0640 );
     if( nKashidaGlyphId )
     {
-- 
1.7.0.4


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.