[XeTeX] Fwd: [tex-live] XeTeX or xdvipdfmx Broken on Mac

Simon Cozens simon at simon-cozens.org
Mon Apr 27 05:57:01 CEST 2015


On 26/04/2015 23:18, Zdenek Wagner wrote:
> I pushed a fix in r37053, both ITF Devanagari and Kohinoor Devanagari
> works for me now.

I'm still seeing problems with Kohinoor Devanagari, even after the two
recent commits.

The problem I'm getting is that I'm looking for Kohinoor Devangari
Light, which is index 4 in the cabinet.

At cidtype0.c:746, offset is 924, so cidtype0 calls cff_open(stream,
924, 4).

However, after reading the index of the TTC with "idx =
cff_get_index(cff)", (cff.c:105) idx->count is 1. This can't be right,
as there are definitely 4 fonts in the cabinet. We try to access index
n=4, and that's higher than idx->count so dvipdfmx blows up.

What I guess is happening is that, having gone to the right offset, you
are now looking at a font (Kohinoor Devangari Light) within the cabinet.
>From the point of view of that font, there are no subfonts, so index 4
is meaningless, and perhaps instead you should be calling
cff_open(stream, offset, 1). (This is only a guess.)

There is something else which looks suspicious as well - in
CIDFont_type0_dofont we now have the code:

  if (sfont->type == SFNT_TYPE_TTC)
    offset = ttc_read_offset(sfont, CIDFont_get_opt_index(font));

  if ((sfont->type != SFNT_TYPE_TTC && sfont->type !=
SFNT_TYPE_POSTSCRIPT) ||
      sfnt_read_table_directory(sfont, offset) < 0)
    ERROR("Not a CFF/OpenType font (1)?");
  offset = sfnt_find_table_pos(sfont, "CFF ");

So offset is being read by ttc_read_offset for TTC fonts, and then it is
being unconditionally reassigned by snft_find_table_pos. That might be
right, but it's different to how the font is being loaded in
CIDFont_type0_open.

Simon


More information about the XeTeX mailing list