Fix: ICU layout: Glyph to char mapping with multiple runs

See: https://github.com/OpenTTD/OpenTTD/issues/11203
See: https://github.com/OpenTTD/OpenTTD/issues/10790
pull/590/head
Jonathan G Rennison 10 months ago
parent 6ccf3774b6
commit 8dc953c590

@ -208,7 +208,7 @@ void ICURun::Shape(UChar *buff, size_t buff_length) {
x_advance = glyph_pos[i].x_advance / FONT_SCALE;
}
this->glyph_to_char.push_back(glyph_info[i].cluster - this->start);
this->glyph_to_char.push_back(glyph_info[i].cluster);
this->advance.push_back(x_advance);
advance += x_advance;
}
@ -467,7 +467,7 @@ std::unique_ptr<const ICUParagraphLayout::Line> ICUParagraphLayout::NextLine(int
/* There is no suitable line-break and this is the only run on the
* line. So we break at the cluster. This is not pretty, but the
* best we can do. */
new_partial_length = char_pos - this->partial_offset;
new_partial_length = char_pos - overflow_run->start - this->partial_offset;
}
}

Loading…
Cancel
Save