Home | History | Annotate | Download | only in chromium
      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