diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-03-15 23:02:38 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-15 23:02:38 -0400 | 
| commit | 8ae78449f205715d894efb34e786e947199ee28e (patch) | |
| tree | 28a3939b7469a5e4ca49d301871090c9e9d74a3f | |
| parent | cba45b5e304afe0623e1d032d65e5efc2fc3929b (diff) | |
Fix furigana distribution when source/expression kana differs (#1532)
* Fix furigana distribution when source/expression kana differs
* Add an additional test
| -rw-r--r-- | ext/js/language/japanese-util.js | 4 | ||||
| -rw-r--r-- | test/test-japanese.js | 13 | 
2 files changed, 16 insertions, 1 deletions
| diff --git a/ext/js/language/japanese-util.js b/ext/js/language/japanese-util.js index aa1e3f00..cade393b 100644 --- a/ext/js/language/japanese-util.js +++ b/ext/js/language/japanese-util.js @@ -475,13 +475,15 @@ const JapaneseUtil = (() => {              // Check if source is derived from the reading instead of the expression              const readingStemLength = this._getStemLength(readingNormalized, sourceNormalized); -            if (readingStemLength > stemLength) { +            if (readingStemLength > 0 && readingStemLength >= stemLength) {                  mainText = reading;                  stemLength = readingStemLength; +                reading = `${source.substring(0, stemLength)}${reading.substring(stemLength)}`;              }              const segments = [];              if (stemLength > 0) { +                mainText = `${source.substring(0, stemLength)}${mainText.substring(stemLength)}`;                  const segments2 = this.distributeFurigana(mainText, reading);                  let consumed = 0;                  for (const segment of segments2) { diff --git a/test/test-japanese.js b/test/test-japanese.js index 8e8078d1..978f4b9c 100644 --- a/test/test-japanese.js +++ b/test/test-japanese.js @@ -750,6 +750,19 @@ function testDistributeFuriganaInflected() {              [                  {text: 'おこなわなかった', furigana: ''}              ] +        ], +        [ +            ['いい', 'いい', 'イイ'], +            [ +                {text: 'イイ', furigana: ''} +            ] +        ], +        [ +            ['否か', 'いなか', '否カ'], +            [ +                {text: '否', furigana: 'いな'}, +                {text: 'カ', furigana: 'か'} +            ]          ]      ]; |