Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41f7f9c5 authored by Raph Levien's avatar Raph Levien Committed by Android Git Automerger
Browse files

am fdd40823: am 22a3344c: Merge "Fix for bug 8695466 GPOS combining mark...

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

* commit 'fdd40823':
  Fix for bug 8695466 GPOS combining mark positioning broken before space
parents 39fc3dc0 fdd40823
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -621,11 +621,11 @@ hb_utf16_script_run_prev(ScriptRun* run, const uint16_t *chars, size_t len, ssiz
  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 @@ hb_utf16_script_run_prev(ScriptRun* run, const uint16_t *chars, size_t len, ssiz
        // 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;
    }
  }