[lucida] incompatible sizes of arrows (uparrow and downarrow)
Bruno Voisin
bvoisin at icloud.com
Wed Aug 17 12:20:48 CEST 2022
> On 16 Aug 2022, at 22:23, Mikael Sundqvist <mickep at gmail.com> wrote:
>
> I am using Lucida OT. The sizes of \uparrow (U+2191) and \downarrow
> (U+2193), used as delimiters, are not the same. [...] Note that the \downarrow
> is longer than the \uparrow.
Hi Mickael (and Karl),
For the original Type 1 fonts, applying t1disasm to lbms.pfb gives
/arrowup {
145 530 hsbw
0 21 hstem
703 20 hstem
96 48 vstem
120 723 rmoveto
-120 -209 rlineto
96 48 rlineto
-562 vlineto
48 hlineto
562 vlineto
96 -48 rlineto
closepath
endchar
} ND
/arrowdown {
145 530 hsbw
0 21 hstem
703 20 hstem
96 48 vstem
240 209 rmoveto
-96 -49 rlineto
563 vlineto
-48 hlineto
-563 vlineto
-96 49 rlineto
120 -209 rlineto
closepath
endchar
} ND
The implied path drawing is consistent with FontForge's display of the glyphs and seems to say the up and down arrows have the same vertical size of 723 PostScript points (209 - 48 + 562 for arrowup, 209 - 49 + 563 for arrowdown).
For the OpenType fonts, applying ttx to LucidaBrightMathOT.otf gives
<CharString name="arrowup">
-110 302 783 rmoveto
-30 callsubr
endchar
</CharString>
where I think -30 callsubr calls subroutine 77 (= 107 - 30) that is
<CharString index="77">
-169 -293 142 71 0 -561 54 0 0 561 142 -71 rlineto
return
</CharString>
and similarly
<CharString name="arrowdown">
-110 302 hmoveto
-28 callsubr
endchar
</CharString>
<CharString index="79">
169 293 -142 -71 0 561 -54 0 0 -561 -142 71 rlineto
return
</CharString>
The path drawing associated with the subroutines seem to say the up and down arrows have the same vertical size of 783 points (293 - 71 + 561). Again this is consistent with FontForge's display of the glyphs.
How did you obtain the unpacked font data? Was this using a specific ConTeXt tool?
Bruno Voisin
More information about the lucida
mailing list.