Jądro próbuje wywnioskować najpierw jaki symbol rozumieć przez każdy podany przez użytkownika bajt, a następnie gdzie ten symbol jest umieszczony w bieżącej czcionce.
Jądro wie o pięciu tłumaczeniach bajtów na symbole konsoli-ekranu. W trybie Unicode (UTF-8) kod UTF-8 jest przekształacany bezpośrednio na Unicode. Założeniem jest że prawie wszystkie potrzebne symbole w Unicode się znajdują, a w przypadkach gdzie nie jest to prawdą zarezerwowane są kody 0x00ff* dla bezpośredniego dostępu do czcionki. Poza trybem Unicode, używa się jednej z tabeli tłumaczeń. Te cztery tabele to: a) Latin1 -> Unicode, b) grafika vt100 -> Unicode, c) PC -> Unicode, d) zdefiniowane przez użytkownika.
Istnieją dwa zestawy znaków, zwane G0 i G1, i jeden z nich jest zestawem bieżącym (początkowo G0). Wypisanie ^N spowoduje że bieżącym zestawem będzie G1, ^O że G0.
Zmienne G0 i G1 wskazują na tablice tłumaczeń, i mogą być zmienione przez użytkownika. Początkowo wskazują na tablice a) i b), odpowiednio. Sekwencje Esc(B, Esc(0, Esc(U, Esc(K powodują że G0 wskazuje na tablice tłumaczeń a), b), c), d), odpowiednio. Sekwencje Esc)B, Esc)0, Esc)U, Esc)K powodują że G1 wskazuje na tablice tłumaczeń a), b), c), d), odpowiednio.
Sekwencja Esc-c powoduje skasowanie terminala, czyli to czego chcesz
jeżeli ekran jest cały zaśmiecony. Często doradzane echo ^V^O
spowoduje tylko że zestawem bieżącym będzie G0, ale nie ma gwarancji że
G0 pokazuje na tablicę a).
W niektórych dystrybucjach istnieje program reset(1), który wypisuje
po prostu echo ^[c. Jeśli twój kawałek termcap dla konsoli jest
poprawny (i ma :rs=\Ec:), wtedy zadziała także
setterm -reset.
Zdefiniowaną przez użytkownika tablicę odwzorowań ustawić można
używając mapscrn(8). Rezultatem odwzorowania jest to że jeżeli
wypisywany jest symbol c, to wysyłany do pamięci ekranu jest
symbol s = map[c]. Obraz bitowy który odpowiada s
znajduje się w ROMie znakowym, i może zostać zmieniony przy
pomocy setfont(8).