00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _Xutf8_h
00027 #define _Xutf8_h
00028
00029 # ifdef __cplusplus
00030 extern "C" {
00031 # endif
00032
00033 #include <X11/X.h>
00034 #include <X11/Xlib.h>
00035 #include <X11/Xlocale.h>
00036 #include <X11/Xutil.h>
00037
00038 typedef struct {
00039 int nb_font;
00040 char **font_name_list;
00041 int *encodings;
00042 XFontStruct **fonts;
00043 Font fid;
00044 int ascent;
00045 int descent;
00046 int *ranges;
00047 } XUtf8FontStruct;
00048
00049 XUtf8FontStruct *
00050 XCreateUtf8FontStruct (
00051 Display *dpy,
00052 const char *base_font_name_list);
00053
00054 void
00055 XUtf8DrawString(
00056 Display *display,
00057 Drawable d,
00058 XUtf8FontStruct *font_set,
00059 GC gc,
00060 int x,
00061 int y,
00062 const char *string,
00063 int num_bytes);
00064
00065 void
00066 XUtf8DrawRtlString(
00067 Display *display,
00068 Drawable d,
00069 XUtf8FontStruct *font_set,
00070 GC gc,
00071 int x,
00072 int y,
00073 const char *string,
00074 int num_bytes);
00075
00076 void
00077 XUtf8DrawImageString(
00078 Display *display,
00079 Drawable d,
00080 XUtf8FontStruct *font_set,
00081 GC gc,
00082 int x,
00083 int y,
00084 const char *string,
00085 int num_bytes);
00086
00087 int
00088 XUtf8TextWidth(
00089 XUtf8FontStruct *font_set,
00090 const char *string,
00091 int num_bytes);
00092 int
00093 XUtf8UcsWidth(
00094 XUtf8FontStruct *font_set,
00095 unsigned int ucs);
00096
00097 int
00098 XGetUtf8FontAndGlyph(
00099 XUtf8FontStruct *font_set,
00100 unsigned int ucs,
00101 XFontStruct **fnt,
00102 unsigned short *id);
00103
00104 void
00105 XFreeUtf8FontStruct(
00106 Display *dpy,
00107 XUtf8FontStruct *font_set);
00108
00109
00110 int
00111 XConvertUtf8ToUcs(
00112 const unsigned char *buf,
00113 int len,
00114 unsigned int *ucs);
00115
00116 int
00117 XConvertUcsToUtf8(
00118 unsigned int ucs,
00119 char *buf);
00120
00121 int
00122 XUtf8CharByteLen(
00123 const unsigned char *buf,
00124 int len);
00125
00126 int
00127 XCountUtf8Char(
00128 const unsigned char *buf,
00129 int len);
00130
00131 int
00132 XFastConvertUtf8ToUcs(
00133 const unsigned char *buf,
00134 int len,
00135 unsigned int *ucs);
00136
00137 long
00138 XKeysymToUcs(
00139 KeySym keysym);
00140
00141 int
00142 XUtf8LookupString(
00143 XIC ic,
00144 XKeyPressedEvent* event,
00145 char* buffer_return,
00146 int bytes_buffer,
00147 KeySym* keysym,
00148 Status* status_return);
00149
00150 unsigned short
00151 XUtf8IsNonSpacing(
00152 unsigned int ucs);
00153
00154 unsigned short
00155 XUtf8IsRightToLeft(
00156 unsigned int ucs);
00157
00158
00159 int
00160 XUtf8Tolower(
00161 int ucs);
00162
00163 int
00164 XUtf8Toupper(
00165 int ucs);
00166
00167
00168 # ifdef __cplusplus
00169 }
00170 # endif
00171
00172 #endif
00173
00174
00175
00176