Index: kit/draw.c
diff -u kit/draw.c:1.131 kit/draw.c:1.132
--- kit/draw.c:1.131	Tue Nov 24 19:25:51 1998
+++ kit/draw.c	Wed Dec  9 07:20:31 1998
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 /*
- * $Id: draw.c,v 1.131 1998/11/24 10:25:51 itojun Exp $
+ * $Id: draw.c,v 1.132 1998/12/08 22:20:31 itojun Exp $
  */
 
 #include "mgp.h"
@@ -396,7 +396,7 @@
 
 	switch(cp->ct_op) {
 	case CTL_SIZE:
-		char_size = state->height * cp->cti_value / 100;
+		char_size = state->height * cp->ctf_value / 100;
 #ifdef FREETYPE
 		tfc_setsize(char_size);
 #endif
Index: kit/globals.c
diff -u kit/globals.c:1.32 kit/globals.c:1.33
--- kit/globals.c:1.32	Sun Sep 27 00:32:33 1998
+++ kit/globals.c	Wed Dec  9 06:49:05 1998
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 /*
- * $Id: globals.c,v 1.32 1998/09/26 15:32:33 itojun Exp $
+ * $Id: globals.c,v 1.33 1998/12/08 21:49:05 itojun Exp $
  */
 
 #include "mgp.h"
@@ -130,5 +130,6 @@
 /*CTL*/	{ CTL_TFONT0,		T_STR,	"tfont0", 6 },
 /*CTL*/	{ CTL_EMBED,		T_STR,	"embed", 5 },
 /*CTL*/	{ CTL_ENDEMBED,		T_VOID,	"endembed", 8 },
+/*CTL*/	{ CTL_CHARSET,		T_STR,	"charset", 7 },
 	{ 0, NULL, 0 },
 };
Index: kit/grammar.y
diff -u kit/grammar.y:1.23 kit/grammar.y:1.25
--- kit/grammar.y:1.23	Mon Nov 16 22:04:34 1998
+++ kit/grammar.y	Wed Dec  9 07:20:33 1998
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 /*
- * $Id: grammar.y,v 1.23 1998/11/16 13:04:34 itojun Exp $
+ * $Id: grammar.y,v 1.25 1998/12/08 22:20:33 itojun Exp $
  */
 /*
  * partly derived from lbl libpcap source code, which has the following
@@ -77,10 +77,10 @@
 
 #ifdef HAVE_STDARG_H
 /* GCC complains if we declare this function in traditional style */
-static void
+void
 yyerror(char *msg, ...)
 #else
-static void
+void
 yyerror(msg)
 	char *msg;
 #endif
@@ -134,6 +134,21 @@
 }
 
 static struct ctrl *
+gen_double_int(op, v)
+	int op;
+	int v;
+{
+	struct ctrl *ct;
+
+	if (!(ct = ctlalloc1(op))) {
+		yyerror("cannot allocate double node");
+		return ct;
+	}
+	ct->ctf_value = (double)v;
+	return ct;
+}
+
+static struct ctrl *
 gen_double(op, v)
 	int op;
 	double v;
@@ -141,7 +156,7 @@
 	struct ctrl *ct;
 
 	if (!(ct = ctlalloc1(op))) {
-		yyerror("cannot allocate integer node");
+		yyerror("cannot allocate double node");
 		return ct;
 	}
 	ct->ctf_value = v;
@@ -688,7 +703,8 @@
 	| KW_AGAIN	{ $$ = gen_void(CTL_AGAIN); }
 	| KW_MARK	{ $$ = gen_void(CTL_MARK); }
 	| KW_PAGE	{ $$ = gen_void(CTL_PAGE); }
-	| KW_SIZE NUM	{ $$ = gen_int(CTL_SIZE, $2); }
+	| KW_SIZE NUM	{ $$ = gen_double_int(CTL_SIZE, $2); }
+	| KW_SIZE DOUBLE	{ $$ = gen_double(CTL_SIZE, $2); }
 	| KW_HGAP NUM	{ $$ = gen_int(CTL_HGAP, $2); }
 	| KW_VGAP NUM	{ $$ = gen_int(CTL_VGAP, $2); }
 	| KW_GAP NUM	{ $$ = gen_int(CTL_GAP, $2); }
@@ -830,6 +846,7 @@
 			}
 	| KW_FONT STR	{ $$ = gen_str(CTL_FONT, $2); }
 	| KW_TEXT STR	{ $$ = gen_str(CTL_TEXT, $2); }	/*easter egg*/
+	| KW_CHARSET STR	{ $$ = gen_str(CTL_CHARSET, $2); }
 	;
 tabcmd:	  KW_TAB NUM	{ $$ = gen_int(CTL_TAB, $2); }
 	| KW_TAB ID	{ $$ = gen_str(CTL_TAB, $2); }
Index: kit/print.c
diff -u kit/print.c:1.69 kit/print.c:1.71
--- kit/print.c:1.69	Tue Nov 24 19:25:55 1998
+++ kit/print.c	Wed Dec  9 07:20:34 1998
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 /*
- * $Id: print.c,v 1.69 1998/11/24 10:25:55 itojun Exp $
+ * $Id: print.c,v 1.71 1998/12/08 22:20:34 itojun Exp $
  */
 /*
  * Paper size selection code is based on psutil.c by Angus J. C. Duggan
@@ -71,6 +71,7 @@
 	char *text;
 	u_long fore;
 	u_long back;
+	char *charset;
 } textpool[1024];		/*enough?*/
 static int ntextpool = 0;
 
@@ -516,7 +517,7 @@
 
 	switch(cp->ct_op) {
 	case CTL_SIZE:
-		char_size = window_height * cp->cti_value / 100;
+		char_size = window_height * cp->ctf_value / 100;
 		fprintf(fp, "%d setcharsize\n", char_size);
 		break;
 
Index: kit/scanner.l
diff -u kit/scanner.l:1.11 kit/scanner.l:1.12
--- kit/scanner.l:1.11	Sun Nov 15 02:16:06 1998
+++ kit/scanner.l	Wed Dec  9 06:49:09 1998
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 /*
- * $Id: scanner.l,v 1.11 1998/11/14 17:16:06 itojun Exp $
+ * $Id: scanner.l,v 1.12 1998/12/08 21:49:09 itojun Exp $
  */
 /*
  * partly derived from lbl libpcap source code, which has the following
@@ -149,6 +149,7 @@
 (FONT|font)		return KW_FONT;
 (EMBED|embed)		return KW_EMBED;
 (ENDEMBED|endembed)	return KW_ENDEMBED;
+(CHARSET|charset)	return KW_CHARSET;
 
 [ \n\t]		;
 ","		return COMMA;
@@ -161,6 +162,9 @@
 			if (strlen(yylval.s))
 				yylval.s[strlen(yylval.s) - 1] = '\0';
 			return STR;
+		}
+.		{
+		  yyerror("invalid character <%c>", *(char *)yytext);
 		}
 %%
 
