diff options
Diffstat (limited to 'macros/luatex/generic/luaotfload/luaotfload-t3.lua')
-rw-r--r-- | macros/luatex/generic/luaotfload/luaotfload-t3.lua | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/macros/luatex/generic/luaotfload/luaotfload-t3.lua b/macros/luatex/generic/luaotfload/luaotfload-t3.lua deleted file mode 100644 index 215ba4b918..0000000000 --- a/macros/luatex/generic/luaotfload/luaotfload-t3.lua +++ /dev/null @@ -1,142 +0,0 @@ ------------------------------------------------------------------------ --- FILE: luaotfload-t3.lua --- DESCRIPTION: part of luaotfload / Type 3 ------------------------------------------------------------------------ -do -- block to avoid to many local variables error - assert(luaotfload_module, "This is a part of luaotfload and should not be loaded independently") { - name = "luaotfload-t3", - version = "3.22", --TAGVERSION - date = "2022-06-15", --TAGDATE - description = "luaotfload submodule / Type 3 font handling", - license = "GPL v2.0", - author = "Marcel Krüger", - copyright = "Luaotfload Development Team", - } -end - ---[[ -local function u8_to_utf16be(s) - local d = {} - local i = 0 - for _, cp, cp2 in utf8.codes(s) do - i = i + 1 - if cp > 0x10000 then - cp = cp - 0x10000 - local high = (cp>>10) | 0xD800 - local low = (cp&0x3FF) | 0xDC00 - d[i] = string.format('%04X%04X', high, low) - else - d[i] = string.format('%04X', cp) - end - end - return table.concat(d, '', 1, i) -end -]] - -local function t3factory(basename, designsize, callback) - local count = 0 - local gid_to_t3 = {} - local t3_to_gid = {} - return function(size) - local fids = {} - return function(gid, width, unicode) - local t3id = gid_to_t3[gid] - if not t3id then - t3id = count - count = count + 1 - gid_to_t3[gid] = t3id - t3_to_gid[t3id] = gid - end - local t3fid, t3cid = t3id >> 8, ~(t3id & 0xFF) - local fid = fids[t3fid + 1] - local fontdir = fid and font.getfont(fid) - local characters = fontdir and fontdir.characters - if not (characters and characters[t3cid]) then - characters = characters or {} - -- First create the character - local char = { - width = width, - height = 0, -- We never look at these two anyway - depth = 0, - tounicode = unicode, - } - characters[t3cid] = char - if fid then -- Font already exists - font.addcharacters(fid, { - characters = { - [t3cid] = char, - }, - }) - else - fontdir = { - name = basename .. '_' .. basesize .. '_' .. t3fid, - format = 'type3', - psname = 'none', - filename = 'not_a_real_filename', -- Can't be null to ensure reuse - fullname = basename .. basesize .. '_' .. t3fid, - characters = characters, - designsize = basesize, - size = size, - cidinfo = {}, -- Can't be null to ensure reuse - attributes = '/FontDescriptor<<\z - /Type/FontDescriptor\z - /FontName/VirtualLuaFont\z - /Flags 4\z - /ItalicAngle 0\z - >>', -- TODO: Needs work - t3_handler = function(stage, _, cid) - cid = cid and assert(t3_to_gid[(t3fid << 8) | ~cid]) - return callback(stage, cid) - end - } - fid = font.define(fontdir) - fids[t3fid + 1] = fid - end - end - vf.font(fid) - vf.char(t3cid) - end - end -end - -luatexbase.add_to_callback('provide_charproc_data', function(stage, fid, ...) - local fontdir = font.getfont(fid) - if not fontdir then error'Unknown font' end - local handler = fontdir.t3_handler - if not handler then error'Missing t3handler in Type 3 font' end - return handler(stage, fid, ...) -end, 'luaotfload.t3') - -return t3factory ---[===[ - function callback(stage, cid) - if stage == 1 then - local char = assert(characters[cid]) - local head = assert(char.head) - local resource = tex.saveboxresource(head, nil--[[attributes]], nil--[[resources]], true--[[immediate]], 0--[[mode]], nil--[[margin]]) - local name = string.format('/F%i', pdf.getxformname(resource)) - local resources = characters.resources - if resources then - characters.resources = string.format('%s %s %i 0 R', resources, name, resource) - else - characters.resources = string.format('%s %i 0 R', name, resource) - end - char.resource = name - elseif stage == 2 then - local char = assert(characters[cid]) - width = char.width/65781 - return pdf.obj{ - type = 'stream', - immediate = true, - -- objnum = - -- attr = - -- compresslevel = - string = string.format('%g 0 d0 %s Do', width, char.resource) - }, width - elseif stage == 3 then - return 65781/655360, string.format('/XObject<<%s>>', characters.resources) - end - print(stage, fid, cid) - end, - } -]===] |