Retourner au contenu associé (entrée de forum : Affichage de caractères grecques UTF-8 dans Xorg)
Posté par Achille Fouilleul le 10 novembre 2011 à 16:31. En réponse au message Affichage de caractères grecques UTF-8 dans Xorg. Évalué à 1.
La doc de Xlib laisse à désirer, en effet, mais ce n'est pas aussi compliqué que ça en a l'air. J'ai modifié ton programme comme suit, en ajoutant pas mal de code de diagnostic, et ça a l'air de marcher. (À compiler avec -std=c99)
#include <X11/Xlib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int main(void) { printf("setlocale() -> %s\n", setlocale(LC_ALL, "")); Display *d = XOpenDisplay(NULL); if (d == NULL) { fprintf(stderr, "Cannot open display\n"); exit(1); } char **missing_charset_list = NULL; int missing_charset_count = 0; char *def_string = NULL; XFontSet fs = XCreateFontSet(d, "*", &missing_charset_list, &missing_charset_count, &def_string); printf("fs = %p, def_string = %s\n", fs, def_string); for (int i = 0; i < missing_charset_count; ++i) printf("missing_charset_list[%d] = %s\n", i, missing_charset_list[i]); XFreeStringList(missing_charset_list); if (fs == NULL) exit(1); int s = DefaultScreen(d); char msg[] = "ΟΑΣΔΦΖΧΨΩΒzeΒ"; Window w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 200, 200, 1, BlackPixel(d, s), WhitePixel(d, s)); XMapWindow(d, w); XSelectInput(d, w, ExposureMask); while (1) { XEvent e; XNextEvent(d, &e); if (e.type == Expose) { XmbDrawString(d, w, fs, DefaultGC(d, s), 10, 20, msg, strlen(msg)); } } XFreeFontSet(d, fs); XCloseDisplay(d); return 0; }
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Solution Qt
Posté par Achille Fouilleul . En réponse au message Affichage de caractères grecques UTF-8 dans Xorg. Évalué à 1.
La doc de Xlib laisse à désirer, en effet, mais ce n'est pas aussi compliqué que ça en a l'air.
J'ai modifié ton programme comme suit, en ajoutant pas mal de code de diagnostic, et ça a l'air de marcher. (À compiler avec -std=c99)