+ /// Accessor for the unicode information table.
+ static CharInfo const & unicodeCharInfo(char_type c);
+ /// Is this a combining char?
+ static bool isCombiningChar(char_type c);
+ /// Return the TIPA shortcut
+ static std::string const TIPAShortcut(char_type c);
+ /**
+ * Is this a known char from some language?
+ * If \p preamble is empty and code point \p c is known to belong
+ * to a supported script, true is returned and \p preamble is set
+ * to the corresponding entry in the unicodesymbols file.
+ * If \p preamble is not empty, a check is made whether code point
+ * \p c is a known character matching the preamble entry.
+ */
+ static bool isKnownScriptChar(char_type const c, std::string & preamble);
+ /**
+ * Do we have to display in italics this character when in mathmode?
+ * This is true if the "mathalpha" flag is set. We use this for
+ * letters and accented characters that are output as math commands.
+ */
+ static bool isMathAlpha(char_type c);
+ /**
+ * Register \p c as a mathmode command.
+ */
+ static void addMathCmd(char_type c) { mathcmd.insert(c); }
+ /**
+ * Register \p c as a textmode command.
+ */
+ static void addTextCmd(char_type c) { textcmd.insert(c); }
+ /**
+ * Register \p c as a mathmode symbol.
+ */
+ static void addMathSym(char_type c) { mathsym.insert(c); }
+ /**
+ * Tell whether \p c is registered as a mathmode command.
+ */
+ static bool isMathCmd(char_type c) { return mathcmd.count(c); }
+ /**
+ * Tell whether \p c is registered as a textmode command.
+ */
+ static bool isTextCmd(char_type c) { return textcmd.count(c); }
+ /**
+ * Tell whether \p c is registered as a mathmode symbol.
+ */
+ static bool isMathSym(char_type c) { return mathsym.count(c); }
+ /**
+ * If \p c cannot be encoded in the given \p encoding, convert
+ * it to something that LaTeX can understand in mathmode.
+ * \p needsTermination indicates whether the command needs to be
+ * terminated by {} or a space.
+ * \return whether \p command is a mathmode command
+ */
+ static bool latexMathChar(char_type c, bool mathmode,
+ Encoding const * encoding, docstring & command,
+ bool & needsTermination);
+ /**
+ * Convert the LaTeX command in \p cmd to the corresponding unicode
+ * point and set \p combining to true if it is a combining symbol.
+ * \p needsTermination indicates whether the command needs to be
+ * terminated by {} or a space.
+ */
+ static char_type fromLaTeXCommand(docstring const & cmd, int cmdtype,
+ bool & combining, bool & needsTermination,
+ std::set<std::string> * req = 0);