Font Archaeology

Raster CRT Typography (According to DEC)

The time it takes for the phosphor to become fully activated is actually longer than the pulse representing the timing to draw a single pixel (40 nanoseconds). Meaning, if we were to attempt to display just a single pixel, the phosphor on this particular spot will never reach its full activation level resulting in a fuzzy image of varying brightnesses between dimmer, thin strokes and heavier, thick strokes. So the typography has to adjust for this, by streching the pulses to double width (80 ns), at least, in order to provide an even image and legible text and to work around the shallow flanks of the screen intensification. [...]

To provide for this, the VT-terminals employ a special technique, called dot stretching: The individual rows of a character matrix as in ROM are modified on-the-fly by prolonging any pulses for an active pixel for yet another pixel. Where there's a single pixel in ROM, there will be two on the screen, where there are two in a row, there will be three displayed. (This is equivalent to OR-ing a word with itself by an offset of one pixel or bit to the right.)

Previously, previously, previously, previously, previously, previously, previously, previously, previously.

Tags: , , ,

12 Responses:

  1. James C. says:

    This is so cool, thanks for sharing it!

  2. Those DEC boys (I’m sexistly assuming) were clever, but why not just do the bit stretching in the character generator ROM? I know we’re spoiled today by cheap memory, maybe adding 1 byte per character broke the bank?

    • This is rampant speculation, but: you don't know, as the ROM, what TTY you're talking to. Maybe it's a printer, maybe it's pipeline to another machine that will never see any human-legible display (but does need to actually parse the signal as characters).

      • Well, if you’re the character generator ROM in a VT100, odds are pretty good you’re talking to a VT100 CRT.

        • Haha… yup, you're totally right. I misread the context: I was thinking the generation was sitting on whatever system the VT-100 was connected to.

          In that case, I (still, since I tried to make sure I wasn't claiming to before) have no clue. Maybe that ROM was a third-party part and not worth "building here"?

        • Wait… I'm not sure that actually rules out my examples. Couldn't you hook up a dot-matrix printer directly on a VT-100?

          (The pipeline thing, probably not relevant, since that'd be executed on the underlying system, if I remember how DEC UNIX thought about TTYs, which I mostly only vaguely understand from the remnants left over in NetBSD ca 1996.)

          • Welcome to story-time with your friendly neighborhood oldster.

            Back in the day, before Steve Jobs and his bunch of (perhaps not so) merry (but almost certainly mostly) men invented stole the idea of the GUI, all we had was text. Just letters and numbers and maybe a few weird shapes--you could think of the shapes as, like, paleolithic emojis if that helps. We didn't, but what did we know? We also had control characters, which made our terminals (sometimes) do useful things. You could think of those as something like HTML tags if you like. And now that I think of it, maybe you could think of the whole set of characters as a font. We actually did know the word "font" back in those days, but the idea of using multiple fonts was pretty much limited to the balls on our IBM Selectric typewriters. Each device had one font (OK, maybe two if it was a fancy device), and it was burned into the character generator ROM forever and ever, amen.

            Anyway, since all we had was these characters, that's what we sent around, encoded mostly in ASCII. Some benighted souls used EBCDIC instead, because their purchasing department decided to buy their terminals and computers from the typewriter salesman. He wore a suit and tie and had a nice haircut, unlike those weird hippies trying to peddle their upstart "minicomputers". Also, his company was already on the approved vendor list so they had to do less paperwork. A few people used Baudot, but they were old even then and are probably dead by now so they won't complain that I left it out of the list.

            Where was I? Oh yes, ASCII. Some terminals had printer ports, so you could print what was on your screen. You would hit some wacko key chord to trigger this ritual in the early days. In later times you got a special key to do it. Actually, nobody remembered to take this key off the keyboard once it was no longer useful, but that's a separate rant.

            Prepare now, my younglings, for your head to explode. Did the print screen function send an image of your screen to the printer? Heavens no! It sent the (let's say) ASCII characters that were displayed on the screen, together with some control characters, to the printer. The printer then printed them in its own font, stored in its own character generator ROM! I know, that sounds really convoluted and strange, but it was the style at the time. We also wore onions on our belts.

            Anyway, all this nonsense is just to get to the point that the VT100 character generator ROM talks to the VT100 CRT. Not the VT100 printer port. The printer has its own character generator ROM, and I bet we could find some weird stories about how the print head munges the data from the ROM in order to make the dots on the paper look good too!

            • (Took me a while to get back to this, I've been juggling a few things.)

              First off, thanks for this! It was certainly entertaining!

              But also, either I'm older (40 this year) than you think I am, or I played with older toys than you think I did. :^>

              I'm amply familiar with, for example on-screen flow-control via ^S and ^W: my first Unix was NetBSD/mac68k, sans X11 (video card couldn't swing it) and in black & white, in… 1996 or so? So I know most of that stuff, but you tell it well. :^>

              I've also actually typed on an IBM Selectric, although in a "museum" context, rather than a "real world" one. (I went to high school and then also college with this dude, and caught his "collect older computers" bug; I never had anything so rare as his set of Lisae, but I did have a couple of NeXT cubes, and I think the 68030 B&W one is still sitting in a close in my parents' house next to my childhood Apple IIgs.)

              Weirdly, I'm also familiar with EBCDIC: my first job was Unix sysadmin at a direct mail company that still ran a lot of its workload through an IBM 3<mumble>0, by that point running z/OS, so I've written [almost definitely: bad; I was just out of a CS degree at a liberal arts college] Perl to go back and forth between EBCDIC for the mainframe and ASCII for the Oracle DBs. I've also dragged FICONN cables under data center flooring.

              And I'm right there with you on the PrScr button rant. Why the actual fuck is that still on PC keyboards and not just relabeled "screenshot"?

              Also… printers are still batshit insane. (That prank was inspired by—although executed without any specific assistance from, I stress to absolve him of responsibility, but also because it's true—our host, who had the gall to pull that stunt at an employer, whereas I just did it to the educational institution I was about to graduate from.)

              Anyway, I'm rambling. Good chat! :^>

  • Previously