Ok so we have a service cups that normally handles printers. Direct control of the printer is normally the cups print driver. You hit the idea of separation. Number 1 sending stuff into a Linux print que normally you talk like generic postscript. So cups does what it should sees escape code and make it printable. The cups printer driver for that printer is to generate the escape codes that go to the printer not the application sending items to the printer. This keeps your application more generic and able to use more different types of printers without issues. Be aware cups has two major printing modes. printer text and graphics. Printer text uses internal printer fonts where able. To using internal fonts in most dot matrix printers is just using the right mode and assigning the correct font names. Ie fonts that exist internally in printer. This case I don't think you need a new service. Just to learn to use the Linux existing services correctly. http://www.linuxprinting.org/show_printer.cgi?recnum=NEC-PinWriter_P6_plus Ok there are quite a few printers dot matix where you have to use the other mode so it prints correctly. dot by dot only happens in graphics mode. Case of fighting with the system and wondering why you are having problems. It might be a case that the cups print driver needs expanding to do what you want. Altering application output instead of correcting driver might be the correct way under windows but is not the correct way under Linux. Yes you do take a performance hit going the wrong way with Linux.