[HarfBuzz] harfbuzz: Branch 'master'
Behdad Esfahbod
behdad at kemper.freedesktop.org
Sat Dec 17 20:39:29 UTC 2016
src/hb-directwrite.cc | 48 ++++++++++++++++++++++++++++++++++++++++--------
src/hb-directwrite.h | 4 ++++
2 files changed, 44 insertions(+), 8 deletions(-)
New commits:
commit 1e1825bf47aa29968f75a78305d4541ce2c9d40c
Author: ebraminio <ebrahim at gnu.org>
Date: Sat Dec 17 10:30:40 2016 +0330
[dwrite] Provide an experimental API for justification (#279)
diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc
index d26b298..b5c1113 100644
--- a/src/hb-directwrite.cc
+++ b/src/hb-directwrite.cc
@@ -209,8 +209,8 @@ _hb_directwrite_shaper_face_data_destroy(hb_directwrite_shaper_face_data_t *data
data->fontFile->Release ();
if (data->dwriteFactory) {
if (data->fontFileLoader)
- data->dwriteFactory->UnregisterFontFileLoader(data->fontFileLoader);
- data->dwriteFactory->Release();
+ data->dwriteFactory->UnregisterFontFileLoader (data->fontFileLoader);
+ data->dwriteFactory->Release ();
}
if (data->fontFileLoader)
delete data->fontFileLoader;
@@ -542,12 +542,13 @@ static inline uint32_t hb_uint32_swap (const uint32_t v)
* shaper
*/
-hb_bool_t
-_hb_directwrite_shape(hb_shape_plan_t *shape_plan,
+static hb_bool_t
+_hb_directwrite_shape_full(hb_shape_plan_t *shape_plan,
hb_font_t *font,
hb_buffer_t *buffer,
const hb_feature_t *features,
- unsigned int num_features)
+ unsigned int num_features,
+ float lineWidth)
{
hb_face_t *face = font->face;
hb_directwrite_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
@@ -728,9 +729,6 @@ retry_getglyphs:
return false;
}
- // TODO: get lineWith from somewhere
- float lineWidth = 0;
-
IDWriteTextAnalyzer1* analyzer1;
analyzer->QueryInterface (&analyzer1);
@@ -900,3 +898,37 @@ retry_getglyphs:
/* Wow, done! */
return true;
}
+
+hb_bool_t
+_hb_directwrite_shape(hb_shape_plan_t *shape_plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer,
+ const hb_feature_t *features,
+ unsigned int num_features)
+{
+ return _hb_directwrite_shape_full(shape_plan, font, buffer,
+ features, num_features, 0);
+}
+
+/*
+ * Public [experimental] API
+ */
+
+hb_bool_t
+hb_shape_dwrite_experimental_width(hb_font_t *font,
+ hb_buffer_t *buffer,
+ const hb_feature_t *features,
+ unsigned int num_features,
+ float width)
+{
+ static char *shapers = "directwrite";
+ hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached (font->face,
+ &buffer->props, features, num_features, &shapers);
+ hb_bool_t res = _hb_directwrite_shape_full (shape_plan, font, buffer,
+ features, num_features, width);
+
+ if (res)
+ buffer->content_type = HB_BUFFER_CONTENT_TYPE_GLYPHS;
+
+ return res;
+}
diff --git a/src/hb-directwrite.h b/src/hb-directwrite.h
index 0e1b479..0eb116f 100644
--- a/src/hb-directwrite.h
+++ b/src/hb-directwrite.h
@@ -29,6 +29,10 @@
HB_BEGIN_DECLS
+HB_EXTERN hb_bool_t
+hb_shape_dwrite_experimental_width(hb_font_t *font, hb_buffer_t *buffer,
+ const hb_feature_t *features, unsigned int num_features, float width);
+
HB_END_DECLS
#endif /* HB_DIRECTWRITE_H */
More information about the HarfBuzz
mailing list