Here is a patch for bug #569.
Basically, non ASCII chars were added using _rtf_nonascii_hex2() which sets
m_bLastWasKeyword to UT_TRUE.
But when m_bLastWasKeyword is TRUE, _rtf_chardata() adds a " " after which
is wrong.
Here is a simple fix for an annoying bug.
Apply the patch to the current CVS release.
I did not check with UNICODE since I don't really know how it works. But is
the problem is there, it can be fixed the same way.
Hub
Index: src/wp/impexp/xp/ie_exp_RTF.cpp
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/impexp/xp/ie_exp_RTF.cpp,v
retrieving revision 1.7
diff -c -r1.7 ie_exp_RTF.cpp
*** src/wp/impexp/xp/ie_exp_RTF.cpp 2000/01/27 00:22:45 1.7
--- src/wp/impexp/xp/ie_exp_RTF.cpp 2000/05/03 15:44:12
***************
*** 280,285 ****
--- 280,296 ----
m_bLastWasKeyword = UT_TRUE;
}
+ /* output a non-ascii char in the RTF stream. */
+ void IE_Exp_RTF::_rtf_nonascii_hex2 (UT_sint32 d)
+ {
+ write("\\'");
+ char buf[100];
+ sprintf(buf,"%02x",d);
+ write(buf);
+ m_bLastWasKeyword = UT_FALSE;
+ }
+
+
void IE_Exp_RTF::_rtf_keyword(const char * szKey, UT_sint32 d)
{
write("\\");
Index: src/wp/impexp/xp/ie_exp_RTF.h
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/impexp/xp/ie_exp_RTF.h,v
retrieving revision 1.5
diff -c -r1.5 ie_exp_RTF.h
*** src/wp/impexp/xp/ie_exp_RTF.h 2000/01/27 00:22:45 1.5
--- src/wp/impexp/xp/ie_exp_RTF.h 2000/05/03 15:44:12
***************
*** 59,64 ****
--- 59,65 ----
void _rtf_close_brace(void);
void _rtf_keyword(const char * szKey);
void _rtf_keyword(const char * szKey, UT_sint32 d);
+ void _rtf_nonascii_hex2(UT_sint32 d);
void _rtf_keyword_hex2(const char * szKey,
UT_sint32 d);
void _rtf_keyword_ifnotdefault(const char * szKey,
const char * szValue, UT_sint32 defaultValue);
void _rtf_keyword_ifnotdefault_twips(const char *
szKey, const char * szValue, UT_sint32 defaultValue);
Index: src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp,v
retrieving revision 1.15
diff -c -r1.15 ie_exp_RTF_listenerWriteDoc.cpp
*** src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp 2000/04/01 06:02:22 1.15
--- src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp 2000/05/03 15:44:12
***************
*** 217,223 ****
// unicode sequence. when i originally did this, i
chose
// hex, so i'm not going to change it now.
! m_pie->_rtf_keyword_hex2("'",*pData);
pData++;
}
else
--- 217,223 ----
// unicode sequence. when i originally did this, i
chose
// hex, so i'm not going to change it now.
! m_pie->_rtf_nonascii_hex2(*pData);
pData++;
}
else