[indic-like] Move allocation of syllable() buffer var to shapers that use it
In indic, we don't have a pause location release the var.
This commit is contained in:
parent
104dc85a22
commit
15543f70e0
|
@ -260,7 +260,6 @@ _hb_ot_layout_set_glyph_props (hb_font_t *font,
|
||||||
{
|
{
|
||||||
_hb_glyph_info_set_glyph_props (&buffer->info[i], gdef.get_glyph_props (buffer->info[i].codepoint));
|
_hb_glyph_info_set_glyph_props (&buffer->info[i], gdef.get_glyph_props (buffer->info[i].codepoint));
|
||||||
_hb_glyph_info_clear_lig_props (&buffer->info[i]);
|
_hb_glyph_info_clear_lig_props (&buffer->info[i]);
|
||||||
buffer->info[i].syllable() = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -589,13 +589,11 @@ _hb_buffer_allocate_gsubgpos_vars (hb_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
HB_BUFFER_ALLOCATE_VAR (buffer, glyph_props);
|
HB_BUFFER_ALLOCATE_VAR (buffer, glyph_props);
|
||||||
HB_BUFFER_ALLOCATE_VAR (buffer, lig_props);
|
HB_BUFFER_ALLOCATE_VAR (buffer, lig_props);
|
||||||
HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
_hb_buffer_deallocate_gsubgpos_vars (hb_buffer_t *buffer)
|
_hb_buffer_deallocate_gsubgpos_vars (hb_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
HB_BUFFER_DEALLOCATE_VAR (buffer, syllable);
|
|
||||||
HB_BUFFER_DEALLOCATE_VAR (buffer, lig_props);
|
HB_BUFFER_DEALLOCATE_VAR (buffer, lig_props);
|
||||||
HB_BUFFER_DEALLOCATE_VAR (buffer, glyph_props);
|
HB_BUFFER_DEALLOCATE_VAR (buffer, glyph_props);
|
||||||
}
|
}
|
||||||
|
@ -605,7 +603,6 @@ _hb_buffer_assert_gsubgpos_vars (hb_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
HB_BUFFER_ASSERT_VAR (buffer, glyph_props);
|
HB_BUFFER_ASSERT_VAR (buffer, glyph_props);
|
||||||
HB_BUFFER_ASSERT_VAR (buffer, lig_props);
|
HB_BUFFER_ASSERT_VAR (buffer, lig_props);
|
||||||
HB_BUFFER_ASSERT_VAR (buffer, syllable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure no one directly touches our props... */
|
/* Make sure no one directly touches our props... */
|
||||||
|
|
|
@ -356,6 +356,7 @@ setup_syllables_indic (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
||||||
hb_font_t *font HB_UNUSED,
|
hb_font_t *font HB_UNUSED,
|
||||||
hb_buffer_t *buffer)
|
hb_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
|
HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
|
||||||
find_syllables_indic (buffer);
|
find_syllables_indic (buffer);
|
||||||
foreach_syllable (buffer, start, end)
|
foreach_syllable (buffer, start, end)
|
||||||
buffer->unsafe_to_break (start, end);
|
buffer->unsafe_to_break (start, end);
|
||||||
|
|
|
@ -115,7 +115,7 @@ collect_features_khmer (hb_ot_shape_planner_t *plan)
|
||||||
map->add_feature (khmer_features[i]);
|
map->add_feature (khmer_features[i]);
|
||||||
|
|
||||||
/* https://github.com/harfbuzz/harfbuzz/issues/3531 */
|
/* https://github.com/harfbuzz/harfbuzz/issues/3531 */
|
||||||
map->add_gsub_pause (nullptr);
|
map->add_gsub_pause (hb_syllabic_clear_var); // Don't need syllables anymore, use stop to free buffer var
|
||||||
|
|
||||||
for (; i < KHMER_NUM_FEATURES; i++)
|
for (; i < KHMER_NUM_FEATURES; i++)
|
||||||
map->add_feature (khmer_features[i]);
|
map->add_feature (khmer_features[i]);
|
||||||
|
@ -187,6 +187,7 @@ setup_syllables_khmer (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
||||||
hb_font_t *font HB_UNUSED,
|
hb_font_t *font HB_UNUSED,
|
||||||
hb_buffer_t *buffer)
|
hb_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
|
HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
|
||||||
find_syllables_khmer (buffer);
|
find_syllables_khmer (buffer);
|
||||||
foreach_syllable (buffer, start, end)
|
foreach_syllable (buffer, start, end)
|
||||||
buffer->unsafe_to_break (start, end);
|
buffer->unsafe_to_break (start, end);
|
||||||
|
|
|
@ -92,6 +92,7 @@ collect_features_myanmar (hb_ot_shape_planner_t *plan)
|
||||||
map->enable_feature (myanmar_basic_features[i], F_MANUAL_ZWJ | F_PER_SYLLABLE);
|
map->enable_feature (myanmar_basic_features[i], F_MANUAL_ZWJ | F_PER_SYLLABLE);
|
||||||
map->add_gsub_pause (nullptr);
|
map->add_gsub_pause (nullptr);
|
||||||
}
|
}
|
||||||
|
map->add_gsub_pause (hb_syllabic_clear_var); // Don't need syllables anymore, use stop to free buffer var
|
||||||
|
|
||||||
for (unsigned int i = 0; i < ARRAY_LENGTH (myanmar_other_features); i++)
|
for (unsigned int i = 0; i < ARRAY_LENGTH (myanmar_other_features); i++)
|
||||||
map->enable_feature (myanmar_other_features[i], F_MANUAL_ZWJ);
|
map->enable_feature (myanmar_other_features[i], F_MANUAL_ZWJ);
|
||||||
|
@ -118,6 +119,7 @@ setup_syllables_myanmar (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
||||||
hb_font_t *font HB_UNUSED,
|
hb_font_t *font HB_UNUSED,
|
||||||
hb_buffer_t *buffer)
|
hb_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
|
HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
|
||||||
find_syllables_myanmar (buffer);
|
find_syllables_myanmar (buffer);
|
||||||
foreach_syllable (buffer, start, end)
|
foreach_syllable (buffer, start, end)
|
||||||
buffer->unsafe_to_break (start, end);
|
buffer->unsafe_to_break (start, end);
|
||||||
|
|
|
@ -99,5 +99,13 @@ hb_syllabic_insert_dotted_circles (hb_font_t *font,
|
||||||
buffer->sync ();
|
buffer->sync ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HB_INTERNAL void
|
||||||
|
hb_syllabic_clear_var (const hb_ot_shape_plan_t *plan,
|
||||||
|
hb_font_t *font,
|
||||||
|
hb_buffer_t *buffer)
|
||||||
|
{
|
||||||
|
HB_BUFFER_DEALLOCATE_VAR (buffer, syllable);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,5 +38,10 @@ hb_syllabic_insert_dotted_circles (hb_font_t *font,
|
||||||
int repha_category = -1,
|
int repha_category = -1,
|
||||||
int dottedcircle_position = -1);
|
int dottedcircle_position = -1);
|
||||||
|
|
||||||
|
HB_INTERNAL void
|
||||||
|
hb_syllabic_clear_var (const hb_ot_shape_plan_t *plan,
|
||||||
|
hb_font_t *font,
|
||||||
|
hb_buffer_t *buffer);
|
||||||
|
|
||||||
|
|
||||||
#endif /* HB_OT_SHAPER_SYLLABIC_HH */
|
#endif /* HB_OT_SHAPER_SYLLABIC_HH */
|
||||||
|
|
|
@ -133,6 +133,7 @@ collect_features_use (hb_ot_shape_planner_t *plan)
|
||||||
map->enable_feature (use_basic_features[i], F_MANUAL_ZWJ | F_PER_SYLLABLE);
|
map->enable_feature (use_basic_features[i], F_MANUAL_ZWJ | F_PER_SYLLABLE);
|
||||||
|
|
||||||
map->add_gsub_pause (reorder_use);
|
map->add_gsub_pause (reorder_use);
|
||||||
|
map->add_gsub_pause (hb_syllabic_clear_var); // Don't need syllables anymore, use stop to free buffer var
|
||||||
|
|
||||||
/* "Topographical features" */
|
/* "Topographical features" */
|
||||||
for (unsigned int i = 0; i < ARRAY_LENGTH (use_topographical_features); i++)
|
for (unsigned int i = 0; i < ARRAY_LENGTH (use_topographical_features); i++)
|
||||||
|
@ -297,6 +298,7 @@ setup_syllables_use (const hb_ot_shape_plan_t *plan,
|
||||||
hb_font_t *font HB_UNUSED,
|
hb_font_t *font HB_UNUSED,
|
||||||
hb_buffer_t *buffer)
|
hb_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
|
HB_BUFFER_ALLOCATE_VAR (buffer, syllable);
|
||||||
find_syllables_use (buffer);
|
find_syllables_use (buffer);
|
||||||
foreach_syllable (buffer, start, end)
|
foreach_syllable (buffer, start, end)
|
||||||
buffer->unsafe_to_break (start, end);
|
buffer->unsafe_to_break (start, end);
|
||||||
|
|
Loading…
Reference in New Issue