Kaydet (Commit) 790df682 authored tarafından Michael Stahl's avatar Michael Stahl

related: fdo#77979: writerfilter RTF import: read encoded font name

The font name is encoded in the font's charset given by \fcharset.

(cherry picked from commit 04d5a280)

Conflicts:
	writerfilter/source/rtftok/rtfdocumentimpl.cxx

Change-Id: Id9520649a1eb3b55f4314e140abda7399f23d925
üst b9d6da2f
...@@ -984,10 +984,6 @@ int RTFDocumentImpl::resolveChars(char ch) ...@@ -984,10 +984,6 @@ int RTFDocumentImpl::resolveChars(char ch)
if (RTL_TEXTENCODING_MS_932 == m_aStates.top().nCurrentEncoding) if (RTL_TEXTENCODING_MS_932 == m_aStates.top().nCurrentEncoding)
{ {
// fdo#79384: Word will reject Shift-JIS following \loch
// but apparently OOo could read and (worse) write such documents
SAL_INFO_IF(m_aStates.top().eRunType != RTFParserState::DBCH,
"writerfilter.rtf", "invalid Shift-JIS without DBCH");
unsigned char uch = ch; unsigned char uch = ch;
if ((uch >= 0x80 && uch <= 0x9F) || uch >= 0xE0) if ((uch >= 0x80 && uch <= 0x9F) || uch >= 0xE0)
{ {
...@@ -995,6 +991,9 @@ int RTFDocumentImpl::resolveChars(char ch) ...@@ -995,6 +991,9 @@ int RTFDocumentImpl::resolveChars(char ch)
Strm().ReadChar(ch); Strm().ReadChar(ch);
if (m_aStates.top().nCharsToSkip == 0) if (m_aStates.top().nCharsToSkip == 0)
{ {
// fdo#79384: Word will reject Shift-JIS following \loch
// but apparently OOo could read and (worse) write such documents
SAL_INFO_IF(m_aStates.top().eRunType != RTFParserState::DBCH, "writerfilter.rtf", "invalid Shift-JIS without DBCH");
assert(bUnicodeChecked); assert(bUnicodeChecked);
aBuf.append(ch); aBuf.append(ch);
} }
...@@ -3557,6 +3556,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) ...@@ -3557,6 +3556,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
return 0; return 0;
m_nCurrentEncoding = rtl_getTextEncodingFromWindowsCodePage(aRTFEncodings[i].codepage); m_nCurrentEncoding = rtl_getTextEncodingFromWindowsCodePage(aRTFEncodings[i].codepage);
m_aStates.top().nCurrentEncoding = m_nCurrentEncoding;
} }
break; break;
case RTF_ANSICPG: case RTF_ANSICPG:
...@@ -3567,6 +3567,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) ...@@ -3567,6 +3567,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
break; break;
case RTF_CPG: case RTF_CPG:
m_nCurrentEncoding = rtl_getTextEncodingFromWindowsCodePage(nParam); m_nCurrentEncoding = rtl_getTextEncodingFromWindowsCodePage(nParam);
m_aStates.top().nCurrentEncoding = m_nCurrentEncoding;
break; break;
case RTF_CF: case RTF_CF:
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment