// borrowed from Wine static DWORD get_font_data(FT_Face ft_face, DWORD tag, DWORD offset, LPVOID buf, DWORD cbData, INT ttc_item_offset) { FT_ULong len; FT_Error err; if (!FT_IS_SFNT(ft_face)) return GDI_ERROR; if (!buf) len = 0; else len = cbData; if (ttc_item_offset) { if (tag == TTAG_ttcf) tag = 0; else if (tag == 0) offset += 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; }