aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/harfbuzz/chromium.patch
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/harfbuzz/chromium.patch')
-rw-r--r--third_party/harfbuzz/chromium.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/third_party/harfbuzz/chromium.patch b/third_party/harfbuzz/chromium.patch
new file mode 100644
index 0000000000..0f20dfd19e
--- /dev/null
+++ b/third_party/harfbuzz/chromium.patch
@@ -0,0 +1,37 @@
+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;