Fix or document unsupported font-feature-settings
authorDavid Corbett <corbett.dav@husky.neu.edu>
Tue, 19 Feb 2019 03:30:40 +0000 (22:30 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 25 Feb 2019 22:48:16 +0000 (17:48 -0500)
src/hb-common.cc
util/options.cc

index fb8c7b7..ab93bf4 100644 (file)
@@ -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.
index b315c6a..c5a4f0f 100644 (file)
@@ -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"