vcl/generic/glyphs/gcach_layout.cxx | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-)
New commits: commit 76abedd3bd1c91cac9b239f746243df00a58d060 Author: Khaled Hosny <khaledho...@eglug.org> Date: Thu May 2 06:19:38 2013 +0200 [harfbuzz] Fix shaping across text runs, take 2 The 3rd parameter of hb_buffer_add_utf() should be the length of the whole text not the current run, so that HarfBuzz can take the context into account when shaping. Change-Id: I369deb27176cbb136de12872b8a70453d5721bea diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx index d562d3b..ad93b9a 100644 --- a/vcl/generic/glyphs/gcach_layout.cxx +++ b/vcl/generic/glyphs/gcach_layout.cxx @@ -465,7 +465,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) hb_buffer_set_direction(pHbBuffer, bRightToLeft ? HB_DIRECTION_RTL: HB_DIRECTION_LTR); hb_buffer_set_script(pHbBuffer, hb_icu_script_to_script(eScriptCode)); hb_buffer_set_language(pHbBuffer, hb_language_from_string(sLanguage.getStr(), -1)); - hb_buffer_add_utf16(pHbBuffer, rArgs.mpStr, nRunLen, nMinRunPos, nRunLen); + hb_buffer_add_utf16(pHbBuffer, rArgs.mpStr, rArgs.mnLength, nMinRunPos, nRunLen); hb_shape(pHbFont, pHbBuffer, NULL, 0); int nRunGlyphCount = hb_buffer_get_length(pHbBuffer); @@ -480,15 +480,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) if (!nGlyphIndex) { if (nCharPos >= 0) - { rArgs.NeedFallback(nCharPos, bRightToLeft); - // XXX: do we need this? HarfBuzz can take context into - // account when shaping - if ((nCharPos > 0) && needPreviousCode(rArgs.mpStr[nCharPos-1])) - rArgs.NeedFallback(nCharPos-1, bRightToLeft); - else if ((nCharPos + 1 < nEndRunPos) && needNextCode(rArgs.mpStr[nCharPos+1])) - rArgs.NeedFallback(nCharPos+1, bRightToLeft); - } if (SAL_LAYOUT_FOR_FALLBACK & rArgs.mnFlags) continue; commit 69a120ccc6a8afdb239912f9b4fbbc123e69d4ca Author: Khaled Hosny <khaledho...@eglug.org> Date: Thu May 2 06:13:58 2013 +0200 Revert "[harfbuzz] Fix shaping across text runs" This reverts commit ca0b580e2a21999d75bcd39ae5b6f81e9e42897b. diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx index a849d9d..d562d3b 100644 --- a/vcl/generic/glyphs/gcach_layout.cxx +++ b/vcl/generic/glyphs/gcach_layout.cxx @@ -422,10 +422,8 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) ((uint64_t) aFtFace->size->metrics.y_scale * (uint64_t) fUnitsPerEM) >> 16); hb_font_set_ppem(pHbFont, aFtFace->size->metrics.x_ppem, aFtFace->size->metrics.y_ppem); - int nTextLen = rArgs.mnEndCharPos - rArgs.mnMinCharPos; - // allocate temporary arrays, note: round to even - int nGlyphCapacity = (3 * nTextLen | 15) + 1; + int nGlyphCapacity = (3 * (rArgs.mnEndCharPos - rArgs.mnMinCharPos) | 15) + 1; rLayout.Reserve(nGlyphCapacity); @@ -467,7 +465,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) hb_buffer_set_direction(pHbBuffer, bRightToLeft ? HB_DIRECTION_RTL: HB_DIRECTION_LTR); hb_buffer_set_script(pHbBuffer, hb_icu_script_to_script(eScriptCode)); hb_buffer_set_language(pHbBuffer, hb_language_from_string(sLanguage.getStr(), -1)); - hb_buffer_add_utf16(pHbBuffer, rArgs.mpStr, nTextLen, nMinRunPos, nRunLen); + hb_buffer_add_utf16(pHbBuffer, rArgs.mpStr, nRunLen, nMinRunPos, nRunLen); hb_shape(pHbFont, pHbBuffer, NULL, 0); int nRunGlyphCount = hb_buffer_get_length(pHbBuffer); @@ -484,14 +482,12 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) if (nCharPos >= 0) { rArgs.NeedFallback(nCharPos, bRightToLeft); -#if 0 // XXX: do we need this? HarfBuzz can take context into // account when shaping if ((nCharPos > 0) && needPreviousCode(rArgs.mpStr[nCharPos-1])) rArgs.NeedFallback(nCharPos-1, bRightToLeft); else if ((nCharPos + 1 < nEndRunPos) && needNextCode(rArgs.mpStr[nCharPos+1])) rArgs.NeedFallback(nCharPos+1, bRightToLeft); -#endif } if (SAL_LAYOUT_FOR_FALLBACK & rArgs.mnFlags) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits