On Thu, 18 Aug 2016, Hans Hagen wrote:
On 8/18/2016 1:12 AM, Brian R. Landy wrote:
On Aug 17, 2016, at 5:45 PM, Hans Hagen
wrote: On 8/17/2016 9:56 PM, Brian R. Landy wrote:
Hi, I was wondering if there is a way to call \getscaledglyph to scale a glyph only horizontally, leaving the height untouched? Or maybe an alternate command?
I can sort of accomplish this with (for example) \scale[sx=0.75,sy=1.0]{}{A}, but that encloses the glyph in an \hbox, which can be problematic. \getscaledglyph doesn't cause me any problems, except that it scales the height too.
\starttext
\definefontfeature[whatever][default][extend=2.5]
\definedfont[Serif*whatever at 12pt]
whatever
\stoptext
Thank you. One thing that \getscaledglyph does it works agnostic to the currently selected font. For example:
scaling glyphs in one direction is kind of bad anyway so if you want just one glyph you can do
\inframed{\scale[width=3em,height=1ex]{...}}
or whatever suits the purpose
Agreed. Here's a little more background, so it makes some sense why I want to scale horizontally, and then I describe my final solution. I have a specific case where I use a minus, a hyphen-minus, and a plus close to each other, and it's always bugged me that most fonts don't vertically align the hyphen-minus with the other two glyphs. An example is: {\normalUchar"2212}100-00+ I was thinking that math fonts did align these symbols, hence my question on Monday on how to get the hyphen-minus in math mode (and thanks for the quick answer on that) but unfortunately was wrong. So that got me searching for a way to horizontally shrink a minus, so it would retain the same height and line thickness as the minus. Horizontal-only scaling of a hyphen/dash/minus isn't so bad. \scaled[] worked perfectly, but it breaks inside a natural table with character alignment enabled. I have a commented example of this below. \getscaledglyph works in the table, but the vertical shrink is a non-starter. Here's an example: \edef\mathminus{\normalUchar"2212} \edef\smallminus{\getscaledglyph{0.33}{}{\normalUchar"2212}} \starttext This is my starting point: \bTABLE[aligncharacter=yes,alignmentcharacter={text->-}] \bTR \bTD \mathminus100-00+ \eTD \eTR \bTR \bTD 100-00 \eTD \eTR \bTR \bTD \mathminus 99-00+ \eTD \eTR \bTR \bTD \mathminus 99-00 \eTD \eTR \eTABLE % This table won't typeset: % % \bTABLE[aligncharacter=yes,alignmentcharacter={text->:}] % \bTR \bTD \mathminus100\scaled[sx=0.5,sy=1.0]{\mathminus}00:+ \eTD \eTR % \bTR \bTD 100\scaled[sx=0.5,sy=1.0]{\mathminus}00: \eTD \eTR % \bTR \bTD \mathminus 99\scaled[sx=0.5,sy=1.0]{\mathminus}00:+ \eTD \eTR % \bTR \bTD \mathminus 99\scaled[sx=0.5,sy=1.0]{\mathminus}00: \eTD \eTR % \eTABLE \stoptext But I came up with a solution that works. Rather than attempt to shrink the minus glyph, I define a new glyph that corrects the height of the hyphen-minus: \startluacode local function addsmallminus(tfmdata) local hchar = tfmdata.characters[0x002D] local mchar = tfmdata.characters[0x2212] tfmdata.characters[0xFE000] = { width = hchar.width, height = mchar.height, commands = { { "down", hchar.height-mchar.height }, { "char", 0x002D }, } } end fonts.constructors.newfeatures("otf").register { name = "smallminus", description = "small minus", manipulators = { base = addsmallminus, node = addsmallminus, } } \stopluacode \definefontfeature[default][default][smallminus=yes] \edef\smallminus{\normalUchar"FE000} \starttext \bTABLE[aligncharacter=yes,alignmentcharacter={text->\smallminus}] \bTR \bTD \mathminus100\smallminus00+ \eTD \eTR \bTR \bTD 100\smallminus00 \eTD \eTR \bTR \bTD \mathminus 99\smallminus00+ \eTD \eTR \bTR \bTD \mathminus 99\smallminus00 \eTD \eTR \eTABLE \stoptext So this looks good and works with any font. The only issue is fonts that use a different line thickness for the minus and hyphen-minus; this top-aligns the glyphs. Is there a way to make this glyph available in math-mode? I get a "?" when I try: \math{\smallminus} \math{\mathchar"FE000} Thanks for all your help! Brian