Re: final bits for CJK patch


Subject: Re: final bits for CJK patch
From: ha shao (hashao@china.com)
Date: Thu Nov 09 2000 - 20:18:46 CST


On Thu, Nov 09, 2000 at 09:32:23PM +0400, hvv@hippo.ru wrote:
>
> diff -ru abi-0.7.11-orig~/abi-0.7.11/src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp abi-0.7.11-orig-orig/abi-0.7.11/src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp
> --- abi-0.7.11-orig~/abi-0.7.11/src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp Thu Nov 9 19:38:49 2000
> +++ abi-0.7.11-orig-orig/abi-0.7.11/src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp Thu Nov 9 20:24:06 2000
> @@ -197,13 +197,11 @@
> /*FIXME: can it happen that wctomb will fail under CJK locales? */
> m_wctomb.wctomb_or_fallback(mbbuf,mblen,*pData++);
> for(int i=0;i<mblen;++i) {
> + /* unfortunately all english letters will be output as \'hh too. */
> unsigned char c = mbbuf[i];
> - if ( c > 0x007f)
> - m_pie->_rtf_nonascii_hex2(c);
> - else
> - *pBuf++ = c;
> -
> - };
> + FlushBuffer();
> + m_pie->_rtf_nonascii_hex2(c);
> + }
> } else if (!m_pie->m_atticFormat)
> {
> if (*pData > 0x00ff) // emit unicode character

Maybe this can be changed to(are we dealing with one wc a time?):

--- ie_exp_RTF_listenerWriteDoc.cpp.orig Fri Nov 10 10:04:19 2000
+++ ie_exp_RTF_listenerWriteDoc.cpp Fri Nov 10 10:14:17 2000
@@ -196,14 +196,21 @@
                         {
                                 /*FIXME: can it happen that wctomb will fail under CJK locales? */
                                 m_wctomb.wctomb_or_fallback(mbbuf,mblen,*pData++);
- for(int i=0;i<mblen;++i) {
- unsigned char c = mbbuf[i];
- if ( c > 0x007f)
+ if (mbbuf[0] > 0x007f)
+ {
+ FlushBuffer();
+ for(int i=0;i<mblen;++i) {
+ unsigned char c = mbbuf[i];
                                                 m_pie->_rtf_nonascii_hex2(c);
- else
- *pBuf++ = c;
+ }
+ }
+ else
+ {
+ for(int i=0;i<mblen;++i) {
+ *pBuf++ = mbbuf[i];
+ }
+ }
                                         
- };
                         } else if (!m_pie->m_atticFormat)
                         {
                                 if (*pData > 0x00ff) // emit unicode character



This archive was generated by hypermail 2b25 : Thu Nov 09 2000 - 20:18:50 CST