mp列印過濾器在 Solaris 9 版本中已進行增強。最新的 mp 可在三種不同的模式中以內部方式進行作業,在語言環境中產生輸出檔案以列印國際文字。可用的模式為:
mp使用指定語言環境的字型配置檔 mp.conf 進行作業。
mp使用指定語言環境的 PostScript prolog 檔prolog.ps進行作業。
mp可以 Xprt(X 列印伺服器)用戶端的方式作業。
以下章節說明何時使用特定的列印方法, 以及mp 針對這些列印方法使用哪種配置和支援檔案。
若是沒有在指令行中指定 -D 或 -P選項,此列印方法即為預設值,除非 prolog.ps檔案存在於/usr/openwin/lib/locale/$LANG/print 或是/usr/lib/lp/locale/$LANG/mp目錄中。該prolog.ps檔案強制mp 使用檔案中的 PostScript 內嵌式字型。就算是prolog.ps 存在於語言環境中,使用-M選項會忽略prolog.ps檔,並使用mp.conf檔案 (若存在的話) 做為替代。
此方法使用/usr/lib/lp/locale/$LANG/mp/mp.conf字型配置檔。您不需要變更此檔案除非需要使用替代字型列印。此檔案可以使用 TrueType、Type 1 或來配置。pcf字型。/usr/lib/lp/locale/C/ 包含此列印模式以及下一個方法中常用的 .ps 列印頁面配置檔。 自訂現有的prolog檔案並增加新的 prolog檔案中提供如何自訂這些檔案的說明。
若是指令行中沒有指定 -D或-P選項,並且存在/usr/openwin/lib/locale/$LANG/print/prolog.ps ,那麼prolog.ps檔即前置至輸出。根據 .ps prolog 頁的列印樣式,配置檔亦前置至輸出。
此列印方法只利用 PostScript 字型檔。將 mp 視為 Xprt (X 列印伺服器) 用戶端來使用中說明prolog.ps的檔案自訂。
此支援功能可讓 mp 為所有連接到 X 列印伺服器所支援的印表機來列印輸出。使用此指令也支援 PostScript 以及許多版本的 PCL。
若是使用 -D 或 -P指令選項其中之一,並且在環境中沒有設定XPDISPLAY變數,則列印伺服器啟動程序檔會在用戶端正在執行的機器中,使用埠 2100 啟動 Xprt 伺服器。該程序檔也會在mp完成後終止列印伺服器。若是設定XPDISPLAY,該mp用戶端嘗試聯絡正在XPDISPLAY上執行的列印伺服器。在此狀況中,若是伺服器並沒有執行則不會嘗試啟動之。
該/usr/lib/lp/locale/C/mp目錄包含以 Xprt用戶端方式進行作業的mp .xpr列印頁面配置檔。這些是針對 300 dpi 印表機所建立的範例檔。如果目標印表機有不同的 dpi 值,則此 dpi 值將自動轉換成目標印表機的解析度。
配置檔提供新增或變更字型項目,或字型群組項目的彈性。
系統預設的配置檔/usr/lib/lp/locale/$LANG/mp/mp.conf 中的 $LANG 為列印工作發生的語言環境之變數。使用者可以擁有個人的配置檔,其可以藉由-u config.file path選項來指定。
一個針對相容性而被編碼為字元的 ligature 或變數文字影像稱為表示格式。 mp.conf 檔案主要是用來將語言環境中的中間字碼點,對映至用來列印該字碼點的字型編碼中的表示格式。
中間字碼點可以是寬字元,或是「可攜配置服務 (PLS)」層的輸出。若要進行「複雜文字配置」列印,則中間字碼點必須為 PLS 輸出。由 mp 產生的預設中間字碼 (1) 為 PLS 輸出。
目前支援的字型格式為可攜式編譯格式(PCF)、TrueType 以及 Type1 格式。同時支援系統與印表機內建的 Type 1 字型。請注意下列關於mp.conf配置檔的格式與內容。
每行必須以有效的關鍵字(指令)起始。
關鍵字的引數必須與關鍵字出現在同一行。
以#字元當做起始的行將被視為註釋直到該行結尾。
以0x做為起始的數值引數將解譯為十六進位數。
mp.conf檔案中不同的區段包括:
字型別名
字型群組定義
將語言環境中的中間字碼範圍對映至字型群組
將每個字型與共用物件產生關聯,而該物件會將中間字碼點對映至字型編碼中的表示格式。
mp.conf檔案中的字型別名區段是用來定義每個用於列印字型的別名。此區段中的每一行皆為如下的格式:
FontNameAlias font-alias-name font-type font-path
為字型名稱加入別名的一般慣例是在後方加上表示該字體為羅馬字體、粗體、斜體,或粗斜體的字母 (R、B、I 或 BI),藉以指定字型的編碼/程序檔名稱。
例如,/usr/openwin/lib/X11/fonts/75dpi/courR18.pcf.Z, 因為其是 iso88591 Roman 字型,所以能夠給定的別名為 iso88591R。
指定PCF針對.pcf字型, Type1針對 Adobe Type1 字型,以及TrueType針對 truetype 字型。只有這三種字型能夠在此 mp.config檔案中配置。
針對此處的字型檔案給定絕對路徑名稱。若為 Type1 印表機內建字型,則只需指定字型名稱,例如 Helvetica。
FontNameAlias prnHelveticaR Type1 Helvetica
您可以結合相同類型的字型以構成字型群組。字型群組的格式如下列所示。
FontGroup。
字型的群組名稱。
字型類型。只為相同類型的字型建立字型群組(PCF,Type1,TrueType)。
字型群組中的羅馬字型名稱。
字型群組中的粗體字型名稱。
字型群組中的斜體字型名稱。
字型群組中的粗斜體字型名稱。
針對建立群組,只需要羅馬字型登錄。粗體、斜體以及 粗斜體字型為選擇性的。例如,不同類型的字型是用來顯示郵件/新聞文章的標題行。若是只定義 Roman 字型,則其是用來代替其他字型。
mp.conf 檔案的對映區段從中間程式檔的範圍對映至語言環境中的字型群組。此區段的每一行如以下所示。
MapCode2Font。
A 4–位元十六進制值是以 0x 開頭,表示字碼範圍的起點以對映至一個或多個字型群組。
表示需要對映的字碼範圍結尾。它可以是 '-' 值,其中只有單一中間字碼點對映至目標字型。
將列印的是 Type1、PCF 或 TrueType 字型群組的表示格式。
mp.conf 檔案的關聯區段可讓每個字型與共用物件產生關聯,而該物件會將中間字碼點對映至字型編碼中的表示格式。此區段的每一行如以下所示。
CnvCode2Font。
為字型所定義的別名。
在中間字碼中執行,並傳回字型編碼中的表示格式,可用來依序取得 glyph 索引,及繪製 glyph。
包含對映功能的.so檔案名稱。您可以使用 dumpcs 中的公用程式來尋找 EUC 語言環境的中間字碼集。
目前mp所使用的 TrueType 引擎 (1) 只能處理格式 4 以及 PlatformID 3 cmap。那表示您只能配置 Microsoft .ttf檔案。此外,字元對映編碼必須是 TrueType 字型引擎的 Unicode 或 符號才能正確地作業。由於 Solaris 環境中的大部分 .ttf 字型都遵循這些限制,因此您可以在 mp.conf 檔案中對映 Solaris 軟體的所有 TrueType 字型。
在建立用來對映與 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 字碼點之間對映。
若是 TrueType 字型使用 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
您應該在中間字碼與 Unicode 之間對映,因為上一個 TrueType 字型的 cmap編碼為 Unicode。在這個 TrueType 字型的範例中,假設 en_US.UTF-8 語言環境中與希伯來字元 ( 由 PLS 層所產生) 相對應的中間字碼範例為 0xe50000e9。由於該字型為 Unicode 編碼,因此當您傳送 0xe50000e9 時,其輸出會對應於 Unicode 中的表示格式,您可依此方式設計相對應 .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 |
ORIENTATION_LTR/ ORIENTATION_RTL/ ORIENTATION_CONTEXTUAL |
ORIENTATION_LTR |
Numerals |
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範圍中所顯示的字元,使用 TrueType 字型替代目前的 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
假設您選取/usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf 做為在en_US.UTF-8 語言環境中執行對映的候選者。由於這是一個 Unicode 字元對映的 TrueType 字型檔案,因此在 .so 模組的對映功能中,您只需要一個直接傳回 ucs-2 字碼點的功能。
unsigned short _ttfjis0201(unsigned short ucs2) { return(ucs2); }
將其儲存在 ttfjis0201.c檔案中。建立如下的共用物件。
cc -G -Kpic -o ttfjis0201.so ttfjis0201.c
但若是您正在對映 PCF 檔案,像是/usr/openwin/lib/locale/ja/X11/fonts/75dpi/gotmrk20.pcf.Z ,則請查閱 /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模組的對映表格(若是尚未提供一個表格)。針對 Unicode 語言環境,請從ftp.unicode.org/pub/MAPPINGS/下許多 Unicode 的字元表處尋找對映。遵循這些對映 (1)(1) 以便寫入xu2jis0201.c檔案:
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中相對應的區段以新增此字型。下列範例顯示如何新增 TrueType 字型。PCF 字型將遵循相同的型樣,除非您將關鍵字變更為 PCF 來取代 TrueType。
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為語言環境元件之一。在該種情況下,不使用配置檔機制。
請參考/usr/lib/lp/locale/en_US.UTF-8/mp/mp.conf,其為一個mp.conf範例檔案。