From 407f80d62589774f845ef1a6a0a7d841b09d57c6 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 13 Nov 2012 15:33:27 -0800 Subject: [PATCH] [util] Add --bot / --eot / --preserve-default-ignorables --- util/options.cc | 3 +++ util/options.hh | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/util/options.cc b/util/options.cc index b9f1538fb..ca621bff8 100644 --- a/util/options.cc +++ b/util/options.cc @@ -271,6 +271,9 @@ shape_options_t::add_options (option_parser_t *parser) {"direction", 0, 0, G_OPTION_ARG_STRING, &this->direction, "Set text direction (default: auto)", "ltr/rtl/ttb/btt"}, {"language", 0, 0, G_OPTION_ARG_STRING, &this->language, "Set text language (default: $LANG)", "langstr"}, {"script", 0, 0, G_OPTION_ARG_STRING, &this->script, "Set text script (default: auto)", "ISO-15924 tag"}, + {"bot", 0, 0, G_OPTION_ARG_NONE, &this->bot, "Treat text as beginning-of-paragraph", NULL}, + {"eot", 0, 0, G_OPTION_ARG_NONE, &this->eot, "Treat text as end-of-paragraph", NULL}, + {"preserve-default-ignorables",0, 0, G_OPTION_ARG_NONE, &this->preserve_default_ignorables, "Preserve Default-Ignorable characters", NULL}, {"utf8-clusters", 0, 0, G_OPTION_ARG_NONE, &this->utf8_clusters, "Use UTF8 byte indices, not char indices", NULL}, {"normalize-glyphs",0, 0, G_OPTION_ARG_NONE, &this->normalize_glyphs, "Rearrange glyph clusters in nominal order", NULL}, {NULL} diff --git a/util/options.hh b/util/options.hh index 0f6fce287..be6878b43 100644 --- a/util/options.hh +++ b/util/options.hh @@ -144,6 +144,7 @@ struct shape_options_t : option_group_t shape_options_t (option_parser_t *parser) { direction = language = script = NULL; + bot = eot = preserve_default_ignorables = false; features = NULL; num_features = 0; shapers = NULL; @@ -165,6 +166,10 @@ struct shape_options_t : option_group_t hb_buffer_set_direction (buffer, hb_direction_from_string (direction, -1)); hb_buffer_set_script (buffer, hb_script_from_string (script, -1)); hb_buffer_set_language (buffer, hb_language_from_string (language, -1)); + hb_buffer_set_flags (buffer, (hb_buffer_flags_t) (HB_BUFFER_FLAGS_DEFAULT | + (bot ? HB_BUFFER_FLAG_BOT : 0) | + (eot ? HB_BUFFER_FLAG_EOT : 0) | + (preserve_default_ignorables ? HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES : 0))); } void populate_buffer (hb_buffer_t *buffer, const char *text, int text_len, @@ -213,9 +218,16 @@ struct shape_options_t : option_group_t hb_ot_shape_glyphs_closure (font, buffer, features, num_features, glyphs); } + /* Buffer properties */ const char *direction; const char *language; const char *script; + + /* Buffer flags */ + hb_bool_t bot; + hb_bool_t eot; + hb_bool_t preserve_default_ignorables; + hb_feature_t *features; unsigned int num_features; char **shapers;