On Fri, Jun 2, 2017 at 1:39 PM, Mikael P. Sundqvist <mic...@gmail.com> wrote:
> On Fri, Jun 2, 2017 at 11:39 AM, Mathias Schickel
> <m...@fa.uni-tuebingen.de> wrote:
>> Hi Mikael,
>>
>> math fonts are a bit different from text fonts. This means that you need 
>> special methods to influence them. Because I once had a similar concern like 
>> you I asked Hans to implement a way to influence kerning in math fonts 
>> between certain glyphs. I have attached an lfg-file that shows how to use it.
>>
>> To enable a goodie file like the one attached you have to define your 
>> typescript like
>>
>> \starttypescript [\s!math][cambriaown][\s!all]
>>         \loadfontgoodies[cambriaown-math]
>>         \definefontsynonym[\s!MathRoman]        [Cambria-Math]               
>>    
>> [\s!features={\s!math\mathsizesuffix},\s!designsize=\s!auto,\s!goodies=cambriaown-math]
>> \stoptypescript
>>
>> I hope this helps!
>>
>> Best
>> Mathias
>>
>>
>>
>>
>>
>>> Am 02.06.2017 um 10:59 schrieb Mikael P. Sundqvist <mic...@gmail.com>:
>>>
>>> Hi!
>>>
>>> Now that the bug with primes is fixed in ConTeXt, I wonder if there is
>>> a way to change the kerning between certain characters in mathematics
>>> (in case one is not happy with the output from the font)? After
>>> reading in fonts-mkiv.pdf this is what I came up with:
>>>
>>> \startluacode
>>> fonts.handlers.otf.addfeature {
>>> name = "kerntest",
>>> type = "kern",
>>> data = {
>>> [0x61] = { [0x62] = -150 }, -- a and b in text
>>> [0x1d44e] = { [0x1d44f] = -150 }, -- mathematical italic small a and b
>>> [0x02032] = { [0x00028] = -150 }, -- prime and left parenthesis
>>> }
>>> }
>>> \stopluacode
>>>
>>> \definefontfeature[kerntest][kerntest=yes]
>>>
>>> \definefontfamily[lucidaopentype][rm][Lucida Bright OT]
>>> \definefontfamily[lucidaopentype][mm][Lucida Bright Math OT]
>>>
>>> \setupbodyfont[lucidaopentype,10pt]
>>>
>>>
>>> \startTEXpage[offset=3pt]
>>> abba $abba f'(x)$
>>>
>>> \addff{kerntest}
>>>
>>> abba $abba f'(x)$
>>>
>>> I prefer $f'\mkern-3mu(x)$
>>> \stopTEXpage
>>>
>>> The output is attached as a png file. As you see the kerning works as
>>> expected in text mode, but not at all in math mode, even not for the a
>>> and b (which I hope I entered correctly).
>>>
>>> Something like the third line is what I'm after, but not having to use
>>> \mkern in all places. Is it possible?
>>>
>>> /Mikael
>>>
>>> PS: This is a cross post of the question
>>> https://tex.stackexchange.com/q/372857/52406, where I got the
>>> suggestion to ask on the list.
>>> <ctx-example20.png>___________________________________________________________________________________
>>> If your question is of interest to others as well, please add an entry to 
>>> the Wiki!
>>>
>>> maillist : ntg-context@ntg.nl / 
>>> http://www.ntg.nl/mailman/listinfo/ntg-context
>>> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
>>> archive  : https://bitbucket.org/phg/context-mirror/commits/
>>> wiki     : http://contextgarden.net
>>> ___________________________________________________________________________________
>>
>>
>> ___________________________________________________________________________________
>> If your question is of interest to others as well, please add an entry to 
>> the Wiki!
>>
>> maillist : ntg-context@ntg.nl / 
>> http://www.ntg.nl/mailman/listinfo/ntg-context
>> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
>> archive  : https://bitbucket.org/phg/context-mirror/commits/
>> wiki     : http://contextgarden.net
>> ___________________________________________________________________________________
>
> Thank you very much for your reply, Mathias!
>
> I'm not sure I get it, though. I find that there is already a file
> lucida-opentype-math.lfg in the distribution.
>
> Just experimenting, I added to this file an entry with kernpairs (see
> below), to see if I could make a change with a and b (if I cannot
> manage that, I don't see how I could get the prime and parenthesis
> case to work).
>
> %%% start of my new lucida-opentype-math.lfg
> ----- kern_250 = { bottomright = { { kern = -250 } }, force = true }
>
> return {
>     name = "lucida-opentype-math",
>     version = "1.00",
>     comment = "Goodies that complement lucida opentype.",
>     author = "Hans Hagen",
>     copyright = "ConTeXt development team",
>     mathematics = {
>         alternates = {
>             italic       = { feature = 'ss01', value = 1, comment =
> "Mathematical Alternative Lowercase Italic" },
>             arrow        = { feature = 'ss02', value = 1, comment =
> "Mathematical Alternative Smaller Arrows" },
>             operator     = { feature = 'ss03', value = 1, comment =
> "Mathematical Alternative Smaller Operators" },
>             calligraphic = { feature = 'ss04', value = 1, comment =
> "Mathematical Alternative Calligraphic Characters" },
>             zero         = { feature = 'ss05', value = 1, comment =
> "Mathematical Alternative Zero" },
>             partial      = { feature = 'ss20', value = 1, comment =
> "Mathematical Alternative Upright Partial Differential" },
>         },
>      -- kerns = {
>      --     [0x1D449] = kern_250, --
>      --     [0x1D44A] = kern_250, -- 𝑊
>      -- },
>         kernpairs = {
>            [0x1D44E] =    {      -- a
>                [0x1D44F] = -200,} -- b
>         },
>         dimensions = {
>             default = { -- experimental values
>                 [0x2044] = { xoffset = 275, width = 600 },
> --                 [0x2032] = { yoffset = -10 },
>             },
>         },
>     },
> }
> %%% end of lucida-opentype-math.lfg
>
> but in the output of
>
> \setupbodyfont[lucidaot,10pt]
> \startTEXpage[offset=3pt]
> $ab$
> \stopTEXpage
>
> I see no changes in the spacing between a and b.
>
> Any ideas?
>
> /Mikael

If I change the dimensions tag in the lucida-opentype-math.lfg into

        dimensions = {
            default = { -- experimental values
                [0x2044] = { xoffset = 275, width = 600 },
                [0x2032] = { xoffset = 40, width = 290 }, -- prime
                [0x2033] = { xoffset = 40, width = 690 }, -- double prime
                [0x2034] = { xoffset = 40, width = 1090 }, -- triple prime
                [0x2057] = { xoffset = 40, width = 1490 }, -- quadruple prime
--                 [0x2032] = { yoffset = -10 },
            },

I get something that looks better (look at the attached pdf file). But
I don't know the side-effects of changing the offset and with of
glyphs like that. It might break something at some other place, I
guess.

Hans, is there a way to work only on the pair between the prime and
the parenthesis?

/Mikael

Attachment: ctx-example21.pdf
Description: Adobe PDF document

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to