ScriptGetFontScriptTags (Compact 2013)

3/28/2014

This function retrieves a list of scripts available in the font for OpenType processing. Scripts comprising the list are retrieved from the font located in the supplied device context, or from the script-shaping engine that processes the font of the current run.

Syntax

HRESULT ScriptGetFontScriptTags( 
  HDC hdc,
  SCRIPT_CACHE* psc,
  SCRIPT_ANALYSIS* psa,
  int cMaxTags,
  OPENTYPE_TAG* pScriptTags,
  int* pcTags
);

Parameters

  • hdc
    [in] Optional. Handle to the device context.
  • psc
    [in/out] Pointer to a SCRIPT_CACHE structure identifying the script cache.
  • psa
    [in] Pointer to a SCRIPT_ANALYSIS structure obtained from a previous call to ScriptItemizeOpenType. This parameter identifies the shaping engine, so that the appropriate font-script tags can be retrieved. The application supplies a non-null value for this parameter to retrieve script tags appropriate for the current run.

    Alternatively, the application can supply a null pointer to retrieve unfiltered results.

  • cMaxTags
    [in] The length of the array specified by pScriptTags.
  • pScriptTags
    [out] Pointer to a buffer in which this function retrieves an array of OPENTYPE_TAG structures defining script tags from the device context or the scripting engine associated with the current run. If the value of the eScript member of the SCRIPT_ANALYSIS structure provided in the psa parameter has a definite script tag associated with it and the tag is present in the font, pScriptTags contains only this tag.
  • pcTags
    [out] Pointer to the number of elements in the script-tag array indicated by pScriptTags.

Return Values

If the function is successful, it returns 0. The function returns a nonzero HRESULT value if it does not succeed. The application can test the return value with the SUCCEEDED and FAILED macros.

If the number of matching tags exceeds the value of cMaxTags, the function fails with E_OUTOFMEMORY. The application can call the function again with larger buffers.

Remarks

While formally declared as a ULONG type, OPENTYPE_TAG defines a 4-byte array that contains four 8-bit ASCII values of space, A-Z, or a-z. For example, the script tags for Latin and Arabic scripts are "latn" and "arab", respectively.

This function returns a single tag from a font in the following cases:

  • The psa value is associated with text for a single complex script.
  • The psa parameter indicates a null pointer and the font supports a single script.

If ScriptGetFontScriptTags retrieves all tags from a font, the tags are usually for neutral items, such as digits. Note that more than one tag might be applicable because some text runs of neutral items are not script-specific.

If a tag corresponding to a particular script is present, a shaping engine might be unable to use the font to shape the given item. The engine might lack a needed item, such as a specific language system or a specific feature.

Requirements

Header

usp10.h

Library

Uspce.lib

See Also

Reference

Uniscribe Functions