Skip to content

Commit 800f92a

Browse files
committed
Merge pull request #31 from yairchu/master
Handle #PCDATA in font table correctly
2 parents 4ef3fa3 + 026bee7 commit 800f92a

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

pyth/plugins/rtf15/reader.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ def __init__(self, reader, parent=None, charsetTable=None):
368368
else:
369369
self.props = {}
370370
self.charset = self.reader.charset
371+
self.isPcData = False
371372

372373
self.specialMeaning = None
373374
self.skip = False
@@ -470,6 +471,13 @@ def handle_fonttbl(self):
470471
self.specialMeaning = 'FONT_TABLE'
471472
self.charsetTable = {}
472473

474+
def handle_falt(self):
475+
self.specialMeaning = 'FONT_ALT_NAME'
476+
self.isPcData = True
477+
478+
def handle_fname(self):
479+
self.specialMeaning = 'NON_TAGGED_NAME'
480+
self.isPcData = True
473481

474482
def _setFontCharset(self, charset=None):
475483
if charset is None:
@@ -485,6 +493,7 @@ def handle_f(self, fontNum):
485493
if 'FONT_TABLE' in (self.parent.specialMeaning, self.specialMeaning):
486494
self.fontNum = int(fontNum)
487495
self._setFontCharset()
496+
self.isPcData = True
488497
elif self.charsetTable is not None:
489498
try:
490499
self.charset = self.charsetTable[int(fontNum)]
@@ -518,7 +527,9 @@ def handle_ansi_escape(self, code):
518527
char = unichr(uni_code)
519528

520529
else:
521-
char = chr(code).decode(self.charset, self.reader.errors)
530+
char = chr(code)
531+
if not self.isPcData:
532+
char = char.decode(self.charset, self.reader.errors)
522533

523534
self.content.append(char)
524535

0 commit comments

Comments
 (0)