[sbix] Simplify glyph_length calc
This commit is contained in:
parent
0730d62385
commit
6ac9a4eaa3
|
@ -69,16 +69,8 @@ struct SBIXStrike
|
||||||
imageOffsetsZ.sanitize_shallow (c, c->get_num_glyphs () + 1));
|
imageOffsetsZ.sanitize_shallow (c, c->get_num_glyphs () + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline unsigned int get_ppem () const
|
inline unsigned int get_ppem () const { return ppem; }
|
||||||
{ return ppem; }
|
inline unsigned int get_resolution () const { return resolution; }
|
||||||
|
|
||||||
inline unsigned int get_resolution () const
|
|
||||||
{ return resolution; }
|
|
||||||
|
|
||||||
inline unsigned int calculate_blob_size (unsigned int glyph_id) const
|
|
||||||
{
|
|
||||||
return imageOffsetsZ[glyph_id + 1] - imageOffsetsZ[glyph_id] - SBIXGlyph::min_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline hb_blob_t *get_glyph_blob (unsigned int glyph_id,
|
inline hb_blob_t *get_glyph_blob (unsigned int glyph_id,
|
||||||
hb_blob_t *sbix_blob,
|
hb_blob_t *sbix_blob,
|
||||||
|
@ -100,14 +92,13 @@ struct SBIXStrike
|
||||||
return hb_blob_get_empty ();
|
return hb_blob_get_empty ();
|
||||||
|
|
||||||
unsigned int glyph_offset = strike_offset + (unsigned int) imageOffsetsZ[glyph_id] + SBIXGlyph::min_size;
|
unsigned int glyph_offset = strike_offset + (unsigned int) imageOffsetsZ[glyph_id] + SBIXGlyph::min_size;
|
||||||
if (glyph_offset > sbix_len)
|
unsigned int glyph_length = imageOffsetsZ[glyph_id + 1] - imageOffsetsZ[glyph_id] - SBIXGlyph::min_size;
|
||||||
return hb_blob_get_empty ();
|
|
||||||
|
|
||||||
const SBIXGlyph *glyph = &(this+imageOffsetsZ[glyph_id]);
|
const SBIXGlyph *glyph = &(this+imageOffsetsZ[glyph_id]);
|
||||||
|
|
||||||
if (glyph->graphicType == HB_TAG ('d','u','p','e'))
|
if (glyph->graphicType == HB_TAG ('d','u','p','e'))
|
||||||
{
|
{
|
||||||
if (calculate_blob_size (glyph_id) >= 2)
|
if (glyph_length >= 2)
|
||||||
{
|
{
|
||||||
glyph_id = *((HBUINT16 *) &glyph->data);
|
glyph_id = *((HBUINT16 *) &glyph->data);
|
||||||
if (retry_count--)
|
if (retry_count--)
|
||||||
|
@ -118,13 +109,10 @@ struct SBIXStrike
|
||||||
|
|
||||||
if (unlikely (file_type != glyph->graphicType))
|
if (unlikely (file_type != glyph->graphicType))
|
||||||
return hb_blob_get_empty ();
|
return hb_blob_get_empty ();
|
||||||
unsigned int blob_size = calculate_blob_size (glyph_id);
|
|
||||||
if (unlikely (blob_size == 0))
|
|
||||||
return hb_blob_get_empty ();
|
|
||||||
|
|
||||||
if (x_offset) *x_offset = glyph->xOffset;
|
if (x_offset) *x_offset = glyph->xOffset;
|
||||||
if (y_offset) *y_offset = glyph->yOffset;
|
if (y_offset) *y_offset = glyph->yOffset;
|
||||||
return hb_blob_create_sub_blob (sbix_blob, glyph_offset, blob_size);
|
return hb_blob_create_sub_blob (sbix_blob, glyph_offset, glyph_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
Loading…
Reference in New Issue