- for (q = p + 1; *q && *q != ' '; q++)
- if (*q == '\\' && q[1])
- q++;
- word_len = q - p;
-
-#define PROP_MATCH(STR,N) ((word_len == N) && memcmp (p, STR, N) == 0)
-
- if (PROP_MATCH ("Ultra-Light", 11))
- {
- prop_found = 1;
- prop = font_intern_prop ("ultra-light", 11, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Light", 5))
- {
- prop_found = 1;
- prop = font_intern_prop ("light", 5, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Book", 4))
- {
- prop_found = 1;
- prop = font_intern_prop ("book", 4, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Medium", 6))
- {
- prop_found = 1;
- prop = font_intern_prop ("medium", 6, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Semi-Bold", 9))
- {
- prop_found = 1;
- prop = font_intern_prop ("semi-bold", 9, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Bold", 4))
- {
- prop_found = 1;
- prop = font_intern_prop ("bold", 4, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Italic", 6))
- {
- prop_found = 1;
- prop = font_intern_prop ("italic", 4, 1);
- FONT_SET_STYLE (font, FONT_SLANT_INDEX, prop);
- }
- else if (PROP_MATCH ("Oblique", 7))
- {
- prop_found = 1;
- prop = font_intern_prop ("oblique", 7, 1);
- FONT_SET_STYLE (font, FONT_SLANT_INDEX, prop);
- }
- else if (PROP_MATCH ("Semi-Condensed", 14))
- {
- prop_found = 1;
- prop = font_intern_prop ("semi-condensed", 14, 1);
- FONT_SET_STYLE (font, FONT_WIDTH_INDEX, prop);
- }
- else if (PROP_MATCH ("Condensed", 9))
+ word_start = q + 1;
+ word_len = p - word_start;
+
+#define PROP_MATCH(STR) \
+ (word_len == strlen (STR) \
+ && memcmp (word_start, STR, strlen (STR)) == 0)
+#define PROP_SAVE(VAR, STR) \
+ (VAR = NILP (VAR) ? font_intern_prop (STR, strlen (STR), 1) : VAR)
+
+ if (PROP_MATCH ("Ultra-Light"))
+ PROP_SAVE (weight, "ultra-light");
+ else if (PROP_MATCH ("Light"))
+ PROP_SAVE (weight, "light");
+ else if (PROP_MATCH ("Book"))
+ PROP_SAVE (weight, "book");
+ else if (PROP_MATCH ("Medium"))
+ PROP_SAVE (weight, "medium");
+ else if (PROP_MATCH ("Semi-Bold"))
+ PROP_SAVE (weight, "semi-bold");
+ else if (PROP_MATCH ("Bold"))
+ PROP_SAVE (weight, "bold");
+ else if (PROP_MATCH ("Italic"))
+ PROP_SAVE (slant, "italic");
+ else if (PROP_MATCH ("Oblique"))
+ PROP_SAVE (slant, "oblique");
+ else if (PROP_MATCH ("Semi-Condensed"))
+ PROP_SAVE (width, "semi-condensed");
+ else if (PROP_MATCH ("Condensed"))
+ PROP_SAVE (width, "condensed");
+ /* An unknown word must be part of the font name. */
+ else