From 2801c195104771097b1f6ee5da8ed107c74a5b19 Mon Sep 17 00:00:00 2001 From: shamsa Date: Wed, 13 Jan 2016 10:31:49 +0400 Subject: [PATCH 1/9] Add complex text support. This pull request adds support for languages that require complex text layout. We are using the Raqm library, that wraps FriBidi (for bidirectional text support) and HarfBuzz (for text shaping), and does proper BiDi and script itemization: https://github.com/HOST-Oman/libraqm This should fix #1089. --- .travis.yml | 6 +- PIL/ImageDraw.py | 12 ++-- PIL/ImageFont.py | 8 +-- _imagingft.c | 161 ++++++++++++++++++++++++++++++++++++++++------- setup.py | 15 +++-- 5 files changed, 163 insertions(+), 39 deletions(-) diff --git a/.travis.yml b/.travis.yml index b38c47c5a..2739f2419 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,9 +18,13 @@ python: - 3.4 - nightly +sudo: required # needed for trusty beta +dist: trusty # needed for HarfBuzz + install: + - "travis_retry sudo add-apt-repository -y ppa:as-bahanta/raqm" - "travis_retry sudo apt-get update" - - "travis_retry sudo apt-get -qq install libfreetype6-dev liblcms2-dev python-qt4 ghostscript libffi-dev libjpeg-turbo-progs cmake imagemagick" + - "travis_retry sudo apt-get -qq install libfreetype6-dev libharfbuzz-dev libfribidi-dev libraqm-dev liblcms2-dev python-qt4 ghostscript libffi-dev libjpeg-turbo-progs cmake imagemagick" - "travis_retry pip install cffi" - "travis_retry pip install nose" - "travis_retry pip install check-manifest" diff --git a/PIL/ImageDraw.py b/PIL/ImageDraw.py index 1d5f53746..78676fd29 100644 --- a/PIL/ImageDraw.py +++ b/PIL/ImageDraw.py @@ -241,9 +241,9 @@ class ImageDraw(object): return text.split(split_character) - def text(self, xy, text, fill=None, font=None, anchor=None, *args, **kwargs): + def text(self, xy, text, fill=None, font=None, anchor=None, *args, **kwargs, direction=None, features=[]): if self._multiline_check(text): - return self.multiline_text(xy, text, fill, font, anchor, *args, **kwargs) + return self.multiline_text(xy, text, fill, font, anchor, *args, **kwargs, direction=direction, features=features) ink, fill = self._getink(fill) if font is None: @@ -252,17 +252,17 @@ class ImageDraw(object): ink = fill if ink is not None: try: - mask, offset = font.getmask2(text, self.fontmode) + mask, offset = font.getmask2(text, self.fontmode, direction=direction, features=features) xy = xy[0] + offset[0], xy[1] + offset[1] except AttributeError: try: - mask = font.getmask(text, self.fontmode) + mask = font.getmask(text, self.fontmode, direction, features) except TypeError: mask = font.getmask(text) self.draw.draw_bitmap(xy, mask, ink) def multiline_text(self, xy, text, fill=None, font=None, anchor=None, - spacing=4, align="left"): + spacing=4, align="left", direction=None, features=[]): widths = [] max_width = 0 lines = self._multiline_split(text) @@ -281,7 +281,7 @@ class ImageDraw(object): left += (max_width - widths[idx]) else: assert False, 'align must be "left", "center" or "right"' - self.text((left, top), line, fill, font, anchor) + self.text((left, top), line, fill, font, anchor, direction=direction, features=features) top += line_spacing left = xy[0] diff --git a/PIL/ImageFont.py b/PIL/ImageFont.py index af1166dde..1dad30b31 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -144,13 +144,13 @@ class FreeTypeFont(object): def getoffset(self, text): return self.font.getsize(text)[1] - def getmask(self, text, mode=""): - return self.getmask2(text, mode)[0] + def getmask(self, text, mode="", direction=None, features=[]): + return self.getmask2(text, mode, direction, features)[0] - def getmask2(self, text, mode="", fill=Image.core.fill): + def getmask2(self, text, mode="", fill=Image.core.fill, direction=None, features=[]): size, offset = self.font.getsize(text) im = fill("L", size, 0) - self.font.render(text, im.id, mode == "1") + self.font.render(text, im.id, mode == "1", direction, features) return im, offset def font_variant(self, font=None, size=None, index=None, encoding=None): diff --git a/_imagingft.c b/_imagingft.c index dc1661f3e..e27e5603e 100644 --- a/_imagingft.c +++ b/_imagingft.c @@ -48,6 +48,7 @@ struct { } ft_errors[] = #include FT_ERRORS_H +#include "raqm.h" /* -------------------------------------------------------------------- */ /* font objects */ @@ -327,11 +328,7 @@ font_render(FontObject* self, PyObject* args) int index, error, ascender; int load_flags; unsigned char *source; - FT_ULong ch; FT_GlyphSlot glyph; - FT_Bool kerning = FT_HAS_KERNING(self->face); - FT_UInt last_index = 0; - /* render string into given buffer (the buffer *must* have the right size, or this will crash) */ PyObject* string; @@ -339,16 +336,127 @@ font_render(FontObject* self, PyObject* args) int mask = 0; int temp; int xx, x0, x1; - if (!PyArg_ParseTuple(args, "On|i:render", &string, &id, &mask)) + const char *dir = NULL; + raqm_direction_t direction; + raqm_t *rq; + size_t count; + raqm_glyph_t *glyph_info; + PyObject *features = NULL; + + if (!PyArg_ParseTuple(args, "On|izO:render", &string, &id, &mask, &dir, &features)) return NULL; + rq = raqm_create(); + if (rq == NULL) { + PyErr_SetString(PyExc_ValueError, "raqm_create() failed."); + goto failed; + } + #if PY_VERSION_HEX >= 0x03000000 - if (!PyUnicode_Check(string)) { + if (PyUnicode_Check(string)) { + Py_ssize_t size = PyUnicode_GET_LENGTH(string); + Py_UCS4 text[size]; + PyUnicode_READY(string); + if (!PyUnicode_AsUCS4(string, text, size, 0)) + goto failed; + if (!raqm_set_text(rq, text, size)) { + PyErr_SetString(PyExc_ValueError, "raqm_set_text() failed"); + goto failed; + } + } #else - if (!PyUnicode_Check(string) && !PyString_Check(string)) { + if (PyUnicode_Check(string)) { + Py_UNICODE *text = PyUnicode_AS_UNICODE(string); + Py_ssize_t size = PyUnicode_GET_SIZE(string); + if (!raqm_set_text(rq, text, size)) { + PyErr_SetString(PyExc_ValueError, "raqm_set_text() failed"); + goto failed; + } + } + else if (PyString_Check(string)) { + char *text = PyString_AS_STRING(string); + int size = PyString_GET_SIZE(string); + if (!raqm_set_text_utf8(rq, text, size)) { + PyErr_SetString(PyExc_ValueError, "raqm_set_text_utf8() failed"); + goto failed; + } + } #endif + else { PyErr_SetString(PyExc_TypeError, "expected string"); - return NULL; + goto failed; + } + + direction = RAQM_DIRECTION_DEFAULT; + if (dir) { + if (strcmp(dir, "rtl") == 0) + direction = RAQM_DIRECTION_RTL; + else if (strcmp(dir, "ltr") == 0) + direction = RAQM_DIRECTION_LTR; + else if (strcmp(dir, "ttb") == 0) + direction = RAQM_DIRECTION_TTB; + else { + PyErr_SetString(PyExc_ValueError, "direction must be either 'rtl', 'ltr' or 'ttb'"); + goto failed; + } + } + + if (!raqm_set_par_direction(rq, direction)) { + PyErr_SetString(PyExc_ValueError, "raqm_set_par_direction() failed"); + goto failed; + } + + if (features) { + int len; + PyObject *seq = PySequence_Fast(features, "expected a sequence"); + if (!seq) { + goto failed; + } + + len = PySequence_Size(seq); + for (i = 0; i < len; i++) { + PyObject *item = PySequence_Fast_GET_ITEM(seq, i); + char *feature = NULL; + Py_ssize_t size = 0; +#if PY_VERSION_HEX >= 0x03000000 + if (!PyUnicode_Check(item) || + PyUnicode_READY(string) != 0 || + PyUnicode_KIND(item) != PyUnicode_1BYTE_KIND) { + PyErr_SetString(PyExc_TypeError, "expected an ASCII string"); + goto failed; + } + + feature = PyUnicode_1BYTE_DATA(item); + size = PyUnicode_GET_LENGTH(item); +#else + if (!PyString_Check(item)) { + PyErr_SetString(PyExc_TypeError, "expected a string"); + goto failed; + } + feature = PyString_AsString(item); + size = PyString_GET_SIZE(item); +#endif + if (!raqm_add_font_feature(rq, feature, size)) { + PyErr_SetString(PyExc_ValueError, "raqm_add_font_feature() failed"); + goto failed; + } + } + } + + if (!raqm_set_freetype_face(rq, self->face)) { + PyErr_SetString(PyExc_RuntimeError, "raqm_set_freetype_face() failed."); + goto failed; + } + + if (!raqm_layout (rq)) { + PyErr_SetString(PyExc_RuntimeError, "raqm_layout() failed."); + goto failed; + } + + glyph_info = raqm_get_glyphs(rq, &count); + if (glyph_info == NULL) { + PyErr_SetString(PyExc_ValueError, "raqm_get_glyphs() failed."); + goto failed; } im = (Imaging) id; @@ -358,36 +466,36 @@ font_render(FontObject* self, PyObject* args) load_flags |= FT_LOAD_TARGET_MONO; ascender = 0; - for (i = 0; font_getchar(string, i, &ch); i++) { - index = FT_Get_Char_Index(self->face, ch); + for (i = 0; i < count; i++) { + index = glyph_info[i].index; error = FT_Load_Glyph(self->face, index, load_flags); - if (error) - return geterror(error); + if (error) { + geterror(error); + goto failed; + } glyph = self->face->glyph; temp = (glyph->bitmap.rows - glyph->bitmap_top); + temp -= PIXEL(glyph_info[i].y_offset); if (temp > ascender) ascender = temp; } - for (x = i = 0; font_getchar(string, i, &ch); i++) { + for (x = i = 0; i < count; i++) { if (i == 0 && self->face->glyph->metrics.horiBearingX < 0) x = -PIXEL(self->face->glyph->metrics.horiBearingX); - index = FT_Get_Char_Index(self->face, ch); - if (kerning && last_index && index) { - FT_Vector delta; - FT_Get_Kerning(self->face, last_index, index, ft_kerning_default, - &delta); - x += delta.x >> 6; - } + index = glyph_info[i].index; error = FT_Load_Glyph(self->face, index, load_flags); - if (error) - return geterror(error); + if (error){ + geterror(error); + goto failed; + } glyph = self->face->glyph; source = (unsigned char*) glyph->bitmap.buffer; xx = x + glyph->bitmap_left; + xx += PIXEL(glyph_info[i].x_offset); x0 = 0; x1 = glyph->bitmap.width; if (xx < 0) @@ -399,6 +507,7 @@ font_render(FontObject* self, PyObject* args) /* use monochrome mask (on palette images, etc) */ for (y = 0; y < glyph->bitmap.rows; y++) { int yy = y + im->ysize - (PIXEL(glyph->metrics.horiBearingY) + ascender); + yy -= PIXEL(glyph_info[i].y_offset); if (yy >= 0 && yy < im->ysize) { /* blend this glyph into the buffer */ unsigned char *target = im->image8[yy] + xx; @@ -418,6 +527,7 @@ font_render(FontObject* self, PyObject* args) /* use antialiased rendering */ for (y = 0; y < glyph->bitmap.rows; y++) { int yy = y + im->ysize - (PIXEL(glyph->metrics.horiBearingY) + ascender); + yy -= PIXEL(glyph_info[i].y_offset); if (yy >= 0 && yy < im->ysize) { /* blend this glyph into the buffer */ int i; @@ -430,11 +540,14 @@ font_render(FontObject* self, PyObject* args) source += glyph->bitmap.pitch; } } - x += PIXEL(glyph->metrics.horiAdvance); - last_index = index; + x += PIXEL(glyph_info[i].x_advance); } Py_RETURN_NONE; + +failed: + raqm_destroy(rq); + return NULL; } static void diff --git a/setup.py b/setup.py index 265c097ba..329be984e 100644 --- a/setup.py +++ b/setup.py @@ -99,11 +99,12 @@ TIFF_ROOT = None FREETYPE_ROOT = None LCMS_ROOT = None +RAQM_ROOT = None class pil_build_ext(build_ext): class feature: - zlib = jpeg = tiff = freetype = tcl = tk = lcms = webp = webpmux = None + zlib = jpeg = tiff = freetype = raqm = tcl = tk = lcms = webp = webpmux = None jpeg2000 = None required = set(['jpeg', 'zlib']) @@ -160,7 +161,7 @@ class pil_build_ext(build_ext): # add configured kits for root in (TCL_ROOT, JPEG_ROOT, JPEG2K_ROOT, TIFF_ROOT, ZLIB_ROOT, - FREETYPE_ROOT, LCMS_ROOT): + FREETYPE_ROOT, LCMS_ROOT, RAQM_ROOT): if isinstance(root, type(())): lib_root, include_root = root else: @@ -467,6 +468,11 @@ class pil_build_ext(build_ext): if dir: _add_directory(self.compiler.include_dirs, dir, 0) + if feature.want('raqm'): + if _find_include_file(self, "raqm.h"): + if _find_library_file(self, "raqm"): + feature.raqm = "raqm" + if feature.want('lcms'): if _find_include_file(self, "lcms2.h"): if _find_library_file(self, "lcms2"): @@ -554,9 +560,9 @@ class pil_build_ext(build_ext): # # additional libraries - if feature.freetype: + if feature.freetype and feature.raqm: exts.append(Extension( - "PIL._imagingft", ["_imagingft.c"], libraries=["freetype"])) + "PIL._imagingft", ["_imagingft.c"], libraries=["freetype", "fribidi" , "harfbuzz", "raqm"])) if os.path.isfile("_imagingcms.c") and feature.lcms: extra = [] @@ -647,6 +653,7 @@ class pil_build_ext(build_ext): (feature.zlib, "ZLIB (PNG/ZIP)"), (feature.tiff, "LIBTIFF"), (feature.freetype, "FREETYPE2"), + (feature.raqm, "RAQM"), (feature.lcms, "LITTLECMS2"), (feature.webp, "WEBP"), (feature.webpmux, "WEBPMUX"), ] From 62b473c584ffcfe4e05370a9d8f27308571ccbc7 Mon Sep 17 00:00:00 2001 From: shamsa Date: Mon, 25 Jan 2016 14:51:27 +0400 Subject: [PATCH 2/9] Fix failure in test_imagefont.py --- PIL/ImageFont.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PIL/ImageFont.py b/PIL/ImageFont.py index 1dad30b31..26767c4d0 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -145,7 +145,7 @@ class FreeTypeFont(object): return self.font.getsize(text)[1] def getmask(self, text, mode="", direction=None, features=[]): - return self.getmask2(text, mode, direction, features)[0] + return self.getmask2(text, mode, direction=direction, features=features)[0] def getmask2(self, text, mode="", fill=Image.core.fill, direction=None, features=[]): size, offset = self.font.getsize(text) From 4620e063686f90bac040816258748cc8c9a51604 Mon Sep 17 00:00:00 2001 From: shamsa Date: Mon, 25 Jan 2016 15:16:35 +0400 Subject: [PATCH 3/9] Fix build with python 3.2 --- _imagingft.c | 45 +++++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/_imagingft.c b/_imagingft.c index e27e5603e..a28e4af08 100644 --- a/_imagingft.c +++ b/_imagingft.c @@ -352,27 +352,16 @@ font_render(FontObject* self, PyObject* args) goto failed; } -#if PY_VERSION_HEX >= 0x03000000 - if (PyUnicode_Check(string)) { - Py_ssize_t size = PyUnicode_GET_LENGTH(string); - Py_UCS4 text[size]; - PyUnicode_READY(string); - if (!PyUnicode_AsUCS4(string, text, size, 0)) - goto failed; - if (!raqm_set_text(rq, text, size)) { - PyErr_SetString(PyExc_ValueError, "raqm_set_text() failed"); - goto failed; - } - } -#else + if (PyUnicode_Check(string)) { Py_UNICODE *text = PyUnicode_AS_UNICODE(string); Py_ssize_t size = PyUnicode_GET_SIZE(string); - if (!raqm_set_text(rq, text, size)) { + if (!raqm_set_text(rq, (const uint32_t *)(text), size)) { PyErr_SetString(PyExc_ValueError, "raqm_set_text() failed"); goto failed; } } +#if PY_VERSION_HEX < 0x03000000 else if (PyString_Check(string)) { char *text = PyString_AS_STRING(string); int size = PyString_GET_SIZE(string); @@ -418,23 +407,27 @@ font_render(FontObject* self, PyObject* args) PyObject *item = PySequence_Fast_GET_ITEM(seq, i); char *feature = NULL; Py_ssize_t size = 0; -#if PY_VERSION_HEX >= 0x03000000 - if (!PyUnicode_Check(item) || - PyUnicode_READY(string) != 0 || - PyUnicode_KIND(item) != PyUnicode_1BYTE_KIND) { - PyErr_SetString(PyExc_TypeError, "expected an ASCII string"); - goto failed; - } + PyObject *bytes; - feature = PyUnicode_1BYTE_DATA(item); - size = PyUnicode_GET_LENGTH(item); +#if PY_VERSION_HEX >= 0x03000000 + if (!PyUnicode_Check(item)) { #else - if (!PyString_Check(item)) { + if (!PyUnicode_Check(item) && !PyString_Check(item)) { +#endif PyErr_SetString(PyExc_TypeError, "expected a string"); goto failed; } - feature = PyString_AsString(item); - size = PyString_GET_SIZE(item); + + if (!PyUnicode_Check(item)) { + bytes = PyUnicode_AsUTF8String(item); + feature = PyBytes_AS_STRING(bytes); + size = PyBytes_GET_SIZE(bytes); + } +#if PY_VERSION_HEX < 0x03000000 + else { + feature = PyString_AsString(item); + size = PyString_GET_SIZE(item); + } #endif if (!raqm_add_font_feature(rq, feature, size)) { PyErr_SetString(PyExc_ValueError, "raqm_add_font_feature() failed"); From 3c3fc12480355de14ca777e39d631e379729b645 Mon Sep 17 00:00:00 2001 From: shamsa Date: Wed, 27 Jan 2016 09:09:26 +0400 Subject: [PATCH 4/9] fallback code --- PIL/ImageDraw.py | 4 +- PIL/ImageFont.py | 4 +- _imagingft.c | 191 ++++++++++++++++++++++++++++++++++++----------- setup.py | 17 ++++- 4 files changed, 165 insertions(+), 51 deletions(-) diff --git a/PIL/ImageDraw.py b/PIL/ImageDraw.py index 78676fd29..c24e7d290 100644 --- a/PIL/ImageDraw.py +++ b/PIL/ImageDraw.py @@ -241,7 +241,7 @@ class ImageDraw(object): return text.split(split_character) - def text(self, xy, text, fill=None, font=None, anchor=None, *args, **kwargs, direction=None, features=[]): + def text(self, xy, text, fill=None, font=None, anchor=None, *args, **kwargs, direction=None, features=None): if self._multiline_check(text): return self.multiline_text(xy, text, fill, font, anchor, *args, **kwargs, direction=direction, features=features) @@ -262,7 +262,7 @@ class ImageDraw(object): self.draw.draw_bitmap(xy, mask, ink) def multiline_text(self, xy, text, fill=None, font=None, anchor=None, - spacing=4, align="left", direction=None, features=[]): + spacing=4, align="left", direction=None, features=None): widths = [] max_width = 0 lines = self._multiline_split(text) diff --git a/PIL/ImageFont.py b/PIL/ImageFont.py index 26767c4d0..f6cbd1c41 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -144,10 +144,10 @@ class FreeTypeFont(object): def getoffset(self, text): return self.font.getsize(text)[1] - def getmask(self, text, mode="", direction=None, features=[]): + def getmask(self, text, mode="", direction=None, features=None): return self.getmask2(text, mode, direction=direction, features=features)[0] - def getmask2(self, text, mode="", fill=Image.core.fill, direction=None, features=[]): + def getmask2(self, text, mode="", fill=Image.core.fill, direction=None, features=None): size, offset = self.font.getsize(text) im = fill("L", size, 0) self.font.render(text, im.id, mode == "1", direction, features) diff --git a/_imagingft.c b/_imagingft.c index a28e4af08..d555dc0d6 100644 --- a/_imagingft.c +++ b/_imagingft.c @@ -41,6 +41,23 @@ #define FT_ERRORDEF( e, v, s ) { e, s }, #define FT_ERROR_START_LIST { #define FT_ERROR_END_LIST { 0, 0 } }; +#ifdef HAVE_RAQM +#include +#else +typedef enum +{ + RAQM_DIRECTION_DEFAULT, + RAQM_DIRECTION_RTL, + RAQM_DIRECTION_LTR, + RAQM_DIRECTION_TTB +} raqm_direction_t; +#endif + +typedef struct +{ + int index, x_offset, x_advance, y_offset; + unsigned int cluster; +} GlyphInfo; struct { int code; @@ -48,7 +65,6 @@ struct { } ft_errors[] = #include FT_ERRORS_H -#include "raqm.h" /* -------------------------------------------------------------------- */ /* font objects */ @@ -320,31 +336,17 @@ font_getabc(FontObject* self, PyObject* args) return Py_BuildValue("ddd", a, b, c); } -static PyObject* -font_render(FontObject* self, PyObject* args) -{ - int i, x, y; - Imaging im; - int index, error, ascender; - int load_flags; - unsigned char *source; - FT_GlyphSlot glyph; - /* render string into given buffer (the buffer *must* have - the right size, or this will crash) */ - PyObject* string; - Py_ssize_t id; - int mask = 0; - int temp; - int xx, x0, x1; - const char *dir = NULL; - raqm_direction_t direction; - raqm_t *rq; - size_t count; - raqm_glyph_t *glyph_info; - PyObject *features = NULL; - if (!PyArg_ParseTuple(args, "On|izO:render", &string, &id, &mask, &dir, &features)) - return NULL; +static size_t +text_layout(PyObject* string, FontObject* self, const char* dir, + PyObject *features ,GlyphInfo **glyph_info, int mask) +{ +#ifdef HAVE_RAQM + int i = 0; + raqm_t *rq; + size_t count = 0; + raqm_glyph_t *glyphs; + raqm_direction_t direction; rq = raqm_create(); if (rq == NULL) { @@ -352,7 +354,6 @@ font_render(FontObject* self, PyObject* args) goto failed; } - if (PyUnicode_Check(string)) { Py_UNICODE *text = PyUnicode_AS_UNICODE(string); Py_ssize_t size = PyUnicode_GET_SIZE(string); @@ -395,7 +396,7 @@ font_render(FontObject* self, PyObject* args) goto failed; } - if (features) { + if (features != Py_None) { int len; PyObject *seq = PySequence_Fast(features, "expected a sequence"); if (!seq) { @@ -418,8 +419,10 @@ font_render(FontObject* self, PyObject* args) goto failed; } - if (!PyUnicode_Check(item)) { + if (PyUnicode_Check(item)) { bytes = PyUnicode_AsUTF8String(item); + if (bytes == NULL) + goto failed; feature = PyBytes_AS_STRING(bytes); size = PyBytes_GET_SIZE(bytes); } @@ -446,12 +449,121 @@ font_render(FontObject* self, PyObject* args) goto failed; } - glyph_info = raqm_get_glyphs(rq, &count); - if (glyph_info == NULL) { + glyphs = raqm_get_glyphs(rq, &count); + if (glyphs == NULL) { PyErr_SetString(PyExc_ValueError, "raqm_get_glyphs() failed."); + count = 0; goto failed; } + (*glyph_info) = PyMem_New(GlyphInfo, count); + if ((*glyph_info) == NULL) { + PyErr_SetString(PyExc_MemoryError, "PyMem_New() failed"); + count = 0; + goto failed; + } + + for (i = 0; i < count; i++) { + (*glyph_info)[i].index = glyphs[i].index; + (*glyph_info)[i].x_offset = glyphs[i].x_offset; + (*glyph_info)[i].x_advance = glyphs[i].x_advance; + (*glyph_info)[i].y_offset = glyphs[i].y_offset; + (*glyph_info)[i].cluster = glyphs[i].cluster; + } + +failed: + raqm_destroy (rq); + return count; + +#else + if (features != Py_None || dir != NULL) + PyErr_SetString(PyExc_KeyError, "Raqm is missing."); + + int error, load_flags; + FT_ULong ch; + Py_ssize_t count; + FT_GlyphSlot glyph; + FT_Bool kerning = FT_HAS_KERNING(self->face); + FT_UInt last_index = 0; +#if PY_VERSION_HEX >= 0x03000000 + if (!PyUnicode_Check(string)) { +#else + if (!PyUnicode_Check(string) && !PyString_Check(string)) { +#endif + PyErr_SetString(PyExc_TypeError, "expected string"); + return 0; + } + + count = 0; + while (font_getchar(string, count, &ch)) + count++; + if (count == 0) + return 0; + + (*glyph_info) = PyMem_New(GlyphInfo, count); + if ((*glyph_info) == NULL) { + PyErr_SetString(PyExc_MemoryError, "PyMem_New() failed"); + return 0; + } + + load_flags = FT_LOAD_RENDER|FT_LOAD_NO_BITMAP; + if (mask) + load_flags |= FT_LOAD_TARGET_MONO; + int i; + for (i = 0; font_getchar(string, i, &ch); i++) { + (*glyph_info)[i].index = FT_Get_Char_Index(self->face, ch); + error = FT_Load_Glyph(self->face, (*glyph_info)[i].index, load_flags); + if (error) { + geterror(error); + return 0; + } + glyph = self->face->glyph; + (*glyph_info)[i].x_offset=0; + (*glyph_info)[i].y_offset=0; + if (kerning && last_index && (*glyph_info)[i].index) { + FT_Vector delta; + if (FT_Get_Kerning(self->face, last_index, (*glyph_info)[i].index, + ft_kerning_default,&delta) == 0) + (*glyph_info)[i-1].x_advance += PIXEL(delta.x); + } + + (*glyph_info)[i].x_advance = glyph->metrics.horiAdvance; + last_index = (*glyph_info)[i].index; + (*glyph_info)[i].cluster = ch; + } + return count; +#endif +} + +static PyObject* +font_render(FontObject* self, PyObject* args) +{ + int i, x, y; + Imaging im; + int index, error, ascender; + int load_flags; + unsigned char *source; + FT_GlyphSlot glyph; + /* render string into given buffer (the buffer *must* have + the right size, or this will crash) */ + PyObject* string; + Py_ssize_t id; + int mask = 0; + int temp; + int xx, x0, x1; + const char *dir = NULL; + size_t count; + GlyphInfo *glyph_info; + PyObject *features = NULL; + + if (!PyArg_ParseTuple(args, "On|izO:render", &string, &id, &mask, &dir, &features)) + return NULL; + + glyph_info = NULL; + count = text_layout(string, self, dir, features, &glyph_info, mask); + if (count == 0) + return NULL; + im = (Imaging) id; /* Note: bitmap fonts within ttf fonts do not work, see #891/pr#960 */ load_flags = FT_LOAD_RENDER|FT_LOAD_NO_BITMAP; @@ -462,10 +574,9 @@ font_render(FontObject* self, PyObject* args) for (i = 0; i < count; i++) { index = glyph_info[i].index; error = FT_Load_Glyph(self->face, index, load_flags); - if (error) { - geterror(error); - goto failed; - } + if (error) + return geterror(error); + glyph = self->face->glyph; temp = (glyph->bitmap.rows - glyph->bitmap_top); temp -= PIXEL(glyph_info[i].y_offset); @@ -479,10 +590,8 @@ font_render(FontObject* self, PyObject* args) index = glyph_info[i].index; error = FT_Load_Glyph(self->face, index, load_flags); - if (error){ - geterror(error); - goto failed; - } + if (error) + return geterror(error); glyph = self->face->glyph; @@ -535,12 +644,8 @@ font_render(FontObject* self, PyObject* args) } x += PIXEL(glyph_info[i].x_advance); } - + PyMem_Del(glyph_info); Py_RETURN_NONE; - -failed: - raqm_destroy(rq); - return NULL; } static void diff --git a/setup.py b/setup.py index 329be984e..edc435966 100644 --- a/setup.py +++ b/setup.py @@ -470,8 +470,10 @@ class pil_build_ext(build_ext): if feature.want('raqm'): if _find_include_file(self, "raqm.h"): - if _find_library_file(self, "raqm"): - feature.raqm = "raqm" + if _find_library_file(self, "raqm") and \ + _find_library_file(self, "harfbuzz") and \ + _find_library_file(self, "fribidi"): + feature.raqm = ["raqm", "harfbuzz", "fribidi"] if feature.want('lcms'): if _find_include_file(self, "lcms2.h"): @@ -560,9 +562,16 @@ class pil_build_ext(build_ext): # # additional libraries - if feature.freetype and feature.raqm: + if feature.freetype: + libs = ["freetype"] + defs = [] + if feature.raqm: + libs.extend(feature.raqm) + defs.append(('HAVE_RAQM', None)) + exts.append(Extension( - "PIL._imagingft", ["_imagingft.c"], libraries=["freetype", "fribidi" , "harfbuzz", "raqm"])) + "PIL._imagingft", ["_imagingft.c"], libraries=libs, + define_macros=defs)) if os.path.isfile("_imagingcms.c") and feature.lcms: extra = [] From 647af0d62572cf7b5d3bf88a7c9674232e0c69c1 Mon Sep 17 00:00:00 2001 From: shamsa Date: Wed, 3 Feb 2016 14:50:46 +0400 Subject: [PATCH 5/9] Document complex text layout features. --- docs/installation.rst | 6 ++++-- docs/reference/ImageDraw.rst | 10 +++++++--- docs/reference/ImageFont.rst | 4 +++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/installation.rst b/docs/installation.rst index 4d636d4a8..2ec18501a 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -138,6 +138,8 @@ Many of Pillow's features require external libraries: * Pillow does **not** support the earlier **1.5** series which ships with Ubuntu and Debian. +* **libraqm** provides complex text layout support. + Once you have installed the prerequisites, run:: $ pip install Pillow @@ -168,14 +170,14 @@ Build Options * Build flags: ``--disable-zlib``, ``--disable-jpeg``, ``--disable-tiff``, ``--disable-freetype``, ``--disable-tcl``, - ``--disable-tk``, ``--disable-lcms``, ``--disable-webp``, + ``--disable-tk``, ``--disable-lcms``, ``--disable-raqm``, ``--disable-webp``, ``--disable-webpmux``, ``--disable-jpeg2000``. Disable building the corresponding feature even if the development libraries are present on the building machine. * Build flags: ``--enable-zlib``, ``--enable-jpeg``, ``--enable-tiff``, ``--enable-freetype``, ``--enable-tcl``, - ``--enable-tk``, ``--enable-lcms``, ``--enable-webp``, + ``--enable-tk``, ``--enable-lcms``, ``--enable-raqm``, ``--enable-webp``, ``--enable-webpmux``, ``--enable-jpeg2000``. Require that the corresponding feature is built. The build will raise an exception if the libraries are not found. Webpmux (WebP metadata) relies on WebP diff --git a/docs/reference/ImageDraw.rst b/docs/reference/ImageDraw.rst index 842407c90..6e379475b 100644 --- a/docs/reference/ImageDraw.rst +++ b/docs/reference/ImageDraw.rst @@ -227,7 +227,7 @@ Methods Draw a shape. -.. py:method:: PIL.ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left") +.. py:method:: PIL.ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left", direction=None, features=None) Draws the string at the given position. @@ -240,9 +240,11 @@ Methods the number of pixels between lines. :param align: If the text is passed on to multiline_text(), "left", "center" or "right". + :param direction: Direction of the text. It can be 'rtl', 'ltr', 'ttb' or 'btt. + :param features: A list of font features used for text layout. For example, 'ligature, kerning, Medial ...etc. - -.. py:method:: PIL.ImageDraw.Draw.multiline_text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left") +.. py:method:: PIL.ImageDraw.Draw.multiline_text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left", + direction=None, features=[]) Draws the string at the given position. @@ -252,6 +254,8 @@ Methods :param font: An :py:class:`~PIL.ImageFont.ImageFont` instance. :param spacing: The number of pixels between lines. :param align: "left", "center" or "right". + :param direction: Direction of the text. + :param features: Font features used for text layout. .. py:method:: PIL.ImageDraw.Draw.textsize(text, font=None, spacing=0) diff --git a/docs/reference/ImageFont.rst b/docs/reference/ImageFont.rst index 166d977a6..40e7d7f46 100644 --- a/docs/reference/ImageFont.rst +++ b/docs/reference/ImageFont.rst @@ -51,7 +51,7 @@ Methods :return: (width, height) -.. py:method:: PIL.ImageFont.ImageFont.getmask(text, mode='') +.. py:method:: PIL.ImageFont.ImageFont.getmask(text, mode='', direction=None, features=[]) Create a bitmap for the text. @@ -63,6 +63,8 @@ Methods driver prefers; if empty, the renderer may return either mode. Note that the mode is always a string, to simplify C-level implementations. + :param direction: Direction of the text. + :param features: A list of font features used for text layout. .. versionadded:: 1.1.5 :return: An internal PIL storage memory instance as defined by the From 4aaafa08d62435da2d0e8b3dc34dd83a889733a1 Mon Sep 17 00:00:00 2001 From: shamsa Date: Wed, 3 Feb 2016 15:24:10 +0400 Subject: [PATCH 6/9] Testing complex text layout. --- PIL/ImageDraw.py | 4 +- PIL/features.py | 1 + Tests/fonts/NotoNastaliqUrdu-Regular.ttf | Bin 0 -> 497204 bytes Tests/images/test_Nastalifont_text.png | Bin 0 -> 1071 bytes Tests/images/test_arabictext_features.png | Bin 0 -> 1435 bytes Tests/images/test_complex_unicode_text.png | Bin 0 -> 1075 bytes Tests/images/test_direction_ltr.png | Bin 0 -> 1834 bytes Tests/images/test_direction_rtl.png | Bin 0 -> 1199 bytes Tests/images/test_kerning_features.png | Bin 0 -> 963 bytes Tests/images/test_ligature_features.png | Bin 0 -> 605 bytes Tests/images/test_text.png | Bin 0 -> 1088 bytes Tests/images/test_y_offset.png | Bin 0 -> 1066 bytes Tests/test_imagefontctl.py | 136 +++++++++++++++++++++ _imagingft.c | 10 +- selftest.py | 3 +- 15 files changed, 148 insertions(+), 6 deletions(-) create mode 100644 Tests/fonts/NotoNastaliqUrdu-Regular.ttf create mode 100644 Tests/images/test_Nastalifont_text.png create mode 100644 Tests/images/test_arabictext_features.png create mode 100644 Tests/images/test_complex_unicode_text.png create mode 100644 Tests/images/test_direction_ltr.png create mode 100644 Tests/images/test_direction_rtl.png create mode 100644 Tests/images/test_kerning_features.png create mode 100644 Tests/images/test_ligature_features.png create mode 100644 Tests/images/test_text.png create mode 100644 Tests/images/test_y_offset.png create mode 100644 Tests/test_imagefontctl.py diff --git a/PIL/ImageDraw.py b/PIL/ImageDraw.py index c24e7d290..b4b243180 100644 --- a/PIL/ImageDraw.py +++ b/PIL/ImageDraw.py @@ -241,9 +241,9 @@ class ImageDraw(object): return text.split(split_character) - def text(self, xy, text, fill=None, font=None, anchor=None, *args, **kwargs, direction=None, features=None): + def text(self, xy, text, fill=None, font=None, anchor=None, direction=None, features=None, *args, **kwargs): if self._multiline_check(text): - return self.multiline_text(xy, text, fill, font, anchor, *args, **kwargs, direction=direction, features=features) + return self.multiline_text(xy, text, fill, font, anchor, direction=direction, features=features, *args, **kwargs) ink, fill = self._getink(fill) if font is None: diff --git a/PIL/features.py b/PIL/features.py index fd87f094f..53ce38bb0 100644 --- a/PIL/features.py +++ b/PIL/features.py @@ -5,6 +5,7 @@ modules = { "tkinter": "PIL._imagingtk", "freetype2": "PIL._imagingft", "littlecms2": "PIL._imagingcms", + "raqm": "PIL._imagingft", "webp": "PIL._webp", "transp_webp": ("WEBP", "WebPDecoderBuggyAlpha") } diff --git a/Tests/fonts/NotoNastaliqUrdu-Regular.ttf b/Tests/fonts/NotoNastaliqUrdu-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..891f633d802bbece8eb3a701a62bdcb69c45b74c GIT binary patch literal 497204 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�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

W0|`S`BMU~ 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 literal 0 HcmV?d00001 diff --git a/Tests/images/test_arabictext_features.png b/Tests/images/test_arabictext_features.png new file mode 100644 index 0000000000000000000000000000000000000000..9bfa5a931cf0abab932dba401a7d5a7c5ed23aaa GIT binary patch literal 1435 zcmcIk=~L1P00mPN6BxxKL8(zm+b-NvF(KA#67s;jNIWo2#?@8wWYy6u)U7-wH#3jb zG1JCcfz~rkz#mbW3|4rqY5l5ITNPBijD)pNNS7Wj!EZyAlpG{XQW;X{Pz0Mh~Ua37cr|6%P8~Ie&QNvlMK^-nz zS%01bt#j(|`pITBDs>)g7WG@wCaNEj*+0N3&$SsaT! z*7KY+v>xt+IsLYZsc?Fe~ac z`Qp;N95GrMv+#*LF4o<$%ERIe8ut2(@X5zCKH+ik0$#gIuo-is^^u8!r<3327Rp?R zImJbY^u_nN$@@w(Rn?7NuWXLF*hlEu18*9u;EIpxRgQPl7F2UacGSWlR@$XbVMJeG z6<{|g*4gol>m9e`GiAvI7QmK};`><`zrpH(;R;I4roNjoq!^_vh`-zi%Y?n%z?@`7 zj#v)@Q#DE3rEAS;!$$ZD^Tw68o$Ayc3dw>tVH}$N`}by121A%y3#na+i!%jQEN#Kn zY}wopil!UOC97?h^RkF0D#O~CFro>K+uEHlf!!4KB@T~ZTW8c5e76T23t=GNpzyiv z@3C6C1K29mQxIq8Q67V@T_*>+J>h$kvgY}8z}qipOroM=%KO1JjvuP+#h#~>g*2Tumm7Im>51$8Y8v-I z-D}l6f)4okisB3?G+At3$GWSoomuZ^Z z#$aCXlD7Q1R4S8bSxBvQ&C_$hjjKp;BAt&(}a5U(_wc1iTq~}4_tb-m(0^YJ@ ze9qaPZpU!(?y!MoweN)fFc8Rq-vv(WVXx8tu}R`{)9d5z?jnp%)EOOQ1gJ@W{ zBn1G+*m;g5j0kgNsSDP3@P_;=lbxao>(xG2Dd<3P*<`-Cl>xqPs-wNitye(~O1bl= zH1TnrZo?%vV1M|`qGgpkd{bH~M2-zq3gI|I0na4Q_~!7o{5=O(B4uVP+MzT}hH_ud zA*)5_*^_X*mXwD04T8NDIq_&2ftW;oi!3w{c%Ronc1EG&aREiO31=&-1IoA8&+4EF z)-6nNZ%_VK#>jZ-Ks_Cx01Ba7`~Cg+T>CWTQ11vfK>|8e_+LIMA%pcCriM5@PN}UV zxNg716Oi2!5giEb>FSge(t!fb;lsA6mJxc<$q^2rl2A?1Eo8BDSvn1B^HSINYd)8a z1jf#3?wf>MzGzMx!tMOjns1kcT22mIR1(Z+MALeMK49j_U+=(J)!0qs2XV!2(*y#T zQ8%A+FA(UuItrqNT`jA<4Mn4B5-IQjddoR~Foa_rVXEL&a!jL&`pr-hF#C_sOT-d8 h>dycC&uH!6hPvF7xqAE}Uf(%g2-Vx)i|@g@^e?ZOrF{SZ literal 0 HcmV?d00001 diff --git a/Tests/images/test_complex_unicode_text.png b/Tests/images/test_complex_unicode_text.png new file mode 100644 index 0000000000000000000000000000000000000000..565a2f9328df4c5dab8218c59c88360dfc7f40a3 GIT binary patch literal 1075 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD_j{|3XDu79}@++fWy=SPhob%k_j@ zq+(l?j<^^vzL;4wL87GO*i9CvlBxo}c?T_xpUcShKl}c<;@hwP*R5v%wav8^%&1Nu%_g;-y!hMn@f+@aTJlOq;kH#VQuPq+`lh^jPo^3jQXt4on-{I<| z##S1h$~&0t`2H^Bs6MQ0t+4+SP%qdgW6ECEswBg) zdexRnRgvX?^kTU8F68)qcw#`y_q_|R?#!vyIP{i5r$MPE`01p*eFs$^P2-7t+1uW@ zq4WrMEtkl{$z5jZi^{?}qj=g6J5-qZteaORDe`dTLiv3mh3wY6yPWc0RZ6JNO>IB4 zuSj)^(GJ~b+a5-(<8`g9{o&^-tJkEo$NE;zWnsRym(GiS9pV+uWh#Dn_!G;Hge?c> zdu&oyFaNORa9==3$re+Q!)NaW3G=>_jb+L{O7`4jj6`Dt^$EAx9!t`=wh1-|jVM=wMX_JhpPlf^`S1QsyQtAE$fP|=qIwS;g%JR&Ea3)zB~J$_UF?9E&PWL z7EMx4^!}0e;`7y|z4O&G&&;_Y_{)ajZ2`Xxb9Z9WBFe@?KpiJMon zwD{bwfR^9q1GY^qIDNB=De6Jw3-05G_Ouy!oc(@HQumP38kyfK#CAx{YnksPSasO> zYq{23ZmF7;st#^nw?g-!S_boj_#Zsiru|quF>mR!Y}Q?g=3mUKHMUAO?7hHf qKkWw3-LrE2D!?p4W3=S+;d<*Y@4_dY7WM!Z1`M9AelF{r5}E)SMcv&1 literal 0 HcmV?d00001 diff --git a/Tests/images/test_direction_ltr.png b/Tests/images/test_direction_ltr.png new file mode 100644 index 0000000000000000000000000000000000000000..42239334d129e60638da294d201c97e440eed4a3 GIT binary patch literal 1834 zcmd6o`#al*0><^G4n;dk-Qtu@ogfiZTspQjnprJcmn7;kN`xkzphOy%S?W@)=Cs5$ zHMDBxo*>jc?U;O18C91^Nt-4{i3$s;;yC}sK0mzA`#kUOpZE496jEE$SW`_+P22lh zgrAz)0o(l^rEzdS*^y<%YHI3h-iWUQQkW~k*oF|C(a{g{FTbg3^HYAuL(Sx|E*Mz0 zUe3(Dnx|o{uI*M~$6o&%sMI>4Ms6c0HspB%6kN{9$c!1{@aK~eZtSjlW)ExIpgvdsjpoMn z^njuGBaSBiCgn~ZGo8$MW@ukKi+ZZQMs)Aqc=WMCwCitEbB|&enGV+}zrfM%tD8R9 zWo}jK&50Z)H;n(T+@>kmW&nme2q)p1doc-?dM-~QT?h=ckzn!Mr7&A^5pBSjIVfUP zih^~_gu=cMKM+ImVr8G>Pe%%}D70vB0LTke(Q?t=sjrAJPA2SfN<}6&C?3i|+pR!{k^IQqF1Lb8(W{j<&J|18@||=4{poNXkG~j zJZ`owayC`4}UX&uLoz;M%~!riGq zVV@fLZ#~kvf*_g}&}aE@Q^L0!CL?5pU1voToI;Adh~ICL(qQB9=i27m-9fU)oAX_D zrq2V;Tg|11rqxMS;rHk3&>itx*6`xh4dITJF6%(K&MZ$U!Yai_tQ22DmcV!2OXRQr z{+QPFROGRI>Rgs*VVX-jta0u5Y?74tvj2gv_>;nbZQ^Kxhoj<{69We<^LGlS%ktgE zlcNY$9dKk1Dee$*({oJRG<)G19)T}>`&lx9I8h=h5!xm`TJtc@DdoRw_b~Du?B<-0 z`>8!gmfG9!dlzxGWDNWKO=?WcXlee!7OtzFZ^tPT#J_KO=$_ZObwP49OaiiEUqo^b z4<+ees6FJ$>G@+fpWyb^QFDlluu|Sc(rBZ~l^5-HK}1o9Sr9$jYsWn!HWHTefe}Wf zM;XK=EIJtSC&m1sM?E^x5JJIPpK;FjdC9Fw!G=BKbE)?+D(tYxW#qv;3qlZ6Kv6xX zHxp9sxH|E}jf>e-NoNFfP+O}57uPp*jC8Gcds;=wYs^N=Djj+6O(#3e@8W-Gg4Sl9 z5iUIBriY`43(schY3YO`Nr&~^M*IHNt(f1nG^~&{sHcZQY^f|Ay&0MouUT`H$TycC zI>o>bjNsCqka9uqt6RY~%utkUV8|@A`;2|FPx#BB*%dJb=iCgV|4y8#IFkW1=6i=+ zy7;6FuhMdyZrE|*{1@o_b#2+&jq?SZaa~w0P`CxJ+v>s^Bij>U^fvtBiy4ic=X&}D zB|~oFcI5<|j+x0GSy3*mlaq-@f5C&}K4`eJb5+ay3@lwY5hWS6?9EzTf3_6A`q3E= zPj_~j2A7C>IAU+6W80F9^tjdOq|J-?Hr{er_q|sV!`hKg)#t{-vP`Tqz+`d*&>PSM zrWY9kc2b4{Tk78@YPvOMGF*{b6lx@JYJzI<{P%~iTr(4SmZ6?sak7;QV~Xws(*oB# zDo{NRUIzlD_VRrLjgEr_jQPSk=BqHYne`92xC$bNg0o9IIx9f!TNMf|++%D5DqL+? zDb22bN}Pgvx67*J+u>V=u;qD-Xf1=H3^L!9rX$N@Ro=ACxnUxxb*YGS2i16}IY(ox z+TmwdnC8E$a&bxEMn!@uv8ycvEsxz3Oq{SZH#-45Gwke@82nfn;{T<=Ig6{RD<5OS p&v%HggFwlPP>X*GXz1S2Xu`Xs$B^S|`yZ(0?S(=#eG~rk{{YR=ddUC) literal 0 HcmV?d00001 diff --git a/Tests/images/test_direction_rtl.png b/Tests/images/test_direction_rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..966b67d6b6436564ced292ce598f0561824d3b43 GIT binary patch literal 1199 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD_butYiCy+J51;or@55HiRg?6r-ni@MiSwpcTMnFSTONHW<^M(HezTlQ zTJ=+smYj>=seM>*Lm;og_3hfMsz=dte>*3#`n2!-P^NK6`s$Y33pn<-?M_rX)3WtL z^iQ=vh9VDN7KqJZS$?qeL)uB8{u_dQt=!)0w63;nzvd$5C|I{<*;_u>iUoC_zb0>u zNq(|Cpe1#2Tvl&n&lO4bL+MZb6IX6uy!@)mG6zAnSF_Xe{;sNgI{U-TSMwY0U67S) zyZN+x;<1C_53gQxe-*W3@55Wq9e(UeJUM4$+=>w4J|P>iu7aZ4Lt8%i-e7(G;PR}- zJJRbkfJU#={19Uy^{qYiYkyzs-nIQ#j2Ch|zs?@d=Nb|F_p8wj!F~Fb#*tcU%_=J9 zs6FhEEKuGf+_hnOZ_Vrg-MQ@RTSCvug;u@nE>QW>R=nz?rh$ZAM(vV!4N7-{<>zq! zb{4cd|3UVp!;Me=rio9pp8WgO!rs4_Q+t`SVBJQ}QX8{YrI;&kF19b^n0`1&f~WdW z2t$~I;I?gcK~r1i87x+_V4ug+ypW^zVXMLZ-cQF?bLOZ2So>JYg85v-?g!UDZC`vh zQS?lk-V9dhOHYm+RSU6P->Nj{-kXcMAF5yQawjHhIFWmxvX*W!;Ke&e;wNQK|rTL zNk-#x%k%@!KKQ=iXFt6A;W9DP?ZQ(S^x7IP$eXo!C(4~^Ke|C?-uVwIHtA<#v(~gJ z)%=OKD42SlGycE+lvV$CKK1yp5{>_O} zIt}Vh@fwHD&eii#-?ZQDfJp?KckN@x0jg|u2+KbiK?R&ggWLs*wmv=j@?nJ(uO-WD7juxda+1pMThpm-k=bd=nJj8 zR`19tN$h0o=62+bn##rNnOQXb=#CkEexIK0EfKox^WnE5%d>sO=kG+uoI6wby-~$; zlFG~a)hR#sYtLVGxijF<^t;dIajCvpJ#z=Y*N-&Ue63hR=GS{0QhN@}Wq8vzcj{_+ zT?UyIH`DrA9^5z-wbnOESbJS~_LNr!Qw-$2D)tqXvY%<4S&;kmQmKLTvqODX^&F$3 z|Hg4fhrZKgkXx7YaiQAJMD7g zR`ROFcR%fk<*c)v@*#>Lj#qV0V5el$O9T157ZNg!KMiEtX4$X3(k@kY&Nkps|HHZ) zY~hFVEF`@uR^FbnD}>*P)A*qR&*8EPsdMc@axXY;^XzXCDq}3*p7J64MvUi=JdKAp z`zAhL(DMCFcb0P2jh5q1oaMT5cQ{q&yh|0XySMiArzDMsoBMuLFKjv4HxU?)^Slm) zJ=rchakA;eOKcZ5a7LHDblM^C>`=_^%*aDOYF{qZmY}b5;A7v6#~;M+ z9KRG_CH^pZ!CkN1zyDeEzHQQ48E+DD$oQ_-4X&WlwJmGcZ{5H3vAgv7`ytiy*4n)~ zpXgmHANtDQHsnw+L(ke>w+p2jn7i5Kc@LDoonG3W@M@jkA^#1seJzPInmVuQ1xKm# zPW_Ol_m`u__)XJV0}k_p$tCtTBB#GvSXTbUQ=%=gf-BAW2hIV9*iDP=c~oUq_4I$pU;N_Jeq-<2^qa!Q+Yeel zY&VczcG#st_0FB-Rg4u(`}i&=TGfaiv)U)QeO~X4=*B>^`wod>hR{Ef|)Aut< YToHVAG5Nt%VCH1-boFyt=akR{08N#^oB#j- literal 0 HcmV?d00001 diff --git a/Tests/images/test_ligature_features.png b/Tests/images/test_ligature_features.png new file mode 100644 index 0000000000000000000000000000000000000000..664e9929d05990b58673d318b9518a63255675cd GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD_YdcP9bG1rm>P6@98F04ATFVzmMF0Q@R9im6O#-*c$F6F{_>e- zY$ColuDa#hx|g4;o=&RXcmH|u_rE;f&wYL^1hge8&uC{ZUh{rg zVKjNqYMqd{P`|HrSw=f!DuZXPKNFTVsqo`6+gVYMw`RSsI=o+h$HnbOCgwS+e*gXL z-kaAf+jf4f`zS4XXy>WUl=32l%D7Ce{@tmUJ%fJ+S(@RBykC4Mdg`)G8eLlsyzqCoK3SrEee%vH z>7NvLUOV~KZ<0>WF7u4_PoKB&%W@`K%nR#N`#pK?$%9Y4QWstd@$1`Vn9*(ee}C2O zM1i(6t)0O$*PaQt3yljqm(#jB6c_`Pf&}HiOk0^Zya;`fB?~gk)78&qol`;+06Lfj APXGV_ literal 0 HcmV?d00001 diff --git a/Tests/images/test_text.png b/Tests/images/test_text.png new file mode 100644 index 0000000000000000000000000000000000000000..c156399cd1bf603438c1bc1ddcfd8d8872a48b77 GIT binary patch literal 1088 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD_3@4(|L(Vy zg6AX^UU^|fPBYicvit^>h)eVPrndJE!Rdj>l{o3r)TN)tq*`tMH~oJBRa_6St0Urk8PTmi3!9^(HTd zs<3xkFUY*%o!2JFEEc9Ez4?LT4!!&*@%umKbNjIu|C;|$(4*-n!PT!UMu>Q{_yx6c9s-d)q3uMOMylP*E$We^pO6EI;_QV*Os1XjM6i^^yjEJ z8{=2aQcVZm8j+rp8`gxVX*EPAWM2q)^X>fx_G1TI>SI#bayavv9~Y?FaA#LjC9^ANx;rHW9Ze>oq%vUdnzTwT{I{v=>@xji7sy0`*19v~DtZ9*C7SUP2wk-X3 z;a%Pf9Pe3u4<2FUQsABI=FxQ7(S3tm2Jb$;Nei?qc3io+2~XVd{;$-v<0>gTe~DWM4fE`{4r literal 0 HcmV?d00001 diff --git a/Tests/images/test_y_offset.png b/Tests/images/test_y_offset.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf07b51ccd6961281310399d732c5790b2ed5d1 GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD_*pBvs=0 z$M?o>SMAP|)|-~PXr`N>%8_-FTN+oomA@N2;&#!?^F?gA zXH&$+rGEvzCQSI0rhC!1L{xUg1gqFHe&=S+G(Pt(WVi9}zXs;dXMX=X_j}BqJJ=kc#Jk$XAKKlJzIuMTsFE*xF7LN^ zj_0ed{${)(c8B*cXF03(gU%&YkJn5HlKl|vtUNW!sr=Ul?oWYnIya=Abnn0T;Ohc) z<;^-vn7^?^H)(s_+H&|`!h(wry?yh{a{5A24WBeiO7`-zi8sAHxMMKK7jRw@G3iS`^jpz0+=}tX=BUT*j1hA;*gcFmdt=jt`HU8<@gmyA4|)^K zV_NEd=u}wG2>rif>9miIAH1qm-!#_FBKOytb>{9Im!z#usg7KkiKpSeuliT4SoW)+6-0 zda;4DYyEYvu}>y zeV56eP5*Dd^Q2|de;%!!=qqZzH1>l`4~so(xZk-KORkAqT8N!td|>mYeewlP?gxA` z7&+JY-mpITcuLf*?1@#L0pF^#Hnpp7-RJjX%dIccoN_bYZ1lW*RHs62AEzJtem3@| o>CHPQ+iDS)dvN5i;G_5V-8}oXx3+Z=unb`EboFyt=akR{04mknZU6uP literal 0 HcmV?d00001 diff --git a/Tests/test_imagefontctl.py b/Tests/test_imagefontctl.py new file mode 100644 index 000000000..02c432527 --- /dev/null +++ b/Tests/test_imagefontctl.py @@ -0,0 +1,136 @@ +# -*- coding: utf-8 -*- +from helper import unittest, PillowTestCase +from PIL import Image +from PIL import ImageDraw + +FONT_SIZE = 20 +FONT_PATH = "Tests/fonts/DejaVuSans.ttf" + +try: + from PIL import ImageFont + + # check if raqm is available + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'TEST', font=ttf, fill=500, direction='ltr') + + class TestImagecomplextext(PillowTestCase): + + def test_complex_text(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'اهلا عمان', font=ttf, fill=500) + + target = 'Tests/images/test_text.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_y_offset(self): + ttf = ImageFont.truetype("Tests/fonts/NotoNastaliqUrdu-Regular.ttf", FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'هنا عمان', font=ttf, fill=500) + + target = 'Tests/images/test_y_offset.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_complex_unicode_text(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), u'مرحبا بكم', font=ttf, fill=500) + + target = 'Tests/images/test_complex_unicode_text.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_text_direction_rtl(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'English عربي', font=ttf, fill=500, direction='rtl') + + target = 'Tests/images/test_direction_rtl.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_text_direction_ltr(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'سلطنة عمان Oman', font=ttf, fill=500, direction='ltr') + + target = 'Tests/images/test_direction_ltr.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_text_direction_rtl2(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'Oman سلطنة عمان', font=ttf, fill=500, direction='rtl') + + target = 'Tests/images/test_direction_ltr.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_ligature_features(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'filling', font=ttf, fill=500, features=['-liga']) + + target = 'Tests/images/test_ligature_features.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_kerning_features(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'TeToAV', font=ttf, fill=500, features=['-kern']) + + target = 'Tests/images/test_kerning_features.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + + def test_arabictext_features(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + draw.text((0, 0), 'اللغة العربية', font=ttf, fill=500, features=['-fina','-init','-medi']) + + target = 'Tests/images/test_arabictext_features.png' + target_img = Image.open(target) + + self.assert_image_similar(im, target_img, .5) + +except (KeyError, ImportError): + class TestImagecomplextext(PillowTestCase): + def test_skip(self): + self.skipTest("KeyError") + +if __name__ == '__main__': + unittest.main() + +# End of file diff --git a/_imagingft.c b/_imagingft.c index d555dc0d6..d3aa170de 100644 --- a/_imagingft.c +++ b/_imagingft.c @@ -586,17 +586,21 @@ font_render(FontObject* self, PyObject* args) for (x = i = 0; i < count; i++) { if (i == 0 && self->face->glyph->metrics.horiBearingX < 0) - x = -PIXEL(self->face->glyph->metrics.horiBearingX); + x = -self->face->glyph->metrics.horiBearingX; index = glyph_info[i].index; error = FT_Load_Glyph(self->face, index, load_flags); if (error) return geterror(error); + if (i == 0 && self->face->glyph->metrics.horiBearingX < 0) { + x = -self->face->glyph->metrics.horiBearingX; + } + glyph = self->face->glyph; source = (unsigned char*) glyph->bitmap.buffer; - xx = x + glyph->bitmap_left; + xx = PIXEL(x) + glyph->bitmap_left; xx += PIXEL(glyph_info[i].x_offset); x0 = 0; x1 = glyph->bitmap.width; @@ -642,7 +646,7 @@ font_render(FontObject* self, PyObject* args) source += glyph->bitmap.pitch; } } - x += PIXEL(glyph_info[i].x_advance); + x += glyph_info[i].x_advance; } PyMem_Del(glyph_info); Py_RETURN_NONE; diff --git a/selftest.py b/selftest.py index 71f2354f8..b19e4a34b 100644 --- a/selftest.py +++ b/selftest.py @@ -180,7 +180,8 @@ if __name__ == "__main__": ("freetype2", "FREETYPE2"), ("littlecms2", "LITTLECMS2"), ("webp", "WEBP"), - ("transp_webp", "Transparent WEBP") + ("transp_webp", "Transparent WEBP"), + ("raqm", "RAQM") ]: supported = features.check_module(name) From c8edd8af149cb452a7768895fe0325c4467e15f1 Mon Sep 17 00:00:00 2001 From: shamsa Date: Thu, 4 Feb 2016 12:47:24 +0400 Subject: [PATCH 7/9] Solve merge conflict --- PIL/ImageDraw.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PIL/ImageDraw.py b/PIL/ImageDraw.py index b4b243180..539b66273 100644 --- a/PIL/ImageDraw.py +++ b/PIL/ImageDraw.py @@ -241,9 +241,9 @@ class ImageDraw(object): return text.split(split_character) - def text(self, xy, text, fill=None, font=None, anchor=None, direction=None, features=None, *args, **kwargs): + def text(self, xy, text, fill=None, font=None, anchor=None, *args, **kwargs): if self._multiline_check(text): - return self.multiline_text(xy, text, fill, font, anchor, direction=direction, features=features, *args, **kwargs) + return self.multiline_text(xy, text, fill, font, anchor, *args, **kwargs) ink, fill = self._getink(fill) if font is None: @@ -252,11 +252,11 @@ class ImageDraw(object): ink = fill if ink is not None: try: - mask, offset = font.getmask2(text, self.fontmode, direction=direction, features=features) + mask, offset = font.getmask2(text, self.fontmode, *args, **kwargs) xy = xy[0] + offset[0], xy[1] + offset[1] except AttributeError: try: - mask = font.getmask(text, self.fontmode, direction, features) + mask = font.getmask(text, self.fontmode, *args, **kwargs) except TypeError: mask = font.getmask(text) self.draw.draw_bitmap(xy, mask, ink) From ca3c010c240342e631e728a3e36db385f945436f Mon Sep 17 00:00:00 2001 From: shamsa Date: Tue, 16 Feb 2016 11:52:59 +0400 Subject: [PATCH 8/9] Fix gitsize function. --- PIL/ImageFont.py | 6 +- Tests/images/test_complex_unicode_text.png | Bin 1075 -> 1075 bytes _imagingft.c | 84 +++++++++++---------- 3 files changed, 47 insertions(+), 43 deletions(-) diff --git a/PIL/ImageFont.py b/PIL/ImageFont.py index f6cbd1c41..2541a21ed 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -137,8 +137,8 @@ class FreeTypeFont(object): def getmetrics(self): return self.font.ascent, self.font.descent - def getsize(self, text): - size, offset = self.font.getsize(text) + def getsize(self, text, direction=None, features=None): + size, offset = self.font.getsize(text, direction, features) return (size[0] + offset[0], size[1] + offset[1]) def getoffset(self, text): @@ -148,7 +148,7 @@ class FreeTypeFont(object): return self.getmask2(text, mode, direction=direction, features=features)[0] def getmask2(self, text, mode="", fill=Image.core.fill, direction=None, features=None): - size, offset = self.font.getsize(text) + size, offset = self.font.getsize(text, direction, features) im = fill("L", size, 0) self.font.render(text, im.id, mode == "1", direction, features) return im, offset diff --git a/Tests/images/test_complex_unicode_text.png b/Tests/images/test_complex_unicode_text.png index 565a2f9328df4c5dab8218c59c88360dfc7f40a3..dd4f6bf223fef6f5de91e9929494c109e1e85edf 100644 GIT binary patch delta 945 zcmV;i15W(22(t)~Hh**!8$&9?TNqLF5=B~s4;h6*Nf*Mvq*9_Ry5K`-NDqOC(L+xa zkwq5@!Sbn#1d&D;p$IY2%xH8n2Z=#PXPiYKMAL(Fat7zj%sDz9t?%dY?DhYzbvFBd z*4q254U!~D()q8Ymd4F68?G3wu}J?X<6$v;8JB9!WMF?5IaaQ*4! zu?VGqHPzI*8OFe$@arfINBaM%tq40{JSh0MUuHT0m&4DY4gP|el`VCv z!xz1@z>UxYog+It(%CZ$dO}zDICS)T8o4iQ4DI1?SjEZDJHlsS768-W&G1_&p(pGP z%SX`TM0hRiuSES6mc!c6+OLak;ni^Gi2u#}Je2TWI9N$?By0}f41B)2r2g|HjhYiX zLVuqHpat%Nr(h9GXz;jdumnojI@mHeFc+4=qm?OFI_InlCER<4vaNud&Q=uA1W!X( zI2PvCl|gE}H_m7gmat;&ngRG5 zK7lp8{8CT1QiJssVLR-C?#7O#7Co>BS_$F%UN%8{qsJqY(F018&;uD5={)ccaRKgE T5`#lM00000NkvXXu0mjf$pOm0 delta 945 zcmV;i15W(22(t)~Hh-K^Yz(OkZ(&5yOB87lK4cUMC0z&ulS+xQ=z65r1k0x`5=0tZgd)U5Go#UIa*!BwbjH~PLUej?4xYg|Gv^!~kLLIDc=r1L*E*a1 zKWpuM)&@zEBBmt&N4vg2%$6 zFa?god!;ivC`lu@13nJ@p$L1!D!8o9496hxxEJ912C~tdjgrczC$w^{uci z6yacaGh8y#(4=O20E*BTI>NC~ghf?aKF8qygqNRksDD5FP=67Q95n}ag(4gXtE#kl zB^0OpE?f(}p$PlKkx+#9y`j~)YCE}J0S?P_3fv|PN3w;U{ z;ggCsC!%&%iCPSY!$5d7Os<}G85H5Ep&!0faR)mMxMs&)|lb&EZdYt;Di&X-$P0a10if*btV$!q5d5 z!8HJE7;P)*MpzEJ!hV=gj%tN(LkAp($uPD2a(~87c%($vXy0T809V4Vp%earS>-Kt zYrP_~tD%h`$oTHsme z3&+B|hB8Ra_tqIL!Xm63`=}PU8lHroLJ@kyL-ltmoeLU#sdogE8hXLEuBa{HCTIiT zU-%5xmiVoaZl&gH1-fB3^f!AbwHtuF&s4%^r`F;R8C8&;uzLr1QgnJM`{X TlFJiF00000NkvXXu0mjf(Y3al diff --git a/_imagingft.c b/_imagingft.c index d3aa170de..633a812b3 100644 --- a/_imagingft.c +++ b/_imagingft.c @@ -203,86 +203,88 @@ font_getchar(PyObject* string, int index, FT_ULong* char_out) return 0; } +static size_t +text_layout(PyObject* string, FontObject* self, const char* dir, + PyObject *features ,GlyphInfo **glyph_info, int mask); + static PyObject* font_getsize(FontObject* self, PyObject* args) { int i, x, y_max, y_min; - FT_ULong ch; FT_Face face; int xoffset, yoffset; - FT_Bool kerning = FT_HAS_KERNING(self->face); - FT_UInt last_index = 0; + const char *dir = NULL; + size_t count; + GlyphInfo *glyph_info = NULL;; + PyObject *features = Py_None; /* calculate size and bearing for a given string */ PyObject* string; - if (!PyArg_ParseTuple(args, "O:getsize", &string)) + if (!PyArg_ParseTuple(args, "O|zO:getsize", &string, &dir, &features)) return NULL; -#if PY_VERSION_HEX >= 0x03000000 - if (!PyUnicode_Check(string)) { -#else - if (!PyUnicode_Check(string) && !PyString_Check(string)) { -#endif - PyErr_SetString(PyExc_TypeError, "expected string"); - return NULL; - } - face = NULL; xoffset = yoffset = 0; y_max = y_min = 0; - for (x = i = 0; font_getchar(string, i, &ch); i++) { + count = text_layout(string, self, dir, features, &glyph_info, 0); + if (count == 0) + return NULL; + + for (x = i = 0; i < count; i++) { int index, error; FT_BBox bbox; FT_Glyph glyph; face = self->face; - index = FT_Get_Char_Index(face, ch); - if (kerning && last_index && index) { - FT_Vector delta; - FT_Get_Kerning(self->face, last_index, index, ft_kerning_default, - &delta); - x += delta.x; - } - - /* Note: bitmap fonts within ttf fonts do not work, see #891/pr#960 - * Yifu Yu, 2014-10-15 - */ + index = glyph_info[i].index; + /* Note: bitmap fonts within ttf fonts do not work, see #891/pr#960 + * Yifu Yu, 2014-10-15 + */ error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP); if (error) return geterror(error); - if (i == 0) + + if (i == 0 && face->glyph->metrics.horiBearingX < 0) { xoffset = face->glyph->metrics.horiBearingX; - x += face->glyph->metrics.horiAdvance; + x -= xoffset; + } + + x += glyph_info[i].x_advance; + + if (i == count - 1) + { + int offset; + offset = glyph_info[i].x_advance - + face->glyph->metrics.width - + face->glyph->metrics.horiBearingX; + if (offset < 0) + x -= offset; + } FT_Get_Glyph(face->glyph, &glyph); FT_Glyph_Get_CBox(glyph, FT_GLYPH_BBOX_SUBPIXELS, &bbox); + bbox.yMax -= glyph_info[i].y_offset; + bbox.yMin -= glyph_info[i].y_offset; if (bbox.yMax > y_max) y_max = bbox.yMax; if (bbox.yMin < y_min) y_min = bbox.yMin; - + /* find max distance of baseline from top */ if (face->glyph->metrics.horiBearingY > yoffset) yoffset = face->glyph->metrics.horiBearingY; - - last_index = index; + FT_Done_Glyph(glyph); } if (face) { - int offset; + /* left bearing */ if (xoffset < 0) x -= xoffset; else xoffset = 0; - /* right bearing */ - offset = face->glyph->metrics.horiAdvance - - face->glyph->metrics.width - - face->glyph->metrics.horiBearingX; - if (offset < 0) - x -= offset; /* difference between the font ascender and the distance of * the baseline from the top */ yoffset = PIXEL(self->face->size->metrics.ascender - yoffset); @@ -321,7 +323,7 @@ font_getabc(FontObject* self, PyObject* args) int index, error; face = self->face; index = FT_Get_Char_Index(face, ch); - /* Note: bitmap fonts within ttf fonts do not work, see #891/pr#960 */ + /* Note: bitmap fonts within ttf fonts do not work, see #891/pr#960 */ error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP); if (error) return geterror(error); @@ -587,15 +589,15 @@ font_render(FontObject* self, PyObject* args) for (x = i = 0; i < count; i++) { if (i == 0 && self->face->glyph->metrics.horiBearingX < 0) x = -self->face->glyph->metrics.horiBearingX; - index = glyph_info[i].index; + index = glyph_info[i].index; error = FT_Load_Glyph(self->face, index, load_flags); if (error) return geterror(error); if (i == 0 && self->face->glyph->metrics.horiBearingX < 0) { x = -self->face->glyph->metrics.horiBearingX; - } + } glyph = self->face->glyph; @@ -636,6 +638,7 @@ font_render(FontObject* self, PyObject* args) yy -= PIXEL(glyph_info[i].y_offset); if (yy >= 0 && yy < im->ysize) { /* blend this glyph into the buffer */ + int i; unsigned char *target = im->image8[yy] + xx; for (i = x0; i < x1; i++) { @@ -648,6 +651,7 @@ font_render(FontObject* self, PyObject* args) } x += glyph_info[i].x_advance; } + PyMem_Del(glyph_info); Py_RETURN_NONE; } From 81dfbc7f978e382f8e4b45d44acbf7917fba6be2 Mon Sep 17 00:00:00 2001 From: shamsa Date: Thu, 18 Feb 2016 12:53:19 +0400 Subject: [PATCH 9/9] fix testing --- Tests/images/test_complex_unicode_text.png | Bin 1075 -> 1442 bytes Tests/images/test_y_offset.png | Bin 1066 -> 1604 bytes Tests/test_imagefontctl.py | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/images/test_complex_unicode_text.png b/Tests/images/test_complex_unicode_text.png index dd4f6bf223fef6f5de91e9929494c109e1e85edf..f1a6f7ec61d7d9d096f2a39bf84364e7547b4438 100644 GIT binary patch delta 1334 zcmV-61HNkl*YlJm@&dovd#Nq>^0Nv>nmqn*$N$G=Uv z3^fC~;N(_>8ge01pbKWTBC^z^<6sf|DSR)Z4f|;*Lf6}s)ezT05f-%~)Q}6A2}Str zsMjuysjazbr^C(R*>HE5122}X&8kULVQu(t?9Qqk$rPH!OjDaAC>C zC2Qf$37u=(3%?H6v~KVE zSxE<6*|K=jk<~yE?t)b?6Ygk5!F&iF3@5{KSX^>b>wkXQ`7`vw*F!r1KAGwruCecg z-!9n%3*h<*pSU|51D`LsrDQEU-FSp9xCBlg>ClRjnXmwWcQuvX1u!3uYih34kP(V- z3cU9%MjwF1C9lE_;R_Qx@%gYBHZ?W39qtN`hTnvz!cVGA?~vcaE3hO0r#7_}E)A=~ zNlm3EHGgDi5nch?!O;6yf6|jl4A!p)VBS?phr#fFkS<=T$u? z!ZV==KO9^Jop5XD4@KA;exAbxFpAql5sJ_s9tbyvheHuo4!c>L1-+pN%fpjlUpTjx z(%(W6c4weUzrsM+)gka6*b|Cyf9(PF(0_#-DtO-=RVyum%~d^g!>8f<)pGx5=nYrF z`V4%Y3q|-xm{TqEm&1mzsVb@>>T-xgqp~`@-%}gcYF;E`=iO3hQerZ4E`(6P^hD;pOnxP=qJLmRj)b;eRi+ zSv|Fqvk28PbD=-%4-bZ2we`0(tO+~9?$FKQ{$1gr4E*468r&6LtahiT!V*{(p0AbJ zs_;d4JnRjRhyL(F=n0D&{D0GrLlM4KHK)Ve>M`<=<+XyZ|8rs~?5Gay3@gK_a8m|$ z`@P}I@DUE*9eTni;Gx=0WJg#TrhnIBT7+tuWuXY)1)u{ihHt=^hJCd=>h26hm_O>6 zz!@-m+`p{MfH}4QLr#P9VfI9_lp53y19$i50eBt$FoAI2f%R}ad;sp8cy^5|;e|%V z_d#E+c>p%HI3sBcZM5{ou3N%I@VU_KLz*-`?PCvV#0dvq0WG<%wQ;5YUk+`+4(Nr~ sj&>?znk;!rlhFf8lh6Yh7n+a delta 964 zcmV;#13Ubp3$qB2BYy+>NklnIIJ`v0k|2s>as%z$-HVp5|_ zfNw(y&z(k+k$)^lAA|OAAnXdCh8M#ExbQSOmCh&4Ftz&8%b+dvgnR1EKawJR6846+ zaJ2F$sDz_oL%5@^PRG?1B{jfO_#>3CJKSHT%^WxqI>NPs9sMzE9J0U$Ey8M1O)w4S z!J2R=l+acs`R(xFU@PpKVQVPiV0b-TG}O?fM!OG6=zj{W;aDhPVU?E8(Dy&#rKcR~ z4&T*YghNNohMl2=17T&AHZO&8%J0I}&>2eD7mkDy-t~r7=dx{~gj)fa4<&q6<&wRI zz9r)33|Q%ngPyQu$P0Zkl<-l%HYcKXREb&yheJ&6J zW&dzrW;y_u!_T1&{(_m6Ep@BI7rnH=jnD&~BRf0N*)t1zLRa`Wbo6@~xi4%C?cs1( z#mUb*!e?O?0Mp>j@LMRMC+rT(N6_O$crEO&MEw+&!`jf=uZwNr)o|yC|IPe7l<;0S zSbs@!By0}f41B)2r2g|HjhYiXLZ1bo1@3~UU=d7c@VIKQ1WMRC*fKaU7nZ@Jl_^&` z=d24Q+@(Rus?#PeWHY7UtHKL2A4=&S(*quwwM1n&3)!9DWETbcP3N?^J5I z`d{iD!o<2>@U1CobGQMT0r(p}fi=DSQXEgWQiJssVLR-C?#7O#7Co>BTH*U%HbHx% m$0L(L1xb@&1sWLXJn#>30q$24gF`(40000ngBx4s1fQHC?C4O zQHfEiZKo$79o2ea zMRa-+QV}L}dIF=g0KVz;9Hc@Vu8Z)OLDK0tNQLOkBK*^suOu(PMW`c02NvOpFn7#B zehB*un2XeT9aw~m;J}!J91DY`0wyDMTn856yx@y52kC}S3Yd%3c^z1U0}aZ#ALot` zFcID#?F8ypr1`T;#ed4R2rnx%Wj}nGY8-&8b4QpA!1h%8L^v;NY~6~qrR-9%vKQg` z@Xsj!yD!9)dNtvl!M5BH`e6s`OtsI4*;!-jR-`Rumx`6W2$uxY3*8L6VPEY%m4M&C zuG|skz^nDze-(V3H8x$5wwhfkR`w#i5`YtmOW6%OYFh@NAAk1cj&ObOLcLp~7r|#) zW78FBtJ$SuWiP^20DM$XzHXS1x~Fm$ko&pcG?)zM1h>JA+K*1n5hPuawv=5eT=pV- zxx@i@t)P5U;5&G;wsB~i&AAutgML^Fj|5wTld2;3!B;sZFrp@GDZ5m-uFM|2@H~7y zs_4D&6F3O}gMXpx$J1alBdfBh@Lld>Xp3M@<^6=J71a;G!K~rwinOKdQsJ_9!k-0C zkLqm7jqqNuHh48y9py~d2G6IW^#)00l{R-CJXH0R@2RS5%U%G!&5Dq&Nb_fxI%9Qk zOzWej!TKPny!Hpv;11Xp9GB|6EO;yHNOvDR8tku%`F~b0y{f~-kOa-cbVCySwDs&# z`wU->PDx#o&4eYeJ;(NvHVBuN_;;`nfH&anpbKs&)v3OEvr4jAuqw*W0C&SWSYP5_ z@Of3A5l=D$24E^|soE{;R-~EPrE&6PFtxVjzA=2~=t9_3wQKDRo((Q&(E0ITW#dHC zVM{O=JbxC{8YFT4XwN^EK{q%XBQRr_mj5PnhO-V*B@7jHv5;m~Y<#9(m|YqtPX!C=wOtD}&AOV5#O5+uwtK!0YXqTyKsq=}L#azRE-S^y}T=^nXgX zXDW@qs~USR{3qJ@3)>C^=d>-jbO^Z)4y0D#+Te_;K7Xz}_?}g1nGYNCon;xFE=Yn? z+ZJCsv|Isef<3|igBOAu>wVkz7C5c)ehzGi;UC*!=xawavO7vgpP$2vwfkf{^gt4M zPoGLhh`Zrrm<6u{*EjCA6pn5GWJY>mj|a+hRQY4&wAaSUcj4Q;*EQD-+gyY?3Y2ec z9uIc`FtzejU~9c!aXp^Cg~5(aKpJlYuqjvsli+@s*6H~GtK11Clko#0lkWo%7^Hf> Y2N~o?D2~tY5&!@I07*qoM6N<$f;jN&`v3p{ delta 973 zcmV;;12X)?45|o_BYy+&NkljpwZz= zO>Q=9j#Onam%@&Wmd^%5b?mid zg}e{LC5I2dcL1D&k6>xSo3OUNaH*x737$z;?uC4e-A|VKI>-k*>RYU`LjG|iI2>#W zhJyje{3auH7>14Rre=zFcZ$CI~TfKpDqp*KYzIyX4Wx+%8+h&6mEhA zupAD+V%P|C;ltoWa4y(g&&5g2pbhARc_nY*27`X+heNQlSo{kT7)f_7%&`YyOR=&N zwimZLJK&ExMo<=#gI&SObem6LW5RW?4CcWp*iqNjNll;)e^>)UB@cU*`;$Np0*{ zNxD+DKM7m|$165MZ{^Y(`NB*2-tnKkEaXUxeP3GRDN$-Q-^S%1-d4e`ioKA4LnZU) z$qAjkEM(P$e?p`t)&`?BHzy0;3m&RgzYV?&P6vY-A7|I&UkQ<#)zy#>`f9f6gJC~X zk^UovPd5j%U%TA`KL#)Tk3*8Cm-)qgkxdmhrCsnGj08UgS5D68q}CTXI2OzS;5_Vy zlh6qZ;0~Ap39L=nJIUjeTH0%odPz|Bdup|KH diff --git a/Tests/test_imagefontctl.py b/Tests/test_imagefontctl.py index 02c432527..6c03fb168 100644 --- a/Tests/test_imagefontctl.py +++ b/Tests/test_imagefontctl.py @@ -34,7 +34,7 @@ try: im = Image.new(mode='RGB', size=(300, 100)) draw = ImageDraw.Draw(im) - draw.text((0, 0), 'هنا عمان', font=ttf, fill=500) + draw.text((0, 0), 'العالم العربي', font=ttf, fill=500) target = 'Tests/images/test_y_offset.png' target_img = Image.open(target) @@ -46,7 +46,7 @@ try: im = Image.new(mode='RGB', size=(300, 100)) draw = ImageDraw.Draw(im) - draw.text((0, 0), u'مرحبا بكم', font=ttf, fill=500) + draw.text((0, 0), u'السلام عليكم', font=ttf, fill=500) target = 'Tests/images/test_complex_unicode_text.png' target_img = Image.open(target)