summaryrefslogtreecommitdiff
path: root/VP-textwork.lua
diff options
context:
space:
mode:
Diffstat (limited to 'VP-textwork.lua')
-rw-r--r--VP-textwork.lua38
1 files changed, 34 insertions, 4 deletions
diff --git a/VP-textwork.lua b/VP-textwork.lua
index 2d3f56c..c7bc9af 100644
--- a/VP-textwork.lua
+++ b/VP-textwork.lua
@@ -1,3 +1,9 @@
+function get_next_char(script)
+ local c = script:readU8()
+ if c >= 0x80 then c = (c - 0x80) + (script:readU8() * 128) end
+ return c
+end
+
function get_next_utf8(str)
local ret = ""
local n
@@ -86,14 +92,38 @@ function dump_special(script, code)
error "Should not end up there"
end
+function dump_special2(script, code)
+ if code == 0 then
+ return "\n", "\n"
+ elseif code == 1 then
+ return "\n<new/>\n", "\n"
+ else
+ local a1, a2
+ if code == 3 or code == 5 or code == 7 or code == 8 or code == 9 or code == 12 or code == 13 or code == 14 or code == 15 or code == 21 then
+ a1 = script:readU8()
+ return '<u1 c="' .. code .. '" a="' .. a1 .. '"/>', ""
+ elseif code == 20 then
+ a1 = script:readU8()
+ a2 = script:readU8()
+ return '<u2 c="' .. code .. '" a1="' .. a1 .. '" a2="' .. a2 .. '"/>', ""
+ else
+ return '<uk c="' .. code .. '"/>', ""
+ end
+ end
+ error "Should not end up there"
+end
+
function extract_char(script, lookup)
- local
- c = script:readU8()
+ local c = get_next_char(script)
if c == 0 then return nil end
- if c >= 0x80 then c = (c - 0x80) + (script:readU8() * 128) end
if c >= 0x4000 then
- return dump_special(script, c - 0x4000)
+ local code = c - 0x4000
+ if second_style_script then
+ return dump_special2(script, code)
+ else
+ return dump_special(script, code)
+ end
else
local l = lookup[c]
if not l and not sloppy_extract then error("Lookup failed for character " .. c) end