could you tell me where can I find the document about the structure of the subfonts table ? I can't fullly understand your example code without know the exactly structure of the table.
thank you 2009/3/2 Hans Hagen <[email protected]>: > luoyi wrote: >> >> 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 ? > > it's a CID font so you need to use the subfonts table in combination with > cid vectors; you can think of the glyphs table being like like this: > > for n, subfont in pairs(yourtable.subfonts) do > for index, glyph in pairs(subfont.glyphs) do > glyphs[index] = glyph > end > end > > the relevant cid info is in a subtable in the root of the fonts > > ["cidinfo"]={ > ["ordering"]="GB1", > ["registry"]="Adobe", > ["supplement"]=5, > ["version"]=5, > }, > > Hans > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com > | www.pragma-pod.nl > ----------------------------------------------------------------- > _______________________________________________ dev-luatex mailing list [email protected] http://www.ntg.nl/mailman/listinfo/dev-luatex
