am fdd40823: am 22a3344c: Merge "Fix for bug 8695466 GPOS combining mark positioning broken before space" into jb-mr2-dev

* commit 'fdd408233db5bd70cb43ddf2a49a85bd748da5b9':
  Fix for bug 8695466 GPOS combining mark positioning broken before space
diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp
index a2120df..2704371 100644
--- a/core/jni/android/graphics/TextLayoutCache.cpp
+++ b/core/jni/android/graphics/TextLayoutCache.cpp
@@ -621,11 +621,11 @@
   const hb_script_t init_script = code_point_to_script(init_cp);
   hb_script_t current_script = init_script;
   run->script = init_script;
+  size_t break_iter = *iter;
 
   for (;;) {
     if (*iter < 0)
       break;
-    const ssize_t prev_iter = *iter;
     const uint32_t cp = utf16_to_code_point_prev(chars, len, iter);
     const hb_script_t script = code_point_to_script(cp);
 
@@ -634,21 +634,18 @@
         // If we started off as inherited, we take whatever we can find.
         run->script = script;
         current_script = script;
+        // In cases of script1 + inherited + script2, always group the inherited
+        // with script1.
+        break_iter = *iter;
         continue;
       } else if (script == HB_SCRIPT_INHERITED) {
-        /* BEGIN android-changed
-           We apply the same fix for Chrome to Android.
-           Chrome team will talk with upsteam about it.
-           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.
-           END android-changed */
         continue;
       } else {
-        *iter = prev_iter;
+        *iter = break_iter;
         break;
       }
+    } else {
+        break_iter = *iter;
     }
   }