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: & Change to given font &() Change font and size &size() Change text size &plain Plain text &bold Bold face text &italic Italic text &em Emphasis (toggle plain/italic) &tt Typewriter text (fixed-width) &tab() Tab to n points from left margin &lmargin() Set left margin to n points &rmargin() Set right margin to n points &left Left justify text ¢re Centre text &right Right justify text &flush Left & right justify text &parindent() 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 greg@cosc.canterbury.ac.nz 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!