國際語言環境指南

新增及自訂 prolog 檔案

prolog 檔案可以區分為兩個主要種類:

PostScript 檔案自訂

PostScript 檔案縮減為下列種類:

語言環境相依 prolog 檔案

prolog.ps 檔案的目的是設定非一般的字型。應用程式使用這些預先定義的 PostScript 字型名稱來列印。針對「桌面設定行事曆」管理員和 mpprolog 檔案至少必須定義下列字型名稱:

以下範例將使用這些字型來列印指定的特定本土字元集:

100 100 moveto
/LC_Times-Roman findfont 24 scale font setfont
(Any text string in your locale) show 

Solaris 本土化工具包為日文環境提供 prolog.ps 範例檔案。此外,您可以在 /usr/openwin/lib/locale/ja/print/ 目錄中找到這個檔案。

下列範例將顯示如何在現有的 prolog.ps 檔案中增加或變更複合字型。

% (Foo-Fine) makecodeset12 (Base-Font) makeEUCfont %

例如,您可以定義名為 LC_Base-Font 的複合字型。LC_Base-Font 可能是 Foo-Fine 的複合字型,其中包含語言環境字元集和 Base-Font。新增或變更字型並不需要深入瞭解 PostScript 程式設計的知識。

研讀範例版本是建立 prolog.ps 檔案的最佳方法。在 prolog.ps 範例中,必須寫入兩個常式:makecodeset12makeEUCfontmakecodeset12 常式會設定本機字型編碼方式的資訊。此常式可能因語言環境而異。makeEUCfont 常式會合併基本字型和語言環境字型來形成複合字型。prolog 檔案的建立者應該擁有良好的 PostScript 知識,以便寫入 makecodeset12makeEUCfont

prolog.ps 檔案支援僅保留供向後相容性使用。請勿為了產生語言環境的列印輸出而建立新的 prolog.ps 檔案。請使用 mp.conf 做為替代。

prolog.ps 檔案的路徑是

/usr/openwin/lib/locale/$LANG/print/prolog.ps

共用的 PostScript prolog 檔案

共用的 prolog 檔案是 mp.common.ps

每個其他頁面版面配置 prolog 檔案都需要包含此檔案。

mp.common.ps 檔案位於 /usr/lib/lp/locale/C/mp/ 目錄中。這個檔案包含一個 PostScript 常式,此常式可將字型從標準編碼重新編碼為 ISO 8859-1 編碼。可呼叫列印版面配置 prolog 檔案中的 .reencodeISO 常式來變更字型的編碼。通常此 prolog 檔案不需要任何自訂。若是您建立屬於自己的 prolog 檔案,請將環境變數 MP_PROLOGUE 設定為指向包含修改後 prolog 檔案的目錄。

列印版面配置 prolog 檔案

列印版面配置 prolog 檔案和 mp.*.ps 檔案,都包含控制列印頁面版面配置的常式。除了以使用者名稱、列印日期以及頁碼來給定列印頁面的頁首和頁尾之外,這些 prolog 檔案還可以提供其他的資訊。例如,prolog 檔案可給定有效的列印區域大小以及列印的橫向和直向模式。

列印版面配置 prolog 檔案是:

需要在每一個 prolog 檔案中定義標準函式集。當起始新的列印頁面、列印頁面結束或新的一行結束時,即呼叫這些函式。這些函式的執行定義了列印輸出的列印屬性。

下列 PostScript 變數是由 mp 二進位檔在執行時間定義的。所有的列印版面配置檔案皆可以使用這些變數來列印動態資訊,像是 user name subject 以及 print time。從變數取得的這項資訊通常會出現在列印頁面的頁首或頁尾。

User

執行 mp 的使用者名稱,從系統 passwd 檔案中取得。

MailFor

變數是用來保留要列印文章的類型名稱。此變數的可能值為:

  • 清單針對 - 當輸入為文字檔案時

  • 郵件針對 - 當輸入為郵件檔案時

  • 文章起始 - 當輸入為來自新聞群組的文章時

Subject

從郵件與新聞標頭處取得的主題。您可以使用 - s 選項,以強制加入主題至郵件或新聞檔案中,也可以加入至一般的文字檔案。

Timenow

出現在頁首或頁尾中的列印時間。此資訊是從 localtime() 函式取得。

在列印版面配置 prolog 檔案中執行下列的函式。這些函式皆可以使用子函式。

endpage

用法:page_number endpage

當到達列印頁面的底部時即呼叫。這個函式會復原頁面的圖形內容並送出 showpage。在部分 prolog 檔案中,頁首和頁尾資訊是以逐頁模式顯示,而非以逐欄模式顯示。您可以執行此函式來呼叫可顯示頁首和頁尾灰階菱形的子函式。

newpage

用法:page_number newpage

當新頁面開始時會執行常式或指令。這些常式所具備的功能包括設定橫向列印模式、儲存列印圖形內容以及翻譯頁面座標。

endcol

用法:page_number col_number endcol

此函式是用來顯示頁首和頁尾資訊、移動到新的列印位置等等。

若要增加新的列印版面配置 prolog 檔案,您需要在列印版面配置 prolog 檔案中明確定義下列變數。

NumCols

列印頁面的欄數。預設值為 2。

PrintWidth

以英吋計算的列印區域寬度。預設值為 6。

PrintHeight

列印區域的高度 (英吋)。預設值為 9。

.xpr 檔案

這些檔案的預設儲存位置是 /usr/lib/lp/locale/C/mp/.xpr 檔案相對應至每一個 PostScript prolog 版面配置檔案,除了 mp.common.ps. 以外。您可以藉由定義 MP_PROLOGUE 環境變數,來定義替代的 prolog 目錄。

這些檔案以關鍵字/值對的方式作業。以 # 起始的行將視為註釋。除非明確敘述否則以空白隔開不同的記號。每個 .xpr 檔案的三個主要區段,乃是藉由下列關鍵字對當做界限:

某些關鍵字/值對可以用在這三個區域中。下列章節將針對每個區域作說明。

STARTCOMMON/ENDCOMMON 關鍵字

所有出現在 STARTCOMMON 關鍵字之後並在 ENDCOMMON 關鍵字之前的關鍵字/值對,定義了列印頁面的一般屬性。關鍵字的數個不同有效值是由斜線 (/) 區分開來。

ORIENTATION 0/1

0 表示以縱向列印,1 表示以橫向列印。

PAGELENGTH unsigned-integer

表示每一個邏輯頁面行數的值。

LINELENGTH unsigned-integer

表示每行單一欄位字元數的值。

NUMCOLS unsigned-integer

每一實體頁面的邏輯頁面數。

HDNGFONTSIZE unsigned-integer

以十分之一點計算的標題字型點大小。

BODYFONTSIZE unsigned-integer

以十分之一點計算的內文字型點大小 。

PROLOGDPI unsigned-integer

目前的 .xpr 檔案建立時所使用的每英吋點數標度。

YTEXTBOUNDARY unsigned-integer

此 y 座標可建立頁面或邏輯頁面 (欄位) 中的文字列印邊界。此邊界是用來當做額外的檢查,以便檢視文字列印是否發生在預期的區域內。當您從相對應的字型中取得字元高度資訊時可能會出現錯誤,因此在進行「複合文字版面配置」和 EUC 列印時將會需要此邊界。

STARTTEXT unsigned-integerunsigned-integer

當真實文字從實體頁面中的第一頁邏輯頁面開始列印時,x/y 點為十分之一點。

PAGESTRING 0/1

1 表示需要將頁面字串附加在標題中的頁面編號之前。

0 表示只顯示頁面編號。

EXTRAHDNGFONT font string 1, font string 2, ... font string n

字型字串是 X 邏輯字型描述。將關鍵字 EXTRAHDNGFONT 從逗號分隔字型名稱清單分隔開來的記號是引號 " 字元,不是空格或定位字元。在列印標題時,這些字型的優先順序將高於內建的字型。通常,EXTRABODYFONT 是用來指定配置在 /usr/openwin/server/etc/XpConfig/C/print/models/<model name>/fonts 目錄中的印表機內建字型。

fonts.dir 檔案包含印表機內建字型的 XLFD。

.xpr 檔案中,通常會指定字型,如下列範例所示:

 "-monotype-Gill Sans-Regular-r-normal- -*-%d-*-*-p-0-iso8859-2" 

若出現 %d,則將由mp 取代為 .xpr 檔案中目前的標題字型點大小。x 解析度和 y 解析度是由 * 指定的。如果可以的話,將平均寬度欄位設定為 0,以指示選擇可縮放字型。您也可以提供更多指定的字型名稱。

EXTRABODYFONT font string 1, font string 2, ... font string n

除了這些字型是用來列印頁面內文之外,其餘與 EXTRAHDNGFONT 相同。

XDISPLACEMENT signed/unsigned int

針對頁面內容在 x 軸方向的移位,提供 x 軸座標位移以套用至頁面。此位移可以是 +ve 或 -ve 值。

YDISPLACEMENT signed/unsigned int

除了 y 軸中發生移位之外,其餘與 x 置換相同。

當您處理一些頁邊寬度並不符合標準的印表機,而需要移動頁面中的列印內容時,這兩個關鍵字將非常有用。

STARTPAGE/ENDPAGE 關鍵字

此區段中的關鍵字值對是以 STARTPAGE 以及 ENDPAGE 關鍵字當做邊界。此區段包含欲套用至實體頁面的繪圖與標題資訊。一張實體頁面可包含許多的邏輯頁面,但包含在這些關鍵字中的所有繪圖常式只能套用至實體頁面一次。

有效的繪圖實體為 LINEARCXDrawLine()XDrawArc() 函式將以這些關鍵字的值執行。

此區段中的維度是以 PROLOGDPI 單元做對映。角是以度計算。

LINE x1 y1 x2 y2

x/y 無符號座標可定義一對用來連接到線上的點。

ARC x y width height angle1 angle2

x 軸與 y 軸皆為表示 arc 原點的無符號整數。寬度與高度為表示 arc 寬度與高度的無符號整數。

USERSTRINGPOS x y

無符號座標表示使用者資訊列印在標題的位置。

TIMESTRINGPOS x y

無符號座標表示列印次數在標題的位置。

PAGESTRINGPOS x y

無符號座標表示列印每個列印頁面的頁面字串位置。

SUBJECTSTRINGPOS x y

無符號座標表示頁面中列印主題的位置。

STARTFORCEDPAGE/ENDFORCEDPAGE 區段

當指定 -n 選項予 mp 時,所有 STARTPAGE/ENDPAGE 區段中指定的裝飾皆不列印。然而,即使指定了 -n 選項,也會列印所有包含在 STARTFORCEDPAGE/ENDFORCEDPAGE 區段中的內容。

STARTCOLUMN/ENDCOLUMN 區段

所有關鍵字皆與STARTPAGE/ENDPAGE 關鍵字中說明的相同,除了此區段中的項目是套用 NUMCOLS 次數至實體頁面上。如果 NUMCOLS 為 3,則實體頁面的可列印區域會分割成三部份和線、弧或每個頁面出現三次的標題裝飾。

STARTFORCEDCOLUMN/ENDFORCEDCOLUMN 區段

-n 選項給定為 mp 時,所有在 STARTCOLUMN/ENDCOLUMN 區段中所給定的裝飾都不會列印。然而,即使指定了 -n 選項,也會列印所有包含在 STARTFORCEDCOLUMN/ENDFORCEDCOLUMN 區段中的內容。

建立新的 .xpr 檔案

當建立新的 .xpr prolog 檔案時,您只能指定預設值以外的值。

如果這些值不是在 .xpr 檔案中為 STARTCOMMON/ENDCOMMON 區段所指定的,則下表將列出不同關鍵字的 mp 程式預設值。

表 7–2 STARTCOMMON/ENDCOMMON 關鍵字值

關鍵字 

值 

ORIENTATION

0

PAGELENGTH

60

LINELENGTH

80

YTEXTBOUNDARY

3005

NUMCOLS

01

HDNGFONTSIZE

120

PROLOGDPI

300

STARTTEXT

135 280

PAGESTRING

0

STARTPAGE/ENDPAGESTARTCOLUMN/ENDCOLUMN 做為邊界的其他兩個區段不需要預設值。

若要建立不含裝飾的頁面,請以直向格式在每個實體頁面上使用四個邏輯頁面。指定下列的區段以及值:

當您建立不含裝飾的頁面時,不需要指定下列兩個區段:

如果您並未在列印頁面上放置裝飾,則不需要這些參數。所有座標的預設值都是 300 dpi,除非您沒有指定 PROLOGDPI 關鍵字。若是目標印表機的解析度不同,.xpr 檔案將藉由程式按比例縮放以符合該解析度。

在建立 .xpr 檔案之前,您必須知道紙張的大小。針對 U.S. 紙張,8.5x11 英吋,針對解析度 300 dpi 的印表機,2550X3300 為整體大小。大多數的印表機無法從紙張的最左上角開始列印。相反的,部分邊界空格是圍繞著實體頁面而指定的。即使您嘗試從 0,0 開始列印,實際的列印動作並不會從頁面的最左上角開始。當您建立新的 .xpr 檔案時,請考慮此限制。