tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

kern.h (1119B)


      1 // Copyright (c) 2009-2017 The OTS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef OTS_KERN_H_
      6 #define OTS_KERN_H_
      7 
      8 #include <vector>
      9 
     10 #include "ots.h"
     11 
     12 namespace ots {
     13 
     14 struct OpenTypeKERNFormat0Pair {
     15  uint16_t left;
     16  uint16_t right;
     17  int16_t value;
     18 };
     19 
     20 struct OpenTypeKERNFormat0 {
     21  uint16_t version;
     22  uint16_t coverage;
     23  uint16_t search_range;
     24  uint16_t entry_selector;
     25  uint16_t range_shift;
     26  std::vector<OpenTypeKERNFormat0Pair> pairs;
     27 };
     28 
     29 // Format 2 is not supported. Since the format is not supported by Windows,
     30 // WebFonts unlikely use it. I've checked thousands of proprietary fonts and
     31 // free fonts, and found no font uses the format.
     32 
     33 class OpenTypeKERN : public Table {
     34 public:
     35  explicit OpenTypeKERN(Font *font, uint32_t tag)
     36      : Table(font, tag, tag) { }
     37 
     38  bool Parse(const uint8_t *data, size_t length);
     39  bool Serialize(OTSStream *out);
     40  bool ShouldSerialize();
     41 
     42 private:
     43  uint16_t version;
     44  std::vector<OpenTypeKERNFormat0> subtables;
     45 };
     46 
     47 }  // namespace ots
     48 
     49 #endif  // OTS_KERN_H_