ZDEPROP.DOC Proportional Spacing with ZDE June 2, 1990 Carson Wilson 1. INTRODUCTION. 2. USING ZDE'S PROPORTIONAL FORMATTING FEATURE 3. INSTALLATION AND CUSTOMIZATION. 1. INTRODUCTION. ZDE version 1.6 incorporates an elemental proportional formatting feature. This option is useful only to those whose printers have proportional spacing capabilities. Proportional formatting allows you to format ragged right text properly for proportional output. Centering and right justification of proportional text are not available. 2. USING ZDE'S PROPORTIONAL FORMATTING FEATURE Proportionally spaced printing gives a more professional look, allowing more characters to be printed on a line without crowding. This is because less space is allocated to narrow characters like "i" and more to wide characters like "M." Most computer printers do NOT allow proportional spacing; only laser printers, some daisy-wheel equipment, and newer dot-matrix printers have this ability. Typically, there is a special set of instructions which when sent to the printer, cause it to use proportional spacing rather than monospacing. On some models (the Silver Reed SR550 for example), DIP switches also control this feature. ZDE does not itself perform proportional spaced printing; it simply allows you to format your text for use with a printer that has this capability. You must instruct your printer to space proportionally before sending text to it. If you have tried using the proportional capability of your printer, you probably have noticed that LINES WITH LOTS OF WIDE CHARACTERS IN THEM print out much wider than lines comprised of narrow characters. ZDE 1.6 allows you to compensate for this by counting the width of each character when it formats a paragraph (^B command), and wrapping each line when its width count reaches the equivalent of the current right margin setting. The ^OJ command toggles this feature on and off [the default may also be installed with ZDENSTAL]. When proportional spacing is active, the legend "PS" appears in ZDE's status line (this is overwritten by "MR" when the margins are released). Proportional spacing occurs only during the ^B reformat command, not during wordwrap, so to format a document proportionally, you must use ^B at the beginning of each paragraph after you key it in. Still, the results are well worth the extra trouble, especially for material that will be reproduced. 3. INSTALLATION AND CUSTOMIZATION. ZDE comes preconfigured to format text for proportional spacing with Epson's new LQ510 dot matrix printer. Since most printers allocate roughly the same ratios of space to the various characters, there is a good chance you won't need to install ZDE for your printer. This file has been formatted for proportional output by ZDE; try printing it proportionally to see the results. If you should decide to change ZDE's proportional spacing to match your printer, you can patch ZDE's offset values for individual characters. The offsets are stored in a sequential ASCII table whose location is given by ZDENSTAL's "F" option. The table consists of positive and negative (2's compliment) byte values, one for each character beginning with " " and going through "~". As distributed, all of the values are either -12, -6, 0, +6, or +12. The negative numbers are expressed as (256+n), where n is the negative number. So for example, -6 is expressed as (256+(-6)) or 250 (FA hex). ZDE uses its ASCII table as follows. When reformatting a line, ZDE counts each character as (30+table value)/30 of a column wide. So if the offset is zero, the character is one column wide (30/30 = 1) and ZDE increments the current column by one. If the character's offset is -6, it counts as only (30+(-6)/30) or 24/30 columns wide, and ZDE increments the current column by only 24/30. If the character's offset is +12, it counts as 42/30 columns wide, and so on. When a full column is "lost" due to characters with negative offsets, ZDE adds the next character to the line without incrementing the column count. Similarly, when enough "extra" columns are counted to equal a full character, ZDE increments its column count without actually adding another character to the line. To see the effects of this, try reformatting a paragraph or two, first with PS on, then with it off. Lines of wide characters are shortened on screen, while lines of narrow characters are allowed to extend beyond the right margin. When the text is printed proportionally, your printer reverses the process. Lines of wide characters are lengthened and lines of narrow characters are shortened, the net result being proportionally spaced text with an even right margin. If your printer's proportional output is not properly compensated for by ZDE, it is possible to install another offset table within ZDE to suit your needs. The current table's address is given by ZDENSTAL's "F" option. To find the location of a character's offset, add its ASCII value to ZDE's table address and subtract 32. For example, the ASCII value for "A" is 65, so the location of "A"'s offset is (table address+65-32) or (table address+33). You may adjust a character's offset to any value between -34 and +35 decimal, but keep in mind that offsets if less than -29 may result in lines that _never_ reformat since characters with offsets of -30 or less take up no virtual space or less! To calculate the proportional ratios used by your printer, it is best to print out a line of thirty of each character in proportional mode and compare the length of each line to the others. Most characters should result in lines of roughly the same length; this is your "base" length, and you should set the offsets of these characters in ZDE to 00. Other lines will probably fall into four or so other lengths; hopefully these lengths will correspond to an even xx/30ths of the "base" length. To get the proper offset value, just subtract the number of characters equal in length to a line of "base" characters from 30. For example, if only 18 capital "M"'s take up the same length as 30 base characters, the offset for "M" is 30-18 or +12. If it takes 42 "i"'s to equal the length of 30 base characters, the offset for "i" is 30-42 or -12. Once you have determined the offsets in 30ths of each character's width from the base length, just plug these values into ZDE's proportional table. You can use a patcher to alter a few characters. For extensive modification, I have provided the assembly language file ZDEPROP.Z80 which can be assembled to a you must edit the file and set the equate TABLE to the current address of ZDE's proportional spacing table as given by ZDENSTAL. Then overlay ZDE with ZDEPROP.HEX using MLOAD, SID, or DDT. - End of ZDEPROP.DOC -