Add TODO item

This commit is contained in:
Behdad Esfahbod 2017-03-05 13:51:01 -08:00
parent 5aec2fb8d0
commit 9ac9af725c
1 changed files with 23 additions and 1 deletions

View File

@ -996,7 +996,29 @@ static inline bool apply_lookup (hb_apply_context_t *c,
if (!delta)
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;
if (end < int (match_positions[idx]))