국제 언어 환경 설명서

CTL 기술 지원을 위한 Motif 변경 사항

Motif의 다음 변경 사항은 CTL 기술을 지원합니다:

XmNlayoutDirection

객체 레이아웃을 제어합니다.

XmStringDirection

시스템이 문자열의 문자들을 표현하는 방향을 지정합니다.

XmRendition

XmRendition에 가상 자원을 추가합니다.

XmTextXmTextField

XmRendition과 연관된 텍스트의 레이아웃 동작에 영향을 미칩니다.

XmTextFieldGetLayoutModifier

rendition 레이아웃 객체의 레이아웃 수정자 문자열을 반환합니다.

XmTextGetLayoutModifier

위짓트와 관련된 rendition의 현재 레이아웃 객체 설정 값을 반환합니다.

XmTextFieldSetLayoutModifier

rendition에 결합된 레이아웃 객체용 레이아웃 수정자 값을 설정합니다.

XmTextSetLayoutModifier

위짓트와 관련된 rendition의 레이아웃 객체 설정을 수정합니다.

XmStringDirectionCreate

복합 문자열을 작성합니다.

XmNlayoutDirection 자원

XmNlayoutDirection 자원은 객체 레이아웃을 제어합니다. 이 자원은 아래와 같은 방식으로 LayoutObject의 방향 값과 상호 작용합니다.

XmNlayoutDirection 개요, 특히 XmStringDirectionXmNlayoutDirection 간의 상호 작용에 대한 설명은 Motif Programmer's Guide (Release 2.1)의 11.3절을 참조하십시오.

레이아웃 방향 결정하기

XmNlayoutDirectionXmDEFAULT_DIRECTION로 지정되면 위짓트의 레이아웃 방향은 만들어질 때 제어하는 의사 XOC에서 설정됩니다. 동적 텍스트(XmTextXmTextField)의 경우 의사 XOC는 위짓트에 대하여 사용되는 XmRendition와 연관된 것입니다. 정적 텍스트(XmList, XmLabel, XmLabelG)의 경우 레이아웃 방향은 방향을 지정하는 첫번째 복합 문자열 구성 요소에서 설정됩니다. 지정은 두 가지 중 한 가지 방법으로 수행됩니다:

XmNlayoutDirectionXmDEFAULT_DIRECTION으로 지정되지 않고 XmNlayoutModifier @ls orientation 값이 레이아웃 수정자 문자열에서 명시적으로 지정되지 않으면 XmNlayoutDirection 값은 XOC 및 해당하는 LayoutObject에 전달됩니다.

XmNlayoutDirectionXmNlayoutModifier @ls orientation 값이 명시적으로 지정되어 있으면 동작이 혼합됩니다. XmNlayoutDirection은 위짓트 객체 레이아웃을 제어하며 XmNlayoutModifier @ls orientation 값은 레이아웃 변환을 제어합니다.

기존 POSIX 로켈 모델에 대한 논리적 확장으로 컨텍스트 종속적 및 양방향 텍스트 변형을 처리하기 위한 이식 가능 함수의 설명은 CAE Specification: Portable Layout Services: Context-dependent and Directional Text(The Open Group: Feb 1997; ISBN 1-85912-142-X; 문서 번호 C616)를 참조하십시오. 이 설명서는 복합 텍스트 언어에 대한 지원을 제공하고자 하는 시스템 및 응용프로그램 프로그래머들을 위한 것입니다.

XmStringDirection 자원

XmStringDirection은 시스템이 문자열의 문자를 표시하는 방향을 지정하는 데 사용되는 유형입니다.

XmNlayoutDirection 자원은 해당 문자열의 방향을 지정하는 구성 요소가 없는 모든 복합 문자열(XmString)에 대하여 기본 rendering 방향을 설정합니다. 따라서 레이아웃 방향을 설정하려면 XmNlayoutDirection 자원을 위한 적절한 값을 설정해야 합니다. 특정 방향 구성 요소를 사용해 복합 문자열을 작성할 필요는 없습니다. 응용프로그램이 XmString을 렌더링하면 해당 응용프로그램은 방향이 명시된 문자열이 작성되었는지 확인합니다(XmStringDirection). 문자열에서 아무런 방향 구성 요소도 제공하지 않으면 응용프로그램은 현재 위짓트를 위한 XmNlayoutDirection 자원의 값을 확인하고 해당 값을 XmString을 위한 기본 렌더링 방향으로 사용합니다.

XmRendition 자원

CTL은 새로운 다음 표에 나열된 의사 자원을 XmRendition에 추가합니다. 의사 자원의 설명은 표를 참조합니다.

표 6–1 XmRendition의 새로운 자원

이름 

클래스/유형 

액세스 

기본값 

XmNfontType

XmCFontType/XmFontType

CSG 

XmAS_IS

XmNlayoutAttrObject

XmClayoutAttrObject/String

CG 

NULL

XmNlayoutModifier

XmClayoutModifier/String

CSG 

NULL

XmNfontType

Rendition 글꼴 객체의 유형을 지원합니다. CTL의 경우 이 자원의 값은 XmFONT_IS_XOC값이어야만 합니다. 값이 일치하지 않으면 XmNlayoutAttrObjectXmNlayoutModifier 자원이 무시됩니다.

이 자원의 값이 XmFont_IS_XOC이고 XmNfont 자원이 지정되지 않으면 작성될 때 XmNfontName 자원의 값이 XmNlayoutAttrObject 자원이 지정하는 로켈 또는 현재 로켈에서 XOC 객체로 변환됩니다. 도, XmNlayoutModifier 자원의 값은 XOC와 연관된 모든 레이아웃 객체에 전달됩니다.

XmNlayoutAttrObject

레이아웃 AttrObject 인자를 지정합니다. 자원은 XmRendition과 관련되어 있는 XOC와 관련된 레이아웃 객체를 작성하는데 사용됩니다. 이 문자열의 구문 및 의미에 대해서는 레이아웃 서비스 m_create_layout() 사양을 참조하십시오. 레이아웃 수정자 방향 출력값과 XmNlayoutDirection 위짓트 자원 간의 상호 작용에 대한 설명은 XmNfontType 설명을 참조하십시오.

XmNlayoutModifier

XmRendition용으로 XOC와 함께 사용된 레이아웃 객체에 전달될 레이아웃 값을 지정합니다. 문자열의 구문과 의미에 대한 내용은 CAE Specification을 참조하십시오.

XmRendition{Retrieve,Update}을 사용하여 이 자원을 설정하면 문자열은 이 rendition과 연관된 XOC와 연관된 레이아웃 객체에 전달됩니다. 이 메커니즘을 통해 레이아웃 서비스를 동적으로 구성할 수 있습니다. Orientation, Context, TypeOfText, TextShaping 또는 ShapeCharset이 변경되면 예상치 못한 동작이 나타날 수 있습니다.

추가 레이아웃 동작

XmNlayoutModifierXmRendition과 연관된 텍스트의 레이아웃 동작에 영향을 미칩니다. 예를 들어, 숫자의 레이아웃 기본 처리가 NUMERALS_NOMINAL인 경우 XmNlayoutModifier@ls numerals=nominal:national 또는 @ls numerals=:national로 설정하여 NUMERALS_NATIONAL로 변경합니다.

레이아웃 값은 다음 그룹으로 구분할 수 있습니다:

XmText and XmTextField 자원

Xm CTL은 Motif 2.0 CSText 위짓트 다음 패턴화되어 시각적으로 작동하는 이동 및 삭제 활동의 병렬 목록을 추가하여 XmTextXmTextField 를 확장합니다. 표준 Motif 2.1 TextTextField는 논리적 순서와 물리적 순서를 구분하지 않습니다. nextforward은 “오른쪽 방향”을 의미하고 previousbackward는 “왼쪽 방향.”을 의미합니다. 그러나 CSText는 적절한 구분을 하고 엄격하게 물리적인 이름(예를 들어, left-character (), delete-right-word() 등)로 새로운 동작 집합을 정의합니다. 이 활동 루틴 모두는 위짓트의 XmNlayoutDirection 에 민감하게 정의되며 적절한 다음 또는 이전 활동을 호출합니다.

Xm CTL 확장은 CSText 확장보다 다소 복잡합니다. Xm CTL 확장은 중립적 고정화를 포함한 의사 XOC에 의한 결정에 따라 위짓트의 전체 방향보다 커서를 둘러싼 물리적 문자의 구체적 방향에 민감합니다.

새로운 자원 이름을 사용하여 rendition 태그를 제공하고 배열을 제어하기 위한 선택 정책을 제어할 수 있습니다.

새로운 Xm CTL 활동 세트는 대략 {Move,Delete,Kill}, {Left,Right}, {Character,Word}의 조합으로 이루어지며 아래에 나열되어 있습니다. 활동 목록은 다음 표에 나와 있습니다.

표 6–2 Xm CTL의 새로운 자원

이름 

클래스/유형 

액세스 

기본값 

XmNrenditionTag

XmCRenditionTag/XmRString

CSG 

XmFONTLIST_DEFAULT_TAG

XmNalignment

XmCAlignment/XmRAlignment

CSG 

XmALIGNMENT_BEGINNING

XmNeditPolicy

XmCEditPolicy/XmREditPolicy

CSG 

XmEDIT_LOGICAL

XmNrendition 태그

위짓트에 대하여 사용되는, XmNrenderTable 자원에 있는 XmRendition의 rendition 태그를 지정합니다.

XmNalignment

위짓트에서 사용되는 텍스트 배열을 지정합니다. XmALIGNMENT_ENDXmALIGNMENT_CENTER만 지원됩니다.

XmNeditPolicy

위짓트, XmEDIT_LOGICAL 또는 XmEDIT_VISUAL에 대하여 사용되는 편집 정책을 지정합니다. XmEDIT_VISUAL의 경우에는 선택, 커서 이동 및 삭제가 시각적 스타일로 표시됩니다. 자원을 설정하면 표준 키보드 이동 및 삭제 이벤트에 대한 번역도 새 “시각적” 활동 목록이나 기존 논리적 활동으로 변경됩니다.

문자 방향 활동 루틴

forward-cell()backward-cell() 활동은 지정된 방향의 문자 방향을 질의합니다. 방향이 왼쪽에서 오른쪽 방향이면 해당하는 next-/forward- 또는 previous-/backward- 변수를 호출합니다.

문자 방향 추가 동작

이 동작은 중첩 수준에 대하여 레이아웃 서비스 변환 OutToInpProperty 버퍼를 사용하여 문자의 방향을 결정합니다. 따라서 위짓트의 동작은 로켈 지향 변환에 따라 달라집니다. OutToInp의 정보 또는 특히, Property 버퍼가 정확하지 않으면 위짓트는 예기치 않은 동작이 일어날 수 있습니다. 아울러, 로켈 지향 모듈이 본 사양의 범위를 벗어나면 양방향 편집 동작은 동일한 텍스트, 응용프로그램, 자원 값 및 LayoutObject 구성의 경우에도 플랫폼에 따라 차이가 있을 수 있습니다.

시각적 모드 활동은 셀 기반 동작의 표시입니다. 논리적 모드 활동은 논리적 문자 기반 동작을 유발할 수 있습니다. 예를 들어, delete-right-character() 작업은 디스플레이 셀에 해당하는 입력 버퍼 문자들을 삭제합니다. 즉, LayoutObject 변환 “속성” 바이트 “새 셀 표시 기호”가 1인 한 개의 입력 버퍼 문자 및 “새 셀 표시 기호”가 0인 뒤따르는 모든 문자입니다.

Property 버퍼에 대한 자세한 정보는 CAE Specificationm_transform_layout() 사양을 참조하십시오.

마찬가지로 backward-character()의 경우 삽입점은 입력 버퍼에서 한 문자 뒤로 이동되며 커서는 관련된 출력 버퍼 문자에 해당하는 시각적 위치로 복귀합니다. 따라서 복합적인 디스플레이 셀을 가로질러 이동하려면 여러 번 키 입력을 해야 함을 의미합니다; 커서는 삽입 지점이 “새로운 셀 표시 기호”가 0인 구별 기호 또는 합자 조각과 같은 입력 버퍼 문자에 걸쳐 이동함에 따라 실제로 표시 위치를 변경하지 않습니다.

이것은 삭제 작업이 논리/입력 버퍼 측이나 물리적/출력측의 디스플레이 셀 수준에서 일어난다는 것을 의미합니다. 입력 및 출력 버퍼 간의 1 대 1 대응이 성립되지 않기 때문에 엄격한 물리적 문자 대 문자 삭제를 위한 모드는 없습니다. 주어진 물리적 문자는 예를 들어 논리적 문자의 한 단편만을 나타낼 수 있습니다.

XmText 활동 루틴

다음 목록은 XmText 활동 루틴을 설명합니다.

left-character(extend)

XmNeditPolicyXmEDIT_LOGICAL이고 인자가 없이 호출되면 삽입 커서가 논리적으로 한 문자 뒤로 이동합니다. 삽입 커서가 줄의 시작 부분에 있으면 삽입 커서는 이전 줄의 논리적인 마지막 문자로 이동합니다. 그렇지 않으면 삽입 커서 위치는 변경되지 않습니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 위치의 왼쪽으로 이동합니다. 삽입 커서가 줄의 시작 부분에 있으면 삽입 커서는 이전 줄의 끝 문자로 이동합니다.

left-character()가 extend 인자와 함께 호출되면 삽입 커서는 인자가 없는 경우처럼 이동하고 현재 선택을 확장합니다.

left-character() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

right-character(extend)

XmNeditPolicyXmEDIT_LOGICAL이고 아무런 인자가 없이 호출되면 삽입 커서가 논리적으로 한 문자 앞으로 이동합니다. 삽입 커서가 줄의 논리적인 끝 부분에 있으면 삽입 커서는 다음 줄의 논리적인 시작 부분으로 이동합니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 위치의 오른쪽으로 이동합니다. 삽입 커서가 줄의 끝 부분에 있으면 삽입 커서는 다음 줄의 시작 부분으로 이동합니다.

extend의 인자를 통해 호출되면 XmNeditPolicy는 인자가 없는 경우와 마찬가지로 삽입 커서를 이동시키고 현재의 선택을 확장합니다.

right-character() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR를 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 이 활동은 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

right-word(extend)

XmNeditPolicyXmEDIT_LOGICAL이고 인자 없이 호출되면 삽입 커서가 논리적인 연속된 문자(있을 경우)의 논리적 시작 문자로 이동합니다. 그렇지 않으면 기존 단어의 논리적 끝 부분으로 이동시킵니다. 삽입 커서가 줄의 논리적인 끝 부분이나 줄의 논리적인 마지막 단어에 있으면 해당 커서를 다음 줄의 논리적인 첫 번째 단어로 이동시킵니다. 그렇지 않으면 기존 단어의 논리적 끝 부분으로 이동시킵니다.

XmNeditPolicyXmEDIT_VISUAL이고 인자가 없이 호출되면 삽입 커서를 줄 끝의 오른쪽 또는 뒤에 있는 첫 번째 흰 색 공백 문자 뒤 비 흰색 공백 문자로 이동시킵니다.

extend의 인자를 통해 호출되면 인자가 없는 경우와 마찬가지로 삽입 커서를 이동시키고 현재의 선택을 확장합니다.

left-word() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 이 활동은 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

delete-left-character()

XmNeditPolicyXmEDIT_LOGICAL이면 delete-previous-char()에 상응합니다. XmNeditPolicyXmEDIT_VISUAL이면 정상 모드에서 널이 아닌 선택이 있는 경우 해당 선택을 삭제합니다. 그렇지 않으면 삽입 커서의 남은 문자를 삭제합니다. 추가 모드에서 널이 아닌 선택이 있으면 커서는 선택에서 사라지지 않고 XmNpendingDelete가 참으로 설정되며 해당 선택을 삭제합니다. 그렇지 않으면 선택에 영향을 미칠 수 있는 삽입 커서의 왼쪽 문자를 삭제합니다.

delete-left-character() 활동은 합리적인 값 XmCR_MODIFYING_TEXT_VALUE을 가진 XmNmodifyVerifyCallback 프로시저 및 합리적인 값 XmCR_VALUE_CHANGED을 가진 XmNvalueChangedCallback 프로시저에 대한 호출을 생성합니다.

delete-right-character()

XmNeditPolicyXmEDIT_VISUAL이면 delete-next-character()에 상응합니다. XmNeditPolicyXmEDIT_VISUAL이면 정상 모드에서 널이 아닌 선택이 있는 경우 해당 선택을 삭제합니다. 그렇지 않으면 삽입 커서의 오른쪽 문자를 삭제합니다. 추가 모드에서 널이 아닌 선택이 있으면 커서는 선택에서 사라지지 않고 XmNpendingDelete가 참으로 설정되며 해당 선택을 삭제합니다. 그렇지 않으면 삽입 커서의 오른쪽 문자를 삭제합니다. 이 활동은 선택에 영향을 미칠 수 있습니다.

delete-left-character() 활동은 합리적인 값 XmCR_MODIFYING_TEXT_VALUE을 가진 XmNmodifyVerify-Callback 프로시저 및 합리적인 값 XmCR_VALUE_CHANGED을 가진 XmNvalue-ChangedCallback 프로시저에 대한 호출을 생성합니다.

문자 구성, 묶음 기호 및 분음 부호를 지원하기 위해 일부 셀 기반 루틴이 구축됩니다. 다시 말해, 두 개 이상의 문자가 단일 표시 셀을 점유하는 도형 문자로 표현됩니다.

XmText 셀 활동 루틴은 다음 목록에서 설명합니다.

backward-cell(extend)

삽입 커서를 한 셀 뒤로 이동합니다. XmNeditPolicy XmEDIT_LOGICAL이면 삽입 커서는 현재의 셀보다 논리적으로 앞선 셀의 시작 부분으로 이동합니다. 그렇지 않으면 현재 셀의 시작 부분으로 이동합니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 왼쪽 셀의 시작 부분으로 이동합니다. prev-cell() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

forward-cell(extend)

삽입 커서를 논리적인 다음 셀의 시작 부분으로 이동시킵니다. 그렇지 않으면 커서를 셀의 끝 부분으로 이동시킵니다. XmNeditPolicyXmEDIT_LOGICAL이면 커서는 한 셀 앞으로 이동합니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 위치 오른쪽의 셀의 시작 위치로 이동하고(있을 경우) 그렇지 않으면 현재 셀의 끝 부분으로 이동합니다. forward-cell() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

XmTextFieldGetLayoutModifier 자원

XmTextFieldGetLayoutModifier()는 해당 rendition에 연결된 레이아웃 객체의 상태를 반영하는 레이아웃 수정자 문자열을 반환합니다.

XmTextFieldGetLayoutModifier()용 구문:

#include <Xm/TextF.h>string XmTextFieldGetLayoutModifier(Widget widget)

XmTextFieldGetLayoutModifier()는 위짓트에 연관된 renditin의 현재 레이아웃 객체 설정의 값에 액세스합니다. 편리한 함수를 이용해 레이아웃 객체 수정자 값이 변경되면 XmTextFieldGetLayoutModifier 함수가 변경된 값 뿐 아니라 레이아웃 객체의 전체 상태를 반환합니다.

XmTextFieldGetLayoutModifier()는 문자열 값 형태로 레이아웃 객체 수정자 값을 반환합니다.

XmTextGetLayoutModifier 자원

XmTextGetLayoutModifier()는 해당 rendition에 연결된 레이아웃 객체의 상태를 반영하는 레이아웃 수정자 문자열을 반환합니다.

XmTextGetLayoutModifier()용 구문:

#include <Xm/Text.h>String XmTextGetLayoutModifier(Widget widget)

XmTextGetLayoutModifier는 위짓트와 연관된 rendition의 현재 레이아웃 객체 설정의 값에 액세스합니다. 편리한 함수를 사용해 레이아웃 객체 수정자 값을 변경하면 XmTextGetLayoutModifier 함수는 변경된 값 뿐 아니라 전체 레이아웃 객체의 상태를 반환합니다.

XmTextGetLayoutModifier는 문자열 값의 형태로 레이아웃 객체 수정자 값을 반환합니다.

XmTextFieldSetLayoutModifier 자원

XmTextFieldSetLayoutModifier()는 해당 rendition에 연결된 레이아웃 객체의 동작을 변경하는 레이아웃 수정자 값을 설정합니다.

XmTextFieldSetLayoutModifier()용 구문:

#include <Xm/TextF.h> \
void XmTextFieldSetLayoutModifier(Widget \
widgetstring layout_modifier)

XmTextFieldSetLayoutModifier는 위짓트와 관련된 rendition의 레이아웃 객체 설정을 수정합니다. 편리한 함수를 사용해 레이아웃 객체 수정자 값이 설정되면 입력 매개변수에 지정된 속성들만이 변경됩니다; 그 밖의 속성은 바뀌지 않습니다.

XmTextSetLayoutModifier 자원

XmTextSetLayoutModifier()은 해당 rendition의 레이아웃 객체의 동작을 변경하는 레이아웃 수정자 값을 설정합니다.

XmTextSetLayoutModifier()용 구문:

#include <Xm/Text.h>void XmTextSetLayoutModifier(Widget widget,string layout_modifier)

XmTextSetLayoutModifier는 위짓트와 관련된 rendition의 레이아웃 객체 설정을 수정합니다. 레이아웃 객체 수정자 값이 이 편리한 기능을 사용하여 설정되면 입력 매개변수에 지정된 속성만 변경되고 나머지 속성은 변하지 않습니다.

XmStringDirectionCreate 자원

XmStringDirectionCreate복합 문자열을 작성합니다.

XmTextSetLayoutModifier()용 구문:

#include <Xm/Xm.h>XmString XmStringDirectionCreate(direction)XmStringDirection direction

XmStringDirectionCreate는 단일 구성 요소를 가진 복합 문자열을 주어진 값의 방향으로 작성합니다. 한편, XmNlayoutDirection 자원은 문자열을 위한 방향을 지정하는 구성 요소를 갖고 있지 않은 임의의 복합 문자열(XmString)을 위한 기본 렌더링 방향을 설정합니다. 따라서 레이아웃 방향을 설정하려면 XmNlayoutDirection 자원을 위한 적절한 값을 설정해야 합니다. 특정 방향 구성 요소를 갖는 복합 문자열을 만들 필요는 없습니다.

응용프로그램이 XmString을 렌더링하면 해당 응용프로그램은 방향이 명시된 문자열이 작성되었는지 확인합니다(XmStringDirection). 문자열에서 아무런 방향 구성 요소도 제공하지 않으면 응용프로그램은 현재 위짓트를 위한 XmNlayoutDirection 자원의 값을 확인하고 해당 값을 XmString을 위한 기본 렌더링 방향으로 사용합니다.