[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Devel] Re: extra metric points
From: |
George Williams |
Subject: |
Re: [Devel] Re: extra metric points |
Date: |
26 Mar 2004 16:35:02 -0800 |
On Wed, 2004-03-03 at 13:47, Werner LEMBERG wrote:
> > I just pulled down freetype_current and I see support for only two
> > phantom points. Is this a design decision or has no one gotten
> > around to updating?
>
> Do you volunteer to update FreeType?
Ok, here's my attempt. This is based on yesterday's freetype2-current
tarball. I'm afraid some tabs have probably snuck in.
I was not sure what to do about the autofit and autohint directories, so
I did nothing. I do have a question about src/autohint/ahglyph.c, it
looks to me as though the ahpp.patch is appropriate, but I'm not sure
what's going on here.
I put some questions (in comments) into these patches. I was not sure
whether incremental applied to vertical metrics or just horizontal ones.
The information provided by Greg Hitchcock (11-Mar-2004) does not match
the behavior of the MS rasterizer. It appears to me that if there is no
'vmtx' table, then the top side bearing phantom point is initialized to
the glyph's yMax (in the bounding box in the glyph header) and the
advance height is set to units_per_Em. I doubt this matters much, I
can't imagine a font without a vmtx table that cares where the vertical
phantoms go.
I did not have any fonts which actually made use of these points, so I
had to create some. I am posting two fonts:
http://pfaedit.sf.net/hidden/PhantomTest.ttf
http://pfaedit.sf.net/hidden/PhantomTest2.ttf
The second one has no vmtx table, but is otherwise the same. These fonts
have only a few glyphs in them, all the same rectangle, but with
instructions to move the edges of the rectangle to the same coordinate
as the phantom points. (A couple of glyphs have a second rectangle so I
could see that the edge was where I thought it should be).
"A" is the rectangle without instructions, "B" moves the right edge to
the advance width, "C" moves the left edge to the left side bearing, "D"
moves the bottom edge to the advance height, and "E" moves the top edge
to the top side bearing.
vpp.patch
Description: Text Data
ahpp.patch
Description: Text Data