Fix furigana distribution when source/expression kana differs (#1532)
* Fix furigana distribution when source/expression kana differs * Add an additional test
This commit is contained in:
parent
cba45b5e30
commit
8ae78449f2
@ -475,13 +475,15 @@ const JapaneseUtil = (() => {
|
|||||||
|
|
||||||
// Check if source is derived from the reading instead of the expression
|
// Check if source is derived from the reading instead of the expression
|
||||||
const readingStemLength = this._getStemLength(readingNormalized, sourceNormalized);
|
const readingStemLength = this._getStemLength(readingNormalized, sourceNormalized);
|
||||||
if (readingStemLength > stemLength) {
|
if (readingStemLength > 0 && readingStemLength >= stemLength) {
|
||||||
mainText = reading;
|
mainText = reading;
|
||||||
stemLength = readingStemLength;
|
stemLength = readingStemLength;
|
||||||
|
reading = `${source.substring(0, stemLength)}${reading.substring(stemLength)}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const segments = [];
|
const segments = [];
|
||||||
if (stemLength > 0) {
|
if (stemLength > 0) {
|
||||||
|
mainText = `${source.substring(0, stemLength)}${mainText.substring(stemLength)}`;
|
||||||
const segments2 = this.distributeFurigana(mainText, reading);
|
const segments2 = this.distributeFurigana(mainText, reading);
|
||||||
let consumed = 0;
|
let consumed = 0;
|
||||||
for (const segment of segments2) {
|
for (const segment of segments2) {
|
||||||
|
@ -750,6 +750,19 @@ function testDistributeFuriganaInflected() {
|
|||||||
[
|
[
|
||||||
{text: 'おこなわなかった', furigana: ''}
|
{text: 'おこなわなかった', furigana: ''}
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['いい', 'いい', 'イイ'],
|
||||||
|
[
|
||||||
|
{text: 'イイ', furigana: ''}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['否か', 'いなか', '否カ'],
|
||||||
|
[
|
||||||
|
{text: '否', furigana: 'いな'},
|
||||||
|
{text: 'カ', furigana: 'か'}
|
||||||
|
]
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user