diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c
index c545477e2f092b6fd8fe36fbb1eebcdc765463e7..a0528467e488b3e06c2007abc1b9cc09cf3a98f6 100644
--- a/src/conio/ciolib.c
+++ b/src/conio/ciolib.c
@@ -138,6 +138,7 @@ int try_sdl_init(int mode)
 		cio_api.getcliptext=sdl_getcliptext;
 #endif
 		cio_api.setfont=sdl_setfont;
+		cio_api.getfont=sdl_getfont;
 		return(1);
 	}
 	return(0);
@@ -170,6 +171,7 @@ int try_x_init(int mode)
 		cio_api.copytext=x_copytext;
 		cio_api.getcliptext=x_getcliptext;
 		cio_api.setfont=x_setfont;
+		cio_api.getfont=x_getfont;
 		return(1);
 	}
 	return(0);
@@ -967,3 +969,13 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_setfont(int font, int force)
 	else
 		return(-1);
 }
+
+CIOLIBEXPORT int CIOLIBCALL ciolib_getfont(void)
+{
+	CIOLIB_INIT();
+
+	if(cio_api.getfont!=NULL)
+		return(cio_api.getfont());
+	else
+		return(-1);
+}
diff --git a/src/conio/ciolib.h b/src/conio/ciolib.h
index e4736d74635c36723af308514b7eb3ab8012d59e..222ff21acf55b2cf4d785fe52dfb3d251116ac11 100644
--- a/src/conio/ciolib.h
+++ b/src/conio/ciolib.h
@@ -242,6 +242,7 @@ typedef struct {
 	void	(*suspend)		(void);
 	void	(*resume)		(void);
 	int		(*setfont)		(int font, int force);
+	int		(*getfont)		(void);
 } cioapi_t;
 
 CIOLIBEXPORTVAR cioapi_t cio_api;
@@ -296,6 +297,7 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_hidemouse(void);
 CIOLIBEXPORT void CIOLIBCALL ciolib_copytext(const char *text, size_t buflen);
 CIOLIBEXPORT char * CIOLIBCALL ciolib_getcliptext(void);
 CIOLIBEXPORT int CIOLIBCALL ciolib_setfont(int font, int force);
+CIOLIBEXPORT int CIOLIBCALL ciolib_getfont(void);
 #ifdef __cplusplus
 }
 #endif
@@ -343,6 +345,7 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_setfont(int font, int force);
 	#define copytext(a,b)			ciolib_copytext(a,b)
 	#define getcliptext()			ciolib_getcliptext()
 	#define setfont(a,b)			ciolib_setfont(a,b)
+	#define getfont()				ciolib_getfont()
 #endif
 
 /* Special hackery for SDL */
diff --git a/src/conio/console.c b/src/conio/console.c
index bf3f9ab725d8393008cd6214f5e44ec377520878..1d1a7b13bd46ec911d896e8c64b02ebac23c5a56 100644
--- a/src/conio/console.c
+++ b/src/conio/console.c
@@ -130,7 +130,7 @@ sem_t	copybuf_set;
 sem_t	pastebuf_set;
 sem_t	pastebuf_request;
 sem_t	font_set;
-int		new_font;
+int		new_font=-1;
 int		font_force;
 int		setfont_return;
 pthread_mutex_t	copybuf_mutex;
diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 4b929c170abce725a53c95ffdac5fa23400896ce..099974b51690369ee1f621791f03feca5d6ebcc5 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -864,6 +864,11 @@ int sdl_setfont(int font, int force)
 	sdl_user_func(SDL_USEREVENT_UPDATERECT,0,0,0,0);
 }
 
+int sdl_getfont(void)
+{
+	return(sdl_current_font);
+}
+
 /* Called from event thread only */
 void sdl_add_key(unsigned int keyval)
 {
diff --git a/src/conio/sdl_con.h b/src/conio/sdl_con.h
index b6c5f715cdf0971349537f3ac05056deafc2733d..5a62ef37eec1a399b24282a626cf213b7d259850 100644
--- a/src/conio/sdl_con.h
+++ b/src/conio/sdl_con.h
@@ -36,6 +36,7 @@ int sdl_showmouse(void);
 void sdl_copytext(const char *text, size_t buflen);
 char *sdl_getcliptext(void);
 int sdl_setfont(int font, int force);
+int sdl_getfont(void);
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/conio/x_cio.c b/src/conio/x_cio.c
index 6cec69c533be63222579ac663d836a259d666cd9..e75c9200ed3eb1de710160a6b9ff43e594d0e2fc 100644
--- a/src/conio/x_cio.c
+++ b/src/conio/x_cio.c
@@ -325,3 +325,8 @@ int x_setfont(int font, int force)
 	sem_wait(&font_set);
 	return(setfont_return);
 }
+
+int x_getfont(void)
+{
+	return(new_font);
+}
diff --git a/src/conio/x_cio.h b/src/conio/x_cio.h
index e1015604748f8faef5f197449403ec90f3588dc3..067a926055a95bbaec9b2e880890226da20fd398 100644
--- a/src/conio/x_cio.h
+++ b/src/conio/x_cio.h
@@ -66,6 +66,7 @@ void x_settitle(const char *title);
 void x_copytext(const char *text, size_t buflen);
 char *x_getcliptext(void);
 int x_setfont(int font, int force);
+int x_getfont(void);
 #ifdef __cplusplus
 }
 #endif