parent
57ac0ecb78
commit
13403bc67a
|
@ -24,7 +24,7 @@
|
||||||
* Google Author(s): Behdad Esfahbod
|
* Google Author(s): Behdad Esfahbod
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "hb-ot-shape-private.hh"
|
#include "hb-ot-shape-complex-private.hh"
|
||||||
|
|
||||||
HB_BEGIN_DECLS
|
HB_BEGIN_DECLS
|
||||||
|
|
||||||
|
@ -679,7 +679,7 @@ _hb_ot_shape_complex_collect_features_arabic (hb_ot_shape_plan_t *plan, const hb
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_hb_ot_analyze_complex_arabic (hb_ot_shape_context_t *c)
|
_hb_ot_shape_complex_setup_masks_arabic (hb_ot_shape_context_t *c)
|
||||||
{
|
{
|
||||||
unsigned int count = c->buffer->len;
|
unsigned int count = c->buffer->len;
|
||||||
unsigned int prev = 0, state = 0;
|
unsigned int prev = 0, state = 0;
|
||||||
|
@ -705,7 +705,7 @@ _hb_ot_analyze_complex_arabic (hb_ot_shape_context_t *c)
|
||||||
hb_mask_t mask_array[TOTAL_NUM_FEATURES] = {0};
|
hb_mask_t mask_array[TOTAL_NUM_FEATURES] = {0};
|
||||||
unsigned int num_masks = c->buffer->props.script == HB_SCRIPT_SYRIAC ? SYRIAC_NUM_FEATURES : COMMON_NUM_FEATURES;
|
unsigned int num_masks = c->buffer->props.script == HB_SCRIPT_SYRIAC ? SYRIAC_NUM_FEATURES : COMMON_NUM_FEATURES;
|
||||||
for (unsigned int i = 0; i < num_masks; i++)
|
for (unsigned int i = 0; i < num_masks; i++)
|
||||||
mask_array[i] = 0 /* XXX find_mask */;
|
mask_array[i] = c->plan->map.get_mask (arabic_syriac_features[i]);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < count; i++)
|
for (unsigned int i = 0; i < count; i++)
|
||||||
c->buffer->info[i].mask |= mask_array[c->buffer->info[i].gproperty];
|
c->buffer->info[i].mask |= mask_array[c->buffer->info[i].gproperty];
|
||||||
|
|
|
@ -29,24 +29,11 @@
|
||||||
|
|
||||||
#include "hb-private.h"
|
#include "hb-private.h"
|
||||||
|
|
||||||
#include "hb-ot-map-private.hh"
|
#include "hb-ot-shape-private.hh"
|
||||||
|
|
||||||
HB_BEGIN_DECLS
|
HB_BEGIN_DECLS
|
||||||
|
|
||||||
|
|
||||||
enum hb_ot_complex_shaper_t {
|
|
||||||
hb_ot_complex_shaper_none,
|
|
||||||
hb_ot_complex_shaper_arabic
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct hb_ot_shape_plan_t
|
|
||||||
{
|
|
||||||
hb_ot_map_t map;
|
|
||||||
hb_ot_complex_shaper_t shaper;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static inline hb_ot_complex_shaper_t
|
static inline hb_ot_complex_shaper_t
|
||||||
hb_ot_shape_complex_categorize (const hb_segment_properties_t *props)
|
hb_ot_shape_complex_categorize (const hb_segment_properties_t *props)
|
||||||
{
|
{
|
||||||
|
@ -66,7 +53,9 @@ hb_ot_shape_complex_categorize (const hb_segment_properties_t *props)
|
||||||
/*
|
/*
|
||||||
* collect_features()
|
* collect_features()
|
||||||
*
|
*
|
||||||
* Called during planning. Shapers should call plan->map.add_feature().
|
* Called during shape_plan().
|
||||||
|
*
|
||||||
|
* Shapers should use plan->map to add their features.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
HB_INTERNAL void _hb_ot_shape_complex_collect_features_arabic (hb_ot_shape_plan_t *plan, const hb_segment_properties_t *props);
|
HB_INTERNAL void _hb_ot_shape_complex_collect_features_arabic (hb_ot_shape_plan_t *plan, const hb_segment_properties_t *props);
|
||||||
|
@ -82,6 +71,24 @@ hb_ot_shape_complex_collect_features (hb_ot_shape_plan_t *plan,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* setup_masks()
|
||||||
|
*
|
||||||
|
* Called during shape_execute().
|
||||||
|
*
|
||||||
|
* Shapers should use c->plan.map to get feature masks and set on buffer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
HB_INTERNAL void _hb_ot_shape_complex_setup_masks_arabic (hb_ot_shape_context_t *c);
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
hb_ot_shape_complex_setup_masks (hb_ot_shape_context_t *c)
|
||||||
|
{
|
||||||
|
switch (c->plan->shaper) {
|
||||||
|
case hb_ot_complex_shaper_arabic: _hb_ot_shape_complex_setup_masks_arabic (c); return;
|
||||||
|
case hb_ot_complex_shaper_none: default: return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
HB_END_DECLS
|
HB_END_DECLS
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,23 @@
|
||||||
|
|
||||||
#include "hb-ot-shape.h"
|
#include "hb-ot-shape.h"
|
||||||
|
|
||||||
#include "hb-ot-shape-complex-private.hh"
|
|
||||||
#include "hb-ot-map-private.hh"
|
#include "hb-ot-map-private.hh"
|
||||||
|
|
||||||
HB_BEGIN_DECLS
|
HB_BEGIN_DECLS
|
||||||
|
|
||||||
|
enum hb_ot_complex_shaper_t {
|
||||||
|
hb_ot_complex_shaper_none,
|
||||||
|
hb_ot_complex_shaper_arabic
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct hb_ot_shape_plan_t
|
||||||
|
{
|
||||||
|
hb_ot_map_t map;
|
||||||
|
hb_ot_complex_shaper_t shaper;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct hb_ot_shape_context_t
|
struct hb_ot_shape_context_t
|
||||||
{
|
{
|
||||||
/* Input to hb_ot_shape_execute() */
|
/* Input to hb_ot_shape_execute() */
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "hb-ot-shape-private.hh"
|
#include "hb-ot-shape-private.hh"
|
||||||
|
#include "hb-ot-shape-complex-private.hh"
|
||||||
|
|
||||||
HB_BEGIN_DECLS
|
HB_BEGIN_DECLS
|
||||||
|
|
||||||
|
@ -95,7 +96,7 @@ hb_ot_shape_setup_masks (hb_ot_shape_context_t *c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* complex */
|
hb_ot_shape_complex_setup_masks (c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue