author | Francesco Abbate <francesco.bbt@gmail.com> | 2012年07月17日 10:12:46 +0200 |
---|---|---|
committer | Francesco Abbate <francesco.bbt@gmail.com> | 2012年07月17日 10:12:46 +0200 |
commit | da79be10cd51ea4f01518f27b44f228b5f5ab354 (patch) | |
tree | ed3a27e5081f8bf89e1526fce75272385774b8c0 /agg-plot | |
parent | 061309fe5f10a316db2bcfc287a77b72c0729569 (diff) | |
download | gsl-shell-da79be10cd51ea4f01518f27b44f228b5f5ab354.tar.gz |
-rw-r--r-- | agg-plot/fonts.cpp | 2 | ||||
-rw-r--r-- | agg-plot/support_win32.cpp | 18 |
diff --git a/agg-plot/fonts.cpp b/agg-plot/fonts.cpp index 736e46e4..947d699c 100644 --- a/agg-plot/fonts.cpp +++ b/agg-plot/fonts.cpp @@ -14,6 +14,8 @@ agg::font_cache_manager<agg::font_engine_freetype_int32> global_font_man(global_ int initialize_fonts(lua_State* L) { const char* font_name = gslshell::get_font_name(); + if (!font_name) + luaL_error(L, "cannot find a suitable truetype font"); agg::glyph_rendering gren = agg::glyph_ren_outline; if (!global_font_eng.load_font(font_name, 0, gren)) luaL_error(L, "cannot load truetype font: %s", font_name); diff --git a/agg-plot/support_win32.cpp b/agg-plot/support_win32.cpp index 9c9363d5..f5e62fd4 100644 --- a/agg-plot/support_win32.cpp +++ b/agg-plot/support_win32.cpp @@ -1,14 +1,26 @@ #include <windows.h> #include <shlobj.h> +#include <sys/stat.h> #include "agg-pixfmt-config.h" +const char *ttf_names[] = {"calibri.ttf", "arial.ttf", 0}; + const char *gslshell::get_font_name() { static TCHAR pf[MAX_PATH + 32]; SHGetFolderPath(0, CSIDL_FONTS, NULL, 0, pf); unsigned len = strlen(pf); - pf[len] = '\\'; - memcpy(pf + len + 1, "arial.ttf", 11 * sizeof(char)); - return pf; + pf[len++] = '\\'; + for (int k = 0; ttf_names[k]; k++) + { + const char* font_name = ttf_names[k]; + memcpy(pf + len, font_name, (strlen(font_name) + 1) * sizeof(char)); + struct _stat inf[1]; + int status = _stat(pf, inf); + if (status == 0) + return pf; + } + + return 0; } |