< prev index next >
src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-thai.cc
Print this page
*** 50,60 ****
return AC;
if (u == 0x0E0Du || u == 0x0E10u)
return RC;
if (u == 0x0E0Eu || u == 0x0E0Fu)
return DC;
! if (hb_in_range (u, 0x0E01u, 0x0E2Eu))
return NC;
return NOT_CONSONANT;
}
--- 50,60 ----
return AC;
if (u == 0x0E0Du || u == 0x0E10u)
return RC;
if (u == 0x0E0Eu || u == 0x0E0Fu)
return DC;
! if (hb_in_range<hb_codepoint_t> (u, 0x0E01u, 0x0E2Eu))
return NC;
return NOT_CONSONANT;
}
*** 68,83 ****
};
static thai_mark_type_t
get_mark_type (hb_codepoint_t u)
{
! if (u == 0x0E31u || hb_in_range (u, 0x0E34u, 0x0E37u) ||
! u == 0x0E47u || hb_in_range (u, 0x0E4Du, 0x0E4Eu))
return AV;
! if (hb_in_range (u, 0x0E38u, 0x0E3Au))
return BV;
! if (hb_in_range (u, 0x0E48u, 0x0E4Cu))
return T;
return NOT_MARK;
}
--- 68,83 ----
};
static thai_mark_type_t
get_mark_type (hb_codepoint_t u)
{
! if (u == 0x0E31u || hb_in_range<hb_codepoint_t> (u, 0x0E34u, 0x0E37u) ||
! u == 0x0E47u || hb_in_range<hb_codepoint_t> (u, 0x0E4Du, 0x0E4Eu))
return AV;
! if (hb_in_range<hb_codepoint_t> (u, 0x0E38u, 0x0E3Au))
return BV;
! if (hb_in_range<hb_codepoint_t> (u, 0x0E48u, 0x0E4Cu))
return T;
return NOT_MARK;
}
*** 95,105 ****
{
struct thai_pua_mapping_t {
hb_codepoint_t u;
hb_codepoint_t win_pua;
hb_codepoint_t mac_pua;
! } const *pua_mappings = NULL;
static const thai_pua_mapping_t SD_mappings[] = {
{0x0E48u, 0xF70Au, 0xF88Bu}, /* MAI EK */
{0x0E49u, 0xF70Bu, 0xF88Eu}, /* MAI THO */
{0x0E4Au, 0xF70Cu, 0xF891u}, /* MAI TRI */
{0x0E4Bu, 0xF70Du, 0xF894u}, /* MAI CHATTAWA */
--- 95,105 ----
{
struct thai_pua_mapping_t {
hb_codepoint_t u;
hb_codepoint_t win_pua;
hb_codepoint_t mac_pua;
! } const *pua_mappings = nullptr;
static const thai_pua_mapping_t SD_mappings[] = {
{0x0E48u, 0xF70Au, 0xF88Bu}, /* MAI EK */
{0x0E49u, 0xF70Bu, 0xF88Eu}, /* MAI THO */
{0x0E4Au, 0xF70Cu, 0xF891u}, /* MAI TRI */
{0x0E4Bu, 0xF70Du, 0xF894u}, /* MAI CHATTAWA */
*** 242,251 ****
--- 242,252 ----
below_state = below_edge.next_state;
/* At least one of the above/below actions is NOP. */
thai_action_t action = above_edge.action != NOP ? above_edge.action : below_edge.action;
+ buffer->unsafe_to_break (base, i);
if (action == RD)
info[base].codepoint = thai_pua_shape (info[base].codepoint, action, font);
else
info[i].codepoint = thai_pua_shape (info[i].codepoint, action, font);
}
*** 308,318 ****
/* We only get one script at a time, so a script-agnostic implementation
* is adequate here. */
#define IS_SARA_AM(x) (((x) & ~0x0080u) == 0x0E33u)
#define NIKHAHIT_FROM_SARA_AM(x) ((x) - 0x0E33u + 0x0E4Du)
#define SARA_AA_FROM_SARA_AM(x) ((x) - 1)
! #define IS_TONE_MARK(x) (hb_in_ranges ((x) & ~0x0080u, 0x0E34u, 0x0E37u, 0x0E47u, 0x0E4Eu, 0x0E31u, 0x0E31u))
buffer->clear_output ();
unsigned int count = buffer->len;
for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;)
{
--- 309,319 ----
/* We only get one script at a time, so a script-agnostic implementation
* is adequate here. */
#define IS_SARA_AM(x) (((x) & ~0x0080u) == 0x0E33u)
#define NIKHAHIT_FROM_SARA_AM(x) ((x) - 0x0E33u + 0x0E4Du)
#define SARA_AA_FROM_SARA_AM(x) ((x) - 1)
! #define IS_TONE_MARK(x) (hb_in_ranges<hb_codepoint_t> ((x) & ~0x0080u, 0x0E34u, 0x0E37u, 0x0E47u, 0x0E4Eu, 0x0E31u, 0x0E31u))
buffer->clear_output ();
unsigned int count = buffer->len;
for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;)
{
*** 363,382 ****
do_thai_pua_shaping (plan, buffer, font);
}
const hb_ot_complex_shaper_t _hb_ot_complex_shaper_thai =
{
! "thai",
! NULL, /* collect_features */
! NULL, /* override_features */
! NULL, /* data_create */
! NULL, /* data_destroy */
preprocess_text_thai,
! NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
! NULL, /* decompose */
! NULL, /* compose */
! NULL, /* setup_masks */
! NULL, /* disable_otl */
HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
false,/* fallback_position */
};
--- 364,383 ----
do_thai_pua_shaping (plan, buffer, font);
}
const hb_ot_complex_shaper_t _hb_ot_complex_shaper_thai =
{
! nullptr, /* collect_features */
! nullptr, /* override_features */
! nullptr, /* data_create */
! nullptr, /* data_destroy */
preprocess_text_thai,
! nullptr, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
! nullptr, /* decompose */
! nullptr, /* compose */
! nullptr, /* setup_masks */
! nullptr, /* disable_otl */
! nullptr, /* reorder_marks */
HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
false,/* fallback_position */
};
< prev index next >