diff --git a/util/Makefile.am b/util/Makefile.am
index 82c14fd..12041b5 100644
--- a/util/Makefile.am
+++ b/util/Makefile.am
@@ -51,6 +51,9 @@
 hb_shape_SOURCES = $(HB_SHAPE_sources)
 bin_PROGRAMS += hb-shape
 
+hb_info_SOURCES = $(HB_INFO_sources)
+bin_PROGRAMS += hb-info
+
 hb_subset_SOURCES = $(HB_SUBSET_CLI_sources)
 hb_subset_LDADD = \
 	$(top_builddir)/src/libharfbuzz-subset.la \
diff --git a/util/Makefile.sources b/util/Makefile.sources
index 70b704e..a64099e 100644
--- a/util/Makefile.sources
+++ b/util/Makefile.sources
@@ -31,6 +31,14 @@
 	text-options.hh \
 	$(NULL)
 
+HB_INFO_sources = \
+	batch.hh \
+	face-options.hh \
+	font-options.hh \
+	hb-info.cc \
+	options.hh \
+	$(NULL)
+
 HB_SUBSET_CLI_sources = \
 	batch.hh \
 	face-options.hh \
diff --git a/util/hb-info.cc b/util/hb-info.cc
new file mode 100644
index 0000000..9bddb99
--- /dev/null
+++ b/util/hb-info.cc
@@ -0,0 +1,108 @@
+/*
+ * Copyright © 2010  Behdad Esfahbod
+ * Copyright © 2011,2012  Google, Inc.
+ *
+ *  This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#include "batch.hh"
+#include "font-options.hh"
+
+const unsigned DEFAULT_FONT_SIZE = FONT_SIZE_UPEM;
+const unsigned SUBPIXEL_BITS = 0;
+
+
+struct info_t
+{
+  void add_options (option_parser_t *parser)
+  {
+  }
+
+  void operator () ()
+  {
+  }
+};
+
+
+template <typename consumer_t,
+	  typename font_options_type>
+struct main_font_t :
+       option_parser_t,
+       font_options_type,
+       consumer_t
+{
+  int operator () (int argc, char **argv)
+  {
+    add_options ();
+    parse (&argc, &argv);
+
+    consumer_t::operator () ();
+
+    return 0;
+  }
+
+  protected:
+
+  void add_options ()
+  {
+    font_options_type::add_options (this);
+    consumer_t::add_options (this);
+
+    GOptionEntry entries[] =
+    {
+      {G_OPTION_REMAINING,	0, G_OPTION_FLAG_IN_MAIN,
+				G_OPTION_ARG_CALLBACK,	(gpointer) &collect_rest,	nullptr,	"[FONT-FILE]"},
+      {nullptr}
+    };
+    add_main_group (entries, this);
+    option_parser_t::add_options ();
+  }
+
+  private:
+
+  static gboolean
+  collect_rest (const char *name G_GNUC_UNUSED,
+		const char *arg,
+		gpointer    data,
+		GError    **error)
+  {
+    main_font_t *thiz = (main_font_t *) data;
+
+    if (!thiz->font_file)
+    {
+      thiz->font_file = g_strdup (arg);
+      return true;
+    }
+
+    g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
+		 "Too many arguments on the command line");
+    return false;
+  }
+};
+
+int
+main (int argc, char **argv)
+{
+  using main_t = main_font_t<info_t, font_options_t>;
+  return batch_main<main_t> (argc, argv);
+}
diff --git a/util/meson.build b/util/meson.build
index df48855..ff38bd6 100644
--- a/util/meson.build
+++ b/util/meson.build
@@ -6,6 +6,10 @@
   'hb-shape.cc',
 ]
 
+hb_info_sources = [
+  'hb-info.cc',
+]
+
 hb_ot_shape_closure_sources = [
   'hb-ot-shape-closure.cc',
 ]
@@ -37,6 +41,15 @@
   )
   meson.override_find_program('hb-shape', hb_shape)
 
+  hb_info = executable('hb-info', hb_info_sources,
+    cpp_args: cpp_args,
+    include_directories: [incconfig, incsrc],
+    dependencies: util_deps,
+    link_with: [libharfbuzz],
+    install: true,
+  )
+  meson.override_find_program('hb-info', hb_info)
+
   hb_subset = executable('hb-subset', hb_subset_cli_sources,
     cpp_args: cpp_args,
     include_directories: [incconfig, incsrc],
