Использование шрифтов TTY выше 32 пикселей

Если это один из стандартных кодов ошибок ядра , которые по соглашению являются отрицательными, -75означаетEOVERFLOW("Слишком большое значение для определенного типа данных" ).

Это похоже на ошибку (возможно, кто-то где-то использовал целочисленный тип, в котором недостаточно битов для хранения значения ), поэтому отправьте отчет об ошибке в средство отслеживания отладки ядра. Добавьте достаточно информации, чтобы воспроизвести проблему, т. е. точный идентификатор поставщика/устройства, указанный в lsusb, полный вывод dmesgсо всей информацией, полученной после подключения устройства, при каких обстоятельствах появляется сообщение и т. д.

Если вы знаете, как это сделать, перекомпилируйте ядро ​​и включите отладку по USB, чтобы можно было определить источник ошибки. В противном случае, вероятно, потребуется слишком много догадок, чтобы найти его.

1
25.03.2020, 00:17
1 ответ

Я не уверен, что это ограничение явно задокументировано в документации, -ориентированной на пользователя, но оно встроено в ядро. Описание дляfbcon_set_fontгласит:

/*
 *  User asked to set font; we are guaranteed that
 *  a) width and height are in range 1..32
 *  b) charcount does not exceed 512
 *  but lets not assume that, since someone might someday want to use larger
 *  fonts. And charcount of 512 is small for unicode support.
 *
 *  However, user space gives the font in 32 rows, regardless of
 *  actual font height. So a new API is needed if support for larger fonts
 *  is ever implemented.
 */

иfbcon_get_fontобрабатывают символы за 32 -строковых шагов:

    if (font->width <= 8) {
        j = vc->vc_font.height;
        for (i = 0; i < font->charcount; i++) {
            memcpy(data, fontdata, j);
            memset(data + j, 0, 32 - j);
            data += 32;
            fontdata += j;
        }

(с аналогичной обработкой для шрифтов шире 8 пикселей ).

2
28.04.2021, 23:19

Теги

Похожие вопросы