|
|
|
@ -1203,9 +1203,9 @@ struct MarkLigPosFormat1 |
|
|
|
|
* is identical to the ligature ID of the found ligature. If yes, we |
|
|
|
|
* can directly use the component index. If not, we attach the mark |
|
|
|
|
* glyph to the last component of the ligature. */ |
|
|
|
|
if (IN_LIGID (j) && IN_LIGID (j) == IN_LIGID (c->buffer->in_pos) && IN_COMPONENT (c->buffer->in_pos)) |
|
|
|
|
if (IN_LIGID (j) && IN_LIGID (j) == IN_LIGID (c->buffer->in_pos) && c->buffer->in_string[c->buffer->in_pos].component) |
|
|
|
|
{ |
|
|
|
|
comp_index = IN_COMPONENT (c->buffer->in_pos) - 1; |
|
|
|
|
comp_index = c->buffer->in_string[c->buffer->in_pos].component - 1; |
|
|
|
|
if (comp_index >= comp_count) |
|
|
|
|
comp_index = comp_count - 1; |
|
|
|
|
} |
|
|
|
@ -1308,8 +1308,8 @@ struct MarkMarkPosFormat1 |
|
|
|
|
/* Two marks match only if they belong to the same base, or same component
|
|
|
|
|
* of the same ligature. That is, the component numbers must match, and |
|
|
|
|
* if those are non-zero, the ligid number should also match. */ |
|
|
|
|
if ((IN_COMPONENT (j) != IN_COMPONENT (c->buffer->in_pos)) || |
|
|
|
|
(IN_COMPONENT (j) && IN_LIGID (j) != IN_LIGID (c->buffer->in_pos))) |
|
|
|
|
if ((c->buffer->in_string[j].component != c->buffer->in_string[c->buffer->in_pos].component) || |
|
|
|
|
(c->buffer->in_string[j].component && IN_LIGID (j) != IN_LIGID (c->buffer->in_pos))) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
unsigned int mark2_index = (this+mark2Coverage) (IN_GLYPH (j)); |
|
|
|
|