[dev-context] tex-text (XeTeX) & trep, tlig (LuaTeX)

Hans Hagen pragma at wxs.nl
Wed Dec 5 12:18:14 CET 2007


Mojca Miklavec wrote:

> I compared tex-text and trep, tlig. Since you map features=default to
> trep and tlig, and both of them further to tex-text (twice), tex-text
> could be split in two parts as well, so that you can make one-to-one
> mapping.

there is a difference here vetween xetex and luatex

> Should I make those changes and seny you the two files? (Twice 300
> bytes to be added to ConTeXt + souce, which is approximately the same
> as written below.)

first i need to understand the problem; actually i'm even thinking of 
not defaulting (in luatex) the mapping other than -- and --- because 
they are (1) not sensible and (2) users shoul duse quotation commands 
and/or (3) use the proper utf codes

> 1.) TREP
> 
> function fonts.initializers.base.otf.texquotes(tfm,value)
>     tfm.characters[0x0022] = table.fastcopy(tfm.characters[0x201D])
>     tfm.characters[0x0027] = table.fastcopy(tfm.characters[0x2019])
>     tfm.characters[0x0060] = table.fastcopy(tfm.characters[0x2018])
> end
> 
> Corresponding lines from XeTeX:
> 
> U+0022;  ;  ;   >;U+201D;  ; " -> right double quote
> U+0027;  ;  ;  <>;U+2019;  ; ' -> right single quote
> U+0060;  ;  ;  <>;U+2018;  ; ` -> left single quote

these i hate most, and personally never use them ... if i key in a char 
explicitly i want that char and not another

> 2.) TLIG
> 
> { "endash", "hyphen hyphen" },
> U+002D U+002D; ;  ;  <>;U+2013;  ; -- -> en dash
> 
> { "emdash", "hyphen hyphen hyphen" },
> U+002D U+002D U+002D;<>;U+2014;  ; --- -> em dash
> 
> { "quotedblright", "quotesingle quotesingle" },
> U+0027 U+0027; <>;U+201D;  ; '' -> right double quote
> 
> { "quotedblleft", "grave grave" },
> U+0060 U+0060; <>;U+201C;  ; `` -> left double quote
> 
> { "quotedblbase", "comma comma" }
> U+002C U+002C; <>;U+201E;  ; ,, -> DOUBLE LOW-9 QUOTATION MARK
> 
> missing from tex-text (not needed so far)

actually there's even space + something becomes something else

> { "quotedblleft", "quoteleft quoteleft" },
> 0x2018 0x2018 <> 0x201C ; 2x left single quote -> left double quote
> 
> { "quotedblright", "quoteright quoteright" },
> 0x2019 0x2019 <> 0x201D ; 2x right single quote -> right double quote

and then those spanish ...

> 3.) Only in XeTeX's tex-text (Do people need it?):
> 
> U+0021 U+0060; <>;U+00A1;  ; !` -> inverted exclam
> U+003F U+0060; <>;U+00BF;  ; ?` -> inverted question
> 
> U+003C U+003C; <>;U+00AB;  ; << -> LEFT POINTING GUILLEMET
> U+003E U+003E; <>;U+00BB;  ; >> -> RIGHT POINTING GUILLEMET

let's get rid of it

> Plus, there's a little problem with this patch that I have sent you
> (it's not in stable yet, so it might make sense to fix it before
> releasing):
> 
> \definefontsynonym[Dummy]          [name:\typescripttwo]   [features=default]
> \definefontsynonym[DummyItalic]    [name:\typescripttwo/I] [features=default]
> \definefontsynonym[DummyBold]      [name:\typescripttwo/B] [features=default]
> \definefontsynonym[DummyBoldItalic][name:\typescripttwo/BI][features=default]
> 
> \definefontsynonym[DummyCaps]      [name:\typescripttwo]   [features=smallcaps]

i'd like to let caps and such go away completely for mkiv so maybe we 
end up with xetex defs versus luatex defs; i wonder if in practice users 
will use both at the same time (ok, you do)

> The problem is that "features=default" implies "script=latn", which is
> not always desired. A copy of mapping=tex-text comes from tlig & trep
> substitution.

we can fall back to dflt which in practice boils down to latn

> I assume that script=latn;language=dflt;+liga;+kern; is always on by
> default (were needed), so basically mapping=tex-text is the only thing
> that really needs to be added.

well, i'd prefer ... only -- and --- and make anything else up to the 
user, which means, redefining default in cont-sys if needed

> [Iwona-Bold.otf]:script=latn;language=dflt;+liga;+kern;mapping=tex-text;mapping=tex-text;

two mappings?

> 
> Some (non-latin) fonts complain when one requests non-existing features.

in xetex you mean?

> Also, it might be handy to be able to define
>     \definetypeface[basic][rm][Xserif][whatever][script=arab,language=...]
> (for now forget that one, interface needs to be extended once and properly).
> 
> 
>     \definefontsynonym[a][file:Iwona-Bold.otf][mapping=tex-text]
> doesn't work, so the only way seems to be
>     \definefontfeature[xetex][mapping=tex-text]
>     \definefontsynonym[a][file:Iwona-Bold.otf][xetex]
> 
> I have tried to use
>     \definefontfeature[xetex][mapping=tex-text]
>     \definefontfeature[caps][+smcp]
>     \definefontsynonym[a][file:Iwona-Bold.otf][features={xetex,caps}]
> but that didn't work.

indeed, handling comma separated lists is too slow there .. ok, we can 
do it for xetex and in luatex use lua for it ... or i could hash the 
commalist itself ... needs a bit of thinking but eventually we need to 
be able to combine features (this even more points into a separate 
definition file for xetex)

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
      tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the dev-context mailing list