This is to incorporate it into GSUB/GPOS processing.
for (unsigned int i = 0; i < len; i++)
fix_mark_attachment (pos, i, direction);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, syllable);
HB_BUFFER_DEALLOCATE_VAR (buffer, lig_props);
HB_BUFFER_DEALLOCATE_VAR (buffer, props_cache);
}
{
HB_BUFFER_ALLOCATE_VAR (buffer, props_cache);
HB_BUFFER_ALLOCATE_VAR (buffer, lig_props);
+ HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
unsigned int count = buffer->len;
for (unsigned int i = 0; i < count; i++)
- buffer->info[i].props_cache() = buffer->info[i].lig_props() = 0;
+ buffer->info[i].props_cache() = buffer->info[i].lig_props() = buffer->info[i].syllable() = 0;
}
void
-/* buffer var allocations */
-#define lig_props() var2.u8[3]
-
/* unique ligature id */
/* component number in the ligature (0 = base) */
static inline void
#include "hb-font-private.hh"
#include "hb-buffer-private.hh"
+#include "hb-ot-shape-complex-private.hh"
* GDEF
*/
-/* buffer var allocations */
-#define props_cache() var1.u16[1] /* glyph_props cache */
-
/* XXX cleanup */
typedef enum {
HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0x0001,
action next_syllable {
for (unsigned int i = last; i < p; i++)
- info[i].indic_syllable() = syllable_serial;
+ info[i].syllable() = syllable_serial;
last = p;
syllable_serial++;
}
/* buffer var allocations */
#define indic_category() complex_var_persistent_u8_0() /* indic_category_t */
#define indic_position() complex_var_persistent_u8_1() /* indic_matra_category_t */
-#define indic_syllable() complex_var_persistent_u8_2() /* serial */
#define INDIC_TABLE_ELEMENT_TYPE uint8_t
{
HB_BUFFER_ALLOCATE_VAR (buffer, indic_category);
HB_BUFFER_ALLOCATE_VAR (buffer, indic_position);
- HB_BUFFER_ALLOCATE_VAR (buffer, indic_syllable);
/* We cannot setup masks here. We save information about characters
* and setup masks later on in a pause-callback. */
hb_glyph_info_t *info = buffer->info;
unsigned int last = 0;
- unsigned int last_syllable = info[0].indic_syllable();
+ unsigned int last_syllable = info[0].syllable();
for (unsigned int i = 1; i < count; i++)
- if (last_syllable != info[i].indic_syllable()) {
+ if (last_syllable != info[i].syllable()) {
final_reordering_syllable (buffer, last, i);
last = i;
- last_syllable = info[last].indic_syllable();
+ last_syllable = info[last].syllable();
}
final_reordering_syllable (buffer, last, count);
- HB_BUFFER_DEALLOCATE_VAR (buffer, indic_syllable);
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_category);
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_position);
}
#define unicode_props0() var1.u8[0]
#define unicode_props1() var1.u8[1]
+/* buffer var allocations, used during the GSUB/GPOS processing */
+#define props_cache() var1.u16[1] /* GSUB/GPOS glyph_props cache */
+#define syllable() var2.u8[0] /* GSUB/GPOS shaping boundaries */
+#define lig_props() var2.u8[1] /* GSUB/GPOS ligature tracking */
+
/* buffer var allocations, used by complex shapers */
-#define complex_var_persistent_u8_0() var2.u8[0]
-#define complex_var_persistent_u8_1() var2.u8[1]
-#define complex_var_persistent_u8_2() var2.u8[2]
-#define complex_var_persistent_u16() var2.u16[0]
-#define complex_var_temporary_u8() var2.u8[3]
+#define complex_var_persistent_u8_0() var2.u8[2]
+#define complex_var_persistent_u8_1() var2.u8[3]
+#define complex_var_temporary_u8() var2.u8[0]
#define HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS \