From 45adc185260f0fa1fa86472aafb7f91f942c567e Mon Sep 17 00:00:00 2001 From: David Corbett Date: Mon, 18 Feb 2019 22:30:40 -0500 Subject: Fix or document unsupported font-feature-settings --- src/hb-common.cc | 18 ++++++++++++------ util/options.cc | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/hb-common.cc b/src/hb-common.cc index fb8c7b72..ab93bf42 100644 --- a/src/hb-common.cc +++ b/src/hb-common.cc @@ -731,7 +731,7 @@ parse_uint (const char **pp, const char *end, unsigned int *pv) /* Intentionally use strtol instead of strtoul, such that * -1 turns into "big number"... */ errno = 0; - v = strtol (p, &pend, 0); + v = strtol (p, &pend, 10); if (errno || p == pend) return false; @@ -755,7 +755,7 @@ parse_uint32 (const char **pp, const char *end, uint32_t *pv) /* Intentionally use strtol instead of strtoul, such that * -1 turns into "big number"... */ errno = 0; - v = strtol (p, &pend, 0); + v = strtol (p, &pend, 10); if (errno || p == pend) return false; @@ -857,9 +857,14 @@ parse_bool (const char **pp, const char *end, uint32_t *pv) (*pp)++; /* CSS allows on/off as aliases 1/0. */ - if (*pp - p == 2 && 0 == strncmp (p, "on", 2)) + if (*pp - p == 2 + && TOLOWER (p[0]) == 'o' + && TOLOWER (p[1]) == 'n') *pv = 1; - else if (*pp - p == 3 && 0 == strncmp (p, "off", 3)) + else if (*pp - p == 3 + && TOLOWER (p[0]) == 'o' + && TOLOWER (p[1]) == 'f' + && TOLOWER (p[2]) == 'f') *pv = 0; else return false; @@ -975,8 +980,9 @@ parse_one_feature (const char **pp, const char *end, hb_feature_t *feature) * Parses a string into a #hb_feature_t. * * The format for specifying feature strings follows. All valid CSS - * font-feature-settings values other than 'normal' and 'inherited' are also - * accepted, though, not documented below. + * font-feature-settings values other than 'normal' and the global values are + * also accepted, though not documented below. CSS string escapes are not + * supported. * * The range indices refer to the positions between Unicode characters. The * position before the first character is always 0. diff --git a/util/options.cc b/util/options.cc index b315c6a7..c5a4f0f0 100644 --- a/util/options.cc +++ b/util/options.cc @@ -432,7 +432,8 @@ shape_options_t::add_options (option_parser_t *parser) " Features can be enabled or disabled, either globally or limited to\n" " specific character ranges. The format for specifying feature settings\n" " follows. All valid CSS font-feature-settings values other than 'normal'\n" - " and 'inherited' are also accepted, though, not documented below.\n" + " and the global values are also accepted, though not documented below.\n" + " CSS string escapes are not supported." "\n" " The range indices refer to the positions between Unicode characters,\n" " unless the --utf8-clusters is provided, in which case range indices\n" -- cgit v1.2.1