{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",

    "patternProperties": {
        "^[a-z-]*$": {
            "$ref": "#/definitions/font"
        }
    },

    "definitions": {
        "font": {
            "type": "object",
            "properties": {
                "alias": {
                    "type": "string",
                    "pattern": "^[a-z][a-z0-9-]+$"
                },
                "name": { "type": "string" },
                "author": { "type": "string" },
                "description": { "type": "string" },
                "year": { "type": "integer" },
                "website": {
                    "type": "string",
                    "format": "uri"
                },
                "license": {
                    "type": "string",
                    "enum": [
                        "commercial",
                        "Apache",
                        "Bitstream Vera",
                        "BSD-2-Clause",
                        "CC BY-SA 4.0",
                        "CC BY-ND 3.0",
                        "GNU GPL",
                        "MIT",
                        "public domain",
                        "SIL OFL",
                        "WTFPL"
                    ]
                },
                "ligatures": { "type": "boolean" },
                "style": {
                    "type": "string",
                    "enum": ["serif", "sans"]
                },
                "rendering": {
                    "type": "string",
                    "enum": ["bitmap", "vector"]
                },
                "bitmap size": {
                    "type": "number"
                },
                "zerostyle": {
                    "type": "string",
                    "enum": ["empty", "slashed", "dotted"]
                },
                "variants": {
                    "oneOf": [
                        {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "pattern": "^([a-z-]+|\\d00)$"
                            },
                            "minItems": 1
                        },
                        {
                            "type": "string"
                        }
                    ]
                }
            },
            "additionalProperties": false,
            "required": [
                "author",
                "description",
                "ligatures",
                "name",
                "rendering",
                "style",
                "website",
                "year"
            ]
        }
    }
}
