38 lines
1.5 KiB
Diff
38 lines
1.5 KiB
Diff
|
diff --git a/contrib/harfbuzz-unicode.c b/contrib/harfbuzz-unicode.c
|
||
|
index 51dd4ea..cb7a85b 100644
|
||
|
--- a/contrib/harfbuzz-unicode.c
|
||
|
+++ b/contrib/harfbuzz-unicode.c
|
||
|
@@ -171,7 +171,10 @@ hb_utf16_script_run_prev(unsigned *num_code_points, HB_ScriptItem *output,
|
||
|
current_script = script;
|
||
|
continue;
|
||
|
} else if (script == HB_Script_Inherited) {
|
||
|
- current_script = script;
|
||
|
+ // Just assume that whatever follows this combining character is within
|
||
|
+ // the same script. This is incorrect if you had language1 + combining
|
||
|
+ // char + language 2, but that is rare and this code is suspicious
|
||
|
+ // anyway.
|
||
|
continue;
|
||
|
} else {
|
||
|
*iter = prev_iter;
|
||
|
diff --git a/src/harfbuzz-shaper.cpp b/src/harfbuzz-shaper.cpp
|
||
|
index f3ec8e1..2b0dfde 100644
|
||
|
--- a/src/harfbuzz-shaper.cpp
|
||
|
+++ b/src/harfbuzz-shaper.cpp
|
||
|
@@ -433,7 +433,7 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item)
|
||
|
|
||
|
// ### zeroWidth and justification are missing here!!!!!
|
||
|
|
||
|
- assert(item->num_glyphs <= length);
|
||
|
+ assert(length <= item->num_glyphs);
|
||
|
|
||
|
// qDebug("QScriptEngine::heuristicSetGlyphAttributes, num_glyphs=%d", item->num_glyphs);
|
||
|
HB_GlyphAttributes *attributes = item->attributes;
|
||
|
@@ -451,7 +451,6 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item)
|
||
|
}
|
||
|
++glyph_pos;
|
||
|
}
|
||
|
- assert(glyph_pos == item->num_glyphs);
|
||
|
|
||
|
// first char in a run is never (treated as) a mark
|
||
|
int cStart = 0;
|