ZeX - Z-code Interpreter with Proportional and Styled Text
                            Version 1.1

This is an experimental, enhanced Macintosh version of Zip. It
displays text in a proportional font in a resizable window, with text
reflowing when the window size is changed. The status area is
displayed in a fixed-width font in a separate window.

ZeX also supports a simple typesetting language reminiscent of TeX,
allowing specially-written games to control the font, size, style and
layout of the text. More details of this facility can be found below.

Version 1.1 includes no major new features, however some of the rough
edges have been smoothed off. ZeX will now recognise game files of
type 'IFz3', 'IFz4', 'IFz5', 'IFz6' and '????'.  There is an Apple
menu, and a File menu with Save, Restore and Restart commands. Windows
are positioned at startup according to the size of your screen. Icons
have been provided for the application and the files it deals with.

Things to note:

* If there is a lot of text in the buffer, reformatting may take a few
seconds after you resize the text window, so don't be alarmed if there
is a noticeable pause - ZeX hasn't crashed (well, it might have, but
not necessarily - give it a decent chance before you hit the reboot
button :-)

Typesetting Commands
--------------------

ZeX has been designed as a testbed for experimenting with aesthetic
typography in interactive fiction. The present version recognises a
simple language of typesetting commands embedded in the output stream.
Currently there is one very small example of the use of these
commands, GoldSkulX.inf, distributed with ZeX.  I hope to provide more
extensive examples in the near future.

To enable ZeX's typesetting features, you need to set bit 7 of byte 1
in the game header. In Inform you can do this with a command in
the Initialise routine such as:

  0->1 = 0->1 + 127;

Then you can include typesetting commands anywhere in the text that
you write out, for example,

   print_ret "The creature has {&em huge} teeth!";

would write the word "huge" in emphasised (italic) type.

The commands are vaguely reminiscent of TeX (hence the name ZeX)
except that they begin with & instead of \. [Note 1]

The complete list of commands is as follows:

       &<fontname>             Change to given font
       &<fontname>(<size>)     Change font and size
       &size(<n>)              Change text size
       &plain                  Plain text
       &bold                   Bold face text
       &italic                 Italic text
       &em                     Emphasis (toggle plain/italic)
       &tt                     Typewriter text (fixed-width)
       &tab(<n>)               Tab to n points from left margin
       &lmargin(<n>)           Set left margin to n points
       &rmargin(<n>)           Set right margin to n points
       &left                   Left justify text
       &centre                 Centre text
       &right                  Right justify text
       &flush                  Left & right justify text
       &parindent(<n>)         Set paragraph indentation to n x-widths
       &noindent               Suppress indentation of this paragraph
       &skip                   Leave a blank line
       &skip(n)                Leave n blank lines

Paragraphs are separated by newlines. Curly braces may be used to
limit the scope of a group of commands.

The &skip command leaves a blank line the height of the current
font (or at least it should - it misbehaved in the previous
version - let me know if it still doesn't work right).

Future plans
------------

I intend to enhance the typesetting language as time goes on in the
light of experience and comments from users. I have two main ideas so
far for future versions.

I would like to be able to embed pictures in the text.  Technically
this is fairly straightforward, but raises issues as to a portable
format for distributing the pictures. Suggestions as to whether GIF
or some other format would be the most appropriate are welcome.

I would also like to experiment with making parts of the text and
pictures mouse-sensitive, so that hypertext links and other such
user-interface innovations can be explored.

I would also be interested in comment concerning the two-window design
- do you like it, or do you think a single window split into two panes
would be preferable? A single-window design would probably necessitate
some restrictions on user-resizability because of the difficulty of
resizing the status window in mid-game. However, the two-window design
has problems of its own, in the area of what happens when the height
of the status area is changed by the game - the present behaviour is
workable, but I'm not sure I really like it. What do you think?

At some point I will attempt an X Windows version, unless someone else
volunteers to do so in the meantime. An MS Windows version would also
be useful, but I don't have the resources to do it myself, so I'll
have to rely on some keen Windows programmer getting enthusiastic :-)

Where to send comments
----------------------

Greg Ewing
[email protected]

and/or post to rec.arts.int-fiction

Footnotes
---------

[1] The reason for this is as follows: Originally the text formatting
commands were always enabled, and I chose & as a character least
likely to turn up in an ordinary game that didn't know about ZeX. Of
course, the first ordinary game I tried to run under ZeX used an &, so
I devised the enabling-bit scheme. That made the choice of & over \
redundant, but I haven't got around to changing it yet. Maybe in
the next version. Or maybe not - at least it reminds you that
you're not actually using TeX so that you don't expect too much!