Normalize Katakana to Hiragana in ScriptRunIterator

This patch normalizes Katakana to Hiragana in ScriptData, and
thus in ScriptRunIterator.

There are 3 ICU script code for kana; USCRIPT_HIRAGANA,
USCRIPT_KATAKANA, and USCRIPT_KATAKANA_OR_HIRAGANA. However,
OpenType has only one 'kana' for all these 3 script codes.

When shaping, HarfBuzz handles the normalization. However,
Blink splits the incoming string by the ICU scripts.
Splitting these 3 scripts is not useful but consumes CPU
and memory.

By normalizing in ScriptRunIterator, all types of Kana are
in single run.

timeToFirstContentfulPaint:layout shows ~3% improvements
https://pinpoint-dot-chromeperf.appspot.com/job/10d9760fe40000

though bink_perf.layout does not show much differences
https://pinpoint-dot-chromeperf.appspot.com/job/14f19c00140000

This is probably because Katakana characters are not used
much in `japanese-kokoro-insert` (written in ~100 years ago,)
while they are more used in modern pages.

Bug: 636993
Change-Id: If692bb575f2232b8fca10cd2ea87e3022debdf05
Reviewed-on: https://chromium-review.googlesource.com/c/1337650
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609119}
2 files changed