katex 0.12.0 → 0.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +1 -1
  3. package/README.md +8 -7
  4. package/contrib/auto-render/auto-render.js +12 -19
  5. package/contrib/auto-render/index.html +9 -3
  6. package/contrib/auto-render/splitAtDelimiters.js +44 -61
  7. package/contrib/auto-render/test/auto-render-spec.js +88 -52
  8. package/contrib/copy-tex/README.md +5 -9
  9. package/contrib/copy-tex/copy-tex.css +0 -3
  10. package/contrib/mathtex-script-type/README.md +5 -5
  11. package/contrib/mhchem/README.md +4 -2
  12. package/contrib/render-a11y-string/render-a11y-string.js +31 -2
  13. package/contrib/render-a11y-string/test/render-a11y-string-spec.js +23 -0
  14. package/dist/README.md +8 -7
  15. package/dist/contrib/auto-render.js +148 -171
  16. package/dist/contrib/auto-render.min.js +1 -1
  17. package/dist/contrib/auto-render.mjs +91 -95
  18. package/dist/contrib/copy-tex.css +3 -3
  19. package/dist/contrib/copy-tex.js +11 -108
  20. package/dist/contrib/copy-tex.min.css +1 -1
  21. package/dist/contrib/copy-tex.min.js +1 -1
  22. package/dist/contrib/copy-tex.mjs +21 -20
  23. package/dist/contrib/mathtex-script-type.js +66 -91
  24. package/dist/contrib/mathtex-script-type.min.js +1 -1
  25. package/dist/contrib/mathtex-script-type.mjs +3 -3
  26. package/dist/contrib/mhchem.js +70 -95
  27. package/dist/contrib/mhchem.min.js +1 -1
  28. package/dist/contrib/mhchem.mjs +2 -2
  29. package/dist/contrib/render-a11y-string.js +97 -92
  30. package/dist/contrib/render-a11y-string.min.js +1 -1
  31. package/dist/contrib/render-a11y-string.mjs +86 -45
  32. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  33. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  34. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  35. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  36. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  37. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  38. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  39. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  40. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  41. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  42. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  43. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  44. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  45. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  46. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  47. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  48. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  49. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  50. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  51. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  52. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  53. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  54. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  55. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  56. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  57. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  58. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  59. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  60. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  61. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  62. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  63. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  64. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  65. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  66. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  67. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  68. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  69. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  70. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  71. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  72. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  73. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  74. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  75. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  76. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  77. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  78. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  79. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  80. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  81. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  82. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  83. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  84. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  85. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  86. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  87. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  88. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  89. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  90. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  91. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  92. package/dist/katex.css +66 -10
  93. package/dist/katex.js +2714 -1950
  94. package/dist/katex.min.css +1 -1
  95. package/dist/katex.min.js +1 -1
  96. package/dist/katex.mjs +3162 -2372
  97. package/katex.js +4 -3
  98. package/package.json +69 -59
  99. package/src/Lexer.js +4 -2
  100. package/src/MacroExpander.js +117 -37
  101. package/src/Options.js +2 -2
  102. package/src/ParseError.js +1 -1
  103. package/src/Parser.js +100 -159
  104. package/src/Settings.js +2 -2
  105. package/src/Style.js +4 -4
  106. package/src/Token.js +1 -1
  107. package/src/buildCommon.js +12 -5
  108. package/src/buildHTML.js +11 -0
  109. package/src/buildMathML.js +6 -0
  110. package/src/defineEnvironment.js +0 -3
  111. package/src/defineFunction.js +15 -22
  112. package/src/delimiter.js +61 -57
  113. package/src/domTree.js +1 -1
  114. package/src/environments/array.js +223 -35
  115. package/src/environments/cd.js +312 -0
  116. package/src/fontMetrics.js +1 -1
  117. package/src/fontMetricsData.js +2076 -0
  118. package/src/fonts/.gitignore +9 -0
  119. package/src/fonts/Makefile +139 -0
  120. package/src/fonts/default.cfg +20 -0
  121. package/src/fonts/generate_fonts.py +61 -0
  122. package/src/fonts/lib/Extra.otf +0 -0
  123. package/src/fonts/lib/Space.ttx +234 -0
  124. package/src/fonts/makeBlacker +49 -0
  125. package/src/fonts/makeFF +2003 -0
  126. package/src/fonts/xbbold.mf +182 -0
  127. package/src/fonts.less +64 -0
  128. package/src/functions/accent.js +3 -2
  129. package/src/functions/arrow.js +8 -2
  130. package/src/functions/color.js +4 -4
  131. package/src/functions/cr.js +7 -25
  132. package/src/functions/def.js +50 -24
  133. package/src/functions/delimsizing.js +8 -0
  134. package/src/functions/enclose.js +80 -12
  135. package/src/functions/environment.js +1 -1
  136. package/src/functions/font.js +3 -4
  137. package/src/functions/genfrac.js +36 -11
  138. package/src/functions/hbox.js +39 -0
  139. package/src/functions/kern.js +1 -0
  140. package/src/functions/mathchoice.js +1 -0
  141. package/src/functions/mclass.js +2 -1
  142. package/src/functions/op.js +3 -7
  143. package/src/functions/operatorname.js +1 -1
  144. package/src/functions/raisebox.js +0 -1
  145. package/src/functions/styling.js +1 -0
  146. package/src/functions/supsub.js +1 -3
  147. package/src/functions/symbolsOrd.js +0 -2
  148. package/src/functions/text.js +2 -3
  149. package/src/functions/vcenter.js +44 -0
  150. package/src/functions.js +3 -0
  151. package/src/katex.less +69 -16
  152. package/src/macros.js +42 -6
  153. package/src/mathMLTree.js +16 -1
  154. package/src/metrics/.gitignore +1 -0
  155. package/src/metrics/README.md +23 -0
  156. package/src/metrics/extract_tfms.py +114 -0
  157. package/src/metrics/extract_ttfs.py +119 -0
  158. package/src/metrics/format_json.py +28 -0
  159. package/src/metrics/mapping.pl +1224 -0
  160. package/src/metrics/parse_tfm.py +211 -0
  161. package/src/parseNode.js +29 -1
  162. package/src/parseTree.js +6 -0
  163. package/src/stretchy.js +12 -5
  164. package/src/svgGeometry.js +33 -4
  165. package/src/symbols.js +5 -3
  166. package/src/types.js +3 -2
  167. package/src/unicodeScripts.js +5 -0
@@ -0,0 +1,9 @@
1
+ lib/blacker.mf
2
+ lib/mftrace-modified
3
+ lib/Space.otf
4
+ ff
5
+ otf
6
+ pfa
7
+ ttf
8
+ woff
9
+ woff2
@@ -0,0 +1,139 @@
1
+ #!gmake
2
+ #
3
+ # Version: Apache License 2.0
4
+ #
5
+ # Copyright (c) 2013 MathJax Project
6
+ # Copyright (c) 2013 The MathJax Consortium
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ CUSTOM=custom.cfg
22
+
23
+ -include $(CUSTOM)
24
+
25
+ MFTRACE_MODIFIED=lib/mftrace-modified
26
+
27
+ all: config fonts
28
+
29
+ $(CUSTOM):
30
+ @cp default.cfg $(CUSTOM);
31
+
32
+ $(CUSTOM).pl: $(CUSTOM)
33
+ @echo "Creating Perl config file..."
34
+ @cp $(CUSTOM) $(CUSTOM).pl
35
+ @echo >> $(CUSTOM).pl # ensure that the config file ends by a new line
36
+ @echo "MFTRACE_PATH=`$(WHICH) $(MFTRACE)`" >> $(CUSTOM).pl
37
+ @$(SED) -i "s|^\([A-Z_0-9]*\)=\(.*\)|$$\1='\2';|" $(CUSTOM).pl
38
+ @echo "1;" >> $(CUSTOM).pl
39
+
40
+ .PHONY: config
41
+ config: $(CUSTOM).pl
42
+
43
+ blacker: $(MFTRACE_MODIFIED)
44
+ $(MFTRACE_MODIFIED):
45
+ $(PERL) makeBlacker 15 # values between 10 and 30 seem best
46
+
47
+ pfa: $(MFTRACE_MODIFIED)
48
+ @echo "cmr10"
49
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmr10
50
+
51
+ @echo "cmmi10"
52
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --encoding $(TETEXENCODING)/aae443f0.enc --simplify cmmi10
53
+
54
+ @echo "cmsy10"
55
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --encoding $(TETEXENCODING)/10037936.enc --simplify cmsy10
56
+
57
+ @echo "cmex10"
58
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmex10
59
+
60
+ @echo "cmbx10"
61
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmbx10
62
+
63
+ @echo "cmbxti10"
64
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmbxti10
65
+
66
+ @echo "cmti10"
67
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmti10
68
+
69
+ @echo "msam10"
70
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify --encoding $(TETEXENCODING)/10037936.enc msam10
71
+
72
+ @echo "msbm10"
73
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify --encoding $(TETEXENCODING)/10037936.enc msbm10
74
+
75
+ @echo "cmmib10"
76
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --encoding $(TETEXENCODING)/aae443f0.enc --simplify cmmib10
77
+
78
+ @echo "cmbsy10"
79
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --encoding $(TETEXENCODING)/10037936.enc --simplify cmbsy10
80
+
81
+ @echo "cmtt10"
82
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmtt10
83
+
84
+ @echo "cmss10"
85
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmss10
86
+ @echo "cmssi10"
87
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmssi10
88
+ @echo "cmssbx10"
89
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify cmssbx10
90
+
91
+ @echo "eufm10"
92
+ cp "`$(KPSEWHICH) eufm10.pfb`" eufm10.pfb
93
+ @echo "eufb10"
94
+ cp "`$(KPSEWHICH) eufb10.pfb`" eufb10.pfb
95
+
96
+ # echo "eusm10"
97
+ # $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify eusm10
98
+ # echo "eusb10"
99
+ # $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify eusb10
100
+
101
+ @echo "rsfs10"
102
+ $(PYTHON) $(MFTRACE_MODIFIED) --magnification 1000 --simplify --encoding $(BASEENCODING)/tex256.enc rsfs10
103
+
104
+ mkdir -p pfa
105
+ rm -f pfa/*
106
+ mv *.pfa pfa
107
+ mv *.pfb pfa
108
+
109
+ ff: pfa
110
+ mkdir -p ff otf
111
+ rm -f ff/* otf/*
112
+ $(PERL) makeFF
113
+
114
+ .PHONY: fonts
115
+ fonts: ff
116
+ mkdir -p ttf woff woff2
117
+ rm -f ttf/* woff/* woff2/*
118
+
119
+ @for file in `ls ff/*.ff | $(SED) 's|ff/\(.*\)\.ff|\1|'`; do \
120
+ echo ""; \
121
+ echo $$file; \
122
+ $(FONTFORGE) -lang=ff -script ff/$$file.ff; \
123
+ \
124
+ echo "Hinting $$file"; \
125
+ if echo "$$file" | $(GREP) -q -e "Size[1-4]" -e "Typewriter"; then \
126
+ $(TTFAUTOHINT) --windows-compatibility --symbol ttf/$$file.ttf ttf/$$file.ttf.hinted; \
127
+ else \
128
+ $(TTFAUTOHINT) --windows-compatibility ttf/$$file.ttf ttf/$$file.ttf.hinted; \
129
+ fi; \
130
+ mv ttf/$$file.ttf.hinted ttf/$$file.ttf; \
131
+ \
132
+ echo "Generating $$file..."; \
133
+ $(PYTHON) generate_fonts.py ttf/$$file.ttf; \
134
+ done
135
+
136
+ clean:
137
+ rm -f $(CUSTOM).pl
138
+ rm -f $(MFTRACE_MODIFIED) lib/blacker.mf
139
+ rm -rf pfa ff otf ttf woff woff2
@@ -0,0 +1,20 @@
1
+ # Note: paths should be absolute, unless they point to programs in your $PATH.
2
+
3
+ ##### Standard programs #####
4
+ GREP=grep
5
+ PERL=perl
6
+ PYTHON=python
7
+ SED=sed
8
+ WHICH=which
9
+ KPSEWHICH=kpsewhich
10
+
11
+ ##### Font tools #####
12
+ # Most of the tools below are standard and should be available from your package manager.
13
+ FONTFORGE=fontforge
14
+ MFTRACE=mftrace
15
+ TTX=ttx
16
+ TTFAUTOHINT=ttfautohint
17
+
18
+ ##### TeXLive Encoding
19
+ TETEXENCODING=/usr/share/texlive/texmf-texlive/fonts/enc/dvips/tetex/
20
+ BASEENCODING=/usr/share/texlive/texmf-texlive/fonts/enc/dvips/base/
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env python2
2
+
3
+ import sys
4
+ import os
5
+ import json
6
+
7
+ from fontTools.ttLib import TTFont, sfnt
8
+ from fontTools.misc.timeTools import timestampNow
9
+ sfnt.USE_ZOPFLI = True
10
+
11
+ if len(sys.argv) < 2:
12
+ print "Usage: %s <font file>" % sys.argv[0]
13
+ sys.exit(1)
14
+
15
+ font_file = sys.argv[1]
16
+ font_name = os.path.splitext(os.path.basename(font_file))[0]
17
+
18
+ # now or SOURCE_DATE_EPOCH, if present
19
+ timestamp = timestampNow()
20
+
21
+ font = TTFont(font_file, recalcBBoxes=False, recalcTimestamp=False)
22
+
23
+ font['head'].created = timestamp
24
+ font['head'].modified = timestamp
25
+
26
+ # remove fontforge timestamps
27
+ if 'FFTM' in font:
28
+ del font['FFTM']
29
+
30
+ # remove redundant GDEF table
31
+ if 'GDEF' in font:
32
+ del font['GDEF']
33
+
34
+ # remove Macintosh table
35
+ # https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html
36
+ font['name'].names = [record for record in font['name'].names if record.platformID != 1]
37
+ font['cmap'].tables = [table for table in font['cmap'].tables if table.platformID != 1]
38
+
39
+ font['name'].setName(unicode('Version ' + str(timestamp)), 5, 3, 1, 1033)
40
+
41
+ # fix OS/2 and hhea metrics
42
+ glyf = font['glyf']
43
+ ascent = int(max(glyf[c].yMax for c in font.getGlyphOrder() if hasattr(glyf[c], "yMax")))
44
+ descent = -int(min(glyf[c].yMin for c in font.getGlyphOrder() if hasattr(glyf[c], "yMin")))
45
+
46
+ font['OS/2'].usWinAscent = ascent
47
+ font['OS/2'].usWinDescent = descent
48
+
49
+ font['hhea'].ascent = ascent
50
+ font['hhea'].descent = -descent
51
+
52
+ # save TTF
53
+ font.save(font_file, reorderTables=None)
54
+
55
+ # save WOFF
56
+ font.flavor = 'woff'
57
+ font.save(os.path.join('woff', font_name + '.woff'), reorderTables=None)
58
+
59
+ # save WOFF2
60
+ font.flavor = 'woff2'
61
+ font.save(os.path.join('woff2', font_name + '.woff2'), reorderTables=None)
Binary file
@@ -0,0 +1,234 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ttFont sfntVersion="OTTO" ttLibVersion="3.28">
3
+
4
+ <GlyphOrder>
5
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
6
+ <GlyphID id="0" name=".notdef"/>
7
+ <GlyphID id="1" name="space"/>
8
+ <GlyphID id="2" name="uni00A0"/>
9
+ </GlyphOrder>
10
+
11
+ <head>
12
+ <!-- Most of this table will be recalculated by the compiler -->
13
+ <tableVersion value="1.0"/>
14
+ <fontRevision value="1.0"/>
15
+ <checkSumAdjustment value="0xa98c8795"/>
16
+ <magicNumber value="0x5f0f3cf5"/>
17
+ <flags value="00000000 00000011"/>
18
+ <unitsPerEm value="1000"/>
19
+ <created value="Sun Jan 24 23:04:46 2010"/>
20
+ <modified value="Sat May 14 12:26:22 2011"/>
21
+ <xMin value="50"/>
22
+ <yMin value="0"/>
23
+ <xMax value="200"/>
24
+ <yMax value="533"/>
25
+ <macStyle value="00000000 00000000"/>
26
+ <lowestRecPPEM value="8"/>
27
+ <fontDirectionHint value="2"/>
28
+ <indexToLocFormat value="0"/>
29
+ <glyphDataFormat value="0"/>
30
+ </head>
31
+
32
+ <hhea>
33
+ <tableVersion value="0x00010000"/>
34
+ <ascent value="800"/>
35
+ <descent value="-200"/>
36
+ <lineGap value="90"/>
37
+ <advanceWidthMax value="250"/>
38
+ <minLeftSideBearing value="50"/>
39
+ <minRightSideBearing value="50"/>
40
+ <xMaxExtent value="200"/>
41
+ <caretSlopeRise value="1"/>
42
+ <caretSlopeRun value="0"/>
43
+ <caretOffset value="0"/>
44
+ <reserved0 value="0"/>
45
+ <reserved1 value="0"/>
46
+ <reserved2 value="0"/>
47
+ <reserved3 value="0"/>
48
+ <metricDataFormat value="0"/>
49
+ <numberOfHMetrics value="1"/>
50
+ </hhea>
51
+
52
+ <maxp>
53
+ <tableVersion value="0x5000"/>
54
+ <numGlyphs value="3"/>
55
+ </maxp>
56
+
57
+ <OS_2>
58
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
59
+ will be recalculated by the compiler -->
60
+ <version value="2"/>
61
+ <xAvgCharWidth value="225"/>
62
+ <usWeightClass value="400"/>
63
+ <usWidthClass value="5"/>
64
+ <fsType value="00000000 00000000"/>
65
+ <ySubscriptXSize value="650"/>
66
+ <ySubscriptYSize value="700"/>
67
+ <ySubscriptXOffset value="0"/>
68
+ <ySubscriptYOffset value="140"/>
69
+ <ySuperscriptXSize value="650"/>
70
+ <ySuperscriptYSize value="700"/>
71
+ <ySuperscriptXOffset value="0"/>
72
+ <ySuperscriptYOffset value="480"/>
73
+ <yStrikeoutSize value="49"/>
74
+ <yStrikeoutPosition value="258"/>
75
+ <sFamilyClass value="0"/>
76
+ <panose>
77
+ <bFamilyType value="0"/>
78
+ <bSerifStyle value="0"/>
79
+ <bWeight value="0"/>
80
+ <bProportion value="0"/>
81
+ <bContrast value="0"/>
82
+ <bStrokeVariation value="0"/>
83
+ <bArmStyle value="0"/>
84
+ <bLetterForm value="0"/>
85
+ <bMidline value="0"/>
86
+ <bXHeight value="0"/>
87
+ </panose>
88
+ <ulUnicodeRange1 value="10000000 00000000 00000000 11101111"/>
89
+ <ulUnicodeRange2 value="00010000 00000000 11101100 11101101"/>
90
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
91
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
92
+ <achVendID value="PfEd"/>
93
+ <fsSelection value="00000000 01000000"/>
94
+ <usFirstCharIndex value="32"/>
95
+ <usLastCharIndex value="160"/>
96
+ <sTypoAscender value="800"/>
97
+ <sTypoDescender value="-200"/>
98
+ <sTypoLineGap value="90"/>
99
+ <usWinAscent value="533"/>
100
+ <usWinDescent value="0"/>
101
+ <ulCodePageRange1 value="00100000 00000000 00000000 10001111"/>
102
+ <ulCodePageRange2 value="01011110 00000011 00000000 00000000"/>
103
+ <sxHeight value="0"/>
104
+ <sCapHeight value="0"/>
105
+ <usDefaultChar value="32"/>
106
+ <usBreakChar value="32"/>
107
+ <usMaxContext value="1"/>
108
+ </OS_2>
109
+
110
+ <name>
111
+ <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
112
+ Copyright (c) 2009-2010 Design Science, Inc.
113
+ Copyright (c) 2014-2018 Khan Academy
114
+ </namerecord>
115
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
116
+ *NAME*
117
+ </namerecord>
118
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
119
+ *WEIGHT_S*
120
+ </namerecord>
121
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
122
+ FontForge 2.0 : *NAME*-*WEIGHT*
123
+ </namerecord>
124
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
125
+ *NAME*-*WEIGHT*
126
+ </namerecord>
127
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
128
+ Version 1.1
129
+ </namerecord>
130
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
131
+ *NAME*-*WEIGHT*
132
+ </namerecord>
133
+ <namerecord nameID="13" platformID="3" platEncID="1" langID="0x409">
134
+ Copyright (c) 2009-2010, Design Science, Inc. (&lt;www.mathjax.org&gt;)
135
+ Copyright (c) 2014-2018 Khan Academy (&lt;www.khanacademy.org&gt;),
136
+ with Reserved Font Name *NAME*.
137
+
138
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
139
+ This license available with a FAQ at:
140
+ http://scripts.sil.org/OFL
141
+ </namerecord>
142
+ <namerecord nameID="14" platformID="3" platEncID="1" langID="0x409">
143
+ http://scripts.sil.org/OFL
144
+ </namerecord>
145
+ </name>
146
+
147
+ <cmap>
148
+ <tableVersion version="0"/>
149
+ <cmap_format_4 platformID="0" platEncID="3" language="0">
150
+ <map code="0x20" name="space"/><!-- SPACE -->
151
+ <map code="0xa0" name="uni00A0"/><!-- NO-BREAK SPACE -->
152
+ </cmap_format_4>
153
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
154
+ <map code="0x20" name="space"/><!-- SPACE -->
155
+ <map code="0xa0" name="uni00A0"/><!-- NO-BREAK SPACE -->
156
+ </cmap_format_4>
157
+ </cmap>
158
+
159
+ <post>
160
+ <formatType value="3.0"/>
161
+ <italicAngle value="0.0"/>
162
+ <underlinePosition value="-125"/>
163
+ <underlineThickness value="50"/>
164
+ <isFixedPitch value="0"/>
165
+ <minMemType42 value="0"/>
166
+ <maxMemType42 value="0"/>
167
+ <minMemType1 value="0"/>
168
+ <maxMemType1 value="0"/>
169
+ </post>
170
+
171
+ <CFF>
172
+ <major value="1"/>
173
+ <minor value="0"/>
174
+ <CFFFont name="*NAME*-*WEIGHT*">
175
+ <version value="001.001"/>
176
+ <Notice value="Copyright (c) 2009-2010 Design Science, Inc., Copyright (c) 2014-2018 Khan Academy"/>
177
+ <FullName value="*NAME*-*WEIGHT*"/>
178
+ <FamilyName value="*NAME*"/>
179
+ <Weight value="*NORMAL*"/>
180
+ <isFixedPitch value="0"/>
181
+ <ItalicAngle value="0"/>
182
+ <UnderlinePosition value="-150"/>
183
+ <UnderlineThickness value="50"/>
184
+ <PaintType value="0"/>
185
+ <CharstringType value="2"/>
186
+ <FontMatrix value="0.001 0 0 0.001 0 0"/>
187
+ <FontBBox value="50 0 200 533"/>
188
+ <StrokeWidth value="0"/>
189
+ <!-- charset is dumped separately as the 'GlyphOrder' element -->
190
+ <Encoding name="StandardEncoding"/>
191
+ <Private>
192
+ <BlueScale value="0.03963"/>
193
+ <BlueShift value="0"/>
194
+ <BlueFuzz value="1"/>
195
+ <StdHW value="50"/>
196
+ <StdVW value="50"/>
197
+ <ForceBold value="0"/>
198
+ <LanguageGroup value="0"/>
199
+ <ExpansionFactor value="0.06"/>
200
+ <initialRandomSeed value="0"/>
201
+ <defaultWidthX value="250"/>
202
+ <nominalWidthX value="193"/>
203
+ </Private>
204
+ <CharStrings>
205
+ <CharString name=".notdef">
206
+ 0 50 433 50 hstem
207
+ 50 50 50 50 vstem
208
+ 50 hmoveto
209
+ 150 533 -150 hlineto
210
+ 50 -483 rmoveto
211
+ 433 50 -433 vlineto
212
+ endchar
213
+ </CharString>
214
+ <CharString name="space">
215
+ endchar
216
+ </CharString>
217
+ <CharString name="uni00A0">
218
+ endchar
219
+ </CharString>
220
+ </CharStrings>
221
+ </CFFFont>
222
+
223
+ <GlobalSubrs>
224
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
225
+ </GlobalSubrs>
226
+ </CFF>
227
+
228
+ <hmtx>
229
+ <mtx name=".notdef" width="250" lsb="50"/>
230
+ <mtx name="space" width="250" lsb="0"/>
231
+ <mtx name="uni00A0" width="250" lsb="0"/>
232
+ </hmtx>
233
+
234
+ </ttFont>
@@ -0,0 +1,49 @@
1
+ #! /usr/bin/perl
2
+
3
+ # Creates the metafont file needed for darker copies of the TeX fonts,
4
+ # and modifies mftrace to use it.
5
+ #
6
+ # Usage: ./makeBlacker blackness
7
+
8
+ require "custom.cfg.pl";
9
+
10
+ $blacker = shift;
11
+ unless ($blacker) {
12
+ print stderr "Usage: ./makeBlacker blackness\n";
13
+ exit;
14
+ }
15
+
16
+ sub editMftrace {
17
+ my $oldMFTRACE = $MFTRACE_PATH;
18
+ $MFTRACE = "./lib/mftrace-modified";
19
+ print "Editing mftrace\n";
20
+ open(MFT,$oldMFTRACE) || die "Can't read '$oldMFTRACE': $!\n";
21
+ my $MFT = join("",<MFT>);
22
+ close(MFT);
23
+ $MFT =~ s!r"mf '\\mode:=(?:[^;]*)(; [^"]*)"!r"""mf '\\smode:="lib/blacker.mf"$1"""!;
24
+ open(MFT,">$MFTRACE") || die "Can't write '$MFTRACE': $!\n";
25
+ print MFT $MFT;
26
+ close(MFT);
27
+ chmod 0755, $MFTRACE;
28
+ }
29
+
30
+ sub makeBlackerMF {
31
+ my $blacker = shift;
32
+ print "Using blacker = $blacker\n";
33
+ open(BLACKER,">lib/blacker.mf") || die "Can't write 'lib/blacker.mf': $!\n";
34
+ print BLACKER << " END";
35
+ proofing:=0;
36
+ fontmaking:=1;
37
+ tracingtitles:=0;
38
+ pixels_per_inch:=1200;
39
+ blacker:=$blacker;
40
+ fillin:=0;
41
+ o_correction:=1;
42
+ END
43
+ close(BLACKER);
44
+ }
45
+
46
+ editMftrace();
47
+ makeBlackerMF($blacker);
48
+
49
+ 1;