/* $Id$ */ /* * 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", "", 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) BOTH("\'", "\'", 769) BOTH("aa", "\'", 769) BOTH("ga", "`", 768) BOTH("`", "`", 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) BOTH("lq", "``", 8220) BOTH("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", 245) 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) BOTH("ua", "^", 8593) BOTH("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) BOTH("<=", "<=", 8804) BOTH(">=", ">=", 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) /* Ligatures. */ CHAR("ff", "ff", 64256) CHAR("fi", "fi", 64257) CHAR("fl", "fl", 64258) CHAR("Fi", "ffi", 64259) CHAR("Fl", "ffl", 64260) BOTH("AE", "AE", 198) BOTH("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) /* pod2man holdovers. */ STRING("--", "--", 8212) STRING("PI", "pi", 960) STRING("L\"", "``", 8220) STRING("R\"", "\'\'", 8221) STRING("C+", "C++", 0) STRING("C`", "`", 8216) STRING("C\'", "\'", 8217) STRING("Aq", "\'", 39) STRING("^", "^", 94) STRING(",", ",", 44) STRING("~", "~", 126) STRING("/", "/", 47) STRING(":", "\"", 776) STRING("8", "B", 946) STRING("o", "o", 176) STRING("D-", "D", 208) STRING("d-", "o", 240) STRING("Th", "b", 222) STRING("th", "b", 254) /* Old style. */ STRING("Am", "&", 38) STRING("Ba", "|", 124) STRING("Ge", ">=", 8805) STRING("Gt", ">", 62) STRING("If", "infinity", 0) STRING("Le", "<=", 8804) STRING("Lq", "``", 8220) STRING("Lt", "<", 60) STRING("Na", "NaN", 0) STRING("Ne", "!=", 8800) STRING("Pi", "pi", 960) STRING("Pm", "+-", 177) STRING("R", "(R)", 174) STRING("Rq", "\'\'", 8221) STRING("Tm", "tm", 8482) STRING("left-bracket", "[", 91) STRING("left-parenthesis", "(", 40) STRING("left-singlequote", "`", 8216) STRING("lp", "(", 40) STRING("q", "\"", 34) STRING("quote-left", "`", 8216) STRING("quote-right", "\'", 8217) STRING("right-bracket", "]", 93) STRING("right-parenthesis", ")", 41) STRING("right-singlequote", "\'", 8217) STRING("rp", ")", 41) /* 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