summaryrefslogtreecommitdiff
path: root/tex/context/fonts/mkiv/lm-math.lfg
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/fonts/mkiv/lm-math.lfg')
-rw-r--r--tex/context/fonts/mkiv/lm-math.lfg263
1 files changed, 263 insertions, 0 deletions
diff --git a/tex/context/fonts/mkiv/lm-math.lfg b/tex/context/fonts/mkiv/lm-math.lfg
new file mode 100644
index 000000000..b8c996979
--- /dev/null
+++ b/tex/context/fonts/mkiv/lm-math.lfg
@@ -0,0 +1,263 @@
+-- we could consider taking more from 'tex-mr-missing'
+
+-- This patch code is moved from font-pat.lua to this goodies
+-- files as it does not belong in the core code.
+
+-- This patch is no longer needed but we keep it commented as
+-- it is an example.
+--
+-- local patches = fonts.handlers.otf.enhancers.patches
+--
+-- local function patch(data,filename)
+-- local uni_to_ind = data.map.map
+-- if not uni_to_ind[0x391] then
+-- -- beware, this is a hack, features for latin often don't apply to greek
+-- -- but lm has not much features anyway (and only greek for math)
+-- patches.report("adding 13 greek capitals")
+-- uni_to_ind[0x391] = uni_to_ind[0x41]
+-- uni_to_ind[0x392] = uni_to_ind[0x42]
+-- uni_to_ind[0x395] = uni_to_ind[0x45]
+-- uni_to_ind[0x397] = uni_to_ind[0x48]
+-- uni_to_ind[0x399] = uni_to_ind[0x49]
+-- uni_to_ind[0x39A] = uni_to_ind[0x4B]
+-- uni_to_ind[0x39C] = uni_to_ind[0x4D]
+-- uni_to_ind[0x39D] = uni_to_ind[0x4E]
+-- uni_to_ind[0x39F] = uni_to_ind[0x4F]
+-- uni_to_ind[0x3A1] = uni_to_ind[0x52]
+-- uni_to_ind[0x3A4] = uni_to_ind[0x54]
+-- uni_to_ind[0x3A7] = uni_to_ind[0x58]
+-- uni_to_ind[0x396] = uni_to_ind[0x5A]
+-- end
+-- end
+--
+-- patches.register("after","prepare glyphs","^lmroman", patch)
+-- patches.register("after","prepare glyphs","^lmsans", patch)
+-- patches.register("after","prepare glyphs","^lmtypewriter",patch)
+
+-- rm-lmr5 : LMMathRoman5-Regular
+-- rm-lmbx5 : LMMathRoman5-Bold ]
+-- lmbsy5 : LMMathSymbols5-BoldItalic
+-- lmsy5 : LMMathSymbols5-Italic
+-- lmmi5 : LMMathItalic5-Italic
+-- lmmib5 : LMMathItalic5-BoldItalic
+
+local five = {
+ { name = "lmroman5-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr5.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmi5.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi5.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy5.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam5.tfm", vector = "tex-ma" },
+ { name = "msbm5.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx5.tfm", vector = "tex-bf" } ,
+ { name = "lmroman5-bold", vector = "tex-bf" } ,
+ { name = "lmmib5.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans8-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono8-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm5.tfm", vector = "tex-fraktur", optional = true },
+}
+
+-- rm-lmr6 : LMMathRoman6-Regular
+-- rm-lmbx6 : LMMathRoman6-Bold
+-- lmsy6 : LMMathSymbols6-Italic
+-- lmmi6 : LMMathItalic6-Italic
+
+local six = {
+ { name = "lmroman6-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr6.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmi6.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi6.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy6.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam5.tfm", vector = "tex-ma" },
+ { name = "msbm5.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx6.tfm", vector = "tex-bf" } ,
+ { name = "lmroman6-bold.otf", vector = "tex-bf" } ,
+ { name = "lmmib5.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans8-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono8-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm5.tfm", vector = "tex-fraktur", optional = true },
+ { name = "eufb5.tfm", vector = "tex-fraktur-bold", optional = true },
+}
+
+-- rm-lmr7 : LMMathRoman7-Regular
+-- rm-lmbx7 : LMMathRoman7-Bold
+-- lmbsy7 : LMMathSymbols7-BoldItalic
+-- lmsy7 : LMMathSymbols7-Italic
+-- lmmi7 : LMMathItalic7-Italic
+-- lmmib7 : LMMathItalic7-BoldItalic
+
+local seven = {
+ { name = "lmroman7-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr7.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmi7.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi7.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy7.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam7.tfm", vector = "tex-ma" },
+ { name = "msbm7.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx7.tfm", vector = "tex-bf" } ,
+ { name = "lmroman7-bold.otf", vector = "tex-bf" } ,
+ { name = "lmmib7.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans8-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono8-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm7.tfm", vector = "tex-fraktur", optional = true },
+ { name = "eufb7.tfm", vector = "tex-fraktur-bold", optional = true },
+}
+
+-- rm-lmr8 : LMMathRoman8-Regular
+-- rm-lmbx8 : LMMathRoman8-Bold
+-- lmsy8 : LMMathSymbols8-Italic
+-- lmmi8 : LMMathItalic8-Italic
+
+local eight = {
+ { name = "lmroman8-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr8.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmi8.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi8.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy8.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam7.tfm", vector = "tex-ma" },
+ { name = "msbm7.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx8.tfm", vector = "tex-bf" } ,
+ { name = "lmroman8-bold.otf", vector = "tex-bf" } ,
+ { name = "lmmib7.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans8-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono8-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm7.tfm", vector = "tex-fraktur", optional = true },
+ { name = "eufb7.tfm", vector = "tex-fraktur-bold", optional = true },
+}
+
+-- rm-lmr9 : LMMathRoman9-Regular
+-- rm-lmbx9 : LMMathRoman9-Bold
+-- lmsy9 : LMMathSymbols9-Italic
+-- lmmi9 : LMMathItalic9-Italic
+
+local nine = {
+ { name = "lmroman9-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr9.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmi9.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi9.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy9.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx9.tfm", vector = "tex-bf" } ,
+ { name = "lmroman9-bold.otf", vector = "tex-bf" } ,
+ { name = "lmmib10.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans9-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono9-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm10.tfm", vector = "tex-fraktur", optional = true },
+ { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional = true },
+}
+
+-- rm-lmr10 : LMMathRoman10-Regular
+-- rm-lmbx10 : LMMathRoman10-Bold
+-- lmbsy10 : LMMathSymbols10-BoldItalic
+-- lmsy10 : LMMathSymbols10-Italic
+-- lmex10 : LMMathExtension10-Regular
+-- lmmi10 : LMMathItalic10-Italic
+-- lmmib10 : LMMathItalic10-BoldItalic
+
+local ten = {
+ { name = "lmroman10-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr10.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmi10.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi10.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy10.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx10.tfm", vector = "tex-bf" } ,
+ { name = "lmroman10-bold.otf", vector = "tex-bf" } ,
+ { name = "lmmib10.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans10-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono10-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm10.tfm", vector = "tex-fraktur", optional = true },
+ { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional = true },
+}
+
+-- rm-lmr12 : LMMathRoman12-Regular
+-- rm-lmbx12 : LMMathRoman12-Bold
+-- lmmi12 : LMMathItalic12-Italic
+
+local twelve = {
+ { name = "lmroman12-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr12.tfm", vector = "tex-mr-missing" },
+ { name = "lmmi12.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi12.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy10.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx12.tfm", vector = "tex-bf" } ,
+ { name = "lmroman12-bold.otf", vector = "tex-bf" } ,
+ { name = "lmmib10.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans12-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono12-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm10.tfm", vector = "tex-fraktur", optional = true },
+ { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional = true },
+}
+
+-- rm-lmr17 : LMMathRoman17-Regular
+
+local seventeen = {
+ { name = "lmroman17-regular.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr12.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmi12.tfm", vector = "tex-mi", skewchar = 0x7F },
+ { name = "lmmi12.tfm", vector = "tex-it", skewchar = 0x7F },
+ { name = "lmsy10.tfm", vector = "tex-sy", skewchar = 0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ { name = "stmary10.afm", vector = "tex-mc" },
+ -- { name = "rm-lmbx12.tfm", vector = "tex-bf" } ,
+ { name = "lmroman12-bold.otf", vector = "tex-bf" } ,
+ { name = "lmmib10.tfm", vector = "tex-bi", skewchar = 0x7F } ,
+ { name = "lmsans17-regular.otf", vector = "tex-ss", optional = true },
+ { name = "lmmono17-regular.otf", vector = "tex-tt", optional = true },
+ { name = "eufm10.tfm", vector = "tex-fraktur", optional = true },
+ { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional = true },
+}
+
+return {
+ name = "lm-math",
+ version = "1.00",
+ comment = "Goodies that complement latin modern math (virtual).",
+ author = "Hans Hagen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "lm-math.map",
+ "lm-rm.map",
+ "mkiv-base.map",
+ },
+ virtuals = {
+ ["lmroman5-math"] = five,
+ ["lmroman6-math"] = six,
+ ["lmroman7-math"] = seven,
+ ["lmroman8-math"] = eight,
+ ["lmroman9-math"] = nine,
+ ["lmroman10-math"] = ten,
+ ["lmroman12-math"] = twelve,
+ ["lmroman17-math"] = seventeen,
+ },
+ variables = {
+ joinrelfactor = 3, -- default anyway
+ },
+ parameters = { -- test values
+ -- FactorA = 123.456,
+ -- FactorB = false,
+ -- FactorC = function(value,target,original) return 7.89 * target.factor end,
+ -- FactorD = "Hi There!",
+ },
+ }
+}