diff --git a/Makefile b/Makefile index 9eee83f9b..a8276b34c 100644 --- a/Makefile +++ b/Makefile @@ -89,4 +89,4 @@ clean: rm -rf build/* screenshots: - docker run --volume=$(shell pwd):/KaTeX ss + dockers/Screenshotter/screenshotter.sh diff --git a/README.md b/README.md index 3fd243193..c1aa5f710 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,9 @@ Make sure to include the CSS and font files, but there is no need to include the You can provide an object of options as the last argument to `katex.render` and `katex.renderToString`. Available options are: - `displayMode`: `boolean`. If `true` the math will be rendered in display mode, which will put the math in display style (so `\int` and `\sum` are large, for example), and will center the math on the page on its own line. If `false` the math will be rendered in inline mode. (default: `false`) +- `breakOnUnsupportedCmds`: `boolean`. If `true`, KaTeX will generate a `ParseError` when it encounters an unsupported command. If `false`, KaTeX will render the command as text +in the color given by `errorColor`. (default: `true`) +- `errorColor`: `string`. A color string given in the format `"#XXX"` or `"#XXXXXX"`. This option determines the color which unsupported commands are rendered in. (default: `#cc0000`) For example: diff --git a/bower.json b/bower.json index 65d7c76ba..0c9c13377 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "KaTeX", - "version": "0.4.2", + "version": "0.6.0-pre", "main": [ "dist/katex.min.js", "dist/katex.min.css" diff --git a/dockers/MathJaxFonts/Dockerfile b/dockers/MathJaxFonts/Dockerfile index e468d75f6..dc5b4e5cf 100644 --- a/dockers/MathJaxFonts/Dockerfile +++ b/dockers/MathJaxFonts/Dockerfile @@ -2,8 +2,28 @@ FROM ubuntu:14.04 MAINTAINER xymostech # Install things -RUN apt-get -qq update -RUN apt-get -qqy install git dvipng default-jre default-jdk texlive wget fontforge mftrace fonttools optipng advancecomp man-db build-essential unzip zlib1g-dev python-fontforge ruby woff-tools || true +RUN apt-get -qq update && apt-get -qqy install \ + git \ + dvipng \ + default-jre \ + default-jdk \ + texlive \ + wget \ + fontforge \ + mftrace \ + fonttools \ + optipng \ + advancecomp \ + man-db \ + build-essential \ + unzip \ + zlib1g-dev \ + python-fontforge \ + ruby \ + woff-tools \ + pkg-config \ + libharfbuzz-dev \ + libfreetype6-dev || true RUN gem install ttfunk --version 1.1.1 # Download yuicompressor @@ -11,7 +31,7 @@ RUN mkdir /usr/share/yui-compressor/ RUN wget "https://github.com/yui/yuicompressor/releases/download/v2.4.8/yuicompressor-2.4.8.jar" -O /usr/share/yui-compressor/yui-compressor.jar # Download batik-ttf2svg.jar -RUN wget "http://supergsego.com/apache/xmlgraphics/batik/batik-1.7.zip" +RUN wget "https://archive.apache.org/dist/xmlgraphics/batik/batik-1.7.zip" RUN unzip -qq batik-1.7.zip RUN mv batik-1.7/batik-ttf2svg.jar /usr/share/java/ @@ -22,6 +42,13 @@ RUN sed -i "1s/^/#include /" ttf2eot-0.0.2-2/OpenTypeUtilities.h RUN make -C ttf2eot-0.0.2-2/ RUN mv ttf2eot-0.0.2-2/ttf2eot /usr/bin/ +# Download and compile ttfautohint +RUN wget "http://download.savannah.gnu.org/releases/freetype/ttfautohint-1.3.tar.gz" +RUN tar -xzf ttfautohint-1.3.tar.gz +RUN cd ttfautohint-1.3/ && ./configure --without-qt +RUN make -C ttfautohint-1.3/ +RUN mv ttfautohint-1.3/frontend/ttfautohint /usr/bin + # Download and compile woff2_compress RUN git clone "https://code.google.com/p/font-compression-reference/" woff2_compress RUN make -C woff2_compress/woff2/ diff --git a/dockers/Screenshotter/screenshotter.sh b/dockers/Screenshotter/screenshotter.sh index d2cb1a5b4..93287aec7 100755 --- a/dockers/Screenshotter/screenshotter.sh +++ b/dockers/Screenshotter/screenshotter.sh @@ -8,7 +8,7 @@ # directly. status=0 -for browserTag in firefox:2.46.0 chrome:2.46.0; do +for browserTag in firefox:2.46.0; do browser=${browserTag%:*} image=selenium/standalone-${browserTag} echo "Starting container for ${image}" diff --git a/metrics/extract_tfms.py b/metrics/extract_tfms.py index 4708cf33c..fac5f2a68 100755 --- a/metrics/extract_tfms.py +++ b/metrics/extract_tfms.py @@ -31,7 +31,11 @@ def main(): 'cmsy10.tfm', 'cmti10.tfm', 'msam10.tfm', - 'msbm10.tfm' + 'msbm10.tfm', + 'eufm10.tfm', + 'cmtt10.tfm', + 'rsfs10.tfm', + 'cmss10.tfm', ] # Extracted by running `\font\a=` and then `\showthe\skewchar\a` in @@ -48,7 +52,11 @@ def main(): 'cmsy10': 48, 'cmti10': None, 'msam10': None, - 'msbm10': None + 'msbm10': None, + 'eufm10': None, + 'cmtt10': None, + 'rsfs10': None, + 'cmss10': None, } font_name_to_tfm = {} @@ -68,7 +76,11 @@ def main(): tex_char_num = int(char_data['char']) yshift = float(char_data['yshift']) - tfm_char = font_name_to_tfm[font].get_char_metrics(tex_char_num) + if family == "Script-Regular": + tfm_char = font_name_to_tfm[font].get_char_metrics(tex_char_num, + fix_rsfs=True) + else: + tfm_char = font_name_to_tfm[font].get_char_metrics(tex_char_num) height = round(tfm_char.height + yshift / 1000.0, 5) depth = round(tfm_char.depth - yshift / 1000.0, 5) diff --git a/metrics/mapping.pl b/metrics/mapping.pl index 1a346657b..bc779f5da 100755 --- a/metrics/mapping.pl +++ b/metrics/mapping.pl @@ -153,7 +153,11 @@ $map{cmmi10} = { "Main-Italic" => [ 0x7B => 0x131, # \imath 0x7C => 0x237, # \jmath - ] + ], + + "Caligraphic-Regular" => [ + [0x30,0x39] => 0x30, # Oldstyle 0-9 + ], }; $map{cmsy10} = { @@ -257,6 +261,10 @@ $map{cmsy10} = { "Math-Italic" => [ 0x36 => 0x2F # \not ], + + "Caligraphic-Regular" => [ + [0x41,0x5A] => 0x41, # A-Z + ], }; $map{cmex10} = { @@ -939,6 +947,106 @@ $map{msbm10} = { ], }; +$map{eufm10} = { + "Fraktur-Regular" => [ + [0,7] => 0xE300, # variants + 0x12 => 0x2018, # left quote + 0x13 => 0x2019, # right quote + 0x21 => 0x21, # ! + [0x26,0x2F] => 0x26, # &, ', (, ), *, +, comma, -, ., / + [0x30,0x39] => 0x30, # 0-9 + [0x3A,0x3B] => 0x3A, # :, ; + 0x3D => 0x3D, # = + 0x3F => 0x3F, # ? + [0x41,0x5A] => 0x41, # A-Z + 0x5B => 0x5B, # [ + [0x5D,0x5E] => 0x5D, # ], ^ + [0x61,0x7A] => 0x61, # a-z + 0x7D => 0x22, # " + ], +}; + +$map{cmtt10} = { + "Typewriter-Regular" => [ + [0,1] => 0x393, # \Gamma, \Delta + 2 => 0x398, # \Theta + 3 => 0x39B, # \Lambda + 4 => 0x39E, # \Xi + 5 => 0x3A0, # \Pi + 6 => 0x3A3, # \Sigma + [7,8] => 0x3A5, # \Upsilon, \Phi + [9,0xA] => 0x3A8, # \Psi, \Omega + 0xD => 0x2032, # ' + + 0x10 => 0x131, # \imath (roman) + 0x11 => 0x237, # \jmath (roman) + 0x12 => [0x300,-525,0], # \grave (combining) + 0x13 => [0x301,-525,0], # \acute (combining) + 0x14 => [0x30C,-525,0], # \check (combining) + 0x15 => [0x306,-525,0], # \breve (combining) + 0x16 => [0x304,-525,0], # \bar (combining) + 0x17 => [0x30A,-525,0], # ring above (combining) + + [0x21,0x7F] => 0x21, + + 0x27 => 2018, # left quote + 0x60 => 2019, # right quote + 0x5E => [0x302,-525,0], # \hat (combining) + 0x7E => [0x303,-525,0], # \tilde (combining) + 0x7F => [0x308,-525,0], # \ddot (combining) + ], +}; + +$map{rsfs10} = { + "Script-Regular" => [ + [0x41,0x5A] => 0x41, # A-Z + ], +}; + +$map{cmss10} = { + "SansSerif-Regular" => [ + [0,1] => 0x393, # \Gamma, \Delta + 2 => 0x398, # \Theta + 3 => 0x39B, # \Lambda + 4 => 0x39E, # \Xi + 5 => 0x3A0, # \Pi + 6 => 0x3A3, # \Sigma + [7,8] => 0x3A5, # \Upsilon, \Phi + [9,0xA] => 0x3A8, # \Psi, \Omega + + 0x10 => 0x131, # \imath (roman) + 0x11 => 0x237, # \jmath (roman) + 0x12 => [0x300,-500,0], # \grave (combining) + 0x13 => [0x301,-500,0], # \acute (combining) + 0x14 => [0x30C,-500,0], # \check (combining) + 0x15 => [0x306,-500,0], # \breve (combining) + 0x16 => [0x304,-500,0], # \bar (combining) + 0x17 => [0x30A,-542,0], # ring above (combining) + + [0x21,0x2F] => 0x21, # !, ", #, $, %, &, ', (, ), *, +, comma, -, ., / + 0x22 => 0x201D, # " + 0x27 => 0x2019, # ' + [0x30,0x39] => 0x30, # 0-9 + [0x3A,0x3B] => 0x3A, # :, ; + 0x3D => 0x3D, # = + [0x3F,0x40] => 0x3F, # ?, @ + [0x41,0x5A] => 0x41, # A-Z + 0x5B => 0x5B, # [ + 0x5C => 0x201C, # `` + [0x5D,0x5E] => 0x5D, # ], ^ + 0x5E => [0x302,-500,0], # \hat (combining) + 0x5F => [0x307,-389,0], # \dot (combining) + 0x60 => 0x2018, # ` + [0x61,0x7A] => 0x61, # a-z + [0x7B,0x7C] => 0x2013, # \endash, \emdash + 0x7B => [0x5F,0,-350], # underline + 0x7D => [0x30B,-500,0], # double acute (combining) + 0x7E => [0x7E,0,-350], # ~ + 0x7E => [0x303,-500,0], # \tilde (combining) + 0x7F => [0x308,-500,0], # \ddot (combining) + ], +}; + foreach $cmfont (keys %map) { foreach $mjfont (keys %{$map{$cmfont}}) { $style = $mjfont; $style =~ s/.*?(-|$)//; $style = "Regular" unless $style; diff --git a/metrics/parse_tfm.py b/metrics/parse_tfm.py index e543cae85..56f2db085 100644 --- a/metrics/parse_tfm.py +++ b/metrics/parse_tfm.py @@ -64,11 +64,21 @@ class TfmFile(object): self.ligkern_program = LigKernProgram(ligkern_table) self.kern_table = kern_table - def get_char_metrics(self, char_num): + def get_char_metrics(self, char_num, fix_rsfs=False): + """Return glyph metrics for a unicode code point. + + Arguments: + char_num: a unicode code point + fix_rsfs: adjust for rsfs10.tfm's different indexing system + """ if char_num < self.start_char or char_num > self.end_char: raise RuntimeError("Invalid character number") - info = self.char_info[char_num + self.start_char] + if fix_rsfs: + # all of the char_nums contained start from zero in rsfs10.tfm + info = self.char_info[char_num - self.start_char] + else: + info = self.char_info[char_num + self.start_char] char_kern_table = {} if info.has_ligkern(): diff --git a/package.json b/package.json index 0f880e5d8..5c3468787 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "katex", - "version": "0.4.2", + "version": "0.6.0-pre", "description": "Fast math typesetting for the web.", "main": "katex.js", "repository": { diff --git a/src/Parser.js b/src/Parser.js index 9de048759..600b259d2 100644 --- a/src/Parser.js +++ b/src/Parser.js @@ -129,6 +129,14 @@ Parser.prototype.parseExpression = function(pos, mode, breakOnInfix, breakOnToke } var atom = this.parseAtom(pos, mode); if (!atom) { + if (!this.settings.breakOnUnsupportedCmds && lex.text[0] === "\\") { + var errorNode = this.handleUnsupportedCmd(lex.text, mode); + body.push(errorNode); + + pos = lex.position; + continue; + } + break; } if (breakOnInfix && atom.result.type === "infix") { @@ -204,8 +212,16 @@ Parser.prototype.handleSupSubscript = function(pos, mode, symbol, name) { var group = this.parseGroup(pos, mode); if (!group) { - throw new ParseError( - "Expected group after '" + symbol + "'", this.lexer, pos); + var lex = this.lexer.lex(pos, mode); + + if (!this.settings.breakOnUnsupportedCmds && lex.text[0] === "\\") { + return new ParseResult( + this.handleUnsupportedCmd(lex.text, mode), + lex.position); + } else { + throw new ParseError( + "Expected group after '" + symbol + "'", this.lexer, pos); + } } else if (group.isFunction) { // ^ and _ have a greediness, so handle interactions with functions' // greediness @@ -223,6 +239,37 @@ Parser.prototype.handleSupSubscript = function(pos, mode, symbol, name) { } }; +/** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + Parser.prototype.handleUnsupportedCmd = function(text, mode) { + var textordArray = []; + + for (var i = 0; i < text.length; i++) { + textordArray.push(new ParseNode("textord", text[i], "text")); + } + + var textNode = new ParseNode( + "text", + { + body: textordArray, + type: "text" + }, + mode); + + var colorNode = new ParseNode( + "color", + { + color: this.settings.errorColor, + value: [textNode], + type: "color" + }, + mode); + + return colorNode; + }; + /** * Parses a group with optional super/subscripts. * @@ -254,7 +301,19 @@ Parser.prototype.parseAtom = function(pos, mode) { // Lex the first token var lex = this.lexer.lex(currPos, mode); - if (lex.text === "^") { + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + if (!base || base.result.type !== "op") { + throw new ParseError("Limit controls must follow a math operator", + this.lexer, currPos); + } + else { + var limits = lex.text === "\\limits"; + base.result.value.limits = limits; + base.result.value.alwaysHandleSupSub = true; + currPos = lex.position; + } + } else if (lex.text === "^") { // We got a superscript start if (superscript) { throw new ParseError( @@ -487,9 +546,18 @@ Parser.prototype.parseArguments = function(pos, mode, func, funcData, args) { arg = this.parseGroup(newPos, mode); } if (!arg) { - throw new ParseError( - "Expected group after '" + func + "'", - this.lexer, newPos); + var lex = this.lexer.lex(newPos, mode); + + if (!this.settings.breakOnUnsupportedCmds && lex.text[0] === "\\") { + arg = new ParseFuncOrArgument( + new ParseResult( + this.handleUnsupportedCmd(lex.text, mode), + lex.position), + false); + } else { + throw new ParseError( + "Expected group after '" + func + "'", this.lexer, pos); + } } } var argNode; diff --git a/src/Settings.js b/src/Settings.js index 49395d9e9..b1dd30dbd 100644 --- a/src/Settings.js +++ b/src/Settings.js @@ -21,6 +21,8 @@ function Settings(options) { // allow null options options = options || {}; this.displayMode = get(options.displayMode, false); + this.breakOnUnsupportedCmds = get(options.breakOnUnsupportedCmds, true); + this.errorColor = get(options.errorColor, "#cc0000"); } module.exports = Settings; diff --git a/src/buildCommon.js b/src/buildCommon.js index 21fd4f479..62eceb3ae 100644 --- a/src/buildCommon.js +++ b/src/buildCommon.js @@ -54,7 +54,11 @@ var mathit = function(value, mode, color, classes) { var mathrm = function(value, mode, color, classes) { // Decide what font to render the symbol in by its entry in the symbols // table. - if (symbols[mode][value].font === "main") { + // Have a special case for when the value = \ because the \ is used as a + // textord in unsupported command errors but cannot be parsed as a regular + // text ordinal and is therefore not present as a symbol in the symbols + // table for text + if (value === "\\" || symbols[mode][value].font === "main") { return makeSymbol(value, "Main-Regular", mode, color, classes); } else { return makeSymbol( diff --git a/src/buildHTML.js b/src/buildHTML.js index 98903252e..7eb8619a0 100644 --- a/src/buildHTML.js +++ b/src/buildHTML.js @@ -104,7 +104,8 @@ var shouldHandleSupSub = function(group, options) { } else if (group.type === "op") { // Operators handle supsubs differently when they have limits // (e.g. `\displaystyle\sum_2^3`) - return group.value.limits && options.style.size === Style.DISPLAY.size; + return group.value.limits && + (options.style.size === Style.DISPLAY.size || group.value.alwaysHandleSupSub); } else if (group.type === "accent") { return isCharacterBox(group.value.base); } else { diff --git a/src/delimiter.js b/src/delimiter.js index 91e52f212..f94fa9bab 100644 --- a/src/delimiter.js +++ b/src/delimiter.js @@ -217,6 +217,26 @@ var makeStackedDelim = function(delim, heightTotal, center, options, mode) { bottom = "\u23ad"; repeat = "\u23aa"; font = "Size4-Regular"; + } else if (delim === "\\lgroup") { + top = "\u23a7"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\rgroup") { + top = "\u23ab"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\lmoustache") { + top = "\u23a7"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\rmoustache") { + top = "\u23ab"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; } else if (delim === "\\surd") { top = "\ue001"; bottom = "\u23b7"; @@ -312,7 +332,9 @@ var stackLargeDelimiters = [ var stackAlwaysDelimiters = [ "\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", - "|", "\\|", "\\vert", "\\Vert" + "|", "\\|", "\\vert", "\\Vert", + "\\lvert", "\\rvert", "\\lVert", "\\rVert", + "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache" ]; // and delimiters that never stack diff --git a/src/fontMetricsData.json b/src/fontMetricsData.json index 35188677a..cdbdaaff4 100644 --- a/src/fontMetricsData.json +++ b/src/fontMetricsData.json @@ -256,6 +256,137 @@ "57370": {"depth": 0.13597, "height": 0.63597, "italic": 0.0, "skew": 0.0}, "57371": {"depth": 0.13597, "height": 0.63597, "italic": 0.0, "skew": 0.0} }, +"Caligraphic-Regular": { + "48": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "49": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "50": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "51": {"depth": 0.19444, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "52": {"depth": 0.19444, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "53": {"depth": 0.19444, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "54": {"depth": 0.0, "height": 0.64444, "italic": 0.0, "skew": 0.0}, + "55": {"depth": 0.19444, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "56": {"depth": 0.0, "height": 0.64444, "italic": 0.0, "skew": 0.0}, + "57": {"depth": 0.19444, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "65": {"depth": 0.0, "height": 0.68333, "italic": 0.0, "skew": 0.19445}, + "66": {"depth": 0.0, "height": 0.68333, "italic": 0.03041, "skew": 0.13889}, + "67": {"depth": 0.0, "height": 0.68333, "italic": 0.05834, "skew": 0.13889}, + "68": {"depth": 0.0, "height": 0.68333, "italic": 0.02778, "skew": 0.08334}, + "69": {"depth": 0.0, "height": 0.68333, "italic": 0.08944, "skew": 0.11111}, + "70": {"depth": 0.0, "height": 0.68333, "italic": 0.09931, "skew": 0.11111}, + "71": {"depth": 0.09722, "height": 0.68333, "italic": 0.0593, "skew": 0.11111}, + "72": {"depth": 0.0, "height": 0.68333, "italic": 0.00965, "skew": 0.11111}, + "73": {"depth": 0.0, "height": 0.68333, "italic": 0.07382, "skew": 0.0}, + "74": {"depth": 0.09722, "height": 0.68333, "italic": 0.18472, "skew": 0.16667}, + "75": {"depth": 0.0, "height": 0.68333, "italic": 0.01445, "skew": 0.05556}, + "76": {"depth": 0.0, "height": 0.68333, "italic": 0.0, "skew": 0.13889}, + "77": {"depth": 0.0, "height": 0.68333, "italic": 0.0, "skew": 0.13889}, + "78": {"depth": 0.0, "height": 0.68333, "italic": 0.14736, "skew": 0.08334}, + "79": {"depth": 0.0, "height": 0.68333, "italic": 0.02778, "skew": 0.11111}, + "80": {"depth": 0.0, "height": 0.68333, "italic": 0.08222, "skew": 0.08334}, + "81": {"depth": 0.09722, "height": 0.68333, "italic": 0.0, "skew": 0.11111}, + "82": {"depth": 0.0, "height": 0.68333, "italic": 0.0, "skew": 0.08334}, + "83": {"depth": 0.0, "height": 0.68333, "italic": 0.075, "skew": 0.13889}, + "84": {"depth": 0.0, "height": 0.68333, "italic": 0.25417, "skew": 0.0}, + "85": {"depth": 0.0, "height": 0.68333, "italic": 0.09931, "skew": 0.08334}, + "86": {"depth": 0.0, "height": 0.68333, "italic": 0.08222, "skew": 0.0}, + "87": {"depth": 0.0, "height": 0.68333, "italic": 0.08222, "skew": 0.08334}, + "88": {"depth": 0.0, "height": 0.68333, "italic": 0.14643, "skew": 0.13889}, + "89": {"depth": 0.09722, "height": 0.68333, "italic": 0.08222, "skew": 0.08334}, + "90": {"depth": 0.0, "height": 0.68333, "italic": 0.07944, "skew": 0.13889} +}, +"Fraktur-Regular": { + "33": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "34": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "38": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "39": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "40": {"depth": 0.24982, "height": 0.74947, "italic": 0.0, "skew": 0.0}, + "41": {"depth": 0.24982, "height": 0.74947, "italic": 0.0, "skew": 0.0}, + "42": {"depth": 0.0, "height": 0.62119, "italic": 0.0, "skew": 0.0}, + "43": {"depth": 0.08319, "height": 0.58283, "italic": 0.0, "skew": 0.0}, + "44": {"depth": 0.0, "height": 0.10803, "italic": 0.0, "skew": 0.0}, + "45": {"depth": 0.08319, "height": 0.58283, "italic": 0.0, "skew": 0.0}, + "46": {"depth": 0.0, "height": 0.10803, "italic": 0.0, "skew": 0.0}, + "47": {"depth": 0.24982, "height": 0.74947, "italic": 0.0, "skew": 0.0}, + "48": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "49": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "50": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "51": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "52": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "53": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "54": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "55": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "56": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "57": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "58": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "59": {"depth": 0.12604, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "61": {"depth": -0.13099, "height": 0.36866, "italic": 0.0, "skew": 0.0}, + "63": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "65": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "66": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "67": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "68": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "69": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "70": {"depth": 0.12604, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "71": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "72": {"depth": 0.06302, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "73": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "74": {"depth": 0.12604, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "75": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "76": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "77": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "78": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "79": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "80": {"depth": 0.18906, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "81": {"depth": 0.03781, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "82": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "83": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "84": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "85": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "86": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "87": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "88": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "89": {"depth": 0.18906, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "90": {"depth": 0.12604, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "91": {"depth": 0.24982, "height": 0.74947, "italic": 0.0, "skew": 0.0}, + "93": {"depth": 0.24982, "height": 0.74947, "italic": 0.0, "skew": 0.0}, + "94": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "97": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "98": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "99": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "100": {"depth": 0.0, "height": 0.62119, "italic": 0.0, "skew": 0.0}, + "101": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "102": {"depth": 0.18906, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "103": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "104": {"depth": 0.18906, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "105": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "106": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "107": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "108": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "109": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "110": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "111": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "112": {"depth": 0.18906, "height": 0.52396, "italic": 0.0, "skew": 0.0}, + "113": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "114": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "115": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "116": {"depth": 0.0, "height": 0.62119, "italic": 0.0, "skew": 0.0}, + "117": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "118": {"depth": 0.0, "height": 0.52396, "italic": 0.0, "skew": 0.0}, + "119": {"depth": 0.0, "height": 0.52396, "italic": 0.0, "skew": 0.0}, + "120": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "121": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "122": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "8216": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "8217": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "58112": {"depth": 0.0, "height": 0.62119, "italic": 0.0, "skew": 0.0}, + "58113": {"depth": 0.0, "height": 0.62119, "italic": 0.0, "skew": 0.0}, + "58114": {"depth": 0.18906, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "58115": {"depth": 0.18906, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "58116": {"depth": 0.18906, "height": 0.47534, "italic": 0.0, "skew": 0.0}, + "58117": {"depth": 0.0, "height": 0.69141, "italic": 0.0, "skew": 0.0}, + "58118": {"depth": 0.0, "height": 0.62119, "italic": 0.0, "skew": 0.0}, + "58119": {"depth": 0.0, "height": 0.47534, "italic": 0.0, "skew": 0.0} +}, "Main-Bold": { "33": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, "34": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, @@ -1199,6 +1330,153 @@ "1009": {"depth": 0.19444, "height": 0.43056, "italic": 0.0, "skew": 0.08334}, "1013": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.05556} }, +"SansSerif-Regular": { + "33": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "34": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "35": {"depth": 0.19444, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "36": {"depth": 0.05556, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "37": {"depth": 0.05556, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "38": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "39": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "40": {"depth": 0.25, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "41": {"depth": 0.25, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "42": {"depth": 0.0, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "43": {"depth": 0.08333, "height": 0.58333, "italic": 0.0, "skew": 0.0}, + "44": {"depth": 0.125, "height": 0.08333, "italic": 0.0, "skew": 0.0}, + "45": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "46": {"depth": 0.0, "height": 0.08333, "italic": 0.0, "skew": 0.0}, + "47": {"depth": 0.25, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "48": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "49": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "50": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "51": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "52": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "53": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "54": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "55": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "56": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "57": {"depth": 0.0, "height": 0.65556, "italic": 0.0, "skew": 0.0}, + "58": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "59": {"depth": 0.125, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "61": {"depth": -0.13, "height": 0.37, "italic": 0.0, "skew": 0.0}, + "63": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "64": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "65": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "66": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "67": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "68": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "69": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "70": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "71": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "72": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "73": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "74": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "75": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "76": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "77": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "78": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "79": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "80": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "81": {"depth": 0.125, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "82": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "83": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "84": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "85": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "86": {"depth": 0.0, "height": 0.69444, "italic": 0.01389, "skew": 0.0}, + "87": {"depth": 0.0, "height": 0.69444, "italic": 0.01389, "skew": 0.0}, + "88": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "89": {"depth": 0.0, "height": 0.69444, "italic": 0.025, "skew": 0.0}, + "90": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "91": {"depth": 0.25, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "93": {"depth": 0.25, "height": 0.75, "italic": 0.0, "skew": 0.0}, + "94": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "95": {"depth": 0.35, "height": 0.09444, "italic": 0.02778, "skew": 0.0}, + "97": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "98": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "99": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "100": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "101": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "102": {"depth": 0.0, "height": 0.69444, "italic": 0.06944, "skew": 0.0}, + "103": {"depth": 0.19444, "height": 0.44444, "italic": 0.01389, "skew": 0.0}, + "104": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "105": {"depth": 0.0, "height": 0.67937, "italic": 0.0, "skew": 0.0}, + "106": {"depth": 0.19444, "height": 0.67937, "italic": 0.0, "skew": 0.0}, + "107": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "108": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "109": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "110": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "111": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "112": {"depth": 0.19444, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "113": {"depth": 0.19444, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "114": {"depth": 0.0, "height": 0.44444, "italic": 0.01389, "skew": 0.0}, + "115": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "116": {"depth": 0.0, "height": 0.57143, "italic": 0.0, "skew": 0.0}, + "117": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "118": {"depth": 0.0, "height": 0.44444, "italic": 0.01389, "skew": 0.0}, + "119": {"depth": 0.0, "height": 0.44444, "italic": 0.01389, "skew": 0.0}, + "120": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "121": {"depth": 0.19444, "height": 0.44444, "italic": 0.01389, "skew": 0.0}, + "122": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "126": {"depth": 0.35, "height": 0.32659, "italic": 0.0, "skew": 0.0}, + "305": {"depth": 0.0, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "567": {"depth": 0.19444, "height": 0.44444, "italic": 0.0, "skew": 0.0}, + "768": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "769": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "770": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "771": {"depth": 0.0, "height": 0.67659, "italic": 0.0, "skew": 0.0}, + "772": {"depth": 0.0, "height": 0.60889, "italic": 0.0, "skew": 0.0}, + "774": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "775": {"depth": 0.0, "height": 0.67937, "italic": 0.0, "skew": 0.0}, + "776": {"depth": 0.0, "height": 0.67937, "italic": 0.0, "skew": 0.0}, + "778": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "779": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "780": {"depth": 0.0, "height": 0.63194, "italic": 0.0, "skew": 0.0}, + "915": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "916": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "920": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "923": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "926": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "928": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "931": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "933": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "934": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "936": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "937": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "8211": {"depth": 0.0, "height": 0.44444, "italic": 0.02778, "skew": 0.0}, + "8212": {"depth": 0.0, "height": 0.44444, "italic": 0.02778, "skew": 0.0}, + "8216": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "8217": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "8220": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "8221": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0} +}, +"Script-Regular": { + "65": {"depth": 0.0, "height": 0.7, "italic": 0.22925, "skew": 0.0}, + "66": {"depth": 0.0, "height": 0.7, "italic": 0.04087, "skew": 0.0}, + "67": {"depth": 0.0, "height": 0.7, "italic": 0.1689, "skew": 0.0}, + "68": {"depth": 0.0, "height": 0.7, "italic": 0.09371, "skew": 0.0}, + "69": {"depth": 0.0, "height": 0.7, "italic": 0.18583, "skew": 0.0}, + "70": {"depth": 0.0, "height": 0.7, "italic": 0.13634, "skew": 0.0}, + "71": {"depth": 0.0, "height": 0.7, "italic": 0.17322, "skew": 0.0}, + "72": {"depth": 0.0, "height": 0.7, "italic": 0.29694, "skew": 0.0}, + "73": {"depth": 0.0, "height": 0.7, "italic": 0.19189, "skew": 0.0}, + "74": {"depth": 0.27778, "height": 0.7, "italic": 0.19189, "skew": 0.0}, + "75": {"depth": 0.0, "height": 0.7, "italic": 0.31259, "skew": 0.0}, + "76": {"depth": 0.0, "height": 0.7, "italic": 0.19189, "skew": 0.0}, + "77": {"depth": 0.0, "height": 0.7, "italic": 0.15981, "skew": 0.0}, + "78": {"depth": 0.0, "height": 0.7, "italic": 0.3525, "skew": 0.0}, + "79": {"depth": 0.0, "height": 0.7, "italic": 0.08078, "skew": 0.0}, + "80": {"depth": 0.0, "height": 0.7, "italic": 0.08078, "skew": 0.0}, + "81": {"depth": 0.0, "height": 0.7, "italic": 0.03305, "skew": 0.0}, + "82": {"depth": 0.0, "height": 0.7, "italic": 0.06259, "skew": 0.0}, + "83": {"depth": 0.0, "height": 0.7, "italic": 0.19189, "skew": 0.0}, + "84": {"depth": 0.0, "height": 0.7, "italic": 0.29087, "skew": 0.0}, + "85": {"depth": 0.0, "height": 0.7, "italic": 0.25815, "skew": 0.0}, + "86": {"depth": 0.0, "height": 0.7, "italic": 0.27523, "skew": 0.0}, + "87": {"depth": 0.0, "height": 0.7, "italic": 0.27523, "skew": 0.0}, + "88": {"depth": 0.0, "height": 0.7, "italic": 0.26006, "skew": 0.0}, + "89": {"depth": 0.0, "height": 0.7, "italic": 0.2939, "skew": 0.0}, + "90": {"depth": 0.0, "height": 0.7, "italic": 0.24037, "skew": 0.0} +}, "Size1-Regular": { "40": {"depth": 0.35001, "height": 0.85, "italic": 0.0, "skew": 0.0}, "41": {"depth": 0.35001, "height": 0.85, "italic": 0.0, "skew": 0.0}, @@ -1348,4 +1626,126 @@ "57681": {"depth": 0.0, "height": 0.12, "italic": 0.0, "skew": 0.0}, "57682": {"depth": 0.0, "height": 0.12, "italic": 0.0, "skew": 0.0}, "57683": {"depth": 0.0, "height": 0.12, "italic": 0.0, "skew": 0.0} +}, +"Typewriter-Regular": { + "33": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "34": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "35": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "36": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "37": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "38": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "39": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "40": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "41": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "42": {"depth": 0.0, "height": 0.52083, "italic": 0.0, "skew": 0.0}, + "43": {"depth": -0.08056, "height": 0.53055, "italic": 0.0, "skew": 0.0}, + "44": {"depth": 0.13889, "height": 0.125, "italic": 0.0, "skew": 0.0}, + "45": {"depth": -0.08056, "height": 0.53055, "italic": 0.0, "skew": 0.0}, + "46": {"depth": 0.0, "height": 0.125, "italic": 0.0, "skew": 0.0}, + "47": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "48": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "49": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "50": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "51": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "52": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "53": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "54": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "55": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "56": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "57": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "58": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "59": {"depth": 0.13889, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "60": {"depth": -0.05556, "height": 0.55556, "italic": 0.0, "skew": 0.0}, + "61": {"depth": -0.19549, "height": 0.41562, "italic": 0.0, "skew": 0.0}, + "62": {"depth": -0.05556, "height": 0.55556, "italic": 0.0, "skew": 0.0}, + "63": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "64": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "65": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "66": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "67": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "68": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "69": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "70": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "71": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "72": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "73": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "74": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "75": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "76": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "77": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "78": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "79": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "80": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "81": {"depth": 0.13889, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "82": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "83": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "84": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "85": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "86": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "87": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "88": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "89": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "90": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "91": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "92": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "93": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "94": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "95": {"depth": 0.09514, "height": 0.0, "italic": 0.0, "skew": 0.0}, + "96": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "97": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "98": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "99": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "100": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "101": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "102": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "103": {"depth": 0.22222, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "104": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "105": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "106": {"depth": 0.22222, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "107": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "108": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "109": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "110": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "111": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "112": {"depth": 0.22222, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "113": {"depth": 0.22222, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "114": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "115": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "116": {"depth": 0.0, "height": 0.55358, "italic": 0.0, "skew": 0.0}, + "117": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "118": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "119": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "120": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "121": {"depth": 0.22222, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "122": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "123": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "124": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "125": {"depth": 0.08333, "height": 0.69444, "italic": 0.0, "skew": 0.0}, + "126": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "127": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "305": {"depth": 0.0, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "567": {"depth": 0.22222, "height": 0.43056, "italic": 0.0, "skew": 0.0}, + "768": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "769": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "770": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "771": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "772": {"depth": 0.0, "height": 0.56555, "italic": 0.0, "skew": 0.0}, + "774": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "776": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "778": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "780": {"depth": 0.0, "height": 0.56597, "italic": 0.0, "skew": 0.0}, + "915": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "916": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "920": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "923": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "926": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "928": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "931": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "933": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "934": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "936": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "937": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "2018": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "2019": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0}, + "8242": {"depth": 0.0, "height": 0.61111, "italic": 0.0, "skew": 0.0} }} diff --git a/src/functions.js b/src/functions.js index 9b1d2a4ef..6f6a1792b 100644 --- a/src/functions.js +++ b/src/functions.js @@ -205,6 +205,8 @@ var delimiters = [ "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "<", ">", "\\langle", "\\rangle", + "\\lvert", "\\rvert", "\\lVert", "\\rVert", + "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", diff --git a/src/symbols.js b/src/symbols.js index b5d8f6cf4..62b9ecb29 100644 --- a/src/symbols.js +++ b/src/symbols.js @@ -1947,6 +1947,11 @@ var symbols = { group: "open", replace: "\u2223" }, + "\\lVert": { + font: "main", + group: "open", + replace: "\u2225" + }, ")": { font: "main", group: "close" @@ -1973,6 +1978,11 @@ var symbols = { group: "close", replace: "\u2223" }, + "\\rVert": { + font: "main", + group: "close", + replace: "\u2225" + }, "=": { font: "main", group: "rel" diff --git a/static/fonts.less b/static/fonts.less index 81fc4f571..6e8b26216 100644 --- a/static/fonts.less +++ b/static/fonts.less @@ -48,22 +48,22 @@ } .font-face('AMS', normal, normal); -// .font-face('Caligraphic', bold, normal); -// .font-face('Caligraphic', normal, normal); -// .font-face('Fraktur', bold, normal); -// .font-face('Fraktur', normal, normal); +.font-face('Caligraphic', bold, normal); +.font-face('Caligraphic', normal, normal); +.font-face('Fraktur', bold, normal); +.font-face('Fraktur', normal, normal); .font-face('Main', bold, normal); .font-face('Main', normal, italic); .font-face('Main', normal, normal); -.font-face('Math', bold, italic); +// .font-face('Math', bold, italic); .font-face('Math', normal, italic); -.font-face('Math', normal, normal); +// .font-face('Math', normal, normal); // .font-face('SansSerif', bold, normal); // .font-face('SansSerif', normal, italic); -// .font-face('SansSerif', normal, normal); -// .font-face('Script', normal, normal); +.font-face('SansSerif', normal, normal); +.font-face('Script', normal, normal); .font-face('Size1', normal, normal); .font-face('Size2', normal, normal); .font-face('Size3', normal, normal); .font-face('Size4', normal, normal); -// .font-face('Typewriter', normal, normal); +.font-face('Typewriter', normal, normal); diff --git a/static/fonts/KaTeX_AMS-Regular.eot b/static/fonts/KaTeX_AMS-Regular.eot index 842e453e0..784276a3c 100644 Binary files a/static/fonts/KaTeX_AMS-Regular.eot and b/static/fonts/KaTeX_AMS-Regular.eot differ diff --git a/static/fonts/KaTeX_AMS-Regular.ttf b/static/fonts/KaTeX_AMS-Regular.ttf index 8da3d446e..6f1e0be20 100644 Binary files a/static/fonts/KaTeX_AMS-Regular.ttf and b/static/fonts/KaTeX_AMS-Regular.ttf differ diff --git a/static/fonts/KaTeX_AMS-Regular.woff b/static/fonts/KaTeX_AMS-Regular.woff index f8934ec02..4dded4733 100644 Binary files a/static/fonts/KaTeX_AMS-Regular.woff and b/static/fonts/KaTeX_AMS-Regular.woff differ diff --git a/static/fonts/KaTeX_AMS-Regular.woff2 b/static/fonts/KaTeX_AMS-Regular.woff2 index 64bdd82f9..ea81079c4 100644 Binary files a/static/fonts/KaTeX_AMS-Regular.woff2 and b/static/fonts/KaTeX_AMS-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Caligraphic-Bold.eot b/static/fonts/KaTeX_Caligraphic-Bold.eot index 6c441ae34..1a0db0c56 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Bold.eot and b/static/fonts/KaTeX_Caligraphic-Bold.eot differ diff --git a/static/fonts/KaTeX_Caligraphic-Bold.ttf b/static/fonts/KaTeX_Caligraphic-Bold.ttf index 1580d64b9..b94907dad 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Bold.ttf and b/static/fonts/KaTeX_Caligraphic-Bold.ttf differ diff --git a/static/fonts/KaTeX_Caligraphic-Bold.woff b/static/fonts/KaTeX_Caligraphic-Bold.woff index a2a7399a0..799fa8122 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Bold.woff and b/static/fonts/KaTeX_Caligraphic-Bold.woff differ diff --git a/static/fonts/KaTeX_Caligraphic-Bold.woff2 b/static/fonts/KaTeX_Caligraphic-Bold.woff2 index 010795092..73bb54228 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Bold.woff2 and b/static/fonts/KaTeX_Caligraphic-Bold.woff2 differ diff --git a/static/fonts/KaTeX_Caligraphic-Regular.eot b/static/fonts/KaTeX_Caligraphic-Regular.eot index 5287c0d69..6cc83d092 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Regular.eot and b/static/fonts/KaTeX_Caligraphic-Regular.eot differ diff --git a/static/fonts/KaTeX_Caligraphic-Regular.ttf b/static/fonts/KaTeX_Caligraphic-Regular.ttf index ab23091ff..cf51e2021 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Regular.ttf and b/static/fonts/KaTeX_Caligraphic-Regular.ttf differ diff --git a/static/fonts/KaTeX_Caligraphic-Regular.woff b/static/fonts/KaTeX_Caligraphic-Regular.woff index 6188e5529..f5e5c6235 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Regular.woff and b/static/fonts/KaTeX_Caligraphic-Regular.woff differ diff --git a/static/fonts/KaTeX_Caligraphic-Regular.woff2 b/static/fonts/KaTeX_Caligraphic-Regular.woff2 index 0e692ea34..dd76d3488 100644 Binary files a/static/fonts/KaTeX_Caligraphic-Regular.woff2 and b/static/fonts/KaTeX_Caligraphic-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Fraktur-Bold.eot b/static/fonts/KaTeX_Fraktur-Bold.eot index cf4b36815..1960b1066 100644 Binary files a/static/fonts/KaTeX_Fraktur-Bold.eot and b/static/fonts/KaTeX_Fraktur-Bold.eot differ diff --git a/static/fonts/KaTeX_Fraktur-Bold.ttf b/static/fonts/KaTeX_Fraktur-Bold.ttf index f66a74d56..7b0790f1a 100644 Binary files a/static/fonts/KaTeX_Fraktur-Bold.ttf and b/static/fonts/KaTeX_Fraktur-Bold.ttf differ diff --git a/static/fonts/KaTeX_Fraktur-Bold.woff b/static/fonts/KaTeX_Fraktur-Bold.woff index 3804f1f08..dc3257132 100644 Binary files a/static/fonts/KaTeX_Fraktur-Bold.woff and b/static/fonts/KaTeX_Fraktur-Bold.woff differ diff --git a/static/fonts/KaTeX_Fraktur-Bold.woff2 b/static/fonts/KaTeX_Fraktur-Bold.woff2 index b4caf092f..fdc429227 100644 Binary files a/static/fonts/KaTeX_Fraktur-Bold.woff2 and b/static/fonts/KaTeX_Fraktur-Bold.woff2 differ diff --git a/static/fonts/KaTeX_Fraktur-Regular.eot b/static/fonts/KaTeX_Fraktur-Regular.eot index cbe084ed9..e4e73796a 100644 Binary files a/static/fonts/KaTeX_Fraktur-Regular.eot and b/static/fonts/KaTeX_Fraktur-Regular.eot differ diff --git a/static/fonts/KaTeX_Fraktur-Regular.ttf b/static/fonts/KaTeX_Fraktur-Regular.ttf index c4a760bc1..063bc0263 100644 Binary files a/static/fonts/KaTeX_Fraktur-Regular.ttf and b/static/fonts/KaTeX_Fraktur-Regular.ttf differ diff --git a/static/fonts/KaTeX_Fraktur-Regular.woff b/static/fonts/KaTeX_Fraktur-Regular.woff index c5ce1cd8e..c4b18d863 100644 Binary files a/static/fonts/KaTeX_Fraktur-Regular.woff and b/static/fonts/KaTeX_Fraktur-Regular.woff differ diff --git a/static/fonts/KaTeX_Fraktur-Regular.woff2 b/static/fonts/KaTeX_Fraktur-Regular.woff2 index 1dd379445..4318d938e 100644 Binary files a/static/fonts/KaTeX_Fraktur-Regular.woff2 and b/static/fonts/KaTeX_Fraktur-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Main-Bold.eot b/static/fonts/KaTeX_Main-Bold.eot index 0cd6d1153..80fbd0223 100644 Binary files a/static/fonts/KaTeX_Main-Bold.eot and b/static/fonts/KaTeX_Main-Bold.eot differ diff --git a/static/fonts/KaTeX_Main-Bold.ttf b/static/fonts/KaTeX_Main-Bold.ttf index f7956abdc..8e10722af 100644 Binary files a/static/fonts/KaTeX_Main-Bold.ttf and b/static/fonts/KaTeX_Main-Bold.ttf differ diff --git a/static/fonts/KaTeX_Main-Bold.woff b/static/fonts/KaTeX_Main-Bold.woff index f6eb23155..43b361a60 100644 Binary files a/static/fonts/KaTeX_Main-Bold.woff and b/static/fonts/KaTeX_Main-Bold.woff differ diff --git a/static/fonts/KaTeX_Main-Bold.woff2 b/static/fonts/KaTeX_Main-Bold.woff2 index 994f3de51..af57a96c1 100644 Binary files a/static/fonts/KaTeX_Main-Bold.woff2 and b/static/fonts/KaTeX_Main-Bold.woff2 differ diff --git a/static/fonts/KaTeX_Main-Italic.eot b/static/fonts/KaTeX_Main-Italic.eot index 693bdf71b..fc770166b 100644 Binary files a/static/fonts/KaTeX_Main-Italic.eot and b/static/fonts/KaTeX_Main-Italic.eot differ diff --git a/static/fonts/KaTeX_Main-Italic.ttf b/static/fonts/KaTeX_Main-Italic.ttf index 0d00c60bf..d124495d7 100644 Binary files a/static/fonts/KaTeX_Main-Italic.ttf and b/static/fonts/KaTeX_Main-Italic.ttf differ diff --git a/static/fonts/KaTeX_Main-Italic.woff b/static/fonts/KaTeX_Main-Italic.woff index 43126b31c..e623236bc 100644 Binary files a/static/fonts/KaTeX_Main-Italic.woff and b/static/fonts/KaTeX_Main-Italic.woff differ diff --git a/static/fonts/KaTeX_Main-Italic.woff2 b/static/fonts/KaTeX_Main-Italic.woff2 index 343057396..944e9740b 100644 Binary files a/static/fonts/KaTeX_Main-Italic.woff2 and b/static/fonts/KaTeX_Main-Italic.woff2 differ diff --git a/static/fonts/KaTeX_Main-Regular.eot b/static/fonts/KaTeX_Main-Regular.eot index bd59c8896..dc60c090c 100644 Binary files a/static/fonts/KaTeX_Main-Regular.eot and b/static/fonts/KaTeX_Main-Regular.eot differ diff --git a/static/fonts/KaTeX_Main-Regular.ttf b/static/fonts/KaTeX_Main-Regular.ttf index 6f3cdca77..da5797ffc 100644 Binary files a/static/fonts/KaTeX_Main-Regular.ttf and b/static/fonts/KaTeX_Main-Regular.ttf differ diff --git a/static/fonts/KaTeX_Main-Regular.woff b/static/fonts/KaTeX_Main-Regular.woff index 57e7f4b7e..37db672e8 100644 Binary files a/static/fonts/KaTeX_Main-Regular.woff and b/static/fonts/KaTeX_Main-Regular.woff differ diff --git a/static/fonts/KaTeX_Main-Regular.woff2 b/static/fonts/KaTeX_Main-Regular.woff2 index 8c98320f9..488204248 100644 Binary files a/static/fonts/KaTeX_Main-Regular.woff2 and b/static/fonts/KaTeX_Main-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Math-BoldItalic.eot b/static/fonts/KaTeX_Math-BoldItalic.eot index 7705bfced..52c8b8c6b 100644 Binary files a/static/fonts/KaTeX_Math-BoldItalic.eot and b/static/fonts/KaTeX_Math-BoldItalic.eot differ diff --git a/static/fonts/KaTeX_Math-BoldItalic.ttf b/static/fonts/KaTeX_Math-BoldItalic.ttf index ab60f80c4..a8b527c7e 100644 Binary files a/static/fonts/KaTeX_Math-BoldItalic.ttf and b/static/fonts/KaTeX_Math-BoldItalic.ttf differ diff --git a/static/fonts/KaTeX_Math-BoldItalic.woff b/static/fonts/KaTeX_Math-BoldItalic.woff index f5dee4e00..8940e0b58 100644 Binary files a/static/fonts/KaTeX_Math-BoldItalic.woff and b/static/fonts/KaTeX_Math-BoldItalic.woff differ diff --git a/static/fonts/KaTeX_Math-BoldItalic.woff2 b/static/fonts/KaTeX_Math-BoldItalic.woff2 index bfe677c1a..15cf56d34 100644 Binary files a/static/fonts/KaTeX_Math-BoldItalic.woff2 and b/static/fonts/KaTeX_Math-BoldItalic.woff2 differ diff --git a/static/fonts/KaTeX_Math-Italic.eot b/static/fonts/KaTeX_Math-Italic.eot index fc9bf197a..64c8992c4 100644 Binary files a/static/fonts/KaTeX_Math-Italic.eot and b/static/fonts/KaTeX_Math-Italic.eot differ diff --git a/static/fonts/KaTeX_Math-Italic.ttf b/static/fonts/KaTeX_Math-Italic.ttf index a4078ea01..06f39d3a2 100644 Binary files a/static/fonts/KaTeX_Math-Italic.ttf and b/static/fonts/KaTeX_Math-Italic.ttf differ diff --git a/static/fonts/KaTeX_Math-Italic.woff b/static/fonts/KaTeX_Math-Italic.woff index fc21e64e5..cf3b4b79e 100644 Binary files a/static/fonts/KaTeX_Math-Italic.woff and b/static/fonts/KaTeX_Math-Italic.woff differ diff --git a/static/fonts/KaTeX_Math-Italic.woff2 b/static/fonts/KaTeX_Math-Italic.woff2 index 0ef8a1e8e..5f8c4bfa4 100644 Binary files a/static/fonts/KaTeX_Math-Italic.woff2 and b/static/fonts/KaTeX_Math-Italic.woff2 differ diff --git a/static/fonts/KaTeX_Math-Regular.eot b/static/fonts/KaTeX_Math-Regular.eot index 14b0c2aa6..5521e6a56 100644 Binary files a/static/fonts/KaTeX_Math-Regular.eot and b/static/fonts/KaTeX_Math-Regular.eot differ diff --git a/static/fonts/KaTeX_Math-Regular.ttf b/static/fonts/KaTeX_Math-Regular.ttf index f2561022f..731270823 100644 Binary files a/static/fonts/KaTeX_Math-Regular.ttf and b/static/fonts/KaTeX_Math-Regular.ttf differ diff --git a/static/fonts/KaTeX_Math-Regular.woff b/static/fonts/KaTeX_Math-Regular.woff index 847ba376c..0e2ebdf18 100644 Binary files a/static/fonts/KaTeX_Math-Regular.woff and b/static/fonts/KaTeX_Math-Regular.woff differ diff --git a/static/fonts/KaTeX_Math-Regular.woff2 b/static/fonts/KaTeX_Math-Regular.woff2 index 24b63d8a6..ebe3d028a 100644 Binary files a/static/fonts/KaTeX_Math-Regular.woff2 and b/static/fonts/KaTeX_Math-Regular.woff2 differ diff --git a/static/fonts/KaTeX_SansSerif-Bold.eot b/static/fonts/KaTeX_SansSerif-Bold.eot index bf95b1417..1660e76a2 100644 Binary files a/static/fonts/KaTeX_SansSerif-Bold.eot and b/static/fonts/KaTeX_SansSerif-Bold.eot differ diff --git a/static/fonts/KaTeX_SansSerif-Bold.ttf b/static/fonts/KaTeX_SansSerif-Bold.ttf index 952f33328..dbeb7b92a 100644 Binary files a/static/fonts/KaTeX_SansSerif-Bold.ttf and b/static/fonts/KaTeX_SansSerif-Bold.ttf differ diff --git a/static/fonts/KaTeX_SansSerif-Bold.woff b/static/fonts/KaTeX_SansSerif-Bold.woff index 83ce37d6f..8f144a8bb 100644 Binary files a/static/fonts/KaTeX_SansSerif-Bold.woff and b/static/fonts/KaTeX_SansSerif-Bold.woff differ diff --git a/static/fonts/KaTeX_SansSerif-Bold.woff2 b/static/fonts/KaTeX_SansSerif-Bold.woff2 index 09caf7dc1..329e85557 100644 Binary files a/static/fonts/KaTeX_SansSerif-Bold.woff2 and b/static/fonts/KaTeX_SansSerif-Bold.woff2 differ diff --git a/static/fonts/KaTeX_SansSerif-Italic.eot b/static/fonts/KaTeX_SansSerif-Italic.eot index 215f3267e..289ae3ff8 100644 Binary files a/static/fonts/KaTeX_SansSerif-Italic.eot and b/static/fonts/KaTeX_SansSerif-Italic.eot differ diff --git a/static/fonts/KaTeX_SansSerif-Italic.ttf b/static/fonts/KaTeX_SansSerif-Italic.ttf index 6a510f5ab..b3a2f38f2 100644 Binary files a/static/fonts/KaTeX_SansSerif-Italic.ttf and b/static/fonts/KaTeX_SansSerif-Italic.ttf differ diff --git a/static/fonts/KaTeX_SansSerif-Italic.woff b/static/fonts/KaTeX_SansSerif-Italic.woff index 5e82a46aa..bddf7ea65 100644 Binary files a/static/fonts/KaTeX_SansSerif-Italic.woff and b/static/fonts/KaTeX_SansSerif-Italic.woff differ diff --git a/static/fonts/KaTeX_SansSerif-Italic.woff2 b/static/fonts/KaTeX_SansSerif-Italic.woff2 index 8d47a38e6..5fa767bdd 100644 Binary files a/static/fonts/KaTeX_SansSerif-Italic.woff2 and b/static/fonts/KaTeX_SansSerif-Italic.woff2 differ diff --git a/static/fonts/KaTeX_SansSerif-Regular.eot b/static/fonts/KaTeX_SansSerif-Regular.eot index 4f3d6ab28..1b38b98a1 100644 Binary files a/static/fonts/KaTeX_SansSerif-Regular.eot and b/static/fonts/KaTeX_SansSerif-Regular.eot differ diff --git a/static/fonts/KaTeX_SansSerif-Regular.ttf b/static/fonts/KaTeX_SansSerif-Regular.ttf index 4588a7815..e4712f847 100644 Binary files a/static/fonts/KaTeX_SansSerif-Regular.ttf and b/static/fonts/KaTeX_SansSerif-Regular.ttf differ diff --git a/static/fonts/KaTeX_SansSerif-Regular.woff b/static/fonts/KaTeX_SansSerif-Regular.woff index 88ae8c2c6..33be36804 100644 Binary files a/static/fonts/KaTeX_SansSerif-Regular.woff and b/static/fonts/KaTeX_SansSerif-Regular.woff differ diff --git a/static/fonts/KaTeX_SansSerif-Regular.woff2 b/static/fonts/KaTeX_SansSerif-Regular.woff2 index 3feeb7bac..4fcb2e29a 100644 Binary files a/static/fonts/KaTeX_SansSerif-Regular.woff2 and b/static/fonts/KaTeX_SansSerif-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Script-Regular.eot b/static/fonts/KaTeX_Script-Regular.eot index 65082f084..7870d7f31 100644 Binary files a/static/fonts/KaTeX_Script-Regular.eot and b/static/fonts/KaTeX_Script-Regular.eot differ diff --git a/static/fonts/KaTeX_Script-Regular.ttf b/static/fonts/KaTeX_Script-Regular.ttf index db1a4cc02..da4d11308 100644 Binary files a/static/fonts/KaTeX_Script-Regular.ttf and b/static/fonts/KaTeX_Script-Regular.ttf differ diff --git a/static/fonts/KaTeX_Script-Regular.woff b/static/fonts/KaTeX_Script-Regular.woff index d2711e4a4..d6ae79f99 100644 Binary files a/static/fonts/KaTeX_Script-Regular.woff and b/static/fonts/KaTeX_Script-Regular.woff differ diff --git a/static/fonts/KaTeX_Script-Regular.woff2 b/static/fonts/KaTeX_Script-Regular.woff2 index ff0c5cfb2..1b43deb45 100644 Binary files a/static/fonts/KaTeX_Script-Regular.woff2 and b/static/fonts/KaTeX_Script-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Size1-Regular.eot b/static/fonts/KaTeX_Size1-Regular.eot index 0a581e8a0..29950f95f 100644 Binary files a/static/fonts/KaTeX_Size1-Regular.eot and b/static/fonts/KaTeX_Size1-Regular.eot differ diff --git a/static/fonts/KaTeX_Size1-Regular.ttf b/static/fonts/KaTeX_Size1-Regular.ttf index 2fb653bc1..194466a65 100644 Binary files a/static/fonts/KaTeX_Size1-Regular.ttf and b/static/fonts/KaTeX_Size1-Regular.ttf differ diff --git a/static/fonts/KaTeX_Size1-Regular.woff b/static/fonts/KaTeX_Size1-Regular.woff index 359a86400..237f271ed 100644 Binary files a/static/fonts/KaTeX_Size1-Regular.woff and b/static/fonts/KaTeX_Size1-Regular.woff differ diff --git a/static/fonts/KaTeX_Size1-Regular.woff2 b/static/fonts/KaTeX_Size1-Regular.woff2 index 764c9335a..39b6f8f74 100644 Binary files a/static/fonts/KaTeX_Size1-Regular.woff2 and b/static/fonts/KaTeX_Size1-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Size2-Regular.eot b/static/fonts/KaTeX_Size2-Regular.eot index 8af663865..b8b0536f9 100644 Binary files a/static/fonts/KaTeX_Size2-Regular.eot and b/static/fonts/KaTeX_Size2-Regular.eot differ diff --git a/static/fonts/KaTeX_Size2-Regular.ttf b/static/fonts/KaTeX_Size2-Regular.ttf index 285203470..b41b66a63 100644 Binary files a/static/fonts/KaTeX_Size2-Regular.ttf and b/static/fonts/KaTeX_Size2-Regular.ttf differ diff --git a/static/fonts/KaTeX_Size2-Regular.woff b/static/fonts/KaTeX_Size2-Regular.woff index d97cabc79..4a3055854 100644 Binary files a/static/fonts/KaTeX_Size2-Regular.woff and b/static/fonts/KaTeX_Size2-Regular.woff differ diff --git a/static/fonts/KaTeX_Size2-Regular.woff2 b/static/fonts/KaTeX_Size2-Regular.woff2 index a51a1fdbb..3facec1ab 100644 Binary files a/static/fonts/KaTeX_Size2-Regular.woff2 and b/static/fonts/KaTeX_Size2-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Size3-Regular.eot b/static/fonts/KaTeX_Size3-Regular.eot index 5c179834b..576b864fa 100644 Binary files a/static/fonts/KaTeX_Size3-Regular.eot and b/static/fonts/KaTeX_Size3-Regular.eot differ diff --git a/static/fonts/KaTeX_Size3-Regular.ttf b/static/fonts/KaTeX_Size3-Regular.ttf index 61df9a369..790ddbbc5 100644 Binary files a/static/fonts/KaTeX_Size3-Regular.ttf and b/static/fonts/KaTeX_Size3-Regular.ttf differ diff --git a/static/fonts/KaTeX_Size3-Regular.woff b/static/fonts/KaTeX_Size3-Regular.woff index 7fd7bbaaa..3a6d062e6 100644 Binary files a/static/fonts/KaTeX_Size3-Regular.woff and b/static/fonts/KaTeX_Size3-Regular.woff differ diff --git a/static/fonts/KaTeX_Size3-Regular.woff2 b/static/fonts/KaTeX_Size3-Regular.woff2 index 4a4ba33a4..2cffafe50 100644 Binary files a/static/fonts/KaTeX_Size3-Regular.woff2 and b/static/fonts/KaTeX_Size3-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Size4-Regular.eot b/static/fonts/KaTeX_Size4-Regular.eot index 373416210..c2b045fc3 100644 Binary files a/static/fonts/KaTeX_Size4-Regular.eot and b/static/fonts/KaTeX_Size4-Regular.eot differ diff --git a/static/fonts/KaTeX_Size4-Regular.ttf b/static/fonts/KaTeX_Size4-Regular.ttf index 42326180d..ce660aa7f 100644 Binary files a/static/fonts/KaTeX_Size4-Regular.ttf and b/static/fonts/KaTeX_Size4-Regular.ttf differ diff --git a/static/fonts/KaTeX_Size4-Regular.woff b/static/fonts/KaTeX_Size4-Regular.woff index dd2cd183b..7826c6c97 100644 Binary files a/static/fonts/KaTeX_Size4-Regular.woff and b/static/fonts/KaTeX_Size4-Regular.woff differ diff --git a/static/fonts/KaTeX_Size4-Regular.woff2 b/static/fonts/KaTeX_Size4-Regular.woff2 index 14b0dc280..c92189812 100644 Binary files a/static/fonts/KaTeX_Size4-Regular.woff2 and b/static/fonts/KaTeX_Size4-Regular.woff2 differ diff --git a/static/fonts/KaTeX_Typewriter-Regular.eot b/static/fonts/KaTeX_Typewriter-Regular.eot index 3d5880378..4c178f484 100644 Binary files a/static/fonts/KaTeX_Typewriter-Regular.eot and b/static/fonts/KaTeX_Typewriter-Regular.eot differ diff --git a/static/fonts/KaTeX_Typewriter-Regular.ttf b/static/fonts/KaTeX_Typewriter-Regular.ttf index a2f5990dd..b0427ad0a 100644 Binary files a/static/fonts/KaTeX_Typewriter-Regular.ttf and b/static/fonts/KaTeX_Typewriter-Regular.ttf differ diff --git a/static/fonts/KaTeX_Typewriter-Regular.woff b/static/fonts/KaTeX_Typewriter-Regular.woff index f33b84185..78e990488 100644 Binary files a/static/fonts/KaTeX_Typewriter-Regular.woff and b/static/fonts/KaTeX_Typewriter-Regular.woff differ diff --git a/static/fonts/KaTeX_Typewriter-Regular.woff2 b/static/fonts/KaTeX_Typewriter-Regular.woff2 index 52b55385a..618de99d4 100644 Binary files a/static/fonts/KaTeX_Typewriter-Regular.woff2 and b/static/fonts/KaTeX_Typewriter-Regular.woff2 differ diff --git a/static/katex.less b/static/katex.less index 87ff6e54d..43d6d7450 100644 --- a/static/katex.less +++ b/static/katex.less @@ -53,10 +53,44 @@ font-style: italic; } + .mathbf { + font-family: KaTeX_Main; + font-weight: bold; + } + .amsrm { font-family: KaTeX_AMS; } + .mathbb { + font-family: KaTeX_AMS; + } + + .mathcal { + font-family: KaTeX_Caligraphic; + } + + .mathfrak { + font-family: KaTeX_Fraktur; + } + + .mathtt { + font-family: KaTeX_Typewriter; + } + + .mathscr { + font-family: KaTeX_Script; + } + + .mathsf { + font-family: KaTeX_SansSerif; + } + + .mainit { + font-family: KaTeX_Main; + font-style: italic; + } + // This value is also used in fontMetrics.js, if you change it make sure the // values match. @ptperem: 10.0; diff --git a/test/katex-spec.js b/test/katex-spec.js index 36b4f91f4..52f34425d 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -13,33 +13,39 @@ var Settings = require("../src/Settings"); var defaultSettings = new Settings({}); -var getBuilt = function(expr) { - expect(expr).toBuild(); +var getBuilt = function(expr, settings) { + var usedSettings = settings ? settings : defaultSettings; - var built = buildHTML(parseTree(expr), defaultSettings); + expect(expr).toBuild(usedSettings); + + var parsedTree = parseTree(expr, usedSettings); + var built = buildHTML(parsedTree, usedSettings); // Remove the outer .katex and .katex-inner layers return built.children[2].children; }; -var getParsed = function(expr) { - expect(expr).toParse(); +var getParsed = function(expr, settings) { + var usedSettings = settings ? settings : defaultSettings; - return parseTree(expr, defaultSettings); + expect(expr).toParse(usedSettings); + return parseTree(expr, usedSettings); }; beforeEach(function() { jasmine.addMatchers({ toParse: function() { return { - compare: function(actual) { + compare: function(actual, settings) { + var usedSettings = settings ? settings : defaultSettings; + var result = { pass: true, message: "'" + actual + "' succeeded parsing" }; try { - parseTree(actual, defaultSettings); + parseTree(actual, usedSettings); } catch (e) { result.pass = false; if (e instanceof ParseError) { @@ -58,7 +64,9 @@ beforeEach(function() { toNotParse: function() { return { - compare: function(actual) { + compare: function(actual, settings) { + var usedSettings = settings ? settings : defaultSettings; + var result = { pass: false, message: "Expected '" + actual + "' to fail " + @@ -66,7 +74,7 @@ beforeEach(function() { }; try { - parseTree(actual, defaultSettings); + parseTree(actual, usedSettings); } catch (e) { if (e instanceof ParseError) { result.pass = true; @@ -85,16 +93,18 @@ beforeEach(function() { toBuild: function() { return { - compare: function(actual) { + compare: function(actual, settings) { + var usedSettings = settings ? settings : defaultSettings; + var result = { pass: true, message: "'" + actual + "' succeeded in building" }; - expect(actual).toParse(); + expect(actual).toParse(usedSettings); try { - buildHTML(parseTree(actual), defaultSettings); + buildHTML(parseTree(actual, usedSettings), usedSettings); } catch (e) { result.pass = false; if (e instanceof ParseError) { @@ -360,6 +370,40 @@ describe("A subscript and superscript tree-builder", function() { }); }); +describe("A parser with limit controls", function() { + it("should fail when the limit control is not preceded by an op node", function() { + expect("3\\nolimits_2^2").toNotParse(); + expect("\\sqrt\\limits_2^2").toNotParse(); + expect("45 +\\nolimits 45").toNotParse(); + }); + + it("should parse when the limit control directly follows an op node", function() { + expect("\\int\\limits_2^2 3").toParse(); + expect("\\sum\\nolimits_3^4 4").toParse(); + }); + + it("should parse when the limit control is in the sup/sub area of an op node", function() { + expect("\\int_2^2\\limits").toParse(); + expect("\\int^2\\nolimits_2").toParse(); + expect("\\int_2\\limits^2").toParse(); + }); + + it("should allow multiple limit controls in the sup/sub area of an op node", function() { + expect("\\int_2\\nolimits^2\\limits 3").toParse(); + expect("\\int\\nolimits\\limits_2^2").toParse(); + expect("\\int\\limits\\limits\\limits_2^2").toParse(); + }); + + it("should have the rightmost limit control determine the limits property " + + "of the preceding op node", function() { + var parsedInput = getParsed("\\int\\nolimits\\limits_2^2"); + expect(parsedInput[0].value.base.value.limits).toBe(true); + + parsedInput = getParsed("\\int\\limits_2\\nolimits^2"); + expect(parsedInput[0].value.base.value.limits).toBe(false); + }); +}); + describe("A group parser", function() { it("should not fail", function() { expect("{xy}").toParse(); @@ -1325,10 +1369,12 @@ describe("A cases environment", function() { }); -var getMathML = function(expr) { - expect(expr).toParse(); +var getMathML = function(expr, settings) { + var usedSettings = settings ? settings : defaultSettings; - var built = buildMathML(parseTree(expr)); + expect(expr).toParse(usedSettings); + + var built = buildMathML(parseTree(expr, usedSettings), expr, usedSettings); // Strip off the surrounding return built.children[0]; @@ -1366,3 +1412,45 @@ describe("A MathML builder", function() { expect(phantom.children[0].type).toEqual("mphantom"); }); }); + +describe("A parser that does not break on unsupported commands", function() { + // The parser breaks on unsupported commands unless it is explicitly + // told not to + var errorColor = "#933"; + var doNotBreakSettings = new Settings({ + breakOnUnsupportedCmds: false, + errorColor: errorColor + }); + + it("should still parse on unrecognized control sequences", function() { + expect("\\error").toParse(doNotBreakSettings); + }); + + describe("should allow unrecognized controls sequences anywhere, including", function() { + it("in superscripts and subscripts", function() { + expect("2_\\error").toBuild(doNotBreakSettings); + expect("3^{\\error}_\\error").toBuild(doNotBreakSettings); + expect("\\int\\nolimits^\\error_\\error").toBuild(doNotBreakSettings); + }); + + it("in fractions", function() { + expect("\\frac{345}{\\error}").toBuild(doNotBreakSettings); + expect("\\frac\\error{\\error}").toBuild(doNotBreakSettings); + }); + + it("in square roots", function() { + expect("\\sqrt\\error").toBuild(doNotBreakSettings); + expect("\\sqrt{234\\error}").toBuild(doNotBreakSettings); + }); + + it("in text boxes", function() { + expect("\\text{\\error}").toBuild(doNotBreakSettings); + }); + }); + + it("should produce color nodes with a color value given by errorColor", function() { + var parsedInput = getParsed("\\error", doNotBreakSettings); + expect(parsedInput[0].type).toBe("color"); + expect(parsedInput[0].value.color).toBe(errorColor); + }); +}); diff --git a/test/screenshotter/images/Accents-chrome.png b/test/screenshotter/images/Accents-chrome.png index 359ae05b9..6789a82d5 100644 Binary files a/test/screenshotter/images/Accents-chrome.png and b/test/screenshotter/images/Accents-chrome.png differ diff --git a/test/screenshotter/images/ArrayType-chrome.png b/test/screenshotter/images/ArrayType-chrome.png index 232aa5e39..871065895 100644 Binary files a/test/screenshotter/images/ArrayType-chrome.png and b/test/screenshotter/images/ArrayType-chrome.png differ diff --git a/test/screenshotter/images/Arrays-chrome.png b/test/screenshotter/images/Arrays-chrome.png index dc7f18580..9f244e0d4 100644 Binary files a/test/screenshotter/images/Arrays-chrome.png and b/test/screenshotter/images/Arrays-chrome.png differ diff --git a/test/screenshotter/images/Baseline-chrome.png b/test/screenshotter/images/Baseline-chrome.png index cbc3c4f9e..4c1869fd9 100644 Binary files a/test/screenshotter/images/Baseline-chrome.png and b/test/screenshotter/images/Baseline-chrome.png differ diff --git a/test/screenshotter/images/BasicTest-chrome.png b/test/screenshotter/images/BasicTest-chrome.png index d9af97a5c..d83b82125 100644 Binary files a/test/screenshotter/images/BasicTest-chrome.png and b/test/screenshotter/images/BasicTest-chrome.png differ diff --git a/test/screenshotter/images/BinomTest-chrome.png b/test/screenshotter/images/BinomTest-chrome.png index d9a18fe14..9de26f600 100644 Binary files a/test/screenshotter/images/BinomTest-chrome.png and b/test/screenshotter/images/BinomTest-chrome.png differ diff --git a/test/screenshotter/images/Cases-chrome.png b/test/screenshotter/images/Cases-chrome.png index a1a0d32e5..a81bc5e5a 100644 Binary files a/test/screenshotter/images/Cases-chrome.png and b/test/screenshotter/images/Cases-chrome.png differ diff --git a/test/screenshotter/images/Colors-chrome.png b/test/screenshotter/images/Colors-chrome.png index 5d23f0866..0b9ca84e8 100644 Binary files a/test/screenshotter/images/Colors-chrome.png and b/test/screenshotter/images/Colors-chrome.png differ diff --git a/test/screenshotter/images/DeepFontSizing-chrome.png b/test/screenshotter/images/DeepFontSizing-chrome.png index d62fe93f0..8013f532c 100644 Binary files a/test/screenshotter/images/DeepFontSizing-chrome.png and b/test/screenshotter/images/DeepFontSizing-chrome.png differ diff --git a/test/screenshotter/images/DelimiterSizing-chrome.png b/test/screenshotter/images/DelimiterSizing-chrome.png index 6f66a5eb4..2ec1c7f44 100644 Binary files a/test/screenshotter/images/DelimiterSizing-chrome.png and b/test/screenshotter/images/DelimiterSizing-chrome.png differ diff --git a/test/screenshotter/images/DisplayMode-chrome.png b/test/screenshotter/images/DisplayMode-chrome.png index bb30e84fe..d412e22c9 100644 Binary files a/test/screenshotter/images/DisplayMode-chrome.png and b/test/screenshotter/images/DisplayMode-chrome.png differ diff --git a/test/screenshotter/images/DisplayStyle-chrome.png b/test/screenshotter/images/DisplayStyle-chrome.png index 5e0826edd..3d7b16c12 100644 Binary files a/test/screenshotter/images/DisplayStyle-chrome.png and b/test/screenshotter/images/DisplayStyle-chrome.png differ diff --git a/test/screenshotter/images/Exponents-chrome.png b/test/screenshotter/images/Exponents-chrome.png index 06637157f..771083b65 100644 Binary files a/test/screenshotter/images/Exponents-chrome.png and b/test/screenshotter/images/Exponents-chrome.png differ diff --git a/test/screenshotter/images/FractionTest-chrome.png b/test/screenshotter/images/FractionTest-chrome.png index 3d143b491..d3d603089 100644 Binary files a/test/screenshotter/images/FractionTest-chrome.png and b/test/screenshotter/images/FractionTest-chrome.png differ diff --git a/test/screenshotter/images/Functions-chrome.png b/test/screenshotter/images/Functions-chrome.png index d968acf7f..6a414fc50 100644 Binary files a/test/screenshotter/images/Functions-chrome.png and b/test/screenshotter/images/Functions-chrome.png differ diff --git a/test/screenshotter/images/GreekLetters-chrome.png b/test/screenshotter/images/GreekLetters-chrome.png index 40ea9c4ff..02cdc7d76 100644 Binary files a/test/screenshotter/images/GreekLetters-chrome.png and b/test/screenshotter/images/GreekLetters-chrome.png differ diff --git a/test/screenshotter/images/KaTeX-chrome.png b/test/screenshotter/images/KaTeX-chrome.png index c02765d4d..31a155747 100644 Binary files a/test/screenshotter/images/KaTeX-chrome.png and b/test/screenshotter/images/KaTeX-chrome.png differ diff --git a/test/screenshotter/images/Lap-chrome.png b/test/screenshotter/images/Lap-chrome.png index 644dc2272..01da38209 100644 Binary files a/test/screenshotter/images/Lap-chrome.png and b/test/screenshotter/images/Lap-chrome.png differ diff --git a/test/screenshotter/images/LeftRight-chrome.png b/test/screenshotter/images/LeftRight-chrome.png index e5843d6a4..648d1b5ee 100644 Binary files a/test/screenshotter/images/LeftRight-chrome.png and b/test/screenshotter/images/LeftRight-chrome.png differ diff --git a/test/screenshotter/images/LeftRightListStyling-chrome.png b/test/screenshotter/images/LeftRightListStyling-chrome.png index b04b07af4..0c8fdff58 100644 Binary files a/test/screenshotter/images/LeftRightListStyling-chrome.png and b/test/screenshotter/images/LeftRightListStyling-chrome.png differ diff --git a/test/screenshotter/images/LeftRightStyleSizing-chrome.png b/test/screenshotter/images/LeftRightStyleSizing-chrome.png index 216940ee5..7d4b652b4 100644 Binary files a/test/screenshotter/images/LeftRightStyleSizing-chrome.png and b/test/screenshotter/images/LeftRightStyleSizing-chrome.png differ diff --git a/test/screenshotter/images/LimitControls-chrome.png b/test/screenshotter/images/LimitControls-chrome.png new file mode 100644 index 000000000..b9547efe7 Binary files /dev/null and b/test/screenshotter/images/LimitControls-chrome.png differ diff --git a/test/screenshotter/images/LimitControls-firefox.png b/test/screenshotter/images/LimitControls-firefox.png new file mode 100644 index 000000000..b28c78214 Binary files /dev/null and b/test/screenshotter/images/LimitControls-firefox.png differ diff --git a/test/screenshotter/images/NestedFractions-chrome.png b/test/screenshotter/images/NestedFractions-chrome.png index 0fdc0a0af..e86ffda01 100644 Binary files a/test/screenshotter/images/NestedFractions-chrome.png and b/test/screenshotter/images/NestedFractions-chrome.png differ diff --git a/test/screenshotter/images/NullDelimiterInteraction-chrome.png b/test/screenshotter/images/NullDelimiterInteraction-chrome.png index 79230fbc5..44d33829c 100644 Binary files a/test/screenshotter/images/NullDelimiterInteraction-chrome.png and b/test/screenshotter/images/NullDelimiterInteraction-chrome.png differ diff --git a/test/screenshotter/images/OpLimits-chrome.png b/test/screenshotter/images/OpLimits-chrome.png index 1c9bdcc8d..2ebca501b 100644 Binary files a/test/screenshotter/images/OpLimits-chrome.png and b/test/screenshotter/images/OpLimits-chrome.png differ diff --git a/test/screenshotter/images/Overline-chrome.png b/test/screenshotter/images/Overline-chrome.png index 2ffd410ec..6227931db 100644 Binary files a/test/screenshotter/images/Overline-chrome.png and b/test/screenshotter/images/Overline-chrome.png differ diff --git a/test/screenshotter/images/Phantom-chrome.png b/test/screenshotter/images/Phantom-chrome.png index d494bb47a..ea077ea7a 100644 Binary files a/test/screenshotter/images/Phantom-chrome.png and b/test/screenshotter/images/Phantom-chrome.png differ diff --git a/test/screenshotter/images/PrimeSpacing-chrome.png b/test/screenshotter/images/PrimeSpacing-chrome.png index e424e4aad..73f224604 100644 Binary files a/test/screenshotter/images/PrimeSpacing-chrome.png and b/test/screenshotter/images/PrimeSpacing-chrome.png differ diff --git a/test/screenshotter/images/RlapBug-chrome.png b/test/screenshotter/images/RlapBug-chrome.png index d7d1401f1..33b6ece88 100644 Binary files a/test/screenshotter/images/RlapBug-chrome.png and b/test/screenshotter/images/RlapBug-chrome.png differ diff --git a/test/screenshotter/images/Sizing-chrome.png b/test/screenshotter/images/Sizing-chrome.png index 8a725c91f..135aca0f0 100644 Binary files a/test/screenshotter/images/Sizing-chrome.png and b/test/screenshotter/images/Sizing-chrome.png differ diff --git a/test/screenshotter/images/SizingBaseline-chrome.png b/test/screenshotter/images/SizingBaseline-chrome.png index 843aba1d4..ec3ec36b5 100644 Binary files a/test/screenshotter/images/SizingBaseline-chrome.png and b/test/screenshotter/images/SizingBaseline-chrome.png differ diff --git a/test/screenshotter/images/Spacing-chrome.png b/test/screenshotter/images/Spacing-chrome.png index bf4b2fdf1..15002355b 100644 Binary files a/test/screenshotter/images/Spacing-chrome.png and b/test/screenshotter/images/Spacing-chrome.png differ diff --git a/test/screenshotter/images/Sqrt-chrome.png b/test/screenshotter/images/Sqrt-chrome.png index 53cad4921..0c48fff14 100644 Binary files a/test/screenshotter/images/Sqrt-chrome.png and b/test/screenshotter/images/Sqrt-chrome.png differ diff --git a/test/screenshotter/images/SqrtRoot-chrome.png b/test/screenshotter/images/SqrtRoot-chrome.png index 01e3b2d0a..7f61fe092 100644 Binary files a/test/screenshotter/images/SqrtRoot-chrome.png and b/test/screenshotter/images/SqrtRoot-chrome.png differ diff --git a/test/screenshotter/images/SupSubCharacterBox-chrome.png b/test/screenshotter/images/SupSubCharacterBox-chrome.png index 311c4095c..6bc3c2bb1 100644 Binary files a/test/screenshotter/images/SupSubCharacterBox-chrome.png and b/test/screenshotter/images/SupSubCharacterBox-chrome.png differ diff --git a/test/screenshotter/images/SupSubHorizSpacing-chrome.png b/test/screenshotter/images/SupSubHorizSpacing-chrome.png index 78c1674bf..3299a3531 100644 Binary files a/test/screenshotter/images/SupSubHorizSpacing-chrome.png and b/test/screenshotter/images/SupSubHorizSpacing-chrome.png differ diff --git a/test/screenshotter/images/SupSubOffsets-chrome.png b/test/screenshotter/images/SupSubOffsets-chrome.png index dc92f0d94..bd433044e 100644 Binary files a/test/screenshotter/images/SupSubOffsets-chrome.png and b/test/screenshotter/images/SupSubOffsets-chrome.png differ diff --git a/test/screenshotter/images/Text-chrome.png b/test/screenshotter/images/Text-chrome.png index 1bfa3b026..4647015c0 100644 Binary files a/test/screenshotter/images/Text-chrome.png and b/test/screenshotter/images/Text-chrome.png differ diff --git a/test/screenshotter/images/UnsupportedCmds-chrome.png b/test/screenshotter/images/UnsupportedCmds-chrome.png new file mode 100644 index 000000000..0c374bb63 Binary files /dev/null and b/test/screenshotter/images/UnsupportedCmds-chrome.png differ diff --git a/test/screenshotter/images/UnsupportedCmds-firefox.png b/test/screenshotter/images/UnsupportedCmds-firefox.png new file mode 100644 index 000000000..e4d9123a8 Binary files /dev/null and b/test/screenshotter/images/UnsupportedCmds-firefox.png differ diff --git a/test/screenshotter/images/VerticalSpacing-chrome.png b/test/screenshotter/images/VerticalSpacing-chrome.png index 1a7001f69..c7c4b2919 100644 Binary files a/test/screenshotter/images/VerticalSpacing-chrome.png and b/test/screenshotter/images/VerticalSpacing-chrome.png differ diff --git a/test/screenshotter/ss_data.js b/test/screenshotter/ss_data.js index 479b29e0a..3827e2a6a 100644 --- a/test/screenshotter/ss_data.js +++ b/test/screenshotter/ss_data.js @@ -11,7 +11,7 @@ var fs = require("fs"); var jsyaml = require("js-yaml"); var querystring = require("querystring"); -var queryKeys = ["tex", "pre", "post", "display"]; +var queryKeys = ["tex", "pre", "post", "display", "doNotBreak", "errorColor"]; var dict = fs.readFileSync(require.resolve("./ss_data.yaml")); dict = jsyaml.safeLoad(dict); for (var key in dict) { diff --git a/test/screenshotter/ss_data.yaml b/test/screenshotter/ss_data.yaml index a51bba16d..61775bb4c 100644 --- a/test/screenshotter/ss_data.yaml +++ b/test/screenshotter/ss_data.yaml @@ -62,6 +62,9 @@ LeftRightStyleSizing: | +\left\{\rule{0.1em}{1em}\right. x^{+\left\{\rule{0.1em}{1em}\right. x^{+\left\{\rule{0.1em}{1em}\right.}} +LimitControls: | + \displaystyle\int\limits_2^3 3x^2\,dx + \sum\nolimits^n_{i=1}i + + \textstyle\int\limits_x^y z NestedFractions: | \dfrac{\frac{a}{b}}{\frac{c}{d}}\dfrac{\dfrac{a}{b}} {\dfrac{c}{d}}\frac{\frac{a}{b}}{\frac{c}{d}} @@ -91,6 +94,10 @@ SupSubHorizSpacing: | x^{x^{x}}\Big|x_{x_{x_{x_{x}}}}\bigg|x^{x^{x_{x_{x_{x_{x}}}}}}\bigg| SupSubOffsets: \displaystyle \int_{2+3}x f^{2+3}+3\lim_{2+3+4+5}f Text: \frac{a}{b}\text{c~ {ab} \ e}+fg +UnsupportedCmds: + tex: \err\,\frac\fracerr3\,2^\superr_\suberr\,\sqrt\sqrterr + doNotBreak: 1 + errorColor: "#dd4c4c" VerticalSpacing: pre: potato
blah tex: x^{\Huge y}z diff --git a/test/screenshotter/test.html b/test/screenshotter/test.html index 67ff556f6..210ef8d2f 100644 --- a/test/screenshotter/test.html +++ b/test/screenshotter/test.html @@ -25,9 +25,16 @@ query[match[1]] = decodeURIComponent(match[2]); } var mathNode = document.getElementById("math"); - katex.render(query["tex"], mathNode, { - displayMode: !!query["display"] - }); + + var settings = { + displayMode: !!query["display"], + breakOnUnsupportedCmds: !query["doNotBreak"] + }; + if (query["errorColor"]) { + settings.errorColor = query["errorColor"]; + } + + katex.render(query["tex"], mathNode, settings); document.getElementById("pre").innerHTML = query["pre"] || ""; document.getElementById("post").innerHTML = query["post"] || "";