From 48fd5bb2b6a1eb8cff453e72eb58c9223c03095d Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Tue, 27 Dec 2016 10:20:23 +0100 Subject: [PATCH] Documentation updates. * docs/CHANGES: Add missing information. * docs/formats.txt: Rewritten and updated. --- ChangeLog | 8 ++ docs/CHANGES | 27 ++++++ docs/formats.txt | 241 ++++++++++++++++++++++++++--------------------- 3 files changed, 166 insertions(+), 110 deletions(-) diff --git a/ChangeLog b/ChangeLog index c6a336f25..133ce2142 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2016-12-27 Werner Lemberg + + Documentation updates. + + * docs/CHANGES: Add missing information. + + * docs/formats.txt: Rewritten and updated. + 2016-12-27 Werner Lemberg [truetype, type1] Implement `FT_Get_Var_Design_Coordinates'. diff --git a/docs/CHANGES b/docs/CHANGES index 5b50fa23e..dccdb6e28 100644 --- a/docs/CHANGES +++ b/docs/CHANGES @@ -3,6 +3,15 @@ CHANGES BETWEEN 2.7 and 2.7.1 I. IMPORTANT CHANGES + - Support for the new CFF2 font format as introduced with OpenType + 1.8 has been contributed by Dave Arnolds from Adobe. + + - Preliminary support for variation fonts as specified in OpenType + 1.8 (in addition to the already existing support for Adobe's MM + and Apple's GX formats). Dave Arnolds contributed handling of + advance width change variation; more will come in the next + version. + II. IMPORTANT BUG FIXES @@ -37,9 +46,27 @@ CHANGES BETWEEN 2.7 and 2.7.1 blend coordinates of the currently selected variation instance has been added to the Multiple Masters interface. + - A new function `FT_Get_Var_Design_Coordinates' to retrieve the + design coordinates of the currently selected variation instance + has been added to the Multiple Masters interface. + - A new load flag `FT_LOAD_BITMAP_METRICS_ONLY' to retrieve bitmap information without loading the (embedded) bitmap itself. + - Retrieving advance widths from bitmap strikes (using + `FT_Get_Advance' and `FT_Get_Advances') have been sped up. + + - The usual round of fuzzer fixes to better reject malformed + fonts. + + - The `ftmulti' demo program can now switch engines with key `H'. + + - The `ftstring' demo program can now show some built-in, + non-latin sample strings (to be selected with the TAB key). + + - The `ftview' demo program can now switch between a font's + charmaps using the TAB key. + ====================================================================== diff --git a/docs/formats.txt b/docs/formats.txt index ae8c95fcd..2181352bd 100644 --- a/docs/formats.txt +++ b/docs/formats.txt @@ -1,141 +1,161 @@ -This file contains a list of various font formats. It gives the +This file contains a list of various font formats. It gives the reference document and whether it is supported in FreeType 2. +Table fields +------------ - 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 + 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 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. `PS' indicates third-order, `TT' second-order Bézier + curves. - font type: - Sub-formats of the font format. `SBIT' and `MACSBIT' are bitmap - formats, `MM' and `VAR' support optical axes. + font type + Sub-formats of the font format. `SBIT' and `MACSBIT' are bitmap + formats, `MM' and `VAR' support optical axes. `CFF2' supports + optical axes also. - 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. + glyph access + If not specified, the glyph access is `standard' to the font + format. Values are `CID' for CID-keyed fonts, `SYNTHETIC' for + fonts that are modified versions of other fonts by means of a + transformation matrix, 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 + 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. +Notes +----- + + The SFNT container format also provides `collections' (usually + having the file extension `.ttc' or `.otc'). A collection contains + multiple font faces that share some tables to avoid redundancy, thus + reducing the file size. In FreeType, elements of a collection can + be accessed with a proper face index. + + Both the GX and the OpenType 1.8 variation fonts provide `named + instances'. FreeType maps them to face indices (they can also be + accessed with the standard MM interface). + + Other font formats (not using the SFNT wrapper) also provide + multiple faces within one file; they are marked with an asterisk + (`*') in the table below. + + FreeType can be configured to support Mac files (on older Mac OS + versions, a `file' is stored as a data and a resource fork, this is, + within two separate data chunks). If a file can't be opened as a + font, FreeType then checks whether it is a resource fork, trying to + extract the contained font data from either a `POST' or `sfnt' + resource. -file wrapper font font glyph FreeType reference -type format format type access driver documents ----------------------------------------------------------------------------- - ---- --- BDF --- --- bdf 5005.BDF_Spec.pdf, X11 +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. ---- 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) + wrapper font font glyph FreeType reference + format format type access driver documents + ----------------------------------------------------------------------------- + + --- BDF --- --- bdf 5005.BDF_Spec.pdf, X11 ---- --- 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) + 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] + SFNT PS CFF --- cff OT spec, 5176.CFF.pdf + (`OTTO' format) + SFNT PS CFF CID cff OT spec, 5176.CFF.pdf + SFNT PS CFF SYNTHETIC --- OT spec, 5176.CFF.pdf + SFNT PS CFF2 --- cff OT spec 1.8 + + SFNT TT SBIT --- sfnt XFree86 (bitmaps only; + with `head' table) + SFNT TT MACSBIT --- sfnt OT spec (for the Mac; + bitmaps only; `bhed' table) + SFNT TT --- --- truetype OT spec (`normal' TT font) + SFNT TT VAR --- truetype GX spec (`?var' tables) + SFNT TT VAR --- truetype OT spec 1.8 + (`?var' + `?VAR' tables) ---- ? ? CEF ? cff ? + --- 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 CFF/MM --- cff old 5167.CFF.pdf (`pure' CFF) + [3] + --- PS* CFF/MM CID cff old 5167.CFF.pdf (`pure' CFF) + [3] + --- PS CFF/MM SYNTHETIC --- old 5167.CFF.pdf (`pure' CFF) + [3] + 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 PS CFF/MM --- --- PLRM.pdf (Type 2) [1] + PS PS* CFF/MM CID --- PLRM.pdf (Type 2) [1] + PS PS CFF/MM 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) ---- --- PCF --- --- pcf X11 [4] ---- LZW PCF --- --- pcf X11 [4] ---- BZ2 PCF --- --- pcf X11 [4] + ? ? CEF ? cff ? ---- --- PFR PFR0 --- pfr [2] ---- --- PFR PFR1 --- --- (undocumented, proprietary; - probably never supported) + --- PCF --- --- pcf X11 [4] + LZW PCF --- --- pcf X11 [4] + BZ2 PCF --- --- pcf X11 [4] ---- --- WINFNT --- --- winfonts Windows developer's notes [5] ---- --- WINFNT VECTOR --- --- Windows developer's notes [5] + --- PFR* PFR0 --- pfr [2] + --- PFR PFR1 --- --- (undocumented, proprietary; + probably never supported) -[1] Support should be rather simple since this is identical to `CFF' but - in a PS wrapper. + --- 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) + 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/ @@ -143,7 +163,8 @@ MAC --- PS TYPE_1 --- type1 T1_SPEC.pdf (free registration required). -[3] Support is rudimentary currently; some tables are not loaded yet. +[3] Support is rudimentary currently; some tables or data are not + loaded yet. [4] See @@ -151,10 +172,10 @@ MAC --- PS TYPE_1 --- type1 T1_SPEC.pdf 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 + 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.github.io/pcf-format.html