if (!line || !afm_require_key(line, "StartFontMetrics", in))
goto giveup;
if (!(val = strtok(NULL, " \t"))) {
if (!line || !afm_require_key(line, "StartFontMetrics", in))
goto giveup;
if (!(val = strtok(NULL, " \t"))) {
return;
} else if (strcmp(key, "FontName") == 0) {
if (!(val = strtok(NULL, " \t"))) {
return;
} else if (strcmp(key, "FontName") == 0) {
if (!(val = strtok(NULL, " \t"))) {
int i;
for (i = 0; i < 3; i++) {
if (!(val = strtok(NULL, " \t"))) {
int i;
for (i = 0; i < 3; i++) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->fontbbox[i] = atof(val);
}
} else if (strcmp(key, "CapHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->fontbbox[i] = atof(val);
}
} else if (strcmp(key, "CapHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->capheight = atof(val);
} else if (strcmp(key, "XHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->capheight = atof(val);
} else if (strcmp(key, "XHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->xheight = atof(val);
} else if (strcmp(key, "Ascender") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->xheight = atof(val);
} else if (strcmp(key, "Ascender") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->ascent = atof(val);
} else if (strcmp(key, "Descender") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->ascent = atof(val);
} else if (strcmp(key, "Descender") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->descent = atof(val);
} else if (strcmp(key, "CapHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->descent = atof(val);
} else if (strcmp(key, "CapHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->capheight = atof(val);
} else if (strcmp(key, "StdHW") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->capheight = atof(val);
} else if (strcmp(key, "StdHW") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->stemh = atof(val);
} else if (strcmp(key, "StdVW") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->stemh = atof(val);
} else if (strcmp(key, "StdVW") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->stemv = atof(val);
} else if (strcmp(key, "ItalicAngle") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->stemv = atof(val);
} else if (strcmp(key, "ItalicAngle") == 0) {
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->italicangle = atof(val);
} else if (strcmp(key, "StartCharMetrics") == 0) {
int nglyphs, i;
if (!(val = strtok(NULL, " \t"))) {
goto giveup;
}
fi->italicangle = atof(val);
} else if (strcmp(key, "StartCharMetrics") == 0) {
int nglyphs, i;
if (!(val = strtok(NULL, " \t"))) {
if (strcmp(key, "WX") == 0 || strcmp(key, "W0X") == 0) {
if (!(val = strtok(NULL, " \t")) ||
!strcmp(val, ";")) {
if (strcmp(key, "WX") == 0 || strcmp(key, "W0X") == 0) {
if (!(val = strtok(NULL, " \t")) ||
!strcmp(val, ";")) {
goto giveup;
}
width = atoi(val);
} else if (strcmp(key, "N") == 0) {
if (!(val = strtok(NULL, " \t")) ||
!strcmp(val, ";")) {
goto giveup;
}
width = atoi(val);
} else if (strcmp(key, "N") == 0) {
if (!(val = strtok(NULL, " \t")) ||
!strcmp(val, ";")) {
goto giveup;
}
succ = glyph_intern(val);
if (!(val = strtok(NULL, " \t")) ||
!strcmp(val, ";")) {
goto giveup;
}
succ = glyph_intern(val);
if (!(val = strtok(NULL, " \t")) ||
!strcmp(val, ";")) {
strcmp(key, "StartKernPairs0") == 0) {
int nkerns, i;
if (!(val = strtok(NULL, " \t"))) {
strcmp(key, "StartKernPairs0") == 0) {
int nkerns, i;
if (!(val = strtok(NULL, " \t"))) {
nr = strtok(NULL, " \t");
val = strtok(NULL, " \t");
if (!val) {
nr = strtok(NULL, " \t");
val = strtok(NULL, " \t");
if (!val) {