Home | History | Annotate | Download | only in src

Lines Matching full:feature

102 parse_feature_value_prefix (const char **pp, const char *end, hb_feature_t *feature)
105 feature->value = 0;
108 feature->value = 1;
115 parse_feature_tag (const char **pp, const char *end, hb_feature_t *feature)
134 feature->tag = hb_tag_from_string (p, *pp - p);
151 parse_feature_indices (const char **pp, const char *end, hb_feature_t *feature)
157 feature->start = 0;
158 feature->end = (unsigned int) -1;
163 has_start = parse_uint (pp, end, &feature->start);
166 parse_uint (pp, end, &feature->end);
169 feature->end = feature->start + 1;
176 parse_feature_value_postfix (const char **pp, const char *end, hb_feature_t *feature)
179 bool had_value = parse_uint (pp, end, &feature->value) ||
180 parse_bool (pp, end, &feature->value);
189 parse_one_feature (const char **pp, const char *end, hb_feature_t *feature)
191 return parse_feature_value_prefix (pp, end, feature) &&
192 parse_feature_tag (pp, end, feature) &&
193 parse_feature_indices (pp, end, feature) &&
194 parse_feature_value_postfix (pp, end, feature) &&
203 * @feature: (out) (allow-none):
213 hb_feature_t *feature)
222 if (feature)
223 *feature = feat;
227 if (feature)
228 memset (feature, 0, sizeof (*feature));
234 * @feature:
243 hb_feature_to_string (hb_feature_t *feature,
250 if (feature->value == 0)
252 hb_tag_to_string (feature->tag, s + len);
256 if (feature->start != 0 || feature->end != (unsigned int) -1)
259 if (feature->start)
260 len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->start));
261 if (feature->end != feature->start + 1) {
263 if (feature->end != (unsigned int) -1)
264 len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->end));
268 if (feature->value > 1)
271 len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->value));