File gnuplot-4.2.5-utf8.dif of Package gnuplot

--- docs/gnuplot.doc
+++ docs/gnuplot.doc	2009-05-09 13:53:00.000000000 +0200
@@ -5871,6 +5871,7 @@ C ... and restart the table:
 ?show encoding
 ?encoding
 ?encodings
+=UTF-8
  The `set encoding` command selects a character encoding.
  Syntax:
        set encoding {<value>}
@@ -5881,6 +5882,7 @@ C ... and restart the table:
     iso_8859_1  - the most common Western European font used by many
                   Unix workstations and by MS-Windows. This encoding is
                   known in the PostScript world as 'ISO-Latin1'.
+    iso_8859_15 - a variant of iso_8859_1 that includes the Euro symbol
     iso_8859_2  - used in Central and Eastern Europe
     iso_8859_15 - a variant of iso_8859_1 that includes the Euro symbol
     koi8r       - popular Unix cyrillic encoding
@@ -5889,6 +5891,9 @@ C ... and restart the table:
     cp850       - codepage for OS/2, Western Europe
     cp852       - codepage for OS/2, Central and Eastern Europe
     cp1250      - codepage for MS Windows, Central and Eastern Europe
+    cp1254      - codepage for MS Windows, Turkish (superset of Latin5)
+    utf8        - variable-length (multibyte) representation of Unicode   
+                  entry point for each character
 
  Generally you must set the encoding before setting the terminal type.
  Note that encoding is not supported by all terminal drivers and that
--- src/set.c
+++ src/set.c	2009-05-09 13:53:00.000000000 +0200
@@ -1211,7 +1211,7 @@ set_encoding()
 	temp = lookup_table(&set_encoding_tbl[0],c_token);
 
 	if (temp == S_ENC_INVALID)
-	    int_error(c_token, "expecting one of 'default', 'iso_8859_1', 'iso_8859_2', 'iso_8859_15', 'cp437', 'cp850', 'cp852', 'koi8r' or 'koi8u'");
+	    int_error(c_token, "expecting one of 'default', 'utf8', 'iso_8859_1', 'iso_8859_2', 'iso_8859_9', 'iso_8859_15', 'cp437', 'cp850', 'cp852', 'koi8r', or 'koi8u'");
 	c_token++;
     }
     encoding = temp;
--- src/term.c
+++ src/term.c	2009-05-09 13:53:00.000000000 +0200
@@ -134,19 +134,23 @@ TBOOLEAN multiplot = FALSE;
 enum set_encoding_id encoding;
 /* table of encoding names, for output of the setting */
 const char *encoding_names[] = {
-    "default", "iso_8859_1", "iso_8859_2", "iso_8859_15",
-    "cp437", "cp850", "cp852", "cp1250", "koi8r", "koi8u", NULL };
+    "default", "iso_8859_1", "iso_8859_2", "iso_8859_9", "iso_8859_15",
+    "cp437", "cp850", "cp852", "cp1250", "cp1254", "koi8r", "koi8u", 
+    "utf8", NULL };
 /* 'set encoding' options */
 const struct gen_table set_encoding_tbl[] =
 {
     { "def$ault", S_ENC_DEFAULT },
+    { "utf$8", S_ENC_UTF8 },
     { "iso$_8859_1", S_ENC_ISO8859_1 },
     { "iso_8859_2", S_ENC_ISO8859_2 },
+    { "iso_8859_9", S_ENC_ISO8859_9 },
     { "iso_8859_15", S_ENC_ISO8859_15 },
     { "cp4$37", S_ENC_CP437 },
     { "cp850", S_ENC_CP850 },
     { "cp852", S_ENC_CP852 },
     { "cp1250", S_ENC_CP1250 },
+    { "cp1254", S_ENC_CP1254 },
     { "koi8$r", S_ENC_KOI8_R },
     { "koi8$u", S_ENC_KOI8_U },
     { NULL, S_ENC_INVALID }
@@ -945,7 +949,7 @@ term_check_multiplot_okay(TBOOLEAN f_int
 
 void
 write_multiline(
-    unsigned int x, unsigned y,
+    unsigned int x, unsigned int y,
     char *text,
     JUSTIFY hor,                /* horizontal ... */
     VERT_JUSTIFY vert,          /* ... and vertical just - text in hor direction despite angle */
--- src/term_api.h
+++ src/term_api.h	2009-05-09 13:53:00.000000000 +0200
@@ -124,7 +124,9 @@ typedef enum termlayer {
 	TERM_LAYER_RESET,
 	TERM_LAYER_BACKTEXT,
 	TERM_LAYER_FRONTTEXT,
-	TERM_LAYER_END_TEXT
+	TERM_LAYER_END_TEXT,
+        TERM_LAYER_BEFORE_PLOT,
+        TERM_LAYER_AFTER_PLOT
 } t_termlayer;
 
 typedef struct fill_style_type {
@@ -134,8 +136,9 @@ typedef struct fill_style_type {
     int border_linetype;
 } fill_style_type;
 
-typedef enum t_fillstyle { FS_EMPTY, FS_SOLID, FS_PATTERN, FS_DEFAULT }
-	     t_fillstyle;
+typedef enum t_fillstyle { FS_EMPTY, FS_SOLID, FS_PATTERN, FS_DEFAULT,
+                           FS_TRANSPARENT_SOLID, FS_TRANSPARENT_PATTERN }
+             t_fillstyle;
 #define FS_OPAQUE (FS_SOLID + (100<<4))
 
 #ifdef WITH_IMAGE
@@ -159,6 +162,7 @@ typedef enum t_imagecolor { IC_PALETTE,
 #define TERM_ENHANCED_TEXT   32  /* enhanced text mode is enabled   */
 #define TERM_NO_OUTPUTFILE   64  /* terminal doesnt write to a file */
 #define TERM_CAN_CLIP       128  /* terminal does its own clipping  */
+#define TERM_CAN_DASH       256  /* terminal supports dashed lines  */
 
 /* The terminal interface structure --- heart of the terminal layer.
  *
@@ -254,6 +258,11 @@ typedef struct TERMENTRY {
  */
     void (*path) __PROTO((int p));
 
+/* Scale factor for converting terminal coordinates to output
+ * pixel coordinates.  Used to provide data for external mousing code.
+ */
+    double tscale;
+
 } TERMENTRY;
 
 #ifdef WIN16
@@ -263,9 +272,10 @@ typedef struct TERMENTRY {
 #endif
 
 enum set_encoding_id {
-   S_ENC_DEFAULT, S_ENC_ISO8859_1, S_ENC_ISO8859_2, S_ENC_ISO8859_15,
-   S_ENC_CP437, S_ENC_CP850, S_ENC_CP852, S_ENC_CP1250,
-   S_ENC_KOI8_R, S_ENC_KOI8_U, 
+   S_ENC_DEFAULT, S_ENC_ISO8859_1, S_ENC_ISO8859_2, S_ENC_ISO8859_9, S_ENC_ISO8859_15,
+   S_ENC_CP437, S_ENC_CP850, S_ENC_CP852, S_ENC_CP1250, S_ENC_CP1254,
+   S_ENC_KOI8_R, S_ENC_KOI8_U,
+   S_ENC_UTF8,
    S_ENC_INVALID
 };
 
--- src/util.c
+++ src/util.c	2009-05-09 13:53:00.000000000 +0200
@@ -1218,3 +1218,85 @@ getusername ()
 
     return fullname;
 }
+
+TBOOLEAN contains8bit(const char *s)
+{
+    while (*s) {
+	if ((*s++ & 0x80))
+	    return TRUE;
+    }
+    return FALSE;
+}
+
+#define INVALID_UTF8 0xfffful
+
+/* Read from second byte to end of UTF-8 sequence.
+   used by utftoulong() */
+TBOOLEAN
+utf8_getmore (unsigned long * wch, const char **str, int nbytes)
+{
+  int i;
+  unsigned char c;
+  unsigned long minvalue[] = {0x80, 0x800, 0x10000, 0x200000, 0x4000000};
+
+  for (i = 0; i < nbytes; i++) {
+    c = (unsigned char) **str;
+  
+    if ((c & 0xc0) != 0x80) {
+      *wch = INVALID_UTF8;
+      return FALSE;
+    }
+    *wch = (*wch << 6) | (c & 0x3f);
+    (*str)++;
+  }
+
+  /* check for overlong UTF-8 sequences */
+  if (*wch < minvalue[nbytes-1]) {
+    *wch = INVALID_UTF8;
+    return FALSE;
+  }
+  return TRUE;
+}
+
+/* Convert UTF-8 multibyte sequence from string to unsigned long character.
+   Returns TRUE on success.
+*/
+TBOOLEAN
+utf8toulong (unsigned long * wch, const char ** str)
+{
+  unsigned char c;
+
+  c =  (unsigned char) *(*str)++;
+  if ((c & 0x80) == 0) {
+    *wch = (unsigned long) c;
+    return TRUE;
+  }
+
+  if ((c & 0xe0) == 0xc0) {
+    *wch = c & 0x1f;
+    return utf8_getmore(wch, str, 1);
+  }
+
+  if ((c & 0xf0) == 0xe0) {
+    *wch = c & 0x0f;
+    return utf8_getmore(wch, str, 2);
+  }
+
+  if ((c & 0xf8) == 0xf0) {
+    *wch = c & 0x07;
+    return utf8_getmore(wch, str, 3);
+  }
+
+  if ((c & 0xfc) == 0xf8) {
+    *wch = c & 0x03;
+    return utf8_getmore(wch, str, 4);
+  }
+
+  if ((c & 0xfe) == 0xfc) {
+    *wch = c & 0x01;
+    return utf8_getmore(wch, str, 5);
+  }
+
+  *wch = INVALID_UTF8;
+  return FALSE;
+}
--- term/Makefile.am.in
+++ term/Makefile.am.in	2009-05-09 13:53:00.000000000 +0200
@@ -13,7 +13,7 @@ postscriptdir = $(pkgdatadir)/$(VERSION_
 postscript_DATA = PostScript/8859-15.ps PostScript/8859-1.ps\
 	PostScript/8859-2.ps PostScript/cp1250.ps PostScript/cp437.ps\
 	PostScript/cp850.ps PostScript/cp852.ps PostScript/koi8r.ps PostScript/koi8u.ps\
-	PostScript/prologue.ps
+	PostScript/prologue.ps PostScript/utf-8.ps PostScript/aglfn.txt PostScript/NOTE.aglfn
 
 Makefile.am: Makefile.am.in
 	rm -f $@ $@t
--- term/gd.trm
+++ term/gd.trm	2009-05-09 13:53:00.000000000 +0200
@@ -1861,7 +1861,7 @@ ENHGD_FLUSH()
 #ifdef gdFTEX_Adobe_Custom
 	    /* libgd defaults to UTF-8 encodings. We have limited options for	*/
 	    /* over-riding this, but we can try					*/
-	    if (ENHgd_font && !strcmp(ENHgd_font,"Symbol")) {
+	    if (encoding != S_ENC_UTF8 && ENHgd_font && !strcmp(ENHgd_font,"Symbol")) {
 		PNG_FONT_INFO.flags |= gdFTEX_CHARMAP;
 		PNG_FONT_INFO.charmap = gdFTEX_Adobe_Custom;
 	    } else {
--- term/post.trm
+++ term/post.trm	2009-05-09 13:53:00.000000000 +0200
@@ -1,5 +1,5 @@
 /* Hello, Emacs: this is -*-C-*- !
- * $Id: post.trm,v 1.203.2.17 2009/03/02 17:40:06 mikulik Exp $
+ * $Id: post.trm,v 1.230 2008/03/13 18:01:27 sfeam Exp $
  */
 
 /* GNUPLOT - post.trm */
@@ -61,14 +61,18 @@
  *
  * Dan Sebald, 7 March 2003: terminal entry for image functionality
  *
- *  Harald Harders (h.harders@tu-bs.de), 2004-12-02:
- *  Moved all terminal settings into a single structure.
+ * Harald Harders (h.harders@tu-bs.de), 2004-12-02:
+ * Moved all terminal settings into a single structure.
  *
- *  Harald Harders (h.harders@tu-bs.de), 2005-02-08:
- *  Merged functionality of postscript, pslatex, pstex, and epslatex terminals.
+ * Harald Harders (h.harders@tu-bs.de), 2005-02-08:
+ * Merged functionality of postscript, pslatex, pstex, and epslatex terminals.
  *
- *  Ethan Merritt Mar 2006:   Break out prolog and character encodings into
- *  separate files loaded at runtime
+ * Ethan Merritt Mar 2006:   Break out prolog and character encodings into
+ * separate files loaded at runtime
+ *
+ * Thomas Henlich Sep 2007:   Add support for UTF-8 encoding via the glyphshow
+ * operator.  It supports PostScript Type1 fonts that use glyph names according
+ * to the Adobe Glyph List For New Fonts.
  */
 
 #include "driver.h"
@@ -106,7 +110,7 @@ TERM_PUBLIC void PS_previous_palette (vo
 TERM_PUBLIC void PS_set_color (t_colorspec *);
 TERM_PUBLIC void PS_filled_polygon (int, gpiPoint *);
 #ifdef WITH_IMAGE
-TERM_PUBLIC void PS_image __PROTO((unsigned, unsigned, coordval *, gpiPoint *, t_imagecolor));
+TERM_PUBLIC void PS_image __PROTO((unsigned int, unsigned int, coordval *, gpiPoint *, t_imagecolor));
 #endif
 
 /* To support "set term post enhanced" */
@@ -123,6 +127,9 @@ TERM_PUBLIC char *PS_escape_string __PRO
 
 TERM_PUBLIC void PS_path __PROTO((int p));
 static TBOOLEAN PS_newpath = FALSE;
+static TBOOLEAN ENHps_opened_string = FALSE;  /* try to cut out empty ()'s */
+
+TERM_PUBLIC void PS_layer __PROTO((t_termlayer syncpoint));
 
 #endif /* TERM_PROTO */
 
@@ -140,11 +147,12 @@ static TBOOLEAN PS_newpath = FALSE;
     }						\
 } while (0)
 
-/* Datastructure implementing inclusion of font files */
+/* Data structure implementing inclusion of font files */
 struct ps_fontfile_def {
     struct ps_fontfile_def *next;/* pointer to next fontfile in linked list */
     char *fontfile_name;
     char *fontfile_fullname;
+    char *fontname;
 };
 
 /* Terminal type of postscript dialect */
@@ -181,13 +189,14 @@ typedef struct ps_params_t {
     double palfunc_deviation;         /* terminal option */
     TBOOLEAN oldstyle;
     TBOOLEAN epslatex_standalone;
+    TBOOLEAN adobeglyphnames;         /* Choice of output names for UTF8 */
 } ps_params_t;
 
 #define POST_PARAMS_DEFAULT { \
     PSTERM_POSTSCRIPT, 50, 50, \
     PSTERM_LANDSCAPE, FALSE, FALSE, FALSE, FALSE, 1.0, 1.0, FALSE, \
     FALSE, FALSE, NULL, "Helvetica", 14, FALSE, FALSE, 2000, 0.003, \
-    FALSE, FALSE \
+    FALSE, TRUE \
 }
 
 static ps_params_t post_params = POST_PARAMS_DEFAULT;
@@ -261,7 +270,9 @@ static int eps_explicit_y = 0;
 static char *pslatex_auxname = NULL;
 
 /* Routine to copy pre-existing prolog files into output stream */
+static FILE *PS_open_prologue_file __PROTO((char *));
 static void PS_dump_prologue_file __PROTO((char *));
+static void PS_load_glyphlist __PROTO((void));
 
 static const char GPFAR * GPFAR OldEPSL_linetypes[] = {
 /* Line Types */
@@ -280,20 +291,21 @@ static const char GPFAR * GPFAR ENHPS_he
 /* For MFshow and MFwidth the tos is an array with the string and font info:  */
 /*	[<fontname (a string)> <fontsize> <vertical offset> <width significant?> <printed?> <overprint> <text string>]  */
 /* EAM Mar 2004 - Add in a special case overprint 3 = save, overprint 4 = restore */
+/* EAM Nov 2007 - Accommodate UTF-8 support (Gshow) */
 
 "/MFshow {\n",
 "   { dup 5 get 3 ge\n",	/* EAM test for overprint 3 or 4 */
 "     { 5 get 3 eq {gsave} {grestore} ifelse }\n", /* EAM */
 "     {dup dup 0 get findfont exch 1 get scalefont setfont\n",
 "     [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6\n",
-"     get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq\n",
+"     get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq\n",
 "     {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5\n",
 "     get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div\n",
 "     dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get\n",
 "     show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop\n",
 "     pop aload pop M} ifelse }ifelse }ifelse }\n",
 "     ifelse }\n", /* EAM */
-"   forall} bind def\n",
+"   forall} def\n",
 
 /* get the width of the text */
 /* HH 2005-07-24 - Add in a special case overprint 3 = save, 4 = restore
@@ -301,9 +313,12 @@ static const char GPFAR * GPFAR ENHPS_he
  * additional value on the stack. between XYsave and XYrestore,
  * this number is increased by the strings. By pop'ing this number, all
  * strings between XYsave and XYrestore are ignored. */
+/* EAM Nov 2007 - GSwidth is to allow the operator to work either with a string
+ * or with a glyph.  Needed for UTF-8 support. Gwidth may do it better. */
+"/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def\n",
 "/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }\n",
 " {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont\n",
-"     6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def\n",
+"     6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def\n",
 
 /* flush left show */
 "/MLshow { currentpoint stroke M\n",
@@ -366,8 +381,11 @@ PS_RememberFont(char *fname, int can_ree
 	if (strcmp(fnp->name, myfname) == 0)
 	    return NULL;
 
-    /* we did not find the name */
+    /* Ignore it if illegal characters will corrupt the PostScript syntax */
+    if (strpbrk(myfname, "{}[]() "))
+	return NULL;
 
+    /* we have not seen this font before; store name and apply encoding */
     fnp = (struct PS_FontName *)gp_alloc(sizeof(struct PS_FontName),
 					 "PostScript Font record");
     fnp->name = gp_strdup(myfname);
@@ -376,12 +394,17 @@ PS_RememberFont(char *fname, int can_ree
 
     switch(encoding) {
     case S_ENC_ISO8859_1:
+    case S_ENC_UTF8:
 	recode = "reencodeISO def\n";
 	break;
     case S_ENC_ISO8859_2:
 	recode = "reencodeISO2 def\n";
 	break;
-    case S_ENC_ISO8859_15:
+    case S_ENC_ISO8859_9: /* ISO8859-9 is Latin5 */
+    case S_ENC_CP1254:
+	recode = "reencodeISO9 def\n";
+	break;
+    case S_ENC_ISO8859_15: /* ISO8859-15 is Latin9 */
 	recode = "reencodeISO15 def\n";
 	break;
     case S_ENC_CP437:
@@ -407,11 +430,13 @@ PS_RememberFont(char *fname, int can_ree
 	break;
     }
 
-    if (can_reencode && recode) {
-	fprintf(gppsfile,"/%s %s", myfname, recode);
-	return NULL;
-    } else
-	return recode;
+    if (recode) {
+	if (ENHps_opened_string)
+	    ENHPS_FLUSH();
+	fprintf(gppsfile,"/%s %s", fnp->name, recode);
+    }
+
+    return NULL;
 }
 
 char *
@@ -454,6 +479,7 @@ enum PS_id {
     PSLATEX_ROTATE, PSLATEX_NOROTATE, PSLATEX_AUXFILE, PSLATEX_NOAUXFILE,
     PSLATEX_OLDSTYLE, PSLATEX_NEWSTYLE, EPSLATEX_HEADER, EPSLATEX_NOHEADER,
     PS_SIZE,
+    PS_ADOBEGLYPHNAMES, PS_NOADOBEGLYPHNAMES,
     PS_OTHER
 };
 
@@ -499,6 +525,8 @@ static struct gen_table PS_opts[] =
     { "noa$uxfile", PSLATEX_NOAUXFILE },
     { "old$style", PSLATEX_OLDSTYLE },
     { "new$style", PSLATEX_NEWSTYLE },
+    { "adobe$glyphnames", PS_ADOBEGLYPHNAMES },
+    { "noadobe$glyphnames", PS_NOADOBEGLYPHNAMES },
     { NULL, PS_OTHER }
 };
 
@@ -848,35 +876,36 @@ PS_options()
 	    break;
         case PS_FONTFILE: {
             TBOOLEAN deleteentry = FALSE;
+            char *fontfilename = NULL;
             c_token++;
 	    if (ps_params->terminal != PSTERM_POSTSCRIPT)
 		int_error(c_token,
 			  "extraneous argument in set terminal %s",term->name);
 
-            if (!isstring(c_token)) {
-                if (equals(c_token, "add"))
-                    c_token++;
-                else if (almost_equals(c_token, "del$ete")) {
-                    deleteentry = TRUE;
-                    c_token++;
-                } else
-                    int_error(c_token, "Font filename expected");
-            }
-            if (isstring(c_token)) {
-                TBOOLEAN filename_doubled = FALSE;
-                struct ps_fontfile_def *curr_ps_fontfile = 
+	    if (equals(c_token, "add"))
+		c_token++;
+	    else if (almost_equals(c_token, "del$ete")) {
+		deleteentry = TRUE;
+		c_token++;
+	    }
+
+	    if (!(fontfilename = try_to_get_string())) {
+		int_error(c_token, "Font filename expected");
+	    } else {
+		TBOOLEAN filename_doubled = FALSE;
+		struct ps_fontfile_def *curr_ps_fontfile = 
 		    ps_params->first_fontfile;
-                struct ps_fontfile_def *prev_ps_fontfile = NULL;
-                struct ps_fontfile_def *new_ps_fontfile =
-                     gp_alloc(sizeof(struct ps_fontfile_def),
-                             "new_ps_fontfile");
-
-                new_ps_fontfile->fontfile_name =
-                    gp_alloc (token_len(c_token),
-                              "new_ps_fontfile->fontfile_name");
-                quote_str(new_ps_fontfile->fontfile_name,
-                          c_token, token_len(c_token));
-                gp_expand_tilde(&(new_ps_fontfile->fontfile_name));
+		struct ps_fontfile_def *prev_ps_fontfile = NULL;
+		struct ps_fontfile_def *new_ps_fontfile =
+		     gp_alloc(sizeof(struct ps_fontfile_def),
+			     "new_ps_fontfile");
+
+		new_ps_fontfile->fontfile_name =
+		    gp_alloc (token_len(c_token),
+			      "new_ps_fontfile->fontfile_name");
+		gp_expand_tilde(&fontfilename);
+		new_ps_fontfile->fontfile_name = fontfilename;
+		new_ps_fontfile->fontname = NULL;
 		if (!deleteentry) {
 #if defined(PIPES)
 		    if (*(new_ps_fontfile->fontfile_name) != '<') {
@@ -884,7 +913,7 @@ PS_options()
 			new_ps_fontfile->fontfile_fullname =
 			    fontpath_fullname(new_ps_fontfile->fontfile_name);
 			if (!new_ps_fontfile->fontfile_fullname)
-			    int_error(c_token, "Font file '%s' not found",
+			    int_error(c_token-1, "Font file '%s' not found",
 				      new_ps_fontfile->fontfile_name);
 #if defined(PIPES)
 		    } else
@@ -901,45 +930,43 @@ PS_options()
 			    lf=lf->prev;
 		    }
 		    if ((lf && lf->interactive) || interactive)
-			/* if (interactive) { */
 			PS_load_fontfile(new_ps_fontfile,FALSE);
 		}
 
-                if (ps_params->first_fontfile) {
-                    while (curr_ps_fontfile) {
-                        if (strcmp(curr_ps_fontfile->fontfile_name,
-                                   new_ps_fontfile->fontfile_name) == 0) {
-                            filename_doubled = TRUE;
-                            if (deleteentry) {
+		if (ps_params->first_fontfile) {
+		    while (curr_ps_fontfile) {
+			if (strcmp(curr_ps_fontfile->fontfile_name,
+				   new_ps_fontfile->fontfile_name) == 0) {
+			    filename_doubled = TRUE;
+			    if (deleteentry) {
 				delete_ps_fontfile(prev_ps_fontfile,
 						   curr_ps_fontfile);
-                                curr_ps_fontfile = NULL;
-                                break;
-                            }
-                        }
-                        prev_ps_fontfile = curr_ps_fontfile;
-                        curr_ps_fontfile = curr_ps_fontfile->next;
-                    }
-                    if (!filename_doubled) {
-                        if (!deleteentry)
-                            prev_ps_fontfile->next = new_ps_fontfile;
-                        else
-                            int_warn(c_token,"Can't delete Font filename '%s'",
-                                     new_ps_fontfile->fontfile_name);
-                    }
-                } else {
-                    if (!deleteentry)
-                        ps_params->first_fontfile = new_ps_fontfile;
-                    else
-                        int_warn(c_token, "Can't delete Font filename '%s'",
-                                 new_ps_fontfile->fontfile_name);
-                }
-                c_token++;
-            } else
-                int_error(c_token, "Font filename expected");
-            break;
-        }
-        case PS_NOFONTFILES:
+				curr_ps_fontfile = NULL;
+				break;
+			    }
+			}
+			prev_ps_fontfile = curr_ps_fontfile;
+			curr_ps_fontfile = curr_ps_fontfile->next;
+		    }
+		    if (!filename_doubled) {
+			if (!deleteentry)
+			    prev_ps_fontfile->next = new_ps_fontfile;
+			else
+			    int_warn(c_token,"Can't delete Font filename '%s'",
+				     new_ps_fontfile->fontfile_name);
+		    }
+		} else {
+		    if (!deleteentry)
+			ps_params->first_fontfile = new_ps_fontfile;
+		    else
+			int_warn(c_token, "Can't delete Font filename '%s'",
+				 new_ps_fontfile->fontfile_name);
+		}
+		c_token++;
+	    }
+	    break;
+	}
+	case PS_NOFONTFILES:
 	    if (ps_params->terminal != PSTERM_POSTSCRIPT)
 		int_error(c_token,
 			  "extraneous argument in set terminal %s",term->name);
@@ -948,6 +975,14 @@ PS_options()
 				   ps_params->first_fontfile);
 	    ++c_token;
 	    break;
+	case PS_ADOBEGLYPHNAMES:
+	    ps_params->adobeglyphnames = TRUE;
+	    ++c_token;
+	    break;
+	case PS_NOADOBEGLYPHNAMES:
+	    ps_params->adobeglyphnames = FALSE;
+	    ++c_token;
+	    break;
 	case PS_PALFUNCPARAM:
 	    if (set_palfunc)
 		int_error(c_token,
@@ -999,8 +1034,16 @@ PS_options()
 			set_fontsize = TRUE;
 			*comma = '\0';
 		    }
-		    if (*s)
+		    if (*s) {
+			/* Filter out characters that would confuse PostScript */
+			if (strpbrk(s, "()[]{}| ")) {
+			    int_warn(c_token-1,"Illegal characters in PostScript font name.");
+			    int_warn(NO_CARET,"I will try to fix it but this may not work.");
+			    while (strpbrk(s, "()[]{}| "))
+				*(strpbrk(s, "()[]{}| ")) = '-';
+			}
 			strncpy(ps_params->font, s, sizeof(ps_params->font));
+		    }
 		    free(s);
 		} else
 		    int_error(c_token-1,
@@ -1118,6 +1161,12 @@ PS_options()
     }
 #endif
 
+    if ((encoding == S_ENC_UTF8) && (ps_params->terminal == PSTERM_POSTSCRIPT)) {
+	sprintf(tmp_term_options," %sadobeglyphnames \\\n   ",
+	    ps_params->adobeglyphnames ? "" : "no");
+	strcat(term_options,tmp_term_options);
+    }
+
     if (ps_explicit_size) {
 	if (ps_explicit_units == CM)
 	    sprintf(tmp_term_options,"size %.2fcm, %.2fcm ",
@@ -1152,6 +1201,29 @@ PS_options()
 static TBOOLEAN ps_common_uses_fonts;
 static unsigned int ps_common_xoff, ps_common_yoff;
 
+/* The default UTF8 code will use glyph identifiers uniXXXX for all glyphs above 0x0100.
+ * If you define ADOBE_ENCODING_NAMES, then it will instead use the glyph names from the
+ * file aglfn.txt.  Names in the range 0x0100 - 0x01FF correspond to those used by the
+ * Latin1 encoding scheme.  This unicode code page deliberately uses the same character
+ * mapping as Latin1.  Adobe also recommends names for many characters outside this 
+ * range, but not all fonts adhere to this.  You can substitute a different aglfn.txt
+ * file at run time if you want to use a different scheme.
+ */
+#define ADOBE_ENCODING_NAMES 1
+
+#if (ADOBE_ENCODING_NAMES)
+
+typedef struct ps_glyph {
+  unsigned long unicode;
+  char * glyphname;
+} ps_glyph;
+
+static ps_glyph *aglist = NULL;
+static int aglist_alloc = 0;
+static int aglist_size = 0;
+static int psglyphs = 0;
+
+#endif
 
 TERM_PUBLIC void
 PS_load_fontfile(struct ps_fontfile_def *current_ps_fontfile, TBOOLEAN doload)
@@ -1206,7 +1278,7 @@ PS_load_fontfile(struct ps_fontfile_def
 			  current_ps_fontfile->fontfile_name + 1);
 #endif
 	}
-	else if (strcmp(ext,"ttf") == 0) {
+	else if (!strcmp(ext,"ttf") || !strcmp(ext,"otf")) {
 	    /* TrueType */
 #if defined(PIPES)
 	    ispipe = TRUE;
@@ -1285,6 +1357,7 @@ PS_load_fontfile(struct ps_fontfile_def
 		strcpy(fontname,strstr(line+1,"/")+1);
 		fnende = strstr(fontname," ");
 		*fnende = '\0';
+		current_ps_fontfile->fontname = gp_strdup(fontname);
 		/* Print font name */
 		if (!doload) {
 		    if (current_ps_fontfile->fontfile_fullname)
@@ -1365,6 +1438,8 @@ PS_load_fontfiles(TBOOLEAN doload)
 
     while (current_ps_fontfile) {
 	PS_load_fontfile(current_ps_fontfile,doload);
+	if (current_ps_fontfile->fontname)
+		PS_RememberFont(current_ps_fontfile->fontname, 1);
 	current_ps_fontfile = current_ps_fontfile->next;
     }
 }
@@ -1518,11 +1593,16 @@ end\n\
 	    free(outstr2);
     }
 
+    /* Dump the body of the prologue */
+    PS_dump_prologue_file("prologue.ps");
+
     /* insert font encoding vector */
     if (uses_fonts) {
 	switch (encoding) {
 	    case S_ENC_ISO8859_1:   PS_dump_prologue_file("8859-1.ps"); break;
 	    case S_ENC_ISO8859_2:   PS_dump_prologue_file("8859-2.ps"); break;
+	    case S_ENC_CP1254:
+	    case S_ENC_ISO8859_9:   PS_dump_prologue_file("8859-9.ps"); break;
 	    case S_ENC_ISO8859_15:  PS_dump_prologue_file("8859-15.ps"); break;
 	    case S_ENC_CP437:	    PS_dump_prologue_file("cp437.ps"); break;
 	    case S_ENC_CP850:	    PS_dump_prologue_file("cp850.ps"); break;
@@ -1530,14 +1610,14 @@ end\n\
 	    case S_ENC_CP1250:	    PS_dump_prologue_file("cp1250.ps"); break;
 	    case S_ENC_KOI8_R:	    PS_dump_prologue_file("koi8r.ps"); break;
 	    case S_ENC_KOI8_U:	    PS_dump_prologue_file("koi8u.ps"); break;
+	    case S_ENC_UTF8:   	    PS_dump_prologue_file("utf-8.ps");
+				    if (!aglist) PS_load_glyphlist();
+				    break;
 	    case S_ENC_DEFAULT:
 	    default:		    break;
 	}
     }
 
-    /* Dump the body of the prologue */
-    PS_dump_prologue_file("prologue.ps");
-
     /* Redefine old epslatex linetypes if requested */
     if ((ps_params->terminal == PSTERM_EPSLATEX) && ps_params->oldstyle) {
 	for (i = 0; OldEPSL_linetypes[i] != NULL; i++)
@@ -1582,6 +1662,7 @@ PS_init()
 	xmax_t = term->xmax * (xsize + xoffset) / (2*PS_SC);
 	ymin_t = term->ymax * yoffset / (2*PS_SC);
 	ymax_t = term->ymax * (ysize + yoffset) / (2*PS_SC);
+	term->tscale = PS_SC * 2;
 	break;
     case PSTERM_PORTRAIT:
 	if (!ps_explicit_size) {
@@ -1592,6 +1673,7 @@ PS_init()
 	xmax_t = term->xmax * (xsize + xoffset) / PS_SC;
 	ymin_t = term->ymax * yoffset / PS_SC;
 	ymax_t = term->ymax * (ysize + yoffset) / PS_SC;
+	term->tscale = PS_SC;
 	break;
     case PSTERM_LANDSCAPE:
 	if (!ps_explicit_size) {
@@ -1602,6 +1684,7 @@ PS_init()
 	ymax_t = term->xmax * (xsize+xoffset) / PS_SC;
 	xmin_t = term->ymax * (1-ysize-yoffset) / PS_SC;
 	xmax_t = term->ymax * (1-yoffset) / PS_SC;
+	term->tscale = PS_SC;
 	break;
     default:
 	int_error(NO_CARET, "invalid postscript format used");
@@ -1694,11 +1777,6 @@ PS_reset()
 {
     fputs("%%Trailer\n", gppsfile);
 
-    /* I think the following commands should be executed
-       `if (ps_common_uses_fonts)`. So I changed the next line.
-       Please see "PS_RememberFont", too.                       */  /* JFi */
-
-    /*	if (!ps_common_uses_fonts) {  */                             /* JFi */
     if (ps_common_uses_fonts) {
 	fputs("%%DocumentFonts: ", gppsfile);
 	while (PS_DocFonts) {
@@ -1884,38 +1962,97 @@ PS_vector(unsigned int x, unsigned int y
 TERM_PUBLIC void
 PS_put_text(unsigned int x, unsigned int y, const char *str)
 {
-    char ch;
+#define PS_NONE 0
+#define PS_TEXT 1
+#define PS_GLYPH 2
+    unsigned long ch;
 
     if (!str && !strlen(str))
 	return;
     PS_move(x,y);
     if (ps_ang != 0)
-	fprintf(gppsfile,"currentpoint gsave translate %d rotate 0 0 M\n",
-		ps_ang);
-    putc('(',gppsfile);
-    ch = *str++;
-    while(ch!='\0') {
-	if ((ch=='(') || (ch==')') || (ch=='\\'))
-	    putc('\\', gppsfile);
-	putc(ch, gppsfile);
-	ch = *str++;
-    }
+	fprintf(gppsfile,"currentpoint gsave translate %d rotate 0 0 M\n", ps_ang);
 
-    switch(ps_justify) {
-    case LEFT :
-	fputs(") Lshow\n", gppsfile);
-	break;
-    case CENTRE :
-	fputs(") Cshow\n", gppsfile);
-	break;
-    case RIGHT :
-	fputs(") Rshow\n", gppsfile);
-	break;
+    if (encoding == S_ENC_UTF8 && contains8bit(str)) {
+	/* UTF-8 encoding with multibyte characters present */
+	int mode = PS_NONE;
+
+	putc('[', gppsfile);
+
+	for (utf8toulong(&ch, &str); ch != '\0'; utf8toulong(&ch, &str)) {
+	    if (ch < 0x100) {
+		if (mode != PS_TEXT)
+		    putc('(', gppsfile);
+		if (ch == '(' || ch == ')' || ch == '\\')
+		    putc('\\', gppsfile);
+		putc((char)ch, gppsfile);
+		mode = PS_TEXT;
+	    } else {
+		int i;
+		if (mode == PS_TEXT)
+		    putc(')', gppsfile);
+		putc('/', gppsfile);
+#if (ADOBE_ENCODING_NAMES)
+		for (i = 0; i < psglyphs; i++) {
+		    if (aglist[i].unicode == ch) {
+		    	fputs(aglist[i].glyphname, gppsfile);
+			break;
+		    }
+		}
+		if (i >= psglyphs) /* Must not have found a glyph name */
+#endif
+		    fprintf(gppsfile, (ch > 0xffff) ? "u%lX" : "uni%04lX", ch);
+		mode = PS_GLYPH;
+	    }
+	}
+
+	if (mode == PS_TEXT)
+	    putc(')', gppsfile);
+
+	switch(ps_justify) {
+	    case LEFT :
+		fputs("] GLshow\n", gppsfile);
+		break;
+	    case CENTRE :
+		fputs("] GCshow\n", gppsfile);
+		break;
+	    case RIGHT :
+		fputs("] GRshow\n", gppsfile);
+		break;
+	}
+
+    } else {
+	/* plain old 8-bit mode (not UTF-8), or UTF-8 string with only 7-bit characters */
+	putc('(',gppsfile);
+	ch = (char) *str++;
+	while(ch!='\0') {
+	    if ((ch=='(') || (ch==')') || (ch=='\\'))
+		putc('\\', gppsfile);
+	    putc((char) ch, gppsfile);
+	    ch = (char) *str++;
+	}
+
+	switch(ps_justify) {
+	    case LEFT :
+		fputs(") Lshow\n", gppsfile);
+		break;
+	    case CENTRE :
+		fputs(") Cshow\n", gppsfile);
+		break;
+	    case RIGHT :
+		fputs(") Rshow\n", gppsfile);
+		break;
+	}
     }
+
     if (ps_ang != 0)
 	fputs("grestore\n", gppsfile);
     ps_path_count = 0;
     PS_relative_ok = FALSE;
+
+#undef PS_NONE
+#undef PS_TEXT
+#undef PS_GLYPH
 }
 
 
@@ -2034,6 +2171,7 @@ PS_fillbox(
     switch(style & 0xf) {
 
     case FS_SOLID:
+    case FS_TRANSPARENT_SOLID:
 	/* style == 1 --> fill with intensity according to filldensity */
         filldens = (style >> 4) / 100.0;
         if(filldens < 0.0)
@@ -2045,6 +2183,7 @@ PS_fillbox(
         break;
 
     case FS_PATTERN:
+    case FS_TRANSPARENT_PATTERN:
 	/* style == 2 --> fill with pattern according to fillpattern */
 	/* the upper 3 nibbles of 'style' contain pattern number */
 	pattern = (style >> 4) % 8;
@@ -2097,8 +2236,6 @@ PS_fillbox(
 
 /* ENHPOST */
 
-static TBOOLEAN ENHps_opened_string;  /* try to cut out empty ()'s */
-
 /*
  * close a postscript string if it has been opened
  */
@@ -2111,6 +2248,8 @@ ENHPS_FLUSH()
     }
 }
 
+static char *ENHps_opensequence = NULL;
+
 /*
  * open a postscript string
  */
@@ -2134,22 +2273,92 @@ ENHPS_OPEN(
     }
 
 	if (!ENHps_opened_string) {
-	    fprintf(gppsfile, "[(%s) %.1f %.1f %s %s %d (",
+	    int safelen = strlen(fontname) + 40;
+	    free(ENHps_opensequence);
+	    ENHps_opensequence = gp_alloc(safelen,"ENHPS_opensequence");
+	    /* EAM November 2007 - moved here from enhanced_recursion() */
+	    PS_RememberFont(fontname,1);
+#ifdef HAVE_SNPRINTF
+	    snprintf(ENHps_opensequence, safelen, "[(%s) %.1f %.1f %s %s %d ",
+		    fontname, fontsize, base,
+		    widthflag ? "true" : "false",
+		    showflag ? "true" : "false",
+		    overprint);
+#else
+	    sprintf(ENHps_opensequence, "[(%s) %.1f %.1f %s %s %d ",
 		    fontname, fontsize, base,
 		    widthflag ? "true" : "false",
 		    showflag ? "true" : "false",
 		    overprint);
+#endif
+	    fprintf(gppsfile, "%s(", ENHps_opensequence);
 	    ENHps_opened_string = TRUE;
 	}
 }
 
 /*
- * write one or more characters from inside enhanced text processing
+ * Write one character from inside enhanced text processing.
+ * This is trivial except in the case of multi-byte encoding.
  */
 TERM_PUBLIC void
 ENHPS_WRITEC(int c)
 {
-    fputc(c, gppsfile);
+    static int in_utf8 = 0; /* nonzero means we are inside a multibyte sequence */
+    static char utf8[6];    /* holds the multibyte sequence being accumulated   */
+    static int nbytes = 0;  /* number of bytes expected in the sequence */
+
+    /* UTF-8 Encoding */
+    if (encoding == S_ENC_UTF8 && (c & 0x80) != 0) {
+	if (in_utf8 == 0) {
+	    nbytes = (c & 0xE0) == 0xC0 ? 2
+		   : (c & 0xF0) == 0xE0 ? 3
+		   : (c & 0xF8) == 0xF0 ? 4
+		   : 0;
+	    if (!nbytes) /* Illegal UTF8 char; hope it's printable  */
+		fputc(c, gppsfile);
+	    else
+		utf8[in_utf8++] = c;
+	} else {
+	    utf8[in_utf8++] = c;
+	    if (in_utf8 >= nbytes) {
+		unsigned long wch = '\0';
+		const char *str = &utf8[0];
+		int i;
+
+		utf8[nbytes] = '\0';
+		in_utf8 = 0;
+		utf8toulong(&wch, &str);
+
+		if (wch < 0x100) { /* Single byte ISO8859-1 character */
+		    fputc(wch, gppsfile);
+		    return;
+		}
+
+		/* Finish off previous partial string, if any */
+		ENHPS_FLUSH();
+
+		/* Write a new partial string for this glyph */
+		fprintf(gppsfile, "%s/", ENHps_opensequence);
+#if (ADOBE_ENCODING_NAMES)
+		for (i = 0; i < psglyphs; i++) {
+		    if (aglist[i].unicode == wch) {
+			fputs(aglist[i].glyphname, gppsfile);
+			break;
+		    }
+		}
+		if (i >= psglyphs) /* Must not have found a glyph name */
+#endif
+		    fprintf(gppsfile, (wch > 0xffff) ? "u%lX" : "uni%04lX", wch);
+		fprintf(gppsfile, "]\n");
+
+		/* Mark string closed */
+		ENHps_opened_string = FALSE;
+	    }
+	}
+    } else
+
+    /* Single byte character */
+	fputc(c, gppsfile);
 }
 
 /* a set-font routine for enhanced post : simply copies
@@ -2198,7 +2407,7 @@ ENHPS_put_text(unsigned int x, unsigned
 
     PS_FLUSH_PATH;
 
-    /* if there are no magic characters, we should just be able
+    /* FIXME: if there are no magic characters, we should just be able
      * punt the string to PS_put_text(), which will give shorter
      * ps output [eg tics and stuff rarely need extra processing],
      * but we need to make sure that the current font is the
@@ -2574,7 +2783,7 @@ PS_make_header(t_sm_palette *palette)
 TERM_PUBLIC int PS_make_palette (t_sm_palette *palette)
 {
     if (palette == NULL) {
-        return 0;  /* postscript can do continuous colors */
+	return 0;  /* postscript can do continuous colors */
     }
 
     PS_make_header(palette);
@@ -2647,6 +2856,9 @@ TERM_PUBLIC void PS_filled_polygon (int
 	/* General case for solid or pattern-filled polygons
 	 * gsave <x0> <y0> N <x1> <y1> ... <xn> <yn> density PolyFill
 	 */
+	int fillpar = style >> 4;
+	style = style &0xf;
+
 	fprintf(gppsfile, "gsave ");
 	fprintf(gppsfile, "%i %i N", corners[0].x, corners[0].y);
 	for (i = 1; i < points; i++) {
@@ -2662,6 +2874,8 @@ TERM_PUBLIC void PS_filled_polygon (int
 	
 	case FS_SOLID:
 	    filldens = (style >> 4) / 100.0;
+	case FS_TRANSPARENT_SOLID:
+	    filldens = (fillpar) / 100.0;
 	    if(filldens < 0.0)
 		filldens = 0.0;
 	    if(filldens >= 1.0)
@@ -2670,8 +2884,10 @@ TERM_PUBLIC void PS_filled_polygon (int
 		fprintf(gppsfile, " %.2f PolyFill\n", filldens);
 	    break;
 	    
+	case FS_TRANSPARENT_PATTERN:
+	    fprintf(gppsfile," /TransparentPatterns true def\n");
 	case FS_PATTERN:
-	    pattern = (style >> 4) % 8;
+	    pattern = (fillpar) % 8;
 	    if (pattern == 0)  {
 		filldens = 0.5;
 		fprintf(gppsfile, " %.1f PolyFill\n", filldens);
@@ -2730,10 +2946,11 @@ delete_ps_fontfile(struct ps_fontfile_de
 	if (prev != NULL)	/* there is a previous ps_fontfile */
 	    prev->next = this->next;
 	else			/* this = ps_params->first_fontfile */
-	                        /* so change ps_params->first_fontfile */
+		                /* so change ps_params->first_fontfile */
 	    ps_params->first_fontfile = this->next;
 	free(this->fontfile_name);
 	free(this->fontfile_fullname);
+	free(this->fontname);
 	free(this);
 	this = NULL;
     }
@@ -2770,15 +2987,15 @@ enum PS_ENCODING {
  * routine.
  */
 static char *
-PS_encode_image(unsigned M, unsigned N, coordval *image, t_imagecolor color_mode, 
+PS_encode_image(unsigned int M, unsigned int N, coordval *image, t_imagecolor color_mode, 
 		int bits_per_component, int max_colors, double cscale,
 		enum PS_ENCODING encoding, int *return_num_bytes)
 {
-    unsigned coord_remaining;
+    unsigned int coord_remaining;
     coordval *coord_ptr;
     unsigned short i_line;
-    unsigned i_element;
-    unsigned end_of_line;
+    unsigned int i_element;
+    unsigned int end_of_line;
     unsigned short bits_remaining, bits_start;
 
     unsigned long tuple4;
@@ -2954,7 +3171,7 @@ PS_encode_image(unsigned M, unsigned N,
 
 
 static void
-print_five_operand_image(unsigned M, unsigned N, gpiPoint *corner, t_imagecolor color_mode, unsigned short bits_per_component)
+print_five_operand_image(unsigned int M, unsigned int N, gpiPoint *corner, t_imagecolor color_mode, unsigned short bits_per_component)
 {
     char *space = ps_params->level1 ? "" : "  ";
 
@@ -2980,7 +3197,7 @@ print_five_operand_image(unsigned M, uns
 
 
 TERM_PUBLIC void
-PS_image (unsigned M, unsigned N, coordval *image, gpiPoint *corner, t_imagecolor color_mode)
+PS_image (unsigned int M, unsigned int N, coordval *image, gpiPoint *corner, t_imagecolor color_mode)
 {
     char *encoded_image;
     int num_encoded_bytes;
@@ -3163,13 +3380,12 @@ PS_image (unsigned M, unsigned N, coordv
  * If unsuccessful, look for hardcoded absolute path on UNIX,
  * or hardcoded relative path on Windows and OS2,
  * or files included at compile time. */
-static void
-PS_dump_prologue_file(char *name)
+static FILE *
+PS_open_prologue_file(char *name)
 {
     char *fullname;
     char *ps_prologue_dir;
     FILE *prologue_fd;
-    char buf[256];
 
     if ((ps_prologue_dir = getenv("GNUPLOT_PS_DIR")) == NULL) {
 #ifdef GNUPLOT_PS_DIR
@@ -3221,6 +3437,8 @@ PS_dump_prologue_file(char *name)
 		dump = prologue_8859_1_ps;
 	else if (!strcmp(name,"8859-2.ps"))
 		dump = prologue_8859_2_ps;
+	else if (!strcmp(name,"8859-9.ps"))
+		dump = prologue_8859_9_ps;
 	else if (!strcmp(name,"cp1250.ps"))
 		dump = prologue_cp1250_ps;
 	else if (!strcmp(name,"cp437.ps"))
@@ -3233,16 +3451,18 @@ PS_dump_prologue_file(char *name)
 		dump = prologue_koi8r_ps;
 	else if (!strcmp(name,"koi8u.ps"))
 		dump = prologue_koi8u_ps;
+	else if (!strcmp(name,"utf-8.ps"))
+		dump = prologue_utf_8_ps;
 	else if (!strcmp(name,"prologue.ps"))
 		dump = prologue_prologue_ps;
 	else
-		int_error(NO_CARET,"Requested Postscript prologue is not included");
+		int_warn(NO_CARET,"Requested Postscript prologue %s not found",name);
 
 	if (dump) {
 		for (i = 0; dump[i] != NULL; ++i)
 		fprintf(gppsfile, "%s", dump[i]);
 	}
-	return;
+	return NULL;
 #endif /* GNUPLOT_PS_DIR */
     }
 
@@ -3273,8 +3493,62 @@ PS_dump_prologue_file(char *name)
 	int_error(NO_CARET,"Plot failed!");
     }
     free(fullname);
-    while (fgets(buf, sizeof(buf), prologue_fd))
-	fputs(buf, gppsfile);
+    return prologue_fd;
+}
+    
+static void
+PS_dump_prologue_file(char *name)
+{
+    char buf[256];
+    FILE *prologue_fd = PS_open_prologue_file(name);
+
+    if (prologue_fd) {
+	while (fgets(buf, sizeof(buf), prologue_fd))
+	    fputs(buf, gppsfile);
+	fclose(prologue_fd);
+    }
+}
+
+static void
+PS_load_glyphlist()
+{
+    char buf[256];
+    char *next = NULL;
+    unsigned int code;
+    int  len;
+    char glyph_name[32];
+    FILE *prologue_fd = PS_open_prologue_file("aglfn.txt");
+    
+    if (!prologue_fd)
+	return;
+
+    while (fgets(buf, sizeof(buf), prologue_fd)) {
+	if (*buf == '#' || *buf == '\n')
+	    continue;
+	code = strtol(buf,&next,16);
+
+	/* User control over whether Adobe glyph names are used for unicode   */
+	/* entries above 0x0100.  I.e. when we see a UTF-8 alpha, do we write */
+	/* /alpha rather than /uni03B1?   Some fonts want one or the other.   */
+	/* This is controlled by 'set term post adobeglyphnames'.             */
+	if (code >= 0x0100 && !ps_params->adobeglyphnames)
+	    continue;
+	
+	next++;
+	len = strchr(next,';') - next;
+	strncpy(glyph_name, next, len);
+	glyph_name[len] = '\0';
+	FPRINTF((stderr, "%04X   %s\n", code, glyph_name));
+	if (aglist_size + sizeof(ps_glyph) > aglist_alloc) {
+	    aglist_alloc += 2048;
+	    aglist = gp_realloc(aglist, aglist_alloc, "aglist");
+	}
+	aglist[psglyphs].unicode = code;
+	aglist[psglyphs].glyphname = gp_strdup(glyph_name);
+	aglist_size += sizeof(ps_glyph);
+	psglyphs++;
+    }
+
     fclose(prologue_fd);
 }
 
@@ -3295,6 +3569,32 @@ PS_path(int p)
 
 }
 
+TERM_PUBLIC void
+PS_layer(t_termlayer syncpoint)
+{
+    static int plotno = 0;
+
+    /* We must ignore all syncpoints that we don't recognize */
+    switch (syncpoint) {
+
+	default:
+		break;
+	
+	case TERM_LAYER_BEFORE_PLOT:
+		fprintf(gppsfile, "%% Begin plot #%d\n", ++plotno);
+		break;
+	
+	case TERM_LAYER_AFTER_PLOT:
+		fprintf(gppsfile, "%% End plot #%d\n", plotno);
+		break;
+	
+	case TERM_LAYER_RESET:
+		plotno = 0;
+		break;
+
+    }
+}
+
 #endif /* TERM_BODY */
 
 #ifdef TERM_TABLE
@@ -3307,7 +3607,7 @@ TERM_TABLE_START(post_driver)
     PS_text, null_scale, PS_graphics, PS_move, PS_vector, 
     PS_linetype, PS_put_text, PS_text_angle, 
     PS_justify_text, PS_point, PS_arrow, PS_set_font, PS_pointsize,
-    TERM_BINARY|TERM_IS_POSTSCRIPT|TERM_CAN_CLIP /*flags*/, 
+    TERM_BINARY|TERM_IS_POSTSCRIPT|TERM_CAN_CLIP|TERM_CAN_DASH /*flags*/, 
     0 /*suspend*/, 0 /*resume*/, PS_fillbox, PS_linewidth
 #ifdef USE_MOUSE
     , 0, 0, 0, 0, 0 /* no mouse support for postscript */
@@ -3320,8 +3620,9 @@ TERM_TABLE_START(post_driver)
     , PS_image
 #endif
     , ENHPS_OPEN, ENHPS_FLUSH, ENHPS_WRITEC
-    , 0		/* layer control */
+    , PS_layer		/* used only to insert comments */
     , PS_path
+    , PS_SC		/* terminal to pixel coord scale factor */
 TERM_TABLE_END(post_driver)
 
 #undef LAST_TERM
@@ -3432,7 +3733,7 @@ PS_COMMON_OPTS2
 " but transfers the texts to LaTeX instead of including in the PostScript",
 " code. Thus, many options are the same as in the `postscript terminal`.",
 "",
-" From version 4.0 to 4.2, some changes have been invoked into the default ",
+" From version 4.0 to 4.1, some changes have been invoked into the default ",
 " appearance of the epslatex terminal to reach better consistency with the",
 " postscript terminal:  The plot size has been changed from 5 x 3 inches to",
 " 5 x 3.5 inches;  the character width is now estimated to be 60% of the font",
@@ -3625,7 +3926,7 @@ PS_COMMON_DOC1
 " \\special{psfile=...} command.  Remember to close the `output file` before",
 " next plot unless in `multiplot` mode.",
 "",
-" Gnuplot versions prior version 4.2 have generated plots of the size",
+" Gnuplot versions prior version 4.1 have generated plots of the size",
 " 5 x 3 inches using the ps(la)tex terminal while the current version generates",
 " 5 x 3.5 inches to be consistent with the postscript eps terminal.  In",
 " addition, the character width is now estimated to be 60% of the font size",
@@ -3678,7 +3979,7 @@ START_HELP(post)
 "                               {enhanced | noenhanced}",
 "                               {defaultplex | simplex | duplex}",
 "                               {fontfile [add | delete] \"<filename>\"",
-"                                | nofontfiles}",
+"                                | nofontfiles} {{no}adobeglyphnames}",
 PS_COMMON_OPTS1
 PS_COMMON_OPTS2
 PS_COMMON_PROLOG_INFO
@@ -3748,112 +4049,6 @@ PS_COMMON_DOC1
 " A PostScript file is editable, so once `gnuplot` has created one, you are",
 " free to modify it to your heart's desire.  See the `editing postscript`",
 " section for some hints.",
-"2 enhanced postscript",
-"?commands set terminal postscript enhanced",
-"?set terminal postscript enhanced",
-"?set term postscript enhanced",
-"?terminal postscript enhanced",
-"?term postscript enhanced",
-"?enhanced_postscript",
-"?enhanced postscript",
-"?Enhanced postscript",
-"?enhanced text",
-"?Enhanced text",
-"?enhanced",
-" Several terminal types support an enhanced text mode in which ",
-" additional formatting information is embedded in the text string.",
-"",
-"@start table - first is interactive cleartext form",
-"  Control      Examples        Explanation",
-"   ^           a^x             superscript",
-"   _           a_x             subscript",
-"   @           @x or a@^b_c    phantom box (occupies no width)",
-"   &           &{space}        inserts space of specified length",
-"   ~           ~a{.8-}         overprints '-' on 'a', raised by .8",
-"                               times the current fontsize",
-"#\\begin{tabular}{|ccl|} \\hline",
-"#\\multicolumn{3}{|c|}{Enhanced Text Control Codes} \\\\ \\hline",
-"#Control & Examples & Explanation \\\\ \\hline",
-"#\\verb~^~ & \\verb~a^x~ & superscript\\\\",
-"#\\verb~_~ & \\verb~a_x~ & subscript\\\\",
-"#\\verb~@~ & \\verb~@x or a@^b_c~ & phantom box (occupies no width)\\\\",
-"#\\verb~&~ & \\verb~&{space}~ & inserts space of specified length\\\\",
-"#\\verb|~| & \\verb|~a{.8-}| & overprints '-' on 'a', raised by .8\\\\",
-"#\\verb~ ~ & \\verb~ ~ & times the current fontsize\\\\",
-"%c c l .",
-"%.TE", /* ugly - doc2ms uses @ for column separator, but here we */
-"%.TS", /* need @ in table, so end and restart the table ! */
-"%center box tab ($) ;",
-"%c c l .",
-"%Control$Examples$Explanation",
-"%_",
-"%^$a^x$superscript",
-"%\\&_$a\\&_x$subscript",
-"% @ $ @x or a\\&@^b\\&_c$phantom box (occupies no width)",
-"% & $ &{space}$inserts space of specified length",
-"% ~ $ ~a{.8-}$overprints '-' on 'a', raised by .8",
-"%   $   $times the current fontsize",
-"@end table",
-"",
-" Braces can be used to place multiple-character text where a single character",
-" is expected (e.g., 2^{10}).  To change the font and/or size, use the full",
-" form:  {/[fontname][=fontsize | *fontscale] text}.  Thus {/Symbol=20 G} is a",
-" 20-point GAMMA and {/*0.75 K} is a K at three-quarters of whatever fontsize",
-" is currently in effect.  (The '/' character MUST be the first character after",
-" the '{'.)",
-"",
-" If the encoding vector has been changed by `set encoding`, the default",
-" encoding vector can be used instead by following the slash with a dash.  This",
-" is unnecessary if you use the Symbol font, however---since /Symbol uses its",
-" own encoding vector, `gnuplot` will not apply any other encoding vector to",
-" it.",
-"",
-" The phantom box is useful for a@^b_c to align superscripts and subscripts",
-" but does not work well for overwriting an accent on a letter.  (To do the",
-" latter, it is much better to use 'set encoding iso_8859_1' to change to the",
-" ISO Latin-1 encoding vector, which contains a large variety of letters with",
-" accents or other diacritical marks.)  Since the box is non-spacing, it is",
-" sensible to put the shorter of the subscript or superscript in the box (that",
-" is, after the @).",
-"",
-" Space equal in length to a string can be inserted using the '&' character.",
-" Thus",
-"         'abc&{def}ghi'",
-" would produce",
-"         'abc   ghi'.",
-"",
-" The '~' character causes the next character or bracketed text to be",
-" overprinted by the following character or bracketed text.  The second text",
-" will be horizontally centered on the first.  Thus '~a/' will result in an 'a'",
-" with a slash through it.  You can also shift the second text vertically by",
-" preceding the second text with a number, which will define the fraction of the",
-" current fontsize by which the text will be raised or lowered.  In this case",
-" the number and text must be enclosed in brackets because more than one",
-" character is necessary.  If the overprinted text begins with a number, put a",
-" space between the vertical offset and the text ('~{abc}{.5 000}'); otherwise",
-" no space is needed ('~{abc}{.5---}').  You can change the font for one or",
-" both strings ('~a{.5 /*.2 o}'---an 'a' with a one-fifth-size 'o' on top---and",
-" the space between the number and the slash is necessary), but you can't",
-" change it after the beginning of the string.  Neither can you use any other",
-" special syntax within either string.  You can, of course, use control",
-" characters by escaping them (see below), such as '~a{\\^}'",
-"",
-" You can access special symbols numerically by specifying \\character-code (in",
-" octal), e.g., {/Symbol \\245} is the symbol for infinity.",
-"",
-" You can escape control characters using \\, e.g.,  \\\\, \\{, and so on.",
-"",
-" But be aware that strings in double-quotes are parsed differently than those",
-" enclosed in single-quotes.  The major difference is that backslashes may need",
-" to be doubled when in double-quoted strings.",
-"",
-" Examples (these are hard to describe in words---try them!):",
-"       set xlabel 'Time (10^6 {/Symbol m}s)'",
-"       set title '{/Symbol=18 \\362@_{/=9.6 0}^{/=12 x}} \\",
-"                  {/Helvetica e^{-{/Symbol m}^2/2} d}{/Symbol m}'",
-"",
-" The file \"ps_guide.ps\" in the /docs/psdoc subdirectory of the `gnuplot` source",
-" distribution contains more examples of the enhanced syntax.",
 "2 editing postscript",
 "?commands set terminal postscript editing",
 "?set terminal postscript editing",
@@ -4009,6 +4204,26 @@ PS_COMMON_DOC1
 " controlled at the time gnuplot is built. However, you can control this",
 " either by defining an environment variable GNUPLOT_PS_DIR or by using the",
 " gnuplot command `set loadpath`. See `set loadpath`.",
+"2 postscript adobeglyphnames",
+"?commands set terminal postscript adobeglyphnames",
+"?set terminal postscript adobeglyphnames",
+"?terminal postscript adobeglyphnames",
+"?postscript adobeglyphnames",
+"?adobeglyphnames",
+"=UTF-8",
+" This setting is only relevant to PostScript output with UTF-8 encoding.",
+" It controls the names used to describe characters with Unicode entry points",
+" higher than 0x00FF.  That is, all characters outside of the Latin1 set.",
+" In general unicode characters do not have a unique name; they have only a",
+" unicode identification code.  However, Adobe have a recommended scheme for",
+" assigning names to certain ranges of characters (extended Latin, Greek, etc).",
+" Some fonts use this scheme, others do not.  By default, gnuplot will use",
+" the Adobe glyph names.  E.g. the lower case Greek letter alpha will be called",
+" /alpha.  If you specific `noadobeglyphnames` then instead gnuplot will use",
+" /uni03B1 to describe this character.  If you get this setting wrong, the",
+" character may not be found even if it is present in the font.",
+" It is probably always correct to use the default for Adobe fonts, but for",
+" other fonts you may have to try both settings.  See also `fontfile`.",
 "",
 ""
 END_HELP(post)
--- term/pslatex.trm
+++ term/pslatex.trm	2009-05-09 13:53:00.000000000 +0200
@@ -1,5 +1,5 @@
 /* Hello, Emacs, this is -*-C-*-
- * $Id: pslatex.trm,v 1.69.2.1 2008/02/22 20:34:41 sfeam Exp $
+ * $Id: pslatex.trm,v 1.72 2008/02/22 20:02:26 sfeam Exp $
  */
 
 /* GNUPLOT - pslatex.trm */
@@ -441,7 +441,10 @@ EPSLATEX_common_init()
         case S_ENC_ISO8859_2:
             inputenc = "latin2";
             break;
-        case S_ENC_ISO8859_15:
+        case S_ENC_ISO8859_9:	/* ISO8859-9 is Latin5 */
+            inputenc = "latin5";
+            break;
+        case S_ENC_ISO8859_15:	/* ISO8859-15 is Latin9 */
             inputenc = "latin9";
             break;
         case S_ENC_CP437:
--- term/PostScript/8859-1.ps
+++ term/PostScript/8859-1.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,3 +1,6 @@
+%
+% Encoding for ISO-8859-1 (also called Latin1)
+%
 /reencodeISO {
 dup dup findfont dup length dict begin
 { 1 index /FID ne { def }{ pop pop } ifelse } forall
--- term/PostScript/8859-15.ps
+++ term/PostScript/8859-15.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,3 +1,6 @@
+%
+% Encoding for ISO-8859-15 (also called Latin9)
+%
 /reencodeISO15 {
 dup dup findfont dup length dict begin
 { 1 index /FID ne { def }{ pop pop } ifelse } forall
--- term/PostScript/8859-2.ps
+++ term/PostScript/8859-2.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,4 +1,5 @@
-% Encoding for ISO-8859-2 (also called as Latin-2), with
+%
+% Encoding for ISO-8859-2 (also called Latin2), with
 % minor differences to "true" ISO-8859-2 (*commaaccent 
 % instead of *cedilla for sStT -> incorrect in ISO-8859-2,
 % the standard will probably be modified in this respect)
--- term/PostScript/8859-9.ps
+++ term/PostScript/8859-9.ps	2009-05-09 13:53:00.000000000 +0200
@@ -0,0 +1,44 @@
+%
+% Encoding for ISO_8859_9 (also called Latin5)
+% Plus code points 80-9F used in Codepage 1254
+%
+/reencodeISO9 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+	CharStrings /Idieresis known {
+		/Encoding ISOLatin5Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin5Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl
+/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef/.notdef
+/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash
+/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef/Ydieresis
+/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/bullet/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent
+/Scedilla/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/gbreve/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/dotlessi/scedilla/ydieresis
+] def
--- term/PostScript/NOTE.aglfn
+++ term/PostScript/NOTE.aglfn	2009-05-09 13:53:00.000000000 +0200
@@ -0,0 +1,2 @@
+The document aglfn.txt was obtained from http://www.adobe.com/devnet/opentype/archives/aglfn.txt
+Do never change this document as this is not allowed by the license found therein.
--- term/PostScript/aglfn.txt
+++ term/PostScript/aglfn.txt	2009-05-09 13:53:00.000000000 +0200
@@ -0,0 +1,932 @@
+# ###################################################################################
+# Copyright (c) 2003,2005,2006,2007 Adobe Systems Incorporated
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this documentation file to use, copy, publish, distribute,
+# sublicense, and/or sell copies of the documentation, and to permit
+# others to do the same, provided that:
+# - No modification, editing or other alteration of this document is
+# allowed; and
+# - The above copyright notice and this permission notice shall be
+# included in all copies of the documentation.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this documentation file, to create their own derivative works
+# from the content of this document to use, copy, publish, distribute,
+# sublicense, and/or sell the derivative works, and to permit others to do
+# the same, provided that the derived work is not represented as being a
+# copy or version of this document.
+# 
+# Adobe shall not be liable to any party for any loss of revenue or profit
+# or for indirect, incidental, special, consequential, or other similar
+# damages, whether based on tort (including without limitation negligence
+# or strict liability), contract or other legal or equitable grounds even
+# if Adobe has been advised or had reason to know of the possibility of
+# such damages.� The Adobe materials are provided on an "AS IS" basis.�
+# Adobe specifically disclaims all express, statutory, or implied
+# warranties relating to the Adobe materials, including but not limited to
+# those concerning merchantability or fitness for a particular purpose or
+# non-infringement of any third party rights regarding the Adobe
+# materials.
+# ###################################################################################
+# Name:          Adobe Glyph List For New Fonts
+# Table version: 1.6
+# Date:          30 Januaury 2006
+#
+# Description:
+#
+#   The Adobe Glyph List For New Fonts (AGLFN) is meant to provide a list of 
+#   base glyph names which are compatible with the AGL specification at
+#   http://partners.adobe.com/asn/developer/type/unicodegn.html.
+#   and which can be used as described in section 6 of that document.
+#
+#   This list comprises the set of glyph names from the AGLv2,0 which map
+#   to via the AGL rules to the semanticly correct Unicode value. For
+#   example, Asmall is omitted as the AGL maps this to the Unicode
+#   Private Use Area value F761, rather than to the Unicode value for the
+#   character "A". "ffi" is also omitted, as the AGL maps this to the
+#   Alphabetic Presentation Forms Area value FB03, rather than
+#   decomposing it to the three-value Unicode sequence 0066,0066,0069.
+#    See section 7.1 of the Unicode Standard 4.0 on this issue.
+#   "arrowvertex" is omitted becuase this now has a real Unicode
+#   character value, and the AGL is now incorrect in mapping this to the 
+#   Private Use Area value  F8E6.
+#
+#  If you do not find an appropriate name for your glyph in this list,
+#  then please refer to section 6 of the document:
+#   http://partners.adobe.com/asn/developer/typeforum/unicodegn.html.
+#
+#	The Unicode values and names are given for convenience.
+#
+# Format: Semicolon-delimited fields:
+#
+#   (1) Standard UV or CUS UV. (4 uppercase hexadecimal digits)
+#
+#   (2) Glyph name. (upper- and lowercase letters, digits)
+#
+#   (3) Character names: Unicode character names for standard UVs, and
+#       descriptive names for CUS UVs. (uppercase letters, hyphen, space)
+#
+#   The entries are sorted by glyph name in increasing ASCII order; entries
+#   with the same glyph name are sorted in decreasing priority order.
+#
+#   Lines starting with "#" are comments; blank lines should be ignored.
+#
+#   1.6  [30 January 2006]
+#	- Completed work intended in 1.5
+#
+#   1.5  [23 November 2005]
+#      - removed duplicated block at end of file
+#      - changed mappings:
+#            2206;Delta;INCREMENT changed to 0394;Delta;GREEK CAPITAL LETTER DELTA
+#            2126;Omega;OHM SIGN changed to 03A9;Omega;GREEK CAPITAL LETTER OMEGA
+#            03BC;mu;MICRO SIGN changed to 03BC;mu;GREEK SMALL LETTER MU
+#      - corrected statement above about why ffi is omitted.
+
+#   1.4  [24 September 2003]  Changed version to 1.4, to avoid confusion 
+#		with the AGL 1.3
+#			fixed spelling errors in the header
+#			fully removed arrowvertex, as it is mapped only to a PUA Unicode value in some fonts.
+#
+#   1.1  [17 April 2003]  Renamed [Tt]cedilla back to [Tt]commaaccent:
+#
+#   1.0  [31 Jan 2003]  Original version. Derived from the AGLv1.2 by:
+#	-  removing the PUA area codes
+#	- removing duplicate Unicode mappings, and 
+#	- renaming tcommaaccent to tcedilla and Tcommaaccent to Tcedilla 
+#
+0041;A;LATIN CAPITAL LETTER A
+00C6;AE;LATIN CAPITAL LETTER AE
+01FC;AEacute;LATIN CAPITAL LETTER AE WITH ACUTE
+00C1;Aacute;LATIN CAPITAL LETTER A WITH ACUTE
+0102;Abreve;LATIN CAPITAL LETTER A WITH BREVE
+00C2;Acircumflex;LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C4;Adieresis;LATIN CAPITAL LETTER A WITH DIAERESIS
+00C0;Agrave;LATIN CAPITAL LETTER A WITH GRAVE
+0391;Alpha;GREEK CAPITAL LETTER ALPHA
+0386;Alphatonos;GREEK CAPITAL LETTER ALPHA WITH TONOS
+0100;Amacron;LATIN CAPITAL LETTER A WITH MACRON
+0104;Aogonek;LATIN CAPITAL LETTER A WITH OGONEK
+00C5;Aring;LATIN CAPITAL LETTER A WITH RING ABOVE
+01FA;Aringacute;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00C3;Atilde;LATIN CAPITAL LETTER A WITH TILDE
+0042;B;LATIN CAPITAL LETTER B
+0392;Beta;GREEK CAPITAL LETTER BETA
+0043;C;LATIN CAPITAL LETTER C
+0106;Cacute;LATIN CAPITAL LETTER C WITH ACUTE
+010C;Ccaron;LATIN CAPITAL LETTER C WITH CARON
+00C7;Ccedilla;LATIN CAPITAL LETTER C WITH CEDILLA
+0108;Ccircumflex;LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010A;Cdotaccent;LATIN CAPITAL LETTER C WITH DOT ABOVE
+03A7;Chi;GREEK CAPITAL LETTER CHI
+0044;D;LATIN CAPITAL LETTER D
+010E;Dcaron;LATIN CAPITAL LETTER D WITH CARON
+0110;Dcroat;LATIN CAPITAL LETTER D WITH STROKE
+0394;Delta;GREEK CAPITAL LETTER DELTA
+0045;E;LATIN CAPITAL LETTER E
+00C9;Eacute;LATIN CAPITAL LETTER E WITH ACUTE
+0114;Ebreve;LATIN CAPITAL LETTER E WITH BREVE
+011A;Ecaron;LATIN CAPITAL LETTER E WITH CARON
+00CA;Ecircumflex;LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;Edieresis;LATIN CAPITAL LETTER E WITH DIAERESIS
+0116;Edotaccent;LATIN CAPITAL LETTER E WITH DOT ABOVE
+00C8;Egrave;LATIN CAPITAL LETTER E WITH GRAVE
+0112;Emacron;LATIN CAPITAL LETTER E WITH MACRON
+014A;Eng;LATIN CAPITAL LETTER ENG
+0118;Eogonek;LATIN CAPITAL LETTER E WITH OGONEK
+0395;Epsilon;GREEK CAPITAL LETTER EPSILON
+0388;Epsilontonos;GREEK CAPITAL LETTER EPSILON WITH TONOS
+0397;Eta;GREEK CAPITAL LETTER ETA
+0389;Etatonos;GREEK CAPITAL LETTER ETA WITH TONOS
+00D0;Eth;LATIN CAPITAL LETTER ETH
+20AC;Euro;EURO SIGN
+0046;F;LATIN CAPITAL LETTER F
+0047;G;LATIN CAPITAL LETTER G
+0393;Gamma;GREEK CAPITAL LETTER GAMMA
+011E;Gbreve;LATIN CAPITAL LETTER G WITH BREVE
+01E6;Gcaron;LATIN CAPITAL LETTER G WITH CARON
+011C;Gcircumflex;LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+0122;Gcommaaccent;LATIN CAPITAL LETTER G WITH CEDILLA
+0120;Gdotaccent;LATIN CAPITAL LETTER G WITH DOT ABOVE
+0048;H;LATIN CAPITAL LETTER H
+25CF;H18533;BLACK CIRCLE
+25AA;H18543;BLACK SMALL SQUARE
+25AB;H18551;WHITE SMALL SQUARE
+25A1;H22073;WHITE SQUARE
+0126;Hbar;LATIN CAPITAL LETTER H WITH STROKE
+0124;Hcircumflex;LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0049;I;LATIN CAPITAL LETTER I
+0132;IJ;LATIN CAPITAL LIGATURE IJ
+00CD;Iacute;LATIN CAPITAL LETTER I WITH ACUTE
+012C;Ibreve;LATIN CAPITAL LETTER I WITH BREVE
+00CE;Icircumflex;LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;Idieresis;LATIN CAPITAL LETTER I WITH DIAERESIS
+0130;Idotaccent;LATIN CAPITAL LETTER I WITH DOT ABOVE
+2111;Ifraktur;BLACK-LETTER CAPITAL I
+00CC;Igrave;LATIN CAPITAL LETTER I WITH GRAVE
+012A;Imacron;LATIN CAPITAL LETTER I WITH MACRON
+012E;Iogonek;LATIN CAPITAL LETTER I WITH OGONEK
+0399;Iota;GREEK CAPITAL LETTER IOTA
+03AA;Iotadieresis;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+038A;Iotatonos;GREEK CAPITAL LETTER IOTA WITH TONOS
+0128;Itilde;LATIN CAPITAL LETTER I WITH TILDE
+004A;J;LATIN CAPITAL LETTER J
+0134;Jcircumflex;LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+004B;K;LATIN CAPITAL LETTER K
+039A;Kappa;GREEK CAPITAL LETTER KAPPA
+0136;Kcommaaccent;LATIN CAPITAL LETTER K WITH CEDILLA
+004C;L;LATIN CAPITAL LETTER L
+0139;Lacute;LATIN CAPITAL LETTER L WITH ACUTE
+039B;Lambda;GREEK CAPITAL LETTER LAMDA
+013D;Lcaron;LATIN CAPITAL LETTER L WITH CARON
+013B;Lcommaaccent;LATIN CAPITAL LETTER L WITH CEDILLA
+013F;Ldot;LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0141;Lslash;LATIN CAPITAL LETTER L WITH STROKE
+004D;M;LATIN CAPITAL LETTER M
+039C;Mu;GREEK CAPITAL LETTER MU
+004E;N;LATIN CAPITAL LETTER N
+0143;Nacute;LATIN CAPITAL LETTER N WITH ACUTE
+0147;Ncaron;LATIN CAPITAL LETTER N WITH CARON
+0145;Ncommaaccent;LATIN CAPITAL LETTER N WITH CEDILLA
+00D1;Ntilde;LATIN CAPITAL LETTER N WITH TILDE
+039D;Nu;GREEK CAPITAL LETTER NU
+004F;O;LATIN CAPITAL LETTER O
+0152;OE;LATIN CAPITAL LIGATURE OE
+00D3;Oacute;LATIN CAPITAL LETTER O WITH ACUTE
+014E;Obreve;LATIN CAPITAL LETTER O WITH BREVE
+00D4;Ocircumflex;LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D6;Odieresis;LATIN CAPITAL LETTER O WITH DIAERESIS
+00D2;Ograve;LATIN CAPITAL LETTER O WITH GRAVE
+01A0;Ohorn;LATIN CAPITAL LETTER O WITH HORN
+0150;Ohungarumlaut;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+014C;Omacron;LATIN CAPITAL LETTER O WITH MACRON
+03A9;Omega;GREEK CAPITAL LETTER OMEGA
+038F;Omegatonos;GREEK CAPITAL LETTER OMEGA WITH TONOS
+039F;Omicron;GREEK CAPITAL LETTER OMICRON
+038C;Omicrontonos;GREEK CAPITAL LETTER OMICRON WITH TONOS
+00D8;Oslash;LATIN CAPITAL LETTER O WITH STROKE
+01FE;Oslashacute;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00D5;Otilde;LATIN CAPITAL LETTER O WITH TILDE
+0050;P;LATIN CAPITAL LETTER P
+03A6;Phi;GREEK CAPITAL LETTER PHI
+03A0;Pi;GREEK CAPITAL LETTER PI
+03A8;Psi;GREEK CAPITAL LETTER PSI
+0051;Q;LATIN CAPITAL LETTER Q
+0052;R;LATIN CAPITAL LETTER R
+0154;Racute;LATIN CAPITAL LETTER R WITH ACUTE
+0158;Rcaron;LATIN CAPITAL LETTER R WITH CARON
+0156;Rcommaaccent;LATIN CAPITAL LETTER R WITH CEDILLA
+211C;Rfraktur;BLACK-LETTER CAPITAL R
+03A1;Rho;GREEK CAPITAL LETTER RHO
+0053;S;LATIN CAPITAL LETTER S
+250C;SF010000;BOX DRAWINGS LIGHT DOWN AND RIGHT
+2514;SF020000;BOX DRAWINGS LIGHT UP AND RIGHT
+2510;SF030000;BOX DRAWINGS LIGHT DOWN AND LEFT
+2518;SF040000;BOX DRAWINGS LIGHT UP AND LEFT
+253C;SF050000;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+252C;SF060000;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+2534;SF070000;BOX DRAWINGS LIGHT UP AND HORIZONTAL
+251C;SF080000;BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+2524;SF090000;BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2500;SF100000;BOX DRAWINGS LIGHT HORIZONTAL
+2502;SF110000;BOX DRAWINGS LIGHT VERTICAL
+2561;SF190000;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562;SF200000;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2556;SF210000;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2555;SF220000;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2563;SF230000;BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2551;SF240000;BOX DRAWINGS DOUBLE VERTICAL
+2557;SF250000;BOX DRAWINGS DOUBLE DOWN AND LEFT
+255D;SF260000;BOX DRAWINGS DOUBLE UP AND LEFT
+255C;SF270000;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255B;SF280000;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255E;SF360000;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F;SF370000;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+255A;SF380000;BOX DRAWINGS DOUBLE UP AND RIGHT
+2554;SF390000;BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2569;SF400000;BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+2566;SF410000;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2560;SF420000;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2550;SF430000;BOX DRAWINGS DOUBLE HORIZONTAL
+256C;SF440000;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+2567;SF450000;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568;SF460000;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2564;SF470000;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565;SF480000;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2559;SF490000;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+2558;SF500000;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2552;SF510000;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553;SF520000;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+256B;SF530000;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256A;SF540000;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+015A;Sacute;LATIN CAPITAL LETTER S WITH ACUTE
+0160;Scaron;LATIN CAPITAL LETTER S WITH CARON
+015E;Scedilla;LATIN CAPITAL LETTER S WITH CEDILLA
+015C;Scircumflex;LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+0218;Scommaaccent;LATIN CAPITAL LETTER S WITH COMMA BELOW
+03A3;Sigma;GREEK CAPITAL LETTER SIGMA
+0054;T;LATIN CAPITAL LETTER T
+03A4;Tau;GREEK CAPITAL LETTER TAU
+0166;Tbar;LATIN CAPITAL LETTER T WITH STROKE
+0164;Tcaron;LATIN CAPITAL LETTER T WITH CARON
+0162;Tcommaaccent;LATIN CAPITAL LETTER T WITH CEDILLA
+0398;Theta;GREEK CAPITAL LETTER THETA
+00DE;Thorn;LATIN CAPITAL LETTER THORN
+0055;U;LATIN CAPITAL LETTER U
+00DA;Uacute;LATIN CAPITAL LETTER U WITH ACUTE
+016C;Ubreve;LATIN CAPITAL LETTER U WITH BREVE
+00DB;Ucircumflex;LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;Udieresis;LATIN CAPITAL LETTER U WITH DIAERESIS
+00D9;Ugrave;LATIN CAPITAL LETTER U WITH GRAVE
+01AF;Uhorn;LATIN CAPITAL LETTER U WITH HORN
+0170;Uhungarumlaut;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+016A;Umacron;LATIN CAPITAL LETTER U WITH MACRON
+0172;Uogonek;LATIN CAPITAL LETTER U WITH OGONEK
+03A5;Upsilon;GREEK CAPITAL LETTER UPSILON
+03D2;Upsilon1;GREEK UPSILON WITH HOOK SYMBOL
+03AB;Upsilondieresis;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+038E;Upsilontonos;GREEK CAPITAL LETTER UPSILON WITH TONOS
+016E;Uring;LATIN CAPITAL LETTER U WITH RING ABOVE
+0168;Utilde;LATIN CAPITAL LETTER U WITH TILDE
+0056;V;LATIN CAPITAL LETTER V
+0057;W;LATIN CAPITAL LETTER W
+1E82;Wacute;LATIN CAPITAL LETTER W WITH ACUTE
+0174;Wcircumflex;LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+1E84;Wdieresis;LATIN CAPITAL LETTER W WITH DIAERESIS
+1E80;Wgrave;LATIN CAPITAL LETTER W WITH GRAVE
+0058;X;LATIN CAPITAL LETTER X
+039E;Xi;GREEK CAPITAL LETTER XI
+0059;Y;LATIN CAPITAL LETTER Y
+00DD;Yacute;LATIN CAPITAL LETTER Y WITH ACUTE
+0176;Ycircumflex;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0178;Ydieresis;LATIN CAPITAL LETTER Y WITH DIAERESIS
+1EF2;Ygrave;LATIN CAPITAL LETTER Y WITH GRAVE
+005A;Z;LATIN CAPITAL LETTER Z
+0179;Zacute;LATIN CAPITAL LETTER Z WITH ACUTE
+017D;Zcaron;LATIN CAPITAL LETTER Z WITH CARON
+017B;Zdotaccent;LATIN CAPITAL LETTER Z WITH DOT ABOVE
+0396;Zeta;GREEK CAPITAL LETTER ZETA
+0061;a;LATIN SMALL LETTER A
+00E1;aacute;LATIN SMALL LETTER A WITH ACUTE
+0103;abreve;LATIN SMALL LETTER A WITH BREVE
+00E2;acircumflex;LATIN SMALL LETTER A WITH CIRCUMFLEX
+00B4;acute;ACUTE ACCENT
+0301;acutecomb;COMBINING ACUTE ACCENT
+00E4;adieresis;LATIN SMALL LETTER A WITH DIAERESIS
+00E6;ae;LATIN SMALL LETTER AE
+01FD;aeacute;LATIN SMALL LETTER AE WITH ACUTE
+2015;afii00208;HORIZONTAL BAR
+0410;afii10017;CYRILLIC CAPITAL LETTER A
+0411;afii10018;CYRILLIC CAPITAL LETTER BE
+0412;afii10019;CYRILLIC CAPITAL LETTER VE
+0413;afii10020;CYRILLIC CAPITAL LETTER GHE
+0414;afii10021;CYRILLIC CAPITAL LETTER DE
+0415;afii10022;CYRILLIC CAPITAL LETTER IE
+0401;afii10023;CYRILLIC CAPITAL LETTER IO
+0416;afii10024;CYRILLIC CAPITAL LETTER ZHE
+0417;afii10025;CYRILLIC CAPITAL LETTER ZE
+0418;afii10026;CYRILLIC CAPITAL LETTER I
+0419;afii10027;CYRILLIC CAPITAL LETTER SHORT I
+041A;afii10028;CYRILLIC CAPITAL LETTER KA
+041B;afii10029;CYRILLIC CAPITAL LETTER EL
+041C;afii10030;CYRILLIC CAPITAL LETTER EM
+041D;afii10031;CYRILLIC CAPITAL LETTER EN
+041E;afii10032;CYRILLIC CAPITAL LETTER O
+041F;afii10033;CYRILLIC CAPITAL LETTER PE
+0420;afii10034;CYRILLIC CAPITAL LETTER ER
+0421;afii10035;CYRILLIC CAPITAL LETTER ES
+0422;afii10036;CYRILLIC CAPITAL LETTER TE
+0423;afii10037;CYRILLIC CAPITAL LETTER U
+0424;afii10038;CYRILLIC CAPITAL LETTER EF
+0425;afii10039;CYRILLIC CAPITAL LETTER HA
+0426;afii10040;CYRILLIC CAPITAL LETTER TSE
+0427;afii10041;CYRILLIC CAPITAL LETTER CHE
+0428;afii10042;CYRILLIC CAPITAL LETTER SHA
+0429;afii10043;CYRILLIC CAPITAL LETTER SHCHA
+042A;afii10044;CYRILLIC CAPITAL LETTER HARD SIGN
+042B;afii10045;CYRILLIC CAPITAL LETTER YERU
+042C;afii10046;CYRILLIC CAPITAL LETTER SOFT SIGN
+042D;afii10047;CYRILLIC CAPITAL LETTER E
+042E;afii10048;CYRILLIC CAPITAL LETTER YU
+042F;afii10049;CYRILLIC CAPITAL LETTER YA
+0490;afii10050;CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0402;afii10051;CYRILLIC CAPITAL LETTER DJE
+0403;afii10052;CYRILLIC CAPITAL LETTER GJE
+0404;afii10053;CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405;afii10054;CYRILLIC CAPITAL LETTER DZE
+0406;afii10055;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407;afii10056;CYRILLIC CAPITAL LETTER YI
+0408;afii10057;CYRILLIC CAPITAL LETTER JE
+0409;afii10058;CYRILLIC CAPITAL LETTER LJE
+040A;afii10059;CYRILLIC CAPITAL LETTER NJE
+040B;afii10060;CYRILLIC CAPITAL LETTER TSHE
+040C;afii10061;CYRILLIC CAPITAL LETTER KJE
+040E;afii10062;CYRILLIC CAPITAL LETTER SHORT U
+0430;afii10065;CYRILLIC SMALL LETTER A
+0431;afii10066;CYRILLIC SMALL LETTER BE
+0432;afii10067;CYRILLIC SMALL LETTER VE
+0433;afii10068;CYRILLIC SMALL LETTER GHE
+0434;afii10069;CYRILLIC SMALL LETTER DE
+0435;afii10070;CYRILLIC SMALL LETTER IE
+0451;afii10071;CYRILLIC SMALL LETTER IO
+0436;afii10072;CYRILLIC SMALL LETTER ZHE
+0437;afii10073;CYRILLIC SMALL LETTER ZE
+0438;afii10074;CYRILLIC SMALL LETTER I
+0439;afii10075;CYRILLIC SMALL LETTER SHORT I
+043A;afii10076;CYRILLIC SMALL LETTER KA
+043B;afii10077;CYRILLIC SMALL LETTER EL
+043C;afii10078;CYRILLIC SMALL LETTER EM
+043D;afii10079;CYRILLIC SMALL LETTER EN
+043E;afii10080;CYRILLIC SMALL LETTER O
+043F;afii10081;CYRILLIC SMALL LETTER PE
+0440;afii10082;CYRILLIC SMALL LETTER ER
+0441;afii10083;CYRILLIC SMALL LETTER ES
+0442;afii10084;CYRILLIC SMALL LETTER TE
+0443;afii10085;CYRILLIC SMALL LETTER U
+0444;afii10086;CYRILLIC SMALL LETTER EF
+0445;afii10087;CYRILLIC SMALL LETTER HA
+0446;afii10088;CYRILLIC SMALL LETTER TSE
+0447;afii10089;CYRILLIC SMALL LETTER CHE
+0448;afii10090;CYRILLIC SMALL LETTER SHA
+0449;afii10091;CYRILLIC SMALL LETTER SHCHA
+044A;afii10092;CYRILLIC SMALL LETTER HARD SIGN
+044B;afii10093;CYRILLIC SMALL LETTER YERU
+044C;afii10094;CYRILLIC SMALL LETTER SOFT SIGN
+044D;afii10095;CYRILLIC SMALL LETTER E
+044E;afii10096;CYRILLIC SMALL LETTER YU
+044F;afii10097;CYRILLIC SMALL LETTER YA
+0491;afii10098;CYRILLIC SMALL LETTER GHE WITH UPTURN
+0452;afii10099;CYRILLIC SMALL LETTER DJE
+0453;afii10100;CYRILLIC SMALL LETTER GJE
+0454;afii10101;CYRILLIC SMALL LETTER UKRAINIAN IE
+0455;afii10102;CYRILLIC SMALL LETTER DZE
+0456;afii10103;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457;afii10104;CYRILLIC SMALL LETTER YI
+0458;afii10105;CYRILLIC SMALL LETTER JE
+0459;afii10106;CYRILLIC SMALL LETTER LJE
+045A;afii10107;CYRILLIC SMALL LETTER NJE
+045B;afii10108;CYRILLIC SMALL LETTER TSHE
+045C;afii10109;CYRILLIC SMALL LETTER KJE
+045E;afii10110;CYRILLIC SMALL LETTER SHORT U
+040F;afii10145;CYRILLIC CAPITAL LETTER DZHE
+0462;afii10146;CYRILLIC CAPITAL LETTER YAT
+0472;afii10147;CYRILLIC CAPITAL LETTER FITA
+0474;afii10148;CYRILLIC CAPITAL LETTER IZHITSA
+045F;afii10193;CYRILLIC SMALL LETTER DZHE
+0463;afii10194;CYRILLIC SMALL LETTER YAT
+0473;afii10195;CYRILLIC SMALL LETTER FITA
+0475;afii10196;CYRILLIC SMALL LETTER IZHITSA
+04D9;afii10846;CYRILLIC SMALL LETTER SCHWA
+200E;afii299;LEFT-TO-RIGHT MARK
+200F;afii300;RIGHT-TO-LEFT MARK
+200D;afii301;ZERO WIDTH JOINER
+066A;afii57381;ARABIC PERCENT SIGN
+060C;afii57388;ARABIC COMMA
+0660;afii57392;ARABIC-INDIC DIGIT ZERO
+0661;afii57393;ARABIC-INDIC DIGIT ONE
+0662;afii57394;ARABIC-INDIC DIGIT TWO
+0663;afii57395;ARABIC-INDIC DIGIT THREE
+0664;afii57396;ARABIC-INDIC DIGIT FOUR
+0665;afii57397;ARABIC-INDIC DIGIT FIVE
+0666;afii57398;ARABIC-INDIC DIGIT SIX
+0667;afii57399;ARABIC-INDIC DIGIT SEVEN
+0668;afii57400;ARABIC-INDIC DIGIT EIGHT
+0669;afii57401;ARABIC-INDIC DIGIT NINE
+061B;afii57403;ARABIC SEMICOLON
+061F;afii57407;ARABIC QUESTION MARK
+0621;afii57409;ARABIC LETTER HAMZA
+0622;afii57410;ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;afii57411;ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;afii57412;ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;afii57413;ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;afii57414;ARABIC LETTER YEH WITH HAMZA ABOVE
+0627;afii57415;ARABIC LETTER ALEF
+0628;afii57416;ARABIC LETTER BEH
+0629;afii57417;ARABIC LETTER TEH MARBUTA
+062A;afii57418;ARABIC LETTER TEH
+062B;afii57419;ARABIC LETTER THEH
+062C;afii57420;ARABIC LETTER JEEM
+062D;afii57421;ARABIC LETTER HAH
+062E;afii57422;ARABIC LETTER KHAH
+062F;afii57423;ARABIC LETTER DAL
+0630;afii57424;ARABIC LETTER THAL
+0631;afii57425;ARABIC LETTER REH
+0632;afii57426;ARABIC LETTER ZAIN
+0633;afii57427;ARABIC LETTER SEEN
+0634;afii57428;ARABIC LETTER SHEEN
+0635;afii57429;ARABIC LETTER SAD
+0636;afii57430;ARABIC LETTER DAD
+0637;afii57431;ARABIC LETTER TAH
+0638;afii57432;ARABIC LETTER ZAH
+0639;afii57433;ARABIC LETTER AIN
+063A;afii57434;ARABIC LETTER GHAIN
+0640;afii57440;ARABIC TATWEEL
+0641;afii57441;ARABIC LETTER FEH
+0642;afii57442;ARABIC LETTER QAF
+0643;afii57443;ARABIC LETTER KAF
+0644;afii57444;ARABIC LETTER LAM
+0645;afii57445;ARABIC LETTER MEEM
+0646;afii57446;ARABIC LETTER NOON
+0648;afii57448;ARABIC LETTER WAW
+0649;afii57449;ARABIC LETTER ALEF MAKSURA
+064A;afii57450;ARABIC LETTER YEH
+064B;afii57451;ARABIC FATHATAN
+064C;afii57452;ARABIC DAMMATAN
+064D;afii57453;ARABIC KASRATAN
+064E;afii57454;ARABIC FATHA
+064F;afii57455;ARABIC DAMMA
+0650;afii57456;ARABIC KASRA
+0651;afii57457;ARABIC SHADDA
+0652;afii57458;ARABIC SUKUN
+0647;afii57470;ARABIC LETTER HEH
+06A4;afii57505;ARABIC LETTER VEH
+067E;afii57506;ARABIC LETTER PEH
+0686;afii57507;ARABIC LETTER TCHEH
+0698;afii57508;ARABIC LETTER JEH
+06AF;afii57509;ARABIC LETTER GAF
+0679;afii57511;ARABIC LETTER TTEH
+0688;afii57512;ARABIC LETTER DDAL
+0691;afii57513;ARABIC LETTER RREH
+06BA;afii57514;ARABIC LETTER NOON GHUNNA
+06D2;afii57519;ARABIC LETTER YEH BARREE
+06D5;afii57534;ARABIC LETTER AE
+20AA;afii57636;NEW SHEQEL SIGN
+05BE;afii57645;HEBREW PUNCTUATION MAQAF
+05C3;afii57658;HEBREW PUNCTUATION SOF PASUQ
+05D0;afii57664;HEBREW LETTER ALEF
+05D1;afii57665;HEBREW LETTER BET
+05D2;afii57666;HEBREW LETTER GIMEL
+05D3;afii57667;HEBREW LETTER DALET
+05D4;afii57668;HEBREW LETTER HE
+05D5;afii57669;HEBREW LETTER VAV
+05D6;afii57670;HEBREW LETTER ZAYIN
+05D7;afii57671;HEBREW LETTER HET
+05D8;afii57672;HEBREW LETTER TET
+05D9;afii57673;HEBREW LETTER YOD
+05DA;afii57674;HEBREW LETTER FINAL KAF
+05DB;afii57675;HEBREW LETTER KAF
+05DC;afii57676;HEBREW LETTER LAMED
+05DD;afii57677;HEBREW LETTER FINAL MEM
+05DE;afii57678;HEBREW LETTER MEM
+05DF;afii57679;HEBREW LETTER FINAL NUN
+05E0;afii57680;HEBREW LETTER NUN
+05E1;afii57681;HEBREW LETTER SAMEKH
+05E2;afii57682;HEBREW LETTER AYIN
+05E3;afii57683;HEBREW LETTER FINAL PE
+05E4;afii57684;HEBREW LETTER PE
+05E5;afii57685;HEBREW LETTER FINAL TSADI
+05E6;afii57686;HEBREW LETTER TSADI
+05E7;afii57687;HEBREW LETTER QOF
+05E8;afii57688;HEBREW LETTER RESH
+05E9;afii57689;HEBREW LETTER SHIN
+05EA;afii57690;HEBREW LETTER TAV
+05F0;afii57716;HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1;afii57717;HEBREW LIGATURE YIDDISH VAV YOD
+05F2;afii57718;HEBREW LIGATURE YIDDISH DOUBLE YOD
+05B4;afii57793;HEBREW POINT HIRIQ
+05B5;afii57794;HEBREW POINT TSERE
+05B6;afii57795;HEBREW POINT SEGOL
+05BB;afii57796;HEBREW POINT QUBUTS
+05B8;afii57797;HEBREW POINT QAMATS
+05B7;afii57798;HEBREW POINT PATAH
+05B0;afii57799;HEBREW POINT SHEVA
+05B2;afii57800;HEBREW POINT HATAF PATAH
+05B1;afii57801;HEBREW POINT HATAF SEGOL
+05B3;afii57802;HEBREW POINT HATAF QAMATS
+05C2;afii57803;HEBREW POINT SIN DOT
+05C1;afii57804;HEBREW POINT SHIN DOT
+05B9;afii57806;HEBREW POINT HOLAM
+05BC;afii57807;HEBREW POINT DAGESH OR MAPIQ
+05BD;afii57839;HEBREW POINT METEG
+05BF;afii57841;HEBREW POINT RAFE
+05C0;afii57842;HEBREW PUNCTUATION PASEQ
+02BC;afii57929;MODIFIER LETTER APOSTROPHE
+2105;afii61248;CARE OF
+2113;afii61289;SCRIPT SMALL L
+2116;afii61352;NUMERO SIGN
+202C;afii61573;POP DIRECTIONAL FORMATTING
+202D;afii61574;LEFT-TO-RIGHT OVERRIDE
+202E;afii61575;RIGHT-TO-LEFT OVERRIDE
+200C;afii61664;ZERO WIDTH NON-JOINER
+066D;afii63167;ARABIC FIVE POINTED STAR
+02BD;afii64937;MODIFIER LETTER REVERSED COMMA
+00E0;agrave;LATIN SMALL LETTER A WITH GRAVE
+2135;aleph;ALEF SYMBOL
+03B1;alpha;GREEK SMALL LETTER ALPHA
+03AC;alphatonos;GREEK SMALL LETTER ALPHA WITH TONOS
+0101;amacron;LATIN SMALL LETTER A WITH MACRON
+0026;ampersand;AMPERSAND
+2220;angle;ANGLE
+2329;angleleft;LEFT-POINTING ANGLE BRACKET
+232A;angleright;RIGHT-POINTING ANGLE BRACKET
+0387;anoteleia;GREEK ANO TELEIA
+0105;aogonek;LATIN SMALL LETTER A WITH OGONEK
+2248;approxequal;ALMOST EQUAL TO
+00E5;aring;LATIN SMALL LETTER A WITH RING ABOVE
+01FB;aringacute;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+2194;arrowboth;LEFT RIGHT ARROW
+21D4;arrowdblboth;LEFT RIGHT DOUBLE ARROW
+21D3;arrowdbldown;DOWNWARDS DOUBLE ARROW
+21D0;arrowdblleft;LEFTWARDS DOUBLE ARROW
+21D2;arrowdblright;RIGHTWARDS DOUBLE ARROW
+21D1;arrowdblup;UPWARDS DOUBLE ARROW
+2193;arrowdown;DOWNWARDS ARROW
+2190;arrowleft;LEFTWARDS ARROW
+2192;arrowright;RIGHTWARDS ARROW
+2191;arrowup;UPWARDS ARROW
+2195;arrowupdn;UP DOWN ARROW
+21A8;arrowupdnbse;UP DOWN ARROW WITH BASE
+005E;asciicircum;CIRCUMFLEX ACCENT
+007E;asciitilde;TILDE
+002A;asterisk;ASTERISK
+2217;asteriskmath;ASTERISK OPERATOR
+0040;at;COMMERCIAL AT
+00E3;atilde;LATIN SMALL LETTER A WITH TILDE
+0062;b;LATIN SMALL LETTER B
+005C;backslash;REVERSE SOLIDUS
+007C;bar;VERTICAL LINE
+03B2;beta;GREEK SMALL LETTER BETA
+2588;block;FULL BLOCK
+007B;braceleft;LEFT CURLY BRACKET
+007D;braceright;RIGHT CURLY BRACKET
+005B;bracketleft;LEFT SQUARE BRACKET
+005D;bracketright;RIGHT SQUARE BRACKET
+02D8;breve;BREVE
+00A6;brokenbar;BROKEN BAR
+2022;bullet;BULLET
+0063;c;LATIN SMALL LETTER C
+0107;cacute;LATIN SMALL LETTER C WITH ACUTE
+02C7;caron;CARON
+21B5;carriagereturn;DOWNWARDS ARROW WITH CORNER LEFTWARDS
+010D;ccaron;LATIN SMALL LETTER C WITH CARON
+00E7;ccedilla;LATIN SMALL LETTER C WITH CEDILLA
+0109;ccircumflex;LATIN SMALL LETTER C WITH CIRCUMFLEX
+010B;cdotaccent;LATIN SMALL LETTER C WITH DOT ABOVE
+00B8;cedilla;CEDILLA
+00A2;cent;CENT SIGN
+03C7;chi;GREEK SMALL LETTER CHI
+25CB;circle;WHITE CIRCLE
+2297;circlemultiply;CIRCLED TIMES
+2295;circleplus;CIRCLED PLUS
+02C6;circumflex;MODIFIER LETTER CIRCUMFLEX ACCENT
+2663;club;BLACK CLUB SUIT
+003A;colon;COLON
+20A1;colonmonetary;COLON SIGN
+002C;comma;COMMA
+2245;congruent;APPROXIMATELY EQUAL TO
+00A9;copyright;COPYRIGHT SIGN
+00A4;currency;CURRENCY SIGN
+0064;d;LATIN SMALL LETTER D
+2020;dagger;DAGGER
+2021;daggerdbl;DOUBLE DAGGER
+010F;dcaron;LATIN SMALL LETTER D WITH CARON
+0111;dcroat;LATIN SMALL LETTER D WITH STROKE
+00B0;degree;DEGREE SIGN
+03B4;delta;GREEK SMALL LETTER DELTA
+2666;diamond;BLACK DIAMOND SUIT
+00A8;dieresis;DIAERESIS
+0385;dieresistonos;GREEK DIALYTIKA TONOS
+00F7;divide;DIVISION SIGN
+2593;dkshade;DARK SHADE
+2584;dnblock;LOWER HALF BLOCK
+0024;dollar;DOLLAR SIGN
+20AB;dong;DONG SIGN
+02D9;dotaccent;DOT ABOVE
+0323;dotbelowcomb;COMBINING DOT BELOW
+0131;dotlessi;LATIN SMALL LETTER DOTLESS I
+22C5;dotmath;DOT OPERATOR
+0065;e;LATIN SMALL LETTER E
+00E9;eacute;LATIN SMALL LETTER E WITH ACUTE
+0115;ebreve;LATIN SMALL LETTER E WITH BREVE
+011B;ecaron;LATIN SMALL LETTER E WITH CARON
+00EA;ecircumflex;LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;edieresis;LATIN SMALL LETTER E WITH DIAERESIS
+0117;edotaccent;LATIN SMALL LETTER E WITH DOT ABOVE
+00E8;egrave;LATIN SMALL LETTER E WITH GRAVE
+0038;eight;DIGIT EIGHT
+2208;element;ELEMENT OF
+2026;ellipsis;HORIZONTAL ELLIPSIS
+0113;emacron;LATIN SMALL LETTER E WITH MACRON
+2014;emdash;EM DASH
+2205;emptyset;EMPTY SET
+2013;endash;EN DASH
+014B;eng;LATIN SMALL LETTER ENG
+0119;eogonek;LATIN SMALL LETTER E WITH OGONEK
+03B5;epsilon;GREEK SMALL LETTER EPSILON
+03AD;epsilontonos;GREEK SMALL LETTER EPSILON WITH TONOS
+003D;equal;EQUALS SIGN
+2261;equivalence;IDENTICAL TO
+212E;estimated;ESTIMATED SYMBOL
+03B7;eta;GREEK SMALL LETTER ETA
+03AE;etatonos;GREEK SMALL LETTER ETA WITH TONOS
+00F0;eth;LATIN SMALL LETTER ETH
+0021;exclam;EXCLAMATION MARK
+203C;exclamdbl;DOUBLE EXCLAMATION MARK
+00A1;exclamdown;INVERTED EXCLAMATION MARK
+2203;existential;THERE EXISTS
+0066;f;LATIN SMALL LETTER F
+2640;female;FEMALE SIGN
+2012;figuredash;FIGURE DASH
+25A0;filledbox;BLACK SQUARE
+25AC;filledrect;BLACK RECTANGLE
+0035;five;DIGIT FIVE
+215D;fiveeighths;VULGAR FRACTION FIVE EIGHTHS
+0192;florin;LATIN SMALL LETTER F WITH HOOK
+0034;four;DIGIT FOUR
+2044;fraction;FRACTION SLASH
+20A3;franc;FRENCH FRANC SIGN
+0067;g;LATIN SMALL LETTER G
+03B3;gamma;GREEK SMALL LETTER GAMMA
+011F;gbreve;LATIN SMALL LETTER G WITH BREVE
+01E7;gcaron;LATIN SMALL LETTER G WITH CARON
+011D;gcircumflex;LATIN SMALL LETTER G WITH CIRCUMFLEX
+0123;gcommaaccent;LATIN SMALL LETTER G WITH CEDILLA
+0121;gdotaccent;LATIN SMALL LETTER G WITH DOT ABOVE
+00DF;germandbls;LATIN SMALL LETTER SHARP S
+2207;gradient;NABLA
+0060;grave;GRAVE ACCENT
+0300;gravecomb;COMBINING GRAVE ACCENT
+003E;greater;GREATER-THAN SIGN
+2265;greaterequal;GREATER-THAN OR EQUAL TO
+00AB;guillemotleft;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BB;guillemotright;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+2039;guilsinglleft;SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A;guilsinglright;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0068;h;LATIN SMALL LETTER H
+0127;hbar;LATIN SMALL LETTER H WITH STROKE
+0125;hcircumflex;LATIN SMALL LETTER H WITH CIRCUMFLEX
+2665;heart;BLACK HEART SUIT
+0309;hookabovecomb;COMBINING HOOK ABOVE
+2302;house;HOUSE
+02DD;hungarumlaut;DOUBLE ACUTE ACCENT
+002D;hyphen;HYPHEN-MINUS
+0069;i;LATIN SMALL LETTER I
+00ED;iacute;LATIN SMALL LETTER I WITH ACUTE
+012D;ibreve;LATIN SMALL LETTER I WITH BREVE
+00EE;icircumflex;LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;idieresis;LATIN SMALL LETTER I WITH DIAERESIS
+00EC;igrave;LATIN SMALL LETTER I WITH GRAVE
+0133;ij;LATIN SMALL LIGATURE IJ
+012B;imacron;LATIN SMALL LETTER I WITH MACRON
+221E;infinity;INFINITY
+222B;integral;INTEGRAL
+2321;integralbt;BOTTOM HALF INTEGRAL
+2320;integraltp;TOP HALF INTEGRAL
+2229;intersection;INTERSECTION
+25D8;invbullet;INVERSE BULLET
+25D9;invcircle;INVERSE WHITE CIRCLE
+263B;invsmileface;BLACK SMILING FACE
+012F;iogonek;LATIN SMALL LETTER I WITH OGONEK
+03B9;iota;GREEK SMALL LETTER IOTA
+03CA;iotadieresis;GREEK SMALL LETTER IOTA WITH DIALYTIKA
+0390;iotadieresistonos;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AF;iotatonos;GREEK SMALL LETTER IOTA WITH TONOS
+0129;itilde;LATIN SMALL LETTER I WITH TILDE
+006A;j;LATIN SMALL LETTER J
+0135;jcircumflex;LATIN SMALL LETTER J WITH CIRCUMFLEX
+006B;k;LATIN SMALL LETTER K
+03BA;kappa;GREEK SMALL LETTER KAPPA
+0137;kcommaaccent;LATIN SMALL LETTER K WITH CEDILLA
+0138;kgreenlandic;LATIN SMALL LETTER KRA
+006C;l;LATIN SMALL LETTER L
+013A;lacute;LATIN SMALL LETTER L WITH ACUTE
+03BB;lambda;GREEK SMALL LETTER LAMDA
+013E;lcaron;LATIN SMALL LETTER L WITH CARON
+013C;lcommaaccent;LATIN SMALL LETTER L WITH CEDILLA
+0140;ldot;LATIN SMALL LETTER L WITH MIDDLE DOT
+003C;less;LESS-THAN SIGN
+2264;lessequal;LESS-THAN OR EQUAL TO
+258C;lfblock;LEFT HALF BLOCK
+20A4;lira;LIRA SIGN
+2227;logicaland;LOGICAL AND
+00AC;logicalnot;NOT SIGN
+2228;logicalor;LOGICAL OR
+017F;longs;LATIN SMALL LETTER LONG S
+25CA;lozenge;LOZENGE
+0142;lslash;LATIN SMALL LETTER L WITH STROKE
+2591;ltshade;LIGHT SHADE
+006D;m;LATIN SMALL LETTER M
+00AF;macron;MACRON
+2642;male;MALE SIGN
+2212;minus;MINUS SIGN
+2032;minute;PRIME
+03BC;mu;GREEK SMALL LETTER MU
+00D7;multiply;MULTIPLICATION SIGN
+266A;musicalnote;EIGHTH NOTE
+266B;musicalnotedbl;BEAMED EIGHTH NOTES
+006E;n;LATIN SMALL LETTER N
+0144;nacute;LATIN SMALL LETTER N WITH ACUTE
+0149;napostrophe;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0148;ncaron;LATIN SMALL LETTER N WITH CARON
+0146;ncommaaccent;LATIN SMALL LETTER N WITH CEDILLA
+0039;nine;DIGIT NINE
+2209;notelement;NOT AN ELEMENT OF
+2260;notequal;NOT EQUAL TO
+2284;notsubset;NOT A SUBSET OF
+00F1;ntilde;LATIN SMALL LETTER N WITH TILDE
+03BD;nu;GREEK SMALL LETTER NU
+0023;numbersign;NUMBER SIGN
+006F;o;LATIN SMALL LETTER O
+00F3;oacute;LATIN SMALL LETTER O WITH ACUTE
+014F;obreve;LATIN SMALL LETTER O WITH BREVE
+00F4;ocircumflex;LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F6;odieresis;LATIN SMALL LETTER O WITH DIAERESIS
+0153;oe;LATIN SMALL LIGATURE OE
+02DB;ogonek;OGONEK
+00F2;ograve;LATIN SMALL LETTER O WITH GRAVE
+01A1;ohorn;LATIN SMALL LETTER O WITH HORN
+0151;ohungarumlaut;LATIN SMALL LETTER O WITH DOUBLE ACUTE
+014D;omacron;LATIN SMALL LETTER O WITH MACRON
+03C9;omega;GREEK SMALL LETTER OMEGA
+03D6;omega1;GREEK PI SYMBOL
+03CE;omegatonos;GREEK SMALL LETTER OMEGA WITH TONOS
+03BF;omicron;GREEK SMALL LETTER OMICRON
+03CC;omicrontonos;GREEK SMALL LETTER OMICRON WITH TONOS
+0031;one;DIGIT ONE
+2024;onedotenleader;ONE DOT LEADER
+215B;oneeighth;VULGAR FRACTION ONE EIGHTH
+00BD;onehalf;VULGAR FRACTION ONE HALF
+00BC;onequarter;VULGAR FRACTION ONE QUARTER
+2153;onethird;VULGAR FRACTION ONE THIRD
+25E6;openbullet;WHITE BULLET
+00AA;ordfeminine;FEMININE ORDINAL INDICATOR
+00BA;ordmasculine;MASCULINE ORDINAL INDICATOR
+221F;orthogonal;RIGHT ANGLE
+00F8;oslash;LATIN SMALL LETTER O WITH STROKE
+01FF;oslashacute;LATIN SMALL LETTER O WITH STROKE AND ACUTE
+00F5;otilde;LATIN SMALL LETTER O WITH TILDE
+0070;p;LATIN SMALL LETTER P
+00B6;paragraph;PILCROW SIGN
+0028;parenleft;LEFT PARENTHESIS
+0029;parenright;RIGHT PARENTHESIS
+2202;partialdiff;PARTIAL DIFFERENTIAL
+0025;percent;PERCENT SIGN
+002E;period;FULL STOP
+00B7;periodcentered;MIDDLE DOT
+22A5;perpendicular;UP TACK
+2030;perthousand;PER MILLE SIGN
+20A7;peseta;PESETA SIGN
+03C6;phi;GREEK SMALL LETTER PHI
+03D5;phi1;GREEK PHI SYMBOL
+03C0;pi;GREEK SMALL LETTER PI
+002B;plus;PLUS SIGN
+00B1;plusminus;PLUS-MINUS SIGN
+211E;prescription;PRESCRIPTION TAKE
+220F;product;N-ARY PRODUCT
+2282;propersubset;SUBSET OF
+2283;propersuperset;SUPERSET OF
+221D;proportional;PROPORTIONAL TO
+03C8;psi;GREEK SMALL LETTER PSI
+0071;q;LATIN SMALL LETTER Q
+003F;question;QUESTION MARK
+00BF;questiondown;INVERTED QUESTION MARK
+0022;quotedbl;QUOTATION MARK
+201E;quotedblbase;DOUBLE LOW-9 QUOTATION MARK
+201C;quotedblleft;LEFT DOUBLE QUOTATION MARK
+201D;quotedblright;RIGHT DOUBLE QUOTATION MARK
+2018;quoteleft;LEFT SINGLE QUOTATION MARK
+201B;quotereversed;SINGLE HIGH-REVERSED-9 QUOTATION MARK
+2019;quoteright;RIGHT SINGLE QUOTATION MARK
+201A;quotesinglbase;SINGLE LOW-9 QUOTATION MARK
+0027;quotesingle;APOSTROPHE
+0072;r;LATIN SMALL LETTER R
+0155;racute;LATIN SMALL LETTER R WITH ACUTE
+221A;radical;SQUARE ROOT
+0159;rcaron;LATIN SMALL LETTER R WITH CARON
+0157;rcommaaccent;LATIN SMALL LETTER R WITH CEDILLA
+2286;reflexsubset;SUBSET OF OR EQUAL TO
+2287;reflexsuperset;SUPERSET OF OR EQUAL TO
+00AE;registered;REGISTERED SIGN
+2310;revlogicalnot;REVERSED NOT SIGN
+03C1;rho;GREEK SMALL LETTER RHO
+02DA;ring;RING ABOVE
+2590;rtblock;RIGHT HALF BLOCK
+0073;s;LATIN SMALL LETTER S
+015B;sacute;LATIN SMALL LETTER S WITH ACUTE
+0161;scaron;LATIN SMALL LETTER S WITH CARON
+015F;scedilla;LATIN SMALL LETTER S WITH CEDILLA
+015D;scircumflex;LATIN SMALL LETTER S WITH CIRCUMFLEX
+0219;scommaaccent;LATIN SMALL LETTER S WITH COMMA BELOW
+2033;second;DOUBLE PRIME
+00A7;section;SECTION SIGN
+003B;semicolon;SEMICOLON
+0037;seven;DIGIT SEVEN
+215E;seveneighths;VULGAR FRACTION SEVEN EIGHTHS
+2592;shade;MEDIUM SHADE
+03C3;sigma;GREEK SMALL LETTER SIGMA
+03C2;sigma1;GREEK SMALL LETTER FINAL SIGMA
+223C;similar;TILDE OPERATOR
+0036;six;DIGIT SIX
+002F;slash;SOLIDUS
+263A;smileface;WHITE SMILING FACE
+0020;space;SPACE
+2660;spade;BLACK SPADE SUIT
+00A3;sterling;POUND SIGN
+220B;suchthat;CONTAINS AS MEMBER
+2211;summation;N-ARY SUMMATION
+263C;sun;WHITE SUN WITH RAYS
+0074;t;LATIN SMALL LETTER T
+03C4;tau;GREEK SMALL LETTER TAU
+0167;tbar;LATIN SMALL LETTER T WITH STROKE
+0165;tcaron;LATIN SMALL LETTER T WITH CARON
+0163;tcommaaccent;LATIN SMALL LETTER T WITH CEDILLA
+2234;therefore;THEREFORE
+03B8;theta;GREEK SMALL LETTER THETA
+03D1;theta1;GREEK THETA SYMBOL
+00FE;thorn;LATIN SMALL LETTER THORN
+0033;three;DIGIT THREE
+215C;threeeighths;VULGAR FRACTION THREE EIGHTHS
+00BE;threequarters;VULGAR FRACTION THREE QUARTERS
+02DC;tilde;SMALL TILDE
+0303;tildecomb;COMBINING TILDE
+0384;tonos;GREEK TONOS
+2122;trademark;TRADE MARK SIGN
+25BC;triagdn;BLACK DOWN-POINTING TRIANGLE
+25C4;triaglf;BLACK LEFT-POINTING POINTER
+25BA;triagrt;BLACK RIGHT-POINTING POINTER
+25B2;triagup;BLACK UP-POINTING TRIANGLE
+0032;two;DIGIT TWO
+2025;twodotenleader;TWO DOT LEADER
+2154;twothirds;VULGAR FRACTION TWO THIRDS
+0075;u;LATIN SMALL LETTER U
+00FA;uacute;LATIN SMALL LETTER U WITH ACUTE
+016D;ubreve;LATIN SMALL LETTER U WITH BREVE
+00FB;ucircumflex;LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;udieresis;LATIN SMALL LETTER U WITH DIAERESIS
+00F9;ugrave;LATIN SMALL LETTER U WITH GRAVE
+01B0;uhorn;LATIN SMALL LETTER U WITH HORN
+0171;uhungarumlaut;LATIN SMALL LETTER U WITH DOUBLE ACUTE
+016B;umacron;LATIN SMALL LETTER U WITH MACRON
+005F;underscore;LOW LINE
+2017;underscoredbl;DOUBLE LOW LINE
+222A;union;UNION
+2200;universal;FOR ALL
+0173;uogonek;LATIN SMALL LETTER U WITH OGONEK
+2580;upblock;UPPER HALF BLOCK
+03C5;upsilon;GREEK SMALL LETTER UPSILON
+03CB;upsilondieresis;GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03B0;upsilondieresistonos;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CD;upsilontonos;GREEK SMALL LETTER UPSILON WITH TONOS
+016F;uring;LATIN SMALL LETTER U WITH RING ABOVE
+0169;utilde;LATIN SMALL LETTER U WITH TILDE
+0076;v;LATIN SMALL LETTER V
+0077;w;LATIN SMALL LETTER W
+1E83;wacute;LATIN SMALL LETTER W WITH ACUTE
+0175;wcircumflex;LATIN SMALL LETTER W WITH CIRCUMFLEX
+1E85;wdieresis;LATIN SMALL LETTER W WITH DIAERESIS
+2118;weierstrass;SCRIPT CAPITAL P
+1E81;wgrave;LATIN SMALL LETTER W WITH GRAVE
+0078;x;LATIN SMALL LETTER X
+03BE;xi;GREEK SMALL LETTER XI
+0079;y;LATIN SMALL LETTER Y
+00FD;yacute;LATIN SMALL LETTER Y WITH ACUTE
+0177;ycircumflex;LATIN SMALL LETTER Y WITH CIRCUMFLEX
+00FF;ydieresis;LATIN SMALL LETTER Y WITH DIAERESIS
+00A5;yen;YEN SIGN
+1EF3;ygrave;LATIN SMALL LETTER Y WITH GRAVE
+007A;z;LATIN SMALL LETTER Z
+017A;zacute;LATIN SMALL LETTER Z WITH ACUTE
+017E;zcaron;LATIN SMALL LETTER Z WITH CARON
+017C;zdotaccent;LATIN SMALL LETTER Z WITH DOT ABOVE
+0030;zero;DIGIT ZERO
+03B6;zeta;GREEK SMALL LETTER ZETA
--- term/PostScript/cp1250.ps
+++ term/PostScript/cp1250.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,3 +1,6 @@
+%
+% Encoding for code page 1250 (Microsoft Windows Central and Eastern European)
+%
 /reencodeCP1250 {
 dup dup findfont dup length dict begin
 { 1 index /FID ne { def }{ pop pop } ifelse } forall
--- term/PostScript/cp437.ps
+++ term/PostScript/cp437.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,4 +1,5 @@
-% encoding for code page 437
+%
+% encoding for code page 437 (original MSDOS)
 % version 1.0:	- Mainly letters are mapped. The following positions
 % (JFi)		  are left blank (undefined):
 %		-- first 32 positions,
--- term/PostScript/cp850.ps
+++ term/PostScript/cp850.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,4 +1,5 @@
-% encoding for code page 850
+%
+% encoding for code page 850 (obsolete MSDOS Western Europe)
 % version 1.0:  - Mainly letters are mapped. The following positions
 % (JFi)		  are left blank (undefined):
 %		-- first 32 positions,
--- term/PostScript/cp852.ps
+++ term/PostScript/cp852.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,4 +1,5 @@
-% encoding for code page 852
+%
+% encoding for code page 852 (MSDOS Central European)
 /reencodeCP852 {
 dup dup findfont dup length dict begin
 { 1 index /FID ne { def }{ pop pop } ifelse } forall
--- term/PostScript/koi8r.ps
+++ term/PostScript/koi8r.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,4 +1,5 @@
-% encoding for code page koi8r
+%
+% encoding for code page koi8r (8-bit Russian)
 % version 1.0:	- Mainly letters are mapped. The following positions
 % (JFi)		  are left blank (undefined):
 %		-- first 32 positions,
--- term/PostScript/koi8u.ps
+++ term/PostScript/koi8u.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,4 +1,5 @@
 %
+% encoding for code page koi8r (8-bit Ukrainian)
 /reencodeKOI8U {
 dup dup findfont dup length dict begin
 { 1 index /FID ne { def }{ pop pop } ifelse } forall
--- term/PostScript/prologue.ps
+++ term/PostScript/prologue.ps	2009-05-09 13:53:00.000000000 +0200
@@ -1,5 +1,5 @@
 %
-% Gnuplot Prolog Version 4.2 (August 2006)
+% Gnuplot Prolog Version 4.2 (November 2007)
 %
 /M {moveto} bind def
 /L {lineto} bind def
@@ -9,6 +9,7 @@
 /Z {closepath} bind def
 /C {setrgbcolor} bind def
 /f {rlineto fill} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
 /vpt2 vpt 2 mul def
 /hpt2 hpt 2 mul def
 /Lshow {currentpoint stroke M 0 vshift R 
--- term/PostScript/prologues.h
+++ term/PostScript/prologues.h	2009-05-09 13:53:00.000000000 +0200
@@ -2,6 +2,9 @@
  * in a form suitable to inclusion in a C source code */
 
 static const char *prologue_8859_1_ps[] = {
+"%\n",
+"% Encoding for ISO-8859-1 (also called Latin1)\n",
+"%\n",
 "/reencodeISO {\n",
 "dup dup findfont dup length dict begin\n",
 "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n",
@@ -46,6 +49,9 @@ NULL
 };
 
 static const char *prologue_8859_15_ps[] = {
+"%\n",
+"% Encoding for ISO-8859-15 (also called Latin9)\n",
+"%\n",
 "/reencodeISO15 {\n",
 "dup dup findfont dup length dict begin\n",
 "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n",
@@ -90,7 +96,8 @@ NULL
 };
 
 static const char *prologue_8859_2_ps[] = {
-"% Encoding for ISO-8859-2 (also called as Latin-2), with\n",
+"%\n",
+"% Encoding for ISO-8859-2 (also called Latin2), with\n",
 "% minor differences to \"true\" ISO-8859-2 (*commaaccent \n",
 "% instead of *cedilla for sStT -> incorrect in ISO-8859-2,\n",
 "% the standard will probably be modified in this respect)\n",
@@ -138,7 +145,58 @@ static const char *prologue_8859_2_ps[]
 NULL
 };
 
+static const char *prologue_8859_9_ps[] = {
+"%\n",
+"% Encoding for ISO_8859_9 (also called Latin5)\n",
+"% Plus code points 80-9F used in Codepage 1254\n",
+"%\n",
+"/reencodeISO9 {\n",
+"dup dup findfont dup length dict begin\n",
+"{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n",
+"currentdict /CharStrings known {\n",
+"\tCharStrings /Idieresis known {\n",
+"\t\t/Encoding ISOLatin5Encoding def } if\n",
+"} if\n",
+"currentdict end definefont\n",
+"} def\n",
+"/ISOLatin5Encoding [\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n",
+"/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n",
+"/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n",
+"/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n",
+"/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n",
+"/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n",
+"/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n",
+"/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl\n",
+"/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef/.notdef\n",
+"/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash\n",
+"/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef/Ydieresis\n",
+"/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar\n",
+"/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n",
+"/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n",
+"/acute/mu/paragraph/bullet/cedilla/onesuperior/ordmasculine\n",
+"/guillemotright/onequarter/onehalf/threequarters/questiondown\n",
+"/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n",
+"/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n",
+"/Idieresis/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n",
+"/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent\n",
+"/Scedilla/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n",
+"/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n",
+"/iacute/icircumflex/idieresis/gbreve/ntilde/ograve/oacute/ocircumflex\n",
+"/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n",
+"/dotlessi/scedilla/ydieresis\n",
+"] def\n",
+NULL
+};
+
 static const char *prologue_cp1250_ps[] = {
+"%\n",
+"% Encoding for code page 1250 (Microsoft Windows Central and Eastern European)\n",
+"%\n",
 "/reencodeCP1250 {\n",
 "dup dup findfont dup length dict begin\n",
 "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n",
@@ -181,7 +239,8 @@ NULL
 };
 
 static const char *prologue_cp437_ps[] = {
-"% encoding for code page 437\n",
+"%\n",
+"% encoding for code page 437 (original MSDOS)\n",
 "% version 1.0:\t- Mainly letters are mapped. The following positions\n",
 "% (JFi)\t\t  are left blank (undefined):\n",
 "%\t\t-- first 32 positions,\n",
@@ -233,7 +292,8 @@ NULL
 };
 
 static const char *prologue_cp850_ps[] = {
-"% encoding for code page 850\n",
+"%\n",
+"% encoding for code page 850 (obsolete MSDOS Western Europe)\n",
 "% version 1.0:  - Mainly letters are mapped. The following positions\n",
 "% (JFi)\t\t  are left blank (undefined):\n",
 "%\t\t-- first 32 positions,\n",
@@ -282,7 +342,8 @@ NULL
 };
 
 static const char *prologue_cp852_ps[] = {
-"% encoding for code page 852\n",
+"%\n",
+"% encoding for code page 852 (MSDOS Central European)\n",
 "/reencodeCP852 {\n",
 "dup dup findfont dup length dict begin\n",
 "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n",
@@ -326,7 +387,8 @@ NULL
 };
 
 static const char *prologue_koi8r_ps[] = {
-"% encoding for code page koi8r\n",
+"%\n",
+"% encoding for code page koi8r (8-bit Russian)\n",
 "% version 1.0:\t- Mainly letters are mapped. The following positions\n",
 "% (JFi)\t\t  are left blank (undefined):\n",
 "%\t\t-- first 32 positions,\n",
@@ -376,6 +438,7 @@ NULL
 
 static const char *prologue_koi8u_ps[] = {
 "%\n",
+"% encoding for code page koi8r (8-bit Ukrainian)\n",
 "/reencodeKOI8U {\n",
 "dup dup findfont dup length dict begin\n",
 "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n",
@@ -419,7 +482,7 @@ NULL
 
 static const char *prologue_prologue_ps[] = {
 "%\n",
-"% Gnuplot Prolog Version 4.2 (August 2006)\n",
+"% Gnuplot Prolog Version 4.2 (November 2007)\n",
 "%\n",
 "/M {moveto} bind def\n",
 "/L {lineto} bind def\n",
@@ -429,6 +492,7 @@ static const char *prologue_prologue_ps[
 "/Z {closepath} bind def\n",
 "/C {setrgbcolor} bind def\n",
 "/f {rlineto fill} bind def\n",
+"/Gshow {show} def   % May be redefined later in the file to support UTF-8\n",
 "/vpt2 vpt 2 mul def\n",
 "/hpt2 hpt 2 mul def\n",
 "/Lshow {currentpoint stroke M 0 vshift R \n",
@@ -669,7 +733,7 @@ static const char *prologue_prologue_ps[
 "  ColR ColG ColB setrgbcolor} def\n",
 "/BoxColFill {gsave Rec PolyFill} def\n",
 "/PolyFill {gsave Density fill grestore grestore} def\n",
-"/h {rlineto rlineto rlineto gsave fill grestore} bind def\n",
+"/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def\n",
 "%\n",
 "% PostScript Level 1 Pattern Fill routine for rectangles\n",
 "% Usage: x y w h s a XX PatternFill\n",
@@ -789,3 +853,65 @@ static const char *prologue_prologue_ps[
 NULL
 };
 
+static const char *prologue_utf_8_ps[] = {
+"%\n",
+"% Base ISO8859-1 character encoding plus support macros for UTF-8 encoding\n",
+"% via the glyphshow operator\n",
+"%\n",
+"/reencodeISO {\n",
+"dup dup findfont dup length dict begin\n",
+"{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n",
+"currentdict /CharStrings known {\n",
+"\tCharStrings /Idieresis known {\n",
+"\t\t/Encoding ISOLatin1Encoding def } if\n",
+"} if\n",
+"currentdict end definefont\n",
+"} def\n",
+"/ISOLatin1Encoding [\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n",
+"/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n",
+"/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n",
+"/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n",
+"/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n",
+"/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n",
+"/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n",
+"/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve\n",
+"/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut\n",
+"/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar\n",
+"/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n",
+"/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n",
+"/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\n",
+"/guillemotright/onequarter/onehalf/threequarters/questiondown\n",
+"/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n",
+"/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n",
+"/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n",
+"/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute\n",
+"/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n",
+"/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n",
+"/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex\n",
+"/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n",
+"/yacute/thorn/ydieresis\n",
+"] def\n",
+"\n",
+"/Gshow { dup type /stringtype eq { show } { glyphshow } ifelse } def\n",
+"\n",
+"/Gsall { {Gshow} forall } def\n",
+"/Gwidth {\n",
+"\tdup currentpoint pop exch\n",
+"\tgsave 6 array currentmatrix nulldevice setmatrix Gsall currentpoint pop grestore sub\n",
+"\t} def\n",
+"/GLshow {currentpoint stroke M 0 vshift R \n",
+"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n",
+"/GRshow {currentpoint stroke M dup Gwidth vshift R\n",
+"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n",
+"/GCshow {currentpoint stroke M dup Gwidth 2 div vshift R \n",
+"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n",
+NULL
+};
+
--- term/PostScript/unicode_big.map
+++ term/PostScript/unicode_big.map	2009-05-09 13:53:00.000000000 +0200
@@ -0,0 +1,863 @@
+=00 U+0000
+=01 U+0001
+=02 U+0002
+=03 U+0003
+=04 U+0004
+=05 U+0005
+=06 U+0006
+=07 U+0007
+=08 U+0008
+=09 U+0009
+=0A U+000A
+=0B U+000B
+=0C U+000C
+=0D U+000D
+=0E U+000E
+=0F U+000F
+=10 U+0010
+=11 U+0011
+=12 U+0012
+=13 U+0013
+=14 U+0014
+=15 U+0015
+=16 U+0016
+=17 U+0017
+=18 U+0018
+=19 U+0019
+=1A U+001A
+=1B U+001B
+=1C U+001C
+=1D U+001D
+=1E U+001E
+=1F U+001F
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+=A0 U+00A0
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+=AD U+00AD
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+=B2 U+00B2
+=B3 U+00B3
+!B4 U+00B4 acute
+=B5 U+00B5
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+=B9 U+00B9
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+00D0 Eth
+!D1 U+00D1 Ntilde
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+00DE Thorn
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+00F0 eth
+!F1 U+00F1 ntilde
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+00FE thorn
+!FF U+00FF ydieresis
+!100 U+0100 Amacron
+!101 U+0101 amacron
+!102 U+0102 Abreve
+!103 U+0103 abreve
+!104 U+0104 Aogonek
+!105 U+0105 aogonek
+!106 U+0106 Cacute
+!107 U+0107 cacute
+!108 U+0108 Ccircumflex
+!109 U+0109 ccircumflex
+!10a U+010A Cdotaccent
+!10b U+010B cdotaccent
+!10c U+010C Ccaron
+!10d U+010D ccaron
+!10e U+010E Dcaron
+!10f U+010F dcaron
+!110 U+0110 Dcroat
+!111 U+0111 dcroat
+!112 U+0112 Emacron
+!113 U+0113 emacron
+!114 U+0114 Ebreve
+!115 U+0115 ebreve
+!116 U+0116 Edotaccent
+!117 U+0117 edotaccent
+!118 U+0118 Eogonek
+!119 U+0119 eogonek
+!11a U+011A Ecaron
+!11b U+011B ecaron
+!11c U+011C Gcircumflex
+!11d U+011D gcircumflex
+!11e U+011E Gbreve
+!11f U+011F gbreve
+!120 U+0120 Gdotaccent
+!121 U+0121 gdotaccent
+!122 U+0122 Gcommaaccent
+!123 U+0123 gcommaaccent
+!124 U+0124 Hcircumflex
+!125 U+0125 hcircumflex
+!126 U+0126 Hbar
+!127 U+0127 hbar
+!128 U+0128 Itilde
+!129 U+0129 itilde
+!12a U+012A Imacron
+!12b U+012B imacron
+!12c U+012C Ibreve
+!12d U+012D ibreve
+!12e U+012E Iogonek
+!12f U+012F iogonek
+!130 U+0130 Idotaccent
+!131 U+0131 dotlessi
+!132 U+0132 IJ
+!133 U+0133 ij
+!134 U+0134 Jcircumflex
+!135 U+0135 jcircumflex
+!136 U+0136 Kcommaaccent
+!137 U+0137 kcommaaccent
+!138 U+0138 kgreenlandic
+!139 U+0139 Lacute
+!13a U+013A lacute
+!13b U+013B Lcommaaccent
+!13c U+013C lcommaaccent
+!13d U+013D Lcaron
+!13e U+013E lcaron
+!13f U+013F Ldot
+!140 U+0140 ldot
+!141 U+0141 Lslash
+!142 U+0142 lslash
+!143 U+0143 Nacute
+!144 U+0144 nacute
+!145 U+0145 Ncommaaccent
+!146 U+0146 ncommaaccent
+!147 U+0147 Ncaron
+!148 U+0148 ncaron
+!149 U+0149 napostrophe
+!14a U+014A Eng
+!14b U+014B eng
+!14c U+014C Omacron
+!14d U+014D omacron
+!14e U+014E Obreve
+!14f U+014F obreve
+!150 U+0150 Ohungarumlaut
+!151 U+0151 ohungarumlaut
+!152 U+0152 OE
+!153 U+0153 oe
+!154 U+0154 Racute
+!155 U+0155 racute
+!156 U+0156 Rcommaaccent
+!157 U+0157 rcommaaccent
+!158 U+0158 Rcaron
+!159 U+0159 rcaron
+!15a U+015A Sacute
+!15b U+015B sacute
+!15c U+015C Scircumflex
+!15d U+015D scircumflex
+!15e U+015E Scedilla
+!15f U+015F scedilla
+!160 U+0160 Scaron
+!161 U+0161 scaron
+!162 U+0162 Tcommaaccent
+!163 U+0163 tcommaaccent
+!164 U+0164 Tcaron
+!165 U+0165 tcaron
+!166 U+0166 Tbar
+!167 U+0167 tbar
+!168 U+0168 Utilde
+!169 U+0169 utilde
+!16a U+016A Umacron
+!16b U+016B umacron
+!16c U+016C Ubreve
+!16d U+016D ubreve
+!16e U+016E Uring
+!16f U+016F uring
+!170 U+0170 Uhungarumlaut
+!171 U+0171 uhungarumlaut
+!172 U+0172 Uogonek
+!173 U+0173 uogonek
+!174 U+0174 Wcircumflex
+!175 U+0175 wcircumflex
+!176 U+0176 Ycircumflex
+!177 U+0177 ycircumflex
+!178 U+0178 Ydieresis
+!179 U+0179 Zacute
+!17a U+017A zacute
+!17b U+017B Zdotaccent
+!17c U+017C zdotaccent
+!17d U+017D Zcaron
+!17e U+017E zcaron
+!17f U+017F longs
+!180 U+0192 florin
+!181 U+01A0 Ohorn
+!182 U+01A1 ohorn
+!183 U+01AF Uhorn
+!184 U+01B0 uhorn
+!185 U+01E6 Gcaron
+!186 U+01E7 gcaron
+!187 U+01FA Aringacute
+!188 U+01FB aringacute
+!189 U+01FC AEacute
+!18a U+01FD aeacute
+!18b U+01FE Oslashacute
+!18c U+01FF oslashacute
+!18d  U+0218 uni0218 
+!18e  U+0219 uni0219 
+!18f  U+02BC uni02BC 
+!190  U+02BD uni02BD 
+!191  U+02C6 uni02C6 
+!192  U+02C7 uni02C7 
+!193  U+02D8 uni02D8 
+!194  U+02D9 uni02D9 
+!195  U+02DA uni02DA 
+!196  U+02DB uni02DB 
+!197  U+02DC uni02DC 
+!198  U+02DD uni02DD 
+!199  U+0300 uni0300 
+!19a  U+0301 uni0301 
+!19b  U+0303 uni0303 
+!19c  U+0309 uni0309 
+!19d  U+0323 uni0323 
+!19e  U+0391 uni0391 
+!19f  U+0392 uni0392 
+!1a0  U+0393 uni0393 
+!1a1  U+0394 uni0394 
+!1a2  U+0395 uni0395 
+!1a3  U+0396 uni0396 
+!1a4  U+0397 uni0397 
+!1a5  U+0398 uni0398 
+!1a6  U+0399 uni0399 
+!1a7  U+039A uni039A 
+!1a8  U+039B uni039B 
+!1a9  U+039C uni039C 
+!1aa  U+039D uni039D 
+!1ab  U+039E uni039E 
+!1ac  U+039F uni039F 
+!1ad  U+03A0 uni03A0 
+!1ae  U+03A1 uni03A1 
+!1af  U+03A3 uni03A3 
+!1b0  U+03A4 uni03A4 
+!1b1  U+03A5 uni03A5 
+!1b2  U+03A6 uni03A6 
+!1b3  U+03A7 uni03A7 
+!1b4  U+03A8 uni03A8 
+!1b5  U+03A9 uni03A9 
+!1b6  U+03B1 uni03B1 
+!1b7  U+03B2 uni03B2 
+!1b8  U+03B3 uni03B3 
+!1b9  U+03B4 uni03B4 
+!1ba  U+03B5 uni03B5 
+!1bb  U+03B6 uni03B6 
+!1bc  U+03B7 uni03B7 
+!1bd  U+03B8 uni03B8 
+!1be  U+03B9 uni03B9 
+!1bf  U+03BA uni03BA 
+!1c0  U+03BB uni03BB 
+!1c1  U+03BC uni03BC 
+!1c2  U+03BD uni03BD 
+!1c3  U+03BE uni03BE 
+!1c4  U+03BF uni03BF 
+!1c5  U+03C0 uni03C0 
+!1c6  U+03C1 uni03C1 
+!1c7  U+03C2 uni03C2 
+!1c8  U+03C3 uni03C3 
+!1c9  U+03C4 uni03C4 
+!1ca  U+03C5 uni03C5 
+!1cb  U+03C6 uni03C6 
+!1cc  U+03C7 uni03C7 
+!1cd  U+03C8 uni03C8 
+!1ce  U+03C9 uni03C9 
+!1cf  U+03D0 uni03D0 
+!1d0  U+03D1 uni03D1 
+!1d1  U+03D5 uni03D5 
+!1d2  U+03D6 uni03D6 
+!1d3  U+0401 uni0401 
+!1d4  U+0402 uni0402 
+!1d5  U+0403 uni0403 
+!1d6  U+0404 uni0404 
+!1d7  U+0405 uni0405 
+!1d8  U+0406 uni0406 
+!1d9  U+0407 uni0407 
+!1da  U+0408 uni0408 
+!1db  U+0409 uni0409 
+!1dc  U+040A uni040A 
+!1dd  U+040B uni040B 
+!1de  U+040C uni040C 
+!1df  U+040E uni040E 
+!1e0  U+040F uni040F 
+!1e1  U+0410 uni0410 
+!1e2  U+0411 uni0411 
+!1e3  U+0412 uni0412 
+!1e4  U+0413 uni0413 
+!1e5  U+0414 uni0414 
+!1e6  U+0415 uni0415 
+!1e7  U+0416 uni0416 
+!1e8  U+0417 uni0417 
+!1e9  U+0418 uni0418 
+!1ea  U+0419 uni0419 
+!1eb  U+041A uni041A 
+!1ec  U+041B uni041B 
+!1ed  U+041C uni041C 
+!1ee  U+041D uni041D 
+!1ef  U+041E uni041E 
+!1f0  U+041F uni041F 
+!1f1  U+0420 uni0420 
+!1f2  U+0421 uni0421 
+!1f3  U+0422 uni0422 
+!1f4  U+0423 uni0423 
+!1f5  U+0424 uni0424 
+!1f6  U+0425 uni0425 
+!1f7  U+0426 uni0426 
+!1f8  U+0427 uni0427 
+!1f9  U+0428 uni0428 
+!1fa  U+0429 uni0429 
+!1fb  U+042A uni042A 
+!1fc  U+042B uni042B 
+!1fd  U+042C uni042C 
+!1fe  U+042D uni042D 
+!1ff  U+042E uni042E 
+!200  U+042F uni042F 
+!201  U+0430 uni0430 
+!202  U+0431 uni0431 
+!203  U+0432 uni0432 
+!204  U+0433 uni0433 
+!205  U+0434 uni0434 
+!206  U+0435 uni0435 
+!207  U+0436 uni0436 
+!208  U+0437 uni0437 
+!209  U+0438 uni0438 
+!20a  U+0439 uni0439 
+!20b  U+043A uni043A 
+!20c  U+043B uni043B 
+!20d  U+043C uni043C 
+!20e  U+043D uni043D 
+!20f  U+043E uni043E 
+!210  U+043F uni043F 
+!211  U+0440 uni0440 
+!212  U+0441 uni0441 
+!213  U+0442 uni0442 
+!214  U+0443 uni0443 
+!215  U+0444 uni0444 
+!216  U+0445 uni0445 
+!217  U+0446 uni0446 
+!218  U+0447 uni0447 
+!219  U+0448 uni0448 
+!21a  U+0449 uni0449 
+!21b  U+044A uni044A 
+!21c  U+044B uni044B 
+!21d  U+044C uni044C 
+!21e  U+044D uni044D 
+!21f  U+044E uni044E 
+!220  U+044F uni044F 
+!221  U+0451 uni0451 
+!222  U+0452 uni0452 
+!223  U+0453 uni0453 
+!224  U+0454 uni0454 
+!225  U+0455 uni0455 
+!226  U+0456 uni0456 
+!227  U+0457 uni0457 
+!228  U+0458 uni0458 
+!229  U+0459 uni0459 
+!22a  U+045A uni045A 
+!22b  U+045B uni045B 
+!22c  U+045C uni045C 
+!22d  U+045E uni045E 
+!22e  U+045F uni045F 
+!22f  U+0490 uni0490 
+!230  U+0491 uni0491
+!231  U+05D0 uni05D0 
+!232  U+05D1 uni05D1 
+!233  U+05D2 uni05D2 
+!234  U+05D3 uni05D3 
+!235  U+05D4 uni05D4 
+!236  U+05D5 uni05D5 
+!237  U+05D6 uni05D6 
+!238  U+05D7 uni05D7 
+!239  U+05D8 uni05D8 
+!23a  U+05D9 uni05D9 
+!23b  U+05DA uni05DA 
+!23c  U+05DB uni05DB 
+!23d  U+05DC uni05DC 
+!23e  U+05DD uni05DD 
+!23f  U+05DE uni05DE 
+!240  U+05DF uni05DF 
+!241  U+05E0 uni05E0 
+!242  U+05E1 uni05E1 
+!243  U+05E2 uni05E2 
+!244  U+05E3 uni05E3 
+!245  U+05E4 uni05E4 
+!246  U+05E5 uni05E5 
+!247  U+05E6 uni05E6 
+!248  U+05E7 uni05E7 
+!249  U+05E8 uni05E8 
+!24a  U+05E9 uni05E9 
+!24b  U+05EA uni05EA 
+!24c  U+1E80 uni1E80 	Extended latin
+!24d  U+1E81 uni1E81 	Extended latin
+!24e  U+1E82 uni1E82 	Extended latin
+!24f  U+1E83 uni1E83 	Extended latin
+!250  U+1E84 uni1E84 	Extended latin
+!251  U+1E85 uni1E85 	Extended latin
+!252  U+1EF2 uni1EF2 	Extended latin
+!253  U+1EF3 uni1EF3 	Extended latin
+!254  U+200C uni200C 
+!255  U+200D uni200D 
+!256  U+200E uni200E 
+!257  U+200F uni200F 
+!258  U+2012 uni2012 
+!259  U+2013 uni2013 
+!25a  U+2014 uni2014 
+!25b  U+2015 uni2015 
+!25c  U+2017 uni2017 
+!25d  U+2018 uni2018 
+!25e  U+2019 uni2019 
+!25f  U+201A uni201A 
+!260  U+201B uni201B 
+!261  U+201C uni201C 
+!262  U+201D uni201D 
+!263  U+201E uni201E 
+!264  U+2020 uni2020 
+!265  U+2021 uni2021 
+!266  U+2022 uni2022 
+!267  U+2024 uni2024 
+!268  U+2025 uni2025 
+!269  U+2026 uni2026 
+!26a  U+202C uni202C 
+!26b  U+202D uni202D 
+!26c  U+202E uni202E 
+!26d  U+2032 uni2032 
+!26e  U+2033 uni2033
+!26f  U+2034 uni2034
+!270  U+2035 uni2035
+!271  U+2036 uni2036
+!272  U+2037 uni2037
+!273  U+2039 uni2039 
+!274  U+203A uni203A 
+!275  U+203C uni203C 
+!276  U+2044 uni2044 
+!277  U+20AC uni20AC
+!278  U+2107 uni2107
+!279  U+210B uni210B 
+!27a  U+210E uni210E
+!27b  U+210F uni210F
+!27c  U+2111 uni2111 
+!27d  U+2112 uni2112 
+!27e  U+2113 uni2113 
+!27f  U+2115 uni2115 
+!280  U+2116 uni2116 
+!281  U+2118 uni2118 
+!282  U+2119 uni2119 
+!283  U+211A uni211A 
+!284  U+211B uni211B 
+!285  U+211C uni211C 
+!286  U+211D uni211D 
+!287  U+2122 uni2122
+!288  U+2124 uni2124
+!289  U+2126 uni2126
+!28a  U+2127 uni2127
+!28b  U+2128 uni2128 
+!28c  U+2129 uni2129 
+!28d  U+212B uni212B 
+!28e  U+212C uni212C 
+!28f  U+212E uni212E 
+!290  U+212F uni212F 
+!291  U+2130 uni2130 
+!292  U+2131 uni2131 
+!293  U+2133 uni2133 
+!294  U+2134 uni2134 
+!295  U+2135 uni2135 
+!296  U+2136 uni2136
+!297  U+2137 uni2137
+!298  U+2138 uni2138
+!299  U+2190 uni2190 
+!29a  U+2191 uni2191 
+!29b  U+2192 uni2192 
+!29c  U+2193 uni2193 
+!29d  U+2194 uni2194 
+!29e  U+2195 uni2195 
+!2a1  U+21D0 uni21D0 
+!2a2  U+21D1 uni21D1 
+!2a3  U+21D2 uni21D2 
+!2a4  U+21D3 uni21D3 
+!2a5  U+21D4 uni21D4
+!2a6  U+2200 uni2200 
+!2a7  U+2202 uni2202 
+!2a8  U+2203 uni2203 
+!2a9  U+2204 uni2204 
+!2aa  U+2205 uni2205 
+!2ab  U+2206 uni2206 
+!2ac  U+2207 uni2207 
+!2ad  U+2208 uni2208 
+!2ae  U+2209 uni2209 
+!2af  U+220A uni220A 
+!2b0  U+220B uni220B 
+!2b1  U+220C uni220C 
+!2b2  U+220D uni220D 
+!2b3  U+220E uni220E 
+!2b4  U+220F uni220F 
+!2b5  U+2210 uni2210 
+!2b6  U+2211 uni2211 
+!2b7  U+2212 uni2212 
+!2b8  U+2213 uni2213 
+!2b9  U+2214 uni2214 
+!2ba  U+2215 uni2215 
+!2bb  U+2216 uni2216 
+!2bc  U+2217 uni2217 
+!2bd  U+2218 uni2218 
+!2be  U+2219 uni2219 
+!2bf  U+221A uni221A 
+!2c0  U+221B uni221B 
+!2c1  U+221C uni221C 
+!2c2  U+221D uni221D 
+!2c3  U+221E uni221E 
+!2c4  U+221F uni221F 
+!2c5  U+2220 uni2220 
+!2c6  U+2221 uni2221 
+!2c7  U+2222 uni2222 
+!2c8  U+2223 uni2223 
+!2c9  U+2224 uni2224 
+!2ca  U+2225 uni2225 
+!2cb  U+2226 uni2226 
+!2cc  U+2227 uni2227 
+!2cd  U+2228 uni2228 
+!2ce  U+2229 uni2229 
+!2cf  U+222A uni222A 
+!2d0  U+222B uni222B 
+!2d1  U+222C uni222C 
+!2d2  U+222D uni222D 
+!2d3  U+222E uni222E 
+!2d4  U+222F uni222F 
+!2d5  U+2230 uni2230 
+!2d6  U+2231 uni2231 
+!2d7  U+2232 uni2232 
+!2d8  U+2233 uni2233 
+!2d9  U+2234 uni2234 
+!2da  U+2235 uni2235 
+!2db  U+2236 uni2236 
+!2dc  U+2237 uni2237 
+!2dd  U+2238 uni2238 
+!2de  U+2239 uni2239 
+!2df  U+223A uni223A 
+!2e0  U+223B uni223B 
+!2e1  U+223C uni223C 
+!2e2  U+223D uni223D 
+!2e3  U+223E uni223E 
+!2e4  U+223F uni223F 
+!2e5  U+2240 uni2240 
+!2e6  U+2241 uni2241 
+!2e7  U+2242 uni2242 
+!2e8  U+2243 uni2243 
+!2e9  U+2244 uni2244 
+!2ea  U+2245 uni2245 
+!2eb  U+2246 uni2246 
+!2ec  U+2247 uni2247 
+!2ed  U+2248 uni2248 
+!2ee  U+2249 uni2249 
+!2ef  U+224A uni224A 
+!2f0  U+224B uni224B 
+!2f1  U+224C uni224C 
+!2f2  U+224D uni224D 
+!2f3  U+224E uni224E 
+!2f4  U+224F uni224F 
+!2f5  U+225F uni225F 
+!2f6  U+2260 uni2260 
+!2f7  U+2261 uni2261 
+!2f8  U+2262 uni2262 
+!2f9  U+2263 uni2263 
+!2fa  U+2264 uni2264 
+!2fb  U+2265 uni2265 
+!2fc  U+2266 uni2266 
+!2fd  U+2267 uni2267 
+!2fe  U+2268 uni2268 
+!2ff  U+2269 uni2269 
+!300  U+226A uni226A 
+!301  U+226B uni226B 
+!302  U+226C uni226C 
+!303  U+226D uni226D 
+!304  U+226E uni226E 
+!305  U+226F uni226F 
+!306  U+2270 uni2270 
+!307  U+2271 uni2271 
+!308  U+2272 uni2272 
+!309  U+2273 uni2273 
+!30a  U+2274 uni2274 
+!30b  U+2275 uni2275 
+!30c  U+2276 uni2276 
+!30d  U+2277 uni2277 
+!30e  U+2278 uni2278 
+!30f  U+2279 uni2279 
+!310  U+227A uni227A 
+!311  U+227B uni227B 
+!312  U+227C uni227C 
+!313  U+227D uni227D 
+!314  U+227E uni227E 
+!315  U+227F uni227F 
+!316  U+2280 uni2280 
+!317  U+2281 uni2281 
+!318  U+2282 uni2282 
+!319  U+2283 uni2283 
+!31a  U+2284 uni2284 
+!31b  U+2285 uni2285 
+!31c  U+2286 uni2286 
+!31d  U+2287 uni2287 
+!31e  U+2288 uni2288 
+!31f  U+2289 uni2289 
+!320  U+22C0 uni22C0 
+!321  U+22C1 uni22C1 
+!322  U+22C2 uni22C2 
+!323  U+22C3 uni22C3 
+!324  U+22C4 uni22C4 
+!325  U+22C5 uni22C5 
+!326  U+2302 uni2302 
+!327  U+2310 uni2310 
+!328  U+2320 uni2320 
+!329  U+2321 uni2321 
+!32a  U+2322 uni2322 
+!32b  U+2323 uni2323 
+!32c  U+2329 uni2329 
+!32d  U+232A uni232A
+!32e  U+239B uni239B
+!32f  U+239C uni239C
+!330  U+239D uni239D
+!331  U+239E uni239E
+!332  U+239F uni239F
+!333  U+23A0 uni23A0
+!334  U+23A1 uni23A1
+!335  U+23A2 uni2392
+!336  U+23A3 uni23A3
+!337  U+23A4 uni23A4
+!338  U+23A5 uni23A5
+!339  U+23A6 uni23A6
+!33a  U+23A7 uni23A7
+!33b  U+23A8 uni23A8
+!33c  U+23A9 uni23A9
+!33d  U+23AA uni23AA
+!33e  U+23AB uni23AB
+!33f  U+23AC uni23AC
+!340  U+23AD uni23AD
+!341  U+23AE uni23AE
+!342  U+23AF uni23AF
+!343  U+23B0 uni23B0
+!344  U+23B1 uni23B1
+!345  U+23B2 uni23B2
+!346  U+23B3 uni23B3
+!347  U+23B4 uni23B4
+!348  U+23B5 uni23B5
+!349  U+23B6 uni23B6
+!34a  U+23B7 uni23B7
+!34b  U+23B8 uni23B8
+!34c  U+23B9 uni23B9
+!34d  U+23BA uni23BA
+!34e  U+23BB uni23BB
+!34f  U+23BC uni23BC
+!350  U+23BD uni23BD
+!351  U+23BE uni23BE
+!352  U+23BF uni23BF
+!353  U+23DE uni23DE
+!354  U+23DF uni23DF
+!355  U+23E1 uni23E1
+!356  U+25A0 uni25A0 
+!357  U+25A1 uni25A1 
+!358  U+25AA uni25AA 
+!359  U+25AB uni25AB 
+!35b  U+25B2 uni25B2 
+!35c  U+25B3 uni25B3 
+!35d  U+25BC uni25BC 
+!35e  U+25BD uni25BD 
+!35a  U+25C6 uni25C6 
+!35f  U+25CA uni25CA 
+!360  U+25CB uni25CB 
+!361  U+25CF uni25CF 
+!364  U+25E6 uni25E6
+!362  U+25FB uni25FB 
+!363  U+25FC uni25FC 
+!365  U+2609 uni2609 
+!366  U+2639 uni2639 
+!367  U+263C uni263C 
+!368  U+263D uni263D 
+!369  U+263E uni263E 
+!36a  U+263F uni263F 
+!36b  U+2640 uni2640 
+!36c  U+2641 uni2641 
+!36d  U+2642 uni2642 
+!36e  U+2643 uni2643 
+!36f  U+2644 uni2644 
+!370  U+2645 uni2645
+!371  U+2646 uni2646
+!372  U+2647 uni2647
+!373  U+2648 uni2648
+!374  U+2649 uni2649
+!375  U+264A uni264A
+!376  U+264B uni264B
+!377  U+264C uni264C
+!378  U+264D uni264D
+!379  U+264E uni264E
+!37a  U+264F uni264F
+!37b  U+2650 uni2650
+!37c  U+2651 uni2651
+!37d  U+2652 uni2652
+!37e  U+2653 uni2653
+!37f  U+25C7 uni25C7
+!380  U+2297 uni2297
+!381  U+2299 uni2299
--- term/PostScript/unicode_maps.README
+++ term/PostScript/unicode_maps.README	2009-05-09 13:53:00.000000000 +0200
@@ -0,0 +1,75 @@
+		unicode maps README
+		===================
+
+Each unicode_XXX.map file contains a list of unicode code points that might
+plausibly be used from inside gnuplot.  These are only relevant to the
+PostScript terminal drivers, and only if you want to use UTF-8 encoding.
+
+If you have a TTF unicode font containing the relevant characters, you can
+use the unicode map file to instruct the external program ttf2pt1 to prepare
+an Adobe Type 1 font.
+
+For example:
+
+  ttf2pt1 -p ft -e -L unicode_big.map arialuni.ttf
+
+This will extract character glyphs for these particular code points
+from arialuni.ttf and create a new file arialuni.ps.  You can use this new
+*.pfa font file from gnuplot by saying
+
+  set encoding utf8
+  set term post fontfile 'arialuni.ps' font 'ArialUnicodeMS'
+
+Note that gnuplot can run ttf2pt1 for you on the fly if you
+first define the appropriate command in the environmental variable
+GNUPLOT_TTFTOPFA.   For example:
+
+  setenv GNUPLOT_TTFTOPFA "ttf2pt1 -e -p ft -L unimap.map %s -"
+
+In this case you could say
+
+  set encoding utf8
+  set term post fontfile 'arialuni.ttf' font 'ArialUnicodeMS'
+
+In either case, the converted glyphs will be embedded in your
+gnuplot output file.  There are several caveats:
+
+1) This can make the file quite large.
+
+2) If a glyph isn't in the starting *.ttf font to begin with, nothing
+   you do here will fix that.
+
+3) If gnuplot runs the conversion for you, it will be triggered each
+   time you plot.
+
+Several unicode map files are provided.  They differ in how many
+characters they request, and hence in the size of the resulting font file.
+
+  unicode_small.map  (462 characters)
+  ===================================
+
+- the Latin1 character set
+- the basic Greek alphabet
+- basic math and physical symbols
+- 133 less obscure math symbols from Unicode pages 34 and 35
+
+
+  unicode_big.map  (863 characters)
+  =================================
+
+- the Latin1 character set 
+- extended Latin character sets needed to support other European languages
+- the Cyrillic alphabet, with extensions for various slavic languages
+  (may not be complete - please report omissions)
+- the basic Greek and Hebrew alphabets
+- basic math symbols
+- 176 mathematical symbols, some obscure, from Unicode pages 34 and 35
+- physical and astronomical symbols
+
+The unicode_big map makes a total of about 860 glyphs available to use
+from gnuplot, but only if they exist in the original TTF font file.
+The maximum number that ttf2pt1 can process is 1024.
+This is only a tiny fraction of the total characters indexed by Unicode.
+But if you need more, probably you would do better to use a different
+gnuplot terminal that supports direct use of UTF-8 TTF fonts (pdf, png, svg).
+
--- term/PostScript/unicode_small.map
+++ term/PostScript/unicode_small.map	2009-05-09 13:53:00.000000000 +0200
@@ -0,0 +1,462 @@
+=00 U+0000
+=01 U+0001
+=02 U+0002
+=03 U+0003
+=04 U+0004
+=05 U+0005
+=06 U+0006
+=07 U+0007
+=08 U+0008
+=09 U+0009
+=0A U+000A
+=0B U+000B
+=0C U+000C
+=0D U+000D
+=0E U+000E
+=0F U+000F
+=10 U+0010
+=11 U+0011
+=12 U+0012
+=13 U+0013
+=14 U+0014
+=15 U+0015
+=16 U+0016
+=17 U+0017
+=18 U+0018
+=19 U+0019
+=1A U+001A
+=1B U+001B
+=1C U+001C
+=1D U+001D
+=1E U+001E
+=1F U+001F
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+=A0 U+00A0
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+=AD U+00AD
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+=B2 U+00B2
+=B3 U+00B3
+!B4 U+00B4 acute
+=B5 U+00B5
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+=B9 U+00B9
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+00D0 Eth
+!D1 U+00D1 Ntilde
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+00DE Thorn
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+00F0 eth
+!F1 U+00F1 ntilde
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+00FE thorn
+!FF U+00FF ydieresis
+!19e  U+0391 uni0391 
+!19f  U+0392 uni0392 
+!1a0  U+0393 uni0393 
+!1a1  U+0394 uni0394 
+!1a2  U+0395 uni0395 
+!1a3  U+0396 uni0396 
+!1a4  U+0397 uni0397 
+!1a5  U+0398 uni0398 
+!1a6  U+0399 uni0399 
+!1a7  U+039A uni039A 
+!1a8  U+039B uni039B 
+!1a9  U+039C uni039C 
+!1aa  U+039D uni039D 
+!1ab  U+039E uni039E 
+!1ac  U+039F uni039F 
+!1ad  U+03A0 uni03A0 
+!1ae  U+03A1 uni03A1 
+!1af  U+03A3 uni03A3 
+!1b0  U+03A4 uni03A4 
+!1b1  U+03A5 uni03A5 
+!1b2  U+03A6 uni03A6 
+!1b3  U+03A7 uni03A7 
+!1b4  U+03A8 uni03A8 
+!1b5  U+03A9 uni03A9 
+!1b6  U+03B1 uni03B1 
+!1b7  U+03B2 uni03B2 
+!1b8  U+03B3 uni03B3 
+!1b9  U+03B4 uni03B4 
+!1ba  U+03B5 uni03B5 
+!1bb  U+03B6 uni03B6 
+!1bc  U+03B7 uni03B7 
+!1bd  U+03B8 uni03B8 
+!1be  U+03B9 uni03B9 
+!1bf  U+03BA uni03BA 
+!1c0  U+03BB uni03BB 
+!1c1  U+03BC uni03BC 
+!1c2  U+03BD uni03BD 
+!1c3  U+03BE uni03BE 
+!1c4  U+03BF uni03BF 
+!1c5  U+03C0 uni03C0 
+!1c6  U+03C1 uni03C1 
+!1c7  U+03C2 uni03C2 
+!1c8  U+03C3 uni03C3 
+!1c9  U+03C4 uni03C4 
+!1ca  U+03C5 uni03C5 
+!1cb  U+03C6 uni03C6 
+!1cc  U+03C7 uni03C7 
+!1cd  U+03C8 uni03C8 
+!1ce  U+03C9 uni03C9 
+!1cf  U+03D0 uni03D0 
+!1d0  U+03D1 uni03D1 
+!1d1  U+03D5 uni03D5 
+!1d2  U+03D6 uni03D6 
+!25b  U+2016 uni2016 
+!26d  U+2032 uni2032 
+!26e  U+2033 uni2033
+!26f  U+2034 uni2034
+!270  U+2035 uni2035
+!271  U+2036 uni2036
+!272  U+2037 uni2037
+!273  U+2039 uni2039 
+!274  U+203A uni203A 
+!275  U+203C uni203C 
+!276  U+2044 uni2044 
+!277  U+20AC uni20AC
+!278  U+2107 uni2107
+!279  U+210B uni210B 
+!27a  U+210E uni210E
+!27b  U+210F uni210F
+!27e  U+2113 uni2113 
+!284  U+211B uni211B 
+!289  U+2126 uni2126
+!28a  U+2127 uni2127
+!28d  U+212B uni212B 
+!295  U+2135 uni2135 
+!296  U+2136 uni2136
+!297  U+2137 uni2137
+!298  U+2138 uni2138
+!299  U+2190 uni2190 
+!29a  U+2191 uni2191 
+!29b  U+2192 uni2192 
+!29c  U+2193 uni2193 
+!29d  U+2194 uni2194 
+!29e  U+2195 uni2195 
+!2a1  U+21D0 uni21D0 
+!2a2  U+21D1 uni21D1 
+!2a3  U+21D2 uni21D2 
+!2a4  U+21D3 uni21D3 
+!2a5  U+21D4 uni21D4
+!2a6  U+2200 uni2200 
+!2a7  U+2202 uni2202 
+!2a8  U+2203 uni2203 
+!2aa  U+2205 uni2205 
+!2ab  U+2206 uni2206 
+!2ac  U+2207 uni2207 
+!2ad  U+2208 uni2208 
+!2ae  U+2209 uni2209 
+!2af  U+220A uni220A 
+!2b0  U+220B uni220B 
+!2b1  U+220C uni220C 
+!2b2  U+220D uni220D 
+!2b4  U+220F uni220F 
+!2b6  U+2211 uni2211 
+!2b7  U+2212 uni2212 
+!2b8  U+2213 uni2213 
+!2ba  U+2215 uni2215 
+!2bb  U+2216 uni2216 
+!2bc  U+2217 uni2217 
+!2bd  U+2218 uni2218 
+!2be  U+2219 uni2219 
+!2bf  U+221A uni221A 
+!2c0  U+221B uni221B 
+!2c1  U+221C uni221C 
+!2c2  U+221D uni221D 
+!2c3  U+221E uni221E 
+!2c4  U+221F uni221F 
+!2c8  U+2223 uni2223 
+!2ca  U+2225 uni2225 
+!2cc  U+2227 uni2227 
+!2cd  U+2228 uni2228 
+!2ce  U+2229 uni2229 
+!2cf  U+222A uni222A 
+!2d0  U+222B uni222B 
+!2d1  U+222C uni222C 
+!2d2  U+222D uni222D 
+!2d3  U+222E uni222E 
+!2d9  U+2234 uni2234 
+!2da  U+2235 uni2235 
+!2db  U+2236 uni2236 
+!2dc  U+2237 uni2237 
+!2e1  U+223C uni223C 
+!2e2  U+223D uni223D 
+!2e3  U+223E uni223E 
+!2e4  U+223F uni223F 
+!2e6  U+2241 uni2241 
+!2e7  U+2242 uni2242 
+!2e8  U+2243 uni2243 
+!2e9  U+2244 uni2244 
+!2ea  U+2245 uni2245 
+!2eb  U+2246 uni2246 
+!2ec  U+2247 uni2247 
+!2ed  U+2248 uni2248 
+!2ee  U+2249 uni2249 
+!2f4  U+224F uni224F 
+!2f5  U+225F uni225F 
+!2f6  U+2260 uni2260 
+!2f7  U+2261 uni2261 
+!2fa  U+2264 uni2264 
+!2fb  U+2265 uni2265 
+!2fc  U+2266 uni2266 
+!2fd  U+2267 uni2267 
+!300  U+226A uni226A 
+!301  U+226B uni226B 
+!302  U+226C uni226C 
+!303  U+226D uni226D 
+!304  U+226E uni226E 
+!305  U+226F uni226F 
+!306  U+2270 uni2270 
+!307  U+2271 uni2271 
+!308  U+2272 uni2272 
+!309  U+2273 uni2273 
+!30a  U+2274 uni2274 
+!30b  U+2275 uni2275 
+!310  U+227A uni227A 
+!311  U+227B uni227B 
+!312  U+227C uni227C 
+!313  U+227D uni227D 
+!314  U+227E uni227E 
+!315  U+227F uni227F 
+!316  U+2280 uni2280 
+!317  U+2281 uni2281 
+!318  U+2282 uni2282 
+!319  U+2283 uni2283 
+!31a  U+2284 uni2284 
+!31b  U+2285 uni2285 
+!31c  U+2286 uni2286 
+!31d  U+2287 uni2287 
+!31e  U+2288 uni2288 
+!31f  U+2289 uni2289 
+!389  U+2297 uni2297
+!38b  U+2299 uni2299
+!320  U+22C0 uni22C0 
+!321  U+22C1 uni22C1 
+!322  U+22C2 uni22C2 
+!323  U+22C3 uni22C3 
+!327  U+2310 uni2310 
+!328  U+2320 uni2320 
+!329  U+2321 uni2321 
+!32a  U+2322 uni2322 
+!32b  U+2323 uni2323 
+!32c  U+2329 uni2329 
+!32d  U+232A uni232A
+!32e  U+239B uni239B
+!32f  U+239C uni239C
+!330  U+239D uni239D
+!331  U+239E uni239E
+!332  U+239F uni239F
+!333  U+23A0 uni23A0
+!334  U+23A1 uni23A1
+!335  U+23A2 uni2392
+!336  U+23A3 uni23A3
+!337  U+23A4 uni23A4
+!338  U+23A5 uni23A5
+!339  U+23A6 uni23A6
+!33a  U+23A7 uni23A7
+!33b  U+23A8 uni23A8
+!33c  U+23A9 uni23A9
+!33d  U+23AA uni23AA
+!33e  U+23AB uni23AB
+!33f  U+23AC uni23AC
+!340  U+23AD uni23AD
+!341  U+23AE uni23AE
+!342  U+23AF uni23AF
+!343  U+23B0 uni23B0
+!344  U+23B1 uni23B1
+!345  U+23B2 uni23B2
+!346  U+23B3 uni23B3
+!347  U+23B4 uni23B4
+!348  U+23B5 uni23B5
+!349  U+23B6 uni23B6
+!34a  U+23B7 uni23B7
+!34b  U+23B8 uni23B8
+!34c  U+23B9 uni23B9
+!356  U+25A0 uni25A0 
+!357  U+25A1 uni25A1 
+!358  U+25AA uni25AA 
+!359  U+25AB uni25AB 
+!35b  U+25B2 uni25B2 
+!35c  U+25B3 uni25B3 
+!35d  U+25BC uni25BC 
+!35e  U+25BD uni25BD 
+!35a  U+25C6 uni25C6 
+!35f  U+25CA uni25CA 
+!360  U+25CB uni25CB 
+!361  U+25CF uni25CF 
+!364  U+25E6 uni25E6
+!362  U+25FB uni25FB 
+!363  U+25FC uni25FC 
+!365  U+2609 uni2609 
--- term/PostScript/utf-8.ps
+++ term/PostScript/utf-8.ps	2009-05-09 13:53:00.000000000 +0200
@@ -0,0 +1,58 @@
+%
+% Base ISO8859-1 character encoding plus support macros for UTF-8 encoding
+% via the glyphshow operator
+%
+/reencodeISO {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+	CharStrings /Idieresis known {
+		/Encoding ISOLatin1Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
+/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] def
+
+/Gshow { dup type /stringtype eq { show } { glyphshow } ifelse } def
+
+/Gsall { {Gshow} forall } def
+/Gwidth {
+	dup currentpoint pop exch
+	gsave 6 array currentmatrix nulldevice setmatrix Gsall currentpoint pop grestore sub
+	} def
+/GLshow {currentpoint stroke M 0 vshift R 
+	Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def
+/GRshow {currentpoint stroke M dup Gwidth vshift R
+	Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def
+/GCshow {currentpoint stroke M dup Gwidth 2 div vshift R 
+	Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def
openSUSE Build Service is sponsored by