summaryrefslogtreecommitdiff
path: root/luaotfload.lua
diff options
context:
space:
mode:
authorElie Roux <elie.roux@telecom-bretagne.eu>2009-04-16 15:54:55 +0200
committerElie Roux <elie.roux@telecom-bretagne.eu>2009-04-16 15:54:55 +0200
commitfed311d67f0258a26530e04c43acf3d0261a25ce (patch)
treed0f5a332f65e0ed66e4f4c542f7b57ca4e80e8cb /luaotfload.lua
parent74fe1c58a90d884f227a7354181633c0452ac0f9 (diff)
downloadluaotfload-fed311d67f0258a26530e04c43acf3d0261a25ce.tar.gz
making a dtx for luaotfload, with documentation
Diffstat (limited to 'luaotfload.lua')
-rw-r--r--luaotfload.lua148
1 files changed, 0 insertions, 148 deletions
diff --git a/luaotfload.lua b/luaotfload.lua
deleted file mode 100644
index 21aff95..0000000
--- a/luaotfload.lua
+++ /dev/null
@@ -1,148 +0,0 @@
-luaotfload = { }
-
-luaotfload.module = {
- name = "luaotfload",
- version = 1.001,
- date = "2009/04/08",
- description = "ConTeXt font loading system.",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
-luatextra.provides_module(luaotfload.module)
-
-function luaotfload.loadmodule(name)
- local foundname = kpse.find_file('otfl-'..name,"tex")
- if not foundname then
- luatextra.module_error('luaotfload', string.format('file otfl-%s not found.', name))
- return
- end
- dofile(foundname)
-end
-
--- The following functions are made to map ConTeXt functions to luaextra functions.
-
-string.strip = string.stripspaces
-
-local splitters_s, splitters_m = { }, { }
-
-function lpeg.splitat(separator,single)
- local splitter = (single and splitters_s[separator]) or splitters_m[separator]
- if not splitter then
- separator = lpeg.P(separator)
- if single then
- local other, any = lpeg.C((1 - separator)^0), lpeg.P(1)
- splitter = other * (separator * lpeg.C(any^0) + "")
- splitters_s[separator] = splitter
- else
- local other = lpeg.C((1 - separator)^0)
- splitter = other * (separator * other)^0
- splitters_m[separator] = splitter
- end
- end
- return splitter
-end
-
-file = fpath
-file.extname = fpath.suffix
-
-function table.compact(t)
- if t then
- for k,v in next, t do
- if not next(v) then
- t[k] = nil
- end
- end
- end
-end
-
-function table.sortedhashkeys(tab) -- fast one
- local srt = { }
- for key,_ in next, tab do
- srt[#srt+1] = key
- end
- table.sort(srt)
- return srt
-end
-
--- 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 theuir work.
-
-luaotfload.loadmodule('luat-dum.lua') -- not used in context at all
-luaotfload.loadmodule('luat-con.lua') -- maybe some day we don't need this one
-
--- We do need some basic node support although the following
--- modules contain a little bit of code that is not used. It's
--- not worth weeding.
-
-luaotfload.loadmodule('node-ini.lua')
-
--- function to set the good attribute numbers, they are not arbitrary values
--- between 127 and 255 like in the ConTeXt base code
-
-function attributes.private(name)
- local number = tex.attributenumber['otfl@'..name]
- if not number then
- luatextra.module_error('luaotfload', string.format('asking for attribute %s, but not declared. Please report to the maintainer of luaotfload.', name))
- end
- return number
-end
-
-luaotfload.loadmodule('node-inj.lua') -- will be replaced (luatex > .50)
-luaotfload.loadmodule('node-fnt.lua')
-luaotfload.loadmodule('node-dum.lua')
-
--- Now come the font modules that deal with traditional TeX fonts
--- as well as open type fonts. We don't load the afm related code
--- from font-enc.lua and font-afm.lua as only ConTeXt deals with
--- it.
---
--- 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 genate this file (using the --names
--- option).
-
-luaotfload.loadmodule('font-ini.lua')
-luaotfload.loadmodule('font-tfm.lua') -- will be split (we may need font-log)
---luaotfload.loadmodule('font-ott.lua') -- might be split
-luaotfload.loadmodule('font-otf.lua')
-luaotfload.loadmodule('font-otb.lua')
-luaotfload.loadmodule('font-cid.lua')
-luaotfload.loadmodule('font-otn.lua')
-luaotfload.loadmodule('font-ota.lua') -- might be split
-luaotfload.loadmodule('font-otc.lua')
-do
- local temp = callback.register
- callback.register = function (...)
- return
- end
- luaotfload.loadmodule('font-def.lua')
- callback.register = temp
-end
-luaotfload.loadmodule('font-xtx.lua')
-luaotfload.loadmodule('font-dum.lua')
-
--- small patch
-fonts.enc.known = {}
-
-function luaotfload.register_callbacks()
- callback.add('ligaturing', nodes.simple_font_dummy, 'luaotfload.ligaturing')
- callback.add('kerning', nodes.simple_font_dummy, 'luaotfload.kerning')
- callback.add('pre_linebreak_filter', nodes.simple_font_handler, 'luaotfload.pre_linebreak_filter')
- callback.add('hpack_filter', nodes.simple_font_handler, 'luaotfload.hpack_filter')
- callback.reset('define_font')
- callback.add('define_font' , fonts.define.read, 'luaotfload.define_font', 1)
-end
-
-function luaotfload.unregister_callbacks()
- callback.remove('ligaturing', 'luaotfload.ligaturing')
- callback.remove('kerning', 'luaotfload.kerning')
- callback.remove('pre_linebreak_filter', 'luaotfload.pre_linebreak_filter')
- callback.remove('hpack_filter', 'luaotfload.hpack_filter')
- callback.remove('define_font', 'luaotfload.define_font')
-end