What is hold graphics mode?

For a teletext graphician, hold graphics mode is an arcane trick leading to some nice effects. For the author of a teletext frame renderer or editor, they are the bane of their lives, or at least a recurring topic in the bug tracker. Ordinarily, whenever a control character appears in a teletext frame it is replaced by an ugly space. However, sometimes it's required to have one colour changing seamlessly into another, for example on this weather map.

A weather map of Poland.
A weather map of Poland.

Say hold graphics mode has been enabled. For the rest of the line, wherever a control character is encountered, instead of being shown as a space, it will be shown as the most recent graphics ('mosaics') character (with bit 6 set). This character is displayed in the foreground and background colours currently set. In the weather map, the places near where the colours change would ordinarily be shown as a space, but instead are often shown as the block of six subpixels.

Zooming in, we notice the use of hold graphics mode on the southern border of Poland:

Hold graphics in southern Żywiec county (red) and the western Podhale region (white) on the Poland/Slovakia border.
Hold graphics in southern Żywiec county (red) and the western Podhale region (white) on the Poland/Slovakia border.

The gory details

In both the red and white pairs of characters, the first character of the pair is a graphics character defining which subpixels are shown, and the second a colour change control character. These colour changes come into effect beginning from the next character cell (in teletext terminology, 'set-after').

Because hold graphics is active, the most recent graphics character on the line — in this case the one just before it — is shown instead, continuing the jagged southern border rather than leaving an empty space. By performing this substitution, most attribute changes are possible without the appearance of intervening spaces.

Hold graphics mode can be disabled with the release graphics control character. The control code which enables hold graphics mode takes effect immediately (in teletext terminology, 'set-at'). On the other hand, when the mode is cancelled with the release graphics code, it will take effect on the next character ('set-after'). That means that the character cell containing the enable hold graphics control code will <em>itself</em> appear as the most recent graphics character on the line, as will the release graphics control code (providing, of course, the hold graphics mode is active at that point).

Scanning across the line from left to right, the substituted character is reset to space in these situations:

Perhaps counter-intuitively, cancelling the hold graphics mode doesn't reset the substituted character to a space. It only stops the substitution from taking place. So, you could switch back into hold graphics mode and still see whatever the most recent graphics character on the line is at the point being substituted, even if it is before the release graphics code.

You can't tell from the map example, but even if you change from contiguous to separated graphics, the substituted character is still shown in its original contiguous or separated form. For the truly obsessed, this is all covered in European Telecommunication Standard ETS 300 706 published by the European Broadcasting Union. In particular, section G.3.3 gives an example of how the substitution should work between separated and contiguous mode.


The best way to get an intuition for this is to play with some designs which use the mode. What follows is a list of a few frames I've prepared for amateur teletext systems and demos. If you have a JavaScript-enabled browser, you can click on the links to get to an interactive editor loaded with the frame. In the editor, use [Esc] then capital [Q] to display the codes. Try twiddling the pixels on the character being substituted and see the effects on the rest of the line.