[XeTeX] Typographic consistency (was: CJK and ideographic font names)

Jonathan Kew jonathan_kew at sil.org
Mon Sep 13 21:58:27 CEST 2004


On 13 Sep 2004, at 3:05 pm, Ross Moore wrote:

>>>   2.  Your source needed to be adjusted to replace gobbled spaces:
>>>       e.g.         \textipa{N\^O Oi lêi}
>>>       must become  \textipa{N\^O\ Oi lêi}
>>>
>>>   3.  the \oldstylenums  still uses CM fonts.
>>>       I used Hoefler Text  in this example; what font is better ?
>>>
>>>
>>> Jonathan, the gobbled-spaces are due to making letters have
>>> an active \catcode , I think.
>>
>> That's a bit odd. Merely making them active shouldn't cause 
>> space-gobbling; I wonder if we can fix this by adjusting what the 
>> active letters expand to.
>
> Yep; you're right.
> I've already found a solution.
>
> The gobbling seems to be ultimately due to \char .
> All (well mostly) the macros in  utf8accents.sty  expand
> to give  \char"xxxx .
> When the next token is a space, this gets gobbled.

Yes, it would: standard TeX scanning rules say that it will consume one 
(optional) space after a number. When the \char.... that results from 
the utf8accents macros actually reads its argument, it will quite 
happily read beyond the digits that were part of the same macro 
definition. In fact, if the next thing happened to be another digit, 
you'd get a completely different character!

>
> So I've appended an extra \relax  in some cases.
> Now the space is preserved and results in the correct
> word-separating space.

I believe the most efficient thing to do is to explicitly include the 
optional space in the macro, but that can look rather odd, so I would 
often prefer \relax. Any macro whose expansion ends with a number that 
TeX will scan for its numeric value may need this kind of precaution. 
You might want to add \relax (or space) in all cases, not just some.

JK



More information about the XeTeX mailing list