• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2011 Google Inc. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 // File is originally from Chromium third_party/sfntly/src/subsetter.
17 // Use as test case in sfntly so that problems can be caught in upstream early.
18 #ifndef SFNTLY_CPP_SRC_TEST_FONT_SUBSETTER_H_
19 #define SFNTLY_CPP_SRC_TEST_FONT_SUBSETTER_H_
20 
21 #include <stddef.h>
22 
23 class SfntlyWrapper {
24  public:
25 
26   // Font subsetting API
27   //
28   // Input TTF/TTC/OTF fonts, specify the glyph IDs to subset, and the subset
29   // font is returned in |output_buffer| (caller to delete[]).  Return value is
30   // the length of output_buffer allocated.
31   //
32   // If subsetting fails, a negative value is returned.  If none of the glyph
33   // IDs specified is found, the function will return 0.
34   //
35   // |font_name|      Font name, required for TTC files.  If specified NULL,
36   //                  the first available font is selected.
37   // |original_font|  Original font file contents.
38   // |font_size|      Size of |original_font| in bytes.
39   // |glyph_ids|      Glyph IDs to subset.  If the specified glyph ID is not
40   //                  found in the font file, it will be ignored silently.
41   // |glyph_count|    Number of glyph IDs in |glyph_ids|
42   // |output_buffer|  Generated subset font.  Caller to delete[].
43   static int SubsetFont(const char* font_name,
44                         const unsigned char* original_font,
45                         size_t font_size,
46                         const unsigned int* glyph_ids,
47                         size_t glyph_count,
48                         unsigned char** output_buffer);
49 
50 
51   // Font subsetting API
52   //
53   // Input TTF/TTC/OTF fonts, specify the glyph IDs to subset, and the subset
54   // font is returned in |output_buffer| (caller to delete[]).  Return value is
55   // the length of output_buffer allocated.
56   //
57   // If subsetting fails, a negative value is returned.  If none of the glyph
58   // IDs specified is found, the function will return 0.
59   //
60   // |font_name|      Font index, ignored for non-TTC files, 0-indexed.
61   // |original_font|  Original font file contents.
62   // |font_size|      Size of |original_font| in bytes.
63   // |glyph_ids|      Glyph IDs to subset.  If the specified glyph ID is not
64   //                  found in the font file, it will be ignored silently.
65   // |glyph_count|    Number of glyph IDs in |glyph_ids|
66   // |output_buffer|  Generated subset font.  Caller to delete[].
67   static int SubsetFont(int font_index,
68                         const unsigned char* original_font,
69                         size_t font_size,
70                         const unsigned int* glyph_ids,
71                         size_t glyph_count,
72                         unsigned char** output_buffer);
73 };
74 
75 #endif  // SFNTLY_CPP_SRC_TEST_FONT_SUBSETTER_H_
76