# `GSGlyph`

*Class*

A named glyph and its layer collection in a font.

## Declaration

```swift
class GSGlyph
```

```objc
@interface GSGlyph : NSObject
```

```python
class GSGlyph(NSObject)
```

## Overview

A glyph belongs to a [`GSFont`](/Core/GlyphsCore/GSFont) and provides the information shared by all drawings of that glyph. This includes character mappings, classification, export settings, metrics keys, kerning groups, and glyph-local axes. A detached glyph is valid, but operations that depend on masters, other glyphs, or font lookup data require a font.

The *glyph name* identifies the glyph within Glyphs and is used by references such as components. The *production name* identifies the glyph in exported font files when it differs from the glyph name.

Unicode values associate a glyph with characters but do not identify the glyph; a glyph can have multiple Unicode values or none.

A glyph owns a collection of [`GSLayer`](/Core/GlyphsCore/GSLayer) objects. Drawing and editing take place on those layers. Layer compatibility determines whether corresponding drawings can be interpolated.

Not every glyph is exported, and some glyphs are only used as internal components in other glyphs.

## Topics

### Creating a Glyph

- [`GSGlyph initWithName:`](/Core/GlyphsCore/GSGlyph/initWithName:) — Creates a glyph with a name and no layers.
- [`GSGlyph initFast`](/Core/GlyphsCore/GSGlyph/initFast) — Creates a minimally configured glyph for bulk construction.
- [`GSGlyph initWithDict:format:`](/Core/GlyphsCore/GSGlyph/initWithDict:format:) — Creates a glyph from a Glyphs file dictionary representation.
- [`GSGlyph initWithFile:format:error:`](/Core/GlyphsCore/GSGlyph/initWithFile:format:error:) — Creates a glyph by reading a `.glyph` file.
- [`GSGlyph initWithGlyphsParser:format:`](/Core/GlyphsCore/GSGlyph/initWithGlyphsParser:format:) — Creates a glyph from a Glyphs file representation at the current parser position.

### Glyph Name

- [`GSGlyph.name`](/Core/GlyphsCore/GSGlyph/name) — The glyph name used within Glyphs.
- [`GSGlyph setName:changeName:`](/Core/GlyphsCore/GSGlyph/setName:changeName:) — Assigns a glyph name and updates related glyph information.
- [`GSGlyph setName:changeName:update:validate:`](/Core/GlyphsCore/GSGlyph/setName:changeName:update:validate:) — Assigns a glyph name with control over related updates.
- [`GSGlyph setNameFast:`](/Core/GlyphsCore/GSGlyph/setNameFast:) — Assigns a glyph name without updating related state.
- [`GSGlyph setNameFastCache:`](/Core/GlyphsCore/GSGlyph/setNameFastCache:) — Assigns a glyph name and updates name lookup in the containing font.
- [`GSGlyph.nameUpdate`](/Core/GlyphsCore/GSGlyph/nameUpdate) — The glyph name used within Glyphs, with font references updated when it changes.
- [`GSGlyph setNameUpdate:changeName:`](/Core/GlyphsCore/GSGlyph/setNameUpdate:changeName:) — Assigns a glyph name and updates references to the old glyph name within the font.
- [`GSGlyph validateName:`](/Core/GlyphsCore/GSGlyph/validateName:) — Checks whether a glyph name can be assigned to the receiver.
- [`GSGlyph ensureValidName:`](/Core/GlyphsCore/GSGlyph/ensureValidName:) — Finds the standard glyph name corresponding to a nonstandard name.
- [`GSGlyph isValidNameString:allowSpaces:error:`](/Core/GlyphsCore/GSGlyph/isValidNameString:allowSpaces:error:) — Checks whether a string follows the glyph name syntax.

### Production Name

- [`GSGlyph.production`](/Core/GlyphsCore/GSGlyph/production) — The preferred glyph name for exported font files.
- [`GSGlyph.storeProduction`](/Core/GlyphsCore/GSGlyph/storeProduction) — Whether the production name is stored as a custom value.

### Export

- [`GSGlyph.export`](/Core/GlyphsCore/GSGlyph/export) — Whether the glyph is marked for inclusion in exported font files.

### Ownership

- [`GSGlyph.parent`](/Core/GlyphsCore/GSGlyph/parent) — The font that contains the glyph, or `nil` for a detached glyph.
- [`GSGlyph.font`](/Core/GlyphsCore/GSGlyph/font) — The font that contains the glyph, or `nil` for a detached glyph.

### ID

- [`GSGlyph.glyphId`](/Core/GlyphsCore/GSGlyph/glyphId) — The current index in the containing font’s glyph collection.
- [`GSGlyph.id`](/Core/GlyphsCore/GSGlyph/id) — The identifier used to refer to the glyph independently of its name.

### Unicode and Characters

- [`GSGlyph.unicodes`](/Core/GlyphsCore/GSGlyph/unicodes) — The Unicode code points associated with the glyph, as an ordered set of uppercase hexadecimal strings.
- [`GSGlyph countOfUnicodes`](/Core/GlyphsCore/GSGlyph/countOfUnicodes) — The number of associated Unicode code points.
- [`GSGlyph.unicode`](/Core/GlyphsCore/GSGlyph/unicode) — The first Unicode code point associated with the glyph, as an uppercase hexadecimal string.
- [`GSGlyph.unicodeChar`](/Core/GlyphsCore/GSGlyph/unicodeChar) — The numeric value of the first associated Unicode code point, or `0` when there is none.
- [`GSGlyph charString`](/Core/GlyphsCore/GSGlyph/charString) — The character for the first associated Unicode code point, or an empty string when this convenience API cannot represent it.
- [`GSGlyph addUnicode:`](/Core/GlyphsCore/GSGlyph/addUnicode:) — Adds a Unicode code point while preserving the existing code points.
- [`GSGlyph removeUnicode:`](/Core/GlyphsCore/GSGlyph/removeUnicode:) — Removes a Unicode code point while preserving the order of the remaining code points.
- [`GSGlyph setUnicodesFast:`](/Core/GlyphsCore/GSGlyph/setUnicodesFast:) — Assigns Unicode code points without updating related state.
- [`GSGlyph isValidUnicodeString:error:`](/Core/GlyphsCore/GSGlyph/isValidUnicodeString:error:) — Checks whether a string uses the uppercase hexadecimal syntax for a Unicode code point.
- [`GSGlyph.baseString`](/Core/GlyphsCore/GSGlyph/baseString) — The Unicode string represented by the glyph’s character composition.

### Script

- [`GSGlyph.script`](/Core/GlyphsCore/GSGlyph/script) — The writing system associated with the glyph.
- [`GSGlyph.storeScript`](/Core/GlyphsCore/GSGlyph/storeScript) — Whether [`GSGlyph.script`](/Core/GlyphsCore/GSGlyph/script) is stored as glyph-local glyph info.

### Category & Subcategory

- [`GSGlyph.category`](/Core/GlyphsCore/GSGlyph/category) — The broad classification used to interpret and organize the glyph.
- [`GSGlyph.subCategory`](/Core/GlyphsCore/GSGlyph/subCategory) — The classification that refines [`GSGlyph.category`](/Core/GlyphsCore/GSGlyph/category).
- [`GSGlyph.storeCategory`](/Core/GlyphsCore/GSGlyph/storeCategory) — Whether [`GSGlyph.category`](/Core/GlyphsCore/GSGlyph/category) is stored as glyph-local glyph info.
- [`GSGlyph.storeSubCategory`](/Core/GlyphsCore/GSGlyph/storeSubCategory) — Whether [`GSGlyph.subCategory`](/Core/GlyphsCore/GSGlyph/subCategory) is stored as glyph-local glyph info.

### Case

- [`GSGlyph case`](/Core/GlyphsCore/GSGlyph/case) — The case classification used to interpret and organize the glyph.
- [`GSGlyph setCase:`](/Core/GlyphsCore/GSGlyph/setCase:) — Assigns the case classification used to interpret and organize the glyph.
- [`GSGlyph setCaseFast:`](/Core/GlyphsCore/GSGlyph/setCaseFast:) — Assigns a case classification without recording a glyph change.
- [`GSGlyph.storeCase`](/Core/GlyphsCore/GSGlyph/storeCase) — Whether the case classification is stored as glyph-local glyph info.

### Group

- [`GSGlyph.group`](/Core/GlyphsCore/GSGlyph/group) — The title of an explicit glyph group used for sorting and display.
- [`GSGlyph.groupIdx`](/Core/GlyphsCore/GSGlyph/groupIdx) — The ordering value of an explicit glyph group.
- [`GSGlyph.storeGroup`](/Core/GlyphsCore/GSGlyph/storeGroup) — Whether [`GSGlyph.group`](/Core/GlyphsCore/GSGlyph/group) and [`GSGlyph.groupIdx`](/Core/GlyphsCore/GSGlyph/groupIdx) are stored as glyph-local glyph info.

### Direction

- [`GSGlyph.direction`](/Core/GlyphsCore/GSGlyph/direction) — The writing direction associated with the glyph.
- [`GSGlyph.storeDirection`](/Core/GlyphsCore/GSGlyph/storeDirection) — Whether [`GSGlyph.direction`](/Core/GlyphsCore/GSGlyph/direction) is stored as glyph-local glyph info.

### Sorting

- [`GSGlyph.sortName`](/Core/GlyphsCore/GSGlyph/sortName) — The key used instead of [`GSGlyph.name`](/Core/GlyphsCore/GSGlyph/name) for predefined glyph sorting.
- [`GSGlyph.sortNameKeep`](/Core/GlyphsCore/GSGlyph/sortNameKeep) — The sorting key used when alternate glyphs are kept together.
- [`GSGlyph.storeSortName`](/Core/GlyphsCore/GSGlyph/storeSortName) — Whether [`GSGlyph.sortName`](/Core/GlyphsCore/GSGlyph/sortName) and [`GSGlyph.sortNameKeep`](/Core/GlyphsCore/GSGlyph/sortNameKeep) are stored as glyph-local glyph info.

### Derived Glyph Info

- [`GSGlyph.isCJK`](/Core/GlyphsCore/GSGlyph/isCJK) — Whether the glyph uses CJK layout behavior.
- [`GSGlyph.isVerticalRotationClockwise`](/Core/GlyphsCore/GSGlyph/isVerticalRotationClockwise) — Whether the glyph is rotated clockwise in vertical text.
- [`GSGlyph.isTabular`](/Core/GlyphsCore/GSGlyph/isTabular) — Whether the glyph uses a tabular-figure naming convention.

### Glyph Info

- [`GSGlyph hasCustomGlyphInfo`](/Core/GlyphsCore/GSGlyph/hasCustomGlyphInfo) — Whether any glyph info is stored as a glyph-local override.
- [`GSGlyph applyGlyphInfo:changeName:changeUnicode:`](/Core/GlyphsCore/GSGlyph/applyGlyphInfo:changeName:changeUnicode:) — Applies glyph information from a Glyph Info Database record.
- [`GSGlyph applyGlyphInfoFast:changeName:changeUnicode:`](/Core/GlyphsCore/GSGlyph/applyGlyphInfoFast:changeName:changeUnicode:) — Applies glyph information from a Glyph Info Database record for construction-time use.

### Layers

- [`GSGlyph.layers`](/Core/GlyphsCore/GSGlyph/layers) — The layers keyed by their layer identifiers.
- [`GSGlyph sortedLayers`](/Core/GlyphsCore/GSGlyph/sortedLayers) — The layers ordered by font master, with each master layer before the other layers associated with that font master.
- [`GSGlyph countOfLayers`](/Core/GlyphsCore/GSGlyph/countOfLayers) — The number of layers.
- [`GSGlyph objectInLayersAtIndex:`](/Core/GlyphsCore/GSGlyph/objectInLayersAtIndex:) — The layer at an index in insertion order.
- [`GSGlyph layerForId:`](/Core/GlyphsCore/GSGlyph/layerForId:) — The layer for an identifier.
- [`GSGlyph layerForIdFast:`](/Core/GlyphsCore/GSGlyph/layerForIdFast:) — The existing layer for an identifier, or `nil` when the glyph does not contain it.
- [`GSGlyph setLayer:forId:`](/Core/GlyphsCore/GSGlyph/setLayer:forId:) — Adds or replaces a layer under an identifier.
- [`GSGlyph removeLayerForId:`](/Core/GlyphsCore/GSGlyph/removeLayerForId:) — Removes the layer for an identifier.
- [`GSGlyph layerForName:`](/Core/GlyphsCore/GSGlyph/layerForName:) — The first layer with an exact matching name, or `nil` when no layer matches.
- [`GSGlyph layerForName:masterId:`](/Core/GlyphsCore/GSGlyph/layerForName:masterId:) — The first layer with an exact matching name and associated font master, or `nil` when no layer matches.
- [`GSGlyph layersForName:masterIDs:`](/Core/GlyphsCore/GSGlyph/layersForName:masterIDs:) — One layer for each font master identifier, in the requested order.
- [`GSGlyph layerForKey:masterId:`](/Core/GlyphsCore/GSGlyph/layerForKey:masterId:) — The first layer with a matching derived layer key, or `nil` when no layer matches.
- [`GSGlyph layerNearestToPosition:associatedMasterId:onlyBraceLayer:tolerance:`](/Core/GlyphsCore/GSGlyph/layerNearestToPosition:associatedMasterId:onlyBraceLayer:tolerance:) — The layer nearest to a design-space position within an exclusive distance tolerance, or `nil` when no layer qualifies.
- [`GSGlyph layerAtLocation:ignoring:`](/Core/GlyphsCore/GSGlyph/layerAtLocation:ignoring:) — Returns the layer at the given design space location.
- [`GSGlyph sortLayers:`](/Core/GlyphsCore/GSGlyph/sortLayers:) — Orders layers by font master, placing each master layer before the other layers associated with that font master.
- [`GSGlyph resetLayerKeys`](/Core/GlyphsCore/GSGlyph/resetLayerKeys) — Marks the derived layer keys of all layers for reevaluation.

### Layer Groups

- [`GSGlyph layerGroups`](/Core/GlyphsCore/GSGlyph/layerGroups) — The layer identifier groups used to check compatibility and coordinate edits across corresponding layers.
- [`GSGlyph layerGroupsInstances:masters:ignoreEmptyLayers:error:`](/Core/GlyphsCore/GSGlyph/layerGroupsInstances:masters:ignoreEmptyLayers:error:) — The layer identifier groups required by a set of instances.
- [`GSGlyph forcedLayerGroupIdsSeenLayers:ignoreEmptyLayers:`](/Core/GlyphsCore/GSGlyph/forcedLayerGroupIdsSeenLayers:ignoreEmptyLayers:) — The layer identifier groups formed without reference to configured instances.
- [`GSGlyph layerGroupIDSetForLayer:`](/Core/GlyphsCore/GSGlyph/layerGroupIDSetForLayer:) — The forced layer group containing a layer, or `nil` when the layer is not in a group.
- [`GSGlyph layerGroupIDSetForLayer:ignoreEmptyLayers:`](/Core/GlyphsCore/GSGlyph/layerGroupIDSetForLayer:ignoreEmptyLayers:) — The forced layer group containing a layer, or `nil` when the layer is not in a group.
- [`GSGlyph layerGroupIDsForLayer:`](/Core/GlyphsCore/GSGlyph/layerGroupIDsForLayer:) — The forced layer group containing a layer as an array, or `nil` when the layer is not in a group.
- [`GSGlyph compatibleLayerGroupIdsForLayer:`](/Core/GlyphsCore/GSGlyph/compatibleLayerGroupIdsForLayer:) — The identifiers of layers in the same group that have compatible shapes, anchors, and path-component hints.
- [`GSGlyph collectBraceLayerIDsMasters:allKeys:`](/Core/GlyphsCore/GSGlyph/collectBraceLayerIDsMasters:allKeys:) — The font masters including representations of active Intermediate-layer locations.

### Layer Compatibility

- [`GSGlyph mastersCompatible`](/Core/GlyphsCore/GSGlyph/mastersCompatible) — Whether every layer group has matching structure for interpolation.
- [`GSGlyph mastersCompatibleForLayers:`](/Core/GlyphsCore/GSGlyph/mastersCompatibleForLayers:) — Whether the layers have matching shapes, anchor names, and path-component hints.
- [`GSGlyph mastersCompatibleForLayerIds:`](/Core/GlyphsCore/GSGlyph/mastersCompatibleForLayerIds:) — Whether the specified layers have matching shapes, anchor names, and path-component hints.
- [`GSGlyph mastersCompatibleForLayerIds:options:`](/Core/GlyphsCore/GSGlyph/mastersCompatibleForLayerIds:options:) — Whether selected aspects of the specified layers have matching structure.
- [`GSGlyph resetMasterCompatibilityCheckStatus`](/Core/GlyphsCore/GSGlyph/resetMasterCompatibilityCheckStatus) — Marks layer compatibility for reevaluation.
- [`GSGlyph removeIncompatibleLayerContent:options:`](/Core/GlyphsCore/GSGlyph/removeIncompatibleLayerContent:options:) — Clears the shapes of active layers whose selected aspects do not match the first layer.

### Layer Kinds

- [`GSGlyph hasSpecialLayers`](/Core/GlyphsCore/GSGlyph/hasSpecialLayers) — Whether any stored layer has special layer attributes.
- [`GSGlyph hasBraceLayer`](/Core/GlyphsCore/GSGlyph/hasBraceLayer) — Whether any stored layer is an Intermediate layer at explicit design-space coordinates.
- [`GSGlyph hasBracketLayer`](/Core/GlyphsCore/GSGlyph/hasBracketLayer) — Whether any stored layer is an Alternative layer selected by axis rules.

### Tags

- [`GSGlyph.tags`](/Core/GlyphsCore/GSGlyph/tags) — User-defined tags for organizing and filtering the glyph.
- [`GSGlyph.tagsArray`](/Core/GlyphsCore/GSGlyph/tagsArray) — An array representation of the tags for use with Cocoa bindings.
- [`GSGlyph countOfTags`](/Core/GlyphsCore/GSGlyph/countOfTags) — The number of assigned tags.
- [`GSGlyph objectInTagsAtIndex:`](/Core/GlyphsCore/GSGlyph/objectInTagsAtIndex:) — The tag at an index, or `nil` if the index is out of range.
- [`GSGlyph indexOfObjectInTags:`](/Core/GlyphsCore/GSGlyph/indexOfObjectInTags:) — The index of a tag, or `NSNotFound` if the tag is not assigned.
- [`GSGlyph addTag:`](/Core/GlyphsCore/GSGlyph/addTag:) — Adds a tag if it is not already assigned.
- [`GSGlyph removeObjectFromTags:`](/Core/GlyphsCore/GSGlyph/removeObjectFromTags:) — Removes a tag if it is assigned.
- [`GSGlyph removeObjectFromTagsAtIndex:`](/Core/GlyphsCore/GSGlyph/removeObjectFromTagsAtIndex:) — Removes the tag at an index.

### Metadata

- [`GSGlyph.note`](/Core/GlyphsCore/GSGlyph/note) — A free-form note associated with the glyph.
- [`GSGlyph.color`](/Core/GlyphsCore/GSGlyph/color) — The color label used to organize the glyph, or `nil` if no color label is assigned.
- [`GSGlyph.colorIndex`](/Core/GlyphsCore/GSGlyph/colorIndex) — A standard color label, or [`GSLabelColor.GSLabelColorNoColor`](/Core/GlyphsCore/GSLabelColor/GSLabelColorNoColor) if the glyph has a custom color label or no color label.

### Glyph Axes

- [`GSGlyph.axes`](/Core/GlyphsCore/GSGlyph/axes) — The glyph-local axes used by Smart Components.
- [`GSGlyph.countOfAxes`](/Core/GlyphsCore/GSGlyph/countOfAxes) — The number of glyph-local axes.
- [`GSGlyph objectInAxesAtIndex:`](/Core/GlyphsCore/GSGlyph/objectInAxesAtIndex:) — The glyph-local axis at an index, or `nil` when the index is out of range.
- [`GSGlyph insertObject:inAxesAtIndex:`](/Core/GlyphsCore/GSGlyph/insertObject:inAxesAtIndex:) — Inserts a glyph-local axis at an index.
- [`GSGlyph removeObjectFromAxesAtIndex:`](/Core/GlyphsCore/GSGlyph/removeObjectFromAxesAtIndex:) — Removes the glyph-local axis at an index.
- [`GSGlyph replaceObjectInAxesAtIndex:withObject:`](/Core/GlyphsCore/GSGlyph/replaceObjectInAxesAtIndex:withObject:) — Replaces the glyph-local axis at an index.
- [`GSGlyph.allAxes`](/Core/GlyphsCore/GSGlyph/allAxes) — The axes defining a complete design-space location for the glyph.
- [`GSGlyph countOfAllAxes`](/Core/GlyphsCore/GSGlyph/countOfAllAxes) — The total number of font axes and glyph-local axes.
- [`GSGlyph axesRanges:internMax:axes:masterId:`](/Core/GlyphsCore/GSGlyph/axesRanges:internMax:axes:masterId:) — Computes the internal coordinate range of each selected axis.

### Interpolation

- [`GSGlyph interpolate:masters:error:`](/Core/GlyphsCore/GSGlyph/interpolate:masters:error:) — A detached layer formed by applying interpolation coefficients to compatible source layers.
- [`GSGlyph interpolateSmartLayer:instance:scale:targetGlyph:`](/Core/GlyphsCore/GSGlyph/interpolateSmartLayer:instance:scale:targetGlyph:) — Adds the corresponding interpolated Smart Component layers to a target glyph.
- [`GSGlyph replaceLayersWithInterpolation:error:`](/Core/GlyphsCore/GSGlyph/replaceLayersWithInterpolation:error:) — Replaces layer contents with interpolation from the remaining layers in each layer group.
- [`GSGlyph nextLayerId:layerPos:onAxis:direction:`](/Core/GlyphsCore/GSGlyph/nextLayerId:layerPos:onAxis:direction:) — Finds the nearest font master in one direction along an axis while keeping the other axis coordinates fixed.

### Metrics Keys

- [`GSGlyph.leftMetricsKey`](/Core/GlyphsCore/GSGlyph/leftMetricsKey) — Glyph-level metrics key for the left side bearing.
- [`GSGlyph.widthMetricsKey`](/Core/GlyphsCore/GSGlyph/widthMetricsKey) — Glyph-level metrics key for the advance width.
- [`GSGlyph.rightMetricsKey`](/Core/GlyphsCore/GSGlyph/rightMetricsKey) — Glyph-level metrics key for the right side bearing.
- [`GSGlyph.topMetricsKey`](/Core/GlyphsCore/GSGlyph/topMetricsKey) — Glyph-level metrics key for the top side bearing.
- [`GSGlyph.vertOriginMetricsKey`](/Core/GlyphsCore/GSGlyph/vertOriginMetricsKey) — Glyph-level metrics key for the vertical origin.
- [`GSGlyph.vertWidthMetricsKey`](/Core/GlyphsCore/GSGlyph/vertWidthMetricsKey) — Glyph-level metrics key for the vertical advance width.
- [`GSGlyph.bottomMetricsKey`](/Core/GlyphsCore/GSGlyph/bottomMetricsKey) — Glyph-level metrics key for the bottom side bearing.
- [`GSGlyph plainMetricsKey:`](/Core/GlyphsCore/GSGlyph/plainMetricsKey:) — The stored glyph-level metrics key for a metric side, or `nil` when none is set.
- [`GSGlyph setPlainMetricsKey:side:`](/Core/GlyphsCore/GSGlyph/setPlainMetricsKey:side:) — Sets the glyph-level metrics key for a metric side.
- [`GSGlyph validateMetricsKey:error:`](/Core/GlyphsCore/GSGlyph/validateMetricsKey:error:) — Validates the syntax of a proposed metrics key.

### Kerning Groups

- [`GSGlyph.leftKerningGroup`](/Core/GlyphsCore/GSGlyph/leftKerningGroup) — Kerning group for pairs on the left side.
- [`GSGlyph.rightKerningGroup`](/Core/GlyphsCore/GSGlyph/rightKerningGroup) — Kerning group for pairs on the right side.
- [`GSGlyph.topKerningGroup`](/Core/GlyphsCore/GSGlyph/topKerningGroup) — Kerning group for pairs on the top side.
- [`GSGlyph.bottomKerningGroup`](/Core/GlyphsCore/GSGlyph/bottomKerningGroup) — Kerning group for pairs on the bottom side.
- [`GSGlyph.leftKerningGroupId`](/Core/GlyphsCore/GSGlyph/leftKerningGroupId) — Prefixed kerning key corresponding to [`GSGlyph.leftKerningGroup`](/Core/GlyphsCore/GSGlyph/leftKerningGroup).
- [`GSGlyph.rightKerningGroupId`](/Core/GlyphsCore/GSGlyph/rightKerningGroupId) — Prefixed kerning key corresponding to [`GSGlyph.rightKerningGroup`](/Core/GlyphsCore/GSGlyph/rightKerningGroup).
- [`GSGlyph.topKerningGroupId`](/Core/GlyphsCore/GSGlyph/topKerningGroupId) — Prefixed kerning key corresponding to [`GSGlyph.topKerningGroup`](/Core/GlyphsCore/GSGlyph/topKerningGroup).
- [`GSGlyph.bottomKerningGroupId`](/Core/GlyphsCore/GSGlyph/bottomKerningGroupId) — Prefixed kerning key corresponding to [`GSGlyph.bottomKerningGroup`](/Core/GlyphsCore/GSGlyph/bottomKerningGroup).
- [`GSGlyph previousKerningGroupForDirection:`](/Core/GlyphsCore/GSGlyph/previousKerningGroupForDirection:) — Kerning group on the side facing the preceding glyph for a writing direction.
- [`GSGlyph setPreviousKerningGroup:forDirection:`](/Core/GlyphsCore/GSGlyph/setPreviousKerningGroup:forDirection:) — Sets the kerning group on the side facing the preceding glyph for a writing direction.
- [`GSGlyph previousKerningGroupIDforDirection:`](/Core/GlyphsCore/GSGlyph/previousKerningGroupIDforDirection:) — Prefixed kerning key on the side facing the preceding glyph for a writing direction.
- [`GSGlyph setPreviousKerningGroupID:forDirection:`](/Core/GlyphsCore/GSGlyph/setPreviousKerningGroupID:forDirection:) — Sets the prefixed kerning key on the side facing the preceding glyph for a writing direction.
- [`GSGlyph nextKerningGroupForDirection:`](/Core/GlyphsCore/GSGlyph/nextKerningGroupForDirection:) — Kerning group on the side facing the following glyph for a writing direction.
- [`GSGlyph setNextKerningGroup:forDirection:`](/Core/GlyphsCore/GSGlyph/setNextKerningGroup:forDirection:) — Sets the kerning group on the side facing the following glyph for a writing direction.
- [`GSGlyph nextKerningGroupIDforDirection:`](/Core/GlyphsCore/GSGlyph/nextKerningGroupIDforDirection:) — Prefixed kerning key on the side facing the following glyph for a writing direction.
- [`GSGlyph setNextKerningGroupID:forDirection:`](/Core/GlyphsCore/GSGlyph/setNextKerningGroupID:forDirection:) — Sets the prefixed kerning key on the side facing the following glyph for a writing direction.
- [`GSGlyph validateKerningGroup:error:`](/Core/GlyphsCore/GSGlyph/validateKerningGroup:error:) — Validates the syntax of a proposed kerning group name.

### Color Glyphs

- [`GSGlyph isAnyColorGlyph`](/Core/GlyphsCore/GSGlyph/isAnyColorGlyph) — Whether any layer uses a color-layer format.
- [`GSGlyph isFullColorGlyph`](/Core/GlyphsCore/GSGlyph/isFullColorGlyph) — Whether any layer is a full-color layer.
- [`GSGlyph isColorPaletteGlyph`](/Core/GlyphsCore/GSGlyph/isColorPaletteGlyph) — Whether any layer is a palette color layer.
- [`GSGlyph isSVGColorGlyph`](/Core/GlyphsCore/GSGlyph/isSVGColorGlyph) — Whether any layer is an SVG color layer.
- [`GSGlyph isAppleColorGlyph`](/Core/GlyphsCore/GSGlyph/isAppleColorGlyph) — Whether any layer is an Apple bitmap color layer.

### Special Glyph Types

- [`GSGlyph isCornerName:`](/Core/GlyphsCore/GSGlyph/isCornerName:) — Whether a glyph name uses a recognized corner-glyph prefix.
- [`GSGlyph isCornerGlyph`](/Core/GlyphsCore/GSGlyph/isCornerGlyph) — Whether the glyph name identifies a corner glyph.
- [`GSGlyph isSmartGlyph`](/Core/GlyphsCore/GSGlyph/isSmartGlyph) — Whether the glyph uses Smart Component behavior.
- [`GSGlyph isIcon`](/Core/GlyphsCore/GSGlyph/isIcon) — Whether icon-specific metrics and drawing behavior apply to the glyph.
- [`GSGlyph isSFSymbol`](/Core/GlyphsCore/GSGlyph/isSFSymbol) — Whether the glyph category is SF Symbol.

### Hints

- [`GSGlyph ensureHintsInLayer:layers:masters:font:`](/Core/GlyphsCore/GSGlyph/ensureHintsInLayer:layers:masters:font:) — Ensures that an interpolated layer has hints from a structurally compatible source layer.
- [`GSGlyph transferHintsFromLayer:to:`](/Core/GlyphsCore/GSGlyph/transferHintsFromLayer:to:) — Adds hint categories missing from a compatible target layer.

### Curve Conversion

- [`GSGlyph convertToCompatibleTrueTypeWithError:ignoreIncompatible:error:`](/Core/GlyphsCore/GSGlyph/convertToCompatibleTrueTypeWithError:ignoreIncompatible:error:) — Converts the glyph’s compatible interpolation layers to quadratic curves.
- [`GSGlyph convertToCompatibleTrueType:curveError:error:`](/Core/GlyphsCore/GSGlyph/convertToCompatibleTrueType:curveError:error:) — Converts specified compatible layers to quadratic curves.
- [`GSGlyph convertPath:toTrueTypeWithError:error:`](/Core/GlyphsCore/GSGlyph/convertPath:toTrueTypeWithError:error:) — Converts cubic segments that can be approximated within a tolerance to quadratic segments.
- [`GSGlyph decomposeAndCleanupError:`](/Core/GlyphsCore/GSGlyph/decomposeAndCleanupError:) — Prepares compatible interpolation layers for TrueType curve conversion.
- [`GSGlyph decomposeAndCleanupError:ignoreIncompatible:`](/Core/GlyphsCore/GSGlyph/decomposeAndCleanupError:ignoreIncompatible:) — Prepares selected interpolation layers for TrueType curve conversion.
- [`GSGlyph decomposeBracketLayersSubstitutions:error:`](/Core/GlyphsCore/GSGlyph/decomposeBracketLayersSubstitutions:error:) — Separates Alternative layer groups into glyphs for variable-font substitution.

### Components

- [`GSGlyph hasComponents`](/Core/GlyphsCore/GSGlyph/hasComponents) — Whether any stored layer directly contains a component.
- [`GSGlyph hasColorsInComponents`](/Core/GlyphsCore/GSGlyph/hasColorsInComponents) — Whether the first shape of the first font master layer is a component whose glyph uses a color-layer format.
- [`GSGlyph decomposeSpecialComponents:`](/Core/GlyphsCore/GSGlyph/decomposeSpecialComponents:) — Decomposes components requiring layer-specific interpolation across each layer group.

### Temporary Data

- [`GSGlyph.tempData`](/Core/GlyphsCore/GSGlyph/tempData) — Values associated with the glyph for transient use.
- [`GSGlyph tempDataForKey:`](/Core/GlyphsCore/GSGlyph/tempDataForKey:) — The temporary value for a key, or `nil` if no value is set.
- [`GSGlyph setTempData:forKey:`](/Core/GlyphsCore/GSGlyph/setTempData:forKey:) — Sets or removes a temporary value.

### Encoding

- [`GSGlyph propertyListValueFormat:error:`](/Core/GlyphsCore/GSGlyph/propertyListValueFormat:error:) — A property-list representation in a Glyphs source format.
- [`GSGlyph propertyListValueFormat:options:error:`](/Core/GlyphsCore/GSGlyph/propertyListValueFormat:options:error:) — A property-list representation using specified save options.
- [`GSGlyph saveToFile:format:context:error:`](/Core/GlyphsCore/GSGlyph/saveToFile:format:context:error:) — Writes the glyph in Glyphs source syntax to an open file.

### Undo

- [`GSGlyph.undoManager`](/Core/GlyphsCore/GSGlyph/undoManager) — The undo manager associated with edits to the glyph.
- [`GSGlyph.undoManagerCheck`](/Core/GlyphsCore/GSGlyph/undoManagerCheck) — The glyph’s undo manager when undo registration is enabled, or `nil` otherwise.

### Change Tracking

- [`GSGlyph.changeCount`](/Core/GlyphsCore/GSGlyph/changeCount) — The pending glyph edit count used for glyph-specific autosaving and change indicators.
- [`GSGlyph outlineHasChanges`](/Core/GlyphsCore/GSGlyph/outlineHasChanges) — Invalidates shape-derived caches for every stored layer.
- [`GSGlyph.lastOperation`](/Core/GlyphsCore/GSGlyph/lastOperation) — The date of the most recent operation used to invalidate glyph-dependent caches.

### Copying and Equality

- [`GSGlyph copyWithOptions:`](/Core/GlyphsCore/GSGlyph/copyWithOptions:) — Creates a detached copy with selected layer and editing content.
- [`GSGlyph isEqualToGlyph:`](/Core/GlyphsCore/GSGlyph/isEqualToGlyph:) — Whether another glyph has matching layer contents and core glyph settings.

### Locking

- [`GSGlyph setLockedFast:`](/Core/GlyphsCore/GSGlyph/setLockedFast:) — Changes whether editing the glyph is disabled without registering undo.
- [`GSGlyph initLock`](/Core/GlyphsCore/GSGlyph/initLock) — Prepares the glyph for synchronized access.
- [`GSGlyph hasLock`](/Core/GlyphsCore/GSGlyph/hasLock) — Whether the glyph has been prepared for synchronized access.
- [`GSGlyph lockRead`](/Core/GlyphsCore/GSGlyph/lockRead) — Acquires shared access to glyph-level cached state.
- [`GSGlyph unlockRead`](/Core/GlyphsCore/GSGlyph/unlockRead) — Releases shared access acquired with [`GSGlyph lockRead`](/Core/GlyphsCore/GSGlyph/lockRead).
- [`GSGlyph lockWrite`](/Core/GlyphsCore/GSGlyph/lockWrite) — Acquires exclusive access to glyph-level cached state.
- [`GSGlyph unlockWrite`](/Core/GlyphsCore/GSGlyph/unlockWrite) — Releases exclusive access acquired with [`GSGlyph lockWrite`](/Core/GlyphsCore/GSGlyph/lockWrite).
- [`GSGlyph lockReadLayers`](/Core/GlyphsCore/GSGlyph/lockReadLayers) — Acquires shared access to the layer collection.
- [`GSGlyph unlockReadLayers`](/Core/GlyphsCore/GSGlyph/unlockReadLayers) — Releases shared access acquired with [`GSGlyph lockReadLayers`](/Core/GlyphsCore/GSGlyph/lockReadLayers).
- [`GSGlyph lockWriteLayers`](/Core/GlyphsCore/GSGlyph/lockWriteLayers) — Acquires exclusive access to the layer collection.
- [`GSGlyph unlockWriteLayers`](/Core/GlyphsCore/GSGlyph/unlockWriteLayers) — Releases exclusive access acquired with [`GSGlyph lockWriteLayers`](/Core/GlyphsCore/GSGlyph/lockWriteLayers).

### Instance Methods

- [`GSGlyph addLinkedGlyph:`](/Core/GlyphsCore/GSGlyph/addLinkedGlyph:)
- [`GSGlyph applyBracketLayersAxesLocation:`](/Core/GlyphsCore/GSGlyph/applyBracketLayersAxesLocation:)
- [`GSGlyph baseLayerForBracketLayer:`](/Core/GlyphsCore/GSGlyph/baseLayerForBracketLayer:) — Returns the layer that is replaced by `bracketLayer` when its axis rules match.
- [`GSGlyph forcedLayerGroupIdsSeenLayers:`](/Core/GlyphsCore/GSGlyph/forcedLayerGroupIdsSeenLayers:)
- [`GSGlyph interpolateFull:masters:scale:keepSmart:layerName:additionalLayers:error:`](/Core/GlyphsCore/GSGlyph/interpolateFull:masters:scale:keepSmart:layerName:additionalLayers:error:) — A detached layer interpolated for an instance, or `nil` when interpolation fails.
- [`GSGlyph layerGroups:masters:error:`](/Core/GlyphsCore/GSGlyph/layerGroups:masters:error:)
- [`GSGlyph lockReadAllLayersShapes`](/Core/GlyphsCore/GSGlyph/lockReadAllLayersShapes)
- [`GSGlyph lockReadGlyph`](/Core/GlyphsCore/GSGlyph/lockReadGlyph)
- [`GSGlyph lockWriteGlyph`](/Core/GlyphsCore/GSGlyph/lockWriteGlyph)
- [`GSGlyph propertyListValueFormat:options:`](/Core/GlyphsCore/GSGlyph/propertyListValueFormat:options:)
- [`GSGlyph replaceLayersWithInterpolation:`](/Core/GlyphsCore/GSGlyph/replaceLayersWithInterpolation:)
- [`GSGlyph unlockReadAllLayersShapes`](/Core/GlyphsCore/GSGlyph/unlockReadAllLayersShapes)
- [`GSGlyph unlockReadGlyph`](/Core/GlyphsCore/GSGlyph/unlockReadGlyph)
- [`GSGlyph unlockWriteGlyph`](/Core/GlyphsCore/GSGlyph/unlockWriteGlyph)
- [`GSGlyph updateLinkedGlyphs`](/Core/GlyphsCore/GSGlyph/updateLinkedGlyphs)

## Relationships

### Inherits From

- `NSObject`

### Conforms To

- [`GSUndoClientProtocol`](/Core/GlyphsCore/GSUndoClientProtocol)
- [`GSUserDataProtocol`](/Core/GlyphsCore/GSUserDataProtocol)
- `NSCoding`
- `NSCopying`

## See Also

### Essentials

- [`GSFont`](/Core/GlyphsCore/GSFont) — The top-level model object of a Glyphs document.
- [`GSLayer`](/Core/GlyphsCore/GSLayer) — The drawing and editing representation of a glyph.
- [`GSAxis`](/Core/GlyphsCore/GSAxis) — `GSAxis` represents an axis in a `GSFont` object.
- [`GSFontMaster`](/Core/GlyphsCore/GSFontMaster)
- [`GSInstance`](/Core/GlyphsCore/GSInstance)

