Copyright and Licensing
=======================

Many KaTeX SVG images have been adapted from glyphs in the KaTeX fonts.
Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>)
Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>)
Licensed under the SIL Open Font License, Version 1.1. See \nhttp://scripts.sil.org/OFL

The license terms above apply to the following images:
          FILENAME         ORIGINAL GLYPH     ORIGINAL FONT FILE
    =====================  ==============     ==================
    doubleleftarrow.svg       U+21D0             KaTeX Main
    doubleleftrightarrow.svg  U+21D4             KaTeX Main
    doublerightarrow.svg      U+21D2             KaTeX Main
    hookleftarrow.svg         U+21A9             KaTeX Main
    hookrightarrow.svg        U+21AA             KaTeX Main
    leftarrow.svg             U+2190             KaTeX Main
    leftharpoon.svg           U+21BD             KaTeX Main
    leftrightarrow.svg        U+2194             KaTeX Main
    leftrightharpoons.svg     U+21BC/21B1        KaTeX Main
    mapsto.svg                U+21A6             KaTeX Main
    overbrace.svg             U+23A9/23A8/23A7   KaTeX Size 4 Regular
    rightarrow.svg            U+2192             KaTeX Main
    rightharpoon.svg          U+21C0             KaTeX Main
    rightharpoondown.svg      U+21C1             KaTeX Main
    rightleftharpoons.svg     U+21CC             KaTeX Main
    tofrom.svg                U+21C4             KaTeX AMS Regular
    twoheadleftarrow.svg      U+219E             KaTeX AMS Regular
    twoheadrightarrow.svg     U+21A0             KaTeX AMS Regular
    underbrace.svg            U+23A9/23A8/23A7   KaTeX Size 4 Regular

Images for \widehat, \widetilde, \overgroup, and \undergroup have been adapted (and modified)
from font glyphs in the MnSymbol package. These fonts are in the public domain.


Technical Comments
==================

Nested SVGs
    Many of the KaTeX SVG images contain a nested SVG. This is done to achieve a
    stretchy image while avoiding distortion of arrowheads or brace corners.

    The inner SVG typically contains a very long (400 em) arrow.

    The outer SVG acts like a window that exposes only part of the inner SVG. The
    outer SVG will grow or shrink to match the dimensions set for it by CSS.

    The inner SVG always has a longer, thinner aspect ratio than the outer SVG.
    After the inner SVG fills 100% of the height of the outer SVG, there is a long
    arrow shaft left over. That left-over shaft is not shown. Instead, it is
    sliced off because the inner SVG is set to "preserveAspectRatio='... slice'".

    Thus, the reader sees an arrow that matches the subject matter width without
    distortion.

    Some functions, such as \cancel, need to vary their aspect ratio. These functions
    do not get the nested SVG treatment.

Second Brush Stroke
    Low resolution monitors struggle to display images in fine detail.
    So browsers apply anti-aliasing as described at http://www.rastertragedy.com/.
    A long straight arrow shaft therefore will sometimes appear as if it has a
    blurred edge.

    To mitigate this, these SVG files contain a second "brush-stroke" on the
    arrow shafts. That is, a second long thin rectangular SVG path has been
    written directly on top of each arrow shaft. This reinforcement causes some
    of the screen pixels to display as black instead of the anti-aliased gray
    pixel that a  single path would generate. So we get arrow shafts whose
    edges appear to be sharper.
