XDrawStringのマニュアルページから、 32ビットのx座標とy座標に署名されているようです。
int XDrawString(Display *display, Drawable d, GC gc, int x, int y, char *string, int length);
xとyの両方がどのようにintであるかに注意してください(つまり、少なくともgcc / linux2.6-i386では32ビット符号付き整数)
問題は、(2 ^ 15-1)を渡すとy = 32767
、文字列が正しい場所に描画されますが、この値を超えると文字列が描画されないことです。
内部的には32ビット整数が使用されておらず、代わりに16ビットの符号付き整数が座標に使用されていると思われます。
関数が32ビット整数を受け入れることをマニュアルページが示しているように思われる場合、より長い整数を使用できるようにするために回す必要のあるコンパイルオプションはありますか?それとも、これはXlibの制限ですか?