diff options
28 files changed, 1553 insertions, 134 deletions
diff --git a/scripts/context/lua/luatools.lua b/scripts/context/lua/luatools.lua index 9a04cc0b2..36c6c6e38 100644 --- a/scripts/context/lua/luatools.lua +++ b/scripts/context/lua/luatools.lua @@ -5253,18 +5253,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 +--~ 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.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 @@ -5281,21 +5333,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 .") + else + 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/scripts/context/lua/mtx-watch.lua b/scripts/context/lua/mtx-watch.lua index 33dc08928..8864b44ba 100644 --- a/scripts/context/lua/mtx-watch.lua +++ b/scripts/context/lua/mtx-watch.lua @@ -145,10 +145,10 @@ function scripts.watch.watch() local path, base = replacements.outputpath, file.basename(replacements.filename) joblog.runtime = clock() - joblog.runtime if base ~= "" then - joblog.result = file.replacesuffix(file.join(path,base),"pdf") - joblog.size = lfs.attributes(joblog.result,"size") + joblog.result = file.replacesuffix(file.join(path,base),"pdf") + joblog.size = lfs.attributes(joblog.result,"size") end - joblog.status = "finished" + joblog.status = "finished" else joblog.status = "invalid command" end diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index b1327ae52..d940eae46 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -8343,18 +8343,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 +--~ 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.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 @@ -8371,21 +8423,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/scripts/context/stubs/mswin/luatools.lua b/scripts/context/stubs/mswin/luatools.lua index 9a04cc0b2..36c6c6e38 100644 --- a/scripts/context/stubs/mswin/luatools.lua +++ b/scripts/context/stubs/mswin/luatools.lua @@ -5253,18 +5253,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 +--~ 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.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 @@ -5281,21 +5333,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 .") + else + 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/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index b1327ae52..d940eae46 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -8343,18 +8343,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 +--~ 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.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 @@ -8371,21 +8423,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/scripts/context/stubs/unix/luatools b/scripts/context/stubs/unix/luatools index 9a04cc0b2..36c6c6e38 100755 --- a/scripts/context/stubs/unix/luatools +++ b/scripts/context/stubs/unix/luatools @@ -5253,18 +5253,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 +--~ 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.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 @@ -5281,21 +5333,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 .") + else + 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/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index b1327ae52..d940eae46 100755 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -8343,18 +8343,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 +--~ 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.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 @@ -8371,21 +8423,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/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" }, + } + } + } +} |