국제 언어 환경 설명서

Rendition 만들기

다음 코드는 XmNlabelString이 유형 XmCHARSET_TEXT XmLabel을 태그가 “ArabicShaped.”인 Rendition을 사용해 만듭니다. Rendition은 “ar” (아랍어 로켈용 로켈 이름에 해당)의 XmNlayoutAttrObject 와 출력 버퍼용으로 NUMERALS_CONTEXTUALNumerals 값과 “유니코드-3.0.”의 ShapeCharset 값을 지정하는 레이아웃 수정자를 사용해 작성됩니다.

로켈 지향 레이아웃 모듈은 입력 텍스트를 16비트 유니코드 3.0 코드 세트를 사용해 코드화된 실제 문자의 출력 버퍼로 전송합니다. 명시적 레이아웃 로켈은 지정되어 있기 때문에 이 텍스트는 런타임 로켈 설정에 관계 없이 올바로 렌더링됩니다. 이 예에서는 입력이 ISO 8859–6으로 코드화됩니다.

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=:contextual, shapecharset=iso8859-6"); n++;
renditionTag = (XmStringTag) "ArabicShaped";
rendition = XmRenditionCreate(w, renditionTag, argcs
s, n);
renderTable = 
    XmRenderTableAddRenditions(NULL, &rendition, 1, XmREPLACE_MERGE);
XtVaSetValues(w, XmNrenderTable, renderTable, NULL);

Rendition 편집하기

다음 코드는 TextField 위짓트와 RenderTable을 단일 Rendition으로 만듭니다. XmNlayoutAttrObject XmNlayoutModifier 의사 자원은 지정되지 않은 채로 남았으므로 NULL로 설정됩니다. 이 값은 Rendition 명령과 관련된 레이아웃 객체가 존재하는 경우 기본 로켈에 속한다는 것을 의미합니다.

이 예제가 올바로 작동하려면 로켈을 코드 세트가 ISO 8859-6이고 로켈 지향 레이아웃 모듈이 IMPLICIT_BASIC 알고리즘을 지원할 수 있는 로켈로 설정되어야 합니다. Rendition LayoutObjectImplicitAlg 값은 RenditionXmNlayoutModifier 의사 자원에 의해 수정됩니다.

int n;
Arg args[10];
Widget w;
	XmRendition rendition;
XmStringTag renditionTag;
XmRenderTable renderTable;
w = XmCreateTextField(parent, "text field", args, 0);
n = 0;
	XtSetArg(args[n], XmNfontName, "-*-*-medium-r-normal-*-24-*-*-*-*-*-*-*");
     n++;
	XtSetArg(args[n], XmNfontType, XmFONT_IS_XOC); n++;
renditionTag = (XmStringTag) "ArabicShaped";
rendition = XmRenditionCreate(w, renditionTag, args, n);
renderTable = 
    XmRenderTableAddRenditions(NULL, &rendition, 1, XmREPLACE_MERGE);
XtVaSetValues(w, XmNrenderTable, renderTable, NULL);
	....
n = 0;
XtSetArg(args[n], XmNlayoutModifier, "@ls implicitalg=basic");
     n++;
XmRenditionUpdate(rendition, args, n);