提交 2e8fb6c3 编写于 作者: B Behdad Esfahbod

[HB] Tweak some constants and fix Coverage

上级 d6aae5f5
......@@ -36,6 +36,7 @@
*
*/
/*
* Script, ScriptList, LangSys, Feature, FeatureList, Lookup, LookupList
*/
......@@ -226,9 +227,9 @@ struct CoverageFormat1 {
private:
inline unsigned int get_coverage (hb_codepoint_t glyph_id) const {
GlyphID gid;
if (HB_UNLIKELY (glyph_id > 65535))
if (HB_UNLIKELY (glyph_id > 0xFFFF))
return NOT_COVERED;
GlyphID gid;
gid = glyph_id;
// TODO: bsearch
unsigned int num_glyphs = glyphArray.len;
......@@ -251,7 +252,7 @@ struct CoverageRangeRecord {
private:
inline unsigned int get_coverage (hb_codepoint_t glyph_id) const {
if (glyph_id >= start && glyph_id <= end)
return startCoverageIndex + (glyph_id - start);
return (unsigned int) startCoverageIndex + (glyph_id - start);
return NOT_COVERED;
}
......@@ -272,8 +273,8 @@ struct CoverageFormat2 {
// TODO: bsearch
unsigned int count = rangeRecord.len;
for (unsigned int i = 0; i < count; i++) {
int coverage = rangeRecord[i].get_coverage (glyph_id);
if (coverage >= 0)
unsigned int coverage = rangeRecord[i].get_coverage (glyph_id);
if (coverage != NOT_COVERED)
return coverage;
}
return NOT_COVERED;
......
......@@ -188,6 +188,8 @@ static inline bool apply_lookup (LOOKUP_ARGS_DEF,
lookupRecord++;
lookupCount--;
i += buffer->in_pos - old_pos;
if (HB_UNLIKELY (buffer->in_pos == end))
return true;
if (!done)
goto not_applied;
......
......@@ -35,9 +35,9 @@
#define NO_INDEX ((unsigned int) 0xFFFF)
#define NO_CONTEXT ((unsigned int) -0x20000)
#define NOT_COVERED ((unsigned int) -1)
#define MAX_NESTING_LEVEL 32
#define NO_CONTEXT ((unsigned int) 0x110000)
#define NOT_COVERED ((unsigned int) 0x110000)
#define MAX_NESTING_LEVEL 8
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册