ScriptGetCMap 函式 (usp10.h)

根據 TrueType cmap 數據表或針對舊樣式字型實作的標準 cmap 數據表,擷取字串中 Unicode 字元的字元索引。

語法

HRESULT ScriptGetCMap(
  [in]      HDC          hdc,
  [in, out] SCRIPT_CACHE *psc,
  [in]      const WCHAR  *pwcInChars,
  [in]      int          cChars,
  [in]      DWORD        dwFlags,
  [out]     WORD         *pwOutGlyphs
);

參數

[in] hdc

選擇性。 裝置內容的句柄。 如需詳細資訊,請參閱 快取

[in, out] psc

識別腳本快取 之SCRIPT_CACHE 結構的指標。

[in] pwcInChars

Unicode 字元字串的指標。

[in] cChars

pwcInChars 所指示之字串中的 Unicode 字元數目。

[in] dwFlags

指定圖像之任何特殊處理的旗標。 根據預設,圖像會以邏輯順序提供,不需要特殊處理。 此參數可以有下列值。

意義
SGCM_RTL
pwOutGlyphs 所指示的字元陣列應該包含鏡像圖像,適用於具有鏡像對等圖像的字元。

[out] pwOutGlyphs

函式擷取字元索引數位的緩衝區指標。 此緩衝區的長度應該與 pwcInChars 所指示的輸入緩衝區相同。 每個字碼點都會對應至單一圖像。

傳回值

如果字型中有所有 Unicode 字碼點,則傳回S_OK。 如果函式未成功,函式會傳回下列其中一個非零 HRESULT 值。

傳回值 意義
E_HANDLE 字型或操作系統不支援圖像索引。
S_FALSE 某些 Unicode 字碼點已對應至預設字元。

備註

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

此函式可用來判斷所選取字型所支持執行中的字元。 應用程式可以掃描擷取的字元緩衝區,尋找預設圖像來判斷無法使用的字元。 應用程式應該藉由呼叫 ScriptGetFontProperties 來判斷所選字型的預設字元索引。

此函式的傳回值表示是否有任何遺漏的字元。

注意 函式假設輸入和輸出陣列中的項目之間有 1:1 關聯性。 不過,函式不支援UTF-16代理字組的這個關聯性。 如果是 Surrogate 字組,函式不會擷取增平面字元的字元索引。 同樣地,函式不支援 Unicode Variation-Selector (VS) 序列,每個序列都包含 Unicode 圖形字元,後面接著一組 VARIATION SELECTOR 字元,以選取該圖形字元的特定字元表示法。 針對 VS 序列,函式會擷取兩個字元 cmap 所對應之預設字元的字元索引,而不是 VS 序列中特定字元的字元索引。
 
某些字碼點可以透過字元的組合以及單一圖像來轉譯,例如00C9;拉丁大寫字母 E 與尖角。 在此情況下,如果字型支援大寫的 E 字元和圖像圖像,但不支援 00C9 的單一圖像, ScriptGetCMap 會顯示不支援 00C9。 若要判斷包含這些字碼點之字串的字型支援,應用程式可以呼叫 ScriptShape。 如果函式傳回S_OK,應用程式應該檢查輸出中是否有遺漏的字元。
重要從 Windows 8 開始:若要維持在 Windows 7 上執行的能力,使用 Uniscribe 的模組必須在其連結庫清單中指定 gdi32.lib 之前指定 Usp10.lib。
 

規格需求

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

另請參閱

使用 Uniscribe 顯示文字

SCRIPT_CACHE

ScriptGetFontProperties

ScriptShape

Uniscribe

Uniscribe 函式