自訂字型管理
重要
新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。
如需詳細資訊,請參閱 新式列印平臺 和 列印支援應用程式設計指南。
針對 PCL 印表機,Unidrv 支援將軟字型下載為位圖或 TrueType 外框。 針對裝置字型,Unidrv 支援 PCL、CAPSL 和 PPDS 印表機命令格式。 針對其他格式,必須在轉譯外掛程式中提供自定義字型管理程序代碼。 可以實作下列一組 IPrintOemUni 方法:
IPrintOemUni::D ownloadFontHeader
用來從 Unidrv 取得軟字型的頁首資訊,然後將資訊下載到印表機。
IPrintOemUni::D ownloadCharGlyph
用來將軟字型的字元字元下載到印表機。
IPrintOemUni::OutputCharStr
用來控制字元的列印。
IPrintOemUni::SendFontCmd
用來修改印表機的裝置字型選取命令,並視需要將它傳送至印表機。
IPrintOemUni::TextOutAsBitmap
用來建立文字字串的點陣圖影像。
IPrintOemUni::TTDownloadMethod
用來指定 Unidrv 在將指定的軟字型傳送至印表機時,應該使用的字元格式。
Unidrv 提供 UNIFONTOBJGetInfo 回呼函式,轉譯外掛程式可以呼叫 以取得字型或圖像資訊。
針對裝置字型,必須提供字型描述,如 Unidrv 字型計量檔案區段和 Glyph 翻譯表格檔案區段中所述。
針對墨盒字型,可以在資源 DLL 中提供字型描述,並使用 GPD 檔案中的字型墨盒專案來指定。 字型描述也可以以 Unidrv 字型格式檔案的形式提供。
若要下載 PCL 軟字型,必須提供字型描述,如 Unidrv 字型格式檔案一節所述。
Unidrv 字型計量檔案
印表機支援的每個裝置字型都代表 Unidrv 字型計量 (.ufm) 檔案。 .ufm 檔案是使用 Unidrv 字型計量結構中所述的結構所建構的二進位檔。 .ufm 檔案中的第一個結構是 UNIFM_HDR,其中包含檔案其他結構的位移。 下圖顯示 Unidrv 字型計量檔案的配置。
Unidrv 也支援 .ifi 檔案,這是針對 Windows NT 4.0 建立的字型計量檔案。
字元翻譯表格檔案
印表機支援的每個裝置字型都代表圖像翻譯表格 (.gtt) 檔案。 .gtt 檔案是使用 Unidrv Glyph 翻譯數據表結構中所述的結構所建構的二進位檔。 .gtt 檔案中的第一個 結構是UNI_GLYPHSETDATA 結構,其中包含檔案其他結構的位移。
下圖顯示圖像翻譯數據表檔案的配置。
在上圖中,UNI_GLYPHSETDATA 結構包含從檔案開頭到第一個 GLYPHRUN 結構、第一個UNI_CODEPAGEINFO結構,以及 MAPTABLE 結構的位移。
Unidrv 也支援針對 Windows NT 4.0 建立的字元翻譯檔案,其使用運行長度編碼 (RLE) 壓縮,且擴展名為 .rle。
Unidrv 字型格式檔案
對於未在 GPD 檔案中使用 字型墨盒專案指定的墨盒 字型,必須以 Unidrv 字型格式 (.uff) 檔案描述字型。 此外,必須使用 .uff 檔案來指定可 下載的 PCL 軟字型。
.uff 檔案是使用下列結構集建構的二進位檔:
Unidrv 字型格式結構,定義 .uff 檔案的內容和結構。
Unidrv 字型計量結構,其會定義每個字型的計量。
Unidrv 字元翻譯表格結構,其會定義字型所使用的字元集。
下圖顯示 Unidrv 字型格式檔案的配置。
Unidrv 字型格式檔案包含UFF_FILEHEADER結構,以及一或多個UFF_FONTDIRECTORY和DATA_HEADER結構組。 每個 DATA_HEADER 結構都與字型數據的區塊相關聯。 UFF_FILEHEADER 結構包含從檔案開頭到第一個 UFF_FONTDIRECTORY 結構的位移。 每個 UFF_FONTDRECTORY 結構都包含從檔案開頭到包含字型數據的DATA_HEADER結構位移。
此外,針對可 下載的 PCL 軟字型,要下載的二進位數據會儲存在 .uff 檔案中。
.uff 檔案建立是廠商提供的字型安裝軟體的責任。 Unidrv 會讀取印表機的 .uff 檔案,以取得字型和圖像資訊。 字型安裝程序應該在新增或刪除字型時修改 .uff 檔案內容。 如需建立字型安裝程序的詳細資訊,請參閱 Unidrv 的自定義字型安裝程式。
所有 .uff 檔案都必須儲存在 %SystemRoot%\System32\Spool\Drivers\Unifont 目錄中。 若要將個別 .uff 檔案與特定印表機產生關聯,安裝軟體必須呼叫 SetPrinterData 函式(如 Windows SDK 檔中所述),才能在每個印表機的登錄機碼下建立登錄值。 下表列出必須使用的登錄值名稱,並指出每個值的維護者。
登錄值名稱和類型 | 值定義 | 維護人員 |
---|---|---|
“ExternalFontFile” REG_SZ |
指定目前已安裝字型之 .uff 檔案的檔名。 字型可以下載或包含在墨水匣中。 | 字型安裝程式 |
“ExtFontCartFile” REG_SZ |
.uff 檔案的檔名,指定針對 “ExtFontCartNames” 列出的所有字型墨盒中包含的所有字型。 | 字型安裝程式 |
“ExtFontCartNames” REG_MULTI_SZ |
印表機上可能安裝之所有字型墨盒的名稱。 | 字型安裝程式 |
“FontCart” REG_MULTI_SZ |
印表機目前安裝之所有字型墨盒的名稱。 | Unidrv 使用者介面 |
將字型墨盒新增至印表機之後,系統管理員必須執行字型安裝程序,負責將 “ExtFontCartFile” 所指定的 .uff 檔案中的字型描述複製到 “ExternalFontFile” 所指定的 .uff 檔案中。 同樣地,字型安裝程序必須在移除墨盒時,從 “ExtFontCartFile” 所指定的 .uff 檔案中移除字型描述。