equal
deleted
inserted
replaced
40 #define HB_OT_TAG_name HB_TAG('n','a','m','e') |
40 #define HB_OT_TAG_name HB_TAG('n','a','m','e') |
41 |
41 |
42 |
42 |
43 struct NameRecord |
43 struct NameRecord |
44 { |
44 { |
45 static int cmp (const NameRecord *a, const NameRecord *b) |
45 static int cmp (const void *pa, const void *pb) |
46 { |
46 { |
|
47 const NameRecord *a = (const NameRecord *) pa; |
|
48 const NameRecord *b = (const NameRecord *) pb; |
47 int ret; |
49 int ret; |
48 ret = b->platformID.cmp (a->platformID); |
50 ret = b->platformID.cmp (a->platformID); |
49 if (ret) return ret; |
51 if (ret) return ret; |
50 ret = b->encodingID.cmp (a->encodingID); |
52 ret = b->encodingID.cmp (a->encodingID); |
51 if (ret) return ret; |
53 if (ret) return ret; |
87 NameRecord key; |
89 NameRecord key; |
88 key.platformID.set (platform_id); |
90 key.platformID.set (platform_id); |
89 key.encodingID.set (encoding_id); |
91 key.encodingID.set (encoding_id); |
90 key.languageID.set (language_id); |
92 key.languageID.set (language_id); |
91 key.nameID.set (name_id); |
93 key.nameID.set (name_id); |
92 NameRecord *match = (NameRecord *) bsearch (&key, nameRecord, count, sizeof (nameRecord[0]), (hb_compare_func_t) NameRecord::cmp); |
94 NameRecord *match = (NameRecord *) bsearch (&key, nameRecord, count, sizeof (nameRecord[0]), NameRecord::cmp); |
93 |
95 |
94 if (!match) |
96 if (!match) |
95 return 0; |
97 return 0; |
96 |
98 |
97 unsigned int length = MIN (buffer_length, (unsigned int) match->length); |
99 unsigned int length = MIN (buffer_length, (unsigned int) match->length); |