odl, ODL - On-demand font loading
On-demand font loading (ODL) is a mechanism through which a terminal or
a printer can download the relevant bitmap font information for a user-
defined character (UDC) at the time this character has to be displayed
or printed by the device. A number of our local language terminals
(such as the VT382 series) and printers support ODL for languages like
Japanese, Chinese, and Korean, which include user-defined characters.
ODL can be implemented either through hardware or software. In the
hardware implementation of ODL, the terminal or printer sends a font
loading request to the host computer whenever the device encounters a
UDC whose font information is not present in the device. The host com‐
puter then completes the transaction by sending to the device a font
loading sequence that encodes the bitmap shape of the character. This
font information stays in the device until the font information buffer
is full or the power is switched off.
In the software implementation of ODL (SoftODL), the sending of the
font loading request from the device is disabled and it is the host
computer that keeps track of which font information has been sent to
the device. When the host computer encounters a new UDC or an old one
whose font information must be flushed because the font information
buffer is full, the host computer sends a font loading sequence to the
device before sending the UDC character code in the data to be dis‐
played or printed.
The SoftODL mechanism is supported only by the Asian tty driver, atty,
and the odld daemon through the utx driver (see atty(7), odld(8), and
utx(7)).Users run the cedit utility (see cedit(1)) to create and edit
user-defined characters in a UDC database. The cgen command is used to
create from the UDC database an ODL database that is used by the Soft‐
The SoftODL mechanism can be tuned by setting the following parameters:
The ODL buffer replacement strategy
When the font information buffer is full, there are two ways to
decide which piece of old font information is to be replaced by
information for a UDC whose information is not in the buffer.
They are FIFO (First-In-First-Out) and LRU (Least Recently
Used). The size of the ODL font cache
The size of the font cache determines how much UDC font informa‐
tion can be kept in the device. This value is device-specific.
The value 256 is a safe maximum for most devices, although some
terminals are capable of storing font information for 700 UDCs.
Refer to the stty(1) reference page for information on setting both
these parameters and using other flags related to ODL.
In general, ODL implemented in the hardware is more accurate in terms
of fetching a UDC font only when needed. However, the overhead of
sending font loading requests from device to host makes hardware ODL
slower than software ODL. SoftODL is faster and more flexible, but it
has the following limitations: Some local language devices have to have
the hardware On-Demand Loading flag disabled before the devices can be
used with the SoftODL mechanism. When a UDC is keyed in for some of
the VT382 series of local language terminals, the character is also
displayed on the 26th compose line of the terminal screen. This capa‐
bility depends on having the character's font loaded in the device.
When SoftODL is being used and a UDC is entered for the first time into
the terminal after power-up, the correct font of that character does
not be display on the compose line. Instead, a reversed wide question
mark is displayed. However, the UDC will be displayed correctly on
other parts of the screen. If SoftODL is enabled for a terminal ses‐
sion and the terminal is accidentally powered off, users must issue the
following command immediately after turning on the power: This command
flushes the internal tty cache to avoid a mismatch between the font
cache of the tty and that of the terminal. When a terminal is con‐
nected by a terminal server to several sessions, only one of those ses‐
sions should have ODL (software or hardware) enabled. If more than one
session has ODL enabled, you may have to issue one of the following
commands to avoid problems: This command flushes the internal tty cache
when you return to the terminal session where SoftODL is being used.
This command instructs the tty driver to use SoftODL for all the user-
defined characters. However, this option also prevents caching and
slows the display of UDCs tremendously. When users change session
while SoftODL is enabled, their terminals may hang due to an incomplete
escape sequence. This condition can be corrected by using the setup
menu of the terminal and activating the "Reset Terminal" soft key.
Changing the terminal line discipline while SoftODL is active would
cause all the SoftODL parameters stored in the tty driver to be reset
to their default values. So, SoftODL is automatically deactivated if
the line discipline is changed and must be restarted after the change.
Users must be careful when setting the odlsize parameter of the stty
command. The optimal value for this parameter is the size of the char‐
acter font cache in the current terminal. Users can set a value less
than or equal to the hardware parameter, but must never set a value
larger than that. If the stty parameter is larger than the hardware
parameter, the SoftODL mechanism cannot operate properly. Care must
also be taken in setting the odltype parameter of the stty command.
This parameter must be set to the same type as that of the terminal. A
mismatch between the tty driver and terminal settings can produce unex‐
pected results. If the ODL database is changed, the change may not be
reflected in any SoftODL terminal sessions that were activated prior to
the change. For the already active sessions to recognize any new UDC
characters in the ODL database, users have to stop and then restart the
SoftODL mechanism by through the stty command. This problem also
exists for hardware ODL.
Commands: cedit(1), cgen(1), stty(1), odld(8), utxd(8)
Files: atty(7), utx(7)odl(5)