aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjörn Andersson2019-02-21 18:12:10 +0100
committerPaul Gilbert2019-02-21 18:41:54 -0800
commit0b9fe06d23fb443100fdae81ae4e4f64de20276f (patch)
treee38dbc0509f9d3f62efd97a163c949edb0e457f4
parenta6f82fc2463649f02a0a742542d6cf844e9d86c8 (diff)
downloadscummvm-rg350-0b9fe06d23fb443100fdae81ae4e4f64de20276f.tar.gz
scummvm-rg350-0b9fe06d23fb443100fdae81ae4e4f64de20276f.tar.bz2
scummvm-rg350-0b9fe06d23fb443100fdae81ae4e4f64de20276f.zip
GLK: FROTZ: Disable typographic niceties for Beyond Zork font
The Beyond Zork graphics font doesn't support Unicode, so allowing it to convert things like straight quotes into curly ones can cause ScummVM to crash. Disable these conversions while the Beyond Zork graphics font is used to avoid that. This fixes bug #10865.
-rw-r--r--engines/glk/frotz/processor.cpp6
-rw-r--r--engines/glk/frotz/processor.h4
-rw-r--r--engines/glk/frotz/processor_screen.cpp15
3 files changed, 25 insertions, 0 deletions
diff --git a/engines/glk/frotz/processor.cpp b/engines/glk/frotz/processor.cpp
index 8e719e2bf5..fdfafaa3bd 100644
--- a/engines/glk/frotz/processor.cpp
+++ b/engines/glk/frotz/processor.cpp
@@ -22,6 +22,7 @@
#include "glk/frotz/processor.h"
#include "glk/frotz/frotz.h"
+#include "glk/conf.h"
namespace Glk {
namespace Frotz {
@@ -197,6 +198,11 @@ void Processor::initialize() {
op0_opcodes[9] = &Processor::z_catch;
op1_opcodes[15] = &Processor::z_call_n;
}
+
+ PropFontInfo &pi = g_conf->_propInfo;
+ _quotes = pi._quotes;
+ _dashes = pi._quotes;
+ _spaces = pi._spaces;
}
void Processor::load_operand(zbyte type) {
diff --git a/engines/glk/frotz/processor.h b/engines/glk/frotz/processor.h
index dddcc7609a..15b8c512e7 100644
--- a/engines/glk/frotz/processor.h
+++ b/engines/glk/frotz/processor.h
@@ -95,6 +95,10 @@ private:
bool istream_replay;
bool message;
Common::FixedStack<Redirect, MAX_NESTING> _redirect;
+
+ int _quotes;
+ int _dashes;
+ int _spaces;
protected:
/**
* \defgroup General support methods
diff --git a/engines/glk/frotz/processor_screen.cpp b/engines/glk/frotz/processor_screen.cpp
index 3f45b06c6b..0bcf98278f 100644
--- a/engines/glk/frotz/processor_screen.cpp
+++ b/engines/glk/frotz/processor_screen.cpp
@@ -22,6 +22,7 @@
#include "glk/frotz/processor.h"
#include "glk/frotz/frotz.h"
+#include "glk/conf.h"
#include "glk/events.h"
namespace Glk {
@@ -382,6 +383,20 @@ void Processor::z_set_font() {
store(0);
break;
}
+
+ PropFontInfo &pi = g_conf->_propInfo;
+ if (curr_font == GRAPHICS_FONT) {
+ _quotes = pi._quotes;
+ _dashes = pi._dashes;
+ _spaces = pi._spaces;
+ pi._quotes = 0;
+ pi._dashes = 0;
+ pi._spaces = 0;
+ } else {
+ pi._quotes = _quotes;
+ pi._dashes = _dashes;
+ pi._spaces = _spaces;
+ }
}
void Processor::z_set_cursor() {