From 8d8d528d2ad52599f11250cfc567fea4f37f2a8b Mon Sep 17 00:00:00 2001 From: Context Git Mirror Bot Date: Tue, 12 Jan 2016 17:15:07 +0100 Subject: 2016-01-12 16:26:00 --- tex/context/base/mkiv/font-ldr.lua | 70 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 tex/context/base/mkiv/font-ldr.lua (limited to 'tex/context/base/mkiv/font-ldr.lua') diff --git a/tex/context/base/mkiv/font-ldr.lua b/tex/context/base/mkiv/font-ldr.lua new file mode 100644 index 000000000..175b4d0cc --- /dev/null +++ b/tex/context/base/mkiv/font-ldr.lua @@ -0,0 +1,70 @@ +if not modules then modules = { } end modules ['font-ldr'] = { + version = 1.001, + comment = "companion to font-ini.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- This module provides an experimental replacement for fontloader.to_table +-- but is not used that much. + +local fields = fontloader.fields + +if fields then + + local glyphfields + + local function get_glyphs(r) + local t = { } + local g = r.glyphs + for i=1,r.glyphmax-1 do + local gi = g[i] + if gi then + if not glyphfields then + glyphfields = fields(gi) + end + local h = { } + for i=1,#glyphfields do + local s = glyphfields[i] + h[s] = gi[s] + end + t[i] = h + end + end + return t + end + + local function to_table(r) + local f = fields(r) + if f then + local t = { } + for i=1,#f do + local fi = f[i] + local ri = r[fi] + if not ri then + -- skip + elseif fi == "glyphs" then + t.glyphs = get_glyphs(r) + elseif fi == "subfonts" then + t[fi] = ri + ri.glyphs = get_glyphs(ri) + else + t[fi] = r[fi] + end + end + return t + end + end + + -- currently glyphs, subfont-glyphs and the main table are userdata + + function fonts.to_table(raw) + return to_table(raw) + end + +else + + fonts.to_table = fontloader.to_table + +end -- cgit v1.2.3