Comment 59 for bug 39890

Revision history for this message
In , Jason Crain (jcrain) wrote :

The difference in character width is because of this change:

@@ -863,7 +839,7 @@ void TextLine::coalesce(UnicodeMap *uMap) {
  word0->spaceAfter = gTrue;
  word0 = word1;
  word1 = word1->next;
- } else if (word0->font == word1->font &&
+ } else if (word0->font[word0->len - 1] == word1->font[0] &&
    word0->underlined == word1->underlined &&
    fabs(word0->fontSize - word1->fontSize) <
      maxWordFontSizeDelta * words->fontSize &&

Before, the words "Fumi" and "K" were being merged. Letters "F" and "K" are using the font BookmanOldStyle. Letters "umi" are using ArialMT. Because of this font check, the words are no longer being merged, making the width of the i different.

Yes, it is possible for one word to have fonts with different WModes. Still looking into it, but I suppose it will need to start a new word on WMode changes.

Carlos: I don't know why you do not see a difference. Without this patch, selecting text in the minimal example changes the text to "ABC". With this patch, it stays "BCD".