{ "name": "Spline Font Database", "scopeName": "text.sfd", "fileTypes": [ "sfd" ], "firstLineMatch": "^SplineFontDB: [\\d.]+", "patterns": [ { "include": "#main" } ], "repository": { "main": { "patterns": [ { "include": "#punctuation" }, { "include": "#private" }, { "include": "#header" }, { "include": "#names" }, { "include": "#image" }, { "include": "#pickleData" }, { "include": "#sections" }, { "include": "#copyright" }, { "include": "#comment" }, { "include": "#property" }, { "include": "#control" }, { "include": "#address" }, { "include": "#encoding" }, { "include": "source.fontforge#shared" }, { "include": "#colour" }, { "include": "#unquoted" } ] }, "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": "variable.other.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" } ] }, "header": { "name": "meta.header.sfd", "match": "^(SplineFontDB)(:)", "captures": { "1": { "name": "keyword.control.start.file.afm" }, "2": { "name": "punctuation.separator.dictionary.key-value.sfd" } } }, "names": { "name": "meta.dictionary.key-value.sfd", "match": "^((\\w+)Name)(:)\\s*(\\S+.*?)\\s$", "captures": { "1": { "name": "variable.other.property.sfd" }, "3": { "name": "punctuation.separator.dictionary.key-value.sfd" }, "4": { "name": "entity.name.${2:/downcase},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.copyright-string.sfd", "begin": "^(Copyright)(:)", "end": "$", "beginCaptures": { "1": { "name": "variable.other.property.sfd" }, "2": { "name": "punctuation.separator.dictionary.key-value.sfd" } }, "patterns": [ { "include": "source.fontforge#stringEscapes" } ], "contentName": "string.unquoted.copyright.info.sfd" }, "comment": { "name": "meta.user-comments.sfd", "begin": "^(U?Comments?)(:)", "end": "$", "beginCaptures": { "1": { "name": "variable.other.property.sfd" }, "2": { "name": "punctuation.separator.dictionary.key-value.sfd" } }, "patterns": [ { "include": "#source.fontforge#stringEscapes" } ], "contentName": "comment.line.field.sfd" }, "address": { "match": "\\d+[xX][A-Fa-f0-9]+", "name": "constant.numeric.hexadecimal.sfd" }, "property": { "match": "^([^:]+)(:)", "name": "meta.dictionary.key-value.sfd", "captures": { "1": { "name": "variable.other.property.sfd" }, "2": { "name": "punctuation.separator.dictionary.key-value.sfd" } } }, "unquoted": { "name": "string.unquoted.property.sfd", "match": "\\S+" } } }