The following minimal example used to work fine: \starttypescript [serif] [zhfonts] \definefontsynonym [Serif] [name:nsimsun] \stoptypescript \starttypescript [zhfonts] \definetypeface [zhfonts] [rm] [serif] [zhfonts] \stoptypescript \usetypescript [zhfonts] \setupbodyfont [zhfonts, rm, 11pt] \starttext 测试 \stoptext 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?
On 9/25/2014 10:50 AM, Hongwen Qiu wrote:
The following minimal example used to work fine: \starttypescript [serif] [zhfonts] \definefontsynonym [Serif] [name:nsimsun] \stoptypescript
\starttypescript [zhfonts] \definetypeface [zhfonts] [rm] [serif] [zhfonts] \stoptypescript
\usetypescript [zhfonts] \setupbodyfont [zhfonts, rm, 11pt]
\starttext
测试
\stoptext
but it's no longer the case.
is it context or the binary? ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On 9/25/2014 10:50 AM, Hongwen Qiu wrote:
The following minimal example used to work fine: \starttypescript [serif] [zhfonts] \definefontsynonym [Serif] [name:nsimsun] \stoptypescript
\starttypescript [zhfonts] \definetypeface [zhfonts] [rm] [serif] [zhfonts] \stoptypescript
\usetypescript [zhfonts] \setupbodyfont [zhfonts, rm, 11pt]
\starttext
测试
\stoptext
but it's no longer the case.
is it context or the binary? Don't know which one changed that caused the above example to fail. I havn't used nsimsun for months, and indeed the above code used to run
在 2014年09月25日 18:50, Hans Hagen 写道: properly. Just heard from someone that it works in the current but not in the beta. In my opinion, it's much easier to change the context code to fix this problem (about 2 line lua code), but maybe tweaking with the luatex code is the way that should be done. I don't know anything about font format. In the luatex code, a comment said that PLRM only support ASCII fontnames. I suppose PLRM is short for PostScript Language Reference. I have a quick glance of the 3rd edition of PLRM, and only find that fontname have this explanation: "(Optional) The name of the font. This entry is for information only; it is not used by the PostScript interpreter. Ordinarily, it is the same as the key passed to definefont , but it need not be." I noticed that font can have multiple fotnames, each for a lang, just as I posted in the previous message that there're 3 fontnames for index 1 of simsun.ttc. And many other Unicode fonts have non ASCII font names for lang other than 0 too. Just enable the warning message when loading font, and I noticed a lot of arabic font in the Linux box have Arabic font names. So I don't think that context (or luatex) should refuse to work when font have non-ASCII fontnames. Currently there're other font related bugs that I'd wish getting fixed too. I'm currently trying to find out why typesetting with sourcehansanscn will cause some glyphs to disapper. e.g. the following code should typeset two glyphs "理" and "论". But the "理" just get deleted from the output. \starttypescript [serif] [zhfonts] \definefontsynonym [Serif] [name:sourcehansanscn] \stoptypescript \starttypescript [zhfonts] \definetypeface [zhfonts] [rm] [serif] [zhfonts] \stoptypescript \usetypescript [zhfonts] \setupbodyfont [zhfonts, rm, 11pt] \starttext 理论 \stoptext FYI. this font can display "理", when I use libreOffice. I have no clue how to debug this problem. So some advice about debugging this kind of problem is helpful if you're busy to debug the problem. I'd glad to find out the reason why it won't work myself. By the way, I belived that something like \definefontsynonym [Serif] [sourcehansanscn] used to load sourcehansanscn correctly but you must prefix it with name: now, otherwise it won't load any font.
On 9/26/2014 4:06 AM, Hongwen Qiu wrote:
Don't know which one changed that caused the above example to fail. I havn't used nsimsun for months, and indeed the above code used to run properly. Just heard from someone that it works in the current but not in the beta.
It has to do with the fact that the loader reports an issue. For this font that report can be ignored. I extended the code that deals with the report with additional checking so it should work ok with the nexct beta. We still report the warning, just to be sure. Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Hongwen Qiu