// borrowed from Wine static DWORD get_font_data(PFONTGDI font, DWORD tag, DWORD offset, LPVOID buf, DWORD cbData) { FT_Face ft_face; FT_ULong len; FT_Error err; ASSERT(font); ft_face = font->SharedFace->Face; if (!FT_IS_SFNT(ft_face)) return GDI_ERROR; if (!buf) len = 0; else len = cbData; if (font->ttc_item_offset) { if (tag == TTAG_ttcf) tag = 0; else if (tag == 0) offset += font->ttc_item_offset; } if (buf && len) { FT_ULong needed = 0; err = FT_Load_Sfnt_Table(ft_face, tag, offset, NULL, &needed); if (!err && needed < len) len = needed; } err = FT_Load_Sfnt_Table(ft_face, tag, offset, buf, &len); if (err) return GDI_ERROR; return len; }