Type Property



static let writingDirection: NSAttributedString.Key


The value of this attribute is an NSArray object containing NSNumber objects representing the nested levels of writing direction overrides, in order from outermost to innermost.

This attribute provides a means to override the default bidirectional text algorithm, equivalent to using the Unicode bidi control characters LRE, RLE, LRO, or RLO paired with PDF, but as a higher-level attribute. (See Unicode Standard Annex #9 for information about the Unicode bidi formatting codes.) The NSWritingDirectionAttributeName constant is a character-level attribute that provides a higher-level alternative to the inclusion of explicit bidirectional control characters in text. It is the NSAttributedString equivalent of the HTML markup using bdo element with the dir attribute.

The values of the NSNumber objects should be 0, 1, 2, or 3, for LRE, RLE, LRO, or RLO respectively, and combinations of NSWritingDirection.leftToRight and NSWritingDirection.rightToLeft with NSTextWritingDirectionEmbedding or NSTextWritingDirectionOverride, as shown in Table 1.

Table 1

Values of NSWritingDirectionAttributeName and equivalent markup

Array NSNumber Values

Unicode Control Characters

Writing Direction Constants



NSWritingDirectionLeftToRight | NSTextWritingDirectionEmbedding



NSWritingDirectionRightToLeft | NSTextWritingDirectionEmbedding



NSWritingDirectionLeftToRight | NSTextWritingDirectionOverride



NSWritingDirectionRightToLeft | NSTextWritingDirectionOverride

See Also


static let accessibilityAutocorrected: NSAttributedString.Key

Autocorrected text (NSNumber as a Boolean value).

static let accessibilityMarkedMisspelled: NSAttributedString.Key

Misspelled text that is visibly marked as misspelled (NSNumber as a Boolean value). If you’re implementing a custom text-editing app, use NSAccessibilityMarkedMisspelledTextAttribute to ensure that VoiceOver properly identifies misspelled text to users.

static let accessibilityMisspelled: NSAttributedString.Key

Misspelled text that isn’t necessarily visibly marked as misspelled (NSNumber as a Boolean value). Beginning in macOS 10.9, VoiceOver no longer checks for this attribute; instead, VoiceOver uses accessibilityMarkedMisspelled.

static let accessibilityShadow: NSAttributedString.Key

Text shadow (NSNumber as a Boolean value).

static let accessibilityStrikethrough: NSAttributedString.Key

Text strikethrough (NSNumber as a Boolean value).

static let accessibilitySuperscript: NSAttributedString.Key

Text superscript style (NSNumber). Values > 0 are superscript; values < 0 are subscript.

static let baselineOffset: NSAttributedString.Key

Vertical offset for text position.

static let characterShapeAttributeName: NSAttributedString.Key

An integer value. The value is interpreted as Apple Type Services kCharacterShapeType selector + 1.

static let cursor: NSAttributedString.Key

The value of this attribute is an NSCursor object. The default value is the cursor returned by the iBeam method

static let glyphInfo: NSAttributedString.Key

The name of an NSGlyphInfo object.

static let superscript: NSAttributedString.Key

The value of this attribute is an NSNumber object containing an integer. The default value is 0.

static let toolTip: NSAttributedString.Key

The value of this attribute is an NSString object containing the tooltip text. The default value is nil, indicating no tooltip is available.

static let usesScreenFontsDocumentAttribute: NSAttributedString.Key

The value of this attribute is an NSNumber object containing a Boolean; this attribute corresponds to the usesScreenFonts method of NSLayoutManager; if absent, follows the system default setting