/* $Id: chars.in,v 1.26 2010/07/16 22:33:30 kristaps Exp $ */ /* * Copyright (c) 2009 Kristaps Dzonsons * * 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. STRING corresponds to predefined * strings (cf. mdoc_samples.7 and tmac/mdoc/doc-nroff). CHAR * corresponds to special characters (cf. groff_char.7). BOTH contains * sequences that are equivalent in both STRING and CHAR. * * Either way, 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", 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) 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) 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, 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) 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) 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) 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) 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) 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) 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) 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, 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) 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, 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) 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) 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) CHAR("rg", 2, "(R)", 3, 174) CHAR("tm", 2, "tm", 2, 8482) /* Punctuation. */ 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) 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