{ "name": "Spline Font Database", "scopeName": "text.sfd", "fileTypes": [ "sfd" ], "firstLineMatch": "^SplineFontDB: [\\d.]+", "patterns": [ { "include": "#main" } ], "repository": { "main": { "patterns": [ { "include": "#punctuation" }, { "include": "#private" }, { "include": "#image" }, { "include": "#pickleData" }, { "include": "#sections" }, { "include": "#copyright" }, { "include": "#property" }, { "include": "#control" }, { "include": "#address" }, { "include": "#encoding" }, { "include": "source.fontforge#shared" }, { "include": "#colour" } ] }, "punctuation": { "patterns": [ { "match": "<|>", "name": "punctuation.definition.brackets.angle.sfd" }, { "match": "[{}]", "name": "punctuation.definition.brackets.curly.sfd" } ] }, "private": { "name": "meta.section.private.sfd", "begin": "^BeginPrivate(?=:)", "end": "^EndPrivate\\b", "beginCaptures": { "0": { "name": "keyword.control.begin.private.sfd" } }, "endCaptures": { "0": { "name": "keyword.control.end.private.sfd" } }, "patterns": [ { "match": "^\\S+", "name": "entity.name.private.property.sfd" }, { "include": "$self" } ] }, "image": { "name": "meta.image.sfd", "begin": "^(Image)(?=:)(.+)$", "end": "^(EndImage)\\b", "contentName": "string.unquoted.raw.data.sfd", "beginCaptures": { "1": { "name": "keyword.control.begin.image.sfd" }, "2": { "patterns": [ { "include": "$self" } ] } }, "endCaptures": { "1": { "name": "keyword.control.end.image.sfd" } } }, "pickleData": { "name": "meta.pickle-data.sfd", "begin": "^(PickledData)(:)\\s*(\")", "end": "\"", "beginCaptures": { "1": { "name": "entity.name.property.sfd" }, "2": { "name": "punctuation.separator.dictionary.key-value.sfd" }, "3": { "name": "punctuation.definition.string.begin.sfd" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.sfd" } }, "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.sfd" } ] }, "sections": { "name": "meta.section.${2:/downcase}.sfd", "begin": "^(Start|Begin)([A-Z]\\w+)(?=:)", "end": "^(End\\2)\\b", "beginCaptures": { "0": { "name": "keyword.control.begin.${2:/downcase}.sfd" } }, "endCaptures": { "0": { "name": "keyword.control.end.${2:/downcase}.sfd" } }, "patterns": [ { "include": "$self" } ] }, "control": { "name": "keyword.control.${1:/downcase}.sfd", "match": "\\b(Fore|Back|SplineSet|^End\\w+)\\b" }, "colour": { "name": "constant.other.hex.colour.sfd", "match": "(#)[A-Fa-f0-9]{3,}|(?<=\\s)[A-Fa-f0-9]{6,8}", "captures": { "1": { "name": "punctuation.definition.colour.sfd" } } }, "encoding": { "name": "constant.language.encoding.sfd", "match": "(?i)\\b(ISO[-\\w]+)(?<=\\d)(?=\\s|$)" }, "copyright": { "name": "meta.${1:/downcase}-string.sfd", "begin": "^(Copyright|U?Comments?|\\w+Name)(:)", "end": "$", "beginCaptures": { "1": { "name": "entity.name.property.sfd" }, "2": { "name": "punctuation.separator.dictionary.key-value.sfd" } }, "patterns": [ { "include": "source.fontforge#stringEscapes" } ] }, "address": { "match": "\\d+[xX][A-Fa-f0-9]+", "name": "constant.numeric.hexadecimal.sfd" }, "property": { "match": "^([^:]+)(:)", "name": "meta.dictionary.key-value.sfd", "captures": { "1": { "name": "entity.name.property.sfd" }, "2": { "name": "punctuation.separator.dictionary.key-value.sfd" } } } } }