Hi, I think the fog is clearing some what but I am not sure I have this right, the key comment being
[code] /* match l-th point of the newly loaded component to the k-th point */ /* of the previously loaded components. */ [/code] so in this case, it means that p1 is the base_points[arg2] where base_points is the points of the outline of the parent glyph and p2 is sub_glyph[arg1] where sub_glyph is the points of the current sub-glyph. Is that correct? -Kevin P.S. I still would love to have a Freetype function to grab/compute those translation since the code is quite involved and tricky. On Fri, Aug 31, 2018 at 10:21 AM Kevin Rogovin <kevin.rogo...@gmail.com> wrote: > Hi, > > Thankyuo for the fast reply. The part that I am having trickiness is when > flags has the bit ARGS_ARE_XY_VALUES as down; then the values of args1 and > arg2 are indices into an array, the relevant code I found is > src/truetype/ttgload.c, function TT_Process_Composite_Component(): > > [code] > FT_UInt num_points = (FT_UInt)gloader->base.outline.n_points; > FT_UInt k = (FT_UInt)subglyph->arg1; > FT_UInt l = (FT_UInt)subglyph->arg2; > FT_Vector* p1; > FT_Vector* p2; > > > /* match l-th point of the newly loaded component to the k-th point > */ > /* of the previously loaded components. > */ > > /* change to the point numbers used by our outline */ > k += start_point; > l += num_base_points; > if ( k >= num_base_points || > l >= num_points ) > return FT_THROW( Invalid_Composite ); > > p1 = gloader->base.outline.points + k; > p2 = gloader->base.outline.points + l; > > x = p1->x - p2->x; > y = p1->y - p2->y; > [/code] > > I see that arg1 and arg2 function as indices when the bit > ARGS_ARE_XY_VALUES are down, but I don't know how to get those vertices > from the index values. And that is likely the easy part... for then I need > to copy the tricky code to adjust the translations too. > > Would it be possible to add a new entry point to FreeType that returns the > computed translation? Users will still likely want the flags (for example > to have a fast check if the FT_Matrix is identity, scaling only or 2x2). > Related question: are the values of the FT_Matrix returned by > FT_GetSubGlyphInfo() in units of the parent glyph? > > Best Regards, > -Kevin Rogovin > > On Fri, Aug 31, 2018 at 8:00 AM Werner LEMBERG <w...@gnu.org> wrote: > >> >> > I am trying to load glyph’s geometric data with FT_LOAD_NO_RECURSE. >> > The entry point FT_GetSubGlyphInfo() has almost what I needed, but >> > not quite. It does provide the 2x2 matrix, but not the translation >> > (at least when I read the docs and FreeType source code). [...] >> >> The FreeType documentation explicitly refers to the OpenType >> specification; for clarity, I've now added a link. >> >> I hope this helps. It's quite tricky, indeed. >> >> >> Werner >> > _______________________________________________ Freetype mailing list Freetype@nongnu.org https://lists.nongnu.org/mailman/listinfo/freetype