--- 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 {} @@ -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: */ /* [ ] */ /* 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 N ... 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] \"\"", -" | 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