Rendition 以及 render 表格應該在資源檔案中,針對適當國際化的應用程式進行指定。當您將 render 表格指定於一個檔案時,程式的二進位碼就可因應指定語言環境的特殊需求而獨立產生,且可輕易地依照該語言環境需求完成自訂。
Render 表格會以下列語法指定於資源檔案中 :resource_spec:[tag[,tag]*]
其中 tag 是某些適合 XmNtag rendition 資源的字串。
這一行將建立初始 render 表格,其將包含一個或更多個指定的 rendition。這些 rendition 將附加指定標記:
resource_spec[*|.] rendition[*|.]resource_name:value
下列範例將說明與 XmRendition (可以使用資源檔案設定) 相關聯的 CTL 資源。fontType 必須設定為 FONT_IS_XOC,才能使版面配置物件生效。layoutModifier (使用 @ls 指定) 已經由 rendition 物件傳遞至版面配置物件。
如需可以使用 layoutModifier 在版面配置上設定之資源的清單,請參閱「CAE Specification: Portable Layout Services: Context-dependent and Directional Text」,The Open Group:Feb 1997;ISBN 1-85912-142-X;document number C616。
在建立 render 表格之前,應用程式必須先建立至少一個該表格中的一個 rendition。XmRenderTableAddRenditions() 函式一如其名所示,也是使用新的 rendition 來強化 render 表格。若要建立新的 render 表格,請呼叫 XmRenderTableAdd s() 函式,並以 NULL 引數來替換現有的 render 表格。
下列程式碼將使用 rendition,將 XmNfontType 設定為 XmFONT_IS_XOC,來建立 render 表格。
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);