RTF Files and Attributed Strings
OSXDEV
RTF Files and Attributed Strings Rich Text Format (RTF) 은 Microsoft Corporation에 의해 고안된 텍스트 포맷팅 언어 입니다. 여기저기 흩어진 RTF 커맨드, 그룹, 이스케이프 시퀀스와 평범한 텍스트를 사용하여 캐릭터, 문단, 문서 포맷 속성을 나타낼 수 있습니다. RTF는 여러 응용프로그램과 컴퓨팅 플랫폼에 걸쳐 포맷팅 정보를 갖는 문서를 전송하는데 널리 사용되는 상호 교환 가능한 문서 포맷 입니다. Application Kit은 RTF 문서를 읽고 쓰는 것을 지원합니다. 표준 RTF에 지원되지 않는 텍스트 속성의 경우, Apple은 커스텀 커맨드로 RTF 확장을 제공합니다.
목차 |
[편집] Reading and Writing RTF Data
Application Kit의 NSAttributedString 확장은 RTF, RTFD(첨부 파일이 있는 리치텍스트) 파일에서 텍스트 속성을 읽거나 기록을 위한 지원을 추가합니다.
리치 텍스트 기록을 위한 NSAttributedString 메소드는 NSAttributedString Application Kit Addtions Reference에 정의되어 있습니다.
| RTFFromRange:documentAttributes: | 모든 첨부 속성은 제외하고 주어진 범위에 속하는 캐릭터와 속성에 해당하는 RTF 스트림을 포함하는 NSData 객체를 반환합니다. |
| RTFDFromRange:documentAttributes: | 범위 내의 캐릭터와 속성에 해당하는 RTFD 스트림을 포함하는 NSData 객체를 반환합니다. |
| RTFDFileWrapperFromRange:documentAttributes: | 주어진 범위 내의 캐릭터와 속성에 해당하는 RTFD 문서를 포함하는 NSFileWrapper를 반환합니다. |
| initWithRTF:documentAttributes: | 주어진 데이터 객체에 포함된 RTF 커맨드 및 데이터 스트림을 디코딩하여 새 NSAttributedString 객체를 초기화합니다. |
| initWithRTFD:documentAttributes: | 주어진 데이터 객체에 포함된 RTFD 커맨드 및 데이터 스트림을 디코딩하여 새 NSAttributedString 객체를 초기화합니다. |
| initWithRTFDFileWrapper:documentAttributes: | RTFD 문서를 포함하고 있는 주어진 NSFileWrapper 객체로부터 새 NSAttributedString 객체를 초기화합니다. |
이들 명시적인 RTF-읽기 메소드 외에도 다음 네개의 메소드도 파일이나 URL로 지정한 리소스로부터 RTF 데이터를 읽을 수 있습니다. NSAttributedString은 다음을 정의합니다.
| initWithPath:documentAttributes: | 주어진 경로의 파일에 포함된 RTF나 RTFD 데이터로부터 새 NSAttributedString 객체를 초기화합니다. |
| initWithURL:documentAttributes: | 주어진 URL의 데이터로부터 새 NSAttributedString 객체를 초기화합니다. |
NSMutableAttributedString은 다음을 정의합니다.
| readFromURL:options:documentAttributes: | url의 파일로 리시버의 컨텐츠를 설정합니다. |
| readFromData:options:documentAttributes: | 데이터의 스트림으로 리시버의 컨텐츠를 설정합니다. |
[편집] Handling Document Attributes
속성을 갖는 스트링은 캐릭터와 문단의 속성 정보만을 저장합니다. 반면 RTF는 종이 크기, 페이지 레이아웃과 같은 문서의 일반적인 속성도 지원합니다. RTF와 함께 사용할 수 있는 Application Kit 메소드는 문서 속성을 NSDictionary 객체에 저장하여 RTF 디렉티브에 읽고 씁니다.
많은 init 메소드들은 RTF 데이터로부터 읽은 속성을 포함하는 딕셔너리를 반환합니다. 이 딕셔너리들은 페이지 레이아웃을 설정하는데 사용할 수 있습니다. RTFFromRange:documentAttributes:와 같은 RTF 추출 메소드들은 이런 속성을 포함하는 딕셔너리를 받아서 RTF 데이터로 기록하여 페이지 레이아웃 정보를 보존합니다.
Table 1은 Application Kit이 지원하는 RTF 문서 속성의 목록입니다.
Table 1 Document attributes supported by RTF-handling methods
| 속성 키 | 타입 |
|---|---|
| PaperSize | NSSize를 포함하는 NSValue |
| LeftMargin | 포인트 값을 float으로 포함하는 NSNumber |
| RightMargin | 포인트 값을 float으로 포함하는 NSNumber |
| TopMargin | 포인트 값을 float으로 포함하는 NSNumber |
| BottomMargin | 포인트 값을 float으로 포함하는 NSNumber |
| HyphenationFactor | float을 포함하는 NSNumber |
| DocumentType | NSString; NSPlainTextDocumentType, NSRTFTextDocumentType, NSRTFDTextDocumentType, NSMacSimpleTextDocumentType, NSHTMLTextDocumentType일 수 있습니다. |
| CharacterEncoding | 파일을 해석하는데 사용되는 NSStringEncoding을 지정하는 int를 포함하는 NSNumber, 일반 텍스트 파일만 가능 |
| ViewSize | NSSize를 포함하는 NSValue |
| ViewZoom | float을 포함하는 NSValue. 100 = 100% 줌 |
| ViewMode | int를 포함하는 NSValue. 0 = 노멀, 1 = 페이지 레이아웃 (PaperSize 속성의 값을 사용) |
| CocoaRTFVersion | int를 포함하는 NSNumber. RTF 파일이라면 파일이 생성된 Cocoa 버전을 저장합니다. 이 값이 없는 경우 RTF 파일이 Cocoa나 그 전신에 의해 만들어지지 않았음을 의미합니다. 0 = Not Cocoa writer, 1 = NextStep, 40 = OpenStep, 100 = Mac OS X 10.0, 102 = 10.2. (이후의 버전이 숫자가 증가한다는 것 외에는 미래에 번호가 어떻게 바뀔지는 알 수 없습니다.) |
| Converted | int를 포함하는 NSNumber. 파일이 필터 서비스에 의해 변환되었는지의 여부를 지시합니다. 만일 값이 없거나 0 이라면, 파일은 문서 타입에서 지정된 형태입니다. 만일 1 이상인 경우, 필터 서비스에 의해 이 타입으로 변환된 것입니다. 만일 음의 값이라면 원래 문서의 몇몇 기능들은 빠져서 "손실된" 변환이 이뤄졌음을 의미합니다. |
[편집] Handling Attachments
첨부된 이미지나 파일과 같은 첨부자료는 특별한 캐릭터와 속성으로 속성을 갖는 스트링에서 표현됩니다. 캐릭터는 글로벌 네임인 NSAttachmentCharacter에 의해 구분되고 첨부 존재 여부와 스트링의 위치를 나타냅니다. 속성 이름인 NSAttachmentAttributeName에 의해 지정되는 속성은 NSTextAttachment 객체입니다. NSTextAttachment 객체는 첨부 자체의 데이터와 스트링이 그려질때 표시할 이미지도 포함합니다.
NSAttributedString의 attributedStringWithAttachment: 클래스 메소드를 사용하여 첨부 스트링을 구성할 수 있습니다. 그 후, appendAttributedString:이나 insertAttributedString:atIndex:를 사용하여 수정가능한 속성을 갖는 스트링을 추가할 수 있습니다. 하나 이상의 첨부를 갖는 리치 텍스트 데이터를 쓰려면 RTFDFromRange:documentAttributes: 메소드와 RTFDFileWrapperFromRange:documentAttributes: 메소드를 사용하십시오. 속성을 갖는 스트링을 첨부를 포함하는 리치 텍스트 데이터로 초기화하려면 initWithRTFD:documentAttributes:와 initWithRTFDFileWrapper:documentAttributes: 메소드를 사용하십시오.
[편집] Apple’s RTF Extensions
Apple은 RTF 언어를 확장하여 Cocoa 텍스트 시스템에는 존재하지만 표준 RTF로는 표현 불가능한 텍스트 속성 및 포맷팅 구조를 지원합니다. Apple 확장은 표준 RTF 커맨드, 그룹, 이스케이프와 동일한 형태입니다. RTF 커맨드는 백슬래쉬로 시작하여 알파벳 캐릭터 스트링(대소문자 구별), 그 후에 옵션으로 정수 파라미터 값으로 구성되어 있습니다. RTF 그룹은 좌측 대괄호({)로 시작하여 선택적으로 다른 그룹을 포함하는 RTF 시퀀스가 나오고 그 후 우측 대괄호(})로 이뤄집니다. RTF 이스케이프는 백슬래쉬로 시작하여 그 뒤에 따르는 특수문자로 \{와 같은 경우 {를 (그룹을 나타내는 것 대신 실제 문자로)표현합니다.
RTF는 목적지(destination) 개념을 포함하여 RTF 명령과 텍스트를 그룹지어 문서 내의 다른 위치에 풋노트와 같이 집어넣을 수 있도록 합니다. 이스케이프 시퀀스인 \*는 RTF 리더가 이 후의 명령을 이해하지 못할 경우 목적지의 내용을 무시하도록 합니다.
RTF의 단위은 트윕(twip)으로 표현됩니다. 한 트윕은 1/20포인트 입니다.
Table2 에서 Apple의 캐릭터 속성 RTF 확장을 나열합니다.
Table 2 Character attribute RTF extensions
| RTF Sequence | Description | Parameter(s) |
|---|---|---|
| \CocoaLigatureN | Ligature control | NSLigatureAttributeName의 값. 0 = no ligature, 1 = default ligatures, 2 = all ligatures. 기본값은 1. |
| \expansionN | 글리프에 적용될 확장 팩터 | NSExpansionAttributeName(확장 팩터의 로그)의 값 * 2000. 기본 값은 0. |
| \obliquenessN | 글리프에 적용될 기울기 | NSObliquenessAttributeName의 값 * 2000. 0 = 기울기 없음. 기본값은 0. |
| \fsmilliN | 폰트 크기의 상세 규격 | 폰트크기 * 1000. \fs가 정수가 아니거나 half-point 값인 경우 \fs에 추가로 쓰임. 값이 \fs에 의해 덮어씌워지고, \fs 뒤에 바로 쓰여져야함. 기본은 \fs |
| \shadxN \shadyN | 그림자 오프셋. \shad와 함께 쓰임 | 트윕(twips, 0 = 오프셋 없음)으로 X, Y 오프셋. 기본값은 \shadx3 와 \shady-3 |
| \shadrN | 그림자 블러, \shad와 함께 쓰임 | 트윕 단위로 블러 반경. 0 = 블러 없음. 기본 값은 0. |
| \strikecN | 색상으로 스트라이크 | 색상 번호. 기본값은 텍스트 전경 색과 같음. |
| \strikestyleN | \strike, \striked, \strikew가 충분하지 않을때 쓰는 스트라이크 스타일 | 스타일 패턴 마스크 NSObliquenessAttributeName의 값. 0 = 없음; 0x8000 = 단어 단위; styles: 1 = 한줄, 2 = 두껍게, 9 = 두줄; patterns: 0x100 = 점선, 0x200 = 대쉬, 0x300 = 대쉬 점선, 0x400 = 대쉬 점 점. 기본 값은 0 |
| \strokecN | 스트로크 색상 | 색상 번호. 기본은 텍스트 전경 색과 동일. |
| \strokewidthN | 글리프 스트로크 두께, \outl과 함게 쓰임 | 폰트 포인트 크기의 퍼센티지로 stroke width * 20. 0 = 스트로크 없음. 기본 값은 0. 음의 값은 글리프가 스트로크가 있으며 채워져 있음을 의미함. 스트로크 두께는 파라미터의 정수값으로 취함. |
| \ulstyleN | 밑줄 스타일. 표준 \ul 명령으로 충분하지 않을 때 쓰임 | 스타일과 패턴마스크 NSUnderlineStyleAttributeName의 값. 0 = 없음; 0x8000 = 단어 단위; styles: 1 = 한줄, 2 = 두껍게, 9 = 두줄; patterns: 0x100 = 점선, 0x200 = 대쉬, 0x300 = 대쉬 점선, 0x400 = 대쉬 점 점. 기본 값은 0 |
| {{\NeXTGraphic attachment \widthN \heightN} string} | RTF 파일과 동일한 폴더에 있는 첨부 파일의 이름 (보통 RTFD 문서내로 패키지화 됨) | 첨부는 첨부 파일 이름으로 UTF-8로 인코딩되고 적절히 RTF-이스케이프되어있음. 옵션으로 지정하는 첨부 크기의 두께와 높이의 단위는 트윕(twip). string은 언제나 0xAC. |
| {{}{\*\glidN basestring}string} | 명시적으로 지정된 글리프를 위한 Glyph ID. (추가적인 {}은 Mac OS X 10.2 이전의 RTF 리더 버그를 피하기 위한 꼼수임.) | 글리프 지시자 (\glid 파라미터). basestring은 글리프 아이디가 오버라이드할 스트링임; 그 후 이 속성은 지정된 스트링에 적용됨. 보통 string과 basestring은 동일하나 string에 basestring의 인스턴스가 여러개 포함되어 있을 수 있음. |
| {{}{\*\glidN basestring\glcolN} string} | 명시적으로 지정된 글리프를 위한 Glyph ID | 캐릭터 지시자 (\glid 파라미터) 와 캐릭터 컬렉션(\glcol 파라미터). 컬렉션 ID : 0 = identity, 1 = Adobe-CNS1, 2 = Adobe-GB1, 3 = Adobe-Japan1, 4 = Adobe-Japan2, 5 = Adobe-Korea. |
| {{}{\*\glid basestring\glnam glyphname}string} | 명시적으로 지정된 글리프를 위한 Glyph ID | glyphename은 UTF-8 인코딩으로 작성된 글리프 이름 |
| \AppleTypeServicesUN | 캐릭터 쉐이프 컨트롤 | NSCharacterShapeAttributeName의 값. 이 값은 Apple Type Services kCharacterShapeType selector +1로 해석이 됨. 값이 0 이면 이 속성을 해제함. 기본값은 0. |
Table 3은 문단 속성에 대한 애플의 RTF 확장 목록입니다.
Table 3 Paragraph attribute RTF extensions
| RTF Sequence | Description | Parameter(s) |
|---|---|---|
| \pardeftabN | 패러그래프의 기본 탭 간격 | 탭 간격값 단위 트윕(twip). 0 = 명시적으로 지정하지 않으면 탭 없음. 기본값은 0. |
| \qnatural | 패러그래프의 Natural 텍스트 정렬 (스크립트에 기반함), \ql과 함께 쓰임 | 없음 |
| \slleadingN | 문단 줄간격 (NSParagraphStyle lineSpacing 메소드) | 줄간격 단위 트윕, 기본값 0. |
| \slmaximumN | 최대 줄 높이 (NSParagraphStyle maximumLineHeight 메소드), \sl과 함께 쓰이며 필요에 따라 \slmult도 함께 쓰임. | 최대 줄 높이 단위 트윕. 기본값은 0, 최대값이 없음을 의미. |
| \slminimumN | 최소 줄 높이(NSParagraphStyle minimumLineHeight 메소드), \sl과 함께 쓰이며 필요에 따라 \slmult도 함께 쓰임 | 최소 줄 높이 단위 트윕. 기본값 0. |
Table 4는 문서 속성에 대한 애플의 RTF 확장 목록
Table 4 Document attribute RTF extensions
| RTF Sequence | Description | Parameter(s) |
|---|---|---|
| \readonlydocN | 읽기전용 문서. 파일 시스템 권한이나 소유권과 상관 없음. 뷰어나 에디터에서 기능이 지원된다면, 문서가 읽기 전용으로 사용자에게 보여져야하는 것을 나타냄. | 0 = 읽기 전용 아님. 1 = 읽기 전용. 기본값은 0. |
| \cocoartfN | Cocoa RTF-writer 버전. Apple이 해당 문서를 작성하는데 사용된 RTF writer 버전을 지정하는 숫자. | 0 = Cocoa writer 아님, 1 = NextStep, 40 = OpenStep, 100 = Mac OS X 10.0, 102 = 10.2 (미래의 버전이 숫자가 증가한다는 사실 외에는 숫자가 어떻게 변할지 가정하지 말 것) 기본 값은 0, Mac OS X 이전의 문서들을 알아내는데 유추할 수 있음 |
| \viewhN \viewwN | 문서를 표시하는데 사용되는 디스플레이 영역(윈도나 뷰 크기 아님)의 크기 | 트윕으로 표시된 디스플레이 영역. 기본값은 지정되지 않음. |
| < Previous Page | Next Page > |
| 번역자 | 사용자:Idiel |
| 원본문서링크 | http://developer.apple.com/documentation/Cocoa/Conceptual/AttributedStrings/Tasks/RTFAndAttrStrings.html (Last Updated - 2007-06-04) |




