[CBDT] Minor
This commit is contained in:
parent
b7068af423
commit
e4bfccfb2a
@ -56,6 +56,15 @@ struct SmallGlyphMetrics
|
||||
DEFINE_SIZE_STATIC(5);
|
||||
};
|
||||
|
||||
struct BigGlyphMetrics : SmallGlyphMetrics
|
||||
{
|
||||
CHAR vertBearingX;
|
||||
CHAR vertBearingY;
|
||||
BYTE vertAdvance;
|
||||
|
||||
DEFINE_SIZE_STATIC(8);
|
||||
};
|
||||
|
||||
struct SBitLineMetrics
|
||||
{
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
@ -171,6 +180,7 @@ struct IndexSubtable
|
||||
IndexSubtableHeader header;
|
||||
IndexSubtableFormat1 format1;
|
||||
IndexSubtableFormat3 format3;
|
||||
/* TODO: Format 2, 4, 5. */
|
||||
} u;
|
||||
public:
|
||||
DEFINE_SIZE_UNION (8, header);
|
||||
@ -321,7 +331,6 @@ struct CBLC
|
||||
{
|
||||
/* TODO: Make it possible to select strike. */
|
||||
|
||||
const BitmapSizeTable *sizeTable = &Null(BitmapSizeTable);
|
||||
unsigned int count = sizeTables.len;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
@ -329,15 +338,13 @@ struct CBLC
|
||||
unsigned int endGlyphIndex = sizeTables.array[i].endGlyphIndex;
|
||||
if (startGlyphIndex <= glyph && glyph <= endGlyphIndex)
|
||||
{
|
||||
sizeTable = &sizeTables[i];
|
||||
break;
|
||||
*x_ppem = sizeTables[i].ppemX;
|
||||
*y_ppem = sizeTables[i].ppemY;
|
||||
return sizeTables[i].find_table (glyph, this);
|
||||
}
|
||||
}
|
||||
|
||||
*x_ppem = sizeTable->ppemX;
|
||||
*y_ppem = sizeTable->ppemY;
|
||||
|
||||
return sizeTable->find_table (glyph, this);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -246,14 +246,12 @@ struct hb_ot_face_cbdt_accelerator_t
|
||||
{
|
||||
unsigned int x_ppem = upem, y_ppem = upem; /* TODO Use font ppem if available. */
|
||||
|
||||
if (cblc == NULL) {
|
||||
if (cblc == NULL)
|
||||
return false; // Not a color bitmap font.
|
||||
}
|
||||
|
||||
const OT::IndexSubtableRecord *subtable_record = this->cblc->find_table(glyph, &x_ppem, &y_ppem);
|
||||
if (subtable_record == NULL) {
|
||||
if (subtable_record == NULL)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (subtable_record->get_extents (extents))
|
||||
return true;
|
||||
@ -262,6 +260,9 @@ struct hb_ot_face_cbdt_accelerator_t
|
||||
if (!subtable_record->get_image_data (glyph, &image_offset, &image_length, &image_format))
|
||||
return false;
|
||||
|
||||
{
|
||||
/* TODO Move the following into CBDT struct when adding more formats. */
|
||||
|
||||
if (unlikely (image_offset > cbdt_len || cbdt_len - image_offset < image_length))
|
||||
return false;
|
||||
|
||||
@ -280,6 +281,7 @@ struct hb_ot_face_cbdt_accelerator_t
|
||||
// TODO: Support other image formats.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Convert to the font units. */
|
||||
extents->x_bearing *= upem / (float) x_ppem;
|
||||
|
Loading…
Reference in New Issue
Block a user