summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2010-03-30 18:56:00 +0200
committerHans Hagen <pragma@wxs.nl>2010-03-30 18:56:00 +0200
commit6de1d37f23278896de0a7f022c700ba5ff714904 (patch)
tree7048fb31dbe1db81714e1d25678b7ca6f32b09e3 /tex
parent1e76a7198e92b4382646643dd5fa479f3e9e329d (diff)
downloadcontext-6de1d37f23278896de0a7f022c700ba5ff714904.tar.gz
beta 2010.03.30 18:56
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/back-pdf.mkiv11
-rw-r--r--tex/context/base/cont-new.tex2
-rw-r--r--tex/context/base/context.tex2
-rw-r--r--tex/context/base/core-env.mkiv38
-rw-r--r--tex/context/base/data-res.lua87
-rw-r--r--tex/context/base/lpdf-ini.lua4
-rw-r--r--tex/context/base/spac-ali.mkiv2
-rw-r--r--tex/context/base/spac-ver.mkiv19
-rw-r--r--tex/context/base/strc-def.mkiv4
-rw-r--r--tex/context/fonts/antykwa-math.lfg56
-rw-r--r--tex/context/fonts/charter-math.lfg27
-rw-r--r--tex/context/fonts/garamond-math.lfg27
-rw-r--r--tex/context/fonts/husayni.lfg177
-rw-r--r--tex/context/fonts/hvmath-math.lfg (renamed from tex/context/fonts/fonts)0
-rw-r--r--tex/context/fonts/iwona-math.lfg56
-rw-r--r--tex/context/fonts/lm-math.lfg229
-rw-r--r--tex/context/fonts/lucida-math.lfg320
-rw-r--r--tex/context/fonts/mathtimes-math.lfg23
-rw-r--r--tex/context/fonts/px-math.lfg24
-rw-r--r--tex/context/fonts/tx-math.lfg24
-rw-r--r--tex/context/fonts/utopia-math.lfg27
21 files changed, 1106 insertions, 53 deletions
diff --git a/tex/context/base/back-pdf.mkiv b/tex/context/base/back-pdf.mkiv
index 665b16945..28c5bde53 100644
--- a/tex/context/base/back-pdf.mkiv
+++ b/tex/context/base/back-pdf.mkiv
@@ -71,13 +71,10 @@
%D Unfortunately this is still needed (also for \METAPOST\ to
%D \PDF\ converter):
-\def\doresetmapfilelist
- {\global\let\doresetmapfilelist\relax
- \pdfmapfile{original-empty.map}}
-
-\def\doloadmapfile #1#2{\pdfmapfile{#1#2}}
-\def\doloadmapline #1#2{\pdfmapline{#1#2}}
-
+% \def\doresetmapfilelist
+% {\global\let\doresetmapfilelist\relax
+% \pdfmapfile{original-empty.map}}
+%
% \appendtoksonce \loadallfontmapfiles \to \pdfbackendeveryxform
% \appendtoksonce \loadallfontmapfiles \to \pdfbackendeveryximage
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index 316f1ed1f..6f3ecbc03 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2010.03.29 18:49}
+\newcontextversion{2010.03.30 18:56}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 93199b0bf..da3a55aad 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2010.03.29 18:49}
+\edef\contextversion{2010.03.30 18:56}
%D For those who want to use this:
diff --git a/tex/context/base/core-env.mkiv b/tex/context/base/core-env.mkiv
index 573aae0b2..bad5823dd 100644
--- a/tex/context/base/core-env.mkiv
+++ b/tex/context/base/core-env.mkiv
@@ -108,11 +108,11 @@
% simple ones
-\def\doifmodeelse{\unprotect\dodoifmodeelse}
-\def\doifmode {\unprotect\dodoifmode}
-\def\doifnotmode {\unprotect\dodoifnotmode}
-\def\startmode {\unprotect\dostartmode}
-\def\startnotmode{\unprotect\dostartnotmode}
+\unexpanded\def\doifmodeelse{\unprotect\dodoifmodeelse}
+\unexpanded\def\doifmode {\unprotect\dodoifmode}
+\unexpanded\def\doifnotmode {\unprotect\dodoifnotmode}
+\unexpanded\def\startmode {\unprotect\dostartmode}
+\unexpanded\def\startnotmode{\unprotect\dostartnotmode}
\def\dodoifmodeelse
{\docheckformode\firstoftwoarguments\secondoftwoarguments}
@@ -123,23 +123,23 @@
\def\dodoifnotmode
{\docheckformode\gobbleoneargument\firstofoneargument}
-\long\def\dostartmode[#1]%
+\long\unexpanded\def\dostartmode[#1]%
{\docheckformode\donothing\dostopmode{#1}}
\long\def\dostartnotmode[#1]%
{\docheckformode\dostopnotmode\donothing{#1}}
-\let\stopmode \donothing
-\let\stopnotmode\donothing
+\unexpanded\def\stopmode {} % no relax
+\unexpanded\def\stopnotmode{} % no relax
\long\def\dostopmode #1\stopmode {}
\long\def\dostopnotmode#1\stopnotmode{}
-\def\doifallmodeselse{\unprotect\dodoifallmodeselse}
-\def\doifallmodes {\unprotect\dodoifallmodes}
-\def\doifnotallmodes {\unprotect\dodoifnotallmodes}
-\def\startallmodes {\unprotect\dostartallmodes}
-\def\startnotallmodes{\unprotect\dostartnotallmodes}
+\unexpanded\def\doifallmodeselse{\unprotect\dodoifallmodeselse}
+\unexpanded\def\doifallmodes {\unprotect\dodoifallmodes}
+\unexpanded\def\doifnotallmodes {\unprotect\dodoifnotallmodes}
+\unexpanded\def\startallmodes {\unprotect\dostartallmodes}
+\unexpanded\def\startnotallmodes{\unprotect\dostartnotallmodes}
\def\dodoifallmodeselse
{\docheckforallmodes\firstoftwoarguments\secondoftwoarguments}
@@ -156,8 +156,8 @@
\long\def\dostartnotallmodes[#1]%
{\docheckforallmodes\dostopnotallmodes\donothing{#1}}
-\let\stopallmodes \donothing
-\let\stopnotallmodes\donothing
+\unexpanded\def\stopallmodes {} % no relax
+\unexpanded\def\stopnotallmodes{} % no relax
\long\def\dostopallmodes #1\stopallmodes {}
\long\def\dostopnotallmodes#1\stopnotallmodes{}
@@ -168,8 +168,8 @@
%D Setups:
-\let\startsetups\relax % to please dep checker
-\let\stopsetups \relax % to please dep checker
+\unexpanded\def\startsetups{} % to please dep checker
+\unexpanded\def\stopsetups {} % to please dep checker
\expanded
{\long\def\@EA\noexpand\csname\e!start\v!setups\endcsname
@@ -179,8 +179,8 @@
\letvalue{\e!stop\v!setups}\relax
-\unexpanded \def\setups{\doifnextbgroupelse\dosetupsA\dosetupsB} % {..} or [..]
-\unexpanded \def\setup {\doifnextbgroupelse\dosetups \dosetupsC} % {..} or [..]
+\unexpanded\def\setups{\doifnextbgroupelse\dosetupsA\dosetupsB} % {..} or [..]
+\unexpanded\def\setup {\doifnextbgroupelse\dosetups \dosetupsC} % {..} or [..]
\def\dosetupsA #1{\processcommacommand[#1]\dosetups} % {..}
\def\dosetupsB[#1]{\processcommacommand[#1]\dosetups} % [..]
diff --git a/tex/context/base/data-res.lua b/tex/context/base/data-res.lua
index 28429f8a9..f67fbd62d 100644
--- a/tex/context/base/data-res.lua
+++ b/tex/context/base/data-res.lua
@@ -471,18 +471,70 @@ end
local args = environment and environment.original_arguments or arg -- this needs a cleanup
-resolvers.ownbin = resolvers.ownbin or args[-2] or arg[-2] or args[-1] or arg[-1] or arg [0] or "luatex"
-resolvers.ownbin = string.gsub(resolvers.ownbin,"\\","/")
-resolvers.ownpath = resolvers.ownpath or file.dirname(resolvers.ownbin)
+--~ resolvers.ownbin = resolvers.ownbin or args[-2] or arg[-2] or args[-1] or arg[-1] or arg [0] or "luatex"
+--~ resolvers.ownbin = string.gsub(resolvers.ownbin,"\\","/")
+--~ resolvers.ownpath = resolvers.ownpath or file.dirname(resolvers.ownbin)
+
+--~ resolvers.autoselfdir = true -- false may be handy for debugging
+
+--~ function resolvers.getownpath()
+--~ if not resolvers.ownpath then
+--~ if resolvers.autoselfdir and os.selfdir and os.selfdir ~= "" then
+--~ resolvers.ownpath = os.selfdir
+--~ else
+--~ local binary = resolvers.ownbin
+--~ if os.binsuffix ~= "" then
+--~ binary = file.replacesuffix(binary,os.binsuffix)
+--~ end
+--~ for p in gmatch(os.getenv("PATH"),"[^"..io.pathseparator.."]+") do
+--~ local b = file.join(p,binary)
+--~ if lfs.isfile(b) then
+--~ -- we assume that after changing to the path the currentdir function
+--~ -- resolves to the real location and use this side effect here; this
+--~ -- trick is needed because on the mac installations use symlinks in the
+--~ -- path instead of real locations
+--~ local olddir = lfs.currentdir()
+--~ if lfs.chdir(p) then
+--~ local pp = lfs.currentdir()
+--~ if trace_locating and p ~= pp then
+--~ logs.report("fileio","following symlink '%s' to '%s'",p,pp)
+--~ end
+--~ resolvers.ownpath = pp
+--~ lfs.chdir(olddir)
+--~ else
+--~ if trace_locating then
+--~ logs.report("fileio","unable to check path '%s'",p)
+--~ end
+--~ resolvers.ownpath = p
+--~ end
+--~ break
+--~ end
+--~ end
+--~ end
+--~ if not resolvers.ownpath then resolvers.ownpath = '.' end
+--~ end
+--~ return resolvers.ownpath
+--~ end
+
+local args = environment and environment.original_arguments or arg -- this needs a cleanup
-resolvers.autoselfdir = true -- false may be handy for debugging
+resolvers.ownbin = resolvers.ownbin or args[-2] or arg[-2] or args[-1] or arg[-1] or arg[0] or "luatex"
+resolvers.ownbin = string.gsub(resolvers.ownbin,"\\","/")
function resolvers.getownpath()
- if not resolvers.ownpath then
- if resolvers.autoselfdir and os.selfdir and os.selfdir ~= "" then
- resolvers.ownpath = os.selfdir
- else
- local binary = resolvers.ownbin
+ local ownpath = resolvers.ownpath or os.selfdir
+ if not ownpath or ownpath == "" then
+ ownpath = args[-1] or arg[-1]
+ ownpath = ownpath and file.dirname(string.gsub(ownpath,"\\","/"))
+ if not ownpath or ownpath == "" then
+ ownpath = args[-0] or arg[-0]
+ ownpath = ownpath and file.dirname(string.gsub(ownpath,"\\","/"))
+ end
+ local binary = resolvers.ownbin
+ if not ownpath or ownpath == "" then
+ ownpath = ownpath and file.dirname(binary)
+ end
+ if not ownpath or ownpath == "" then
if os.binsuffix ~= "" then
binary = file.replacesuffix(binary,os.binsuffix)
end
@@ -499,21 +551,30 @@ function resolvers.getownpath()
if trace_locating and p ~= pp then
logs.report("fileio","following symlink '%s' to '%s'",p,pp)
end
- resolvers.ownpath = pp
+ ownpath = pp
lfs.chdir(olddir)
else
if trace_locating then
logs.report("fileio","unable to check path '%s'",p)
end
- resolvers.ownpath = p
+ ownpath = p
end
break
end
end
end
- if not resolvers.ownpath then resolvers.ownpath = '.' end
+ if not ownpath or ownpath == "" then
+ ownpath = "."
+ logs.report("fileio","forcing fallback ownpath .")
+ elseif trace_locating then
+ logs.report("fileio","using ownpath '%s'",ownpath)
+ end
+ end
+ resolvers.ownpath = ownpath
+ function resolvers.getownpath()
+ return resolvers.ownpath
end
- return resolvers.ownpath
+ return ownpath
end
local own_places = { "SELFAUTOLOC", "SELFAUTODIR", "SELFAUTOPARENT", "TEXMFCNF" }
diff --git a/tex/context/base/lpdf-ini.lua b/tex/context/base/lpdf-ini.lua
index 61eceb168..ab63d50e8 100644
--- a/tex/context/base/lpdf-ini.lua
+++ b/tex/context/base/lpdf-ini.lua
@@ -331,6 +331,8 @@ function lpdf.reserveobject(name)
return r
end
+--~ local pdfreserveobject = lpdf.reserveobject
+
function lpdf.flushobject(name,data)
if data then
name = names[name] or name
@@ -525,6 +527,8 @@ function lpdf.addtocatalog(k,v) if not (lpdf.protectresources and catalog[k]) th
function lpdf.addtoinfo (k,v) if not (lpdf.protectresources and info [k]) then trace_set("info", k) info [k] = v end end
function lpdf.addtonames (k,v) if not (lpdf.protectresources and names [k]) then trace_set("names", k) names [k] = v end end
+local dummy = pdfreserveobj() -- else bug in hvmd due so some internal luatex conflict
+
local r_extgstates, d_extgstates = pdfreserveobj(), pdfdictionary() local p_extgstates = pdfreference(r_extgstates)
local r_colorspaces, d_colorspaces = pdfreserveobj(), pdfdictionary() local p_colorspaces = pdfreference(r_colorspaces)
local r_patterns, d_patterns = pdfreserveobj(), pdfdictionary() local p_patterns = pdfreference(r_patterns)
diff --git a/tex/context/base/spac-ali.mkiv b/tex/context/base/spac-ali.mkiv
index 70744b379..9042b4ae6 100644
--- a/tex/context/base/spac-ali.mkiv
+++ b/tex/context/base/spac-ali.mkiv
@@ -651,7 +651,7 @@
\finalhyphendemerits\zerocount % yes or no (see hyhenation/specialcases-001.tex)
\par}}
-\def\wordright
+\unexpanded\def\wordright
{\dosingleempty\dowordright}
% \dorecurse{5}{something } \wordright{--someone} \endgraf
diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv
index 3c3010340..22bad702d 100644
--- a/tex/context/base/spac-ver.mkiv
+++ b/tex/context/base/spac-ver.mkiv
@@ -1832,15 +1832,16 @@
\fi\fi
\relax}
-\definevspacing[\v!samepage][penalty:10000] % real strong
-\definevspacing[\v!max] [category:1]
-\definevspacing[\v!force] [category:2]
-\definevspacing[\v!disable] [category:5]
-\definevspacing[\v!nowhite] [category:6]
-\definevspacing[\v!back] [category:7]
-\definevspacing[\v!always] [category:0]
-\definevspacing[\v!weak] [order:0]
-\definevspacing[\v!strong] [order:100]
+\definevspacing[\v!preference][penalty:-500] % goodbreak
+\definevspacing[\v!samepage] [penalty:10000] % real strong
+\definevspacing[\v!max] [category:1]
+\definevspacing[\v!force] [category:2]
+\definevspacing[\v!disable] [category:5]
+\definevspacing[\v!nowhite] [category:6]
+\definevspacing[\v!back] [category:7]
+\definevspacing[\v!always] [category:0]
+\definevspacing[\v!weak] [order:0]
+\definevspacing[\v!strong] [order:100]
\definevspacing[\s!default] [\v!white] % was big for a while
diff --git a/tex/context/base/strc-def.mkiv b/tex/context/base/strc-def.mkiv
index ea5c9e66f..4425959a8 100644
--- a/tex/context/base/strc-def.mkiv
+++ b/tex/context/base/strc-def.mkiv
@@ -287,14 +287,14 @@
\setuplist
[\v!part]
- [\c!before={\blank\page[\v!preference]},
+ [\c!before={\blank[\v!preference,\v!big]}, % sort of mkii compatible, watch columns
\c!after=\blank,
\c!label=\v!yes,
\c!distance=1em]
\setuplist
[\v!chapter]
- [\c!before={\blank\page[\v!preference]},
+ [\c!before={\blank[\v!preference,\v!big]}, % sort of mkii compatible, watch columns
\c!after=]
\setuplist [\v!part] [\c!width=0em]
diff --git a/tex/context/fonts/antykwa-math.lfg b/tex/context/fonts/antykwa-math.lfg
new file mode 100644
index 000000000..70f63ca06
--- /dev/null
+++ b/tex/context/fonts/antykwa-math.lfg
@@ -0,0 +1,56 @@
+local msam = { name = "msam10.tfm", vector = "tex-ma" }
+local msbm = { name = "msbm10.tfm", vector = "tex-mb" }
+
+return {
+ name = "antykwa-math",
+ version = "1.00",
+ comment = "Goodies that complement antykwa math.",
+ author = "Hans, Mojca, Aditya",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "antt-rm.map",
+ "antt-mi.map",
+ "antt-sy.map",
+ "antt-ex.map",
+ },
+ virtuals = {
+ ["antykwa-math"] = {
+ { name = "file:AntykwaTorunska-Regular", features = "virtualmath", main = true },
+ { name = "mi-anttri.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-anttri.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-anttrz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-anttr.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ },
+ ["antykwa-light-math"] = {
+ { name = "file:AntykwaTorunskaLight-Regular", features = "virtualmath", main = true },
+ { name = "mi-anttli.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-anttli.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-anttlz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-anttl.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ },
+ ["antykwa-cond-math"] = {
+ { name = "file:AntykwaTorunskaCond-Regular", features = "virtualmath", main = true },
+ { name = "mi-anttcri.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-anttcri.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-anttcrz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-anttcr.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ },
+ ["antykwa-lightcond-math"] = {
+ { name = "file:AntykwaTorunskaCondLight-Regular", features = "virtualmath", main = true },
+ { name = "mi-anttcli.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-anttcli.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-anttclz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-anttcl.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/charter-math.lfg b/tex/context/fonts/charter-math.lfg
new file mode 100644
index 000000000..54403972d
--- /dev/null
+++ b/tex/context/fonts/charter-math.lfg
@@ -0,0 +1,27 @@
+return {
+ name = "charter-math",
+ version = "1.00",
+ comment = "Goodies that complement charter math.",
+ author = "Hans, Mojca, Aditya",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "mdbch.map",
+ },
+ virtuals = {
+ ["charter-math"] = {
+ -- { name = "file:bchr8a", features = "virtualmath", main = true },
+ { name = "file:bchri8a", features = "virtualmath", main = true },
+ -- { name = "md-chr7m.tfm", vector = "tex-mr" },
+ { name = "md-chri7m.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "md-chri7m.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "md-chr7y.tfm", vector = "tex-sy", skewchar=0x30, parameters = true },
+ { name = "md-chr7v.tfm", vector = "tex-ex", extension = true },
+ -- { name = "md-chbma.tfm", vector = "tex-ma" },
+ -- { name = "md-chbmb.tfm", vector = "tex-mb" },
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/garamond-math.lfg b/tex/context/fonts/garamond-math.lfg
new file mode 100644
index 000000000..6e762663f
--- /dev/null
+++ b/tex/context/fonts/garamond-math.lfg
@@ -0,0 +1,27 @@
+return {
+ name = "garamond-math",
+ version = "1.00",
+ comment = "Goodies that complement garamond math.",
+ author = "Hans, Mojca, Aditya",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "mdugm.map",
+ },
+ virtuals = {
+ ["garamond-math"] = {
+ -- { name = "file:ugmr8a", features = "virtualmath", main = true },
+ { name = "file:ugmri8a", features = "virtualmath", main = true },
+ -- { name = "md-gmr7m.tfm", vector = "tex-mr" },
+ { name = "md-gmri7m.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "md-gmri7m.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "md-gmr7y.tfm", vector = "tex-sy", skewchar=0x30, parameters = true },
+ { name = "md-gmr7v.tfm", vector = "tex-ex", extension = true },
+ -- { name = "md-gmmma.tfm", vector = "tex-ma" },
+ -- { name = "md-gmmmb.tfm", vector = "tex-mb" },
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/husayni.lfg b/tex/context/fonts/husayni.lfg
new file mode 100644
index 000000000..1019d33f6
--- /dev/null
+++ b/tex/context/fonts/husayni.lfg
@@ -0,0 +1,177 @@
+local yes = "yes", "node"
+
+local basics = {
+ analyze = yes,
+ mode = "node",
+ language = "dflt",
+ script = "arab",
+}
+
+local analysis = {
+ ccmp = yes,
+ init = yes, medi = yes, fina = yes,
+}
+
+local regular = {
+ rlig = yes, calt = yes, salt = yes, anum = yes,
+ ss01 = yes, ss03 = yes, ss07 = yes, ss10 = yes, ss12 = yes, ss15 = yes, ss16 = yes,
+ ss19 = yes, ss24 = yes, ss25 = yes, ss26 = yes, ss27 = yes, ss31 = yes, ss34 = yes,
+ ss35 = yes, ss36 = yes, ss37 = yes, ss38 = yes, ss41 = yes, ss42 = yes, ss43 = yes,
+ js16 = yes,
+}
+
+local positioning = {
+ kern = yes, curs = yes, mark = yes, mkmk = yes,
+}
+
+local minimal_stretching = {
+ js11 = yes, js03 = yes,
+}
+
+local medium_stretching = {
+ js12=yes, js05=yes,
+}
+local maximal_stretching= {
+ js13 = yes, js05 = yes, js09 = yes,
+}
+
+local wide_all = {
+ js11 = yes, js12 = yes, js13 = yes, js05 = yes, js09 = yes,
+}
+
+local shrink = {
+ flts = yes, js17 = yes, ss05 = yes, ss11 = yes, ss06 = yes, ss09 = yes,
+}
+
+local default = {
+ basics, analysis, regular, positioning, -- xxxx = yes, yyyy = 2,
+}
+
+return {
+ name = "husayni",
+ version = "1.00",
+ comment = "Goodies that complement the Husayni font by Idris Samawi Hamid.",
+ author = "Idris Samawi Hamid and Hans Hagen",
+ featuresets = { -- here we don't have references to featuresets
+ default = {
+ default,
+ },
+ minimal_stretching = {
+ default, js11 = yes, js03 = yes,
+ },
+ medium_stretching = {
+ default, js12=yes, js05=yes,
+ },
+ maximal_stretching= {
+ default, js13 = yes, js05 = yes, js09 = yes,
+ },
+ wide_all = {
+ default, js11 = yes, js12 = yes, js13 = yes, js05 = yes, js09 = yes,
+ },
+ shrink = {
+ default, flts = yes, js17 = yes, ss05 = yes, ss11 = yes, ss06 = yes, ss09 = yes,
+ },
+ },
+ solutions = { -- here we have references to featuresets, so we use strings!
+ experimental = {
+ less = { "shrink" },
+ more = { "minimal_stretching", "medium_stretching", "maximal_stretching", "wide_all" },
+ },
+ },
+ stylistics = {
+ ss01 = "Allah, Muhammad",
+ ss02 = "ss01 + Allah_final",
+ ss03 = "level-1 stack over Jiim, initial entry only",
+ ss04 = "level-1 stack over Jiim, initial/medial entry",
+ ss05 = "multi-level Jiim stacking, initial/medial entry",
+ ss06 = "aesthetic Faa/Qaaf for FJ_mm, FJ_mf connection",
+ ss07 = "initial-entry stacking over Haa",
+ ss08 = "initial/medial stacking over Haa, minus HM_mf strings",
+ ss09 = "initial/medial Haa stacking plus HM_mf strings",
+ ss10 = "basic dipped Miim, initial-entry B_S-stack over Miim",
+ ss11 = "full dipped Miim, initial-entry B_S-stack over Miim",
+ ss12 = "XBM_im initial-medial entry B_S-stack over Miim",
+ ss13 = "full initial-medial entry B_S-stacked Miim",
+ ss14 = "initial entry, stacked Laam on Miim",
+ ss15 = "full stacked Laam-on-Miim",
+ ss16 = "initial entry, stacked Ayn-on-Miim",
+ ss17 = "full stacked Ayn-on-Miim",
+ ss18 = "LMJ_im already contained in ss03--05, may remove",
+ ss19 = "LM_im",
+ ss20 = "KLM_m, sloped Miim",
+ ss21 = "KLM_i_mm/LM_mm, sloped Miim",
+ ss22 = "filled sloped Miim",
+ ss23 = "LM_mm, non-sloped Miim",
+ ss24 = "BR_i_mf, BN_i_mf",
+ ss25 = "basic LH_im might merge with ss24",
+ ss26 = "full Yaa.final special strings: BY_if, BY_mf, LY_mf",
+ ss27 = "basic thin Miim.final",
+ ss28 = "full thin Miim.final to be moved to jsnn",
+ ss29 = "basic short Miim.final",
+ ss30 = "full short Miim.final to be moved to jsnn",
+ ss31 = "basic Raa.final strings: JR and SR",
+ ss32 = "basic Raa.final strings: JR, SR, and BR",
+ ss33 = "TtR to be moved to jsnn",
+ ss34 = "AyR style also available in jsnn",
+ ss35 = "full Kaaf contexts",
+ ss36 = "full Laam contexts",
+ ss37 = "Miim-Miim contexts",
+ ss38 = "basic dipped Haa, B_SH_mm",
+ ss39 = "full dipped Haa, B_S_LH_i_mm_Mf",
+ ss40 = "aesthetic dipped medial Haa",
+ ss41 = "high and low Baa strings",
+ ss42 = "diagonal entry",
+ ss43 = "initial alternates",
+ ss44 = "hooked final alif",
+ ss45 = "BMA_f",
+ ss46 = "BM_mm_alt, for JBM combinations",
+ ss47 = "Shaddah-<kasrah> combo",
+ ss48 = "Auto-sukuun",
+ ss49 = "No vowels",
+ ss50 = "Shaddah/MaaddahHamzah only",
+ ss51 = "No Skuun",
+ ss52 = "No Waslah",
+ ss53 = "No Waslah",
+ ss54 = "chopped finals",
+ ss55 = "idgham-tanwin",
+ js01 = "Raawide",
+ js02 = "Yaawide",
+ js03 = "Kaafwide",
+ js04 = "Nuunwide",
+ js05 = "Kaafwide Nuunwide Siinwide Baawide",
+ js06 = "final Haa wide",
+ js07 = "thin Miim",
+ js08 = "short Miim",
+ js09 = "wide Siin",
+ js10 = "thuluth-style initial Haa, final Miim, MRw_mf",
+ js11 = "level-1 stretching",
+ js12 = "level-2 stretching",
+ js13 = "level-3 stretching",
+ js14 = "final Alif",
+ js15 = "hooked final Alif",
+ js16 = "aesthetic medial Faa/Qaaf",
+ js17 = "fancy isol Haa after Daal, Raa, and Waaw",
+ js18 = "Laamwide, alternate substitution",
+ js19 = "level-4 stretching, only siin and Hhaa for basmalah",
+ js20 = "level-5 stretching, only siin and Hhaa for basmalah",
+ js21 = "Haa.final_alt2",
+ },
+ colorschemes = {
+ default = {
+ [1] = {
+ "Onedotabove", "Onedotbelow", "Twodotsabove", "Twodotsbelow", "Threedotsabove", "Twodotsabove.vrt", "Twodotsbelow.vrt", "Twodotsabove.KBA", "Threedotsabove.KBA", "Threedotsbelowinv", "Hamzahabove", "Hamzahbelow", "MaaddahHamzah.identity", "Waslah","Hamzah.initial_medial",
+ },
+ [2] = {
+ "Fathah", "Dammah", "Kasrah", "FathahVertical", "DammahInverted", "KasrahVertical", "FathahVertical.alt1", "KasrahVertical.alt1", "FathahTanwiin", "DammahTanwiin", "KasrahTanwiin", "Shaddah", "Sukuun", "MaaddahHamzah", "Jazm", "Maaddah", "DammahTanwiin_alt2", "DammahTanwiin_alt1", "FathahTanwiin_alt1", "KasrahTanwiin_alt1", "Fathah.mkmk", "Dammah.mkmk", "Kasrah.mkmk", "FathahVertical.mkmk", "DammahInverted.mkmk", "KasrahVertical.mkmk", "FathahTanwiin.mkmk", "DammahTanwiin.mkmk", "KasrahTanwiin.mkmk", "DammahTanwiin_alt1.mkmk", "Waawsmall", "Yaasmall", "FathahVertical.alt2", "Waawsmall.isol", "Yaasmall.isol", "FathahVertical.isol", "Hamzah","Shaddah.lillaah","FathahVertical.alt1_mkmk","Sifr.empty","Maaddah.small","FathahVertical.alt2","Waawsmall.isol","Yaasmall.isol","FathahTanwiin.alt1_mkmk","KasrahTanwiin.alt1_mkmk",
+ },
+ [3] = {
+ "Ttaa.waqf", "SsLY.waqf", "QLY.waqf", "Miim.waqf", "LA.waqf", "Jiim.waqf", "Threedotsabove.waqf", "Siin.waqf", "Ssaad.waqf", "Qaaf.waqf", "SsL.waqf", "QF.waqf", "SKTH.waqf", "WQFH.waqf", "Kaaf.waqf", "Ayn.ruku", "Miim.nuun_high", "Siin.Ssaad", "Nuunsmall", "emptydot_low", "emptydot_high", "Sifr.fill", "Miim.nuun_low", "Nuun.tanwiin",
+ },
+ [4] = {"ZeroArabic.ayah", "OneArabic.ayah", "TwoArabic.ayah", "ThreeArabic.ayah", "FourArabic.ayah", "FiveArabic.ayah", "SixArabic.ayah", "SevenArabic.ayah", "EightArabic.ayah", "NineArabic.ayah", "FourFarsi.ayah", "FiveFarsi.ayah", "SixFarsi.ayah", "FourFarsi.urdu_ayah", "SevenFarsi.urdu_ayah","ZeroArabic.ayah_small","OneArabic.ayah_small","TwoArabic.ayah_small","ThreeArabic.ayah_small","FourArabic.ayah.001","FiveArabic.ayah_small","SixArabic.ayah_small","SevenArabic.ayah_small","EightArabic.ayah_small","NineArabic.ayah_small",
+ },
+ [5] = {
+ "Ayah", "Ayah.alt1", "Ayah.alt2", "Ayah.alt3", "Ayah2",
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/fonts b/tex/context/fonts/hvmath-math.lfg
index a7ec1ce89..a7ec1ce89 100644
--- a/tex/context/fonts/fonts
+++ b/tex/context/fonts/hvmath-math.lfg
diff --git a/tex/context/fonts/iwona-math.lfg b/tex/context/fonts/iwona-math.lfg
new file mode 100644
index 000000000..c64fac7e5
--- /dev/null
+++ b/tex/context/fonts/iwona-math.lfg
@@ -0,0 +1,56 @@
+local msam = { name = "msam10.tfm", vector = "tex-ma" }
+local msbm = { name = "msbm10.tfm", vector = "tex-mb" }
+
+return {
+ name = "iwona-math",
+ version = "1.00",
+ comment = "Goodies that complement iwona math.",
+ author = "Hans Hagen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "iwona-rm.map",
+ "iwona-mi.map",
+ "iwona-sy.map",
+ "iwona-ex.map",
+ },
+ virtuals = {
+ ["iwona-math"] = {
+ { name = "file:Iwona-Regular", features = "virtualmath", main = true },
+ { name = "mi-iwonari.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-iwonari.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-iwonarz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-iwonar.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ },
+ ["iwona-light-math"] = {
+ { name = "file:IwonaLight-Regular", features = "virtualmath", main = true },
+ { name = "mi-iwonali.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-iwonali.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-iwonalz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-iwonal.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ },
+ ["iwona-medium-math"] = {
+ { name = "file:IwonaMedium-Regular", features = "virtualmath", main = true },
+ { name = "mi-iwonami.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-iwonami.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-iwonamz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-iwonam.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ },
+ ["iwona-heavy-math"] = {
+ { name = "file:IwonaHeavy-Regular", features = "virtualmath", main = true },
+ { name = "mi-iwonahi.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mi-iwonahi.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "sy-iwonahz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "ex-iwonah.tfm", vector = "tex-ex", extension = true } ,
+ msam,
+ msbm,
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/lm-math.lfg b/tex/context/fonts/lm-math.lfg
new file mode 100644
index 000000000..f38886df0
--- /dev/null
+++ b/tex/context/fonts/lm-math.lfg
@@ -0,0 +1,229 @@
+-- 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 = "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 = "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 = "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 = "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 = "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 = "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 },
+}
+
+local ten_bold = {
+ { name = "lmroman10-bold.otf", features = "virtualmath", main = true },
+ { name = "rm-lmr10.tfm", vector = "tex-mr-missing" } ,
+ { name = "lmmib10.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "lmmib10.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "lmbsy10.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "lmex10.tfm", vector = "tex-ex", extension = true } ,
+-- copied from roman:
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ -- { 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 = "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 = "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.",
+ author = "Hans Hagen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "lm-math.map",
+ "lm-rm.map",
+ },
+ virtuals = {
+ ["lmroman5-math"] = five,
+ ["lmroman6-math"] = six,
+ ["lmroman7-math"] = seven,
+ ["lmroman8-math"] = eight,
+ ["lmroman9-math"] = nine,
+ ["lmroman10-math"] = ten,
+ ["lmroman10-boldmath"] = ten_bold,
+ ["lmroman12-math"] = twelve,
+ ["lmroman17-math"] = seventeen,
+ }
+ }
+}
diff --git a/tex/context/fonts/lucida-math.lfg b/tex/context/fonts/lucida-math.lfg
new file mode 100644
index 000000000..83c3c272d
--- /dev/null
+++ b/tex/context/fonts/lucida-math.lfg
@@ -0,0 +1,320 @@
+fonts.enc.math["lbr-ma"] = {
+ [0x025CB] = 0x00, -- circle
+ [0x025CF] = 0x01, -- blackcircle
+ [0x025A1] = 0x02, -- square
+ [0x025A0] = 0x03, -- blacksquare
+ [0x025B3] = 0x04, -- triangleup
+ [0x025B2] = 0x05, -- blacktriangleup
+ [0x025BD] = 0x06, -- triangledown
+ [0x025BC] = 0x07, -- blacktriangledown
+ [0x02B28] = 0x08, -- lozenge
+ [0x02B27] = 0x09, -- blacklozenge
+ [0x02B29] = 0x0A, -- blackdiamond
+ [0x02571] = 0x0B, -- upright
+ [0x02572] = 0x0C, -- downright
+ [0x022E4] = 0x0D, -- squareimageofnoteq
+ [0x022E5] = 0x0E, -- squareoriginalofnoteq
+ [0x02A4F] = 0x0F, -- dblsquareunion
+ [0x02A4E] = 0x10, -- dblsquareintersection
+ [0x02A64] = 0x11, -- zdomainantirestriction
+ [0x02A65] = 0x12, -- zrangeantirestriction
+ [0x022EE] = 0x13, -- verticalellipsis
+ [0x022EF] = 0x14, -- ellipsis
+ [0x022F0] = 0x15, -- uprightellipsis
+ [0x022F1] = 0x16, -- downrightellipsis
+ [0x022D5] = 0x17, -- equalparallel
+
+ [0x0225B] = 0x1A, -- stareq
+ [0x00127] = 0x1B, -- hbar
+ [0x022F6] = 0x1C, -- barelementof
+ [0x02209] = 0x1D, -- notelementof
+ [0x022FD] = 0x1E, -- barcontains
+ [0x0220C] = 0x1F, -- notcontain
+ [0x02204] = 0x20, -- nexists
+ [0x02194] = 0x21, -- leftrightarrow
+ [0x02195] = 0x22, -- updownarrow
+ [0x0219E] = 0x23, -- leftleftarrow
+ [0x0219F] = 0x24, -- upuparrow
+ [0x021A0] = 0x25, -- rightrightarrow
+-- [0x00026] = 0x26, -- amperand
+ [0x021A1] = 0x27, -- downdownarrow
+ [0x021A2] = 0x28, -- leftarrowtail
+ [0x021A3] = 0x29, -- rightarrowtail
+ [0x021A4] = 0x2A, -- leftarrowbar
+ [0x021A6] = 0x2B, -- rightarrowbar
+ [0x021A5] = 0x2C, -- uparrowbar
+-- [0x02212] = 0x2D, -- minus
+-- [0x0002D] = 0x2D, -- minus
+ [0x021A7] = 0x2E, -- downarrowbar
+ [0x021E4] = 0x2F, -- barleftarrow
+ [0x021E5] = 0x30, -- barrightarrow
+
+ [0x021E0] = 0x38, -- dashleftarrow
+ [0x021E1] = 0x39, -- dashuparrow
+ [0x021E2] = 0x3A, -- dashrightarrow
+ [0x021E3] = 0x3B, -- dashdownarrow
+ [0x021A9] = 0x3C, -- hookleftarrow
+-- [0x0003D] = 0x3D, -- equalto
+ [0x021AA] = 0x3E, -- hookrightarrow
+ [0x021AB] = 0x3F, -- looparrowleft
+ [0x021AC] = 0x40, -- looparrowright
+ [0x1D538] = 0x41, -- A (blackboard A)
+ [0x1D539] = 0x42, -- B
+ [0x02102] = 0x43, -- C
+ [0x1D53B] = 0x44, -- D
+ [0x1D53C] = 0x45, -- E
+ [0x1D53D] = 0x46, -- F
+ [0x1D53E] = 0x47, -- G
+ [0x0210D] = 0x48, -- H
+ [0x1D540] = 0x49, -- I
+ [0x1D541] = 0x4A, -- J
+ [0x1D542] = 0x4B, -- K
+ [0x1D543] = 0x4C, -- L
+ [0x1D544] = 0x4D, -- M
+ [0x02115] = 0x4E, -- N
+ [0x1D546] = 0x4F, -- O
+ [0x02119] = 0x50, -- P
+ [0x0211A] = 0x51, -- Q
+ [0x0211D] = 0x52, -- R
+ [0x1D54A] = 0x53, -- S
+ [0x1D54B] = 0x54, -- T
+ [0x1D54C] = 0x55, -- U
+ [0x1D54D] = 0x56, -- V
+ [0x1D54E] = 0x57, -- W
+ [0x1D54F] = 0x58, -- X
+ [0x1D550] = 0x59, -- Y
+ [0x02124] = 0x5A, -- Z (blackboard Z)
+ [0x0231C] = 0x5B, -- ulcorner
+ [0x0231D] = 0x5C, -- urcorner
+ [0x0231E] = 0x5D, -- llcorner
+ [0x0231F] = 0x5E, -- lrcorner
+ [0x02225] = 0x5F, -- parallel, Vert, lVert, rVert, arrowvert
+ [0x021D5] = 0x60, -- Updownarrow
+ [0x021D4] = 0x61, -- Leftrightarrow
+ [0x021D6] = 0x62, -- Upleftarrow
+ [0x021D7] = 0x63, -- Uprightarrow
+ [0x021D9] = 0x64, -- Downleftarrow
+ [0x021D8] = 0x65, -- Downrightarrow
+ [0x021CD] = 0x66, -- nLeftarrow
+ [0x021CE] = 0x67, -- nLeftrightarrow
+ [0x021CF] = 0x68, -- nRightarrow
+-- [0x021CE] = 0x69, -- nLeftrightarrow -- what's the difference between this and 0x0067[0x021CE]
+ [0x021DA] = 0x6A, -- Lleftarrow
+ [0x1D55C] = 0x6B, -- k \Bbbk (blackboard k)
+ [0x021DB] = 0x6C, -- Rrightarrow
+ [0x021C4] = 0x6D, -- rlarrow
+ [0x021C6] = 0x6E, -- lrarrow
+ [0x021C5] = 0x6F, -- udarrow
+-- [0x021C5] = 0x70, -- duarrow
+ [0x021C7] = 0x71, -- llarrow
+ [0x021C8] = 0x72, -- uuarrow
+ [0x021C9] = 0x73, -- rrarrow
+ [0x021CA] = 0x74, -- ddarrow
+ [0x021BE] = 0x75, -- rupharpoon
+ [0x021BF] = 0x76, -- lupharpoon
+ [0x021C2] = 0x77, -- rdownharpoon
+ [0x021C3] = 0x78, -- ldownharpoon
+ [0x021CB] = 0x79, -- lrharpoon
+ [0x021CC] = 0x7A, -- rlharpoon
+ [0x021B0] = 0x7B, -- upthenleftarrow
+-- [0x00000] = 0x7C, -- part
+ [0x021B1] = 0x7D, -- upthenrightarrow
+-- [0x00000] = 0x7E, -- part
+ [0x02276] = 0x7F, -- ltgt
+ [0x021B2] = 0x81, -- downthenleftarrow
+ [0x021B3] = 0x82, -- downthenrightarrow
+ [0x02B0E] = 0x83, -- rightthendownarrow
+ [0x02B10] = 0x84, -- leftthendownarrow
+ [0x02B0F] = 0x85, -- rightthenuparrow
+ [0x02B11] = 0x86, -- leftthenuparrow
+ [0x021B6] = 0x87, -- leftarcarrow
+ [0x021B7] = 0x88, -- rightarcarrow
+ [0x0293D] = 0x89, -- leftarcarrowplus
+ [0x0293C] = 0x8A, -- rightarcarrowminus
+ [0x021BA] = 0x8B, -- anticlockwise
+ [0x021BB] = 0x8C, -- clockwise
+
+ [0x02260] = 0x94, -- noteq
+ [0x02262] = 0x95, -- notidentical
+ [0x02241] = 0x96, -- nottilde
+ [0x02244] = 0x97, -- notasymptoticallyequal
+ [0x02249] = 0x98, -- notalmostequal
+ [0x02247] = 0x99, -- notapproximatelyeq
+ [0x0226E] = 0x9A, -- nless
+ [0x0226F] = 0x9B, -- ngtr
+ [0x02270] = 0x9C, -- nleq
+ [0x02271] = 0x9D, -- ngeq
+ [0x022E6] = 0x9E, -- lnsim
+ [0x022E7] = 0x9F, -- gnsim
+ [0x02605] = 0xAB, -- black star
+ [0x02713] = 0xAC, -- check
+ [0x02277] = 0xC5, -- gtlt
+ [0x02284] = 0xC6, -- nsubsetof
+ [0x02285] = 0xC7, -- nsupsetof
+ [0x02288] = 0xC8, -- nsubseteq
+ [0x02289] = 0xC9, -- nsupseteq
+
+ [0x0228A] = 0xCC, -- subsetneq
+ [0x0228B] = 0xCD, -- supsetneq
+
+-- [0x0228A] = 0xD0, -- subsetneq
+-- [0x0228B] = 0xD1, -- supsetneq
+
+ [0x02270] = 0xD6, -- nleq
+ [0x02271] = 0xD7, -- ngeq
+
+ [0x02268] = 0xDC, -- lneqq
+ [0x02269] = 0xDD, -- gneqq
+
+ [0x022E6] = 0xE0, -- lnsim
+ [0x02219] = 0xE1, -- bullet
+ [0x022E7] = 0xE2, -- gnsim
+
+ [0x02280] = 0xE5, -- nprec
+ [0x02281] = 0xE6, -- nsucc
+
+ [0x022E8] = 0xEB, -- precnsim
+ [0x022E9] = 0xEC, -- succnsim
+
+ [0x022EA] = 0xEF, -- nnormalsub
+ [0x022EB] = 0xF0, -- ncontainnormalsub
+ [0x022EC] = 0xF1, -- nnormalsubeq
+ [0x022ED] = 0xF2, -- ncontainnormalsubeq
+
+ [0x02226] = 0xF7, -- nparallel
+ [0x022AC] = 0xF8, -- nvdash
+ [0x022AE] = 0xF9, -- nVdash
+ [0x022AD] = 0xFA, -- nvDash
+ [0x022AF] = 0xFB, -- nVDash
+}
+
+fonts.enc.math["lbr-mb"] = {
+ [0x00393] = 0x00, -- Gamma
+ [0x00394] = 0x01, -- Delta
+ [0x00398] = 0x02, -- Theta
+ [0x0039B] = 0x03, -- Lambda
+ [0x0039E] = 0x04, -- Xi
+ [0x003A0] = 0x05, -- Pi
+ [0x003A3] = 0x06, -- Sigma
+ [0x003A5] = 0x07, -- Upsilon
+ [0x003A6] = 0x08, -- Phi
+ [0x003A8] = 0x09, -- Psi
+ [0x003A9] = 0x0A, -- Omega
+ [0x0210F] = 0x9D, -- hslash
+ [0x02127] = 0x92, -- mho
+ [0x02132] = 0x90, -- Finv
+ [0x02136] = 0x95, -- beth
+ [0x02137] = 0x96, -- gimel
+ [0x02138] = 0x97, -- daleth
+ [0x02141] = 0x91, -- Game
+ [0x02201] = 0x94, -- complement
+ [0x0226C] = 0xF2, -- between
+ [0x0227C] = 0xE4, -- preccurlyeq
+ [0x0227D] = 0xE5, -- succcurlyeq
+ [0x0229D] = 0xCC, -- circleddash
+ [0x022A8] = 0xD6, -- vDash
+ [0x022AA] = 0xD3, -- Vvdash
+ [0x022B8] = 0xC7, -- multimap
+ [0x022BB] = 0xD2, -- veebar
+ [0x022C7] = 0xF7, -- divideontimes
+ [0x022C9] = 0xCF, -- ltimes
+ [0x022CA] = 0xCE, -- rtimes
+ [0x022CB] = 0xD0, -- leftthreetimes
+ [0x022CC] = 0xD1, -- rightthreetimes
+ [0x022D6] = 0xDC, -- lessdot
+ [0x022D7] = 0xDD, -- gtrdot
+ [0x022DA] = 0xE8, -- lesseqgtr
+ [0x022DB] = 0xE9, -- gtreqless
+ [0x022DE] = 0xE6, -- curlyeqprec
+ [0x022DF] = 0xE7, -- curlyeqsucc
+ [0x024C7] = 0xC9, -- circledR
+ [0x024C8] = 0xCA, -- circledS
+ [0x025B6] = 0xF1, -- blacktriangleright
+ [0x025B8] = 0xF0, -- blacktriangleleft
+ [0x02720] = 0xCB, -- maltese
+ [0x02A7D] = 0xE0, -- leqslant
+ [0x02A7E] = 0xE1, -- geqslant
+ [0x02A85] = 0xDA, -- lessapprox
+ [0x02A86] = 0xDB, -- gtrapprox
+ [0x02A8B] = 0xEA, -- lesseqqgtr
+ [0x02A8C] = 0xEB, -- gtreqqless
+ [0x02A95] = 0xE2, -- eqslantless
+ [0x02A96] = 0xE3, -- eqslantgtr
+ [0x02AB7] = 0xEC, -- precapprox
+ [0x02AB8] = 0xED, -- succapprox
+ [0x02AC5] = 0xEE, -- subseteqq
+ [0x02AC6] = 0xEF, -- supseteqq
+ [0x12035] = 0xC8, -- backprime
+ [0x1D718] = 0x9B, -- varkappa
+}
+
+fonts.enc.math["lbr-sy"] = {
+ [0x021CB] = 0x8D, -- leftrightharpoons
+ [0x021CC] = 0x8E, -- rightleftharpoons
+ [0x02214] = 0x89, -- dotplus
+ [0x02220] = 0x8B, -- angle
+ [0x02221] = 0x8C, -- measuredangle
+ [0x02222] = 0x8D, -- sphericalangle
+ [0x02234] = 0x90, -- therefore
+ [0x02235] = 0x91, -- because
+ [0x0223D] = 0x24, -- backsim
+ [0x02242] = 0x99, -- eqsim
+ [0x0224A] = 0x9D, -- approxeq
+ [0x0224E] = 0xC7, -- Bumpeq
+ [0x02252] = 0xCB, -- fallingdotseq
+ [0x02253] = 0xCC, -- risingdotseq
+ [0x02256] = 0xCF, -- eqcirc
+ [0x02257] = 0xD0, -- circeq
+ [0x0225C] = 0xD5, -- triangleq
+ [0x02266] = 0xDA, -- leqq
+ [0x02267] = 0xDB, -- geqq
+ [0x02272] = 0xDC, -- lesssim
+ [0x02273] = 0xDD, -- gtrsim
+ [0x02276] = 0xDE, -- lessgtr
+ [0x02277] = 0xDF, -- gtrless
+ [0x0227E] = 0xE0, -- precsim
+ [0x0227F] = 0xE1, -- succsim
+ [0x0228F] = 0xE4, -- sqsubset
+ [0x02290] = 0xE5, -- sqsupset
+ [0x0229A] = 0xE6, -- circledcirc
+ [0x0229B] = 0xE7, -- circledast
+ [0x0229E] = 0xEA, -- boxplus
+ [0x0229F] = 0xEB, -- boxminus
+ [0x022A0] = 0xEC, -- boxtimes
+ [0x022A1] = 0xED, -- boxdot
+ [0x022A7] = 0xEE, -- models
+ [0x022A9] = 0xF0, -- Vdash
+ [0x022BC] = 0xF6, -- barwedge
+ [0x022CE] = 0x85, -- curlyvee
+ [0x022CF] = 0x84, -- curlywedge
+ [0x022D0] = 0xF8, -- Subset
+ [0x022D1] = 0xF9, -- Supset
+ [0x02300] = 0x53, -- varnothing
+ [0x025CA] = 0x05, -- lozenge
+}
+
+fonts.enc.math["lbr-sy"] = table.merged(fonts.enc.math["tex-sy"],fonts.enc.math["lbr-sy"])
+
+return {
+ name = "lucida-math",
+ version = "1.00",
+ comment = "Goodies that complement lucida math.",
+ author = "Aditya, Hans, Mojca",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "lucida.map",
+ },
+ virtuals = {
+ ["lucida-math"] = {
+ { name = "file:lbr.afm", features = "virtualmath", main = true },
+ { name = "hlcrim.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "hlcrim.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "hlcry.tfm", vector = "lbr-sy", skewchar=0x30, parameters = true },
+ { name = "hlcrv.tfm", vector = "tex-ex", extension = true },
+ { name = "hlcra.tfm", vector = "lbr-ma" },
+ { name = "hlcrm.tfm", vector = "lbr-mb" },
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/mathtimes-math.lfg b/tex/context/fonts/mathtimes-math.lfg
new file mode 100644
index 000000000..58c24c86c
--- /dev/null
+++ b/tex/context/fonts/mathtimes-math.lfg
@@ -0,0 +1,23 @@
+return {
+ name = "mathtimes-math",
+ version = "1.00",
+ comment = "Goodies that complement mathtimes math.",
+ author = "Hans Hagen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "mathtime.map",
+ },
+ virtuals = {
+ ["mathtimes-math"] = {
+ { name = "file:texgyretermes-regular.otf", features = "virtualmath", main = true },
+ { name = "mtmiz.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "mtmiz.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "mtsyn.tfm", vector = "tex-sy", skewchar=0x30, parameters = true },
+ { name = "mtex.tfm", vector = "tex-ex", extension = true },
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/px-math.lfg b/tex/context/fonts/px-math.lfg
new file mode 100644
index 000000000..b261f0701
--- /dev/null
+++ b/tex/context/fonts/px-math.lfg
@@ -0,0 +1,24 @@
+return {
+ name = "px-math",
+ version = "1.00",
+ comment = "Goodies that complement px math.",
+ author = "Hans Hagen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "mkiv-px.map",
+ },
+ virtuals = {
+ ["px-math"] = {
+ { name = "texgyrepagella-regular.otf", features = "virtualmath", main = true },
+ { name = "rpxr.tfm", vector = "tex-mr" } ,
+ { name = "rpxmi.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "rpxpplri.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "pxsy.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "pxex.tfm", vector = "tex-ex", extension = true } ,
+ { name = "pxsya.tfm", vector = "tex-ma" },
+ { name = "pxsyb.tfm", vector = "tex-mb" },
+ },
+ }
+ }
+}
diff --git a/tex/context/fonts/tx-math.lfg b/tex/context/fonts/tx-math.lfg
new file mode 100644
index 000000000..f1d532773
--- /dev/null
+++ b/tex/context/fonts/tx-math.lfg
@@ -0,0 +1,24 @@
+return {
+ name = "tx-math",
+ version = "1.00",
+ comment = "Goodies that complement tx math.",
+ author = "Hans Hagen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "mkiv-tx.map",
+ },
+ virtuals = {
+ ["tx-math"] = {
+ { name = "texgyretermes-regular.otf", features = "virtualmath", main = true },
+ { name = "rtxr.tfm", vector = "tex-mr" } ,
+ { name = "rtxptmri.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "rtxmi.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "txsy.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } ,
+ { name = "txex.tfm", vector = "tex-ex", extension = true } ,
+ { name = "txsya.tfm", vector = "tex-ma" },
+ { name = "txsyb.tfm", vector = "tex-mb" },
+ }
+ }
+ }
+}
diff --git a/tex/context/fonts/utopia-math.lfg b/tex/context/fonts/utopia-math.lfg
new file mode 100644
index 000000000..05298396c
--- /dev/null
+++ b/tex/context/fonts/utopia-math.lfg
@@ -0,0 +1,27 @@
+return {
+ name = "utopia-math",
+ version = "1.00",
+ comment = "Goodies that complement utopia math.",
+ author = "Hans, Mojca, Aditya",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "mdput.map",
+ },
+ virtuals = {
+ ["utopia-math"] = {
+ -- { name = "file:putr8a", features = "virtualmath", main = true },
+ { name = "file:putri8a", features = "virtualmath", main = true },
+ -- { name = "md-utr7m.tfm", vector = "tex-mr" },
+ { name = "md-utri7m.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "md-utri7m.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "md-utr7y.tfm", vector = "tex-sy", skewchar=0x30, parameters = true },
+ { name = "md-utr7v.tfm", vector = "tex-ex", extension = true },
+ -- { name = "md-utbma.tfm", vector = "tex-ma" },
+ -- { name = "md-utbmb.tfm", vector = "tex-mb" },
+ { name = "msam10.tfm", vector = "tex-ma" },
+ { name = "msbm10.tfm", vector = "tex-mb" },
+ }
+ }
+ }
+}