共用方式為


處理複雜腳本

為了提供文字理由,應用程式可以使用兩種方法之一。 為了簡單實作多語系理由,應用程式應該呼叫 ScriptJustify。 它通過考慮 kashida、字間距和字元間距來生成 delta dx 陣列。 為了獲得更複雜的運算,應用程式可以利用其語言知識及 ScriptShapeSCRIPT_VISATTR 陣列中提取的資訊,來生成更新的增量 dx 陣列。

應該在由 uJustification 成員 SCRIPT_VISATTR識別的地方插入對齊空間或 kashida。 執行字元間對齊時,應用程式應該只在以SCRIPT_JUSTIFY_CHARACTER標示的字元之後插入額外的空間。

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

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

注意

圖元文件不支援字形索引。 若要寫入增強型元檔,應用程式應該使用 ExtTextOut 並直接寫入邏輯字元。 使用此機制時,字形生成和佈局不會發生,直到回放文本為止。

 

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

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

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

使用 Uniscribe