blob: dcb473b622b10bba37edc09652156b415cbf17a4 [file] [log] [blame]
Roderick Sheeter437bbad2013-11-19 14:32:56 -08001// Copyright 2013 Google Inc. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Functions for normalizing fonts. Since the WOFF 2.0 decoder creates font
16// files in normalized form, the WOFF 2.0 conversion is guaranteed to be
17// lossless (in a bitwise sense) only for normalized font files.
18
Zoltan Szabadka494c85c2014-03-20 14:35:41 +010019#ifndef WOFF2_NORMALIZE_H_
20#define WOFF2_NORMALIZE_H_
Roderick Sheeter437bbad2013-11-19 14:32:56 -080021
22namespace woff2 {
23
24struct Font;
25
26// Changes the offset fields of the table headers so that the data for the
27// tables will be written in order of increasing tag values, without any gaps
28// other than the 4-byte padding.
29bool NormalizeOffsets(Font* font);
30
31// Changes the checksum fields of the table headers and the checksum field of
32// the head table so that it matches the current data.
33bool FixChecksums(Font* font);
34
35// Parses each of the glyphs in the font and writes them again to the glyf
36// table in normalized form, as defined by the StoreGlyph() function. Changes
37// the loca table accordigly.
38bool NormalizeGlyphs(Font* font);
39
40// Performs all of the normalization steps above.
41bool NormalizeFont(Font* font);
42
43} // namespace woff2
44
Zoltan Szabadka494c85c2014-03-20 14:35:41 +010045#endif // WOFF2_NORMALIZE_H_