mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Don't assume the first glyph is part of the first char
Shaper::save_glyph_results incorrectly starts its loop by setting glyph_span to a length of 1. This means that the `if glyph_span.len() == 0` test in the inner loop will never succeed. Instead the glyph span should start out empty, and a glyph should be added only as the corresponding char is found. For comparison, see the Gecko code this was ported from: https://hg.mozilla.org/mozilla-central/file/ab0044bf/gfx/thebes/gfxHarfBuzzShaper.cpp#l1682
This commit is contained in:
parent
4d05bf23b8
commit
97a58e9689
1 changed files with 1 additions and 2 deletions
|
@ -323,9 +323,8 @@ impl Shaper {
|
|||
// in cases with complex glyph-character associations, 2+ glyphs and 1+ chars can be
|
||||
// processed.
|
||||
while glyph_span.start < glyph_count {
|
||||
// start by looking at just one glyph.
|
||||
glyph_span.end += 1;
|
||||
debug!("Processing glyph at idx={}", glyph_span.start);
|
||||
glyph_span.end = glyph_span.start;
|
||||
|
||||
let char_byte_start = glyph_data.byte_offset_of_glyph(glyph_span.start) as usize;
|
||||
char_byte_span = char_byte_start..char_byte_start;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue