The original purpose of these characters was to provide a way to shift a coloured ribbon, split longitudinally usually with red and black, up and down to the other colour in an electro-mechanical typewriter or teleprinter, such as the Teletype Model 38, to automate the same function of manual typewriters.
Later advancements in technology instigated use of this function for switching to a different font or character set and back.
Similarly, they are used for switching between Katakana and Roman letters in the 7-bit version of the Japanese JIS X 0201.
The ISO/IEC 2022 standard (ECMA-35, JIS X 0202) standardises the generalized usage of SO and SI for switching between pre-designated character sets invoked over the 0x20–0x7F byte range.
[5] In ISO-2022-compliant code sets where the 0x0E and 0x0F characters are used for the purpose of emphasis (such as an italic or red font) rather than a change of character set, they are referred to respectively as Upper Rail (UR) and Lower Rail (LR), rather than SO and SI.