This  file  contains a  list  of various  font  formats.   It gives  the
reference document and whether it is supported in FreeType 2.


  file type:
    The only special  case is `MAC'; on older Mac  OS versions, a `file'
    is  stored as  a  data and  a  resource fork,  this  is, within  two
    separate data chunks.   In all other cases, the  font data is stored
    in a single file.

  wrapper format:
    The format used  to represent the font data.  In  the table below it
    is used only if the font format differs.  Possible values are `SFNT'
    (binary), `PS' (a text header, followed by binary or text data),
    `LZW' (compressed with either `gzip' or `compress'), and
    `BZ2' (compressed with `bzip2`).

  font format:
    How the font  is to be accessed, possibly  after converting the file
    type and  wrapper format  into a generic  form.  Bitmap  formats are
    `BDF',  `PCF', and  one  form  of `WINFNT';  all  others are  vector
    formats.

  font type:
    Sub-formats  of the font  format.  `SBIT'  and `MACSBIT'  are bitmap
    formats, `MM' and `VAR' support optical axes.

  glyph access:
    If not specified, the glyph access is `standard' to the font format.
    Values are  `CID' for CID-keyed  fonts, `SYNTHETIC' for  fonts which
    are modified  versions of other  fonts by means of  a transformation
    matrix, `COLLECTION' for collecting  multiple fonts (sharing most of
    the data) into a single file, and `TYPE_0' for PS fonts which are to
    be accessed in a tree-like structure.

  FreeType driver:
    The module in  the FreeType library which handles  the specific font
    format.   A missing entry  means that  FreeType doesn't  support the
    font format (yet).


Please  send  additions  and/or  corrections  to wl@gnu.org  or  to  the
FreeType developer's list  at freetype-devel@nongnu.org (for subscribers
only).   If you  can provide  a font  example for  a format  which isn't
supported yet please send a mail too.


file wrapper font   font    glyph      FreeType reference
type format  format type    access     driver   documents
----------------------------------------------------------------------------

---  ---     BDF    ---     ---        bdf      5005.BDF_Spec.pdf, X11


---  SFNT    PS     TYPE_1  ---        type1    Type 1 GX Font Format
                                                (for the Mac) [3]
MAC  SFNT    PS     TYPE_1  ---        type1    Type 1 GX Font Format
                                                (for the Mac) [3]
---  SFNT    PS     TYPE_1  CID        cid      5180.sfnt.pdf (for the Mac)
                                                [3]
MAC  SFNT    PS     TYPE_1  CID        cid      5180.sfnt.pdf (for the Mac)
                                                [3]
---  SFNT    PS     CFF     ---        cff      OT spec, 5176.CFF.pdf
                                                (`OTTO' format)
MAC  SFNT    PS     CFF     ---        cff      OT spec, 5176.CFF.pdf
                                                (`OTTO' format)
---  SFNT    PS     CFF     CID        cff      OT spec, 5176.CFF.pdf
MAC  SFNT    PS     CFF     CID        cff      OT spec, 5176.CFF.pdf
---  SFNT    PS     CFF     SYNTHETIC  ---      OT spec, 5176.CFF.pdf
MAC  SFNT    PS     CFF     SYNTHETIC  ---      OT spec, 5176.CFF.pdf
---  SFNT    TT     SBIT    ---        sfnt     XFree86 (bitmaps only;
                                                with `head' table)
---  SFNT    TT     MACSBIT ---        sfnt     OT spec (for the Mac;
                                                bitmaps only; `bhed' table)
MAC  SFNT    TT     MACSBIT ---        sfnt     OT spec (for the Mac;
                                                bitmaps only; `bhed' table)
---  SFNT    TT     ---     ---        truetype OT spec (`normal' TT font)
MAC  SFNT    TT     ---     ---        truetype OT spec (`normal' TT font)
MAC  SFNT    TT     VAR     ---        truetype GX spec (`?var' tables)
---  SFNT    TT     ---     COLLECTION truetype OT spec (this can't be CFF)
MAC  SFNT    TT     ---     COLLECTION truetype OT spec (this can't be CFF)


---  ---     PS     TYPE_1  ---        type1    T1_SPEC.pdf
                                                (`normal' Type 1 font)
MAC  ---     PS     TYPE_1  ---        type1    T1_SPEC.pdf
                                                (`normal' Type 1 font)
---  ---     PS     TYPE_1  CID        cid      PLRM.pdf (CID Font Type 0;
                                                Type 9 font)
---  ---     PS     MM      ---        type1    5015.Type1_Supp.pdf
                                                (Multiple Masters)
---  ---     PS     CFF     ---        cff      5176.CFF.pdf (`pure' CFF)
---  ---     PS     CFF     CID        cff      5176.CFF.pdf (`pure' CFF)
---  ---     PS     CFF     SYNTHETIC  ---      5176.CFF.pdf (`pure' CFF)
---  PS      PS     CFF     ---        ---      PLRM.pdf (Type 2) [1]
---  PS      PS     CFF     CID        ---      PLRM.pdf (Type 2) [1]
---  PS      PS     CFF     SYNTHETIC  ---      PLRM.pdf (Type 2) [1]
---  ---     PS     ---     TYPE_0     ---      PLRM.pdf
---  ---     PS     TYPE_3  ---        ---      PLRM.pdf (never supported)
---  ---     PS     TYPE_3  CID        ---      PLRM.pdf (CID Font Type 1;
                                                Type 10 font; never supported)
---  PS      PS     TYPE_14 ---        ---      PLRM.pdf (Chameleon font;
                                                Type 14 font; never supported?)
---  ---     PS     TYPE_32 CID        ---      PLRM.pdf (CID Font Type 4;
                                                Type 32 font; never supported?)
---  PS      TT     ---     ---        type42   5012.Type42_Spec.pdf
                                                (Type 42 font)
---  PS      TT     ---     CID        ---      PLRM.pdf (CID Font Type 2;
                                                Type 11 font)


---  ?       ?      CEF     ?          cff      ?


---  ---     PCF    ---     ---        pcf      X11 [4]
---  LZW     PCF    ---     ---        pcf      X11 [4]
---  BZ2     PCF    ---     ---        pcf      X11 [4]


---  ---     PFR    PFR0    ---        pfr      [2]
---  ---     PFR    PFR1    ---        ---      (undocumented, proprietary;
                                                probably never supported)


---  ---     WINFNT ---     ---        winfonts Windows developer's notes [5]
---  ---     WINFNT VECTOR  ---        ---      Windows developer's notes [5]


[1] Support should be rather simple since this is identical to `CFF' but
    in a PS wrapper.

[2] Official PFR specification:

      http://www.bitstream.com/categories/developer/truedoc/pfrspec.html
      http://www.bitstream.com/categories/developer/truedoc/pfrspec1.2.pdf

    The  syntax of  the  auxiliary data  is  not defined  there, but  is
    partially defined in  MHP 1.0.3 (also called ETSI  TS 101812 V1.3.1)
    section 7.4.

      http://www.etsi.org/
      http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=18799

    (free registration required).

[3] Support is rudimentary currently; some tables are not loaded yet.

[4] See

      THE X WINDOW SYSTEM SERVER: X VERSION 11, RELEASE 5
      Elias Israel, Erik Fortune, Digital Press, 1992
      ISBN 1-55558-096-3

    for a specification  given in Appendix D on pgs. 436-450.   However,
    this information  might be out of  date; unfortunately,  there is no
    PCF  specification available  online, and this book is out of print.
    George  Williams deduced  the font  format from the X11  sources and
    documented it for his FontForge font editor:

      http://fontforge.sourceforge.net/pcf-format.html

[5] This is from MS Windows 3; see Microsoft's Knowledge Base article at

      http://support.microsoft.com/kb/65123

------------------------------------------------------------------------

Copyright 2004-2015 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This  file is  part  of the  FreeType  project, and  may  only be  used,
modified,  and  distributed under  the  terms  of  the FreeType  project
license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
file  you indicate that  you have  read the  license and  understand and
accept it fully.


--- end of formats.txt ---
