국제 언어 환경 설명서

mp 인쇄 필터 강화 개요

mp 인쇄 필터가 Solaris 9 릴리스에서 강화됩니다. 최신 mp 는 로켈의 출력 파일을 만드는 세 개의 다른 모드에서 내부적으로 작동하여 국제 텍스트를 인쇄합니다.사용 가능한 모드는 다음과 같습니다.

다음 절은 특정 인쇄 방법을 사용하는 시기와 이러한 인쇄 방법에 대하여 mp가 어떤 구성 및 지원 파일을 사용하는지 설명합니다.

로켈 특정 구성 파일 mp.conf와 함께 mp 사용하기

만약 -D-P가 명령줄에서 주어지지 않았고, prolog.ps 파일이 /usr/openwin/lib/locale/$LANG/print 또는 /usr/lib/lp/locale/$LANG/mp에도 없다면 로켈 특정 글꼴 구성 파일인 mp.conf를 기본적으로 사용합니다. prolog.ps 파일은 파일의 포스트스크립트 내장 글꼴을 사용하여 mp를 인쇄하게 합니다. prolog.ps 가 로켈이 존재하더라도 -M 옵션을 사용하면 prolog.ps 파일이 무시되고 대신 mp.conf 파일이 사용됩니다.

이 방법은 /usr/lib/lp/locale/$LANG/mp/mp.conf 글꼴 구성 파일을 사용합니다. 대체 글꼴을 사용해야 하는 경우를 제외하고 이 파일을 변경하지 않아도 됩니다. 이 파일은 트루타입, 유형 1 또는pcf 글꼴로 구성될 수 있습니다. /usr/lib/lp/locale/C/는 다음 메소드는 물론 이 인쇄 방법에 공통적인 .ps 인쇄 페이지 레이아웃 파일을 포함합니다. 파일을 사용자 정의하는 방법에 대한 설명은 기존 프롤로그 파일 사용자 정의 및 새 프롤로그 파일 추가하기에서 제공됩니다.

로켈 특정 포스트스크립트 프롤로그 파일과 함께 mp 사용하기

만약 -D 또는 -P가 명령줄에서 주어지지 않았고, /usr/openwin/lib/locale/$LANG/print/prolog.ps가 존재하면 prolog.ps 파일이 출력을 위해 미리 결정됩니다. .ps 프롤로그 페이지의 인쇄 스타일에 따라 레이아웃 파일도 출력을 위해 미리 결정됩니다.

이 인쇄 방법은 포스트스크립트 글꼴 파일만 사용합니다. prolog.ps 파일의 사용자 정의는 Xprt(X 인쇄 서버) 클라이언트로 mp 사용하기에서 설명됩니다.

Xprt(X 인쇄 서버) 클라이언트로 mp 사용하기

이 지원은 mp가 X 인쇄 서버가 지원하는 네트워크에 연결된 모든 프린터에 대한 출력을 인쇄할 수 있도록 합니다. 포스트스크립트와 많은 PLC 버전도 이 명령으로 지원됩니다.

-D 또는 -P 명령 옵션이 사용되고 XPDISPLAY 변수가 환경에 설정되어 있지 않으면 인쇄 서버 시작 스크립트가 클라이언트가 실행 중인 컴퓨터에서 포트 2100로 Xprt 서버를 시작합니다. 이 스크립트는 또한 mp가 완료된 후 인쇄 서버를 종료합니다. XPDISPLAY가 설정되면 mp 클라이언트는 XPDISPLAY에서 실행되는 인쇄 서버에 접속하려 합니다. 이 경우 서버가 실행 중이 아니면 서버를 시작하려는 시도가 이루어지지 않습니다.

/usr/lib/lp/locale/C/mp 디렉토리는 Xprt 클라이언트로 작동하는 mp에 대한 .xpr 인쇄 페이지 레이아웃 파일을 포함합니다. 이들은 300dpi 프린터를 위해 작성된 예제 파일입니다. 대상 프린터가 다른 dpi 값을 가지면 dpi 값은 자동으로 대상 프린터의 해상도로 변환됩니다.

구성 파일의 지역화

구성 파일은 글꼴 항목 또는 글꼴 그룹 항목을 추가 또는 변경하는 유연성을 제공합니다.

시스템 기본 구성 파일 /usr/lib/lp/locale/$LANG/mp/mp.conf , 여기서 $LANG은 인쇄가 이루어지는 로켈의 로켈 환경 변수입니다. 사용자는 -u config.file path 옵션으로 개인 구성 파일을 지정하여 사용할 수 있습니다.

호환용 문자로 인코딩된 슬러 또는 변수 그림 문자를 표현 형식이라고 합니다. mp.conf 파일은 로켈의 코드 포인트를 그 코드 포인트를 인쇄하는데 사용되는 글꼴의 인코딩된 표현 형식으로 매핑하는데 주로 사용됩니다.

중간 코드 포인트는 넓은 문자이거나 이식 가능 레이아웃 서비스(PLS) 레이어의 출력일 수 있습니다. 복잡한 텍스트 레이아웃 인쇄를 위해서는 중간 코드 포인트가 PLS 출력이어야 합니다. mp(1)이 생성한 기본 중간 코드는 PLS 출력입니다.

현재 지원되는 글꼴 형식은 PCF(Portable Compiled Format), TrueType 및 Type1 형식입니다. 시스템 상주 및 프린터 상주 Type1 글꼴이 모두 지원됩니다. mp.conf 구성 파일의 형식과 내용에 대하여 다음을 기억하십시오.

mp.conf 파일의 다른 부분은 다음을 포함합니다.

글꼴 별명 짓기

mp.conf 파일의 글꼴 별명 짓기 부분은 인쇄에 사용되는 각 글꼴의 별명을 정의하는데 사용됩니다. 이 절의 각 행은 다음과 같은 형식입니다.

FontNameAlias 글꼴-별명-이름 글꼴-유형 글꼴-경로 			
글꼴-별명-이름

글꼴 이름 별명 짓기의 일반적인 규약은 글꼴의 인코딩/스크립트 Roman, Bold, Italic 또는 BoldItalic (R, B, I 또는 BI)인지를 나타내는 문자가 뒤에 오도록 지정하는 것입니다.

예를 들어, /usr/openwin/lib/X11/fonts/75dpi/courR18.pcf.Z, 이것은 iso88591 로마 글꼴이기 때문에 별명 iso88591R이 주어질 수 있습니다.

글꼴-유형

.pcf 글꼴에 대하여 PCF, Adobe Type1 글꼴에 대하여 Type1, TrueType 글꼴에 대하여 TrueType을 지정합니다. 이러한 세 가지 글꼴 종류만 이 mp.config 파일에서 구성될 수 있습니다.

글꼴-경로

글꼴 파일에 절대 경로 이름을 부여합니다. Type1 프린터 상주 글꼴에 대해서는 Helvetica와 같은 글꼴 이름을 지정합니다.

예를 들어,

FontNameAlias   prnHelveticaR   Type1   Helvetica

글꼴 그룹 정의

동일한 유형의 글꼴을 조합하여 글꼴 그룹을 형성할 수 있습니다. 글꼴 그룹의 형식은 다음과 같습니다.

키워드

FontGroup

fontgroupname

글꼴의 그룹 이름

GroupType

글꼴 유형동일한 유형의 글꼴(PCF, Type1, TrueType)에 대해서만 글꼴 그룹을 만드십시오.

Roman

글꼴 그룹의 로마 글꼴 이름

Bold

글꼴 그룹의 굵은체 글꼴 이름

Italic

글꼴 그룹의 기울임꼴 글꼴 이름

BoldItalic

글꼴 그룹의 굵은 기울임 글꼴 이름.

그룹을 만들려면 로마 글꼴 항목만 필요합니다. Bold, Italic 및 BoldItalic 글꼴은 선택적입니다. 다른 유형의 글꼴은 예를 들어, 우편/뉴스 기사의 헤더 행을 표시하는데 사용됩니다. 로마 글꼴만 정의되면 다른 글꼴 대신 사용됩니다.

매핑 부분

mp.conf 파일의 매핑 부분은 로켈에서 중간 코드 범위를 글꼴 그룹에 매핑합니다. 이 부분의 각 행은 다음과 같은 형식입니다.

키워드

MapCode2글꼴.

range_start

0x로 시작되는 4바이트 16진수 값. 하나 이상의 글꼴 그룹에 매핑되는 코드 범위의 시작을 나타냅니다.

range_end

매핑될 코드 범위의 끝을 나타냅니다. 단일 중간 코드 포인트가 대상 글꼴에 매핑될 때는 '-' 값만 가능합니다.

그룹

표현 형식이 인쇄될 Type1, PCF 또는 TrueType 글꼴 그룹.

연관 부분

mp.conf 파일의 연관 부분은 각 글꼴을 글꼴 인코딩의 표현 형식에 중간 코드 포인트를 매핑하는 공유 객체와 연관시킵니다. 이 부분의 각 행은 다음과 같은 형식입니다.

키워드

CnvCode2Font.

글꼴 별명

글꼴에 정의된 별명

매핑 함수

중간 코드를 받아들이고 글꼴 인코딩의 표현 형식을 반환하면 이것은 그림 문자 색인을 얻고 그림 문자를 그리는 데 사용됩니다.

파일 경로 매핑 함수

매핑 기능을 포함하는 .so 파일 이름 dumpcs를 사용하여 EUC 로켈의 중간 코드 세트를 찾을 수 있습니다.


주 –

mp(1)이 사용하는 현재 트루타입 엔진은 형식 4와 PlatformID 3 cmap만 다룰 수 있습니다. 즉, Microsoft .ttf 파일만 구성할 수 있습니다. 추가로, 문자 맵 인코딩인 트루타입 글꼴 엔진이 제대로 작동하기 위해 유니코드 또는 기호여야 합니다. Solaris 환경의 .ttf 글꼴 대부분은 이러한 제약을 준수하기 때문에 mp.conf 파일 내에서 Solaris 소프트웨어의 모든 트루타입 글꼴을 매핑할 수 있습니다.


PCF type1 X 논리적 글꼴 설명(XLFD)에 해당하는 글꼴 매핑을 위해 공유 객체를 만들면 중간 코드 범위를 XLFD가 지정하는 인코딩으로 매핑하는 공유 객체를 만드십시오. 예를 들어, 다음과 같습니다.

-monotype-arial-bold-r-normal-bitmap-10-100-75-75-p-54-iso8859-8

해당 PCF 글꼴은 다음과 같습니다.

/usr/openwin/lib/locale/iso_8859_8/X11/fonts/75dpi/ariabd10.pcf.Z

이 글꼴은 isoISO 8859-8로 인코딩되므로 공유 객체는 중간 코드와 해당 ISO 8859-8 코드 포인트 사이를 매핑해야 합니다.

XLFD가 있는 트루타입 글꼴의 경우

-monotype-arial-medium-r-normal--0-0-0-0-p-0-iso8859-8

해당 글꼴은 다음과 같습니다.

/usr/openwin/lib/locale/iso_8859_8/X11/fonts/TrueType/arial__h.ttf

이전 트루타입 글꼴의 cmap 인코딩이 유니코드로 되어 있기 때문에 중간 코드와 유니코드 사이를 매핑해야 합니다. 트루타입 글꼴의 예제에서 헤브루 문자(PLS 레이어가 만듬)에 해당하는 en_US.UTF-8 로켈 예제 중간 코드가 0xe50000e9라고 가정합니다. 글꼴이 유니코드로 인코딩되기 때문에 0xe50000e9를 전달할 때 출력이 유니코드의 표현 형식에 해당하는 방식으로 해당 .so 모듈 내에서 함수를 설계하십시오. 현재 예제는 0x000005d9입니다.

매핑 함수에 대한 함수 프로토타입은 다음과 같아야 합니다.

unsigned int function(unsigned int inter_code_pt)

다음은 mp.conf에서 사용할 수 있는 선택적 키워드/값 쌍입니다.

PresentationForm        WC/PLSOutput

기본값은 PLSOutput입니다. 사용자가 WC를 지정하면 생성되는 중간 코드는 넓은 문자입니다. CTL 인쇄의 경우 이 기본값이 사용되어야 합니다.

로켈이 비CTL 로켈이고 키보드 값 PLSOutput을 가지면 해당 값은 무시되고 대신 mp(1)이 넓은 문자 코드를 생성합니다.

로켈이 CTL을 지원하는 경우 다음 표에 나열된 선택적 키워드/값 쌍을 사용할 수 있습니다. 이러한 변수는 테이블의 중간 열에 주어진 모든 가능한 값을 가정할 수 있습니다.

표 7–1 선택적 키워드/값 쌍

선택적 키워드 

선택적 값 

기본값 

방향

ORIENTATION_LTR/

ORIENTATION_RTL/

ORIENTATION_CONTEXTUAL

ORIENTATION_LTR

숫자

NUMERALS_NOMINAL/

NUMERALS_NATIONAL/

NUMERALS_CONTEXTUAL

NUMERALS_NOMINAL

TextShaping

TEXT_SHAPED/

TEXT_NOMINAL/

TEXT_SHFORM1/

TEXT_SHFORM2/

TEXT_SHFORM3/

TEXT_SHFORM4

TEXT_SHAPED

프린터 상주 글꼴 추가하기

다음 예제는 구성 파일에 새 PCF, TrueType 또는 Type1 프린터 상주 글꼴을 추가할 때 따라야 하는 단계를 보여줍니다.

범위 0x00000021 - 0x0000007f에서 문자를 표시하기 위한 글꼴을 현재 구성된 PCF 글꼴 대신 트루타입 글꼴로 바꿉니다.

새 글꼴을 추가하기 전에 다음과 같이 현재 구성된 글꼴에 해당하는 구성 파일에서 다양한 구성 요소를 찾으십시오.

FontNameAlias iso88591R  PCF  /usr/openwin/lib/X11/fonts/75dpi/courR18PCF.Z
FontNameAlias iso88591B  PCF  /usr/openwin/lib/X11/fonts/75dpi/courB18PCF.Z
.
.
.
FontGroup       iso88591         PCF       iso88591R iso88591B
.
.
.
MapCode2Font    0x00000020      0x0000007f      iso88591
.
.
.
CnvCode2Font iso88591R _xuiso88591 /usr/lib/lp/locale/$LANG/mp/xuiso88591.so
CnvCode2Font iso88591B _xuiso88591 /usr/lib/lp/locale/$LANG/mp/xuiso88591.so

en_US.UTF-8 로켈에서 매핑을 수행하기 위한 후보로 /usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf를 선택했다고 가정합니다. 이것은 .so 모듈 내의 매핑 함수에서 유니코드 문자 매핑된 트루타입 글꼴 파일이기 때문에 받는 ucs-2 코드 포인트를 직접 반환하는 함수만 가지면 됩니다.

unsigned short _ttfjis0201(unsigned short ucs2) {
                 return(ucs2);
         }

이것을 ttfjis0201.c 파일에 저장하십시오. 다음과 같이 공유 객체를 만드십시오.

cc -G -Kpic -o ttfjis0201.so ttfjis0201.c

/usr/openwin/lib/locale/ja/X11/fonts/75dpi/gotmrk20.pcf.Z 와 같은 PCF 파일을 매핑하고 있다면 /usr/openwin/lib/locale/ja/X11/fonts/75dpi/ 디렉토리에서 fonts.dir 파일을 찾으십시오. 다음와 같은 XLFD에 해당하는 인코딩에 익숙해 지십시오.

-sun-gothic-medium-r-normal--22-200-75-75-c-100-jisx0201.1976-0

jisx0201은 인코딩이기 문에 ucs-2에서 jisx0201로 매핑되는 공유 객체를 준비하십시오. .so 모듈을 만드는 매핑 테이블을 얻어야 합니다(이미 준비되지 않은 경우). 유니코드 로켈의 경우 ftp.unicode.org/pub/MAPPINGS/ 하에서 많은 문자 세트와 유니코드의 매핑을 찾으십시오. xu2jis0201.c 파일을 작성하기 위해 다음 매핑(1)(1)을 따르십시오.

 unsigned short _xu2jis0201(unsigned short ucs2) {
                         if(ucs2>= 0x20 && ucs2 <= 0x7d )
                                 return (ucs2);
                         if(ucs2==0x203e)
                                 return (0x7e);
                         if(ucs2>= 0xff61 && ucs2 <= 0xff9f)
                                 return (ucs2 - 0xff60 + 0xa0);
                        return(0);
                 }

매핑 파일을 작성할 때 모든 UCS-2를 jisx0201 케이스에 포함시키십시오.

cc  -G -o xu2jis0201.so xu2jis0201.c

공유 객체 파일 작성

이 예제에서 공유 객체 파일을 작성합니다.

다음 행을 mp.conf의 해당 부분에 추가하여 이 글꼴을 추가합니다. 다음 예제는 트루타입 글꼴을 추가하는 방법을 보여줍니다. PCF 글꼴은 트루타입 대신 PCF에 대한 키워드를 변경하는 것을 제외하고 동일한 패턴을 따릅니다.

FontNameAlias   jis0201R TrueType /home/fn/HG-Minchol.ttf
FontGroup     jis0201 TrueType jis0201R
MapCode2Font  0x0020 	0x007f  jis0201
CnvCode2Font   jis0201R 	 _ttfjis0201 <.so path>

여기서 .so 경로는 xu2jis0201.so 파일을 가리킵니다.

변경된 mp.conf 파일로 mp(1)을 호출하면 범위 0x0020-0x007f가 새 글꼴로 인쇄됩니다. 다른 일본어 문자 범위도 동일하게 매핑합니다.so 파일, 예를 들어, 범위 0x0000FF61 0x0000FF9F입니다.

역방향 호환성을 유지하려면 /usr/openwin/lib/locale/$LANG/print/prolog.ps 파일이 현재 로켈에서 출력을 만드는 데 사용됩니다. 현재 로켈에서 $LANG은 로켈 구성 요소 중 하나입니다. 그러한 상황에서 구성 파일 체계는 사용되지 않습니다

예제 mp.conf 파일인 /usr/lib/lp/locale/en_US.UTF-8/mp/mp.conf를 참조하십시오.