freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Devel] Re: CFF problems


From: Blinn, Eric W
Subject: RE: [Devel] Re: CFF problems
Date: Wed, 22 Nov 2000 09:50:26 -0600

Yes, the CFF font came from a Distiller produced PDF 
file. For my particular application, all the CFF fonts 
are coming from Distiller produced PDF files, so that 
has pretty much been my frame of reference while 
looking into these issues.

Thanks for the clarification on several of the issues 
and also the fixes that came in your follow up messages. 

If David can point me to the correct function for 
transforming the font outside of the CFF guts, that 
would be great. Otherwise, I'll dig through the code 
to see what I can figure out.

You said the left side bearing can in fact be negative. 
That being the case, then it might be a good idea for 
someone to make a small change to the "FreeType Glyph 
Conventions" document. It states that the left side 
bearing "is positive for horizontal layouts, and in most 
cases negative for vertical ones". Perhaps that "in most 
cases" should also be applied to horizontal layouts 
having positive left side bearings.

Even with the possibility of a negative left side bearing 
in mind, I don't doesn't appear to be the intent with CFF 
fonts like the one I provided. I haven't tried your t2parse 
fixes yet (will be doing that shortly). Did it clean up the 
metrics that lead to the negative left side bearing?

> ----------
> From:         Tom Kacvinsky[SMTP:address@hidden
> Sent:         Wednesday, November 22, 2000 12:38 AM
> To:   address@hidden
> Subject:      [Devel] Re: CFF problems
> 
> OK,
> 
> This font came from a Distiller produced PDF file, didn't it?
> 
> Next, the FontMatrix in the font is [.001 0 0 -.001 0 0], so this font is
> supposed to be flipped over the horizontal axis.  As I am not a user of
> FreeType
> (only a debugger), perhaps David can point you to the correct function for
> transforming a font (it is best not to mess with the CFf guts -- they are
> working properly in this case).
> 
> The default grid for this ont is not 32768 units by 32768 units.  The
> numbers
> you see are getting shifted right 16, so the number is much smaller.
> However,
> it makes the assumption that dict->font_matrix.yy is postive, which for
> your
> font, it is not.  I will committ a patch for this.
> 
> Finally, left side bearings can be negative.  This usually means the left
> edge
> of the glyph is to the left of the glyph origin.  I rarely see this, but I
> know
> it is done.
> 
> I'll look into why ftview doesn't work with CFF fonts...
> 
> Tom
> 
> On Tue, 21 Nov 2000, Blinn, Eric W wrote:
> 
> > 
> > I'm seeing some problems with CFF fonts. I have some fixes
> > or workarounds that work reasonably with my application, 
> > but I've also been digging down into the FreeType code to 
> > understand what is going on and wanted to go ahead and 
> > bounce the problems off the FreeType and/or CFF gurus 
> > on the list.
> > 
> > I've attached a small CFF font file to demonstrate the 
> > problems. Load it into ftview with a ppem of 72 (note that 
> > the ftview from ft2demos-current fails to open a CFF file 
> > but the one from ft2demos-beta8 works). Once the font is 
> > brought up in ftview, the problems are as follows:
> > 
> > 1) The glyphs are tiny. In T2_Init_Face() the units_per_EM
> > is being set extremely high, at 32768 grid units. Standard 
> > Type 1 Postscript fonts should be fixed at 1000 grid units, 
> > right? Setting units_per_EM to 1000 seems to get the CFF 
> > glyphs rendered at the proper size.
> > 
> > 2) The glyphs are flipped (reflected over a horizontal 
> > midline). There is some disabled code in T2_Load_Glyph() 
> > where FT_Outline_Transform() would otherwise be called. 
> > Enabling that code and feeding it the appropriate transform 
> > matrix values flips the glyphs into the orientation I would 
> > expect.
> > 
> > 3) The pen position is not always getting advanced correctly. 
> > Glyphs often sit on top of one another. This appears to be 
> > caused by incorrect glyph metrics, particularly a negative 
> > left side bearing (horiBearingX). The left side bearing 
> > should always be positive for a horizontal layout, right? I 
> > thought maybe this was happening because the metrics were 
> > being calculated using a control box. You might expect this
> > behavior if some control points lie far enough outside the 
> > glyph's bounding box. However, I've tried using the bounding 
> > box to calculate the metrics instead, but saw no improvement.
> > 
> > Thanks,
> > Eric Blinn
> > 
> >  <<example.cff>> 
> > 
> 
> 
> 
> _______________________________________________
> Devel mailing list
> address@hidden
> http://www.freetype.org/mailman/listinfo/devel
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]