Add TODO item
This commit is contained in:
parent
5aec2fb8d0
commit
9ac9af725c
|
@ -996,7 +996,29 @@ static inline bool apply_lookup (hb_apply_context_t *c,
|
||||||
if (!delta)
|
if (!delta)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Recursed lookup changed buffer len. Adjust. */
|
/* Recursed lookup changed buffer len. Adjust.
|
||||||
|
*
|
||||||
|
* TODO:
|
||||||
|
*
|
||||||
|
* Right now, if buffer length increased by n, we assume n new glyphs
|
||||||
|
* were added right after the current position, and if buffer length
|
||||||
|
* was decreased by n, we assume n match positions after the current
|
||||||
|
* one where removed. The former (buffer length increased) case is
|
||||||
|
* fine, but the decrease case can be improved in at least two ways,
|
||||||
|
* both of which are significant:
|
||||||
|
*
|
||||||
|
* - If recursed-to lookup is MultipleSubst and buffer length
|
||||||
|
* decreased, then it's current match position that was deleted,
|
||||||
|
* NOT the one after it.
|
||||||
|
*
|
||||||
|
* - If buffer length was decreased by n, it does not necessarily
|
||||||
|
* mean that n match positions where removed, as there might
|
||||||
|
* have been marks and default-ignorables in the sequence. We
|
||||||
|
* should instead drop match positions between current-position
|
||||||
|
* and current-position + n instead.
|
||||||
|
*
|
||||||
|
* It should be possible to construct tests for both of these cases.
|
||||||
|
*/
|
||||||
|
|
||||||
end += delta;
|
end += delta;
|
||||||
if (end < int (match_positions[idx]))
|
if (end < int (match_positions[idx]))
|
||||||
|
|
Loading…
Reference in New Issue