About 15 years ago, I was the only UNIX sys admin in a factory,
and I was asked to help with a “network issue” which hit the
The problem, it was explained to me, was that the network was
eating the MICR font (Magnetic Ink Character Recognition — machine-readable font) on the checks.
Look at the last line on the below check image for an example of MICR font.
Image credit: Wikipedia
The finance office was in Toronto and they were printing checks to
printers in Toronto and in Hollywood, California. The checks were
coming out OK in Toronto but in Hollywood the bank routing number
and account number was printed in regular font instead of in MICR
font. The Toronto printer was printing numbers in MICR.
I said there is no way the network is “eating” the MICR font.
That’s not how networks work! Show me the check. Sure enough,
the account number and the routing number (and the check number)
were all in regular font.
I asked the Toronto office to fax me the check printed there —
it had the MICR font. Same check, mind you!
I asked the guy responsible for maintaining the finance system
if anything changed recently (as the problem had just started)
and he was very sure there was no change. Real head-scratcher!
I ended up capturing the postscript of the check using tcpdump
as it was printed from Toronto UNIX server (that was running
the finance system) to the printer in Hollywood and poured over
What I found was that the postscript image was referencing a font
but the font was not included into the image. So how did this
Digging into this a bit deeper with the finance tech guy, why,
yes, there is a checkbox in the check editor for whether to
encapsulate (bundle) the font in with the image and by default,
every time you go in to edit the check, the box is unchecked!
However the last time the check image was edited was months ago.
Why did it stop working only now? Any guesses?
Turns out the printer had a cache for fonts and was using the
font cached from the earlier check image which included the
font! Moreover, the Toronto and Hollywood offices were on a
different printer maintenance schedule — and as part of the
maintenance the printers are rebooted which clears the font cache!
To confirm this, we rebooted the Toronto printer and it stopped
printing the MICR font on the check.
The resolution was to edit the check image and check the “include
If you are in the San Francisco Bay Area next month, drop by the
USENIX LISA conference
next month, you can hear some great war stories there.
I’ll be there to teach “Setting up CI/CD pipelines”.
My colleague Mike Weilgart and I also teach:
– “Shell Basics: Under the Hood”,
– “Git Foundations”,
– “GitLab CI”,
– “Time Management for System Administrators”,
Email me to ask about training your IT staff.