the following lua code is just a simple demo of TrueType&OpenType font load process for myself use. and I've found that it can't work with some OTF files recently. for example: AdobeSongStd-Light.otf. but it's ok when I try to load the TrueType font for example: SimHei.ttf callback.register('define_font', function(name, size) filename=kpse.find_file(name,"truetype fonts") if (filename) then ttffont = fontforge.to_table(fontforge.open(filename)) if ttffont then f = { } f.name = ttffont.fontname f.fullname = ttffont.names[1].names.fullname f.size = size f.characters = {} for char, glyph in pairs(ttffont.map.map) do glyph_table = ttffont.glyphs[glyph] f.characters[char] = { index = glyph, width = glyph_table.width * size/ttffont.units_per_em, name = glyph_table.name, } end f.filename = filename f.type = 'real' f.format = 'truetype' f.cidinfo = { registry = "Adobe", ordering = "Identity", supplement = 0, version = 1 } end else f = font.read_tfm(name, size) end return f end ) } and luatex give me the error: ! LuaTeX error <\directlua0>:1: attempt to index field 'map' (a nil value). I doubt maybe the OpenType file support in the fontforge is broken now. Can anyone help to check this ?