Copyright (c) by David S. Lawyer, 1990-1997 and may be freely used, copied, and modified by anyone provided that any significant improvements be also made freely available. If sold, the labels, etc. should imply that this is freeware. The author reserves the right to transfer this copyright to any organization which will freely distribute it (such as the Free Software Foundation). Do not remove this copyright notice.
I would like to hear your comments and feedback. Did you find this software useful? To report bugs, let me know about your improvements/additions, correct my errors or suggest additions/improvements to the documentation contact me at my (temporary ?) e-mail address: bf347@lafn.org
Be sure and tell me the version number. If your version is over a about year old, make sure you're using the latest one before reporting problems. The latest version will be likely be posted on the somewhere on the net.
The file which you draw your *-patterns in is called the "pattern file". The main program, pat2sf, converts the PATtern file to Soft-Font. The inverse program which converts soft-font to *-patterns is sf2pat.
This software is for designing (drawing) your own bit-mapped fonts (creating soft-font or downloadable font). At present, it can only generate fonts for some smarter "dumb" ANSI/ASCII terminals (VT220, WYSE, or compatibles). In the future it may handle other "devices" such as printers. You first create an ASCII "pattern" file containing drawings of your characters with *'s representing pixels, using any editor or word processor. Such a file has a required format. Here is an example of a "band" of characters from a pattern file for the Russian alphabet. Char BO is the letter 'A', etc.:
char B0 char B1 char B2 char B3 char B4 char B5 char B6 char B7 | || || || || || || || | | * ||****** ||****** ||*******|| *****||*******||* * *|| ***** | | * * ||* ||* *||* *|| * *||* ||* * *||* *| | * * ||* ||* *||* || * *||* || * * * || *| |* *||* ||* *||* || * *||* || * * * || *| |* *||****** ||****** ||* || * *||*******|| ***** || **** | |*******||* *||* *||* ||* *||* || * * * || *| |* *||* *||* *||* ||* *||* || * * * || *| |* *||* *||* *||* ||* *||* ||* * *||* *| |* *||*******||****** ||* ||*******||*******||* * *|| ***** | | || || || ||* *|| || || | | || || || || || || || | | || || || || || || || |You then run my program on such a pattern file and obtain the soft-font code to download to a terminal or printer. The font will then display on the terminal screen or print on a printer. You will probably need to write a script file.
Then you run the program (pat2sf) which scans the pattern file and converts the "drawings" into soft-font code. Then, after possibly manual editing (adding some commands to) of the soft-font code and/or sending some special commands to the device (printer or terminal) you send the soft-font to the device (you "download" it). Then your new characters are now available to use at the printer or terminal. But they are often lost when you turn off the power to the device because this erases the memory where the softfont was stored.
In order to conveniently download soft-font you may need to write some kind of a script file to do such things as setting up your terminal for downloading, loading the font into the appropriate bank, including issuing a command to copy the soft-font to the device (downloading it).
It does not contain any fonts per se (except for a couple of examples of the Russian alphabet). It creates only bit-mapped font and not scalable font. It presently only works for monospaced font on dumb terminals and can't create proportional spaced font. It seldom works to create font for terminal emulators on PC's, but will work if the emulation is 100% perfect. Please let me know if you find an emulator that can use it.
Since you may use any editor or word processor to "draw" the characters in an ascii file, this "font editor" program doesn't actually do any editing. But the final result is the same as a font editor since whatever editor you use gives you real soft-font as output after the program pat2sf scans your file. In a sense this is a "font generator" since it converts one type of font format (your drawing) into another, but many so called "font generators" don't let you draw your own font so I no longer call this program a "font generator".
Most people who use dumb ASCII terminals run unix-like operating systems. So while BitFontEdit may be used with almost any operating system, the terminology and examples are biased towards "unix-like" systems (especially Linux).
Soft-font is computer code that is sent (downloaded) from a computer to a character device (a printer or terminal) to define the shape of certain characters (often an entire character set such as the Russian alphabet). Once the soft-font for a character set is stored in the memory of the character device and selected, 7 or 8-bit ASCII character codes (or the like) sent to the device will result in display (or printing) of the character shapes specified by the previously loaded soft-font.
Soft-font may be purchased, written by hand (programming), composed on some terminals, or may be generated automatically by software such as this. There are many languages used for soft-font and device control such as PCL6 (HP) and Esc/P2 (Epson) for printers; VT220, WYSE, and BDF (X-Windows) for terminals. There are also languages for scalable fonts but you can't make scalable fonts with my software.
Most modern terminals and many printers can download soft-font. If there is any doubt you had better make sure that your hardware can handle soft-font before spending time drawing characters. At present, this software only works if your equipment can handle the following device control languages: Terminals: VT220, WYSE. However, you are invited to write more code to cover devices not supported.
Creating a new font using this software is a lot of work and involves much more than just drawing the characters. Hopefully, the font you create will be shared with others and you may want to incorporate it into some other program(s). To do all of this requires that you know (or learn) something about simple programming using printer (or terminal) control languages. You may have trouble finding the documentation for such languages. It may not exist anywhere on the Internet (I've searched in vain for much of it) and even a search of all libraries in the US (or elsewhere) may fail to locate what you need. Sometimes you may purchase the needed documentation. Some of this documentation for terminals is in the term_notes file of BitFontEdit. It is also desirable to know (or learn) a scripting language (or even the C language). If you think you're up to these tasks, please read on.
Since my software is usually supplied as C source code, you will likely need a C compiler to compile it. Once compiled, the program will do most of the routine part of creating soft-font for you. But you will still need to do a little programming (perhaps several short lines of code) in a language that your printer or terminal understands. Another task if you are creating a character set is to figure out how to map the keyboard to the characters, but how to do that is beyond the scope of this manual. If you get as far as drawing a font for a character set, chances are you'll make a mistake in your drawings by inadvertently violating the format rules for it, resulting in error messages on your first try of running pat2sf. With a little luck and effort you'll quickly correct your errors and finally succeed.
This software only deals with terminals, but it is quite incomplete even for terminals. The latest manuals for "dumb" terminals need to be checked as this software is based on pre 1990 manuals. X window terminals need to be included. More details are needed regarding the terminal control languages and emulations for those who don't have (or can't find) their manuals.
Thus far only two types of terminals are covered: Wyse and VT220. These likely cover the majority of terminals which can download font since other brands of terminals tend to have Wyse or VT220 emulations. X-window terminals use BDF format which is almost the same as Wyse except for the verbose "header" information required.
This software could be extended to include printers. For high resolution font, it is time consuming to draw (or type) the large number of pixels used in high resolution fonts. You may be better off doing it using outline fonts (not supported by this software) except that as of mid 1997 I know of know freeware programs for this. With outline fonts you don't need to type each pixel and it is easy to scale the font to various sizes.
Extending this software to cover dot-matrix printers is a much larger task than that of creating this existing software for only 2 terminal types. This is so because there are many types of printer fonts: 1. There are proportional spaced fonts with various size cells within the same font. 2. There are compressed fonts (using very simple data compression) 3. There are complicated fonts created by a second pass of the print head where pixels may overlap each other. However, to just extend it to cover a simple printer font (not proportional spaced, etc.) would be relatively easy.
I'm seeking help in the above projects. If you can write the code for a few printers (including PCL and ESC/P formats) then you'll become the co-author of BitFontEdit.