內嵌字型
內嵌字型是將檔與它所包含的字型組合成檔案以傳輸至另一部計算機的技術。 內嵌字型可確保傳輸檔案中指定的字型會出現在接收檔案的計算機上。 不過,並非所有字型都可以從計算機移至計算機,因為大部分字型一次只能授權一部計算機。 只有 TrueType 和 OpenType 字型可以內嵌。
只有在使用者要求時,應用程式才應該在檔案中內嵌字型。 應用程式無法與包含內嵌字型的檔一起散發,應用程式本身也不能包含內嵌字型。 每當應用程式以任何格式散發字型時,都必須認可字型擁有者的專屬權利。
可能違反字型廠商的專屬權利或使用者許可協定,以內嵌不允許內嵌的任何字型,或無法觀察下列內嵌字型的指導方針。 字型授權只能提供在目的地計算機上安裝和使用字型的讀取/寫入許可權。 或者授權可能會授與唯讀許可權。 唯讀許可權可讓目的地電腦檢視和列印檔(但未修改) ;具有唯讀內嵌字型的檔本身是唯讀的。 只讀內嵌字型可能不會從檔取消連結,而且安裝在目的地計算機上。
應用程式可以呼叫 GetOutlineTextMetrics 函式,並檢查 OUTLINETEXTMETRIC 結構的 otmfsType 成員,以判斷授權狀態。 如果已設定 otmfsType 位 1,則不允許字型進行內嵌。 如果位 1 是清楚的,則可以內嵌字型。 如果已設定位 2,則內嵌是唯讀的。
若要內嵌 TrueType 字型,應用程式可以使用 GetFontData 函式來讀取字型檔案。 將 dwTable 和 dwOff set GetFontData 的參數設定為 0L,並將 cbData 參數設定為 1L,可確保應用程式從頭讀取整個字型檔案。
根據字元寬度和字型數據所在的位置,有數個函式可用來內嵌 OpenType 字型。 若要內嵌位於裝置內容中的 OpenType Unicode 字型,應用程式可以使用 TTEmbedFont。 若要內嵌位於裝置內容中的 OpenType UCS-4 字型,應用程式可以使用 TTEmbedFontEx。 若要內嵌位於字型檔案中的 OpenType Unicode 字型,應用程式可以使用 TTEmbedFontFromFile。 如需 OpenType 字型內嵌的其他資訊,請參閱 字型內嵌參考。
應用程式擷取字型數據之後,可以使用任何適用的格式,以檔儲存數據。 大部分的應用程式都會在檔中建置字型目錄,列出內嵌字型,以及內嵌是讀取/寫入還是只讀。 應用程式可以使用 otmpStyleName 和 otmFamilyName outlineTEXTMETRIC結構的成員來識別字型。
如果為內嵌字型設定只讀位,應用程式必須先加密字型數據,才能將它與檔一起儲存。 加密方法不需要複雜;例如,使用 XOR 運算子結合字型資料與應用程式定義的常數就足夠且快速。