Move things around some more

This commit is contained in:
Behdad Esfahbod 2010-10-27 23:18:51 -04:00
parent 194d4566ec
commit c2709119c8
5 changed files with 19 additions and 15 deletions

View File

@ -1100,9 +1100,9 @@ struct MarkLigPosFormat1
* is identical to the ligature ID of the found ligature. If yes, we * is identical to the ligature ID of the found ligature. If yes, we
* can directly use the component index. If not, we attach the mark * can directly use the component index. If not, we attach the mark
* glyph to the last component of the ligature. */ * glyph to the last component of the ligature. */
if (c->buffer->info[j].lig_id() && c->buffer->info[j].lig_id() == c->buffer->info[c->buffer->i].lig_id() && c->buffer->info[c->buffer->i].component()) if (c->buffer->info[j].lig_id() && c->buffer->info[j].lig_id() == c->buffer->info[c->buffer->i].lig_id() && c->buffer->info[c->buffer->i].lig_comp())
{ {
comp_index = c->buffer->info[c->buffer->i].component() - 1; comp_index = c->buffer->info[c->buffer->i].lig_comp() - 1;
if (comp_index >= comp_count) if (comp_index >= comp_count)
comp_index = comp_count - 1; comp_index = comp_count - 1;
} }
@ -1205,8 +1205,8 @@ struct MarkMarkPosFormat1
/* Two marks match only if they belong to the same base, or same component /* Two marks match only if they belong to the same base, or same component
* of the same ligature. That is, the component numbers must match, and * of the same ligature. That is, the component numbers must match, and
* if those are non-zero, the ligid number should also match. */ * if those are non-zero, the ligid number should also match. */
if ((c->buffer->info[j].component() != c->buffer->info[c->buffer->i].component()) || if ((c->buffer->info[j].lig_comp() != c->buffer->info[c->buffer->i].lig_comp()) ||
(c->buffer->info[j].component() && c->buffer->info[j].lig_id() != c->buffer->info[c->buffer->i].lig_id())) (c->buffer->info[j].lig_comp() && c->buffer->info[j].lig_id() != c->buffer->info[c->buffer->i].lig_id()))
return false; return false;
unsigned int mark2_index = (this+mark2Coverage) (c->buffer->info[j].codepoint); unsigned int mark2_index = (this+mark2Coverage) (c->buffer->info[j].codepoint);

View File

@ -372,7 +372,7 @@ struct Ligature
/* Allocate new ligature id */ /* Allocate new ligature id */
unsigned int lig_id = allocate_lig_id (c->buffer); unsigned int lig_id = allocate_lig_id (c->buffer);
c->buffer->info[c->buffer->i].component() = 0; c->buffer->info[c->buffer->i].lig_comp() = 0;
c->buffer->info[c->buffer->i].lig_id() = lig_id; c->buffer->info[c->buffer->i].lig_id() = lig_id;
if (j == c->buffer->i + i) /* No input glyphs skipped */ if (j == c->buffer->i + i) /* No input glyphs skipped */
@ -394,7 +394,7 @@ struct Ligature
{ {
while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->info[c->buffer->i], c->lookup_props, NULL)) while (_hb_ot_layout_skip_mark (c->layout->face, &c->buffer->info[c->buffer->i], c->lookup_props, NULL))
{ {
c->buffer->info[c->buffer->i].component() = i; c->buffer->info[c->buffer->i].lig_comp() = i;
c->buffer->info[c->buffer->i].lig_id() = lig_id; c->buffer->info[c->buffer->i].lig_id() = lig_id;
c->replace_glyph (c->buffer->info[c->buffer->i].codepoint); c->replace_glyph (c->buffer->info[c->buffer->i].codepoint);
} }

View File

@ -35,6 +35,11 @@
HB_BEGIN_DECLS HB_BEGIN_DECLS
/* buffer var allocations */
#define lig_id() var2.u16[0] /* unique ligature id */
#define lig_comp() var2.u16[1] /* component number in the ligature (0 = base) */
#ifndef HB_DEBUG_APPLY #ifndef HB_DEBUG_APPLY
#define HB_DEBUG_APPLY HB_DEBUG+0 #define HB_DEBUG_APPLY HB_DEBUG+0
#endif #endif
@ -72,13 +77,13 @@ struct hb_apply_context_t
inline void guess_glyph_class (unsigned int klass) inline void guess_glyph_class (unsigned int klass)
{ {
// buffer->info[buffer->i].gproperty() = klass; // buffer->info[buffer->i].props_cache() = klass;
} }
private: private:
inline void clear_property (void) const inline void clear_property (void) const
{ {
buffer->info[buffer->i].gproperty() = 0; buffer->info[buffer->i].props_cache() = 0;
} }
}; };

View File

@ -38,10 +38,9 @@
HB_BEGIN_DECLS HB_BEGIN_DECLS
/* XXX */ /* buffer var allocations */
#define component() var1.u16[0] #define props_cache() var1.u16[0] /* glyph_props cache */
#define lig_id() var1.u16[1]
#define gproperty() var2.u32
typedef enum { typedef enum {
HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0x0001, HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0x0001,

View File

@ -106,13 +106,13 @@ unsigned int
_hb_ot_layout_get_glyph_property (hb_face_t *face, _hb_ot_layout_get_glyph_property (hb_face_t *face,
hb_glyph_info_t *info) hb_glyph_info_t *info)
{ {
if (!info->gproperty()) if (!info->props_cache())
{ {
const GDEF &gdef = _get_gdef (face); const GDEF &gdef = _get_gdef (face);
info->gproperty() = gdef.get_glyph_props (info->codepoint); info->props_cache() = gdef.get_glyph_props (info->codepoint);
} }
return info->gproperty(); return info->props_cache();
} }
hb_bool_t hb_bool_t