freetype
[Top][All Lists]
Advanced

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

Re: Help,please !!!!!!!


From: Tom Kacvinsky
Subject: Re: Help,please !!!!!!!
Date: Thu, 29 Jun 2000 06:33:35 -0400 (EDT)

One can embed True Type fonts in PDF file.  In essence,
the embedded fonts is a binary version of a Type 42 font.
That is, the sfnts array is converted back to a binary
stream.

Tom

On Thu, 29 Jun 2000, David Turner wrote:

> Hi Lidia,
> 
> > 
> > Hello!
> > Sorry about my stupid question .
> > How can I do this thing using FreeType with .ttf file( please , only direct
> > me to some example or source file )? I need embed ttf file and make remaping
> > only in order to get
> > correct widths.
> 
> I don't know if this is possible. I believe that the fonts that are
> embedded in a PDF are in the CFF format (a more-compact derivative of
> Type 1). A TrueType font must thus be converted to CFF before going
> to PDF. You probably end up doing some re-mapping and lose all the
> hints. Moreover there are copyright issues at stake..
> 
> I have no code to do this conversion, though converting from Type 1
> to CFF is relatively easy, it's still a lot of work..
> 
> Of course, I'd love to be proven wrong..
> 
> Best Regards,
> 
> - David
> 
> >                             Thanks a lot , Lidia.
> > 
> > ----- Original Message -----
> > From: "David Turner" <address@hidden>
> > To: "Lidia Mirkin" <address@hidden>; <address@hidden>
> > Sent: Thursday, June 29, 2000 2:46 AM
> > Subject: Re: Help,please !!!!!!!
> > 
> > > Hi Lidia,
> > >
> > >   I've taken a deep look at tahoma.ttf and the ttf2pt1 source
> > >   code..
> > >
> > >   When creating the encoding for the Type 1 font, ttf2pt1 remaps
> > >   some of the glyphs. Basically this means that:
> > >
> > >     - tahoma.ttf contains a valid Unicode charmap, and doesn't
> > >       define glyph images for codes 127 to 159 (this is in
> > >       accordance to the specification)
> > >
> > >     - when ttf2pt1 converts this font to Type 1, it remaps some
> > >       characters because of some stupid restrictions in the Type 1
> > >       format (i.e. no more than 256 character codes in an encoding)
> > >       Basically, it tries to look for common unicodes above 256,
> > >       see if they have a glyph, and if so, tries to place them
> > >       in the "vacant" entries of the original charmap..
> > >
> > >   For example, character code 136 in the Type 1 font ("circumflex")
> > >   does not correspond to any valid Unicode value. Its glyph is
> > >   however the same than the one for character code 0x2c6 in the
> > >   original Tahoma font..
> > >
> > >   I guess FreeHand does something similar..
> > >
> > >   The .afm file correspond to the Type 1 font, and not to the
> > >   charmap located in Tahoma.ttf. You cannot use it with a TrueType
> > >   font because of this stupid remapping thing..
> > >
> > >   The problem comes from the fact that charcodes are nearly just
> > >   useless with Type 1 fonts, you really need to look at the list
> > >   of glyph names and build a real Unicode charmap from these,
> > >   over-riding the definition of the "encoding" dictionary.
> > >
> > >   Hopefully, this is precisely what FreeType 2 does with Type 1
> > >   fonts :-)
> > >
> > > Hope its clear..
> > >
> > > Cheers,
> > >
> > > - David
> > >
> > >
> > >
> > > Lidia Mirkin a écrit :
> > > >
> > > >     Hello !
> > > > Thank you very much about your reply.
> > > > Scenario is following:
> > > > 1.I read Tahoma.ttf using FreeType.Particulary , I read char widths from
> > > > this font,
> > > > using code below.TT_Get_CharMap_ID returns 0 for characters in range
> > > > 125-160.
> > > > and therefore , I get width = 0 for these characters.
> > > > 2.After that , I embed this font  to PDF.
> > > > 3.In FreeHand i make some example pdf with embedding the tahoma font,
> > open
> > > > PDF in some text editor and check character widths: for characters
> > > > 125,126,127 they are 1000( default width) and for characters 127-160
> > they
> > > > are not equal to 1000.
> > > > 4.I used ttf2pt1 ( ttf2pfa ) tool in order to convert Tahoma.ttf to
> > afm,pfa.
> > > > Character widths inside .afm are same to those we get in FreeHand.
> > > > 5.I don't read font from PDF.
> > > > 6.I send you compiled ttf2pt1 and also project for MS-5.0.
> > > > you can run this program by
> > > >
> > > > ttf2pt1.exe <path to ttf file> <path to output files/name of output
> > files>
> > > > <example>
> > > > tt2pt1.exe Tahoma.ttf Tahoma
> > > >
> > > > 7.Also , I am sending  you generated .afm file.
> > > >
> > > > It is clear , that I can use this program for my purposes , but I would
> > like
> > > > to know how
> > > > can I do it by FreeType ( because , this library is very convenient for
> > > > usage ).
> > > >             thak you very much , Lidia.
> > > >
> > > > > It's important to distinguish which fonts you're talking about..
> > > > >
> > > > >   - taking a "stock" font like tahoma.ttf, some **character codes** in
> > the
> > > > >     125 to 160 range correspond to glyph index 0 (this is normal
> > > > >     for Latin-1 based encodings like Unicode).
> > > > >
> > > > >   - you compute the size of such characters as the one of glyph 0,
> > > > >     which is here 1000
> > > > >
> > > > >   - when embedding the font with FreeHand, then reading it from the
> > > > >     PDF (right ???), the same character codes will produce different
> > > > >     widths !!
> > > > >
> > > > > My question is this:
> > > > >
> > > > > - Do these character codes map to glyph index 0 or not ?
> > > > >   If not, FreeHand has modified the charmap within the font, and
> > > > >   you're not reading the original font..
> > > > >
> > > > > - Do the embedded font still have a (3,1) charmap, or something
> > > > >   different ??
> > > > >
> > > > > > ttf2pt1(ttf2pfa) get valid values....
> > > > > >
> > > > >
> > > > > Does it get the "valid values" from the original font, or the
> > > > > embedded one. It's really hard to see what you're speaking about,
> > > > > we need a bit of clarification :-)
> > > > >
> > > >
> > > > Code:
> > > > > for (i=0;i<n;i++)
> > > > > >  {
> > > > > >   if (error=TT_Get_CharMap_ID( face, i, &platform, &encoding ))
> > > > > >    goto done_face;
> > > > > >   if ( (platform == 3 && encoding == 1 ) )
> > > > > >   {
> > > > > >    TT_Get_CharMap( face, i, &charMap );
> > > > > >    break;
> > > > > >   }
> > > > > > ....
> > > > > >  }
> > > > > >  for (i=0;i<=255;i++)
> > > > > >  {
> > > > > >   unsigned short char_index=TT_Char_Index( charMap, i );
> > > > > >   TT_Get_Face_Metrics( face,
> > > > > >                        char_index,
> > > > > >                        char_index,
> > > > > >                        NULL,
> > > > > >                        temp,
> > > > > >                        NULL,
> > > > > >                        NULL );
> > > > > >
> > > > > >   font->widths[i]=(int)(temp[0]*scale_factor+0.5);
> > > > > >  }
> > > > > >
> > > > > >
> > > >
> > >
> >   --------------------------------------------------------------------------
> > ----------------------------------------------------------------------------
> > > >                      Name: font_stuff.zip
> > > >    font_stuff.zip    Type: Zip Compressed Data
> > (application/x-zip-compressed)
> > > >                  Encoding: base64
> > >
> 




reply via email to

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