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);