Столкнулся с тем, что нет перевода из INTEGER в SET. Это немного усложняет операции с битами. Становится все не так удобно.

Я работаю со шрифтами, которые задаются как массивы SET. Хочу внутри ячейки сдвинуть букву и наложить другой паттерн сверху.

Чтобы сдвинуть паттерн на 2 пикселя логично использовать оператор сдвига ASR. Это будет примерно так:
intletter[i] := ASR(ORD(letter[i]), 2)

Но нам пришлось перевести SET в INTEGER. И обратного пути уже нет. Поэтому дальше битовые операции приходится делать неудобно, путем хитрых вычислений.

Вот так мы добавим восемь пикселей (двоеточие)
INC(intletter[8], 1 + 2);
INC(intletter[9], 1 + 2);
INC(intletter[20], 1 + 2);
INC(intletter[21], 1 + 2)

Если бы возможно было в Обероне-07 перевести в SET обратно из INTEGER, то было бы удобнее
letter[8] := BITS(intletter[8]) + {0, 1};
letter[9] := BITS(intletter[9]) + {0, 1};
letter[20] := BITS(intletter[20]) + {0, 1};
letter[21] := BITS(intletter[21]) + {0, 1};

Но оператора BITS в Обероне-07 нет. Скорее всего это сделано, чтобы отвязаться в определении языка от разрядности...