The following minimal example used to work fine:
\starttypescript [serif] [zhfonts]
  \definefontsynonym [Serif] [name:nsimsun]

\starttypescript [zhfonts]
  \definetypeface [zhfonts] [rm] [serif] [zhfonts]

\usetypescript [zhfonts]
\setupbodyfont [zhfonts, rm, 11pt]




but it's no longer the case.

The font used here is 'simsun.ttc' which ships with Chinese edition Windows systems by default. When I require "name:nsimsun" as above, the TTFAddLangStr() function in the luatex code base will have the following information:
fontname lang
NSimSun   0
NSimSun  1033
新宋体       2052
That is when lang equals 0 or 1033, the fontname will be NSimSun, but when lang equals 2052, the fontname will be 新宋体, the Chinese words for NSimSun. Although the ValidatePostScriptFontName() complains about the Chinese name of this font, and set 'bad_ps_fontname' to true, luatex itself don't stop the font fromgetting the right fontname NSimSun, since it chooses ASCII names when there're multiple fontnames.

But actions["check metadata"](font-otf.lua, 1812),sets the metadata.fontname from the correct "NSimSun" to "bad-fontname-simsun", and this change causes ff_get_ttc_index() to always return -1 as the index, which caused ConTeXt to complain about the following error message before bail out:

(bad-fontname-simsun:-1)Invalid TTC index number

mtx-context     | fatal error: return code: 1

So, maybe font-otf.lua may need not change metadata.fontname and metadata.fullname if these two names are not nil?
If your question is of interest to others as well, please add an entry to the 

maillist : /
webpage  : /
archive  :
wiki     :

Reply via email to