summaryrefslogtreecommitdiffstats
path: root/vcl
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2013-05-02 06:19:38 +0200
committerKhaled Hosny <khaledhosny@eglug.org>2013-05-02 06:19:38 +0200
commit76abedd3bd1c91cac9b239f746243df00a58d060 (patch)
treecfa60de041496c27b241643b6e7a6ec0750436de /vcl
parentRevert "[harfbuzz] Fix shaping across text runs" (diff)
downloadcore-76abedd3bd1c91cac9b239f746243df00a58d060.tar.gz
core-76abedd3bd1c91cac9b239f746243df00a58d060.zip
[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
Diffstat (limited to 'vcl')
-rw-r--r--vcl/generic/glyphs/gcach_layout.cxx10
1 files changed, 1 insertions, 9 deletions
diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx
index d562d3bf7abd..ad93b9af6dab 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;