From: Jürgen Spitzmüller Date: Sat, 14 Jul 2007 13:00:24 +0000 (+0000) Subject: * src/support/docstream.cpp (iconv_codecvt_facet::do_max_length()): X-Git-Tag: 1.6.10~9134 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=402a13ba60bd49f8db8b4b806635e9d0883b5f58;p=features.git * src/support/docstream.cpp (iconv_codecvt_facet::do_max_length()): - consider that not only utf8, but also most cjk encodings, are multibyte encodings (fixes bug 4012) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19076 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/support/docstream.cpp b/src/support/docstream.cpp index 8f476376e6..6c5dd8bed0 100644 --- a/src/support/docstream.cpp +++ b/src/support/docstream.cpp @@ -206,13 +206,32 @@ protected: } virtual int do_max_length() const throw() { + // FIXME: this information should be transferred to lib/encodings // UTF8 uses at most 4 bytes to represent one UCS4 code point // (see RFC 3629). RFC 2279 specifies 6 bytes, but that // information is outdated, and RFC 2279 has been superseded by // RFC 3629. + // The CJK encodings use (different) multibyte representation as well. // All other encodings encode one UCS4 code point in one byte // (and can therefore only encode a subset of UCS4) - return encoding_ == "UTF-8" ? 4 : 1; + // Note that BIG5 and SJIS do not work with LaTeX (see lib/encodings). + // Furthermore, all encodings that use shifting (like SJIS) do not work with + // iconv_codecvt_facet. + if (encoding_ == "UTF-8" || + encoding_ == "GB" || + encoding_ == "EUC-TW") + return 4; + else if (encoding_ == "EUC-JP") + return 3; + else if (encoding_ == "BIG5" || + encoding_ == "EUC-KR" || + encoding_ == "EUC-CN" || + encoding_ == "SJIS" || + encoding_ == "GBK" || + encoding_ == "JIS" ) + return 2; + else + return 1; } private: /// Do the actual conversion. The interface is equivalent to that of