summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2018-10-30 00:50:18 -0700
committerBehdad Esfahbod <behdad@behdad.org>2018-10-30 00:52:22 -0700
commit58e20f53bf61244e3eef09be8ebed60aaf52fb11 (patch)
treef04464d5a1068fcda7b9b2ca64f6de4fe87c80c3 /util
parent6131fb6283cff87333db14b9b32e92be6139c3d6 (diff)
[util] Add hb-shape --batch
Diffstat (limited to 'util')
-rw-r--r--util/hb-shape.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/util/hb-shape.cc b/util/hb-shape.cc
index 337cd431..6c727d01 100644
--- a/util/hb-shape.cc
+++ b/util/hb-shape.cc
@@ -160,6 +160,36 @@ struct output_buffer_t
int
main (int argc, char **argv)
{
+ if (argc == 2 && !strcmp (argv[1], "--batch"))
+ {
+ unsigned int ret = 0;
+ char *buf = nullptr;
+ size_t len;
+ while (getline (&buf, &len, stdin) > 0)
+ {
+ size_t l = strlen (buf);
+ if (l && buf[l - 1] == '\n') buf[l - 1] = '\0';
+ main_font_text_t<shape_consumer_t<output_buffer_t>, FONT_SIZE_UPEM, 0> driver;
+ char *args[32];
+ argc = 0;
+ char *p = buf, *e;
+ args[argc++] = p;
+ while ((e = strchr (p, ' ')) && argc < (int) (int) ARRAY_LENGTH (args))
+ {
+ *e++ = '\0';
+ while (*e == ' ')
+ e++;
+ args[argc++] = p = e;
+ }
+ ret |= driver.main (argc, args);
+ fflush (stdout);
+
+ if (ret)
+ break;
+ }
+ free (buf);
+ return ret;
+ }
main_font_text_t<shape_consumer_t<output_buffer_t>, FONT_SIZE_UPEM, 0> driver;
return driver.main (argc, argv);
}