CharInfoMathNoTermination = 32,
///
CharInfoForceSelected = 64,
+ ///
+ CharInfoDeprecated = 128
};
bool force() const { return flags_ & CharInfoForce ? true : false; }
/// Force the LaTeX command for some encodings?
bool forceselected() const { return flags_ & CharInfoForceSelected ? true : false; }
+ /// Disable LaTeX command => char_type conversion for this deprecated symbol?
+ bool deprecated() const { return flags_ & CharInfoDeprecated ? true : false; }
/// TIPA shortcut
std::string const tipashortcut() const { return tipashortcut_; }
/// \c textcommand needs no termination (such as {} or space).
};
-///
+/**
+ * An encoding as defined in lib/encodings.
+ * All const methods are thread-safe, so the caller does not need any locking.
+ * This property must be kept when changing the class.
+ */
class Encoding {
public:
/// Which LaTeX package handles this encoding?
/// Represent any of the above packages
static int const any;
///
- Encoding() : fixedwidth_(true), unsafe_(false), complete_(false) {}
+ Encoding() : fixedwidth_(true), unsafe_(false), forced_(0),
+ start_encodable_(0), package_(none), complete_(false) {}
///
Encoding(std::string const & n, std::string const & l,
std::string const & g, std::string const & i,
typedef std::set<char_type> CharSet;
/// Set of UCS4 characters that we can encode (for singlebyte
/// encodings only)
- mutable CharSet encodable_;
+ CharSet encodable_;
/// Set of UCS4 characters that we can't encode
CharSet const * forced_;
/// All code points below this are encodable. This helps us to avoid
/// lokup of ASCII characters in encodable_ and gives about 1 sec
/// speedup on export of the Userguide.
- mutable char_type start_encodable_;
+ char_type start_encodable_;
/// Which LaTeX package handles this encoding?
Package package_;
/**
* This is needed especially for the multibyte encodings, if we
* complete all encoding info on startup it takes 2-3 minutes.
*/
- mutable bool complete_;
+ bool complete_;
};
class Encodings {
* letters and accented characters that are output as math commands.
*/
static bool isMathAlpha(char_type c);
+ /**
+ * Do we have to wrap in \text this character when in mathmode?
+ * This is true if \p c is not ascii and the "mathalpha" flag is not
+ * set and a mathcommand is not defined in the unicodesymbols file.
+ */
+ static bool isUnicodeTextOnly(char_type c);
/**
* Register \p c as a mathmode command.
*/