diff options
author | Hans Hagen <pragma@wxs.nl> | 2010-09-09 23:45:00 +0200 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2010-09-09 23:45:00 +0200 |
commit | cf3f5ed936ab0e84942af2e69862db6941c58d0f (patch) | |
tree | 195b942015faff3d0c03d0d1627185320e002548 /tex/context/base/font-ldr.lua | |
parent | 536e4dd4fe2e98c3cefdb9741507c20f4489e2c0 (diff) | |
download | context-cf3f5ed936ab0e84942af2e69862db6941c58d0f.tar.gz |
beta 2010.09.09 23:45
Diffstat (limited to 'tex/context/base/font-ldr.lua')
-rw-r--r-- | tex/context/base/font-ldr.lua | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tex/context/base/font-ldr.lua b/tex/context/base/font-ldr.lua new file mode 100644 index 000000000..ca4e3f98a --- /dev/null +++ b/tex/context/base/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 a replacement for fontloader.to_table +-- and will be loaded in due time. + +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 |