配置檔提供新增或變更字型項目,或字型群組項目的彈性。
系統預設的配置檔/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範例檔案。