#endif
/* convenience macros */
-#define IN_INFO(pos) (&BUFFER->in_string[(pos)])
#define IN_CURGLYPH() (BUFFER->in_string[BUFFER->in_pos].codepoint)
-#define IN_NEXTGLYPH() (BUFFER->in_string[BUFFER->in_pos + 1].codepoint)
#define IN_CURINFO() (&BUFFER->in_string[BUFFER->in_pos])
HB_END_DECLS
return false;
unsigned int j = c->buffer->in_pos + 1;
- while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), c->lookup_flag, NULL))
+ while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], c->lookup_flag, NULL))
{
if (unlikely (j == end))
return false;
return false;
unsigned int j = c->buffer->in_pos + 1;
- while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), c->lookup_flag, NULL))
+ while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], c->lookup_flag, NULL))
{
if (unlikely (j == end))
return false;
if (unlikely (!j))
return false;
j--;
- } while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), LookupFlag::IgnoreMarks, &property));
+ } while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], LookupFlag::IgnoreMarks, &property));
/* The following assertion is too strong, so we've disabled it. */
if (false && !(property & HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH))
if (unlikely (!j))
return false;
j--;
- } while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), LookupFlag::IgnoreMarks, &property));
+ } while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], LookupFlag::IgnoreMarks, &property));
/* The following assertion is too strong, so we've disabled it. */
if (false && !(property & HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE))
if (unlikely (!j))
return false;
j--;
- } while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), c->lookup_flag, &property));
+ } while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], c->lookup_flag, &property));
if (!(property & HB_OT_LAYOUT_GLYPH_CLASS_MARK))
return false;
for (i = 1, j = c->buffer->in_pos + 1; i < count; i++, j++)
{
unsigned int property;
- while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), c->lookup_flag, &property))
+ while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], c->lookup_flag, &property))
{
if (unlikely (j + count - i == end))
return false;
for (i = 1, j = c->buffer->in_pos + 1; i < count; i++, j++)
{
- while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), c->lookup_flag, NULL))
+ while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], c->lookup_flag, NULL))
{
if (unlikely (j + count - i == end))
return false;
for (i = 0, j = c->buffer->in_pos + offset; i < count; i++, j++)
{
- while (_hb_ot_layout_skip_mark (c->layout->face, IN_INFO (j), c->lookup_flag, NULL))
+ while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->in_string[j], c->lookup_flag, NULL))
{
if (unlikely (j + count - i == end))
return false;
return;
count = buffer->in_length - 1;
for (buffer->in_pos = 0; buffer->in_pos < count; buffer->in_pos++) {
- if (unlikely (is_variation_selector (IN_NEXTGLYPH()))) {
- IN_CURGLYPH() = hb_font_get_glyph (font, face, IN_CURGLYPH(), IN_NEXTGLYPH());
+ if (unlikely (is_variation_selector (buffer->in_string[buffer->in_pos + 1].codepoint))) {
+ IN_CURGLYPH() = hb_font_get_glyph (font, face, IN_CURGLYPH(), buffer->in_string[buffer->in_pos + 1].codepoint);
buffer->in_pos++;
} else {
IN_CURGLYPH() = hb_font_get_glyph (font, face, IN_CURGLYPH(), 0);