[XeTeX] XeTeX 0.99 released

Jonathan Kew jonathan_kew at sil.org
Wed Dec 7 14:02:57 CET 2005

On 7 Dec 2005, at 12:08 pm, Adam Lindsay wrote:

> Jonathan Kew wrote:
>> It's close, I think, though I am still thinking about a couple of   
>> items.... First, an extended font-loading command that might be   
>> something like:
>>    \XeTeXfont\cs = "font-name" style "B/S=10" using ICU features   
>> "+smcp,+onum" at 12pt
>>    \XeTeXfont\cs = "font-name" style "BI" using ATSUI features   
>> "Ligatures=Rare Ligatures" at 12pt
> Interesting stuff. May I think/question aloud about the design?

Indeed you may. :)

> When queried, which form would XeTeX return as the font name? The  
> compact (current) form? Verbose form? Form that was entered by the  
> user?

I've wondered about that too. I think it would be desirable that

   \font\x = "Hoefler Text/I:Ligatures=Rare Ligatures"


   \XeTeXfont\y = "Hoefler Text" style "I" using ATSUI features  
"Ligatures=Rare Ligatures"

should show identical results, just as loading either "Hoefler Text/ 
I" and "Hoefler Text Italic" already do, as they're merely different  
ways of asking for the exact same thing.

(Compare "\font\x=cmr10 scaled \magstep1" and "\font\y=cmr10 at  
12pt"; you can't tell from the resulting font selector which  
construction was used, and they will in fact end up referring to the  
exact same internal TeX font number, so they'll be the same font in  
the DVI file.)

I think I'm inclined to maintain existing the behavior of \show and  
\fontname, which means they'd use the "compact" form. This is less  
likely to trip up macros that expect to parse the \fontname, for  
example. The trouble with this, of course, is that there might be  
cases where the compact name is not actually usable to re-load the  
font (e.g., if the name contains characters that XeTeX will  
misinterpret when re-parsing a compact font name into its  
constituents). That's one of the motivations for considering the more  
explicit form.

One answer to that would be a new \XeTeXfontname primitive, which  
would output a "long form" specification suitable for reloading via  
\XeTeXfont. It's probably less important what \show or \meaning  
produces, except that they are consistent, as I doubt they'd be used  
in the same way as the basis for creating a new font specification.

You have any thoughts on this? Does it seem like a worthwhile thing  
to pursue?

> I guess I'm still wondering if it's possible to dynamically add  
> (and subtract?) features to the current font, without a priori  
> knowledge.

This is tricky, as it modifies the meaning of a font selector on-the- 
fly, which effectively means creating a new font even though the user  
may think they're just changing the attributes of an existing one. It  
would have to allocate a new font number internally in TeX, so it  
doesn't save any TeX resources as compared with loading a "new" font  
with the new selection of features. But it might well be much easier  
for the user (or macro developer) than retrieving the current font  
name and features in order to modify them and load a new font.

I can imagine something like:

   \XeTeXadjustfeatures\myfontselector "Ligatures=Rare  
Ligatures;Numerals=Oldstyle Numerals"

or for the OpenType variety:

   \XeTeXadjustfeatures\myfontselector "+smcp,-liga"

but I'll need to think some more about what it would involve to  
actually implement this.

It's also occurred to me, by the way, that we probably want an  
\ifXeTeXnativefont test that lets you know whether extensions such as  
\XeTeXglyph, \XeTeXcharglyph, \XeTeXadjustfeatures (potentially),  
etc., are usable with a given font selector.


More information about the XeTeX mailing list