On Thu, 6 Jul 2023 at 08:04, Max Chernoff <mse...@telus.net> wrote: > Hi Luigi, > > I've attached a series of font-related patches. > > Patch 1: > > Even if you set "tounicode = 1" at the top level of a font, "tounicode = > <something>" for each character, and run "pdf.setgentounicode(1)", > LuaTeX will only write out a /ToUnicode entry if the document uses > "\pdfextension glyphtounicode" somewhere. > > A minimal(-ish) example: > > % \pdfextension glyphtounicode{fake!}{0000} > > \newcount\fontid > \directlua{ > local height = tex.sp("8bp") > local width = tex.sp("36bp") > > pdf.setgentounicode(1) > > local inner = font.define { > name = "fake-font-inner", > parameters = {}, > properties = {}, > encodingbytes = 0, > psname = "none", > tounicode = 1, > characters = { > [1] = { > width = width, > height = height, > depth = 0, > tounicode = { 0x1f986 }, > } > } > } > > tex.count.fontid = font.define { > name = "fake-font-virtual", > parameters = {}, > properties = {}, > characters = { > [string.byte"x"] = { > width = width, > height = height, > depth = 0, > commands = { > { "slot", 1, 1 } > } > > } > }, > type = "virtual", > fonts = {{ id = inner }}, > } > > callback.register( > "provide_charproc_data", > function (mode, font_id, slot) > if mode == 2 then > return pdf.immediateobj("stream", "36 0 d0 0 0 36 8 re > f"), 36 > elseif mode == 3 then > return 1 / 10 > end > end > ) > } > > x{\setfontid\fontid x}x > > \bye > > You would expect that copying the black box would give you a duck, but > this only happens if the first line is uncommented. The first patch > should fix this. > > (sorry for the long delay) Iiuc, the problem is that in this case glyph_unicode_tree is NULL ( \pdfextension glyphtounicode{fake!}{0000} create a new glyph_unicode_tree if is the case, by mean of def_tounicode). So perhaps it's better if we export a new function glyph_unicode_new(void) at the lua level that allocate ,if the case, a new glyph_unicode_tree, leaving do_write_tounicode as is now.
-- luigi
_______________________________________________ dev-luatex mailing list -- dev-luatex@ntg.nl To unsubscribe send an email to dev-luatex-le...@ntg.nl