Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use byte indices instead of char indices for text runs #10895

Merged
merged 4 commits into from Apr 29, 2016
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

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
  • Loading branch information
mbrubeck committed Apr 28, 2016
commit 97a58e96898a67b585419b73fa411fb4c12be54a
@@ -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;
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.