共用方式為


處理複雜字集

若要提供文字理由,應用程式可以使用兩種方法之一。 為了簡單實作多語系理由,應用程式應該呼叫 ScriptJustify。 它會考慮 kashida、interword 間距和字元間距,以產生差異 dx 陣列。 為了取得更複雜的理由,應用程式可以使用自己的語言知識產生更新的差異 dx 陣列,以及SCRIPT_VISATTR陣列中ScriptShape所擷取的資訊。

理由空間或 kashida 應該插入SCRIPT_VISATTR的 uJustification成員所識別的位置。 執行字元間理由時,應用程式應該只在標示為SCRIPT_JUSTIFY_CHARACTER的字元之後插入額外的空間。

應用程式會使用 ScriptXtoCPScriptCPtoX進行插入點和點擊測試。 如需詳細資訊,請參閱 管理插入號放置和點擊測試

若要以與字型無關的方式取得寬度,應用程式會呼叫 ScriptGetLogicalWidths。 藉由將邏輯寬度傳遞至 ScriptApplyLogicalWidth,即使原始字型無法使用,仍可在相同的界限中重新顯示文字區塊,且品質可接受遺失。 它會產生字元寬度的陣列, (進階寬度) 適合傳遞至 ScriptTextOut。 這類記錄和重新套用字型無關的進階寬度資訊,在應用程式定義格式的中繼檔等情況下可能很有用。

注意

中繼檔不支援字元索引。 若要寫入增強型中繼檔,應用程式應該使用 ExtTextOut 並直接寫入邏輯字元。 使用此機制時,字元產生和放置不會發生,直到播放文字為止。

 

若要擷取用於預設、空白、kashida 等特定字元的目前字型,應用程式應該呼叫 ScriptGetFontProperties。 若要判斷所選字型支援執行中的字元,應用程式會呼叫 ScriptGetCMap。 無法使用的字元在字元緩衝區中具有預設字元。 請注意,如果字型使用字元的組合來轉譯字元,而不是單一字元,這個方法就會失敗。 例如,00C9;拉丁大寫字母 EWITH可以使用大寫字母 E 字元和尖尖字元來轉譯。 若要判斷包含這些字碼點之字串的字型支援,應用程式可以呼叫 ScriptShape。 如需詳細資訊,請參閱 使用成形引擎

ScriptCacheGetHeight函式會從字型快取傳回字型的高度。 ScriptGetProperties 提供腳本所編制索引之所有腳本所需的特殊處理資訊。 例如,它包含與腳本相關聯的主要語言、指出腳本是否為數值的資料,以及指出腳本是否為複雜字集的資料。

ScriptGetGlyphABCWidth 會傳回指定字元的 ABC 寬度 ,這可能有助於繪製圖像圖表。 不過,它不應該用於一般複雜的腳本文字格式設定。

使用 Uniscribe