+ case TF_HASCLR:
+ LV(t->f_type, get_term_numcap("colors") > 1);
+ break;
+
+ case TF_FGCOLR:
+ case TF_BGCOLR: {
+ struct colormap *cmap = colortable;
+ char *code;
+
+ sp = cp - 1;
+ while (c && c != ')')
+ c = *cp++;
+ cp[-1] = '\0';
+
+ while (cmap->colorname != NULL) {
+ if (strcasecmp(sp, cmap->colorname) == 0)
+ break;
+ cmap++;
+ }
+
+ if (cmap->colorname == NULL) {
+ CERROR("Unknown color name");
+ break;
+ }
+
+ code = get_term_stringparm(t->type == TF_FGCOLR ? "setaf" : "setab",
+ cmap->ansinum, 0);
+
+ /*
+ * If this doesn't have anything, try falling back to setf/setb
+ */
+
+ if (! code)
+ code = get_term_stringparm(t->type == TF_FGCOLR ? "setf" : "setb",
+ cmap->nonansinum, 0);
+
+ LS(t->f_type, code);
+ break;
+ }
+