X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FEncoding.h;h=699153f1fd2424dcd982fad004a9a57f13d5b9fe;hb=848c89564fce9c4bfec79b915746dc6bc47abc3d;hp=6d10d3bf67c41d46f910c5c2459ed7ea94f9de00;hpb=f630be890494c849981e4fb52ea4740506e92bed;p=lyx.git diff --git a/src/Encoding.h b/src/Encoding.h index 6d10d3bf67..699153f1fd 100644 --- a/src/Encoding.h +++ b/src/Encoding.h @@ -28,11 +28,19 @@ class LaTeXFeatures; /// class Encoding { public: + /// Which LaTeX package handles this encoding? + enum Package { + none, + inputenc, + CJK + }; /// Encoding() {} /// Encoding(std::string const & n, std::string const & l, - std::string const & i); + std::string const & i, bool f, Package p); + /// + void init() const; /// std::string const & name() const { return Name_; } /// @@ -48,6 +56,8 @@ public: * character is returned. */ docstring const latexChar(char_type c) const; + /// Which LaTeX package handles this encoding? + Package package() const { return package_; } private: /// std::string Name_; @@ -55,15 +65,27 @@ private: std::string LatexName_; /// std::string iconvName_; + /// Is this a fixed width encoding? + bool fixedwidth_; /// typedef std::set CharSet; /// Set of UCS4 characters that we can encode (for singlebyte /// encodings only) - CharSet encodable_; + mutable CharSet encodable_; /// 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. - char_type start_encodable_; + mutable char_type start_encodable_; + /// Which LaTeX package handles this encoding? + Package package_; + /** + * If this is true the stored information about the encoding covers + * all encodable characters. We set this to false initially so that + * we only need to query iconv for the actually used encodings. + * This is needed especially for the multibyte encodings, if we + * complete all encoding info on startup it takes 2-3 minutes. + */ + mutable bool complete_; }; class Encodings { @@ -86,7 +108,7 @@ public: /// \param encfile encodings definition file /// \param symbolsfile unicode->LaTeX mapping file void read(support::FileName const & encfile, - support::FileName const & symbolsfile); + support::FileName const & symbolsfile); /// Get encoding from LyX name \p name Encoding const * getFromLyXName(std::string const & name) const; /// Get encoding from LaTeX name \p name