국제 언어 환경 설명서

응용프로그램에서 렌더 테이블 만들기

렌더 테이블을 만들기 전에 먼저 응용프로그램이 테이블의 일부인 rendition 중 최소 한 개를 작성해야 합니다. XmRenderTableAddRenditions() 기능은 이름이 암시하는 바와 같이 새 rendition으로 렌더 테이블을 증대시키는 것입니다. 새 렌더 테이블을 만들려면 기존 렌더 테이블 대신 NULL 인자로 XmRenderTableAddRenditions() 기능을 호출하십시오.

다음 코드는 XmFONT_IS_XOC에 설정된 XmNfontType으로 만든 rendition을 사용해 렌더 테이블을 만듭니다.

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