Look for Calibri fonts before Arial on windows - gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/agg-plot
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2012年07月17日 10:12:46 +0200
committerFrancesco Abbate <francesco.bbt@gmail.com>2012年07月17日 10:12:46 +0200
commitda79be10cd51ea4f01518f27b44f228b5f5ab354 (patch)
treeed3a27e5081f8bf89e1526fce75272385774b8c0 /agg-plot
parent061309fe5f10a316db2bcfc287a77b72c0729569 (diff)
downloadgsl-shell-da79be10cd51ea4f01518f27b44f228b5f5ab354.tar.gz
Look for Calibri fonts before Arial on windows
Diffstat (limited to 'agg-plot')
-rw-r--r--agg-plot/fonts.cpp 2
-rw-r--r--agg-plot/support_win32.cpp 18
2 files changed, 17 insertions, 3 deletions
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;
}
generated by cgit v1.2.3 (git 2.46.0) at 2025年10月02日 01:49:43 +0000

AltStyle によって変換されたページ (->オリジナル) /