LINUX.ORG.RU

Сообщения qzzroman

 

Linux Mint. Xlib. Не работают шрифты в графическом приложении.

Форум — Development

Здравствуйте. Пытаюсь научиться создавать простые оконные приложения, но столкнулся с проблемой кодировок в Linux Mint. Конкретно в Си-коде (C/C++) с библиотекой Xlib.

Помогите решить проблему!

Код программы:

#include <X11/Xlib.h>
#include <X11/keysym.h>   // Библиотека с кодами клавиш клавиатуры 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (void) {

    Display *d;
    Window w, r;
    XGCValues gv;
    GC gc;
    XEvent e;
    char *msg = "Привет! Hellow word!";
    int s;

    if ((d = XOpenDisplay(getenv("DISPLAY"))) == NULL) {
	    printf("Can't connect X server!\n");
	    exit(1);
    }

    s = XDefaultScreen(d);
    r = RootWindow(d, s);

    gv.foreground = XBlackPixel(d, s);
    gv.font = XLoadFont(d, "-adobe-helvetica-medium-r-normal-*-16-*-*-*-*-*-koi8-r");
    gc = XCreateGC(d, r, GCForeground | GCFont, &gv);

    /* Создать окно */
    w = XCreateSimpleWindow (d, r, 10, 10, 800, 600, 1, gv.foreground, XWhitePixel(d, s));

    /* Устанавливаем заголовки окон */
    XStoreName(d, w, "Window #1");

    /* Вывести окно на экран */
    XMapWindow(d, w);
    /* Отправить все команды Xlib принудительно из буфера на сервер */
    XFlush(d);

    /* На какие события будем реагировать */
    XSelectInput(d, w, ExposureMask | KeyPressMask | ButtonPressMask);

    /* Бесконечный цикл обработки событий */
    while (1) {

        XNextEvent(d, &e);

        /* При изменении размеров окна вызывается событие */
        if (e.type == Expose) {
            XDrawString(d, w, gc, 100, 100, msg, strlen(msg));
            printf ("\n%s\n", msg);
            XFlush(d);   
        }

        /* При нажатии кнопки-выход */
        if (e.type == KeyPress) {
           //break;
        }

        /* При нажатии мышки-выход */
        if (e.type == ButtonPress) {
            break;
        }
    }

    XCloseDisplay(d);
    return 0;
}

Ошибка в консоли:

X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  45 (X_OpenFont)
  Serial number of failed request:  7
  Current serial number in output stream:  12

В самом терминале русские шрифты отображаются, а вот в этой программе какие-то квакозяблики.

 , ,

qzzroman
()

RSS подписка на новые темы