From 85b7bc695629926641c7cb752fd478adfdf374f3 Mon Sep 17 00:00:00 2001 From: Marius Date: Sun, 4 Jul 2010 15:32:09 +0300 Subject: stable 2010-05-24 13:10 --- tex/context/base/node-typ.lua | 53 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 tex/context/base/node-typ.lua (limited to 'tex/context/base/node-typ.lua') diff --git a/tex/context/base/node-typ.lua b/tex/context/base/node-typ.lua new file mode 100644 index 000000000..5ab6b6975 --- /dev/null +++ b/tex/context/base/node-typ.lua @@ -0,0 +1,53 @@ +if not modules then modules = { } end modules ['node-typ'] = { + version = 1.001, + comment = "companion to node-ini.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- this will be replaced by blob-ini cum suis so typesetting will go away + +local utfvalues = string.utfvalues + +local newglyph = nodes.glyph +local newglue = nodes.glue + +local hpack, vpack = node.hpack, node.vpack + +typesetting = typesetting or { } + +local function tonodes(str,fontid,spacing) -- don't use this + local head, prev = nil, nil + for s in utfvalues(str) do + local next + if spacing and s == 32 then + next = newglue(spacing or 64*1024*10) + else + next = newglyph(fontid or 1,s) + end + if not head then + head = next + else + prev.next = next + next.prev = prev + end + prev = next + end + return head +end + +typesetting.tonodes = tonodes + +function typesetting.hpack(str,fontid,spacing) + return hpack(tonodes(str,fontid,spacing)) +end + +function typesetting.vpack(str,fontid,spacing) + -- vpack is just a hack, and a proper implentation is on the agenda + -- as it needs more info etc than currently available + return vpack(tonodes(str,fontid,spacing)) +end + +--~ node.write(typesetting.hpack("Hello World!")) +--~ node.write(typesetting.hpack("Hello World!",1,100*1024*10)) -- cgit v1.2.3