source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Change chars.in HTML encoding to be a Unicode codepoint (int),
@ 2010-07-16 22:33 kristaps
  0 siblings, 0 replies; only message in thread
From: kristaps @ 2010-07-16 22:33 UTC (permalink / raw)
  To: source

Log Message:
-----------
Change chars.in HTML encoding to be a Unicode codepoint (int), which is
later formatted in html.c.

Modified Files:
--------------
    mdocml:
        TODO
        chars.c
        chars.h
        chars.in
        html.c
        term.c

Revision Data
-------------
Index: term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.c,v
retrieving revision 1.160
retrieving revision 1.161
diff -Lterm.c -Lterm.c -u -p -r1.160 -r1.161
--- term.c
+++ term.c
@@ -365,7 +365,7 @@ spec(struct termp *p, const char *word, 
 	const char	*rhs;
 	size_t		 sz;
 
-	rhs = chars_a2ascii(p->symtab, word, len, &sz);
+	rhs = chars_spec2str(p->symtab, word, len, &sz);
 	if (rhs) 
 		encode(p, rhs, sz);
 }
@@ -377,7 +377,7 @@ res(struct termp *p, const char *word, s
 	const char	*rhs;
 	size_t		 sz;
 
-	rhs = chars_a2res(p->symtab, word, len, &sz);
+	rhs = chars_res2str(p->symtab, word, len, &sz);
 	if (rhs)
 		encode(p, rhs, sz);
 }
Index: chars.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/chars.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -Lchars.c -Lchars.c -u -p -r1.20 -r1.21
--- chars.c
+++ chars.c
@@ -32,11 +32,10 @@
 struct	ln {
 	struct ln	 *next;
 	const char	 *code;
-	const char	 *ascii;
-	const char	 *html;
 	size_t		  codesz;
+	const char	 *ascii;
 	size_t		  asciisz;
-	size_t		  htmlsz;
+	int		  unicode;
 	int		  type;
 #define	CHARS_CHAR	 (1 << 0)
 #define	CHARS_STRING	 (1 << 1)
@@ -45,12 +44,12 @@ struct	ln {
 
 #define	LINES_MAX	  370
 
-#define CHAR(w, x, y, z, a, b) \
-	{ NULL, (w), (y), (a), (x), (z), (b), CHARS_CHAR },
-#define STRING(w, x, y, z, a, b) \
-	{ NULL, (w), (y), (a), (x), (z), (b), CHARS_STRING },
-#define BOTH(w, x, y, z, a, b) \
-	{ NULL, (w), (y), (a), (x), (z), (b), CHARS_BOTH },
+#define CHAR(in, insz, ch, chsz, code) \
+	{ NULL, (in), (insz), (ch), (chsz), (code), CHARS_CHAR },
+#define STRING(in, insz, ch, chsz, code) \
+	{ NULL, (in), (insz), (ch), (chsz), (code), CHARS_STRING },
+#define BOTH(in, insz, ch, chsz, code) \
+	{ NULL, (in), (insz), (ch), (chsz), (code), CHARS_BOTH },
 
 #define	CHAR_TBL_START	  static struct ln lines[LINES_MAX] = {
 #define	CHAR_TBL_END	  };
@@ -64,8 +63,7 @@ struct	tbl {
 
 static	inline int	  match(const struct ln *,
 				const char *, size_t, int);
-static	const char	 *find(struct tbl *, const char *, 
-				size_t, size_t *, int);
+static	const struct ln	 *find(struct tbl *, const char *, size_t, int);
 
 
 void
@@ -126,24 +124,72 @@ chars_init(enum chars type)
 }
 
 
+/* 
+ * Special character to Unicode codepoint.
+ */
+int
+chars_spec2cp(void *arg, const char *p, size_t sz)
+{
+	const struct ln	*ln;
+
+	ln = find((struct tbl *)arg, p, sz, CHARS_CHAR);
+	if (NULL == ln)
+		return(-1);
+	return(ln->unicode);
+}
+
+
+/* 
+ * Reserved word to Unicode codepoint.
+ */
+int
+chars_res2cp(void *arg, const char *p, size_t sz)
+{
+	const struct ln	*ln;
+
+	ln = find((struct tbl *)arg, p, sz, CHARS_STRING);
+	if (NULL == ln)
+		return(-1);
+	return(ln->unicode);
+}
+
+
+/* 
+ * Special character to string array.
+ */
 const char *
-chars_a2ascii(void *arg, const char *p, size_t sz, size_t *rsz)
+chars_spec2str(void *arg, const char *p, size_t sz, size_t *rsz)
 {
+	const struct ln	*ln;
+
+	ln = find((struct tbl *)arg, p, sz, CHARS_CHAR);
+	if (NULL == ln)
+		return(NULL);
 
-	return(find((struct tbl *)arg, p, sz, rsz, CHARS_CHAR));
+	*rsz = ln->asciisz;
+	return(ln->ascii);
 }
 
 
+/* 
+ * Reserved word to string array.
+ */
 const char *
-chars_a2res(void *arg, const char *p, size_t sz, size_t *rsz)
+chars_res2str(void *arg, const char *p, size_t sz, size_t *rsz)
 {
+	const struct ln	*ln;
+
+	ln = find((struct tbl *)arg, p, sz, CHARS_STRING);
+	if (NULL == ln)
+		return(NULL);
 
-	return(find((struct tbl *)arg, p, sz, rsz, CHARS_STRING));
+	*rsz = ln->asciisz;
+	return(ln->ascii);
 }
 
 
-static const char *
-find(struct tbl *tab, const char *p, size_t sz, size_t *rsz, int type)
+static const struct ln *
+find(struct tbl *tab, const char *p, size_t sz, int type)
 {
 	struct ln	 *pp, *prev;
 	struct ln	**htab;
@@ -179,12 +225,7 @@ find(struct tbl *tab, const char *p, siz
 			htab[hash] = pp;
 		}
 
-		if (CHARS_HTML == tab->type) {
-			*rsz = pp->htmlsz;
-			return(pp->html);
-		}
-		*rsz = pp->asciisz;
-		return(pp->ascii);
+		return(pp);
 	}
 
 	return(NULL);
Index: html.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/html.c,v
retrieving revision 1.106
retrieving revision 1.107
diff -Lhtml.c -Lhtml.c -u -p -r1.106 -r1.107
--- html.c
+++ html.c
@@ -217,28 +217,36 @@ print_gen_head(struct html *h)
 static void
 print_spec(struct html *h, const char *p, size_t len)
 {
+	int		 cp;
 	const char	*rhs;
 	size_t		 sz;
 
-	rhs = chars_a2ascii(h->symtab, p, len, &sz);
-
-	if (NULL == rhs) 
+	if ((cp = chars_spec2cp(h->symtab, p, len)) > 0) {
+		printf("&#%d;", cp);
+		return;
+	} else if (-1 == cp)
 		return;
-	fwrite(rhs, 1, sz, stdout);
+
+	if (NULL != (rhs = chars_spec2str(h->symtab, p, len, &sz)))
+		fwrite(rhs, 1, sz, stdout);
 }
 
 
 static void
 print_res(struct html *h, const char *p, size_t len)
 {
+	int		 cp;
 	const char	*rhs;
 	size_t		 sz;
 
-	rhs = chars_a2res(h->symtab, p, len, &sz);
-
-	if (NULL == rhs)
+	if ((cp = chars_res2cp(h->symtab, p, len)) > 0) {
+		printf("&#%d;", cp);
+		return;
+	} else if (-1 == cp)
 		return;
-	fwrite(rhs, 1, sz, stdout);
+
+	if (NULL != (rhs = chars_res2str(h->symtab, p, len, &sz)))
+		fwrite(rhs, 1, sz, stdout);
 }
 
 
Index: chars.in
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/chars.in,v
retrieving revision 1.25
retrieving revision 1.26
diff -Lchars.in -Lchars.in -u -p -r1.25 -r1.26
--- chars.in
+++ chars.in
@@ -36,411 +36,411 @@ static const char ascii_nbrsp[2] = { ASC
 CHAR_TBL_START
 
 /* Spacing. */
-CHAR("c",			1,	"",		0,	"",		0)
-CHAR("0",			1,	" ",		1,	"&#8194;",	7)
-CHAR(" ",			1,	" ",		1,	"&#8194;",	7)
-CHAR("~",			1,	ascii_nbrsp,	1,	"&#160;",	6)
-CHAR("%",			1,	"",		0,	"",		0)
-CHAR("&",			1,	"",		0,	"",		0)
-CHAR("^",			1,	"",		0,	"",		0)
-CHAR("|",			1,	"",		0,	"",		0)
-CHAR("}",			1,	"",		0,	"",		0)
+CHAR("c",			1,	"",		0,	-1)
+CHAR("0",			1,	" ",		1,	8194)
+CHAR(" ",			1,	" ",		1,	8194)
+CHAR("~",			1,	ascii_nbrsp,	1,	160)
+CHAR("%",			1,	"",		0,	-1)
+CHAR("&",			1,	"",		0,	-1)
+CHAR("^",			1,	"",		0,	-1)
+CHAR("|",			1,	"",		0,	-1)
+CHAR("}",			1,	"",		0,	-1)
 
 /* Accents. */
-CHAR("a\"",			2,	"\"",		1,	"&#779;",	6)
-CHAR("a-",			2,	"-",		1,	"&#175;",	6)
-CHAR("a.",			2,	".",		1,	"&#729;",	6)
-CHAR("a^",			2,	"^",		1,	"&#770;",	6)
-BOTH("\'",			1,	"\'",		1,	"&#769;",	6)
-BOTH("aa",			2,	"\'",		1,	"&#769;",	6)
-BOTH("ga",			2,	"`",		1,	"&#768;",	6)
-BOTH("`",			1,	"`",		1,	"&#768;",	6)
-CHAR("ab",			2,	"`",		1,	"&#774;",	6)
-CHAR("ac",			2,	",",		1,	"&#807;",	6)
-CHAR("ad",			2,	"\"",		1,	"&#776;",	6)
-CHAR("ah",			2,	"v",		1,	"&#711;",	6)
-CHAR("ao",			2,	"o",		1,	"&#730;",	6)
-CHAR("a~",			2, 	"~",		1,	"&#771;",	6)
-CHAR("ho",			2,	",",		1,	"&#808;",	6)
-CHAR("ha",			2,	"^",		1,	"^",		1)
-CHAR("ti",			2,	"~",		1,	"~",		1)
+CHAR("a\"",			2,	"\"",		1,	779)
+CHAR("a-",			2,	"-",		1,	175)
+CHAR("a.",			2,	".",		1,	729)
+CHAR("a^",			2,	"^",		1,	770)
+BOTH("\'",			1,	"\'",		1,	769)
+BOTH("aa",			2,	"\'",		1,	769)
+BOTH("ga",			2,	"`",		1,	768)
+BOTH("`",			1,	"`",		1,	768)
+CHAR("ab",			2,	"`",		1,	774)
+CHAR("ac",			2,	",",		1,	807)
+CHAR("ad",			2,	"\"",		1,	776)
+CHAR("ah",			2,	"v",		1,	711)
+CHAR("ao",			2,	"o",		1,	730)
+CHAR("a~",			2, 	"~",		1,	771)
+CHAR("ho",			2,	",",		1,	808)
+CHAR("ha",			2,	"^",		1,	94)
+CHAR("ti",			2,	"~",		1,	126)
 
 /* Quotes. */
-CHAR("Bq",			2, 	",,",		2,	"&#8222;",	7)
-CHAR("bq",			2, 	",",		1,	"&#8218;",	7)
-BOTH("lq",			2, 	"``",		2,	"&#8220;",	7)
-BOTH("rq",			2, 	"\'\'",		2,	"&#8221;",	7)
-CHAR("oq",			2, 	"`",		1,	"&#8216;",	7)
-CHAR("cq",			2, 	"\'",		1,	"&#8217;",	7)
-CHAR("aq",			2, 	"\'",		1,	"\'",		1)
-CHAR("dq",			2, 	"\"",		1,	"\"",		1)
-CHAR("Fo",			2,	"<<",		2,	"&#171;",	6)
-CHAR("Fc",			2,	">>",		2,	"&#187;",	6)
-CHAR("fo",			2,	"<",		1,	"&#8249;",	7)
-CHAR("fc",			2,	">",		1,	"&#8250;",	7)
+CHAR("Bq",			2, 	",,",		2,	8222)
+CHAR("bq",			2, 	",",		1,	8218)
+BOTH("lq",			2, 	"``",		2,	8220)
+BOTH("rq",			2, 	"\'\'",		2,	8221)
+CHAR("oq",			2, 	"`",		1,	8216)
+CHAR("cq",			2, 	"\'",		1,	8217)
+CHAR("aq",			2, 	"\'",		1,	39)
+CHAR("dq",			2, 	"\"",		1,	34)
+CHAR("Fo",			2,	"<<",		2,	171)
+CHAR("Fc",			2,	">>",		2,	187)
+CHAR("fo",			2,	"<",		1,	8249)
+CHAR("fc",			2,	">",		1,	8250)
 
 /* Brackets. */
-CHAR("lB",			2, 	"[",		1,	"[",		1)
-CHAR("rB",			2, 	"]",		1,	"]",		1)
-CHAR("lC",			2, 	"{",		1,	"{",		1)
-CHAR("rC",			2, 	"}",		1,	"}",		1)
-CHAR("la",			2, 	"<",		1,	"&#10216;",	8)
-CHAR("ra",			2, 	">",		1,	"&#10217;",	8)
-CHAR("bv",			2, 	"|",		1,	"&#9130;",	7)
-CHAR("braceex",			7, 	"|",		1,	"&#9130;",	7)
-CHAR("bracketlefttp",		13, 	"|",		1,	"&#9121;",	7)
-CHAR("bracketleftbp",		13, 	"|",		1,	"&#9123;",	7)
-CHAR("bracketleftex",		13, 	"|",		1,	"&#9122;",	7)
-CHAR("bracketrighttp",		14, 	"|",		1,	"&#9124;",	7)
-CHAR("bracketrightbp",		14, 	"|",		1,	"&#9126;",	7)
-CHAR("bracketrightex",		14, 	"|",		1,	"&#9125;",	7)
-CHAR("lt",			2, 	",-",		2,	"&#9127;",	7)
-CHAR("bracelefttp",		11, 	",-",		2,	"&#9127;",	7)
-CHAR("lk",			2, 	"{",		1,	"&#9128;",	7)
-CHAR("braceleftmid",		12, 	"{",		1,	"&#9128;",	7)
-CHAR("lb",			2, 	",-",		2,	"&#9129;",	7)
-CHAR("braceleftbp",		11, 	"`-",		2,	"&#9129;",	7)
-CHAR("braceleftex",		11, 	"|",		1,	"&#9130;",	7)
-CHAR("rt",			2, 	"-.",		2,	"&#9131;",	7)
-CHAR("bracerighttp",		12, 	"-.",		2,	"&#9131;",	7)
-CHAR("rk",			2, 	"}",		1,	"&#9132;",	7)
-CHAR("bracerightmid",		13, 	"}",		1,	"&#9132;",	7)
-CHAR("rb",			2, 	"-\'",		2,	"&#9133;",	7)
-CHAR("bracerightbp",		12, 	"-\'",		2,	"&#9133;",	7)
-CHAR("bracerightex",		12, 	"|",		1,	"&#9130;",	7)
-CHAR("parenlefttp",		11, 	"/",		1,	"&#9115;",	7)
-CHAR("parenleftbp",		11, 	"\\",		1,	"&#9117;",	7)
-CHAR("parenleftex",		11, 	"|",		1,	"&#9116;",	7)
-CHAR("parenrighttp",		12, 	"\\",		1,	"&#9118;",	7)
-CHAR("parenrightbp",		12, 	"/",		1,	"&#9120;",	7)
-CHAR("parenrightex",		12, 	"|",		1,	"&#9119;",	7)
+CHAR("lB",			2, 	"[",		1,	91)
+CHAR("rB",			2, 	"]",		1,	93)
+CHAR("lC",			2, 	"{",		1,	123)
+CHAR("rC",			2, 	"}",		1,	125)
+CHAR("la",			2, 	"<",		1,	10216) /* FIXME: 60 */
+CHAR("ra",			2, 	">",		1,	10217) /* FIXME: 62 */
+CHAR("bv",			2, 	"|",		1,	9130)
+CHAR("braceex",			7, 	"|",		1,	9130)
+CHAR("bracketlefttp",		13, 	"|",		1,	9121)
+CHAR("bracketleftbp",		13, 	"|",		1,	9123)
+CHAR("bracketleftex",		13, 	"|",		1,	9122)
+CHAR("bracketrighttp",		14, 	"|",		1,	9124)
+CHAR("bracketrightbp",		14, 	"|",		1,	9126)
+CHAR("bracketrightex",		14, 	"|",		1,	9125)
+CHAR("lt",			2, 	",-",		2,	9127)
+CHAR("bracelefttp",		11, 	",-",		2,	9127)
+CHAR("lk",			2, 	"{",		1,	9128)
+CHAR("braceleftmid",		12, 	"{",		1,	9128)
+CHAR("lb",			2, 	",-",		2,	9129)
+CHAR("braceleftbp",		11, 	"`-",		2,	9129)
+CHAR("braceleftex",		11, 	"|",		1,	9130)
+CHAR("rt",			2, 	"-.",		2,	9131)
+CHAR("bracerighttp",		12, 	"-.",		2,	9131)
+CHAR("rk",			2, 	"}",		1,	9132)
+CHAR("bracerightmid",		13, 	"}",		1,	9132)
+CHAR("rb",			2, 	"-\'",		2,	9133)
+CHAR("bracerightbp",		12, 	"-\'",		2,	9133)
+CHAR("bracerightex",		12, 	"|",		1,	9130)
+CHAR("parenlefttp",		11, 	"/",		1,	9115)
+CHAR("parenleftbp",		11, 	"\\",		1,	9117)
+CHAR("parenleftex",		11, 	"|",		1,	9116)
+CHAR("parenrighttp",		12, 	"\\",		1,	9118)
+CHAR("parenrightbp",		12, 	"/",		1,	9120)
+CHAR("parenrightex",		12, 	"|",		1,	9119)
 
 /* Greek characters. */
-CHAR("*A",			2,	"A",		1,	"&#913;",	6)
-CHAR("*B",			2,	"B",		1,	"&#914;",	6)
-CHAR("*G",			2,	"|",		1,	"&#915;",	6)
-CHAR("*D",			2,	"/\\",		2,	"&#916;",	6)
-CHAR("*E",			2,	"E",		1,	"&#917;",	6)
-CHAR("*Z",			2,	"Z",		1,	"&#918;",	6)
-CHAR("*Y",			2,	"H",		1,	"&#919;",	6)
-CHAR("*H",			2,	"O",		1,	"&#920;",	6)
-CHAR("*I",			2,	"I",		1,	"&#921;",	6)
-CHAR("*K",			2,	"K",		1,	"&#922;",	6)
-CHAR("*L",			2,	"/\\",		2,	"&#923;",	6)
-CHAR("*M",			2,	"M",		1,	"&#924;",	6)
-CHAR("*N",			2,	"N",		1,	"&#925;",	6)
-CHAR("*C",			2,	"H",		1,	"&#926;",	6)
-CHAR("*O",			2,	"O",		1,	"&#927;",	6)
-CHAR("*P",			2,	"TT",		2,	"&#928;",	6)
-CHAR("*R",			2,	"P",		1,	"&#929;",	6)
-CHAR("*S",			2,	">",		1,	"&#931;",	6)
-CHAR("*T",			2,	"T",		1,	"&#932;",	6)
-CHAR("*U",			2,	"Y",		1,	"&#933;",	6)
-CHAR("*F",			2,	"O_",		1,	"&#934;",	6)
-CHAR("*X",			2,	"X",		1,	"&#935;",	6)
-CHAR("*Q",			2,	"Y",		1,	"&#936;",	6)
-CHAR("*W",			2,	"O",		1,	"&#937;",	6)
-CHAR("*a",			2,	"a",		1,	"&#945;",	6)
-CHAR("*b",			2,	"B",		1,	"&#946;",	6)
-CHAR("*g",			2,	"y",		1,	"&#947;",	6)
-CHAR("*d",			2,	"d",		1,	"&#948;",	6)
-CHAR("*e",			2,	"e",		1,	"&#949;",	6)
-CHAR("*z",			2,	"C",		1,	"&#950;",	6)
-CHAR("*y",			2,	"n",		1,	"&#951;",	6)
-CHAR("*h",			2,	"0",		1,	"&#952;",	6)
-CHAR("*i",			2,	"i",		1,	"&#953;",	6)
-CHAR("*k",			2,	"k",		1,	"&#954;",	6)
-CHAR("*l",			2,	"\\",		1,	"&#955;",	6)
-CHAR("*m",			2,	"u",		1,	"&#956;",	6)
-CHAR("*n",			2,	"v",		1,	"&#957;",	6)
-CHAR("*c",			2,	"E",		1,	"&#958;",	6)
-CHAR("*o",			2,	"o",		1,	"&#959;",	6)
-CHAR("*p",			2,	"n",		1,	"&#960;",	6)
-CHAR("*r",			2,	"p",		1,	"&#961;",	6)
-CHAR("*s",			2,	"o",		1,	"&#963;",	6)
-CHAR("*t",			2,	"t",		1,	"&#964;",	6)
-CHAR("*u",			2,	"u",		1,	"&#965;",	6)
-CHAR("*f",			2,	"o",		1,	"&#981;",	6)
-CHAR("*x",			2,	"x",		1,	"&#967;",	6)
-CHAR("*q",			2,	"u",		1,	"&#968;",	6)
-CHAR("*w",			2,	"w",		1,	"&#969;",	6)
-CHAR("+h",			2,	"0",		1,	"&#977;",	6)
-CHAR("+f",			2,	"o",		1,	"&#966;",	6)
-CHAR("+p",			2,	"w",		1,	"&#982;",	6)
-CHAR("+e",			2,	"e",		1,	"&#1013;",	7)
-CHAR("ts",			2,	"s",		1,	"&#962;",	6)
+CHAR("*A",			2,	"A",		1,	913)
+CHAR("*B",			2,	"B",		1,	914)
+CHAR("*G",			2,	"|",		1,	915)
+CHAR("*D",			2,	"/\\",		2,	916)
+CHAR("*E",			2,	"E",		1,	917)
+CHAR("*Z",			2,	"Z",		1,	918)
+CHAR("*Y",			2,	"H",		1,	919)
+CHAR("*H",			2,	"O",		1,	920)
+CHAR("*I",			2,	"I",		1,	921)
+CHAR("*K",			2,	"K",		1,	922)
+CHAR("*L",			2,	"/\\",		2,	923)
+CHAR("*M",			2,	"M",		1,	924)
+CHAR("*N",			2,	"N",		1,	925)
+CHAR("*C",			2,	"H",		1,	926)
+CHAR("*O",			2,	"O",		1,	927)
+CHAR("*P",			2,	"TT",		2,	928)
+CHAR("*R",			2,	"P",		1,	929)
+CHAR("*S",			2,	">",		1,	931)
+CHAR("*T",			2,	"T",		1,	932)
+CHAR("*U",			2,	"Y",		1,	933)
+CHAR("*F",			2,	"O_",		1,	934)
+CHAR("*X",			2,	"X",		1,	935)
+CHAR("*Q",			2,	"Y",		1,	936)
+CHAR("*W",			2,	"O",		1,	937)
+CHAR("*a",			2,	"a",		1,	945)
+CHAR("*b",			2,	"B",		1,	946)
+CHAR("*g",			2,	"y",		1,	947)
+CHAR("*d",			2,	"d",		1,	948)
+CHAR("*e",			2,	"e",		1,	949)
+CHAR("*z",			2,	"C",		1,	950)
+CHAR("*y",			2,	"n",		1,	951)
+CHAR("*h",			2,	"0",		1,	952)
+CHAR("*i",			2,	"i",		1,	953)
+CHAR("*k",			2,	"k",		1,	954)
+CHAR("*l",			2,	"\\",		1,	955)
+CHAR("*m",			2,	"u",		1,	956)
+CHAR("*n",			2,	"v",		1,	957)
+CHAR("*c",			2,	"E",		1,	958)
+CHAR("*o",			2,	"o",		1,	959)
+CHAR("*p",			2,	"n",		1,	960)
+CHAR("*r",			2,	"p",		1,	961)
+CHAR("*s",			2,	"o",		1,	963)
+CHAR("*t",			2,	"t",		1,	964)
+CHAR("*u",			2,	"u",		1,	965)
+CHAR("*f",			2,	"o",		1,	981)
+CHAR("*x",			2,	"x",		1,	967)
+CHAR("*q",			2,	"u",		1,	968)
+CHAR("*w",			2,	"w",		1,	969)
+CHAR("+h",			2,	"0",		1,	977)
+CHAR("+f",			2,	"o",		1,	966)
+CHAR("+p",			2,	"w",		1,	982)
+CHAR("+e",			2,	"e",		1,	1013)
+CHAR("ts",			2,	"s",		1,	962)
 
 /* Accented letters. */
-CHAR(",C",			2,	"C",		1,	"&#199;",	6)
-CHAR(",c",			2,	"c",		1,	"&#231;",	6)
-CHAR("/L",			2,	"L",		1,	"&#321;",	6)
-CHAR("/O",			2,	"O",		1,	"&#216;",	6)
-CHAR("/l",			2,	"l",		1,	"&#322;",	6)
-CHAR("/o",			2,	"o",		1,	"&#248;",	6)
-CHAR("oA",			2,	"A",		1,	"&#197;",	6)
-CHAR("oa",			2,	"a",		1,	"&#229;",	6)
-CHAR(":A",			2,	"A",		1,	"&#196;",	6)
-CHAR(":E",			2,	"E",		1,	"&#203;",	6)
-CHAR(":I",			2,	"I",		1,	"&#207;",	6)
-CHAR(":O",			2,	"O",		1,	"&#214;",	6)
-CHAR(":U",			2,	"U",		1,	"&#220;",	6)
-CHAR(":a",			2,	"a",		1,	"&#228;",	6)
-CHAR(":e",			2,	"e",		1,	"&#235;",	6)
-CHAR(":i",			2,	"i",		1,	"&#239;",	6)
-CHAR(":o",			2,	"o",		1,	"&#245;",	6)
-CHAR(":u",			2,	"u",		1,	"&#252;",	6)
-CHAR(":y",			2,	"y",		1,	"&#255;",	6)
-CHAR("\'A",			2,	"A",		1,	"&#193;",	6)
-CHAR("\'E",			2,	"E",		1,	"&#201;",	6)
-CHAR("\'I",			2,	"I",		1,	"&#205;",	6)
-CHAR("\'O",			2,	"O",		1,	"&#211;",	6)
-CHAR("\'U",			2,	"U",		1,	"&#218;",	6)
-CHAR("\'a",			2,	"a",		1,	"&#225;",	6)
-CHAR("\'e",			2,	"e",		1,	"&#233;",	6)
-CHAR("\'i",			2,	"i",		1,	"&#237;",	6)
-CHAR("\'o",			2,	"o",		1,	"&#243;",	6)
-CHAR("\'u",			2,	"u",		1,	"&#250;",	6)
-CHAR("^A",			2,	"A",		1,	"&#194;",	6)
-CHAR("^E",			2,	"E",		1,	"&#202;",	6)
-CHAR("^I",			2,	"I",		1,	"&#206;",	6)
-CHAR("^O",			2,	"O",		1,	"&#212;",	6)
-CHAR("^U",			2,	"U",		1,	"&#219;",	6)
-CHAR("^a",			2,	"a",		1,	"&#226;",	6)
-CHAR("^e",			2,	"e",		1,	"&#234;",	6)
-CHAR("^i",			2,	"i",		1,	"&#238;",	6)
-CHAR("^o",			2,	"o",		1,	"&#244;",	6)
-CHAR("^u",			2,	"u",		1,	"&#251;",	6)
-CHAR("`A",			2,	"A",		1,	"&#192;",	6)
-CHAR("`E",			2,	"E",		1,	"&#200;",	6)
-CHAR("`I",			2,	"I",		1,	"&#204;",	6)
-CHAR("`O",			2,	"O",		1,	"&#210;",	6)
-CHAR("`U",			2,	"U",		1,	"&#217;",	6)
-CHAR("`a",			2,	"a",		1,	"&#224;",	6)
-CHAR("`e",			2,	"e",		1,	"&#232;",	6)
-CHAR("`i",			2,	"i",		1,	"&#236;",	6)
-CHAR("`o",			2,	"o",		1,	"&#242;",	6)
-CHAR("`u",			2,	"u",		1,	"&#249;",	6)
-CHAR("~A",			2,	"A",		1,	"&#195;",	6)
-CHAR("~N",			2,	"N",		1,	"&#209;",	6)
-CHAR("~O",			2,	"O",		1,	"&#213;",	6)
-CHAR("~a",			2,	"a",		1,	"&#227;",	6)
-CHAR("~n",			2,	"n",		1,	"&#241;",	6)
-CHAR("~o",			2,	"o",		1,	"&#245;",	6)
+CHAR(",C",			2,	"C",		1,	199)
+CHAR(",c",			2,	"c",		1,	231)
+CHAR("/L",			2,	"L",		1,	321)
+CHAR("/O",			2,	"O",		1,	216)
+CHAR("/l",			2,	"l",		1,	322)
+CHAR("/o",			2,	"o",		1,	248)
+CHAR("oA",			2,	"A",		1,	197)
+CHAR("oa",			2,	"a",		1,	229)
+CHAR(":A",			2,	"A",		1,	196)
+CHAR(":E",			2,	"E",		1,	203)
+CHAR(":I",			2,	"I",		1,	207)
+CHAR(":O",			2,	"O",		1,	214)
+CHAR(":U",			2,	"U",		1,	220)
+CHAR(":a",			2,	"a",		1,	228)
+CHAR(":e",			2,	"e",		1,	235)
+CHAR(":i",			2,	"i",		1,	239)
+CHAR(":o",			2,	"o",		1,	245)
+CHAR(":u",			2,	"u",		1,	252)
+CHAR(":y",			2,	"y",		1,	255)
+CHAR("\'A",			2,	"A",		1,	193)
+CHAR("\'E",			2,	"E",		1,	201)
+CHAR("\'I",			2,	"I",		1,	205)
+CHAR("\'O",			2,	"O",		1,	211)
+CHAR("\'U",			2,	"U",		1,	218)
+CHAR("\'a",			2,	"a",		1,	225)
+CHAR("\'e",			2,	"e",		1,	233)
+CHAR("\'i",			2,	"i",		1,	237)
+CHAR("\'o",			2,	"o",		1,	243)
+CHAR("\'u",			2,	"u",		1,	250)
+CHAR("^A",			2,	"A",		1,	194)
+CHAR("^E",			2,	"E",		1,	202)
+CHAR("^I",			2,	"I",		1,	206)
+CHAR("^O",			2,	"O",		1,	212)
+CHAR("^U",			2,	"U",		1,	219)
+CHAR("^a",			2,	"a",		1,	226)
+CHAR("^e",			2,	"e",		1,	234)
+CHAR("^i",			2,	"i",		1,	238)
+CHAR("^o",			2,	"o",		1,	244)
+CHAR("^u",			2,	"u",		1,	251)
+CHAR("`A",			2,	"A",		1,	192)
+CHAR("`E",			2,	"E",		1,	200)
+CHAR("`I",			2,	"I",		1,	204)
+CHAR("`O",			2,	"O",		1,	210)
+CHAR("`U",			2,	"U",		1,	217)
+CHAR("`a",			2,	"a",		1,	224)
+CHAR("`e",			2,	"e",		1,	232)
+CHAR("`i",			2,	"i",		1,	236)
+CHAR("`o",			2,	"o",		1,	242)
+CHAR("`u",			2,	"u",		1,	249)
+CHAR("~A",			2,	"A",		1,	195)
+CHAR("~N",			2,	"N",		1,	209)
+CHAR("~O",			2,	"O",		1,	213)
+CHAR("~a",			2,	"a",		1,	227)
+CHAR("~n",			2,	"n",		1,	241)
+CHAR("~o",			2,	"o",		1,	245)
 
 /* Arrows and lines. */
-CHAR("<-",			2, 	"<-",		2,	"&#8592;",	7)
-CHAR("->",			2, 	"->",		2,	"&#8594;",	7)
-CHAR("<>",			2, 	"<>",		2,	"&#8596;",	7)
-CHAR("da",			2, 	"v",		1,	"&#8595;",	7)
-BOTH("ua",			2,	"^",		1,	"&#8593;",	7)
-BOTH("va",			2,	"^v",		2,	"&#8597;",	7)
-CHAR("lA",			2, 	"<=",		2,	"&#8656;",	7)
-CHAR("rA",			2, 	"=>",		2,	"&#8658;",	7)
-CHAR("hA",			2, 	"<=>",		3,	"&#8660;",	7)
-CHAR("dA",			2, 	"v",		1,	"&#8659;",	7)
-CHAR("uA",			2, 	"^",		1,	"&#8657;",	7)
-CHAR("vA",			2, 	"^=v",		3,	"&#8661;",	7)
+CHAR("<-",			2, 	"<-",		2,	8592)
+CHAR("->",			2, 	"->",		2,	8594)
+CHAR("<>",			2, 	"<>",		2,	8596)
+CHAR("da",			2, 	"v",		1,	8595)
+BOTH("ua",			2,	"^",		1,	8593)
+BOTH("va",			2,	"^v",		2,	8597)
+CHAR("lA",			2, 	"<=",		2,	8656)
+CHAR("rA",			2, 	"=>",		2,	8658)
+CHAR("hA",			2, 	"<=>",		3,	8660)
+CHAR("dA",			2, 	"v",		1,	8659)
+CHAR("uA",			2, 	"^",		1,	8657)
+CHAR("vA",			2, 	"^=v",		3,	8661)
 
 /* Logic. */
-CHAR("AN",			2,	"^",		1,	"&#8743;",	7)
-CHAR("OR",			2,	"v",		1,	"&#8744;",	7)
-CHAR("no",			2,	"~",		1,	"&#172;",	6)
-CHAR("tno",			3,	"~",		1,	"&#172;",	6)
-CHAR("te",			2,	"3",		1,	"&#8707;",	7)
-CHAR("fa",			2,	"V",		1,	"&#8704;",	7)
-CHAR("st",			2,	"-)",		2,	"&#8715;",	7)
-CHAR("tf",			2,	".:.",		3,	"&#8756;",	7)
-CHAR("3d",			2,	".:.",		3,	"&#8756;",	7)
-CHAR("or",			2,	"|",		1,	"|",		1)
+CHAR("AN",			2,	"^",		1,	8743)
+CHAR("OR",			2,	"v",		1,	8744)
+CHAR("no",			2,	"~",		1,	172)
+CHAR("tno",			3,	"~",		1,	172)
+CHAR("te",			2,	"3",		1,	8707)
+CHAR("fa",			2,	"V",		1,	8704)
+CHAR("st",			2,	"-)",		2,	8715)
+CHAR("tf",			2,	".:.",		3,	8756)
+CHAR("3d",			2,	".:.",		3,	8756)
+CHAR("or",			2,	"|",		1,	124)
 
 /* Mathematicals. */
-CHAR("pl",			2,	"+",		1,	"&#43;",	5)
-CHAR("mi",			2,	"-",		1,	"&#8722;",	7)
-CHAR("-",			1,	"-",		1,	"-",		1)
-CHAR("-+",			2,	"-+",		2,	"&#8723;",	7)
-CHAR("+-",			2, 	"+-",		2,	"&#177;",	6)
-CHAR("t+-",			3, 	"+-",		2,	"&#177;",	6)
-CHAR("pc",			2, 	".",		1,	"&#183;",	6)
-CHAR("md",			2, 	".",		1,	"&#8901;",	7)
-CHAR("mu",			2,	"x",		1,	"&#215;",	6)
-CHAR("tmu",			3,	"x",		1,	"&#215;",	6)
-CHAR("c*",			2,	"x",		1,	"&#8855;",	7)
-CHAR("c+",			2,	"+",		1,	"&#8853;",	7)
-CHAR("di",			2,	"-:-",		3,	"&#247;",	6)
-CHAR("tdi",			3,	"-:-",		3,	"&#247;",	6)
-CHAR("f/",			2,	"/",		1,	"&#8260;",	7)
-CHAR("**",			2, 	"*",		1,	"&#8727;",	7)
-BOTH("<=",			2,	"<=",		2,	"&#8804;",	7)
-BOTH(">=",			2,	">=",		2,	"&#8805;",	7)
-CHAR("<<",			2, 	"<<",		2,	"&#8810;",	7)
-CHAR(">>",			2, 	">>",		2,	"&#8811;",	7)
-CHAR("eq",			2,	"=",		1,	"&#61;",	5)
-CHAR("!=",			2, 	"!=",		2,	"&#8800;",	7)
-CHAR("==",			2, 	"==",		2,	"&#8801;",	7)
-CHAR("ne",			2, 	"!==",		3,	"&#8802;",	7)
-CHAR("=~",			2,	"=~",		2,	"&#8773;",	7)
-CHAR("-~",			2,	"-~",		2,	"&#8771;",	7)
-CHAR("ap",			2,	"~",		1,	"&#8764;",	7)
-CHAR("~~",			2,	"~~",		2,	"&#8776;",	7)
-CHAR("~=",			2,	"~=",		2,	"&#8780;",	7)
-CHAR("pt",			2,	"oc",		2,	"&#8733;",	7)
-CHAR("es",			2,	"{}",		2,	"&#8709;",	7)
-CHAR("mo",			2,	"E",		1,	"&#8712;",	7)
-CHAR("nm",			2,	"!E",		2,	"&#8713;",	7)
-CHAR("sb",			2,	"(=",		2,	"&#8834;",	7)
-CHAR("nb",			2,	"(!=",		3,	"&#8836;",	7)
-CHAR("sp",			2,	"=)",		2,	"&#8835;",	7)
-CHAR("nc",			2,	"!=)",		3,	"&#8837;",	7)
-CHAR("ib",			2,	"(=",		2,	"&#8838;",	7)
-CHAR("ip",			2,	"=)",		2,	"&#8839;",	7)
-CHAR("ca",			2,	"(^)",		3,	"&#8745;",	7)
-CHAR("cu",			2,	"U",		1,	"&#8746;",	7)
-CHAR("/_",			2,	"/_",		2,	"&#8736;",	7)
-CHAR("pp",			2,	"_|_",		3,	"&#8869;",	7)
-CHAR("is",			2,	"I",		1,	"&#8747;",	7)
-CHAR("integral",		8,	"I",		1,	"&#8747;",	7)
-CHAR("sum",			3,	"E",		1,	"&#8721;",	7)
-CHAR("product",			7,	"TT",		2,	"&#8719;",	7)
-CHAR("coproduct",		9,	"U",		1,	"&#8720;",	7)
-CHAR("gr",			2,	"V",		1,	"&#8711;",	7)
-CHAR("sr",			2,	"\\/",		2,	"&#8730;",	7)
-CHAR("sqrt",			4,	"\\/",		2,	"&#8730;",	7)
-CHAR("lc",			2,	"|~",		2,	"&#8968;",	7)
-CHAR("rc",			2,	"~|",		2,	"&#8969;",	7)
-CHAR("lf",			2,	"|_",		2,	"&#8970;",	7)
-CHAR("rf",			2,	"_|",		2,	"&#8971;",	7)
-CHAR("if",			2, 	"oo",		2,	"&#8734;",	7)
-CHAR("Ah",			2,	"N",		1,	"&#8501;",	7)
-CHAR("Im",			2,	"I",		1,	"&#8465;",	7)
-CHAR("Re",			2,	"R",		1,	"&#8476;",	7)
-CHAR("pd",			2,	"a",		1,	"&#8706;",	7)
-CHAR("-h",			2,	"/h",		2,	"&#8463;",	7)
+CHAR("pl",			2,	"+",		1,	43)
+CHAR("mi",			2,	"-",		1,	8722)
+CHAR("-",			1,	"-",		1,	45)
+CHAR("-+",			2,	"-+",		2,	8723)
+CHAR("+-",			2, 	"+-",		2,	177)
+CHAR("t+-",			3, 	"+-",		2,	177)
+CHAR("pc",			2, 	".",		1,	183)
+CHAR("md",			2, 	".",		1,	8901)
+CHAR("mu",			2,	"x",		1,	215)
+CHAR("tmu",			3,	"x",		1,	215)
+CHAR("c*",			2,	"x",		1,	8855)
+CHAR("c+",			2,	"+",		1,	8853)
+CHAR("di",			2,	"-:-",		3,	247)
+CHAR("tdi",			3,	"-:-",		3,	247)
+CHAR("f/",			2,	"/",		1,	8260)
+CHAR("**",			2, 	"*",		1,	8727)
+BOTH("<=",			2,	"<=",		2,	8804)
+BOTH(">=",			2,	">=",		2,	8805)
+CHAR("<<",			2, 	"<<",		2,	8810)
+CHAR(">>",			2, 	">>",		2,	8811)
+CHAR("eq",			2,	"=",		1,	61)
+CHAR("!=",			2, 	"!=",		2,	8800)
+CHAR("==",			2, 	"==",		2,	8801)
+CHAR("ne",			2, 	"!==",		3,	8802)
+CHAR("=~",			2,	"=~",		2,	8773)
+CHAR("-~",			2,	"-~",		2,	8771)
+CHAR("ap",			2,	"~",		1,	8764)
+CHAR("~~",			2,	"~~",		2,	8776)
+CHAR("~=",			2,	"~=",		2,	8780)
+CHAR("pt",			2,	"oc",		2,	8733)
+CHAR("es",			2,	"{}",		2,	8709)
+CHAR("mo",			2,	"E",		1,	8712)
+CHAR("nm",			2,	"!E",		2,	8713)
+CHAR("sb",			2,	"(=",		2,	8834)
+CHAR("nb",			2,	"(!=",		3,	8836)
+CHAR("sp",			2,	"=)",		2,	8835)
+CHAR("nc",			2,	"!=)",		3,	8837)
+CHAR("ib",			2,	"(=",		2,	8838)
+CHAR("ip",			2,	"=)",		2,	8839)
+CHAR("ca",			2,	"(^)",		3,	8745)
+CHAR("cu",			2,	"U",		1,	8746)
+CHAR("/_",			2,	"/_",		2,	8736)
+CHAR("pp",			2,	"_|_",		3,	8869)
+CHAR("is",			2,	"I",		1,	8747)
+CHAR("integral",		8,	"I",		1,	8747)
+CHAR("sum",			3,	"E",		1,	8721)
+CHAR("product",			7,	"TT",		2,	8719)
+CHAR("coproduct",		9,	"U",		1,	8720)
+CHAR("gr",			2,	"V",		1,	8711)
+CHAR("sr",			2,	"\\/",		2,	8730)
+CHAR("sqrt",			4,	"\\/",		2,	8730)
+CHAR("lc",			2,	"|~",		2,	8968)
+CHAR("rc",			2,	"~|",		2,	8969)
+CHAR("lf",			2,	"|_",		2,	8970)
+CHAR("rf",			2,	"_|",		2,	8971)
+CHAR("if",			2, 	"oo",		2,	8734)
+CHAR("Ah",			2,	"N",		1,	8501)
+CHAR("Im",			2,	"I",		1,	8465)
+CHAR("Re",			2,	"R",		1,	8476)
+CHAR("pd",			2,	"a",		1,	8706)
+CHAR("-h",			2,	"/h",		2,	8463)
 
 /* Ligatures. */
-CHAR("ff",			2,	"ff",		2,	"&#64256;",	8)
-CHAR("fi",			2,	"fi",		2,	"&#64257;",	8)
-CHAR("fl",			2,	"fl",		2,	"&#64258;",	8)
-CHAR("Fi",			2,	"ffi",		3,	"&#64259;",	8)
-CHAR("Fl",			2,	"ffl",		3,	"&#64260;",	8)
-BOTH("AE",			2,	"AE",		2,	"&#198;",	6)
-BOTH("ae",			2,	"ae",		2,	"&#230;",	6)
-CHAR("OE",			2,	"OE",		2,	"&#338;",	6)
-CHAR("oe",			2,	"oe",		2,	"&#339;",	6)
-CHAR("ss",			2,	"ss",		2,	"&#223;",	6)
-CHAR("IJ",			2,	"IJ",		2,	"&#306;",	6)
-CHAR("ij",			2,	"ij",		2,	"&#307;",	6)
+CHAR("ff",			2,	"ff",		2,	64256)
+CHAR("fi",			2,	"fi",		2,	64257)
+CHAR("fl",			2,	"fl",		2,	64258)
+CHAR("Fi",			2,	"ffi",		3,	64259)
+CHAR("Fl",			2,	"ffl",		3,	64260)
+BOTH("AE",			2,	"AE",		2,	198)
+BOTH("ae",			2,	"ae",		2,	230)
+CHAR("OE",			2,	"OE",		2,	338)
+CHAR("oe",			2,	"oe",		2,	339)
+CHAR("ss",			2,	"ss",		2,	223)
+CHAR("IJ",			2,	"IJ",		2,	306)
+CHAR("ij",			2,	"ij",		2,	307)
 
 /* Special letters. */
-CHAR("-D",			2,	"D",		1,	"&#208;",	6)
-CHAR("Sd",			2,	"o",		1,	"&#240;",	6)
-CHAR("TP",			2,	"b",		1,	"&#222;",	6)
-CHAR("Tp",			2,	"b",		1,	"&#254;",	6)
-CHAR(".i",			2,	"i",		1,	"&#305;",	6)
-CHAR(".j",			2,	"j",		1,	"&#567;",	6)
+CHAR("-D",			2,	"D",		1,	208)
+CHAR("Sd",			2,	"o",		1,	240)
+CHAR("TP",			2,	"b",		1,	222)
+CHAR("Tp",			2,	"b",		1,	254)
+CHAR(".i",			2,	"i",		1,	305)
+CHAR(".j",			2,	"j",		1,	567)
 
 /* Currency. */
-CHAR("Do",			2,	"$",		1,	"$",		1)
-CHAR("ct",			2,	"c",		1,	"&#162;",	6)
-CHAR("Eu",			2,	"EUR",		3,	"&#8364;",	7)
-CHAR("eu",			2,	"EUR",		3,	"&#8364;",	7)
-CHAR("Ye",			2,	"Y",		1,	"&#165;",	6)
-CHAR("Po",			2,	"L",		1,	"&#163;",	6)
-CHAR("Cs",			2,	"x",		1,	"&#164;",	6)
-CHAR("Fn",			2,	"f",		1,	"&#402;",	6)
+CHAR("Do",			2,	"$",		1,	36)
+CHAR("ct",			2,	"c",		1,	162)
+CHAR("Eu",			2,	"EUR",		3,	8364)
+CHAR("eu",			2,	"EUR",		3,	8364)
+CHAR("Ye",			2,	"Y",		1,	165)
+CHAR("Po",			2,	"L",		1,	163)
+CHAR("Cs",			2,	"x",		1,	164)
+CHAR("Fn",			2,	"f",		1,	402)
 
 /* pod2man holdovers. */
-STRING("--",			2,	"--",		2,	"&#8212;",	7)
-STRING("PI",			2,	"pi",		2,	"&#960;",	6)
-STRING("L\"",			2,	"``",		2,	"&#8220;",	7)
-STRING("R\"",			2,	"\'\'",		2,	"&#8221;",	7)
-STRING("C+",			2,	"C++",		3,	"C++",		3)
-STRING("C`",			2,	"`",		1,	"&#8216;",	7)
-STRING("C\'",			2,	"\'",		1,	"&#8217;",	7)
-STRING("Aq",			2, 	"\'",		1,	"\'",		1)
-STRING("^",			1,	"^",		1,	"^",		1)
-STRING(",",			1,	",",		1,	",",		1)
-STRING("~",			1,	"~",		1,	"~",		1)
-STRING("/",			1,	"/",		1,	"/",		1)
-STRING(":",			1,	"\"",		1,	"&#776;",	6)
-STRING("8",			1,	"B",		1,	"&#946;",	6)
-STRING("o",			1,	"o",		1,	"&#176;",	6)
-STRING("D-",			2,	"D",		1,	"&#208;",	6)
-STRING("d-",			2,	"o",		1,	"&#240;",	6)
-STRING("Th",			2,	"b",		1,	"&#222;",	6)
-STRING("th",			2,	"b",		1,	"&#254;",	6)
+STRING("--",			2,	"--",		2,	8212)
+STRING("PI",			2,	"pi",		2,	960)
+STRING("L\"",			2,	"``",		2,	8220)
+STRING("R\"",			2,	"\'\'",		2,	8221)
+STRING("C+",			2,	"C++",		3,	0)
+STRING("C`",			2,	"`",		1,	8216)
+STRING("C\'",			2,	"\'",		1,	8217)
+STRING("Aq",			2, 	"\'",		1,	39)
+STRING("^",			1,	"^",		1,	94)
+STRING(",",			1,	",",		1,	44)
+STRING("~",			1,	"~",		1,	126)
+STRING("/",			1,	"/",		1,	47)
+STRING(":",			1,	"\"",		1,	776)
+STRING("8",			1,	"B",		1,	946)
+STRING("o",			1,	"o",		1,	176)
+STRING("D-",			2,	"D",		1,	208)
+STRING("d-",			2,	"o",		1,	240)
+STRING("Th",			2,	"b",		1,	222)
+STRING("th",			2,	"b",		1,	254)
 
 /* Old style. */
-STRING("Am",			2,	"&",		1,	"&amp;",	5)
-STRING("Ba",			2,	"|",		1,	"|",		1)
-STRING("Ge",			2,	">=",		2,	"&#8805;",	7)
-STRING("Gt",			2,	">",		1,	"&gt;",		4)
-STRING("If",			2,	"infinity",	8,	"infinity",	8)
-STRING("Le",			2,	"<=",		2,	"&#8804;",	7)
-STRING("Lq",			2,	"``",		2,	"&#8220;",	7)
-STRING("Lt",			2,	"<",		1,	"&lt;",		4)
-STRING("Na",			2,	"NaN",		3,	"NaN",		3)
-STRING("Ne",			2,	"!=",		2,	"&#8800;",	7)
-STRING("Pi",			2,	"pi",		2,	"&#960;",	6)
-STRING("Pm",			2,	"+-",		2,	"&#177;",	6)
-STRING("R",			1,	"(R)",		3,	"&#174;",	6)
-STRING("Rq",			2,	"\'\'",		2,	"&#8221;",	7)
-STRING("Tm",			2,	"tm",		2,	"&#8482;",	7)
-STRING("left-bracket",		12,	"[",		1,	"[",		1)
-STRING("left-parenthesis",	16,	"(",		1,	"(",		1)
-STRING("left-singlequote",	16,	"`",		1,	"&#8216;",	7)
-STRING("lp",			2,	"(",		1,	"(",		1)
-STRING("q",			1,	"\"",		1,	"&quot;",	6)
-STRING("quote-left",		10,	"`",		1,	"&#8216;",	7)
-STRING("quote-right",		11,	"\'",		1,	"&#8217;",	7)
-STRING("right-bracket",		13,	"]",		1,	"]",		1)
-STRING("right-parenthesis",	17,	")",		1,	")",		1)
-STRING("right-singlequote",	17,	"\'",		1,	"&#8217;",	7)
-STRING("rp",			2,	")",		1,	")",		1)
+STRING("Am",			2,	"&",		1,	38)
+STRING("Ba",			2,	"|",		1,	124)
+STRING("Ge",			2,	">=",		2,	8805)
+STRING("Gt",			2,	">",		1,	62)
+STRING("If",			2,	"infinity",	8,	0)
+STRING("Le",			2,	"<=",		2,	8804)
+STRING("Lq",			2,	"``",		2,	8220)
+STRING("Lt",			2,	"<",		1,	60)
+STRING("Na",			2,	"NaN",		3,	0)
+STRING("Ne",			2,	"!=",		2,	8800)
+STRING("Pi",			2,	"pi",		2,	960)
+STRING("Pm",			2,	"+-",		2,	177)
+STRING("R",			1,	"(R)",		3,	174)
+STRING("Rq",			2,	"\'\'",		2,	8221)
+STRING("Tm",			2,	"tm",		2,	8482)
+STRING("left-bracket",		12,	"[",		1,	91)
+STRING("left-parenthesis",	16,	"(",		1,	40)
+STRING("left-singlequote",	16,	"`",		1,	8216)
+STRING("lp",			2,	"(",		1,	40)
+STRING("q",			1,	"\"",		1,	34)
+STRING("quote-left",		10,	"`",		1,	8216)
+STRING("quote-right",		11,	"\'",		1,	8217)
+STRING("right-bracket",		13,	"]",		1,	93)
+STRING("right-parenthesis",	17,	")",		1,	41)
+STRING("right-singlequote",	17,	"\'",		1,	8217)
+STRING("rp",			2,	")",		1,	41)
 
 /* Lines. */
-CHAR("ba",			2, 	"|",		1,	"&#124;",	6)
-CHAR("br",			2, 	"|",		1,	"&#9474;",	7)
-CHAR("ul",			2, 	"_",		1,	"&#95;",	5)
-CHAR("rl",			2, 	"-",		1,	"&#8254;",	7)
-CHAR("bb",			2, 	"|",		1,	"&#166;",	6)
-CHAR("sl",			2, 	"/",		1,	"&#47;",	5)
-CHAR("rs",			2, 	"\\",		1,	"&#92;",	5)
+CHAR("ba",			2, 	"|",		1,	124)
+CHAR("br",			2, 	"|",		1,	9474)
+CHAR("ul",			2, 	"_",		1,	95)
+CHAR("rl",			2, 	"-",		1,	8254)
+CHAR("bb",			2, 	"|",		1,	166)
+CHAR("sl",			2, 	"/",		1,	47)
+CHAR("rs",			2, 	"\\",		1,	92)
 
 /* Text markers. */
-CHAR("ci",			2, 	"o",		1,	"&#9675;",	7)
-CHAR("bu",			2, 	"o",		1,	"&#8226;",	7)
-CHAR("dd",			2,	"=",		1,	"&#8225;",	7)
-CHAR("dg",			2,	"-",		1,	"&#8224;",	7)
-CHAR("lz",			2,	"<>",		2,	"&#9674;",	7)
-CHAR("sq",			2,	"[]",		2,	"&#9633;",	7)
-CHAR("ps",			2,	"9|",		2,	"&#182;",	6)
-CHAR("sc",			2,	"S",		1,	"&#167;",	6)
-CHAR("lh",			2,	"<=",		2,	"&#9756;",	7)
-CHAR("rh",			2,	"=>",		2,	"&#9758;",	7)
-CHAR("at",			2,	"@",		1,	"&#64;",	5)
-CHAR("sh",			2,	"#",		1,	"&#35;",	5)
-CHAR("CR",			2,	"_|",		2,	"&#8629;",	7)
-CHAR("OK",			2,	"\\/",		2,	"&#10003;",	8)
+CHAR("ci",			2, 	"o",		1,	9675)
+CHAR("bu",			2, 	"o",		1,	8226)
+CHAR("dd",			2,	"=",		1,	8225)
+CHAR("dg",			2,	"-",		1,	8224)
+CHAR("lz",			2,	"<>",		2,	9674)
+CHAR("sq",			2,	"[]",		2,	9633)
+CHAR("ps",			2,	"9|",		2,	182)
+CHAR("sc",			2,	"S",		1,	167)
+CHAR("lh",			2,	"<=",		2,	9756)
+CHAR("rh",			2,	"=>",		2,	9758)
+CHAR("at",			2,	"@",		1,	64)
+CHAR("sh",			2,	"#",		1,	35)
+CHAR("CR",			2,	"_|",		2,	8629)
+CHAR("OK",			2,	"\\/",		2,	10003)
 
 /* Legal symbols. */
-CHAR("co",			2, 	"(C)",		3,	"&#169;",	6)
-CHAR("rg",			2, 	"(R)",		3,	"&#174;",	6)
-CHAR("tm",			2, 	"tm",		2,	"&#8482;",	7)
+CHAR("co",			2, 	"(C)",		3,	169)
+CHAR("rg",			2, 	"(R)",		3,	174)
+CHAR("tm",			2, 	"tm",		2,	8482)
 
 /* Punctuation. */
-CHAR(".",			1,	".",		1,	".",		1)
-CHAR("r!",			2,	"i",		1,	"&#161;",	6)
-CHAR("r?",			2,	"c",		1,	"&#191;",	6)
-CHAR("em",			2, 	"--",		2,	"&#8212;",	7)
-CHAR("en",			2, 	"-",		1,	"&#8211;",	7)
-CHAR("hy",			2, 	"-",		1,	"&#8208;",	7)
-CHAR("e",			1,	"\\",		1,	"\\",		1)
+CHAR(".",			1,	".",		1,	46)
+CHAR("r!",			2,	"i",		1,	161)
+CHAR("r?",			2,	"c",		1,	191)
+CHAR("em",			2, 	"--",		2,	8212)
+CHAR("en",			2, 	"-",		1,	8211)
+CHAR("hy",			2, 	"-",		1,	8208)
+CHAR("e",			1,	"\\",		1,	92)
 
 /* Units. */
-CHAR("de",			2,	"o",		1,	"&#176;",	6)
-CHAR("%0",			2,	"%o",		2,	"&#8240;",	7)
-CHAR("fm",			2,	"\'",		1,	"&#8242;",	7)
-CHAR("sd",			2,	"\"",		1,	"&#8243;",	7)
-CHAR("mc",			2,	"mu",		2,	"&#181;",	6)
+CHAR("de",			2,	"o",		1,	176)
+CHAR("%0",			2,	"%o",		2,	8240)
+CHAR("fm",			2,	"\'",		1,	8242)
+CHAR("sd",			2,	"\"",		1,	8243)
+CHAR("mc",			2,	"mu",		2,	181)
 
 CHAR_TBL_END
Index: TODO
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/TODO,v
retrieving revision 1.26
retrieving revision 1.27
diff -LTODO -LTODO -u -p -r1.26 -r1.27
--- TODO
+++ TODO
@@ -1,4 +1,9 @@
 ************************************************************************
+* Official mandoc TODO.  May not be quite up to date.
+* $Id$
+************************************************************************
+
+************************************************************************
 * missing features
 ************************************************************************
 
@@ -100,4 +105,3 @@ Several areas can be cleaned up to make 
 ************************************************************************
 * structural issues
 ************************************************************************
-
Index: chars.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/chars.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lchars.h -Lchars.h -u -p -r1.4 -r1.5
--- chars.h
+++ chars.h
@@ -25,8 +25,10 @@ enum	chars {
 };
 
 void		 *chars_init(enum chars);
-const char	 *chars_a2ascii(void *, const char *, size_t, size_t *);
-const char	 *chars_a2res(void *, const char *, size_t, size_t *);
+const char	 *chars_spec2str(void *, const char *, size_t, size_t *);
+int		  chars_spec2cp(void *, const char *, size_t);
+const char	 *chars_res2str(void *, const char *, size_t, size_t *);
+int		  chars_res2cp(void *, const char *, size_t);
 void		  chars_free(void *);
 
 __END_DECLS
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-07-16 22:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-16 22:33 mdocml: Change chars.in HTML encoding to be a Unicode codepoint (int), kristaps

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).