# Layout and Writing Direction

*API Collection*

A resolved combination of character and line directions.

## Overview

A layout direction specifies how characters progress within a line and how successive lines progress through the layout. The character direction determines the layout orientation: horizontal characters form a horizontal layout, while top-to-bottom characters form a vertical layout.

| Layout direction | Orientation | Character direction | Line direction |
| --- | --- | --- | --- |
| [`GSLayoutDirection.GSLayoutDirectionLeftTopRightTopToBottom`](/Core/GlyphsCore/GSLayoutDirection/GSLayoutDirectionLeftTopRightTopToBottom) | Horizontal | Left-to-right | Top-to-bottom |
| [`GSLayoutDirection.GSLayoutDirectionRightTopLeftTopToBottom`](/Core/GlyphsCore/GSLayoutDirection/GSLayoutDirectionRightTopLeftTopToBottom) | Horizontal | Right-to-left | Top-to-bottom |
| [`GSLayoutDirection.GSLayoutDirectionTopToBottomLeftTopRight`](/Core/GlyphsCore/GSLayoutDirection/GSLayoutDirectionTopToBottomLeftTopRight) | Vertical | Top-to-bottom | Left-to-right |
| [`GSLayoutDirection.GSLayoutDirectionTopToBottomRightTopLeft`](/Core/GlyphsCore/GSLayoutDirection/GSLayoutDirectionTopToBottomRightTopLeft) | Vertical | Top-to-bottom | Right-to-left |

Use [`GSLayoutDirection.GSLayoutOrientationFromLayoutDirection`](/Core/GlyphsCore/GSLayoutDirection/GSLayoutOrientationFromLayoutDirection) to determine whether the horizontal direction applies to characters or lines. For a horizontal layout, [`GSLayoutDirection.GSHorizontalLayoutDirectionFromLayoutDirection`](/Core/GlyphsCore/GSLayoutDirection/GSHorizontalLayoutDirectionFromLayoutDirection) is the character direction. For a vertical layout, it is the line direction.

## Writing Directions

[`GSWritingDirection`](/Core/GlyphsCore/GSWritingDirection) is an option-set encoding used by APIs that can carry an unresolved or special direction. Convert it to [`GSLayoutDirection`](/Core/GlyphsCore/GSLayoutDirection) before using it for resolved layout.

## Topics

### Layout Directions

- [`GSLayoutDirection`](/Core/GlyphsCore/GSLayoutDirection) — A resolved combination of character and line directions.

### Layout Orientation

- [`GSLayoutDirection.GSLayoutOrientation`](/Core/GlyphsCore/GSLayoutDirection/GSLayoutOrientation) — The axis along which characters progress.
- [`GSLayoutDirection.GSLayoutOrientationFromLayoutDirection`](/Core/GlyphsCore/GSLayoutDirection/GSLayoutOrientationFromLayoutDirection) — Returns the axis along which characters progress.

### Horizontal Layout Directions

- [`GSLayoutDirection.GSHorizontalLayoutDirection`](/Core/GlyphsCore/GSLayoutDirection/GSHorizontalLayoutDirection) — A direction of progression along the horizontal axis.
- [`GSLayoutDirection.GSHorizontalLayoutDirectionFromLayoutDirection`](/Core/GlyphsCore/GSLayoutDirection/GSHorizontalLayoutDirectionFromLayoutDirection) — Returns the progression along the horizontal axis.

### Writing Direction

- [`GSWritingDirection`](/Core/GlyphsCore/GSWritingDirection) — The progression of glyphs and lines in text.
- [`GSWritingDirectionValidate`](/Core/GlyphsCore/GSWritingDirectionValidate) — Whether a value contains only recognized writing-direction and kerning-selector bits.
- [`GSWritingDirectionValidateOrDefault`](/Core/GlyphsCore/GSWritingDirectionValidateOrDefault) — A value containing only recognized bits, or [`GSWritingDirection.GSWritingDirectionLeftToRight`](/Core/GlyphsCore/GSWritingDirection/GSWritingDirectionLeftToRight) when the value contains an unsupported bit.

