--- /dev/null	Tue Jul 15 13:48:04 2014
+++ new/usr/src/cmd/mandoc/chars.in	Tue Jul 15 13:48:04 2014
@@ -0,0 +1,397 @@
+/*	$Id: chars.in,v 1.42 2011/10/02 10:02:26 kristaps Exp $ */
+/*
+ * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * The ASCII translation tables.  
+ *
+ * The left-hand side corresponds to the input sequence (\x, \(xx, \*(xx
+ * and so on) whose length is listed second element.  The right-hand
+ * side is what's produced by the front-end, with the fourth element
+ * being its length.
+ *
+ * XXX - C-escape strings!
+ * XXX - update LINES_MAX if adding more!
+ */
+
+/* Non-breaking, non-collapsing space uses unit separator. */
+static const char ascii_nbrsp[2] = { ASCII_NBRSP, '\0' };
+
+CHAR_TBL_START
+
+/* Spacing. */
+CHAR("c",			"",		0)
+CHAR("0",			" ",		8194)
+CHAR(" ",			ascii_nbrsp,	160)
+CHAR("~",			ascii_nbrsp,	160)
+CHAR("%",			"",		0)
+CHAR("&",			"",		0)
+CHAR("^",			"",		0)
+CHAR("|",			"",		0)
+CHAR("}",			"",		0)
+
+/* Accents. */
+CHAR("a\"",			"\"",		779)
+CHAR("a-",			"-",		175)
+CHAR("a.",			".",		729)
+CHAR("a^",			"^",		770)
+CHAR("\'",			"\'",		769)
+CHAR("aa",			"\'",		769)
+CHAR("ga",			"`",		768)
+CHAR("`",			"`",		768)
+CHAR("ab",			"`",		774)
+CHAR("ac",			",",		807)
+CHAR("ad",			"\"",		776)
+CHAR("ah",			"v",		711)
+CHAR("ao",			"o",		730)
+CHAR("a~",			"~",		771)
+CHAR("ho",			",",		808)
+CHAR("ha",			"^",		94)
+CHAR("ti",			"~",		126)
+
+/* Quotes. */
+CHAR("Bq",			",,",		8222)
+CHAR("bq",			",",		8218)
+CHAR("lq",			"``",		8220)
+CHAR("rq",			"\'\'",		8221)
+CHAR("oq",			"`",		8216)
+CHAR("cq",			"\'",		8217)
+CHAR("aq",			"\'",		39)
+CHAR("dq",			"\"",		34)
+CHAR("Fo",			"<<",		171)
+CHAR("Fc",			">>",		187)
+CHAR("fo",			"<",		8249)
+CHAR("fc",			">",		8250)
+
+/* Brackets. */
+CHAR("lB",			"[",		91)
+CHAR("rB",			"]",		93)
+CHAR("lC",			"{",		123)
+CHAR("rC",			"}",		125)
+CHAR("la",			"<",		60)
+CHAR("ra",			">",		62)
+CHAR("bv",			"|",		9130)
+CHAR("braceex",			"|",		9130)
+CHAR("bracketlefttp",		"|",		9121)
+CHAR("bracketleftbp",		"|",		9123)
+CHAR("bracketleftex",		"|",		9122)
+CHAR("bracketrighttp",		"|",		9124)
+CHAR("bracketrightbp",		"|",		9126)
+CHAR("bracketrightex",		"|",		9125)
+CHAR("lt",			",-",		9127)
+CHAR("bracelefttp",		",-",		9127)
+CHAR("lk",			"{",		9128)
+CHAR("braceleftmid",		"{",		9128)
+CHAR("lb",			",-",		9129)
+CHAR("braceleftbp",		"`-",		9129)
+CHAR("braceleftex",		"|",		9130)
+CHAR("rt",			"-.",		9131)
+CHAR("bracerighttp",		"-.",		9131)
+CHAR("rk",			"}",		9132)
+CHAR("bracerightmid",		"}",		9132)
+CHAR("rb",			"-\'",		9133)
+CHAR("bracerightbp",		"-\'",		9133)
+CHAR("bracerightex",		"|",		9130)
+CHAR("parenlefttp",		"/",		9115)
+CHAR("parenleftbp",		"\\",		9117)
+CHAR("parenleftex",		"|",		9116)
+CHAR("parenrighttp",		"\\",		9118)
+CHAR("parenrightbp",		"/",		9120)
+CHAR("parenrightex",		"|",		9119)
+
+/* Greek characters. */
+CHAR("*A",			"A",		913)
+CHAR("*B",			"B",		914)
+CHAR("*G",			"|",		915)
+CHAR("*D",			"/\\",		916)
+CHAR("*E",			"E",		917)
+CHAR("*Z",			"Z",		918)
+CHAR("*Y",			"H",		919)
+CHAR("*H",			"O",		920)
+CHAR("*I",			"I",		921)
+CHAR("*K",			"K",		922)
+CHAR("*L",			"/\\",		923)
+CHAR("*M",			"M",		924)
+CHAR("*N",			"N",		925)
+CHAR("*C",			"H",		926)
+CHAR("*O",			"O",		927)
+CHAR("*P",			"TT",		928)
+CHAR("*R",			"P",		929)
+CHAR("*S",			">",		931)
+CHAR("*T",			"T",		932)
+CHAR("*U",			"Y",		933)
+CHAR("*F",			"O_",		934)
+CHAR("*X",			"X",		935)
+CHAR("*Q",			"Y",		936)
+CHAR("*W",			"O",		937)
+CHAR("*a",			"a",		945)
+CHAR("*b",			"B",		946)
+CHAR("*g",			"y",		947)
+CHAR("*d",			"d",		948)
+CHAR("*e",			"e",		949)
+CHAR("*z",			"C",		950)
+CHAR("*y",			"n",		951)
+CHAR("*h",			"0",		952)
+CHAR("*i",			"i",		953)
+CHAR("*k",			"k",		954)
+CHAR("*l",			"\\",		955)
+CHAR("*m",			"u",		956)
+CHAR("*n",			"v",		957)
+CHAR("*c",			"E",		958)
+CHAR("*o",			"o",		959)
+CHAR("*p",			"n",		960)
+CHAR("*r",			"p",		961)
+CHAR("*s",			"o",		963)
+CHAR("*t",			"t",		964)
+CHAR("*u",			"u",		965)
+CHAR("*f",			"o",		981)
+CHAR("*x",			"x",		967)
+CHAR("*q",			"u",		968)
+CHAR("*w",			"w",		969)
+CHAR("+h",			"0",		977)
+CHAR("+f",			"o",		966)
+CHAR("+p",			"w",		982)
+CHAR("+e",			"e",		1013)
+CHAR("ts",			"s",		962)
+
+/* Accented letters. */
+CHAR(",C",			"C",		199)
+CHAR(",c",			"c",		231)
+CHAR("/L",			"L",		321)
+CHAR("/O",			"O",		216)
+CHAR("/l",			"l",		322)
+CHAR("/o",			"o",		248)
+CHAR("oA",			"A",		197)
+CHAR("oa",			"a",		229)
+CHAR(":A",			"A",		196)
+CHAR(":E",			"E",		203)
+CHAR(":I",			"I",		207)
+CHAR(":O",			"O",		214)
+CHAR(":U",			"U",		220)
+CHAR(":a",			"a",		228)
+CHAR(":e",			"e",		235)
+CHAR(":i",			"i",		239)
+CHAR(":o",			"o",		246)
+CHAR(":u",			"u",		252)
+CHAR(":y",			"y",		255)
+CHAR("\'A",			"A",		193)
+CHAR("\'E",			"E",		201)
+CHAR("\'I",			"I",		205)
+CHAR("\'O",			"O",		211)
+CHAR("\'U",			"U",		218)
+CHAR("\'a",			"a",		225)
+CHAR("\'e",			"e",		233)
+CHAR("\'i",			"i",		237)
+CHAR("\'o",			"o",		243)
+CHAR("\'u",			"u",		250)
+CHAR("^A",			"A",		194)
+CHAR("^E",			"E",		202)
+CHAR("^I",			"I",		206)
+CHAR("^O",			"O",		212)
+CHAR("^U",			"U",		219)
+CHAR("^a",			"a",		226)
+CHAR("^e",			"e",		234)
+CHAR("^i",			"i",		238)
+CHAR("^o",			"o",		244)
+CHAR("^u",			"u",		251)
+CHAR("`A",			"A",		192)
+CHAR("`E",			"E",		200)
+CHAR("`I",			"I",		204)
+CHAR("`O",			"O",		210)
+CHAR("`U",			"U",		217)
+CHAR("`a",			"a",		224)
+CHAR("`e",			"e",		232)
+CHAR("`i",			"i",		236)
+CHAR("`o",			"o",		242)
+CHAR("`u",			"u",		249)
+CHAR("~A",			"A",		195)
+CHAR("~N",			"N",		209)
+CHAR("~O",			"O",		213)
+CHAR("~a",			"a",		227)
+CHAR("~n",			"n",		241)
+CHAR("~o",			"o",		245)
+
+/* Arrows and lines. */
+CHAR("<-",			"<-",		8592)
+CHAR("->",			"->",		8594)
+CHAR("<>",			"<>",		8596)
+CHAR("da",			"v",		8595)
+CHAR("ua",			"^",		8593)
+CHAR("va",			"^v",		8597)
+CHAR("lA",			"<=",		8656)
+CHAR("rA",			"=>",		8658)
+CHAR("hA",			"<=>",		8660)
+CHAR("dA",			"v",		8659)
+CHAR("uA",			"^",		8657)
+CHAR("vA",			"^=v",		8661)
+
+/* Logic. */
+CHAR("AN",			"^",		8743)
+CHAR("OR",			"v",		8744)
+CHAR("no",			"~",		172)
+CHAR("tno",			"~",		172)
+CHAR("te",			"3",		8707)
+CHAR("fa",			"V",		8704)
+CHAR("st",			"-)",		8715)
+CHAR("tf",			".:.",		8756)
+CHAR("3d",			".:.",		8756)
+CHAR("or",			"|",		124)
+
+/* Mathematicals. */
+CHAR("pl",			"+",		43)
+CHAR("mi",			"-",		8722)
+CHAR("-",			"-",		45)
+CHAR("-+",			"-+",		8723)
+CHAR("+-",			"+-",		177)
+CHAR("t+-",			"+-",		177)
+CHAR("pc",			".",		183)
+CHAR("md",			".",		8901)
+CHAR("mu",			"x",		215)
+CHAR("tmu",			"x",		215)
+CHAR("c*",			"x",		8855)
+CHAR("c+",			"+",		8853)
+CHAR("di",			"-:-",		247)
+CHAR("tdi",			"-:-",		247)
+CHAR("f/",			"/",		8260)
+CHAR("**",			"*",		8727)
+CHAR("<=",			"<=",		8804)
+CHAR(">=",			">=",		8805)
+CHAR("<<",			"<<",		8810)
+CHAR(">>",			">>",		8811)
+CHAR("eq",			"=",		61)
+CHAR("!=",			"!=",		8800)
+CHAR("==",			"==",		8801)
+CHAR("ne",			"!==",		8802)
+CHAR("=~",			"=~",		8773)
+CHAR("-~",			"-~",		8771)
+CHAR("ap",			"~",		8764)
+CHAR("~~",			"~~",		8776)
+CHAR("~=",			"~=",		8780)
+CHAR("pt",			"oc",		8733)
+CHAR("es",			"{}",		8709)
+CHAR("mo",			"E",		8712)
+CHAR("nm",			"!E",		8713)
+CHAR("sb",			"(=",		8834)
+CHAR("nb",			"(!=",		8836)
+CHAR("sp",			"=)",		8835)
+CHAR("nc",			"!=)",		8837)
+CHAR("ib",			"(=",		8838)
+CHAR("ip",			"=)",		8839)
+CHAR("ca",			"(^)",		8745)
+CHAR("cu",			"U",		8746)
+CHAR("/_",			"/_",		8736)
+CHAR("pp",			"_|_",		8869)
+CHAR("is",			"I",		8747)
+CHAR("integral",		"I",		8747)
+CHAR("sum",			"E",		8721)
+CHAR("product",			"TT",		8719)
+CHAR("coproduct",		"U",		8720)
+CHAR("gr",			"V",		8711)
+CHAR("sr",			"\\/",		8730)
+CHAR("sqrt",			"\\/",		8730)
+CHAR("lc",			"|~",		8968)
+CHAR("rc",			"~|",		8969)
+CHAR("lf",			"|_",		8970)
+CHAR("rf",			"_|",		8971)
+CHAR("if",			"oo",		8734)
+CHAR("Ah",			"N",		8501)
+CHAR("Im",			"I",		8465)
+CHAR("Re",			"R",		8476)
+CHAR("pd",			"a",		8706)
+CHAR("-h",			"/h",		8463)
+CHAR("12",			"1/2",		189)
+CHAR("14",			"1/4",		188)
+CHAR("34",			"3/4",		190)
+
+/* Ligatures. */
+CHAR("ff",			"ff",		64256)
+CHAR("fi",			"fi",		64257)
+CHAR("fl",			"fl",		64258)
+CHAR("Fi",			"ffi",		64259)
+CHAR("Fl",			"ffl",		64260)
+CHAR("AE",			"AE",		198)
+CHAR("ae",			"ae",		230)
+CHAR("OE",			"OE",		338)
+CHAR("oe",			"oe",		339)
+CHAR("ss",			"ss",		223)
+CHAR("IJ",			"IJ",		306)
+CHAR("ij",			"ij",		307)
+
+/* Special letters. */
+CHAR("-D",			"D",		208)
+CHAR("Sd",			"o",		240)
+CHAR("TP",			"b",		222)
+CHAR("Tp",			"b",		254)
+CHAR(".i",			"i",		305)
+CHAR(".j",			"j",		567)
+
+/* Currency. */
+CHAR("Do",			"$",		36)
+CHAR("ct",			"c",		162)
+CHAR("Eu",			"EUR",		8364)
+CHAR("eu",			"EUR",		8364)
+CHAR("Ye",			"Y",		165)
+CHAR("Po",			"L",		163)
+CHAR("Cs",			"x",		164)
+CHAR("Fn",			"f",		402)
+
+/* Lines. */
+CHAR("ba",			"|",		124)
+CHAR("br",			"|",		9474)
+CHAR("ul",			"_",		95)
+CHAR("rl",			"-",		8254)
+CHAR("bb",			"|",		166)
+CHAR("sl",			"/",		47)
+CHAR("rs",			"\\",		92)
+
+/* Text markers. */
+CHAR("ci",			"o",		9675)
+CHAR("bu",			"o",		8226)
+CHAR("dd",			"=",		8225)
+CHAR("dg",			"-",		8224)
+CHAR("lz",			"<>",		9674)
+CHAR("sq",			"[]",		9633)
+CHAR("ps",			"9|",		182)
+CHAR("sc",			"S",		167)
+CHAR("lh",			"<=",		9756)
+CHAR("rh",			"=>",		9758)
+CHAR("at",			"@",		64)
+CHAR("sh",			"#",		35)
+CHAR("CR",			"_|",		8629)
+CHAR("OK",			"\\/",		10003)
+
+/* Legal symbols. */
+CHAR("co",			"(C)",		169)
+CHAR("rg",			"(R)",		174)
+CHAR("tm",			"tm",		8482)
+
+/* Punctuation. */
+CHAR(".",			".",		46)
+CHAR("r!",			"i",		161)
+CHAR("r?",			"c",		191)
+CHAR("em",			"--",		8212)
+CHAR("en",			"-",		8211)
+CHAR("hy",			"-",		8208)
+CHAR("e",			"\\",		92)
+
+/* Units. */
+CHAR("de",			"o",		176)
+CHAR("%0",			"%o",		8240)
+CHAR("fm",			"\'",		8242)
+CHAR("sd",			"\"",		8243)
+CHAR("mc",			"mu",		181)
+
+CHAR_TBL_END
