{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://info.glyphsapp.com/schema/glyphs-autosave-3.schema.json",
	"title": "Glyphs Document",
	"description": "A native Glyphs source file.",
	"type": "object",
	"$defs": {
		"anchor": {
			"type": "object",
			"properties": {
				"locked": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the anchor is locked.",
					"glyphsLabel": {
						"key": "any.locked",
						"default": "Locked"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"name": {
					"type": "string",
					"description": "The name of the anchor.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"orientation": {
					"$ref": "#/$defs/orientation",
					"default": "left",
					"description": "The orientation of the anchor.",
					"glyphsLabel": {
						"key": "any.orientation",
						"default": "Orientation"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"pos": {
					"$ref": "#/$defs/pos",
					"default": [
						0,
						0
					],
					"description": "The position of the anchor.",
					"glyphsLabel": {
						"key": "any.position",
						"default": "Position"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"userData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Custom data associated with the anchor.",
					"glyphsLabel": {
						"key": "any.user-data",
						"default": "User Data"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"name"
			],
			"glyphsType": "GSAnchor"
		},
		"annotation": {
			"type": "object",
			"properties": {
				"angle": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The angle of the annotation in degrees clockwise.",
					"glyphsLabel": {
						"key": "any.angle",
						"default": "Angle"
					}
				},
				"pos": {
					"$ref": "#/$defs/pos",
					"default": [
						0,
						0
					],
					"description": "The position of the annotation.",
					"glyphsLabel": {
						"key": "any.position",
						"default": "Position"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"text": {
					"type": "string",
					"default": "",
					"description": "The text of an text-type annotation.",
					"glyphsLabel": {
						"key": "any.text",
						"default": "Text"
					}
				},
				"type": {
					"enum": [
						"Text",
						"Arrow",
						"Circle",
						"Plus",
						"Minus"
					],
					"type": "string",
					"description": "The type of the annotation.",
					"glyphsLabel": {
						"key": "any.type",
						"default": "Type"
					}
				},
				"width": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The width of an text- or circle-type annotation.",
					"glyphsLabel": {
						"key": "any.width",
						"default": "Width"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"type"
			],
			"glyphsType": "GSAnnotation"
		},
		"attr": {
			"type": "object"
		},
		"attrShape": {
			"type": "object"
		},
		"axis": {
			"type": "object",
			"properties": {
				"default": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The default location on the axis.",
					"glyphsLabel": {
						"key": "axis.location.default",
						"default": "Default Location"
					}
				},
				"hidden": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the axis is considered to be hidden from the font user.",
					"glyphsLabel": {
						"key": "axis.hidden",
						"default": "Hidden"
					}
				},
				"name": {
					"type": "string",
					"default": "",
					"description": "The user-facing name of the axis.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					},
					"glyphsCondition": {}
				},
				"tag": {
					"type": "string",
					"default": "",
					"description": "The OpenType tag of the axis. Must be unique within the font. The tag may be longer than four characters in which case only the first four characters are considered to be the canonical tag of the axis and the rest is used as a differentiating identifier. On export, the canonical tag is used. Multiple axes with the same canonical tag are useful for higher-order interpolation.",
					"glyphsLabel": {
						"key": "opentype.tag",
						"default": "Tag"
					}
				}
			},
			"additionalProperties": false,
			"glyphsType": "GSAxis"
		},
		"class": {
			"type": "object",
			"properties": {
				"automatic": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the code of the class is generated automatically.",
					"glyphsLabel": {
						"key": "layout.automatic",
						"default": "Automatic"
					}
				},
				"code": {
					"type": "string",
					"default": "",
					"examples": [
						"A B C",
						"noon-ar noon-ar.fina noon-ar.medi noon-ar.init # noon-ar glyphs"
					],
					"description": "The code of the class. Note that this code may not just be a whitespace-separated list of glyph names but may also contain comments and other feature code constructs.",
					"glyphsLabel": {
						"key": "layout.code",
						"default": "Code"
					},
					"glyphsCondition": {}
				},
				"disabled": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the class is disabled.",
					"glyphsLabel": {
						"key": "layout.disabled",
						"default": "Disabled"
					}
				},
				"name": {
					"type": "string",
					"examples": [
						"Uppercase",
						"CombiningTopAccents"
					],
					"description": "The name of the class. The leading at sign (`@`) is not included.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"notes": {
					"type": "string",
					"default": "",
					"description": "A string serving as a description or comment about the class.",
					"glyphsLabel": {
						"key": "layout.notes",
						"default": "Notes"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"name"
			],
			"glyphsType": "GSClass"
		},
		"color": {
			"oneOf": [
				{
					"type": "array",
					"prefixItems": [
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The red color component.",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The green color component.",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The blue color component.",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The alpha color component.",
							"minimum": 0,
							"maximum": 255
						}
					],
					"items": false,
					"minItems": 4,
					"maxItems": 4,
					"glyphsCompact": true,
					"description": "An RGB color with an alpha channel in the sRGB IEC61966-2.1 color space."
				},
				{
					"type": "array",
					"prefixItems": [
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The gray value from `0` (black) to `255` (white).",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The alpha color component.",
							"minimum": 0,
							"maximum": 255
						}
					],
					"items": false,
					"minItems": 2,
					"maxItems": 2,
					"glyphsCompact": true,
					"description": "A gray color with an alpha channel in a perceptual generic gray color space with \u03b3 = 2.2.",
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				{
					"type": "array",
					"prefixItems": [
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The cyan color component.",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The magenta color component.",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The yellow color component.",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The black color component.",
							"minimum": 0,
							"maximum": 255
						},
						{
							"type": "integer",
							"glyphsNumber": "u8",
							"description": "The alpha color component.",
							"minimum": 0,
							"maximum": 255
						}
					],
					"items": false,
					"minItems": 5,
					"maxItems": 5,
					"glyphsCompact": true,
					"description": "A CMYK color with an alpha channel. The color space is device-dependent.",
					"glyphsCondition": {
						"minVersion": 3
					}
				}
			]
		},
		"colorLabel": {
			"oneOf": [
				{
					"type": "integer",
					"glyphsNumber": "u8",
					"description": "The index of the color label. See also [the handbook entry on color labels](https://handbook.glyphsapp.com/glyph/#glyph/color-label).",
					"minimum": 0,
					"maximum": 11
				},
				{
					"$ref": "#/$defs/color"
				}
			]
		},
		"component": {
			"type": "object",
			"properties": {
				"alignment": {
					"enum": [
						-1,
						0,
						1,
						3
					],
					"type": "integer",
					"glyphsNumber": "i8",
					"default": 0,
					"description": "Controls the automatic alignment of the component. `-1`: disabled (no alignment), `0`: default (alignment is based on context), `1`: force alignment (align regardless of context), `3`: horizontal alignment (align horizontally, but allow for manual vertical placement).",
					"glyphsLabel": {
						"key": "component.alignment",
						"default": "Alignment"
					},
					"glyphsType": "GSComponentAlignment"
				},
				"anchor": {
					"type": "string",
					"description": "The name of the attachment anchor. Set to specify a specific anchor when there are multiple candidates.",
					"glyphsLabel": {
						"key": "component.anchor",
						"default": "Anchor"
					}
				},
				"angle": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The rotation angle of the component in degrees clockwise.",
					"glyphsLabel": {
						"key": "any.angle",
						"default": "Angle"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"attr": {
					"$ref": "#/$defs/attrShape",
					"default": {},
					"description": "The attributes of the component.",
					"glyphsLabel": {
						"key": "any.attributes",
						"default": "Attributes"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"keepWeight": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "Unused.",
					"glyphsLabel": {
						"key": "component.keep-weight",
						"default": "Keep Weight"
					}
				},
				"locked": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the component is locked.",
					"glyphsLabel": {
						"key": "any.locked",
						"default": "Locked"
					}
				},
				"masterId": {
					"type": "string",
					"description": "The ID of the master from which the component is derived.",
					"glyphsLabel": {
						"key": "master.id",
						"default": "Master ID"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"orientation": {
					"enum": [
						0,
						1,
						2
					],
					"type": "integer",
					"default": 0,
					"glyphsNumber": "i8",
					"description": "The orientation of the component.",
					"glyphsLabel": {
						"key": "orientation",
						"default": "Orientation"
					},
					"glyphsCondition": {
						"minVersion": 3
					},
					"glyphsType": "GSElementOrientation"
				},
				"piece": {
					"type": "object",
					"additionalProperties": {
						"type": "number",
						"glyphsNumber": "f64"
					},
					"default": {},
					"description": "The Smart Component settings of the component, mapping property names to values.",
					"glyphsLabel": {
						"key": "component.piece",
						"default": "Smart Settings"
					}
				},
				"pos": {
					"$ref": "#/$defs/pos",
					"default": [
						0,
						0
					],
					"description": "The position (translation transform) of the component.",
					"glyphsLabel": {
						"key": "any.position",
						"default": "Position"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"ref": {
					"type": "string",
					"description": "The name of the referenced glyph.",
					"glyphsLabel": {
						"key": "component.ref",
						"default": "Reference"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"scale": {
					"$ref": "#/$defs/scale",
					"default": [
						1,
						1
					],
					"description": "The scale transform of the component.",
					"glyphsLabel": {
						"key": "any.scale",
						"default": "Scale"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"slant": {
					"$ref": "#/$defs/slant",
					"default": [
						0,
						0
					],
					"description": "The slant transform of the component.",
					"glyphsLabel": {
						"key": "any.slant",
						"default": "Slant"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"userData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Custom data associated with the component. See `attr` for current format versions.",
					"glyphsLabel": {
						"key": "any.user-data",
						"default": "User Data"
					},
					"glyphsCondition": {}
				}
			},
			"additionalProperties": false,
			"required": [
				"ref"
			],
			"glyphsType": "GSComponent"
		},
		"customParameter": {
			"type": "object",
			"properties": {
				"disabled": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the custom parameter is disabled.",
					"glyphsLabel": {
						"key": "any.disabled",
						"default": "Disabled"
					}
				},
				"name": {
					"type": "string",
					"description": "The name of the custom parameter.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"value": {
					"description": "The value of the custom parameter.",
					"glyphsLabel": {
						"key": "any.value",
						"default": "Value"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"name",
				"value"
			],
			"glyphsType": "GSCustomParameter"
		},
		"displayStrings": {
			"type": "array",
			"items": {
				"type": "string"
			},
			"glyphsCondition": {
				"packages": false
			}
		},
		"featurePrefix": {
			"type": "object",
			"properties": {
				"automatic": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the code of the feature prefix is generated automatically.",
					"glyphsLabel": {
						"key": "layout.automatic",
						"default": "Automatic"
					}
				},
				"code": {
					"type": "string",
					"default": "",
					"examples": [
						"languagesystem DFLT dflt;"
					],
					"description": "The code of the feature prefix.",
					"glyphsLabel": {
						"key": "layout.code",
						"default": "Code"
					},
					"glyphsCondition": {}
				},
				"disabled": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the feature prefix is disabled.",
					"glyphsLabel": {
						"key": "layout.disabled",
						"default": "Disabled"
					}
				},
				"name": {
					"type": "string",
					"examples": [
						"Languagesystems"
					],
					"description": "The name of the feature prefix.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"notes": {
					"type": "string",
					"default": "",
					"description": "A string serving as a description or comment about the feature prefix.",
					"glyphsLabel": {
						"key": "layout.notes",
						"default": "Notes"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"name"
			],
			"glyphsType": "GSFeaturePrefix"
		},
		"feature": {
			"type": "object",
			"properties": {
				"automatic": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the code of the feature is generated automatically.",
					"glyphsLabel": {
						"key": "layout.automatic",
						"default": "Automatic"
					}
				},
				"code": {
					"type": "string",
					"default": "",
					"examples": [
						"sub a by a.alt;"
					],
					"description": "The code of the feature.",
					"glyphsLabel": {
						"key": "layout.code",
						"default": "Code"
					},
					"glyphsCondition": {}
				},
				"disabled": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the feature is disabled.",
					"glyphsLabel": {
						"key": "layout.disabled",
						"default": "Disabled"
					}
				},
				"labels": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/infoValue"
					},
					"default": [],
					"description": "The labels of the feature.",
					"glyphsLabel": {
						"key": "layout.feature.labels",
						"default": "Labels"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"notes": {
					"type": "string",
					"default": "",
					"description": "A string serving as a description or comment about the feature.",
					"glyphsLabel": {
						"key": "layout.notes",
						"default": "Notes"
					}
				},
				"tag": {
					"type": "string",
					"minLength": 4,
					"maxLength": 4,
					"examples": [
						"calt"
					],
					"description": "The four-letter tag of the feature.",
					"glyphsLabel": {
						"key": "opentype.tag",
						"default": "Tag"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"code",
				"tag"
			],
			"glyphsType": "GSFeature"
		},
		"fontMaster": {
			"type": "object",
			"properties": {
				"active": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": true,
					"description": "Unused.",
					"glyphsLabel": {
						"key": "any.active",
						"default": "Active"
					}
				},
				"axesValues": {
					"type": "array",
					"items": {
						"type": "number",
						"glyphsNumber": "f64"
					},
					"default": [],
					"description": "The designspace location of the master.",
					"glyphsLabel": {
						"key": "any.axes-values",
						"default": "Axes Values"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"customParameters": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/customParameter"
					},
					"default": [],
					"description": "The custom parameters of the master.",
					"glyphsLabel": {
						"key": "any.custom-parameters",
						"default": "Custom Parameters"
					}
				},
				"guides": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/guide"
					},
					"default": [],
					"description": "The global guides of the master.",
					"glyphsLabel": {
						"key": "any.guides",
						"default": "Guides"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"iconName": {
					"type": "string",
					"default": "Regular",
					"description": "The name of the icon that represents the master. Generally omitted when equal to `Regular`, or equal to the default icon name of the master (`GSFontMaster.defaultIconName`). For a list of available names, consult `GSFontMaster.iconNames()`.",
					"glyphsLabel": {
						"key": "master.icon-name",
						"default": "Icon Name"
					}
				},
				"id": {
					"type": "string",
					"description": "The unique identifier of the master.",
					"glyphsLabel": {
						"key": "master.id",
						"default": "Master ID"
					}
				},
				"metricValues": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/metricStore"
					},
					"default": [],
					"description": "The metric values of the master.",
					"glyphsLabel": {
						"key": "master.metrics",
						"default": "Metrics"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"name": {
					"type": "string",
					"description": "The name of the master. May be omitted in file format version 1 when equal to `Regular` or the default master name.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"numberValues": {
					"type": "array",
					"items": {
						"type": "number",
						"glyphsNumber": "f64"
					},
					"default": [],
					"description": "The number values of the master.",
					"glyphsLabel": {
						"key": "any.number-values",
						"default": "Number Values"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"properties": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/infoProperty"
					},
					"default": [],
					"description": "The properties of the master.",
					"glyphsLabel": {
						"key": "any.properties",
						"default": "Properties"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"stemValues": {
					"type": "array",
					"items": {
						"type": "number",
						"glyphsNumber": "f64"
					},
					"default": [],
					"description": "The stem values of the master.",
					"glyphsLabel": {
						"key": "master.stem-values",
						"default": "Stem Values"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"tempData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Auto-save files only: Temporary data associated with the master.",
					"glyphsLabel": {
						"key": "any.temp-data",
						"default": "Temporary Data"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"userData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Custom data associated with the master.",
					"glyphsLabel": {
						"key": "any.user-data",
						"default": "User Data"
					}
				},
				"visible": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": true,
					"description": "Whether the master is visible in the preview.",
					"glyphsLabel": {
						"key": "master.visible",
						"default": "Visible in Preview"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"id"
			],
			"glyphsType": "GSFontMaster"
		},
		"glyph": {
			"type": "object",
			"properties": {
				"case": {
					"enum": [
						"noCase",
						"upper",
						"lower",
						"smallCaps",
						"minor",
						"other"
					],
					"type": "string",
					"description": "The case of the glyph. If unset, then the case is based on a glyph data lookup based on the glyph name.",
					"glyphsLabel": {
						"key": "glyph.case",
						"default": "Case"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"category": {
					"type": "string",
					"description": "The category of the glyph. If unset, then the category is based on a glyph data lookup based on the glyph name.",
					"glyphsLabel": {
						"key": "glyph.category",
						"default": "Category"
					}
				},
				"color": {
					"$ref": "#/$defs/colorLabel",
					"description": "The color label of the glyph.",
					"glyphsLabel": {
						"key": "any.color-label",
						"default": "Color Label"
					}
				},
				"direction": {
					"enum": [
						"BIDI",
						"LTR",
						"RTL",
						"VTR",
						"VTL"
					],
					"type": "string",
					"description": "The writing direction of the glyph. If unset, then the writing direction is based on a glyph data lookup based on the glyph name.",
					"glyphsLabel": {
						"key": "glyph.writing-direction",
						"default": "Direction"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"export": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": true,
					"description": "Whether the glyph is exported.",
					"glyphsLabel": {
						"key": "glyph.export",
						"default": "Export"
					}
				},
				"glyphname": {
					"type": "string",
					"description": "The name of the glyph.",
					"glyphsLabel": {
						"key": "glyph.name",
						"default": "Glyphname"
					}
				},
				"kernBottom": {
					"type": "string",
					"description": "The kerning group of the bottom side of the glyph.",
					"glyphsLabel": {
						"key": "kerning-group.bottom",
						"default": "Bottom Kerning Group"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"kernLeft": {
					"type": "string",
					"description": "The kerning group of the left side of the glyph.",
					"glyphsLabel": {
						"key": "kerning-group.left",
						"default": "Left Kerning Group"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"kernRight": {
					"type": "string",
					"description": "The kerning group of the right side of the glyph.",
					"glyphsLabel": {
						"key": "kerning-group.right",
						"default": "Right Kerning Group"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"kernTop": {
					"type": "string",
					"description": "The kerning group of the top side of the glyph.",
					"glyphsLabel": {
						"key": "kerning-group.top",
						"default": "Top Kerning Group"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"lastChange": {
					"type": "string",
					"examples": [
						"2023-02-25 14:46:49 +0000"
					],
					"description": "The date and time of the last change of the glyph.",
					"glyphsLabel": {
						"key": "glyph.last-change",
						"default": "Last Change"
					}
				},
				"layers": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/layer"
					},
					"description": "The layers of the glyph.",
					"glyphsLabel": {
						"key": "glyph.layers",
						"default": "Layers"
					}
				},
				"locked": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the glyph is locked.",
					"glyphsLabel": {
						"key": "any.locked",
						"default": "Locked"
					}
				},
				"metricBottom": {
					"type": "string",
					"description": "The bottom metrics key of the glyph.",
					"glyphsLabel": {
						"key": "metrics-key.bottom",
						"default": "Bottom Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricLeft": {
					"type": "string",
					"description": "The left metrics key of the glyph.",
					"glyphsLabel": {
						"key": "metrics-key.left",
						"default": "Left Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricRight": {
					"type": "string",
					"description": "The right metrics key of the glyph.",
					"glyphsLabel": {
						"key": "metrics-key.right",
						"default": "Right Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricTop": {
					"type": "string",
					"description": "The top metrics key of the glyph.",
					"glyphsLabel": {
						"key": "metrics-key.top",
						"default": "Top Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricVertOrigin": {
					"type": "string",
					"description": "The vertical origin metrics key of the glyph.",
					"glyphsLabel": {
						"key": "metrics-key.vertical-origin",
						"default": "Vertical Origin Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricVertWidth": {
					"type": "string",
					"description": "The vertical width metrics key of the glyph.",
					"glyphsLabel": {
						"key": "metrics-key.vertical-width",
						"default": "Vertical Width Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricWidth": {
					"type": "string",
					"description": "The width metrics key of the glyph.",
					"glyphsLabel": {
						"key": "metrics-key.width",
						"default": "Width Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"note": {
					"type": "string",
					"default": "",
					"description": "A string serving as a description or comment about the glyph.",
					"glyphsLabel": {
						"key": "any.note",
						"default": "Note"
					}
				},
				"partsSettings": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/partProperty"
					},
					"default": [],
					"description": "A list of the Smart Glyph properties and their top/bottom values.",
					"glyphsLabel": {
						"key": "glyph.parts-settings",
						"default": "Parts Settings"
					}
				},
				"production": {
					"type": "string",
					"description": "The production name of the glyph. If unset, then the production name is based on a glyph data lookup based on the glyph name or the Unicode code point.",
					"glyphsLabel": {
						"key": "glyph.production-name",
						"default": "Production Name"
					}
				},
				"script": {
					"type": "string",
					"description": "The script of the glyph. If unset, then the script is based on a glyph data lookup based on the glyph name.",
					"glyphsLabel": {
						"key": "glyph.script",
						"default": "Script"
					}
				},
				"sortName": {
					"type": "string",
					"description": "The sort name of the glyph. If unset, then the sort name is based on a glyph data lookup based on the glyph name.",
					"glyphsLabel": {
						"key": "glyph.sort-name",
						"default": "Sort Name"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"sortNameKeep": {
					"type": "string",
					"description": "The sort name of the glyph used in the *Keep Alternates Next to Base Glyph* display mode. If unset, then the sort name is based on a glyph data lookup based on the glyph name.",
					"glyphsLabel": {
						"key": "glyph.sort-name-keep",
						"default": "Sort Name (Keep)"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"subCategory": {
					"type": "string",
					"description": "The subcategory of the glyph. If unset, then the subcategory is based on a glyph data lookup based on the glyph name.",
					"glyphsLabel": {
						"key": "glyph.subcategory",
						"default": "Subcategory"
					}
				},
				"tags": {
					"type": "array",
					"items": {
						"type": "string",
						"minLength": 1
					},
					"default": [],
					"description": "The tags of the glyph, sorted lexicographically.",
					"glyphsLabel": {
						"key": "any.tags",
						"default": "Tags"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"unicode": {
					"oneOf": [
						{
							"type": "integer",
							"glyphsNumber": "u32",
							"examples": [
								65,
								125184,
								0
							],
							"description": "The code point value.",
							"glyphsCondition": {
								"minVersion": 3
							}
						},
						{
							"type": "array",
							"items": {
								"type": "integer",
								"glyphsNumber": "u32",
								"examples": [
									65,
									125184,
									0
								]
							},
							"minItems": 2,
							"description": "An ascending list of code point values.",
							"glyphsCondition": {
								"minVersion": 3
							}
						}
					],
					"description": "The Unicode code points of the glyph.",
					"glyphsLabel": {
						"key": "glyph.unicode",
						"default": "Unicode"
					}
				},
				"userData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Custom data associated with the glyph.",
					"glyphsLabel": {
						"key": "any.user-data",
						"default": "User Data"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"glyphname"
			],
			"glyphsType": "GSGlyph"
		},
		"guide": {
			"type": "object",
			"properties": {
				"angle": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The angle at which the guide is drawn in degrees clockwise.",
					"glyphsLabel": {
						"key": "any.angle",
						"default": "Angle"
					}
				},
				"filter": {
					"type": "string",
					"description": "The filter of the guide. The syntax is the description of [NSPredicate](https://developer.apple.com/documentation/foundation/nspredicate). Omitted when no filter is defined.",
					"glyphsLabel": {
						"key": "any.predicate.filter",
						"default": "Filter"
					}
				},
				"grid": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The grid of the guide.",
					"glyphsLabel": {
						"key": "guide.grid",
						"default": "Grid"
					}
				},
				"length": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The length of a line-type guide.",
					"glyphsLabel": {
						"key": "guide.length",
						"default": "Length"
					}
				},
				"lockAngle": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the angle of the guide is locked.",
					"glyphsLabel": {
						"key": "guide.locked-angle",
						"default": "Locked Angle"
					}
				},
				"locked": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the guide is locked.",
					"glyphsLabel": {
						"key": "any.locked",
						"default": "Locked"
					}
				},
				"name": {
					"type": "string",
					"default": "",
					"description": "The name of the guide.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"orientation": {
					"$ref": "#/$defs/orientation",
					"default": "left",
					"description": "The orientation of the guide.",
					"glyphsLabel": {
						"key": "any.orientation",
						"default": "Orientation"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"pos": {
					"$ref": "#/$defs/pos",
					"default": [
						0,
						0
					],
					"description": "The position of the guide.",
					"glyphsLabel": {
						"key": "any.position",
						"default": "Position"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"showMeasurement": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the measurement of the guide is shown.",
					"glyphsLabel": {
						"key": "guide.show-measurement",
						"default": "Show Measurement"
					}
				},
				"size": {
					"$ref": "#/$defs/size",
					"default": [
						0,
						0
					],
					"description": "The size of the guide.",
					"glyphsLabel": {
						"key": "any.size",
						"default": "Size"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"type": {
					"enum": [
						"Line",
						"Circle",
						"Rect"
					],
					"default": "Line",
					"type": "string",
					"description": "The type of the guide.",
					"glyphsLabel": {
						"key": "any.type",
						"default": "Type"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"userData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Custom data associated with the guide.",
					"glyphsLabel": {
						"key": "any.user-data",
						"default": "User Data"
					},
					"glyphsCondition": {}
				}
			},
			"additionalProperties": false,
			"required": [],
			"glyphsType": "GSGuide"
		},
		"hint": {
			"type": "object",
			"properties": {
				"horizontal": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the hint is horizontal. Not written for path components.",
					"glyphsLabel": {
						"key": "hint.horizontal",
						"default": "Horizontal"
					}
				},
				"name": {
					"type": "string",
					"description": "The name of the hint.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"options": {
					"type": "number",
					"glyphsNumber": "u32",
					"default": 0,
					"description": "The options of the hint.",
					"glyphsLabel": {
						"key": "hint.options",
						"default": "Options"
					}
				},
				"origin": {
					"$ref": "#/$defs/indexPath",
					"description": "The origin of the hint.",
					"glyphsLabel": {
						"key": "hint.origin",
						"default": "Origin"
					}
				},
				"other1": {
					"$ref": "#/$defs/indexPath",
					"description": "The first other point of the hint, used by TrueType instructions that need more than two nodes.",
					"glyphsLabel": {
						"key": "hint.other1",
						"default": "Other 1"
					}
				},
				"other2": {
					"$ref": "#/$defs/indexPath",
					"description": "The second other point of the hint, used by TrueType instructions that need more than three nodes.",
					"glyphsLabel": {
						"key": "hint.other2",
						"default": "Other 2"
					}
				},
				"place": {
					"type": "array",
					"prefixItems": [
						{
							"type": "number",
							"glyphsNumber": "f64",
							"description": "The origin placement."
						},
						{
							"type": "number",
							"glyphsNumber": "f64",
							"description": "The width of the hint. `21` for bottom ghost hints and flex hints, `-20` for top ghost hints."
						}
					],
					"items": false,
					"minItems": 2,
					"maxItems": 2,
					"glyphsCondition": {
						"minVersion": 3
					},
					"glyphsLabel": {
						"key": "hint.place",
						"default": "Placement"
					}
				},
				"scale": {
					"$ref": "#/$defs/scale",
					"default": [
						1,
						1
					],
					"glyphsCondition": {
						"minVersion": 3
					},
					"description": "The scale of the hint.",
					"glyphsLabel": {
						"key": "any.scale",
						"default": "Scale"
					}
				},
				"settings": {
					"type": "object",
					"description": "The settings of the hint.",
					"glyphsLabel": {
						"key": "hint.settings",
						"default": "Settings"
					}
				},
				"stem": {
					"type": "number",
					"glyphsNumber": "i32",
					"description": "The stem of the hint.",
					"glyphsLabel": {
						"key": "hint.stem",
						"default": "Stem"
					}
				},
				"target": {
					"oneOf": [
						{
							"$ref": "#/$defs/indexPath"
						},
						{
							"enum": [
								"up",
								"down"
							],
							"type": "string",
							"description": "The target of a ghost hint.",
							"glyphsCondition": {
								"minVersion": 3
							}
						}
					],
					"glyphsLabel": {
						"key": "hint.target",
						"default": "Target"
					}
				},
				"type": {
					"enum": [
						"TopGhost",
						"BottomGhost",
						"Stem",
						"Flex",
						"TTStem",
						"TTShift",
						"TTSnap",
						"TTInterpolate",
						"TTDiagonal",
						"TTDelta",
						"Tag",
						"Corner",
						"Cap",
						"Brush",
						"Segment",
						"Auto",
						"Unknown"
					],
					"type": "string",
					"glyphsCondition": {
						"minVersion": 3
					},
					"description": "The type of the hint.",
					"glyphsLabel": {
						"key": "any.type",
						"default": "Type"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"type"
			],
			"glyphsType": "GSHint"
		},
		"image": {
			"type": "object",
			"properties": {
				"alpha": {
					"type": "number",
					"glyphsNumber": "f64",
					"minimum": 0,
					"maximum": 100,
					"default": 50,
					"description": "The alpha value of the image.",
					"glyphsLabel": {
						"key": "image.alpha",
						"default": "Alpha"
					}
				},
				"angle": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The rotation angle of the image in degrees clockwise.",
					"glyphsLabel": {
						"key": "any.angle",
						"default": "Angle"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"crop": {
					"type": "array",
					"prefixItems": [
						{
							"type": "number",
							"glyphsNumber": "f64",
							"description": "The X coordinate of the crop origin."
						},
						{
							"type": "number",
							"glyphsNumber": "f64",
							"description": "The Y coordinate of the crop origin."
						},
						{
							"type": "number",
							"glyphsNumber": "f64",
							"description": "The width of the crop size."
						},
						{
							"type": "number",
							"glyphsNumber": "f64",
							"description": "The height of the crop size."
						}
					],
					"minItems": 4,
					"maxItems": 4,
					"items": false,
					"glyphsCondition": {
						"minVersion": 3
					},
					"description": "The cropped frame of the image, specified as the crop origin X/Y and size width/height.",
					"glyphsLabel": {
						"key": "image.crop",
						"default": "Crop"
					}
				},
				"imageData": {
					"type": "string",
					"description": "The image data. Written only when no image path is set.",
					"glyphsLabel": {
						"key": "image.data",
						"default": "Data"
					},
					"glyphsCondition": {
						"autosave": true
					}
				},
				"imagePath": {
					"type": "string",
					"description": "The file path of the image file relative to the document file.",
					"glyphsLabel": {
						"key": "image.filepath",
						"default": "File Path"
					}
				},
				"imageType": {
					"enum": [
						"tif",
						"png",
						"jpg",
						"svg",
						"pdf",
						"unknown"
					],
					"type": "string",
					"description": "The type of the image. Written only when no image path is set.",
					"glyphsLabel": {
						"key": "image.type",
						"default": "Type"
					},
					"glyphsCondition": {
						"autosave": true
					}
				},
				"imageURL": {
					"type": "string",
					"description": "The URL bookmark data of the image file path.",
					"glyphsLabel": {
						"key": "image.url-bookmark",
						"default": "URL Bookmark"
					},
					"glyphsCondition": {
						"appStore": true
					}
				},
				"locked": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the image is locked.",
					"glyphsLabel": {
						"key": "any.locked",
						"default": "Locked"
					}
				},
				"pos": {
					"$ref": "#/$defs/pos",
					"default": [
						0,
						0
					],
					"description": "The position of the image.",
					"glyphsLabel": {
						"key": "any.position",
						"default": "Position"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"scale": {
					"$ref": "#/$defs/scale",
					"default": [
						1,
						1
					],
					"description": "The scale factor of the image.",
					"glyphsLabel": {
						"key": "any.scale",
						"default": "Scale"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"slant": {
					"$ref": "#/$defs/slant",
					"default": [
						0,
						0
					],
					"description": "The slant factor of the image.",
					"glyphsLabel": {
						"key": "any.slant",
						"default": "Slant"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				}
			},
			"additionalProperties": false,
			"glyphsType": "GSImage"
		},
		"instance": {
			"type": "object",
			"properties": {
				"axesValues": {
					"type": "array",
					"items": {
						"type": "number",
						"glyphsNumber": "f64"
					},
					"description": "The internal axis locations of the instance. These values are also used for the external axis locations, if no external axis locations are specified separately.",
					"glyphsLabel": {
						"key": "instance.axis-values",
						"default": "Axis Values"
					}
				},
				"customParameters": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/customParameter"
					},
					"default": [],
					"description": "The custom parameters of the instance.",
					"glyphsLabel": {
						"key": "any.custom-parameters",
						"default": "Custom Parameters"
					}
				},
				"exports": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": true,
					"description": "Whether the instance is exported.",
					"glyphsLabel": {
						"key": "instance.exports",
						"default": "Export"
					}
				},
				"instanceInterpolations": {
					"type": "object",
					"additionalProperties": {
						"oneOf": [
							{
								"type": "number",
								"glyphsNumber": "f64",
								"description": "The X and Y factors are the same."
							},
							{
								"type": "array",
								"prefixItems": [
									{
										"type": "number",
										"glyphsNumber": "f64",
										"description": "The X factor."
									},
									{
										"type": "number",
										"glyphsNumber": "f64",
										"description": "The Y factor."
									}
								],
								"items": false,
								"minItems": 2,
								"maxItems": 2,
								"description": "The X and Y factors.",
								"glyphsCondition": {
									"minVersion": 3
								}
							}
						]
					},
					"default": {},
					"description": "The interpolation factors where the keys are the master IDs."
				},
				"isBold": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the instance is bold.",
					"glyphsLabel": {
						"key": "instance.style.is-bold",
						"default": "Bold"
					}
				},
				"isItalic": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the instance is italic.",
					"glyphsLabel": {
						"key": "instance.style.is-italic",
						"default": "Italic"
					}
				},
				"linkStyle": {
					"type": "string",
					"description": "The name of the style-linked instance.",
					"glyphsLabel": {
						"key": "instance.style.link",
						"default": "Link Style"
					}
				},
				"manualInterpolation": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the `instanceInterpolations` values are used. Otherwise, the values are calculated from the axis values.",
					"glyphsLabel": {
						"key": "instance.manual-interpolation",
						"default": "Manual Interpolation"
					}
				},
				"name": {
					"type": "string",
					"examples": [
						"Regular",
						"Bold",
						"Italic",
						"Bold Italic"
					],
					"description": "The style name of the instance.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					},
					"glyphsCondition": {}
				},
				"properties": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/infoProperty"
					},
					"default": [],
					"glyphsLabel": {
						"key": "instance.properties",
						"default": "Properties"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"type": {
					"enum": [
						"single",
						"variable",
						"icon"
					],
					"type": "string",
					"default": "single",
					"glyphsCondition": {
						"minVersion": 3
					},
					"description": "The type of the instance.",
					"glyphsLabel": {
						"key": "any.type",
						"default": "Type"
					}
				},
				"userData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Custom data associated with the instance.",
					"glyphsLabel": {
						"key": "any.user-data",
						"default": "User Data"
					}
				},
				"visible": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": true,
					"description": "Whether the instance is visible when previewing all instances.",
					"glyphsLabel": {
						"key": "any.visible",
						"default": "Visible"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"weightClass": {
					"type": "integer",
					"glyphsNumber": "u16",
					"minimum": 1,
					"maximum": 1000,
					"default": 400,
					"glyphsCondition": {
						"minVersion": 3
					},
					"description": "The weight class of the instance.",
					"glyphsLabel": {
						"key": "instance.weight-class",
						"default": "Weight Class"
					}
				},
				"widthClass": {
					"type": "integer",
					"glyphsNumber": "u16",
					"minimum": 1,
					"maximum": 9,
					"default": 5,
					"glyphsCondition": {
						"minVersion": 3
					},
					"description": "The width class of the instance.",
					"glyphsLabel": {
						"key": "instance.width-class",
						"default": "Width Class"
					}
				}
			},
			"additionalProperties": false,
			"glyphsType": "GSInstance"
		},
		"indexPath": {
			"oneOf": [
				{
					"type": "array",
					"prefixItems": [
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a path shape."
						},
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a node on a path."
						}
					],
					"items": false,
					"minItems": 2,
					"maxItems": 2,
					"description": "The index path of a node on a path.",
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				{
					"type": "array",
					"prefixItems": [
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a path shape."
						},
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a node on a path."
						},
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of an inflection."
						}
					],
					"items": false,
					"minItems": 3,
					"maxItems": 3,
					"description": "The index path of an inflection, where the first two path components point to an on-curve node that finishes a curve segment. The inflection component is most likely `0`.",
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				{
					"type": "array",
					"prefixItems": [
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a path shape (P1)."
						},
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a node (N1) on P1."
						},
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a path shape (P2)."
						},
						{
							"type": "number",
							"glyphsNumber": "u32",
							"description": "The index of a node (N2) on P2."
						}
					],
					"items": false,
					"minItems": 4,
					"maxItems": 4,
					"description": "Points to the intersection of two path segments. The nodes are the ones finishing the segments.",
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				{
					"enum": [
						"lsb",
						"rsb"
					],
					"type": "string",
					"description": "An attachment to the left or right side-bearing.",
					"glyphsCondition": {
						"minVersion": 3
					}
				}
			]
		},
		"kerning": {
			"type": "object",
			"additionalProperties": {
				"type": "object",
				"additionalProperties": {
					"type": "object",
					"additionalProperties": {
						"type": "number",
						"glyphsNumber": "f64"
					},
					"description": "Maps glyph names or class names to kerning values."
				},
				"description": "Maps glyph names or class names to kerning partners."
			},
			"default": {},
			"description": "Maps master IDs to kerning definitions."
		},
		"layer": {
			"type": "object",
			"properties": {
				".lastUpdate": {
					"type": "number",
					"glyphsNumber": "i64",
					"description": "The time interval of the last update of the layer in seconds since 2001-01-01 00:00:00 GMT.",
					"glyphsLabel": {
						"key": "layer.last-update",
						"default": "Last Update"
					},
					"glyphsCondition": {
						"autosave": true
					}
				},
				"anchors": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/anchor"
					},
					"default": [],
					"description": "The anchors of the layer.",
					"glyphsLabel": {
						"key": "layer.anchors",
						"default": "Anchors"
					}
				},
				"annotations": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/annotation"
					},
					"default": [],
					"description": "The annotations of the layer.",
					"glyphsLabel": {
						"key": "layer.annotations",
						"default": "Annotations"
					}
				},
				"associatedMasterId": {
					"type": "string",
					"description": "The unique identifier of the associated master. Omitted when equalt to the layer ID.",
					"glyphsLabel": {
						"key": "layer.associated-master-id",
						"default": "Associated Master ID"
					}
				},
				"attr": {
					"$ref": "#/$defs/attr",
					"default": {},
					"description": "The attributes of the layer.",
					"glyphsLabel": {
						"key": "any.attributes",
						"default": "Attributes"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"background": {
					"type": "object",
					"properties": {
						"anchors": {
							"type": "array",
							"items": {
								"$ref": "#/$defs/anchor"
							},
							"default": [],
							"description": "The anchors of the background layer.",
							"glyphsLabel": {
								"key": "layer.anchors",
								"default": "Anchors"
							}
						},
						"annotations": {
							"type": "array",
							"items": {
								"$ref": "#/$defs/annotation"
							},
							"default": [],
							"description": "The annotations of the background layer.",
							"glyphsLabel": {
								"key": "layer.annotations",
								"default": "Annotations"
							}
						},
						"backgroundImage": {
							"$ref": "#/$defs/image",
							"description": "The background image of the layer.",
							"glyphsLabel": {
								"key": "layer.background-image",
								"default": "Background Image"
							}
						},
						"guides": {
							"type": "array",
							"items": {
								"$ref": "#/$defs/guide"
							},
							"default": [],
							"description": "The guides of the background layer.",
							"glyphsLabel": {
								"key": "layer.guides",
								"default": "Guides"
							},
							"glyphsCondition": {
								"minVersion": 3
							}
						},
						"hints": {
							"type": "array",
							"items": {
								"$ref": "#/$defs/hint"
							},
							"default": [],
							"description": "The hints of the background layer.",
							"glyphsLabel": {
								"key": "layer.hints",
								"default": "Hints"
							}
						},
						"shapes": {
							"type": "array",
							"items": {
								"$ref": "#/$defs/shape"
							},
							"default": [],
							"description": "The shapes of the background layer.",
							"glyphsLabel": {
								"key": "layer.shapes",
								"default": "Shapes"
							},
							"glyphsCondition": {
								"minVersion": 3
							}
						}
					}
				},
				"backgroundImage": {
					"$ref": "#/$defs/image",
					"description": "The background image of the layer.",
					"glyphsLabel": {
						"key": "layer.background-image",
						"default": "Background Image"
					}
				},
				"color": {
					"$ref": "#/$defs/colorLabel",
					"description": "The color label of the layer.",
					"glyphsLabel": {
						"key": "any.color-label",
						"default": "Color Label"
					}
				},
				"guides": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/guide"
					},
					"default": [],
					"description": "The guides of the layer.",
					"glyphsLabel": {
						"key": "layer.guides",
						"default": "Guides"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"hints": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/hint"
					},
					"default": [],
					"description": "The hints of the layer.",
					"glyphsLabel": {
						"key": "layer.hints",
						"default": "Hints"
					}
				},
				"layerId": {
					"type": "string",
					"description": "The unique ID of the layer. Matches the master ID when the layer is a master layer.",
					"glyphsLabel": {
						"key": "layer.id",
						"default": "Layer ID"
					}
				},
				"metricBottom": {
					"type": "string",
					"description": "The bottom metrics key of the layer.",
					"glyphsLabel": {
						"key": "metrics-key.bottom",
						"default": "Bottom Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricLeft": {
					"type": "string",
					"description": "The left metrics key of the layer.",
					"glyphsLabel": {
						"key": "metrics-key.left",
						"default": "Left Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricRight": {
					"type": "string",
					"description": "The right metrics key of the layer.",
					"glyphsLabel": {
						"key": "metrics-key.right",
						"default": "Right Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricTop": {
					"type": "string",
					"description": "The top metrics key of the layer.",
					"glyphsLabel": {
						"key": "metrics-key.top",
						"default": "Top Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricVertOrigin": {
					"type": "string",
					"description": "The vertical origin metrics key of the layer.",
					"glyphsLabel": {
						"key": "metrics-key.vertical-origin",
						"default": "Vertical Origin Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricVertWidth": {
					"type": "string",
					"description": "The vertical width metrics key of the layer.",
					"glyphsLabel": {
						"key": "metrics-key.vertical-width",
						"default": "Vertical Width Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"metricWidth": {
					"type": "string",
					"description": "The width metrics key of the layer.",
					"glyphsLabel": {
						"key": "metrics-key.width",
						"default": "Width Metrics Key"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"name": {
					"type": "string",
					"default": "",
					"description": "The name of the layer. Master layers and other special layers display a name in the Glyphs UI that is derived from the layers role (for example, the name of the master that the layer belongs to). These derived names are not written to the file. Instead, this name is only displayed in the UI for non-special layers (like backup layers).",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"partSelection": {
					"type": "object",
					"additionalProperties": {
						"enum": [
							1,
							2
						],
						"type": "integer"
					},
					"description": "The Smart Glyph setting of the layer. The keys are the property names. The values are either `1` if the layer corresponds to the bottom value of the property or `2` if the layer corresponds to the top value of the property. If a layer is neither the top nor the bottom value, the property is omitted.",
					"glyphsLabel": {
						"key": "layer.part-selection",
						"default": "Part Selection"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"shapes": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/shape"
					},
					"default": [],
					"description": "The shapes of the layer.",
					"glyphsLabel": {
						"key": "layer.shapes",
						"default": "Shapes"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"userData": {
					"$ref": "#/$defs/userData",
					"default": {},
					"description": "Custom data associated with the layer.",
					"glyphsLabel": {
						"key": "any.user-data",
						"default": "User Data"
					}
				},
				"vertOrigin": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The vertical origin of the layer.",
					"glyphsLabel": {
						"key": "layer.vertical-origin",
						"default": "Vertical Origin"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"vertWidth": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The vertical width of the layer.",
					"glyphsLabel": {
						"key": "layer.vertical-width",
						"default": "Vertical Width"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"visible": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the layer is visible.",
					"glyphsLabel": {
						"key": "any.visible",
						"default": "Visible"
					}
				},
				"width": {
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The width of the layer.",
					"glyphsLabel": {
						"key": "any.width",
						"default": "Width"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"layerId",
				"width"
			],
			"glyphsType": "GSLayer"
		},
		"metric": {
			"type": "object",
			"properties": {
				"filter": {
					"type": "string",
					"description": "The filter of the metric limiting the scope of the metric to a subset of glyphs.",
					"glyphsLabel": {
						"key": "any.predicate.filter",
						"default": "Filter"
					}
				},
				"horizontal": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the metric is a horizontal metric.",
					"glyphsLabel": {
						"key": "metric.horizontal",
						"default": "Horizontal"
					}
				},
				"name": {
					"type": "string",
					"description": "The name of the metric.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"type": {
					"enum": [
						"ascender",
						"cap height",
						"slant height",
						"x-height",
						"midHeight",
						"topHeight",
						"bodyHeight",
						"descender",
						"baseline",
						"italic angle",
						"italic slope"
					],
					"type": "string",
					"description": "The type of the metric.",
					"glyphsLabel": {
						"key": "metric.type",
						"default": "Type"
					}
				}
			},
			"additionalProperties": false,
			"glyphsType": "GSMetric"
		},
		"metricStore": {
			"type": "object",
			"properties": {
				"over": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The overshoot of the metric value.",
					"glyphsLabel": {
						"key": "metric-store.overshoot",
						"default": "Overshoot"
					}
				},
				"pos": {
					"type": "number",
					"glyphsNumber": "f64",
					"default": 0,
					"description": "The offset from the baseline of the metric value.",
					"glyphsLabel": {
						"key": "metric-store.offset",
						"default": "Offset"
					}
				}
			},
			"additionalProperties": false,
			"glyphsType": "GSMetricStore"
		},
		"node": {
			"type": "array",
			"prefixItems": [
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The x-coordinate of the node."
				},
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The y-coordinate of the node."
				},
				{
					"type": "string",
					"minLength": 1,
					"description": "The configuration of the node expressed as a sequence of characters. Types: `m`: move, `l`: line, `c`: cubic curve, `q`: quadratic curve, `o`: off-curve. Connection (may follow `l`, `c`, `q`): `s`: smooth. Orientation (left is the default): `R`: right, `C`: center. Locking (not locked is the default): `X`: locked.",
					"glyphsCondition": {}
				},
				{
					"$ref": "#/$defs/attrShape",
					"default": {},
					"description": "The attributes of the node."
				}
			],
			"minItems": 3,
			"maxItems": 4,
			"glyphsCompact": true,
			"glyphsCondition": {
				"minVersion": 3
			},
			"glyphsType": "GSNode"
		},
		"infoProperty": {
			"oneOf": [
				{
					"type": "object",
					"properties": {
						"key": {
							"type": "string",
							"description": "The key of the property.",
							"glyphsLabel": {
								"key": "any.key",
								"default": "Key"
							}
						},
						"value": {
							"description": "The value of the property.",
							"glyphsLabel": {
								"key": "any.value",
								"default": "Value"
							}
						}
					},
					"additionalProperties": false,
					"required": [
						"key",
						"value"
					]
				},
				{
					"type": "object",
					"properties": {
						"key": {
							"type": "string",
							"description": "The key of the property.",
							"glyphsLabel": {
								"key": "any.key",
								"default": "Key"
							}
						},
						"values": {
							"type": "array",
							"items": {
								"$ref": "#/$defs/infoValue"
							},
							"description": "The values of the property.",
							"glyphsLabel": {
								"key": "any.values",
								"default": "Values"
							}
						}
					},
					"additionalProperties": false,
					"required": [
						"key",
						"values"
					]
				}
			],
			"glyphsType": "GSInfoProperty"
		},
		"infoValue": {
			"type": "object",
			"properties": {
				"language": {
					"type": "string",
					"examples": [
						"dflt",
						"DEU"
					],
					"description": "The language tag of the string value. The tag is based on the [OpenType Language System Tags](https://learn.microsoft.com/en-us/typography/opentype/spec/languagetags) but omitts trailing whitespace.",
					"glyphsLabel": {
						"key": "localized-string.language",
						"default": "Language"
					}
				},
				"value": {
					"type": "string",
					"description": "The localized string value.",
					"glyphsLabel": {
						"key": "any.value",
						"default": "Value"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"language",
				"value"
			],
			"glyphsType": "GSInfoValue"
		},
		"orientation": {
			"enum": [
				"left",
				"center",
				"right"
			],
			"type": "string",
			"glyphsType": "GSElementOrientation"
		},
		"partProperty": {
			"type": "object",
			"properties": {
				"bottomName": {
					"type": "string",
					"description": "The name of the bottom value of the property. (Unused)",
					"glyphsLabel": {
						"key": "part-property.bottom-name",
						"default": "Bottom Name"
					},
					"glyphsCondition": {}
				},
				"bottomValue": {
					"type": "integer",
					"glyphsNumber": "i32",
					"description": "The lower end of the value range of the property.",
					"glyphsLabel": {
						"key": "part-property.bottom-value",
						"default": "Bottom"
					}
				},
				"name": {
					"type": "string",
					"description": "The name of the property.",
					"glyphsLabel": {
						"key": "any.name",
						"default": "Name"
					}
				},
				"topName": {
					"type": "string",
					"description": "The name of the top value of the property. (Unused)",
					"glyphsLabel": {
						"key": "part-property.top-name",
						"default": "Top Name"
					},
					"glyphsCondition": {}
				},
				"topValue": {
					"type": "integer",
					"glyphsNumber": "i32",
					"description": "The upper end of the value range of the property.",
					"glyphsLabel": {
						"key": "part-property.top-value",
						"default": "Top"
					}
				}
			},
			"additionalProperties": false,
			"glyphsType": "GSPartProperty"
		},
		"path": {
			"type": "object",
			"properties": {
				"attr": {
					"$ref": "#/$defs/attrShape",
					"default": {},
					"description": "The attributes of the path.",
					"glyphsLabel": {
						"key": "attributes",
						"default": "Attributes"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"closed": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"description": "Whether the path is closed.",
					"glyphsLabel": {
						"key": "path.closed",
						"default": "Closed"
					}
				},
				"locked": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether the path is locked.",
					"glyphsLabel": {
						"key": "any.locked",
						"default": "Locked"
					},
					"glyphsCondition": {
						"minVersion": 3
					}
				},
				"nodes": {
					"type": "array",
					"items": {
						"$ref": "#/$defs/node"
					},
					"description": "The on- and off-curve nodes of the path.",
					"glyphsLabel": {
						"key": "path.nodes",
						"default": "Nodes"
					}
				}
			},
			"additionalProperties": false,
			"required": [
				"closed",
				"nodes"
			],
			"glyphsType": "GSPath"
		},
		"pos": {
			"type": "array",
			"prefixItems": [
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The x-coordinate of the position."
				},
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The y-coordinate of the position."
				}
			],
			"items": false,
			"minItems": 2,
			"maxItems": 2,
			"glyphsCompact": true
		},
		"scale": {
			"type": "array",
			"prefixItems": [
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The horizontal scale factor."
				},
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The vertical scale factor."
				}
			],
			"items": false,
			"minItems": 2,
			"maxItems": 2,
			"glyphsCompact": true
		},
		"shape": {
			"oneOf": [
				{
					"$ref": "#/$defs/path"
				},
				{
					"$ref": "#/$defs/component"
				}
			],
			"glyphsType": "GSShape"
		},
		"size": {
			"type": "array",
			"prefixItems": [
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The width."
				},
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The height."
				}
			],
			"items": false,
			"minItems": 2,
			"maxItems": 2,
			"glyphsCompact": true
		},
		"slant": {
			"type": "array",
			"prefixItems": [
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The horizontal slant factor."
				},
				{
					"type": "number",
					"glyphsNumber": "f64",
					"description": "The vertical slant factor."
				}
			],
			"items": false,
			"minItems": 2,
			"maxItems": 2,
			"glyphsCompact": true
		},
		"userData": {
			"type": "object"
		}
	},
	"properties": {
		".appVersion": {
			"type": "string",
			"examples": [
				"3210"
			],
			"description": "The build number of Glyphs used to save the file.",
			"glyphsLabel": {
				"key": "document.app-version",
				"default": "App Version"
			}
		},
		".formatVersion": {
			"enum": [
				3
			],
			"description": "The version of the file format. If unset, the file is considered to be version 1 as used by Glyphs 1 and Glyphs 2.",
			"glyphsCondition": {
				"minVersion": 3
			},
			"type": "integer",
			"glyphsLabel": {
				"key": "document.format-version",
				"default": "Format Version"
			}
		},
		".storedFileType": {
			"type": "string",
			"examples": [
				"com.schriftgestaltung.glyphs",
				"com.glyphsapp.glyphspackage"
			],
			"description": "The file type of the document. The value matches the one provided by [NSDocument.fileType](https://developer.apple.com/documentation/appkit/nsdocument/filetype).",
			"glyphsLabel": {
				"key": "document.file-type.stored",
				"default": "Stored File Type"
			},
			"glyphsCondition": {
				"autosave": true
			}
		},
		".storedFormatVersion": {
			"enum": [
				1,
				3,
				4
			],
			"type": "integer",
			"description": "The version of the file format as specified in the document in case it differs from `.formatVersion`. This values does not describe the contents of the file, just the intended file format for the non-auto-save file.",
			"glyphsLabel": {
				"key": "document.format-version.stored",
				"default": "Stored Format Version"
			},
			"glyphsCondition": {
				"autosave": true
			}
		},
		"DisplayStrings": {
			"$ref": "#/$defs/displayStrings",
			"default": [],
			"description": "The strings of the Edit View tabs. Omitted when the `Write DisplayStrings` custom parameter is set to false. Omitted and written as `displayStrings` to `UIState.plist` in case of a package file.",
			"glyphsLabel": {
				"key": "document.display-strings",
				"default": "Display Strings"
			},
			"glyphsCondition": {
				"packages": false
			}
		},
		"axes": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/axis"
			},
			"default": [],
			"description": "The designspace variation axes of the font.",
			"glyphsLabel": {
				"key": "font.axes",
				"default": "Axes"
			},
			"glyphsCondition": {
				"minVersion": 3
			}
		},
		"classes": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/class"
			},
			"default": [],
			"description": "The OpenType layout classes of the font.",
			"glyphsLabel": {
				"key": "font.classes",
				"default": "Classes"
			}
		},
		"customParameters": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/customParameter"
			},
			"default": [],
			"description": "The custom parameters of the font.",
			"glyphsLabel": {
				"key": "any.custom-parameters",
				"default": "Custom Parameters"
			}
		},
		"date": {
			"type": "string",
			"examples": [
				"2024-07-17 03:14:15 +0000"
			],
			"description": "The moment in time that is used as the creation date of exported font files including date, time, and timezone.",
			"glyphsLabel": {
				"key": "font.creation-date",
				"default": "Date"
			}
		},
		"familyName": {
			"type": "string",
			"description": "The font family name. Corresponds to the default value of the `familyNames` property.",
			"glyphsLabel": {
				"key": "font.family-name",
				"default": "Family Name"
			},
			"glyphsCondition": {}
		},
		"featurePrefixes": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/featurePrefix"
			},
			"default": [],
			"description": "The OpenType layout feature prefixes of the font.",
			"glyphsLabel": {
				"key": "font.feature-prefixes",
				"default": "Feature Prefixes"
			}
		},
		"features": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/feature"
			},
			"default": [],
			"description": "The OpenType layout features of the font.",
			"glyphsLabel": {
				"key": "font.features",
				"default": "Features"
			}
		},
		"fontMaster": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/fontMaster"
			},
			"minItems": 1,
			"description": "The masters of the font.",
			"glyphsLabel": {
				"key": "font.masters",
				"default": "Masters"
			}
		},
		"glyphs": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/glyph"
			},
			"description": "The glyphs of the font. The order is used on export unless the `glyphOrder` custom parameter is set.",
			"glyphsLabel": {
				"key": "font.glyphs",
				"default": "Glyphs"
			},
			"glyphsCondition": {
				"package": false
			}
		},
		"instances": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/instance"
			},
			"default": [],
			"description": "The instances of the font.",
			"glyphsLabel": {
				"key": "instances",
				"default": "Instances"
			}
		},
		"kerningLTR": {
			"$ref": "#/$defs/kerning",
			"description": "The left-to-right kerning of the font.",
			"glyphsLabel": {
				"key": "font.kerning.ltr",
				"default": "Kerning (LTR)"
			},
			"glyphsCondition": {
				"regular": {
					"minVersion": 3
				},
				"package": {
					"minVersion": 3
				}
			}
		},
		"kerningRTL": {
			"$ref": "#/$defs/kerning",
			"description": "The right-to-left kerning of the font.",
			"glyphsLabel": {
				"key": "font.kerning.rtl",
				"default": "Kerning (RTL)"
			},
			"glyphsCondition": {
				"regular": {
					"minVersion": 3
				},
				"package": {
					"minVersion": 3
				}
			}
		},
		"kerningVertical": {
			"$ref": "#/$defs/kerning",
			"description": "The vertical kerning of the font.",
			"glyphsLabel": {
				"key": "font.kerning.vertical",
				"default": "Kerning (Vertical)"
			},
			"glyphsCondition": {
				"regular": {
					"minVersion": 3
				},
				"package": {
					"minVersion": 3
				}
			}
		},
		"metrics": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/metric"
			},
			"default": [],
			"description": "The metrics of the font.",
			"glyphsLabel": {
				"key": "font.metrics",
				"default": "Metrics"
			},
			"glyphsCondition": {
				"minVersion": 3
			}
		},
		"note": {
			"type": "string",
			"description": "The note about the font.",
			"glyphsLabel": {
				"key": "any.note",
				"default": "Note"
			},
			"glyphsCondition": {
				"minVersion": 3
			}
		},
		"numbers": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/metric"
			},
			"default": [],
			"description": "The numbers of the font.",
			"glyphsLabel": {
				"key": "font.numbers",
				"default": "Numbers"
			},
			"glyphsCondition": {
				"minVersion": 3
			}
		},
		"properties": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/infoProperty"
			},
			"default": [],
			"description": "The properties of the font.",
			"glyphsLabel": {
				"key": "any.properties",
				"default": "Properties"
			},
			"glyphsCondition": {
				"minVersion": 3
			}
		},
		"settings": {
			"type": "object",
			"properties": {
				"disablesAutomaticAlignment": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether automatic alignment of components is disabled.",
					"glyphsLabel": {
						"key": "font.setting.disables-automatic-alignment",
						"default": "Disables Automatic Alignment"
					}
				},
				"disablesNiceNames": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether to use production names instead of nice names.",
					"glyphsLabel": {
						"key": "font.setting.disables-nice-names",
						"default": "Disables Nice Names"
					}
				},
				"gridLength": {
					"type": "integer",
					"glyphsNumber": "u32",
					"default": 1,
					"description": "The main grid length.",
					"glyphsLabel": {
						"key": "font.setting.grid.length",
						"default": "Grid Length"
					}
				},
				"gridSubDivision": {
					"type": "integer",
					"glyphsNumber": "u32",
					"default": 1,
					"description": "The grid sub-division size.",
					"glyphsLabel": {
						"key": "font.setting.grid.subdivision",
						"default": "Grid Subdivision"
					}
				},
				"keepAlternatesTogether": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether to keep alternates glyphs together in Font View.",
					"glyphsLabel": {
						"key": "font.setting.keep-alternates-together",
						"default": "Keep Alternates Together"
					}
				},
				"keyboardIncrement": {
					"type": "number",
					"glyphsNumber": "f32",
					"default": 1,
					"description": "The standard keyboard increment.",
					"glyphsLabel": {
						"key": "font.setting.keyboard-increment",
						"default": "Keyboard Increment"
					}
				},
				"keyboardIncrementBig": {
					"type": "number",
					"glyphsNumber": "f32",
					"default": 10,
					"description": "The keyboard increment when holding the Shift key.",
					"glyphsLabel": {
						"key": "font.setting.keyboard-increment-big",
						"default": "Keyboard Increment (\u21e7)"
					}
				},
				"keyboardIncrementHuge": {
					"type": "number",
					"glyphsNumber": "f32",
					"default": 100,
					"description": "The keyboard increment when holding both the Shift and Command key.",
					"glyphsLabel": {
						"key": "font.setting.keyboard-increment-huge",
						"default": "Keyboard Increment (\u21e7\u2318)"
					}
				},
				"previewRemoveOverlap": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether to preview the effect of the Remove Overlaps filter in Edit View.",
					"glyphsLabel": {
						"key": "font.setting.preview-remove-overlap",
						"default": "Preview Remove Overlap"
					}
				},
				"snapToObjects": {
					"enum": [
						0,
						1
					],
					"type": "integer",
					"glyphsNumber": "bool",
					"default": false,
					"description": "Whether snapping is enabled in Edit View.",
					"glyphsLabel": {
						"key": "font.setting.snap-to-objects",
						"default": "Snap to Objects"
					}
				},
				"fontType": {
					"enum": [
						"default",
						"variable",
						"layerFont",
						"iconSet"
					],
					"type": "string",
					"default": "default",
					"description": "The type of the font.",
					"glyphsLabel": {
						"key": "font.setting.type",
						"default": "Font Type"
					}
				}
			},
			"additionalProperties": false,
			"default": {},
			"glyphsCondition": {
				"minVersion": 3
			}
		},
		"stems": {
			"type": "array",
			"items": {
				"$ref": "#/$defs/metric"
			},
			"default": [],
			"description": "The stems of the font.",
			"glyphsLabel": {
				"key": "font.stems",
				"default": "Stems"
			},
			"glyphsCondition": {
				"minVersion": 3
			}
		},
		"unitsPerEm": {
			"type": "integer",
			"glyphsNumber": "u32",
			"description": "The number of coordinate units on the em square.",
			"glyphsLabel": {
				"key": "font.units-per-em",
				"default": "UPM"
			}
		},
		"userData": {
			"$ref": "#/$defs/userData",
			"default": {},
			"description": "Custom data associated with the font.",
			"glyphsLabel": {
				"key": "any.user-data",
				"default": "User Data"
			}
		},
		"versionMajor": {
			"type": "integer",
			"glyphsNumber": "u32",
			"description": "The major version number of the font.",
			"glyphsLabel": {
				"key": "font.version.major",
				"default": "Major Version"
			}
		},
		"versionMinor": {
			"type": "integer",
			"glyphsNumber": "u32",
			"description": "The minor version number of the font.",
			"glyphsLabel": {
				"key": "font.version.minor",
				"default": "Minor Version"
			}
		}
	},
	"additionalProperties": false,
	"required": [
		".appVersion",
		".formatVersion",
		"fontMaster",
		"glyphs",
		"unitsPerEm",
		"versionMajor",
		"versionMinor"
	]
}