From 0b9fe06d23fb443100fdae81ae4e4f64de20276f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Andersson?= Date: Thu, 21 Feb 2019 18:12:10 +0100 Subject: [PATCH] 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. --- engines/glk/frotz/processor.cpp | 6 ++++++ engines/glk/frotz/processor.h | 4 ++++ engines/glk/frotz/processor_screen.cpp | 15 +++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/engines/glk/frotz/processor.cpp b/engines/glk/frotz/processor.cpp index 8e719e2bf54..fdfafaa3bd5 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 dddcc7609a6..15b8c512e7e 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; + + 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 3f45b06c6b6..0bcf98278f8 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() {