レンダーテーブルを作成するには、テーブルを構成するレンディションがアプリケーションプログラムにより少なくとも 1 個は作成されている必要があります。その名前が示すとおり、XmRenderTableAddRenditions 関数は新しいレンディションをレンダーテーブルに追加します。新しいレンダーテーブルを作成するには、既存のレンダーテーブル名の代わりに NULL を引数に指定して XmRenderTableAddRenditions() 関数を使用します。
以下に示すプログラム例では、XmNfontType を XmFONT_IS_XOC に設定して作成されたレンディションを使用してレンダーテーブルが作成されます。
int n;
Arg args[10];
Widget w;
XmString labelString;
XmRendition rendition;
XmStringTag renditionTag;
XmRenderTable renderTable;
/* alef lam baa noon taa - iso8859-6 */
labelString = XmStringGenerate("¥307¥344¥310¥346¥312¥", NULL
XmCHARSET_TEXT, "ArabicShaped");
w = XtVaCreateManagedWidget("a label", xmLabelWidgetClass, parent,
XmNlabelString, labelString,
XmNlabelType, XmSTRING,
NULL);
n = 0;
XtSetArg(args[n], XmNfontName, "-*-*-medium-r-normal-*-24-*-*-*-*-*-*-*");
n++;
XtSetArg(args[n], XmNfontType, XmFONT_IS_XOC); n++;
XtSetArg(args[n], XmNlayoutAttrObject, "ar"); n++;
XtSetArg(args[n], XmNlayoutModifier,
"@ls numerals=nominal:contextual, shapecharset=iso8859-6"); n++;
renditionTag = (XmStringTag) "ArabicShaped";
rendition = XmRenditionCreate(w, renditionTag, args, n);
renderTable =
XmRenderTableAddRenditions(NULL, &rendition, 1, XmREPLACE);
XtVaSetValues(w, XmNrenderTable, renderTable, NULL);