Hi Jonathan, I'm investigating this. Can you send me the exact version of DejaVuSansMono and the sample text reproducing this please.
Thanks, behdad On 08/23/10 13:46, Jonathan Kew wrote: > Hi Behdad, > > I notice that the code in MarkArray::apply() includes the following: > > hb_internal_glyph_position_t &o = c->buffer->pos[c->buffer->i]; > o.x_advance = 0; > o.y_advance = 0; > o.x_offset = base_x - mark_x; > o.y_offset = base_y - mark_y; > o.back = c->buffer->i - glyph_pos; > > i.e. in addition to setting x_offset and y_offset so as to position the mark > glyph, it also explicitly overrides any existing x_advance and y_advance > values for the glyph, settings them to zero. In many cases, this is harmless > (though redundant), as mark glyphs are typically designed with zero advance > anyway. > > However, I'm seeing problems in several monospaced fonts as a result of this; > an example is DejaVuSansMono.ttf. Here, the mark glyphs have the same > (non-zero) advance as the rest of the glyphs -- logical, I suppose, for a > fixed-width font. There is a GPOS 'mark' feature that positions diacritics > such as the U+03xx range. The trouble is that this feature actually executes > TWO lookups for these glyphs: first, it does a MarkToBase Attachment (type > 4), to place the diacritic over the base glyph, AND THEN it does a Single > Adjustment that modifies the advance of the diacritic glyph by the negative > of its original advance. This is clearly intended to make it become > zero-width; but because harfbuzz has already zeroed the advance, it now ends > up with a NEGATIVE advance, and the result is that the next glyph completely > overprints the accented character. > > So unless you know of specific reasons why it is necessary to zero the > x_advance and y_advance values here (are there examples of fonts where the > rendering is incorrect without this?), I'd suggest removing those two lines, > as in the attached patch. > > With that change, I'm getting the expected rendering with DejaVuSansMono. > (The same issue occurs with the Consolas font on Windows7, for example.) > > JK > > > > > > > _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/harfbuzz