1 /* Copyright 2013 Google Inc. All Rights Reserved.
2 
3    Distributed under MIT license.
4    See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5 */
6 
7 /* Functions for normalizing fonts. Since the WOFF 2.0 decoder creates font
8    files in normalized form, the WOFF 2.0 conversion is guaranteed to be
9    lossless (in a bitwise sense) only for normalized font files. */
10 
11 #ifndef WOFF2_NORMALIZE_H_
12 #define WOFF2_NORMALIZE_H_
13 
14 namespace woff2 {
15 
16 struct Font;
17 struct FontCollection;
18 
19 // Changes the offset fields of the table headers so that the data for the
20 // tables will be written in order of increasing tag values, without any gaps
21 // other than the 4-byte padding.
22 bool NormalizeOffsets(Font* font);
23 
24 // Changes the checksum fields of the table headers and the checksum field of
25 // the head table so that it matches the current data.
26 bool FixChecksums(Font* font);
27 
28 // Parses each of the glyphs in the font and writes them again to the glyf
29 // table in normalized form, as defined by the StoreGlyph() function. Changes
30 // the loca table accordigly.
31 bool NormalizeGlyphs(Font* font);
32 
33 // Performs all of the normalization steps above.
34 bool NormalizeFont(Font* font);
35 bool NormalizeFontCollection(FontCollection* font_collection);
36 
37 } // namespace woff2
38 
39 #endif  // WOFF2_NORMALIZE_H_
40