* [NTG-context] Zigzag left margin with italics
@ 2024-11-04 1:34 Rik Kabel
2024-11-04 6:35 ` [NTG-context] " Mikael Sundqvist
0 siblings, 1 reply; 8+ messages in thread
From: Rik Kabel @ 2024-11-04 1:34 UTC (permalink / raw)
To: ntg-context mailing list
[-- Attachment #1.1: Type: text/plain, Size: 1338 bytes --]
In a paper I recently wrote I noticed some ugly zigzag alignment on the
left margin of one paragraph (set with Libertinus) where a couple of
book titles appeared at the start of the second and fourth lines. The
following example demonstrates the issue.
\definefontfeature [default]
[default]
[protrusion=quality,expansion=quality]
\setupalign [hz,hanging]
\startbuffer
Here is a line of text, the first sentence in the demonstration.\\
{\em Then} the next sentence in the paragraph follows.\\
You can see that the italic {\em T} appears to be a bit indented.\\
{\em There } might be a way to shift it to the left that little bit.\\
Perhaps a protrusion setting.\\
{\em This} does appear to depend to on the font used. With Modern and\\
Libertinus it is worse, with Times a bit better.
\blank
\stopbuffer
\starttext
Modern\\
\getbuffer
Times\\
\setupbodyfont[times]
\getbuffer
Libertinus\\
\setupbodyfont[libertinus]
\getbuffer
\stoptext
How can one set a small left-margin protrusion for the italic T and
possibly other characters? I know it is a small issue, but once seen it
is hard to un-see.
--
Rik
[-- Attachment #1.2: Type: text/html, Size: 1983 bytes --]
[-- Attachment #2: Type: text/plain, Size: 511 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
* [NTG-context] Re: Zigzag left margin with italics
2024-11-04 1:34 [NTG-context] Zigzag left margin with italics Rik Kabel
@ 2024-11-04 6:35 ` Mikael Sundqvist
2024-11-04 15:51 ` Rik Kabel
2024-11-04 15:55 ` Wolfgang Schuster
0 siblings, 2 replies; 8+ messages in thread
From: Mikael Sundqvist @ 2024-11-04 6:35 UTC (permalink / raw)
To: mailing list for ConTeXt users
Hi,
You can try this below (from test suite), but then, as you see, also
upright T will move out. Not sure how/if you can control that.
\startluacode
local classes = fonts.protrusions.classes
local vectors = fonts.protrusions.vectors
classes.rik = {
vector = 'rik',
factor = 1,
}
vectors.rik = table.merged (
vectors.quality,
{
[0x0054] = { 0.35, 0 }, -- T
})
\stopluacode
\definefontfeature
[default]
[default]
[protrusion=rik,expansion=quality]
\setupalign[hz,hanging]
\showmakeup[line]
\showglyphs
\startbuffer
Here is a line of text, the first sentence in the demonstration.\\
{\em Then} the next sentence in the paragraph follows.\\
You can see that the italic {\em T} appears to be a bit indented.\\
{\em There } might be a way to shift it to the left that little bit.\\
Perhaps a protrusion setting.\\
{\em This} does appear to depend to on the font used. With Modern and\\
Libertinus it is worse, with Times a bit better.
\blank
\stopbuffer
\starttext
Modern\\
\getbuffer
Times\\
\setupbodyfont[times]
\getbuffer
TLibertinus\\
\setupbodyfont[libertinus]
\getbuffer
\stoptext
/Mikael
On Mon, Nov 4, 2024 at 2:34 AM Rik Kabel <ConTeXt@rik.users.panix.com> wrote:
>
> In a paper I recently wrote I noticed some ugly zigzag alignment on the left margin of one paragraph (set with Libertinus) where a couple of book titles appeared at the start of the second and fourth lines. The following example demonstrates the issue.
>
> \definefontfeature [default]
> [default]
> [protrusion=quality,expansion=quality]
> \setupalign [hz,hanging]
>
> \startbuffer
> Here is a line of text, the first sentence in the demonstration.\\
> {\em Then} the next sentence in the paragraph follows.\\
> You can see that the italic {\em T} appears to be a bit indented.\\
> {\em There } might be a way to shift it to the left that little bit.\\
> Perhaps a protrusion setting.\\
> {\em This} does appear to depend to on the font used. With Modern and\\
> Libertinus it is worse, with Times a bit better.
> \blank
> \stopbuffer
>
> \starttext
> Modern\\
> \getbuffer
> Times\\
> \setupbodyfont[times]
> \getbuffer
> Libertinus\\
> \setupbodyfont[libertinus]
> \getbuffer
> \stoptext
>
> How can one set a small left-margin protrusion for the italic T and possibly other characters? I know it is a small issue, but once seen it is hard to un-see.
>
> --
> Rik
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
>
> maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
> webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
> archive : https://github.com/contextgarden/context
> wiki : https://wiki.contextgarden.net
> ___________________________________________________________________________________
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
* [NTG-context] Re: Zigzag left margin with italics
2024-11-04 6:35 ` [NTG-context] " Mikael Sundqvist
@ 2024-11-04 15:51 ` Rik Kabel
2024-11-04 15:55 ` Wolfgang Schuster
1 sibling, 0 replies; 8+ messages in thread
From: Rik Kabel @ 2024-11-04 15:51 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 592 bytes --]
On 2024-11-04 01:35, Mikael Sundqvist wrote:
> \startluacode
>
> local classes = fonts.protrusions.classes
> local vectors = fonts.protrusions.vectors
>
> classes.rik = {
> vector = 'rik',
> factor = 1,
> }
>
> vectors.rik = table.merged (
> vectors.quality,
> {
> [0x0054] = { 0.35, 0 }, -- T
> })
>
> \stopluacode
That, of course, works (I would use 0.175 for Libertinus) but as you
point out does not distinguish roman and italic.
Perhaps instead of protrusion there is something that can be done with
the bounding box of specific characters.
--
Rik
[-- Attachment #1.2: Type: text/html, Size: 1002 bytes --]
[-- Attachment #2: Type: text/plain, Size: 511 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
* [NTG-context] Re: Zigzag left margin with italics
2024-11-04 6:35 ` [NTG-context] " Mikael Sundqvist
2024-11-04 15:51 ` Rik Kabel
@ 2024-11-04 15:55 ` Wolfgang Schuster
2024-11-04 17:39 ` Rik Kabel
1 sibling, 1 reply; 8+ messages in thread
From: Wolfgang Schuster @ 2024-11-04 15:55 UTC (permalink / raw)
To: mailing list for ConTeXt users; +Cc: Rik Kabel, Mikael Sundqvist
Mikael Sundqvist schrieb am 04.11.2024 um 07:35:
> Hi,
>
> You can try this below (from test suite), but then, as you see, also
> upright T will move out. Not sure how/if you can control that.
>
> \startluacode
>
> local classes = fonts.protrusions.classes
> local vectors = fonts.protrusions.vectors
>
> classes.rik = {
> vector = 'rik',
> factor = 1,
> }
>
> vectors.rik = table.merged (
> vectors.quality,
> {
> [0x0054] = { 0.35, 0 }, -- T
> })
>
> \stopluacode
>
> \definefontfeature
> [default]
> [default]
> [protrusion=rik,expansion=quality]
Define a feature which sets only the custom protrusion values:
\definefontfeature [rik] [protrusion=quality]
and create a new typeface where you apply the new feature to the
italic/slanted style:
\definefontfamily [riktimes] [rm] [TeX Gyre Termes]
[sl=features:{default,rik}]
Afterwards use \seupbodyfont[riktimes] to access the new typeface.
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
* [NTG-context] Re: Zigzag left margin with italics
2024-11-04 15:55 ` Wolfgang Schuster
@ 2024-11-04 17:39 ` Rik Kabel
2024-11-04 17:54 ` Hans Hagen
0 siblings, 1 reply; 8+ messages in thread
From: Rik Kabel @ 2024-11-04 17:39 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 2058 bytes --]
On 2024-11-04 10:55, Wolfgang Schuster wrote:
> Mikael Sundqvist schrieb am 04.11.2024 um 07:35:
>> Hi,
>>
>> You can try this below (from test suite), but then, as you see, also
>> upright T will move out. Not sure how/if you can control that.
>>
>> \startluacode
>>
>> local classes = fonts.protrusions.classes
>> local vectors = fonts.protrusions.vectors
>>
>> classes.rik = {
>> vector = 'rik',
>> factor = 1,
>> }
>>
>> vectors.rik = table.merged (
>> vectors.quality,
>> {
>> [0x0054] = { 0.35, 0 }, -- T
>> })
>>
>> \stopluacode
>>
>> \definefontfeature
>> [default]
>> [default]
>> [protrusion=rik,expansion=quality]
>
> Define a feature which sets only the custom protrusion values:
>
> \definefontfeature [rik] [protrusion=quality]
>
> and create a new typeface where you apply the new feature to the
> italic/slanted style:
>
> \definefontfamily [riktimes] [rm] [TeX Gyre Termes]
> [sl=features:{default,rik}]
>
> Afterwards use \seupbodyfont[riktimes] to access the new typeface.
>
> Wolfgang
> ___________________________________________________________________________________
>
Looking a bit more, the problem is not protrusion but the bounding box.
Look at the left side of the italic T and W, and to a lesser degree C,
O, and Q, produced by the following.
\usetypescript[libertinus]
\setupbodyfont[libertinus]
\starttext
¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
{\it\recursestring\tf¦}\par
¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
{\recursestring¦}
¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
{\WORD{\it\recursestring}\tf¦}\par
¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
{\WORD{\recursestring}¦}
\stoptext
This may be an issue for the font maintainer, but is there anything that
could be done within context?
--
Rik
[-- Attachment #1.2: Type: text/html, Size: 3344 bytes --]
[-- Attachment #2: Type: text/plain, Size: 511 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
* [NTG-context] Re: Zigzag left margin with italics
2024-11-04 17:39 ` Rik Kabel
@ 2024-11-04 17:54 ` Hans Hagen
2024-11-04 21:49 ` Rik Kabel
2024-11-04 22:10 ` Wolfgang Schuster
0 siblings, 2 replies; 8+ messages in thread
From: Hans Hagen @ 2024-11-04 17:54 UTC (permalink / raw)
To: mailing list for ConTeXt users
On 11/4/2024 6:39 PM, Rik Kabel wrote:
>
> On 2024-11-04 10:55, Wolfgang Schuster wrote:
>> Mikael Sundqvist schrieb am 04.11.2024 um 07:35:
>>> Hi,
>>>
>>> You can try this below (from test suite), but then, as you see, also
>>> upright T will move out. Not sure how/if you can control that.
>>>
>>> \startluacode
>>>
>>> local classes = fonts.protrusions.classes
>>> local vectors = fonts.protrusions.vectors
>>>
>>> classes.rik = {
>>> vector = 'rik',
>>> factor = 1,
>>> }
>>>
>>> vectors.rik = table.merged (
>>> vectors.quality,
>>> {
>>> [0x0054] = { 0.35, 0 }, -- T
>>> })
>>>
>>> \stopluacode
>>>
>>> \definefontfeature
>>> [default]
>>> [default]
>>> [protrusion=rik,expansion=quality]
>>
>> Define a feature which sets only the custom protrusion values:
>>
>> \definefontfeature [rik] [protrusion=quality]
>>
>> and create a new typeface where you apply the new feature to the
>> italic/slanted style:
>>
>> \definefontfamily [riktimes] [rm] [TeX Gyre Termes] [sl=features:
>> {default,rik}]
>>
>> Afterwards use \seupbodyfont[riktimes] to access the new typeface.
>>
>> Wolfgang
>> ___________________________________________________________________________________
>
> Looking a bit more, the problem is not protrusion but the bounding box.
> Look at the left side of the italic T and W, and to a lesser degree C,
> O, and Q, produced by the following.
>
> \usetypescript[libertinus]
> \setupbodyfont[libertinus]
> \starttext
> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
> {\it\recursestring\tf¦}\par
> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
> {\recursestring¦}
>
> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
> {\WORD{\it\recursestring}\tf¦}\par
> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
> {\WORD{\recursestring}¦}
> \stoptext
>
> This may be an issue for the font maintainer, but is there anything that
> could be done within context?
you can make a font goodie file where you patch properties of a specific
glyph but then you also need to keep an eye on when the font gets fixed
Hans
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
* [NTG-context] Re: Zigzag left margin with italics
2024-11-04 17:54 ` Hans Hagen
@ 2024-11-04 21:49 ` Rik Kabel
2024-11-04 22:10 ` Wolfgang Schuster
1 sibling, 0 replies; 8+ messages in thread
From: Rik Kabel @ 2024-11-04 21:49 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 1320 bytes --]
On 2024-11-04 12:54, Hans Hagen wrote:
> On 11/4/2024 6:39 PM, Rik Kabel wrote:
>>
>> Looking a bit more, the problem is not protrusion but the bounding
>> box. Look at the left side of the italic T and W, and to a lesser
>> degree C, O, and Q, produced by the following.
>>
>> \usetypescript[libertinus]
>> \setupbodyfont[libertinus]
>> \starttext
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\it\recursestring\tf¦}\par
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\recursestring¦}
>>
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\WORD{\it\recursestring}\tf¦}\par
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\WORD{\recursestring}¦}
>> \stoptext
>>
>> This may be an issue for the font maintainer, but is there anything
>> that could be done within context?
>
> you can make a font goodie file where you patch properties of a
> specific glyph but then you also need to keep an eye on when the font
> gets fixed
>
> Hans
>
Can anyone provide a pointer to a goodie file where glyph boundaries are
manipulated? I could not find anything relevant in the wiki, docs, or
source.
--
Rik
[-- Attachment #1.2: Type: text/html, Size: 2218 bytes --]
[-- Attachment #2: Type: text/plain, Size: 511 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
* [NTG-context] Re: Zigzag left margin with italics
2024-11-04 17:54 ` Hans Hagen
2024-11-04 21:49 ` Rik Kabel
@ 2024-11-04 22:10 ` Wolfgang Schuster
1 sibling, 0 replies; 8+ messages in thread
From: Wolfgang Schuster @ 2024-11-04 22:10 UTC (permalink / raw)
To: mailing list for ConTeXt users
Hans Hagen schrieb am 04.11.2024 um 18:54:
> On 11/4/2024 6:39 PM, Rik Kabel wrote:
>>
>> On 2024-11-04 10:55, Wolfgang Schuster wrote:
>>> Mikael Sundqvist schrieb am 04.11.2024 um 07:35:
>>>> Hi,
>>>>
>>>> You can try this below (from test suite), but then, as you see, also
>>>> upright T will move out. Not sure how/if you can control that.
>>>>
>>>> \startluacode
>>>>
>>>> local classes = fonts.protrusions.classes
>>>> local vectors = fonts.protrusions.vectors
>>>>
>>>> classes.rik = {
>>>> vector = 'rik',
>>>> factor = 1,
>>>> }
>>>>
>>>> vectors.rik = table.merged (
>>>> vectors.quality,
>>>> {
>>>> [0x0054] = { 0.35, 0 }, -- T
>>>> })
>>>>
>>>> \stopluacode
>>>>
>>>> \definefontfeature
>>>> [default]
>>>> [default]
>>>> [protrusion=rik,expansion=quality]
>>>
>>> Define a feature which sets only the custom protrusion values:
>>>
>>> \definefontfeature [rik] [protrusion=quality]
>>>
>>> and create a new typeface where you apply the new feature to the
>>> italic/slanted style:
>>>
>>> \definefontfamily [riktimes] [rm] [TeX Gyre Termes] [sl=features:
>>> {default,rik}]
>>>
>>> Afterwards use \seupbodyfont[riktimes] to access the new typeface.
>>>
>>> Wolfgang
>>> ___________________________________________________________________________________
>>>
>>
>> Looking a bit more, the problem is not protrusion but the bounding
>> box. Look at the left side of the italic T and W, and to a lesser
>> degree C, O, and Q, produced by the following.
>>
>> \usetypescript[libertinus]
>> \setupbodyfont[libertinus]
>> \starttext
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\it\recursestring\tf¦}\par
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\recursestring¦}
>>
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\WORD{\it\recursestring}\tf¦}\par
>> ¦\doloopoverlist{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
>> {\WORD{\recursestring}¦}
>> \stoptext
>>
>> This may be an issue for the font maintainer, but is there anything
>> that could be done within context?
>
> you can make a font goodie file where you patch properties of a specific
> glyph but then you also need to keep an eye on when the font gets fixed
A simple solution is to use \shapecorrection which moves the slanted
glyphs closer the margins of the text block.
%%%% begin example
\setuppapersize[A5]
\startbuffer
H\crlf
{\it T}
\blank
H\crlf
{\shapecorrection[both]\it T}
\stopbuffer
\showframe
\starttext
\subject{Latin Modern}
\getbuffer
\setupbodyfont[times]
\subject{Times}
\getbuffer
\setupbodyfont[libertinus]
\subject{Libertinus}
\getbuffer
\stoptext
%%%% end example
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-11-04 22:14 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-04 1:34 [NTG-context] Zigzag left margin with italics Rik Kabel
2024-11-04 6:35 ` [NTG-context] " Mikael Sundqvist
2024-11-04 15:51 ` Rik Kabel
2024-11-04 15:55 ` Wolfgang Schuster
2024-11-04 17:39 ` Rik Kabel
2024-11-04 17:54 ` Hans Hagen
2024-11-04 21:49 ` Rik Kabel
2024-11-04 22:10 ` Wolfgang Schuster
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).