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