summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luaotfload/fontloader-fonts.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luaotfload/fontloader-fonts.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luaotfload/fontloader-fonts.lua324
1 files changed, 0 insertions, 324 deletions
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-fonts.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-fonts.lua
deleted file mode 100644
index c21389c71de..00000000000
--- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-fonts.lua
+++ /dev/null
@@ -1,324 +0,0 @@
-if not modules then modules = { } end modules ['luatex-fonts'] = {
- version = 1.001,
- comment = "companion to luatex-fonts.tex",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- A merged file is generated with:
---
--- mtxrun --script package --merge ./luatex-fonts.lua
---
--- A needed resource file is made by:
---
--- mtxrun --script context luatex-basics-prepare.tex
---
--- A font (generic) database is created with:
---
--- mtxrun --script font --reload --simple
-
--- The following code isolates the generic context code from already defined or to be defined
--- namespaces. This is the reference loader for plain tex. This generic code is also used in
--- luaotfload which is a low level lualatex opentype font loader but somehow has gotten a bit
--- too generic name / prefix, originally set up and maintained by Khaled Hosny. Currently that
--- set of derived files is maintained by a larger team lead by Philipp Gesang so when there are
--- issues with this code in latex, you can best contact him. It might make sense then to first
--- check if context has the same issue. We do our best to keep the interface as clean as possible.
---
--- The code base is rather stable now, especially if you stay away from the non generic code. All
--- relevant data is organized in tables within the main table of a font instance. There are a few
--- places where in context other code is plugged in, but this does not affect the core code. Users
--- can (given that their macro package provides this option) access the font data (characters,
--- descriptions, properties, parameters, etc) of this main table. The documentation is part of
--- context. There is also a manual for the helper libraries (maintained as part of the cld manuals).
---
--- Future versions will probably have some more specific context code removed, like tracing and
--- obscure hooks, so that we have a more efficient version (and less files too). So, don't depend
--- too much on low level code that is meant for context as it can change without notice. We might
--- also add more helper code here, but that depends to what extend metatex (sidetrack of context)
--- evolves into a low level layer (depends on time, as usual).
-
--- The code here is the same as in context version 2015.09.11 but the rendering in context can be
--- different from generic. This can be a side effect of additional callbacks, additional features
--- and interferences between mechanisms between macro packages. We use the rendering in context
--- and luatex-plain as reference for issues.
-
-utf = utf or unicode.utf8
-
--- We have some (global) hooks (for latex):
-
-if not non_generic_context then
- non_generic_context = { }
-end
-
-if not non_generic_context.luatex_fonts then
- non_generic_context.luatex_fonts = {
- -- load_before = nil,
- -- load_after = nil,
- -- skip_loading = nil,
- }
-end
-
-if not generic_context then
- generic_context = { }
-end
-
-if not generic_context.push_namespaces then
-
- function generic_context.push_namespaces()
- texio.write(" <push namespace>")
- local normalglobal = { }
- for k, v in next, _G do
- normalglobal[k] = v
- end
- return normalglobal
- end
-
- function generic_context.pop_namespaces(normalglobal,isolate)
- if normalglobal then
- texio.write(" <pop namespace>")
- for k, v in next, _G do
- if not normalglobal[k] then
- generic_context[k] = v
- if isolate then
- _G[k] = nil
- end
- end
- end
- for k, v in next, normalglobal do
- _G[k] = v
- end
- -- just to be sure:
- setmetatable(generic_context,_G)
- else
- texio.write(" <fatal error: invalid pop of generic_context>")
- os.exit()
- end
- end
-
-end
-
-local whatever = generic_context.push_namespaces()
-
--- We keep track of load time by storing the current time. That way we cannot be accused
--- of slowing down loading too much. Anyhow, there is no reason for this library to perform
--- slower in any other package as it does in context.
---
--- Please don't update to this version without proper testing. It might be that this version
--- lags behind stock context and the only formal release takes place around tex live code
--- freeze.
-
-local starttime = os.gettimeofday()
-
--- As we don't use the context file searching, we need to initialize the kpse library. As the
--- progname can be anything we will temporary switch to the context namespace if needed. Just
--- adding the context paths to the path specification is somewhat faster.
---
--- Now, with lua 5.2 being used we might create a special ENV for this.
-
--- kpse.set_program_name("luatex")
-
-local ctxkpse = nil
-local verbose = true
-
-local function loadmodule(name,continue)
- local foundname = kpse.find_file(name,"tex") or ""
- if not foundname then
- if not ctxkpse then
- ctxkpse = kpse.new("luatex","context")
- end
- foundname = ctxkpse:find_file(name,"tex") or ""
- end
- if foundname == "" then
- if not continue then
- texio.write_nl(string.format(" <luatex-fonts: unable to locate %s>",name))
- os.exit()
- end
- else
- if verbose then
- texio.write(string.format(" <%s>",foundname)) -- no file.basename yet
- end
- dofile(foundname)
- end
-end
-
-if non_generic_context.luatex_fonts.load_before then
- loadmodule(non_generic_context.luatex_fonts.load_before,true)
-end
-
-if non_generic_context.luatex_fonts.skip_loading ~= true then
-
- loadmodule('luatex-fonts-merged.lua',true)
-
- if fonts then
-
- if not fonts._merge_loaded_message_done_ then
- texio.write_nl("log", "!")
- texio.write_nl("log", "! I am using the merged version of 'luatex-fonts.lua' here. If")
- texio.write_nl("log", "! you run into problems or experience unexpected behaviour, and")
- texio.write_nl("log", "! if you have ConTeXt installed you can try to delete the file")
- texio.write_nl("log", "! 'luatex-font-merged.lua' as I might then use the possibly")
- texio.write_nl("log", "! updated libraries. The merged version is not supported as it")
- texio.write_nl("log", "! is a frozen instance. Problems can be reported to the ConTeXt")
- texio.write_nl("log", "! mailing list.")
- texio.write_nl("log", "!")
- end
-
- fonts._merge_loaded_message_done_ = true
-
- else
-
- -- The following helpers are a bit overkill but I don't want to mess up context code for the
- -- sake of general generality. Around version 1.0 there will be an official api defined.
- --
- -- So, I will strip these libraries and see what is really needed so that we don't have this
- -- overhead in the generic modules. The next section is only there for the packager, so stick
- -- to using luatex-fonts with luatex-fonts-merged.lua and forget about the rest. The following
- -- list might change without prior notice (for instance because we shuffled code around).
-
- loadmodule("l-lua.lua")
- loadmodule("l-lpeg.lua")
- loadmodule("l-function.lua")
- loadmodule("l-string.lua")
- loadmodule("l-table.lua")
- loadmodule("l-io.lua")
- loadmodule("l-file.lua")
- loadmodule("l-boolean.lua")
- loadmodule("l-math.lua")
- loadmodule("l-unicode.lua")
-
- -- A few slightly higher level support modules:
-
- loadmodule("util-str.lua")
- loadmodule("util-fil.lua")
-
- -- The following modules contain code that is either not used at all outside context or will
- -- fail when enabled due to lack of other modules.
-
- -- First we load a few helper modules. This is about the miminum needed to let the font modules
- -- do their work. Don't depend on their functions as we might strip them in future versions of
- -- this generic variant.
-
- loadmodule('luatex-basics-gen.lua')
- loadmodule('data-con.lua')
-
- -- We do need some basic node support. The code in there is not for general use as it might
- -- change.
-
- loadmodule('luatex-basics-nod.lua')
-
- -- We ship a resources needed for font handling (more might end up here).
-
- loadmodule('luatex-basics-chr.lua')
-
- -- Now come the font modules that deal with traditional tex fonts as well as open type fonts.
- --
- -- The font database file (if used at all) must be put someplace visible for kpse and is not
- -- shared with context. The mtx-fonts script can be used to generate this file (using the
- -- --reload --force --simple option).
-
- loadmodule('font-ini.lua')
- loadmodule('font-con.lua')
- loadmodule('luatex-fonts-enc.lua') -- will load font-age on demand
- loadmodule('font-cid.lua')
- loadmodule('font-map.lua') -- for loading lum file (will be stripped)
-
- -- We use a bit simpler database because using the context one demands loading more helper
- -- code and although it is more flexible (more wauys to resolve and so) it will never be
- -- uses in plain/latex anyway, so let's stick to a simple approach.
-
- loadmodule('luatex-fonts-syn.lua')
-
- loadmodule('font-oti.lua')
-
- -- These are the old loader and processing modules. These use the built-in font loader and
- -- will stay around (but not be extended), only fixed.
-
- -- font-otf.lua
- -- font-otb.lua
- -- font-inj.lua
- -- font-ota.lua
- -- font-otn.lua
- -- font-otp.lua
-
- -- Here come the new loader and processing modules. The loader is written in Lua and although
- -- initial loading is somewhat slower, identifying is faster, cached files can be slightly
- -- more efficient, and processing is somewhat faster (only measureable on complex fonts).
-
- loadmodule('font-otr.lua')
- loadmodule('font-cff.lua')
- loadmodule('font-ttf.lua')
- loadmodule('font-dsp.lua')
- loadmodule('font-oup.lua')
- loadmodule('font-otl.lua')
- loadmodule('font-oto.lua')
- loadmodule('font-otj.lua')
- loadmodule('font-ota.lua')
- loadmodule('font-ots.lua')
- loadmodule('font-osd.lua')
- loadmodule('font-ocl.lua') -- svg needs 0.97 (for fix in memstreams)
-
- loadmodule('font-otc.lua')
-
- -- type one code
-
- loadmodule('font-onr.lua') -- was font-afm.lua
- loadmodule('font-one.lua') -- was font-afm.lua
- loadmodule('font-afk.lua')
-
- -- traditional code
-
- loadmodule('font-tfm.lua')
-
- -- common code
-
- loadmodule('font-lua.lua')
- loadmodule('font-def.lua')
- loadmodule('font-xtx.lua') -- xetex compatible specifiers (plain/latex only)
- loadmodule('luatex-fonts-ext.lua') -- some extensions
-
- -- We need to plug into a callback and the following module implements the handlers. Actual
- -- plugging in happens later.
-
- loadmodule('font-gbn.lua')
-
- end
-
-end
-
-if non_generic_context.luatex_fonts.load_after then
- loadmodule(non_generic_context.luatex_fonts.load_after,true)
-end
-
-resolvers.loadmodule = loadmodule
-
--- In order to deal with the fonts we need to initialize some callbacks. One can overload them later
--- on if needed. First a bit of abstraction.
-
-generic_context.callback_ligaturing = false
-generic_context.callback_kerning = false
-generic_context.callback_pre_linebreak_filter = nodes.simple_font_handler
-generic_context.callback_hpack_filter = nodes.simple_font_handler
-generic_context.callback_define_font = fonts.definers.read
-
--- The next ones can be done at a different moment if needed. You can create a generic_context namespace
--- and set no_callbacks_yet to true, load this module, and enable the callbacks later. So, there is really
--- *no* need to create a alternative for luatex-fonts.lua and luatex-fonts-merged.lua: just load this one
--- and overload if needed.
-
-if not generic_context.no_callbacks_yet then
-
- callback.register('ligaturing', generic_context.callback_ligaturing)
- callback.register('kerning', generic_context.callback_kerning)
- callback.register('pre_linebreak_filter', generic_context.callback_pre_linebreak_filter)
- callback.register('hpack_filter', generic_context.callback_hpack_filter)
- callback.register('define_font' , generic_context.callback_define_font)
-
-end
-
--- We're done.
-
-texio.write(string.format(" <luatex-fonts.lua loaded in %0.3f seconds>", os.gettimeofday()-starttime))
-
-generic_context.pop_namespaces(whatever)