summaryrefslogtreecommitdiff
path: root/riscos/font.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2004-09-29 20:13:42 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2004-09-29 20:13:42 +0000
commit4a37e170373bcf5ea978698371bacfde6829435c (patch)
tree5fa7968663bd13cc382af1a3c090deb0212ba451 /riscos/font.c
parentd718a30c573fc7b65fabd6d338a5e09d0b60fd38 (diff)
downloadnetsurf-4a37e170373bcf5ea978698371bacfde6829435c.tar.gz
netsurf-4a37e170373bcf5ea978698371bacfde6829435c.tar.bz2
[project @ 2004-09-29 20:13:42 by jmb]
Write heuristically-generated font names to choices file - should speed up program load a bit. Heuristic is re-run each time the choices file is saved. svn path=/import/netsurf/; revision=1294
Diffstat (limited to 'riscos/font.c')
-rw-r--r--riscos/font.c141
1 files changed, 139 insertions, 2 deletions
diff --git a/riscos/font.c b/riscos/font.c
index 141518a9b..5ebfa0054 100644
--- a/riscos/font.c
+++ b/riscos/font.c
@@ -773,8 +773,11 @@ void nsfont_txtenum(struct font_data *font, const char *text,
/**
* Fill in the font_table, based on the user's options
+ *
+ * \param force_rescan Indicate whether to rescan font names
+ * and update options
*/
-void nsfont_fill_nametable(void)
+void nsfont_fill_nametable(bool force_rescan)
{
int i;
char *name = NULL, *created = NULL;
@@ -862,7 +865,7 @@ void nsfont_fill_nametable(void)
break;
}
- if (name && name[0] != '\0') {
+ if ((!force_rescan || (force_rescan && i == ((i / FONT_FACES) * FONT_FACES))) && name && name[0] != '\0') {
/* got a configured font name => use it */
strncpy(font_table[i], name, FONT_MAX_NAME);
}
@@ -899,6 +902,140 @@ void nsfont_fill_nametable(void)
}
free(name);
+
+ /* don't modify options if not rescanning */
+ if (!force_rescan)
+ continue;
+
+ /* write the relevant option string */
+ switch (i) {
+ /* default */
+ case FONT_DEFAULT:
+ if (option_font_default)
+ free(option_font_default);
+ option_font_default = strdup(font_table[i]);
+ break;
+ case FONT_DEFAULT + FONT_SLANTED:
+ if (option_font_default_italic)
+ free(option_font_default_italic);
+ option_font_default_italic = strdup(font_table[i]);
+ break;
+ case FONT_DEFAULT + FONT_BOLD:
+ if (option_font_default_bold)
+ free(option_font_default_bold);
+ option_font_default_bold = strdup(font_table[i]);
+ break;
+ case FONT_DEFAULT + FONT_BOLD + FONT_SLANTED:
+ if (option_font_default_bold_italic)
+ free(option_font_default_bold_italic);
+ option_font_default_bold_italic = strdup(font_table[i]);
+ break;
+ /* sans */
+ case FONT_SANS_SERIF:
+ if (option_font_sans)
+ free(option_font_sans);
+ option_font_sans = strdup(font_table[i]);
+ break;
+ case FONT_SANS_SERIF + FONT_SLANTED:
+ if (option_font_sans_italic)
+ free(option_font_sans_italic);
+ option_font_sans_italic = strdup(font_table[i]);
+ break;
+ case FONT_SANS_SERIF + FONT_BOLD:
+ if (option_font_sans_bold)
+ free(option_font_sans_bold);
+ option_font_sans_bold = strdup(font_table[i]);
+ break;
+ case FONT_SANS_SERIF + FONT_BOLD + FONT_SLANTED:
+ if (option_font_sans_bold_italic)
+ free(option_font_sans_bold_italic);
+ option_font_sans_bold_italic = strdup(font_table[i]);
+ break;
+ /* serif */
+ case FONT_SERIF:
+ if (option_font_serif)
+ free(option_font_serif);
+ option_font_serif = strdup(font_table[i]);
+ break;
+ case FONT_SERIF + FONT_SLANTED:
+ if (option_font_serif_italic)
+ free(option_font_serif_italic);
+ option_font_serif_italic = strdup(font_table[i]);
+ break;
+ case FONT_SERIF + FONT_BOLD:
+ if (option_font_serif_bold)
+ free(option_font_serif_bold);
+ option_font_serif_bold = strdup(font_table[i]);
+ break;
+ case FONT_SERIF + FONT_BOLD + FONT_SLANTED:
+ if (option_font_serif_bold_italic)
+ free(option_font_serif_bold_italic);
+ option_font_serif_bold_italic = strdup(font_table[i]);
+ break;
+ /* mono */
+ case FONT_MONOSPACE:
+ if (option_font_mono)
+ free(option_font_mono);
+ option_font_mono = strdup(font_table[i]);
+ break;
+ case FONT_MONOSPACE + FONT_SLANTED:
+ if (option_font_mono_italic)
+ free(option_font_mono_italic);
+ option_font_mono_italic = strdup(font_table[i]);
+ break;
+ case FONT_MONOSPACE + FONT_BOLD:
+ if (option_font_mono_bold)
+ free(option_font_mono_bold);
+ option_font_mono_bold = strdup(font_table[i]);
+ break;
+ case FONT_MONOSPACE + FONT_BOLD + FONT_SLANTED:
+ if (option_font_mono_bold_italic)
+ free(option_font_mono_bold_italic);
+ option_font_mono_bold_italic = strdup(font_table[i]);
+ break;
+ /* cursive */
+ case FONT_CURSIVE:
+ if (option_font_cursive)
+ free(option_font_cursive);
+ option_font_cursive = strdup(font_table[i]);;
+ break;
+ case FONT_CURSIVE + FONT_SLANTED:
+ if (option_font_cursive_italic)
+ free(option_font_cursive_italic);
+ option_font_cursive_italic = strdup(font_table[i]);
+ break;
+ case FONT_CURSIVE + FONT_BOLD:
+ if (option_font_cursive_bold)
+ free(option_font_cursive_bold);
+ option_font_cursive_bold = strdup(font_table[i]);
+ break;
+ case FONT_CURSIVE + FONT_BOLD + FONT_SLANTED:
+ if (option_font_cursive_bold_italic)
+ free(option_font_cursive_bold_italic);
+ option_font_cursive_bold_italic = strdup(font_table[i]);
+ break;
+ /* fantasy */
+ case FONT_FANTASY:
+ if (option_font_fantasy)
+ free(option_font_fantasy);
+ option_font_fantasy = strdup(font_table[i]);
+ break;
+ case FONT_FANTASY + FONT_SLANTED:
+ if (option_font_fantasy_italic)
+ free(option_font_fantasy_italic);
+ option_font_fantasy_italic = strdup(font_table[i]);
+ break;
+ case FONT_FANTASY + FONT_BOLD:
+ if (option_font_fantasy_bold)
+ free(option_font_fantasy_bold);
+ option_font_fantasy_bold = strdup(font_table[i]);
+ break;
+ case FONT_FANTASY + FONT_BOLD + FONT_SLANTED:
+ if (option_font_fantasy_bold_italic)
+ free(option_font_fantasy_bold_italic);
+ option_font_fantasy_bold_italic = strdup(font_table[i]);
+ break;
+ }
}
}
}