namerecord *nr;
if (!sfnt_findtable(sf, TAG_name, &ptr, &end)) {
- error(err_sfntnotable, &sf->pos, "name");
+ err_sfntnotable(&sf->pos, "name");
return NULL;
}
ptr = decode(t_name_decode, ptr, end, &name);
}
}
}
- error(err_sfntnopsname, &sf->pos);
+ err_sfntnopsname(&sf->pos);
return NULL;
}
if (sfnt_findtable(sf, TAG_post, &ptr, &end)) {
ptr = decode(t_post_decode, ptr, end, &post);
if (ptr == NULL) {
- error(err_sfntbadtable, &sf->pos, "post");
+ err_sfntbadtable(&sf->pos, "post");
goto noglyphs;
}
switch (post.format) {
case 0x00010000:
if (sf->nglyphs != 258) {
- error(err_sfntbadtable, &sf->pos, "post");
+ err_sfntbadtable(&sf->pos, "post");
break;
}
sf->glyphsbyindex = (glyph *)tt_std_glyphs;
break;
case 0x00020000:
if ((char *)ptr + 2 > (char *)end) {
- error(err_sfntbadtable, &sf->pos, "post");
+ err_sfntbadtable(&sf->pos, "post");
break;
}
ptr = (char *)ptr + 2;
if ((char *)ptr + 2*sf->nglyphs > (char *)end) {
- error(err_sfntbadtable, &sf->pos, "post");
+ err_sfntbadtable(&sf->pos, "post");
break;
}
nextras = 0;
else if (g < 258 + nextras)
sf->glyphsbyindex[i] = extraglyphs[g - 258];
else {
- error(err_sfntbadtable, &sf->pos, "post");
+ err_sfntbadtable(&sf->pos, "post");
sf->glyphsbyindex[i] = genglyph(i);
}
}
case 0x00030000:
break;
default:
- error(err_sfnttablevers, &sf->pos, "post");
+ err_sfnttablevers(&sf->pos, "post");
break;
}
}
fi->fontbbox[2] = sf->head.xMax * FUNITS_PER_PT / sf->head.unitsPerEm;
fi->fontbbox[3] = sf->head.yMax * FUNITS_PER_PT / sf->head.unitsPerEm;
if (!sfnt_findtable(sf, TAG_hhea, &ptr, &end)) {
- error(err_sfntnotable, &sf->pos, "hhea");
+ err_sfntnotable(&sf->pos, "hhea");
return;
}
if (decode(t_hhea_decode, ptr, end, &hhea) == NULL) {
- error(err_sfntbadtable, &sf->pos, "hhea");
+ err_sfntbadtable(&sf->pos, "hhea");
return;
}
if ((hhea.version & 0xffff0000) != 0x00010000) {
- error(err_sfnttablevers, &sf->pos, "hhea");
+ err_sfnttablevers(&sf->pos, "hhea");
return;
}
fi->ascent = hhea.ascent;
fi->descent = hhea.descent;
if (hhea.metricDataFormat != 0) {
- error(err_sfnttablevers, &sf->pos, "hmtx");
+ err_sfnttablevers(&sf->pos, "hmtx");
return;
}
if (!sfnt_findtable(sf, TAG_hmtx, &ptr, &end)) {
- error(err_sfntnotable, &sf->pos, "hmtx");
+ err_sfntnotable(&sf->pos, "hmtx");
return;
}
hmtx = snewn(hhea.numOfLongHorMetrics, unsigned);
if (decoden(longhormetric_decode, ptr, end, hmtx, sizeof(*hmtx),
hhea.numOfLongHorMetrics) == NULL) {
- error(err_sfntbadtable, &sf->pos, "hmtx");
+ err_sfntbadtable(&sf->pos, "hmtx");
return;
}
for (i = 0; i < sf->nglyphs; i++) {
fi->descent = OS_2.sTypoDescender * FUNITS_PER_PT / sf->head.unitsPerEm;
return;
bados2:
- error(err_sfntbadtable, &sf->pos, "OS/2");
+ err_sfntbadtable(&sf->pos, "OS/2");
}
/*
}
return;
bad:
- error(err_sfntbadtable, &sf->pos, "kern");
+ err_sfntbadtable(&sf->pos, "kern");
return;
}
for (i = 0; i < lenof(fi->bmp); i++)
fi->bmp[i] = 0xFFFF;
if (!sfnt_findtable(sf, TAG_cmap, &ptr, &end)) {
- error(err_sfntnotable, &sf->pos, "cmap");
+ err_sfntnotable(&sf->pos, "cmap");
}
base = ptr;
ptr = decode(t_cmap_decode, ptr, end, &cmap);
idx = (k + idDelta[j]) & 0xffff;
if (idx != 0) {
if (idx > sf->nglyphs) {
- error(err_sfntbadglyph, &sf->pos, k);
+ err_sfntbadglyph(&sf->pos, k);
continue;
}
fi->bmp[k] = sfnt_indextoglyph(sf, idx);
for (k = startCode[j]; k <= endCode[j]; k++) {
if (startidx + k - startCode[j] >=
nglyphindex) {
- error(err_sfntbadglyph, &sf->pos, k);
+ err_sfntbadglyph(&sf->pos, k);
continue;
}
idx = glyphIndexArray[startidx + k - startCode[j]];
if (idx != 0) {
idx = (idx + idDelta[j]) & 0xffff;
if (idx > sf->nglyphs) {
- error(err_sfntbadglyph, &sf->pos, k);
+ err_sfntbadglyph(&sf->pos, k);
continue;
}
fi->bmp[k] = sfnt_indextoglyph(sf, idx);
}
}
}
- error(err_sfntnounicmap, &sf->pos);
+ err_sfntnounicmap(&sf->pos);
return;
bad:
- error(err_sfntbadtable, &sf->pos, "cmap");
+ err_sfntbadtable(&sf->pos, "cmap");
}
void read_sfnt_file(input *in) {
sf->nglyphs = 0;
ptr = decode(offsubdir_decode, sf->data, sf->end, &sf->osd);
if (ptr == NULL) {
- error(err_sfntbadhdr, &sf->pos);
+ err_sfntbadhdr(&sf->pos);
return;
}
sf->td = snewn(sf->osd.numTables, tabledir);
ptr = decoden(tabledir_decode, ptr, sf->end, sf->td, sizeof(*sf->td),
sf->osd.numTables);
if (ptr == NULL) {
- error(err_sfntbadhdr, &sf->pos);
+ err_sfntbadhdr(&sf->pos);
return;
}
if (!sfnt_findtable(sf, TAG_head, &ptr, &end)) {
- error(err_sfntnotable, &sf->pos, "head");
+ err_sfntnotable(&sf->pos, "head");
return;
}
if (decode(t_head_decode, ptr, end, &sf->head) == NULL) {
- error(err_sfntbadtable, &sf->pos, "head");
+ err_sfntbadtable(&sf->pos, "head");
return;
}
if ((sf->head.version & 0xffff0000) != 0x00010000) {
- error(err_sfnttablevers, &sf->pos, "head");
+ err_sfnttablevers(&sf->pos, "head");
return;
}
if (!sfnt_findtable(sf, TAG_maxp, &ptr, &end)) {
- error(err_sfntnotable, &sf->pos, "maxp");
+ err_sfntnotable(&sf->pos, "maxp");
return;
}
if (decode(t_maxp_decode, ptr, end, &maxp) == NULL) {
- error(err_sfntbadtable, &sf->pos, "maxp");
+ err_sfntbadtable(&sf->pos, "maxp");
return;
}
if (maxp.version < 0x00005000 || maxp.version > 0x0001ffff) {
- error(err_sfnttablevers, &sf->pos, "maxp");
+ err_sfnttablevers(&sf->pos, "maxp");
return;
}
sf->nglyphs = maxp.numGlyphs;
breaks[i] = sf->td[i].offset;
}
if (!sfnt_findtable(sf, TAG_glyf, &glyfptr, &glyfend)) {
- error(err_sfntnotable, &sf->pos, "glyf");
+ err_sfntnotable(&sf->pos, "glyf");
return;
}
glyfoff = (char *)glyfptr - (char *)sf->data;
glyflen = (char *)glyfend - (char *)glyfptr;
if (!sfnt_findtable(sf, TAG_loca, &locaptr, &locaend)) {
- error(err_sfntnotable, &sf->pos, "loca");
+ err_sfntnotable(&sf->pos, "loca");
return;
}
loca = snewn(sf->nglyphs, unsigned);
fprintf(ofp, "end /%s exch definefont\n", fi->name);
return;
badloca:
- error(err_sfntbadtable, &sf->pos, "loca");
+ err_sfntbadtable(&sf->pos, "loca");
}
void sfnt_data(font_info *fi, char **bufp, size_t *lenp) {