Table of Contents

Struct ScriptProperties

Namespace
SharpDX.DirectWrite
Assembly
SharpDX.Direct2D1.dll

The ScriptProperties structure specifies script properties for caret navigation and justification.

public struct ScriptProperties
Inherited Members

Fields

ClusterLookahead

Number of characters to estimate look-ahead for complex scripts. Latin and all Kana are generally 1. Indic scripts are up to 15, and most others are 8.

Note??Combining marks and variation selectors can produce clusters that are longer than these look-aheads, so this estimate is considered typical language use. Diacritics must be tested explicitly separately. ?
public int ClusterLookahead

Field Value

int

IsoScriptCode

The standardized four character code for the given script.

Note??These only include the general Unicode scripts, not any additional ISO 15924 scripts for bibliographic distinction. ?
public int IsoScriptCode

Field Value

int

IsoScriptNumber

The standardized numeric code, ranging 0-999.

public int IsoScriptNumber

Field Value

int

JustificationCharacter

Appropriate character to elongate the given script for justification. For example:

  • Arabic - U+0640 Tatweel
  • Ogham - U+1680 Ogham Space Mark
public int JustificationCharacter

Field Value

int

Properties

IsBlockWriting

The language is a block script, expanding between characters. Examples include Chinese, Japanese, Korean, and Bopomofo.

public bool IsBlockWriting { get; set; }

Property Value

bool

IsConnectedWriting

The script's clusters are connected to each other (such as the baseline-linked Devanagari), and no separation is added between characters.

Note??Cursively linked scripts like Arabic are also connected (but not all connected scripts are cursive). ?

Examples include Devanagari, Arabic, Syriac, Bengala, Gurmukhi, and Ogham. Latin, Chinese, and Thaana are excluded.

public bool IsConnectedWriting { get; set; }

Property Value

bool

IsCursiveWriting

The script is naturally cursive (Arabic and Syriac), meaning it uses other justification methods like kashida extension rather than inter-character spacing.

Note?? Although other scripts like Latin and Japanese might actually support handwritten cursive forms, they are not considered cursive scripts. ?

Examples include Arabic, Syriac, and Mongolian. Thaana, Devanagari, Latin, and Chinese are excluded.

public bool IsCursiveWriting { get; set; }

Property Value

bool

IsDiscreteWriting

The characters are discrete units from each other. This includes both block scripts and clustered scripts. Examples include Latin, Greek, Cyrillic, Hebrew, Chinese, and Thai.

public bool IsDiscreteWriting { get; set; }

Property Value

bool

IsDistributedWithinCluster

The language is justified within glyph clusters, not just between glyph clusters, such as the character sequence of Thai Lu and Sara Am (U+E026, U+E033), which form a single cluster but still expand between them. Examples include Thai, Lao, and Khmer.

public bool IsDistributedWithinCluster { get; set; }

Property Value

bool

Reserved

Reserved

public int Reserved { get; set; }

Property Value

int

RestrictCaretToClusters

Restrict the caret to whole clusters, like Thai and Devanagari. Scripts such as Arabic by default allow navigation between clusters. Others like Thai always navigate across whole clusters.

public bool RestrictCaretToClusters { get; set; }

Property Value

bool

UsesWordDividers

The language uses dividers between words, such as spaces between Latin or the Ethiopic wordspace. Examples include Latin, Greek, Devanagari, and Ethiopic. Chinese, Korean, and Thai are excluded.

public bool UsesWordDividers { get; set; }

Property Value

bool