自訂字型管理

重要

建議您使用 Microsoft 的 IPP 收件匣類別驅動程式,以及列印支援應用程式 () ,來自定義印表機裝置開發 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 字型計量檔案 一節和 字元翻譯表格檔案 一節中所述。

對於分字型,可以在資源 DLL 中提供字型描述,並使用 GPD 檔案中的字型輸入來指定。 字型描述也可以以 Unidrv 字型格式檔案的形式提供。

如需可下載的 PCL 軟字型,必須提供字型描述,如 Unidrv 字型格式檔案 一節所述。

Unidrv 字型計量檔案

印表機支援的每個裝置字型都代表 Unidrv 字型計量 (.ufm) 檔案。 .ufm 檔案是使用 Unidrv 字型計量結構中所述的結構所建構的二進位檔案。 .ufm 檔案中的第一個結構 是UNIFM_HDR,其中包含檔案其他結構的位移。 下圖顯示 Unidrv 字型計量檔案的配置。

圖表說明 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 建立的字元翻譯檔案,其使用 run-length 編碼 (RLE) 壓縮,且擴展名為 .rle。

Unidrv 字型格式檔案

對於未在 GPD 檔案中使用 字型換 行項指定的字型,必須在 Unidrv 字型格式 (.uff) 檔案中描述字型。 此外,必須使用 .uff 檔案來指定可下載 的 PCL 軟字型。

.uff 檔案是使用下列結構集所建構的二進位檔案:

下圖顯示 Unidrv 字型格式檔案的配置。

圖表說明 Unidrv 字型格式檔案的配置。

Unidrv 字型格式檔案包含 UFF_FILEHEADER 結構,以及一或多個 UFF_FONTDIRECTORYDATA_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 檔案與特定印表機的關聯,安裝軟體必須呼叫 Windows SDK 檔中所述的 SetPrinterData 函式 () ,以在每個印表機的登錄機碼下建立登錄值。 下表列出必須使用的登錄值名稱,並指出每個值的維護者。

登錄值名稱和類型 值定義 維護人員
“ExternalFontFile”

REG_SZ
指定目前已安裝字型之 .uff 檔案的檔名。 字型可以下載或包含在氣氣中。 字型安裝程式
“ExtFontCartFile”

REG_SZ
.uff 檔案的檔名,指定針對 “ExtFontCartNames” 列出的所有字型內含的所有字型。 字型安裝程式
“ExtFontCartNames”

REG_MULTI_SZ
印表機上可能安裝的所有字型名稱。 字型安裝程式
“FontCart”

REG_MULTI_SZ
印表機目前安裝的所有字型印表機名稱。 Unidrv 使用者介面

將字型松子新增至印表機之後,系統管理員必須執行字型安裝程序,負責將字型描述從 “ExtFontCartFile” 所指定的 .uff 檔案複製到 “ExternalFontFile” 所指定的 .uff 檔案中。 同樣地,字型安裝程序必須在移除活頁夾時,從 “ExtFontCartFile” 所指定的 .uff 檔案中移除字型描述。