共用方式為


ScriptJustify 函式 (usp10.h)

建立進階寬度數據表,以允許傳遞至 ScriptTextOut 函式時的文字對齊。

語法

HRESULT ScriptJustify(
  [in]  const SCRIPT_VISATTR *psva,
  [in]  const int            *piAdvance,
  [in]  int                  cGlyphs,
  [in]  int                  iDx,
  [in]  int                  iMinKashida,
  [out] int                  *piJustify
);

參數

[in] psva

陣列的指標,其長度為 cGlyphs,其中包含 SCRIPT_VISATTR 結構。 每個結構都包含要處理之字元的視覺屬性。

[in] piAdvance

從先前呼叫 ScriptPlace 取得的 cGlyphs 所表示長度的進階寬度陣列指標。

[in] cGlyphs

psvapiAdvance 所指示之陣列的字元計數。 此參數也會指出輸出參數 piJustify 的字元計數。

[in] iDx

所需變更的寬度,以像素為單位,其中一個是減少。

[in] iMinKashida

要產生之 kashida 圖像的最小寬度。

[out] piJustify

緩衝區的指標,此函式會擷取長度為 cGlyphs 所表示的數位,其中包含對齊的進階寬度。 對齊寬度有時稱為「單元格寬度」,以區別它們與未合理進階寬度。

傳回值

若成功,即傳回 0。 如果函式未成功,函式會傳回非零 HRESULT 值。 應用程式可以使用 SUCCEEDEDFAILED 宏來測試傳回值。

備註

如需通常呼叫此函式的內容討論,請參閱 使用 Uniscribe 顯示文字

此函式提供多語系理由的簡單實作。 它會建立在線條上每個字元位置所做的調整量。 它會解譯呼叫 ScriptShape 所產生的SCRIPT_VISATTR陣列,並優先於 kashida。 如果沒有 kashida 點可用,此函式會使用字間間距。 如果沒有可用的插字點,它會使用字元間距。

注意複雜的文字格式器可能會藉由結合格式器特定功能與 SCRIPT_VISATTR 陣列中 ScriptShape 所擷取的資訊,來產生自己的差異 dx 陣列。
 
應用程式應該會將 ScriptJustify 所產生的對齊進階寬度傳遞至 piJustify 參數中的 ScriptTextOut

ScriptJustify 會建立對齊陣列,其中包含每個圖像的已更新進階寬度。 當圖像的進階寬度增加時,會將額外的寬度轉譯為圖像右邊,並加上空格符,或阿拉伯文文字的 kashida。

注意 Kashida 插入會在圖像右側發生,以可視化方式對齊。 Microsoft Word 和 Microsoft PowerPoint 會使用此概念。 kashida 放置演算法中的任何變更都應該隨附特定腳本的對應 ScriptTextOut 處理程式中的變更,例如阿拉伯文 TextOut 理由處理程式。
 
有時候應用程式會嘗試處理無法對齊的字元,在此情況下,SCRIPT_VISATTRuJustification 成員會設定為 SCRIPT_JUSTIFY_NONE。 在此情況下, ScriptJustify 會將 piAdvance 所指示的輸入數位複製到 piJustify 所指示的輸出數位,並將S_FALSE傳回應用程式。
重要從 Windows 8 開始:若要維護在 Windows 7 上執行的能力,使用 Uniscribe 的模組必須在其連結庫清單中指定 gdi32.lib 之前指定 Usp10.lib。
 

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 usp10.h
程式庫 Usp10.lib
Dll Usp10.dll
可轉散發套件 Windows Me/98/95 上的 Internet Explorer 5 或更新版本

另請參閱

使用 Uniscribe 顯示文字

SCRIPT_VISATTR

ScriptPlace

ScriptShape

ScriptTextOut

Uniscribe

Uniscribe 函式