freetype-devel
[Top][All Lists]
Advanced

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

Re: [ft-devel] CID keyed fonts in sfnt wrappers in 2.3.8


From: mpsuzuki
Subject: Re: [ft-devel] CID keyed fonts in sfnt wrappers in 2.3.8
Date: Tue, 10 Mar 2009 23:11:37 +0900

Dear Michael,

I wish if my implementation for sfnt-wrapped PS Type1 & CID-
keyed fonts didn't bother you. Now I don't have sufficient
time to finish anything before 2.3.9 release...

Hmm, I guess, what you call as "CID keyed fonts in sfnt
wrappers" is a CFF OpenType including CID-keyed CFF font
(CFF OpenType for CJK scripts, usually), which is different 
from sfnt-wrapped CID-keyed fonts. If I'm misunderstanding,
please correct.

On Tue, 10 Mar 2009 10:46:22 +0100
Michael Toftdal <address@hidden> wrote:

>I am working on a piece of software that is (/was) dependent on the
>FT_FACE_FLAG_CID_KEYED flag and the 2.3.7 fact, that glyph index ==
>CID for CID keyed fonts (also those in sfnt wrappers). After upgrading
>to 2.3.8, I obviously got a small problem.
>I need the CIDs for outputting PostScript, where I unwrap OpenType
>(CFF) CID keyed fonts and refer to glyphs via the Identity CMaps.
>After the upgrade to 2.3.8, I could of course look up the CID flag and
>the Unicode to CID mapping in the font file itself (eg. as part of the
>unwrapping where I have the information anyway).

I understand your request as following, if I'm wrong, please
correct.

* When you load a CID-keyed CFF OpenType by FreeType 2.3.7,
  you can use it as simple CID-keyed font. The "cmap" table
  in CFF OpenType is ignored, and you can specify a glyph
  for CID by putting 16-bit CID to FT_Long-typed codepoint in
  FreeType API.

* When you load a CID-keyed CFF OpenType by FreeType2 2.3.8,
  you cannot ignore "cmap" table. To specify a glyph for CID,
  you have to translate a CID to Unicode codepoint, and put
  it to FT_Long-typed codepoint in FreeType API. Thus, you
  have to distinguish CID-keyed CFF OpenType and simple CID-
  keyed font.

* So, now you want a simple method to handle CID-keyed CFF
  OpenType as simple CID-keyed font.

I suppose the change was introduced on 2008-07-16.

2008-07-16  Werner Lemberg  <address@hidden>

        Handle CID-keyed fonts wrapped in an SFNT (with cmaps) correctly.

        * src/cff/cffload.c (cff_font_load): Pass `pure_cff'.
        Invert sids table only if `pure_cff' is set.
        * src/cff/cffload.h: Udpated.

        * src/cff/cffobjs.c (cff_face_init): Updated.
        Set FT_FACE_FLAG_CID_KEYED only if pure_cff is set.

Could you check if FreeType2 on CVS at 2008-07-17 shows
"changed" behaviour?

>                                                 But I would like to
>keep the unwrapping out of output process, as it happens another place
>in the software and in principle, unwrapping could just be extraction
>of the CFF table of the otf file.

I can understand your request - it might be popular requests
for the people working for existing PostScript systems.

>For my own purpose, I solved the problem by implementing two new
>functions in the CID service in FreeType. One to get the "internal"
>CID flag of the font (result is equal to asking for the CID flag in
>2.3.7 -- can by the way be mimicked for (most?) practical purposes by
>asking for the ROS and checking the return value). The other function
>gives me access to the glyph index to CID mapping that is stored in
>the cff->charset.sids array (which I have to suspend the free'ing
>of...).

Hmm. If I'm asked to implement the compatibility feature to
ignore "cmap" in CFF OpenType, I will modify cffobjs.c:cff_face_init(), 
and insert a hook to skip calling sfnt->load_cmap(). 
I can pass some parameters to cff_face_init() by num_params
and params[], so I should discuss the introduction of new
tag name to ignore "cmap" in CFF OpenType, something like
FT_PARAM_TAG_IGNORE_SFNT_CMAP.

Regards,
mpsuzuki



BTW, I've ever written a proof-of-idea implementation of
"partial stream", which can handle a part of a stream
as an individual stream (so, I can make a FT_Stream object
including CFF table only, from a FT_Stream including whole
of CFF OpenType). If I have sufficient time to finish it
and I can ignore its downgradable compatibility, I want to
use it.

http://lists.nongnu.org/archive/html/freetype-devel/2009-01/msg00044.html




reply via email to

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