X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FEncoding.h;h=6a1f89c4982a19236b4183a473e3f858243e88bf;hb=4db3e641ed6765e005343010cb90ee8af26f8f99;hp=445c80be3b9c675375347362a34d1534e3978e70;hpb=ee3ce572a0b4fc2b71fcf7da0f1136174c2f4928;p=lyx.git diff --git a/src/Encoding.h b/src/Encoding.h index 445c80be3b..6a1f89c498 100644 --- a/src/Encoding.h +++ b/src/Encoding.h @@ -44,11 +44,13 @@ class Encoding { public: /// Which LaTeX package handles this encoding? enum Package { - none, - inputenc, - CJK, - japanese + none = 1, + inputenc = 2, + CJK = 4, + japanese = 8 }; + /// Represent any of the above packages + static int const any; /// Encoding() {} /// @@ -100,6 +102,12 @@ public: /// A list of all characters usable in this encoding std::vector symbolsList() const; private: + /** + * Do we have to output this character as LaTeX command in any case? + * This is true if the "force" flag is set. + * We need this if the inputencoding does not support a certain glyph. + */ + bool isForced(char_type c) const; /// std::string name_; /// @@ -118,6 +126,8 @@ private: /// Set of UCS4 characters that we can encode (for singlebyte /// encodings only) mutable 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. @@ -164,9 +174,12 @@ public: /// Get encoding from LyX name \p name Encoding const * fromLyXName(std::string const & name, bool allowUnsafe = false) const; - /// Get encoding from LaTeX name \p name - Encoding const * - fromLaTeXName(std::string const & name, bool allowUnsafe = false) const; + /// Get encoding from LaTeX name \p name and package \p package + Encoding const * fromLaTeXName(std::string const & name, + int const & package = Encoding::any, bool allowUnsafe = false) const; + /// Get encoding from iconv name \p name and package \p package + Encoding const * fromIconvName(std::string const & name, + int const & package = Encoding::any, bool allowUnsafe = false) const; /// const_iterator begin() const { return encodinglist.begin(); } @@ -207,12 +220,6 @@ public: * \p c is a known character matching the preamble entry. */ static bool isKnownScriptChar(char_type const c, std::string & preamble); - /** - * Do we have to output this character as LaTeX command in any case? - * This is true if the "force" flag is set. - * We need this if the inputencoding does not support a certain glyph. - */ - static bool isForced(char_type c); /** * 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