ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Rik Kabel <ConTeXt@rik.users.panix.com>
To: ntg-context@ntg.nl
Subject: Re: Adjust kern for one character
Date: Thu, 26 Dec 2019 07:41:53 -0500	[thread overview]
Message-ID: <1faba092-1c2d-d1ed-38c5-130f78da1d73@rik.users.panix.com> (raw)
In-Reply-To: <bce1a040-d1b1-9ce4-eb7a-59d52ffa9afe@rik.users.panix.com>


[-- Attachment #1.1: Type: text/plain, Size: 4912 bytes --]


On 12/23/2019 18:45, Rik Kabel wrote:
>
> On 12/22/2019 21:34, Henri Menke wrote:
>>
>>
>> On 12/23/19 3:33 PM, Henri Menke wrote:
>>> On 12/23/19 2:30 PM, Rik Kabel wrote:
>>>>
>>>> On 12/22/2019 17:40, mf wrote:
>>>>> Il 22/12/19 22:19, Rik Kabel ha scritto:
>>>>>> List,
>>>>>>
>>>>>> Is there a way in ConTeXt to adjust the left-side kern for one
>>>>>> character? The cap J in the font I am using is being set too 
>>>>>> close to
>>>>>> the preceding characters and I would rather not insert a thinspace
>>>>>> before each. (Inserting a thinspace is sufficient, but finer control
>>>>>> is welcome.)
>>>>>>
>>>>> \definecharacterspacing[distantJ]
>>>>> \setupcharacterspacing[distantJ]["004A][left=.15,alternative=1] % 
>>>>> 004A
>>>>> is the unicode hex index of letter J
>>>>> \starttext
>>>>>     normal: AJB\par
>>>>>     \setcharacterspacing[distantJ] more space on the left: AJB\par
>>>>>     \resetcharacterspacing normal again: AJB\par
>>>>> \stoptext
>>>>>
>>>> Thank you for that, Massi.
>>>>
>>>> Unfortunately, that is too blunt an instrument in this case -- in
>>>> addition to the body font where the problem exists, it works on the
>>>> heading and titling font, which does not share the problem.
>>>>
>>>> As Henri's answer hints, I was a bit unclear in my request. It is a 
>>>> kern
>>>> between a word space and the cap J that is the issue. Perhaps a font
>>>> feature file is the place to do such a thing.
>>>
>>> \startluacode
>>> fonts.handlers.otf.addfeature {
>>>       name = "kern",
>>>       type = "kern",
>>>       data = {
>>>           [" "] = {
>>>               ["J"] = 1000 % exaggerated value
>>
>> Should of course be a Lua comment
>>
>>             ["J"] = 1000 -- exaggerated value
>>
>>>           }
>>>       }
>>> }
>>> \stopluacode
>>>
>>> \setupbodyfont[modern] % have to reload the font
>>>
>>> \starttext
>>>
>>> No Jokes!
>>>
>>> \stoptext
>>>
> Henri,
>
> This looks very promising. It works, mostly. That is, all fonts that 
> use default fontfeatures pick up the change. So, for example, the 
> companion sansserif for my body font also gets it even though that is 
> not what I want.
>
> I can remove kerning from the default fontfeatures and add it back 
> just for the problematic font, but that means no kerning for the sans 
> font.
>
> Is there a way to apply this to one font only (serif upright, bold, 
> italic, ...) or even a single face (upright), perhaps by giving it a 
> unique name? I have tried a few variations but had no success. The 
> fonts-mkiv manual has very little on this, and the cld manual nothing.
>
Okay, I have progressed further but have run into something (else) I 
cannot understand. Consider the following example:

    \definefontfeature   [myserif] [mode=node,kern=yes,xkern=yes]
    \definefontfeature   [mysans]  [mode=node,kern=yes,xkern=no]
    \definefontfeature   [none]    [mode=node]
    \definefontfamily    [mykerns] [serif] [Baskervaldx]    [features=myserif]
    \definefontfamily    [mykerns] [sans]  [Dejavusans]     [features=mysans]
    \definefontfamily    [default] [serif] [Baskervaldx]    [features=default]
    \definefontfamily    [default] [sans]  [Dejavusans]     [features=default]
    \definefontfamily    [nokerns] [serif] [Baskervaldx]    [features=none]
    \definefontfamily    [nokerns] [sans]  [Dejavusans]     [features=none]
    \definefontfamily    [legends] [mono]  [Dejavusansmono] [features=default]

    \startluacode
       fonts.handlers.otf.addfeature {
           name = "kern",
           type = "kern",
           data = {
               ["x"] = { ["x"] = -300 },
               [" "] = { ["A"] = 1000 }
           }
       }
       fonts.handlers.otf.addfeature {
           name = "xkern",
           type = "kern",
           data = {
               ["x"] = { ["x"] = 500 },
               [" "] = { ["J"] = 500 }
           }
       }
    \stopluacode

    \startbuffer[Sample]
       g, Jaxxb AJon
    \stopbuffer

    \define[2]\Test{
       {\switchtobodyfont[#1]#2\getbuffer[Sample]}}

    \setupbodyfont[legends]

    \starttext
    \starttabulate[|l|l|l|]
    \NC test     \NC  Serif                \NC  Sans                 \NC \NR
    \NC nokerns  \NC  \Test{nokerns}{\tf}  \NC  \Test{nokerns}{\ss}  \NC \NR
    \NC default  \NC  \Test{default}{\tf}  \NC  \Test{default}{\ss}  \NC \NR
    \NC mykerns  \NC  \Test{mykerns}{\tf}  \NC  \Test{mykerns}{\ss}  \NC \NR
    \stoptabulate
    \stoptext

It shows, as far as I see, that the kern feature type supports " ", but 
only when it is named kern. When it is named xkern, as here, it does not 
support spaces, but does support other characters.

If I can get support for a separate feature name, I can easily apply 
this corrective kern to the single problematic font.

I also tried a goodie file, but it, too, did not support the " ".

-- 
Rik


[-- Attachment #1.2: Type: text/html, Size: 6440 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
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	other threads:[~2019-12-26 12:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-22 21:19 Rik Kabel
2019-12-22 21:28 ` Henri Menke
2019-12-23  9:13   ` Mojca Miklavec
2019-12-23  9:31     ` Hans Hagen
2019-12-22 22:40 ` mf
2019-12-23  1:30   ` Rik Kabel
2019-12-23  2:33     ` Henri Menke
2019-12-23  2:34       ` Henri Menke
2019-12-23 23:45         ` Rik Kabel
2019-12-26 12:41           ` Rik Kabel [this message]
2019-12-26 13:40             ` Hans Hagen
2019-12-26 14:34               ` Rik Kabel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1faba092-1c2d-d1ed-38c5-130f78da1d73@rik.users.panix.com \
    --to=context@rik.users.panix.com \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).