##// END OF EJS Templates
Specify character encoding in HTML HEAD...
Mark Voorhies -
Show More
@@ -549,9 +549,11 b' class ConsoleWidget(Configurable, QtGui.QWidget):'
549 549 # N.B. this is overly restrictive, but Qt's output is
550 550 # predictable...
551 551 img_re = re.compile(r'<img src="(?P<name>[\d]+)" />')
552 html = self.fix_html_encoding(
553 str(self._control.toHtml().toUtf8()))
552 554 f.write(img_re.sub(
553 555 lambda x: self.image_tag(x, path = path, format = "png"),
554 str(self._control.toHtml().toUtf8())))
556 html))
555 557 finally:
556 558 f.close()
557 559 return filename
@@ -578,6 +580,8 b' class ConsoleWidget(Configurable, QtGui.QWidget):'
578 580 assert(offset > -1)
579 581 html = ('<html xmlns="http://www.w3.org/1999/xhtml">\n'+
580 582 html[offset+6:])
583 # And now declare UTF-8 encoding
584 html = self.fix_html_encoding(html)
581 585 f.write(img_re.sub(
582 586 lambda x: self.image_tag(x, path = None, format = "svg"),
583 587 html))
@@ -586,6 +590,29 b' class ConsoleWidget(Configurable, QtGui.QWidget):'
586 590 return filename
587 591 return None
588 592
593 def fix_html_encoding(self, html):
594 """ Return html string, with a UTF-8 declaration added to <HEAD>.
595
596 Assumes that html is Qt generated and has already been UTF-8 encoded
597 and coerced to a python string. If the expected head element is
598 not found, the given object is returned unmodified.
599
600 This patching is needed for proper rendering of some characters
601 (e.g., indented commands) when viewing exported HTML on a local
602 system (i.e., without seeing an encoding declaration in an HTTP
603 header).
604
605 C.f. http://www.w3.org/International/O-charset for details.
606 """
607 offset = html.find("<head>")
608 if(offset > -1):
609 html = (html[:offset+6]+
610 '\n<meta http-equiv="Content-Type" '+
611 'content="text/html; charset=utf-8" />\n'+
612 html[offset+6:])
613
614 return html
615
589 616 def image_tag(self, match, path = None, format = "png"):
590 617 """ Return (X)HTML mark-up for the image-tag given by match.
591 618
General Comments 0
You need to be logged in to leave comments. Login now