-
Notifications
You must be signed in to change notification settings - Fork 78
Printer Emulation
Several Atari printers are emulated to generate output available for download from the FujiNet's web server. So far these are:
- Atari 820
- Atari 822
- Atari 1020
- Atari 1027
There is also a file printer capability for capturing raw SIO buffers to a single binary file. This file printer can capture the entire buffer, trim the buffer after encountering an EOL (0x9B), or TRIM and convert EOL to \n.
Most of the printers are made to output PDF except the 1020 outputs SVG.
A number of short Atari printer test programs were found or written to test the emulated printers. Where possible, FujiNet output was compared side-by-side with real output or example output found in manuals.
The standard PDF document generation libraries are generally quite large and very flexible. For FujiNet a compact, custom, library was made to emulate the basic actions of the printers. For example, functions are implemented to output PDF code to start a new page, output a line of text, set the font, etc. The functions also keep track of file locations of all the PDF objects and builds a cross-reference table (xref) at the end of the PDF file.
Several resources were used to figure out how to generate PDF files on FujiNet:
- Make your own PDF file – Hello World is a great primer on how PDFs are assembled.
- PDF Reference, Third Edition - Adobe - at some point the actual specification is needed to learn the details.
- TextToPDF Apache PDFBox CLI Utility - Java program used to specify fonts and extract font parameters
- iText RUPS - Java program for inspecting PDF files and is useful for finding bugs
- novaPDF - Windows program for generating PDFs and used to embed Type 1 fonts.
- MS Word and Scientific Workplace (LaTex PDF) were used to generate basic PDFs, which were examined and dissected to learn by example.
Many specimen PDF files were generated by hand or by x86 C++ code to test out ideas. These can be found in the /pdf folder of the repo.
There are a few fonts in the wild that are close to the Atari printers' but often nothing is an exact match. Fonts in use for printer emulation include:
- Atari 1027 - Prestige Elite is a (near?) perfect match. It can be obtained from Adobe or at a number of ad-laden free download sites (e.g., here).
- Atari 1020 - FifteenTwenty is from those other guys but have to grudgingly admire the ingenuity. This font is not complete and is missing the international characters available on the 1020. Eventually emulation will use the original vector table to draw SVG paths instead of the font.
- Atari 820 - Custom Atari 820 Normal and Atari 820 Sideways fonts were generated based on real printer output. At first this 5by7 font was used for the normal font; however, it had to be modified with FontForge to make it monospace and to encode in Windows ANSI. It was also modified in FontForge to make the sideways font but has since been replaced with the accurate custom font.
- Atari 822 - A custom Atari 822 Thermal font was generated based on real printer output. At first this 5x7 Matrix font was used, but the lower case characters are not a good match in vertical placement.
- Epson - plan to use the amazingly thorough FX Matrix font family
##Font Development
Copyright 2024 Contributors to the FujiNetWIFI project.
Join us on Discord: https://discord.gg/7MfFTvD
- Home
- What is FujiNet?
- The Definition of Done
- Board bring up for FujiNet Platform.IO code
- The Complete Linux CLI Guide
- The Complete macOS CLI Guide
- Development Env for Apps
- FujiNet-Development-Guidelines
- System Quickstarts
- FujiNet Flasher
- Setting up a TNFS Server
- FujiNet Configuration File: fnconfig.ini
- AppKey Registry - SIO Command $DC Open App Key
- CP-M Support
- BBS
- Official Hardware Versions
- Prototype Board Revisions
- FujiNet Development Guidelines
- Atari Programming
- Apple Programming
- C64 Programming
- ADAM Programming
- Testing Plan
- Hacker List
- FujiNet VirtualMachine