summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx3
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx14
2 files changed, 12 insertions, 5 deletions
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx
index b359069e8..6d6cff681 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx
@@ -187,6 +187,9 @@ const char *Fl_Xlib_Graphics_Driver::font_name(int num) {
}
void Fl_Xlib_Graphics_Driver::font_name(int num, const char *name) {
+#if USE_PANGO
+ init_built_in_fonts();
+#endif
Fl_Fontdesc *s = fl_fonts + num;
if (s->name) {
if (!strcmp(s->name, name)) {s->name = name; return;}
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
index 053bccba4..48771d0a2 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
@@ -1272,7 +1272,8 @@ void Fl_Xlib_Graphics_Driver::text_extents(const char *str, int n, int &dx, int
}
int Fl_Xlib_Graphics_Driver::height() {
- return font_descriptor()->height_;
+ if (font_descriptor()) return font_descriptor()->height_;
+ else return -1;
}
double Fl_Xlib_Graphics_Driver::width(unsigned int c) {
@@ -1282,7 +1283,8 @@ double Fl_Xlib_Graphics_Driver::width(unsigned int c) {
}
int Fl_Xlib_Graphics_Driver::descent() {
- return font_descriptor()->descent_;
+ if (font_descriptor()) return font_descriptor()->descent_;
+ else return -1;
}
typedef int (*sort_f_type)(const void *aa, const void *bb);
@@ -1327,9 +1329,11 @@ Fl_Font Fl_Xlib_Graphics_Driver::set_fonts(const char* pattern_name)
void Fl_Xlib_Graphics_Driver::init_built_in_fonts() {
static int i = 0;
- while (i < FL_FREE_FONT) {
- Fl::set_font((Fl_Font)i, built_in_table[i].name);
- i++;
+ if (!i) {
+ while (i < FL_FREE_FONT) {
+ i++;
+ Fl::set_font((Fl_Font)i-1, built_in_table[i-1].name);
+ }
}
}