mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-08 20:48:41 +00:00
Merge remote-tracking branch 'origin/master' into ssYaml
This commit is contained in:
2
Makefile
2
Makefile
@@ -89,4 +89,4 @@ clean:
|
|||||||
rm -rf build/*
|
rm -rf build/*
|
||||||
|
|
||||||
screenshots:
|
screenshots:
|
||||||
docker run --volume=$(shell pwd):/KaTeX ss
|
dockers/Screenshotter/screenshotter.sh
|
||||||
|
@@ -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:
|
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`)
|
- `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:
|
For example:
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "KaTeX",
|
"name": "KaTeX",
|
||||||
"version": "0.4.2",
|
"version": "0.6.0-pre",
|
||||||
"main": [
|
"main": [
|
||||||
"dist/katex.min.js",
|
"dist/katex.min.js",
|
||||||
"dist/katex.min.css"
|
"dist/katex.min.css"
|
||||||
|
@@ -2,8 +2,28 @@ FROM ubuntu:14.04
|
|||||||
MAINTAINER xymostech <xymostech@gmail.com>
|
MAINTAINER xymostech <xymostech@gmail.com>
|
||||||
|
|
||||||
# Install things
|
# Install things
|
||||||
RUN apt-get -qq update
|
RUN apt-get -qq update && apt-get -qqy install \
|
||||||
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
|
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
|
RUN gem install ttfunk --version 1.1.1
|
||||||
|
|
||||||
# Download yuicompressor
|
# 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
|
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
|
# 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 unzip -qq batik-1.7.zip
|
||||||
RUN mv batik-1.7/batik-ttf2svg.jar /usr/share/java/
|
RUN mv batik-1.7/batik-ttf2svg.jar /usr/share/java/
|
||||||
|
|
||||||
@@ -22,6 +42,13 @@ RUN sed -i "1s/^/#include <cstddef>/" ttf2eot-0.0.2-2/OpenTypeUtilities.h
|
|||||||
RUN make -C ttf2eot-0.0.2-2/
|
RUN make -C ttf2eot-0.0.2-2/
|
||||||
RUN mv ttf2eot-0.0.2-2/ttf2eot /usr/bin/
|
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
|
# Download and compile woff2_compress
|
||||||
RUN git clone "https://code.google.com/p/font-compression-reference/" woff2_compress
|
RUN git clone "https://code.google.com/p/font-compression-reference/" woff2_compress
|
||||||
RUN make -C woff2_compress/woff2/
|
RUN make -C woff2_compress/woff2/
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
# directly.
|
# directly.
|
||||||
|
|
||||||
status=0
|
status=0
|
||||||
for browserTag in firefox:2.46.0 chrome:2.46.0; do
|
for browserTag in firefox:2.46.0; do
|
||||||
browser=${browserTag%:*}
|
browser=${browserTag%:*}
|
||||||
image=selenium/standalone-${browserTag}
|
image=selenium/standalone-${browserTag}
|
||||||
echo "Starting container for ${image}"
|
echo "Starting container for ${image}"
|
||||||
|
@@ -31,7 +31,11 @@ def main():
|
|||||||
'cmsy10.tfm',
|
'cmsy10.tfm',
|
||||||
'cmti10.tfm',
|
'cmti10.tfm',
|
||||||
'msam10.tfm',
|
'msam10.tfm',
|
||||||
'msbm10.tfm'
|
'msbm10.tfm',
|
||||||
|
'eufm10.tfm',
|
||||||
|
'cmtt10.tfm',
|
||||||
|
'rsfs10.tfm',
|
||||||
|
'cmss10.tfm',
|
||||||
]
|
]
|
||||||
|
|
||||||
# Extracted by running `\font\a=<font>` and then `\showthe\skewchar\a` in
|
# Extracted by running `\font\a=<font>` and then `\showthe\skewchar\a` in
|
||||||
@@ -48,7 +52,11 @@ def main():
|
|||||||
'cmsy10': 48,
|
'cmsy10': 48,
|
||||||
'cmti10': None,
|
'cmti10': None,
|
||||||
'msam10': None,
|
'msam10': None,
|
||||||
'msbm10': None
|
'msbm10': None,
|
||||||
|
'eufm10': None,
|
||||||
|
'cmtt10': None,
|
||||||
|
'rsfs10': None,
|
||||||
|
'cmss10': None,
|
||||||
}
|
}
|
||||||
|
|
||||||
font_name_to_tfm = {}
|
font_name_to_tfm = {}
|
||||||
@@ -68,6 +76,10 @@ def main():
|
|||||||
tex_char_num = int(char_data['char'])
|
tex_char_num = int(char_data['char'])
|
||||||
yshift = float(char_data['yshift'])
|
yshift = float(char_data['yshift'])
|
||||||
|
|
||||||
|
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)
|
tfm_char = font_name_to_tfm[font].get_char_metrics(tex_char_num)
|
||||||
|
|
||||||
height = round(tfm_char.height + yshift / 1000.0, 5)
|
height = round(tfm_char.height + yshift / 1000.0, 5)
|
||||||
|
@@ -153,7 +153,11 @@ $map{cmmi10} = {
|
|||||||
"Main-Italic" => [
|
"Main-Italic" => [
|
||||||
0x7B => 0x131, # \imath
|
0x7B => 0x131, # \imath
|
||||||
0x7C => 0x237, # \jmath
|
0x7C => 0x237, # \jmath
|
||||||
]
|
],
|
||||||
|
|
||||||
|
"Caligraphic-Regular" => [
|
||||||
|
[0x30,0x39] => 0x30, # Oldstyle 0-9
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
$map{cmsy10} = {
|
$map{cmsy10} = {
|
||||||
@@ -257,6 +261,10 @@ $map{cmsy10} = {
|
|||||||
"Math-Italic" => [
|
"Math-Italic" => [
|
||||||
0x36 => 0x2F # \not
|
0x36 => 0x2F # \not
|
||||||
],
|
],
|
||||||
|
|
||||||
|
"Caligraphic-Regular" => [
|
||||||
|
[0x41,0x5A] => 0x41, # A-Z
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
$map{cmex10} = {
|
$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 $cmfont (keys %map) {
|
||||||
foreach $mjfont (keys %{$map{$cmfont}}) {
|
foreach $mjfont (keys %{$map{$cmfont}}) {
|
||||||
$style = $mjfont; $style =~ s/.*?(-|$)//; $style = "Regular" unless $style;
|
$style = $mjfont; $style =~ s/.*?(-|$)//; $style = "Regular" unless $style;
|
||||||
|
@@ -64,10 +64,20 @@ class TfmFile(object):
|
|||||||
self.ligkern_program = LigKernProgram(ligkern_table)
|
self.ligkern_program = LigKernProgram(ligkern_table)
|
||||||
self.kern_table = kern_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:
|
if char_num < self.start_char or char_num > self.end_char:
|
||||||
raise RuntimeError("Invalid character number")
|
raise RuntimeError("Invalid character number")
|
||||||
|
|
||||||
|
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]
|
info = self.char_info[char_num + self.start_char]
|
||||||
|
|
||||||
char_kern_table = {}
|
char_kern_table = {}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "katex",
|
"name": "katex",
|
||||||
"version": "0.4.2",
|
"version": "0.6.0-pre",
|
||||||
"description": "Fast math typesetting for the web.",
|
"description": "Fast math typesetting for the web.",
|
||||||
"main": "katex.js",
|
"main": "katex.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@@ -129,6 +129,14 @@ Parser.prototype.parseExpression = function(pos, mode, breakOnInfix, breakOnToke
|
|||||||
}
|
}
|
||||||
var atom = this.parseAtom(pos, mode);
|
var atom = this.parseAtom(pos, mode);
|
||||||
if (!atom) {
|
if (!atom) {
|
||||||
|
if (!this.settings.breakOnUnsupportedCmds && lex.text[0] === "\\") {
|
||||||
|
var errorNode = this.handleUnsupportedCmd(lex.text, mode);
|
||||||
|
body.push(errorNode);
|
||||||
|
|
||||||
|
pos = lex.position;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (breakOnInfix && atom.result.type === "infix") {
|
if (breakOnInfix && atom.result.type === "infix") {
|
||||||
@@ -204,8 +212,16 @@ Parser.prototype.handleSupSubscript = function(pos, mode, symbol, name) {
|
|||||||
var group = this.parseGroup(pos, mode);
|
var group = this.parseGroup(pos, mode);
|
||||||
|
|
||||||
if (!group) {
|
if (!group) {
|
||||||
|
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(
|
throw new ParseError(
|
||||||
"Expected group after '" + symbol + "'", this.lexer, pos);
|
"Expected group after '" + symbol + "'", this.lexer, pos);
|
||||||
|
}
|
||||||
} else if (group.isFunction) {
|
} else if (group.isFunction) {
|
||||||
// ^ and _ have a greediness, so handle interactions with functions'
|
// ^ and _ have a greediness, so handle interactions with functions'
|
||||||
// greediness
|
// 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.
|
* Parses a group with optional super/subscripts.
|
||||||
*
|
*
|
||||||
@@ -254,7 +301,19 @@ Parser.prototype.parseAtom = function(pos, mode) {
|
|||||||
// Lex the first token
|
// Lex the first token
|
||||||
var lex = this.lexer.lex(currPos, mode);
|
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
|
// We got a superscript start
|
||||||
if (superscript) {
|
if (superscript) {
|
||||||
throw new ParseError(
|
throw new ParseError(
|
||||||
@@ -487,9 +546,18 @@ Parser.prototype.parseArguments = function(pos, mode, func, funcData, args) {
|
|||||||
arg = this.parseGroup(newPos, mode);
|
arg = this.parseGroup(newPos, mode);
|
||||||
}
|
}
|
||||||
if (!arg) {
|
if (!arg) {
|
||||||
|
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(
|
throw new ParseError(
|
||||||
"Expected group after '" + func + "'",
|
"Expected group after '" + func + "'", this.lexer, pos);
|
||||||
this.lexer, newPos);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var argNode;
|
var argNode;
|
||||||
|
@@ -21,6 +21,8 @@ function Settings(options) {
|
|||||||
// allow null options
|
// allow null options
|
||||||
options = options || {};
|
options = options || {};
|
||||||
this.displayMode = get(options.displayMode, false);
|
this.displayMode = get(options.displayMode, false);
|
||||||
|
this.breakOnUnsupportedCmds = get(options.breakOnUnsupportedCmds, true);
|
||||||
|
this.errorColor = get(options.errorColor, "#cc0000");
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Settings;
|
module.exports = Settings;
|
||||||
|
@@ -54,7 +54,11 @@ var mathit = function(value, mode, color, classes) {
|
|||||||
var mathrm = 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
|
// Decide what font to render the symbol in by its entry in the symbols
|
||||||
// table.
|
// 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);
|
return makeSymbol(value, "Main-Regular", mode, color, classes);
|
||||||
} else {
|
} else {
|
||||||
return makeSymbol(
|
return makeSymbol(
|
||||||
|
@@ -104,7 +104,8 @@ var shouldHandleSupSub = function(group, options) {
|
|||||||
} else if (group.type === "op") {
|
} else if (group.type === "op") {
|
||||||
// Operators handle supsubs differently when they have limits
|
// Operators handle supsubs differently when they have limits
|
||||||
// (e.g. `\displaystyle\sum_2^3`)
|
// (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") {
|
} else if (group.type === "accent") {
|
||||||
return isCharacterBox(group.value.base);
|
return isCharacterBox(group.value.base);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -217,6 +217,26 @@ var makeStackedDelim = function(delim, heightTotal, center, options, mode) {
|
|||||||
bottom = "\u23ad";
|
bottom = "\u23ad";
|
||||||
repeat = "\u23aa";
|
repeat = "\u23aa";
|
||||||
font = "Size4-Regular";
|
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") {
|
} else if (delim === "\\surd") {
|
||||||
top = "\ue001";
|
top = "\ue001";
|
||||||
bottom = "\u23b7";
|
bottom = "\u23b7";
|
||||||
@@ -312,7 +332,9 @@ var stackLargeDelimiters = [
|
|||||||
var stackAlwaysDelimiters = [
|
var stackAlwaysDelimiters = [
|
||||||
"\\uparrow", "\\downarrow", "\\updownarrow",
|
"\\uparrow", "\\downarrow", "\\updownarrow",
|
||||||
"\\Uparrow", "\\Downarrow", "\\Updownarrow",
|
"\\Uparrow", "\\Downarrow", "\\Updownarrow",
|
||||||
"|", "\\|", "\\vert", "\\Vert"
|
"|", "\\|", "\\vert", "\\Vert",
|
||||||
|
"\\lvert", "\\rvert", "\\lVert", "\\rVert",
|
||||||
|
"\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"
|
||||||
];
|
];
|
||||||
|
|
||||||
// and delimiters that never stack
|
// and delimiters that never stack
|
||||||
|
@@ -256,6 +256,137 @@
|
|||||||
"57370": {"depth": 0.13597, "height": 0.63597, "italic": 0.0, "skew": 0.0},
|
"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}
|
"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": {
|
"Main-Bold": {
|
||||||
"33": {"depth": 0.0, "height": 0.69444, "italic": 0.0, "skew": 0.0},
|
"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},
|
"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},
|
"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}
|
"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": {
|
"Size1-Regular": {
|
||||||
"40": {"depth": 0.35001, "height": 0.85, "italic": 0.0, "skew": 0.0},
|
"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},
|
"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},
|
"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},
|
"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}
|
"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}
|
||||||
}}
|
}}
|
||||||
|
@@ -205,6 +205,8 @@ var delimiters = [
|
|||||||
"\\{", "\\lbrace", "\\}", "\\rbrace",
|
"\\{", "\\lbrace", "\\}", "\\rbrace",
|
||||||
"\\lfloor", "\\rfloor", "\\lceil", "\\rceil",
|
"\\lfloor", "\\rfloor", "\\lceil", "\\rceil",
|
||||||
"<", ">", "\\langle", "\\rangle",
|
"<", ">", "\\langle", "\\rangle",
|
||||||
|
"\\lvert", "\\rvert", "\\lVert", "\\rVert",
|
||||||
|
"\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache",
|
||||||
"/", "\\backslash",
|
"/", "\\backslash",
|
||||||
"|", "\\vert", "\\|", "\\Vert",
|
"|", "\\vert", "\\|", "\\Vert",
|
||||||
"\\uparrow", "\\Uparrow",
|
"\\uparrow", "\\Uparrow",
|
||||||
|
@@ -1947,6 +1947,11 @@ var symbols = {
|
|||||||
group: "open",
|
group: "open",
|
||||||
replace: "\u2223"
|
replace: "\u2223"
|
||||||
},
|
},
|
||||||
|
"\\lVert": {
|
||||||
|
font: "main",
|
||||||
|
group: "open",
|
||||||
|
replace: "\u2225"
|
||||||
|
},
|
||||||
")": {
|
")": {
|
||||||
font: "main",
|
font: "main",
|
||||||
group: "close"
|
group: "close"
|
||||||
@@ -1973,6 +1978,11 @@ var symbols = {
|
|||||||
group: "close",
|
group: "close",
|
||||||
replace: "\u2223"
|
replace: "\u2223"
|
||||||
},
|
},
|
||||||
|
"\\rVert": {
|
||||||
|
font: "main",
|
||||||
|
group: "close",
|
||||||
|
replace: "\u2225"
|
||||||
|
},
|
||||||
"=": {
|
"=": {
|
||||||
font: "main",
|
font: "main",
|
||||||
group: "rel"
|
group: "rel"
|
||||||
|
@@ -48,22 +48,22 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.font-face('AMS', normal, normal);
|
.font-face('AMS', normal, normal);
|
||||||
// .font-face('Caligraphic', bold, normal);
|
.font-face('Caligraphic', bold, normal);
|
||||||
// .font-face('Caligraphic', normal, normal);
|
.font-face('Caligraphic', normal, normal);
|
||||||
// .font-face('Fraktur', bold, normal);
|
.font-face('Fraktur', bold, normal);
|
||||||
// .font-face('Fraktur', normal, normal);
|
.font-face('Fraktur', normal, normal);
|
||||||
.font-face('Main', bold, normal);
|
.font-face('Main', bold, normal);
|
||||||
.font-face('Main', normal, italic);
|
.font-face('Main', normal, italic);
|
||||||
.font-face('Main', normal, normal);
|
.font-face('Main', normal, normal);
|
||||||
.font-face('Math', bold, italic);
|
// .font-face('Math', bold, italic);
|
||||||
.font-face('Math', normal, italic);
|
.font-face('Math', normal, italic);
|
||||||
.font-face('Math', normal, normal);
|
// .font-face('Math', normal, normal);
|
||||||
// .font-face('SansSerif', bold, normal);
|
// .font-face('SansSerif', bold, normal);
|
||||||
// .font-face('SansSerif', normal, italic);
|
// .font-face('SansSerif', normal, italic);
|
||||||
// .font-face('SansSerif', normal, normal);
|
.font-face('SansSerif', normal, normal);
|
||||||
// .font-face('Script', normal, normal);
|
.font-face('Script', normal, normal);
|
||||||
.font-face('Size1', normal, normal);
|
.font-face('Size1', normal, normal);
|
||||||
.font-face('Size2', normal, normal);
|
.font-face('Size2', normal, normal);
|
||||||
.font-face('Size3', normal, normal);
|
.font-face('Size3', normal, normal);
|
||||||
.font-face('Size4', normal, normal);
|
.font-face('Size4', normal, normal);
|
||||||
// .font-face('Typewriter', normal, normal);
|
.font-face('Typewriter', normal, normal);
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -53,10 +53,44 @@
|
|||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mathbf {
|
||||||
|
font-family: KaTeX_Main;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
.amsrm {
|
.amsrm {
|
||||||
font-family: KaTeX_AMS;
|
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
|
// This value is also used in fontMetrics.js, if you change it make sure the
|
||||||
// values match.
|
// values match.
|
||||||
@ptperem: 10.0;
|
@ptperem: 10.0;
|
||||||
|
@@ -13,33 +13,39 @@ var Settings = require("../src/Settings");
|
|||||||
|
|
||||||
var defaultSettings = new Settings({});
|
var defaultSettings = new Settings({});
|
||||||
|
|
||||||
var getBuilt = function(expr) {
|
var getBuilt = function(expr, settings) {
|
||||||
expect(expr).toBuild();
|
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
|
// Remove the outer .katex and .katex-inner layers
|
||||||
return built.children[2].children;
|
return built.children[2].children;
|
||||||
};
|
};
|
||||||
|
|
||||||
var getParsed = function(expr) {
|
var getParsed = function(expr, settings) {
|
||||||
expect(expr).toParse();
|
var usedSettings = settings ? settings : defaultSettings;
|
||||||
|
|
||||||
return parseTree(expr, defaultSettings);
|
expect(expr).toParse(usedSettings);
|
||||||
|
return parseTree(expr, usedSettings);
|
||||||
};
|
};
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
jasmine.addMatchers({
|
jasmine.addMatchers({
|
||||||
toParse: function() {
|
toParse: function() {
|
||||||
return {
|
return {
|
||||||
compare: function(actual) {
|
compare: function(actual, settings) {
|
||||||
|
var usedSettings = settings ? settings : defaultSettings;
|
||||||
|
|
||||||
var result = {
|
var result = {
|
||||||
pass: true,
|
pass: true,
|
||||||
message: "'" + actual + "' succeeded parsing"
|
message: "'" + actual + "' succeeded parsing"
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
parseTree(actual, defaultSettings);
|
parseTree(actual, usedSettings);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
result.pass = false;
|
result.pass = false;
|
||||||
if (e instanceof ParseError) {
|
if (e instanceof ParseError) {
|
||||||
@@ -58,7 +64,9 @@ beforeEach(function() {
|
|||||||
|
|
||||||
toNotParse: function() {
|
toNotParse: function() {
|
||||||
return {
|
return {
|
||||||
compare: function(actual) {
|
compare: function(actual, settings) {
|
||||||
|
var usedSettings = settings ? settings : defaultSettings;
|
||||||
|
|
||||||
var result = {
|
var result = {
|
||||||
pass: false,
|
pass: false,
|
||||||
message: "Expected '" + actual + "' to fail " +
|
message: "Expected '" + actual + "' to fail " +
|
||||||
@@ -66,7 +74,7 @@ beforeEach(function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
parseTree(actual, defaultSettings);
|
parseTree(actual, usedSettings);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof ParseError) {
|
if (e instanceof ParseError) {
|
||||||
result.pass = true;
|
result.pass = true;
|
||||||
@@ -85,16 +93,18 @@ beforeEach(function() {
|
|||||||
|
|
||||||
toBuild: function() {
|
toBuild: function() {
|
||||||
return {
|
return {
|
||||||
compare: function(actual) {
|
compare: function(actual, settings) {
|
||||||
|
var usedSettings = settings ? settings : defaultSettings;
|
||||||
|
|
||||||
var result = {
|
var result = {
|
||||||
pass: true,
|
pass: true,
|
||||||
message: "'" + actual + "' succeeded in building"
|
message: "'" + actual + "' succeeded in building"
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(actual).toParse();
|
expect(actual).toParse(usedSettings);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
buildHTML(parseTree(actual), defaultSettings);
|
buildHTML(parseTree(actual, usedSettings), usedSettings);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
result.pass = false;
|
result.pass = false;
|
||||||
if (e instanceof ParseError) {
|
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() {
|
describe("A group parser", function() {
|
||||||
it("should not fail", function() {
|
it("should not fail", function() {
|
||||||
expect("{xy}").toParse();
|
expect("{xy}").toParse();
|
||||||
@@ -1325,10 +1369,12 @@ describe("A cases environment", function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var getMathML = function(expr) {
|
var getMathML = function(expr, settings) {
|
||||||
expect(expr).toParse();
|
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 <span>
|
// Strip off the surrounding <span>
|
||||||
return built.children[0];
|
return built.children[0];
|
||||||
@@ -1366,3 +1412,45 @@ describe("A MathML builder", function() {
|
|||||||
expect(phantom.children[0].type).toEqual("mphantom");
|
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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user