1 // Copyright (c) 2011 The Chromium 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_NAME_H_ 6 #define OTS_NAME_H_ 7 8 #include <new> 9 #include <string> 10 #include <utility> 11 #include <vector> 12 13 #include "ots.h" 14 15 namespace ots { 16 17 struct NameRecord { 18 NameRecord() { 19 } 20 21 NameRecord(uint16_t platform_id, uint16_t encoding_id, 22 uint16_t language_id, uint16_t name_id) 23 : platform_id(platform_id), 24 encoding_id(encoding_id), 25 language_id(language_id), 26 name_id(name_id) { 27 } 28 29 uint16_t platform_id; 30 uint16_t encoding_id; 31 uint16_t language_id; 32 uint16_t name_id; 33 std::string text; 34 35 bool operator<(const NameRecord& rhs) const { 36 if (platform_id < rhs.platform_id) return true; 37 if (platform_id > rhs.platform_id) return false; 38 if (encoding_id < rhs.encoding_id) return true; 39 if (encoding_id > rhs.encoding_id) return false; 40 if (language_id < rhs.language_id) return true; 41 if (language_id > rhs.language_id) return false; 42 return name_id < rhs.name_id; 43 } 44 }; 45 46 struct OpenTypeNAME { 47 std::vector<NameRecord> names; 48 std::vector<std::string> lang_tags; 49 }; 50 51 } // namespace ots 52 53 #endif // OTS_NAME_H_ 54