From 0b9fe06d23fb443100fdae81ae4e4f64de20276f Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Thu, 21 Feb 2019 18:12:10 +0100 Subject: 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(+) (limited to 'engines/glk') 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; + + 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() { -- cgit v1.2.3