Nikolay Sivov | 28 Jul 11:46 2015
Picon

Unicode ignorables treatment

Hello,

I had a brief chat with Behdad on irc the other day, and he suggested to 
move it here.

I'm currently considering using hb as a shaper in Wine's DirectWrite 
replacement; I put together a simple prototype that uses hafbuzz with 
freetype faces instances to get resulting glyph indices, so far it works 
fine on Persian sample I'm trying with. However my goal is to match 
DirectWrite behavior as close as possible, so it came to running some 
existing tests we got, and first thing that popped up was control codes 
treatment, specifically LRE/PDF sequence. According to tests that we run 
on all supported Windows versions (for that particular case in means 
Vista+) shaping method returns 0 index (.notdef glyph) for control code 
positions, and yes, placement method that comes after return non-zero 
advances for those, as in many fonts notdefs are represented as empty 
boxes visually.

If you're unfamiliar with that part of DirectWrite API, basically what 
happens is that you call "IDWriteTextAnalyzer::GetGlyphs" method, 
passing text, font instance, script id to it, in returns it gives you 
glyph indices, separately fills glyph properties and properties for 
initial text codepoints, it also fills clustermap array. Current 
relevant test code is here [1]. As you can see call succeeds, and index 
is 0 in both cases, with isZeroWidthSpace flag NOT set.

Later on TextLayout API level such clusters are indeed treated 
differently - they have 0 cluster width, but again it's another story, 
and low level shaping API is exposed to applications.

(Continue reading)

N@S1m Ali | 28 Jul 08:32 2015
Picon

Some help with Open Type features

I'm designing a FOSS Indic font and have run into some problems. My
font works almost as expected, except that when ligatures formed by
GSUB rules combine with certain marks, they break down. One example is

 feature blwf { # Below-base Forms
  script orya; # Oriya
     sub or_ta or_halant by or_ta_phalaa;
 }blwf

 feature pres { # Pre-base Substitutions
  script orya; # Oriya
     sub or_ta or_ta_phalaa by or_t_ta;
 }pres

 So when I want the glyph "or_t_ta" it forms fine. But when I combine
it with "or_reph" or "or_ikaar" marks, the 2nd substitution <pres> is
ignored and I get "or_ta + or_ta_phalaa + or_ikaar". (ତ୍ତ is the
ligature. ର୍ତ୍ତ or ତ୍ତି breaks down). To simplify further it is like
this
    b c -> d
    b d -> e
Gives
    b+b+c -> e
    b+b+c+f -> b d f

Any ideas why this might be happening? If you want to take a look at
my ttf file, it is here https://github.com/coldbreeze16/Lekhani

PS: The problem exists on Windows (7) and Linux (Ubuntu 14.04). It
works perfectly fine on Android 4.2. On Mac OS X 10.7 it behaves
(Continue reading)

Behdad Esfahbod | 27 Jul 12:19 2015

harfbuzz: Branch 'master' - 2 commits

 NEWS                           |    9 ++++++++-
 configure.ac                   |    2 +-
 src/hb-ot-shape-complex-use.cc |    2 +-
 3 files changed, 10 insertions(+), 3 deletions(-)

New commits:
commit 9002c27b2f54bb5135db92045c0d770b47317577
Author: Behdad Esfahbod <behdad <at> behdad.org>
Date:   Mon Jul 27 12:17:54 2015 +0200

    1.0.1

diff --git a/NEWS b/NEWS
index 70e1088..ed67abf 100644
--- a/NEWS
+++ b/NEWS
 <at>  <at>  -1,5 +1,12  <at>  <at> 
+Overview of changes leading to 1.0.1
+Monday, July 27, 2015
+====================================
+
+- Fix out-of-bounds access in USE shaper.
+
+
 Overview of changes leading to 1.0.0
-Thursday, July 26, 2015
+Sunday, July 26, 2015
 ====================================

 - Implement Universal Shaping Engine:
(Continue reading)

Behdad Esfahbod | 27 Jul 12:19 2015

harfbuzz: Changes to 'refs/tags/1.0.1'

Tag '1.0.1' created by Behdad Esfahbod <behdad <at> behdad.org> at 2015-07-27 11:18 -0700

1.0.1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEABECAAYFAlW2BVgACgkQn+4E5dNTERVg+gCdFPakBefkp9TSgo+aJnEyPN9G
0ggAniQBv5b1XPKdPIs2y8K3Hd/pI827
=Or7l
-----END PGP SIGNATURE-----

Changes since 1.0.0-1:
---
 0 files changed
---
_______________________________________________
HarfBuzz mailing list
HarfBuzz <at> lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/harfbuzz
Behdad Esfahbod | 26 Jul 23:42 2015

harfbuzz: Branch 'master'

 NEWS            |   10 ++++++++++
 configure.ac    |    4 ++--
 src/Makefile.am |    2 +-
 3 files changed, 13 insertions(+), 3 deletions(-)

New commits:
commit 260442346a5756c3538ee8fcbf157d1cddcf6f36
Author: Behdad Esfahbod <behdad <at> behdad.org>
Date:   Sun Jul 26 23:39:10 2015 +0200

    1.0.0

diff --git a/NEWS b/NEWS
index d079877..70e1088 100644
--- a/NEWS
+++ b/NEWS
 <at>  <at>  -1,3 +1,13  <at>  <at> 
+Overview of changes leading to 1.0.0
+Thursday, July 26, 2015
+====================================
+
+- Implement Universal Shaping Engine:
+  https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
+  http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
+- Bump version to 1.0.0.  The soname was NOT bumped.
+
+
 Overview of changes leading to 0.9.42
 Thursday, July 26, 2015
 =====================================
(Continue reading)

Behdad Esfahbod | 26 Jul 23:42 2015

harfbuzz: Changes to 'refs/tags/1.0.0'

Tag '1.0.0' created by Behdad Esfahbod <behdad <at> behdad.org> at 2015-07-26 22:39 -0700

1.0.0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEABECAAYFAlW1U4QACgkQn+4E5dNTERUT7gCgk2VVCSpyo/o5TF1TuuMGJKin
M3EAoK1YM4Pm/wC0Xm8My8Cd1+zZ8a7a
=56Qs
-----END PGP SIGNATURE-----

Changes since 0.9.42-44:
---
 0 files changed
---
_______________________________________________
HarfBuzz mailing list
HarfBuzz <at> lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/harfbuzz
Behdad Esfahbod | 26 Jul 19:42 2015

harfbuzz: Branch 'master' - 44 commits

 src/Makefile.am                                                        |   30 
 src/gen-use-table.py                                                   |  476 ++++++
 src/hb-ot-layout-private.hh                                            |   32 
 src/hb-ot-shape-complex-arabic-private.hh                              |   50 
 src/hb-ot-shape-complex-arabic-win1256.hh                              |    4 
 src/hb-ot-shape-complex-arabic.cc                                      |   39 
 src/hb-ot-shape-complex-indic-private.hh                               |    2 
 src/hb-ot-shape-complex-indic.cc                                       |  102 -
 src/hb-ot-shape-complex-myanmar.cc                                     |   64 
 src/hb-ot-shape-complex-private.hh                                     |  136 -
 src/hb-ot-shape-complex-sea-machine.rl                                 |  102 -
 src/hb-ot-shape-complex-sea.cc                                         |  380 -----
 src/hb-ot-shape-complex-use-machine.rl                                 |  180 ++
 src/hb-ot-shape-complex-use-private.hh                                 |   97 +
 src/hb-ot-shape-complex-use-table.cc                                   |  696 ++++++++++
 src/hb-ot-shape-complex-use.cc                                         |  593 ++++++++
 src/hb-private.hh                                                      |    9 
 src/hb-unicode-private.hh                                              |    2 
 test/shaping/texts/in-tree/MANIFEST                                    |    2 
 test/shaping/texts/in-tree/shaper-sea/MANIFEST                         |    3 
 test/shaping/texts/in-tree/shaper-sea/script-cham/MANIFEST             |    1 
 test/shaping/texts/in-tree/shaper-sea/script-cham/misc/MANIFEST        |    1 
 test/shaping/texts/in-tree/shaper-sea/script-cham/misc/misc.txt        |    3 
 test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST      |    1 
 test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST |    1 
 test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt |    1 
 test/shaping/texts/in-tree/shaper-sea/script-tai-tham/MANIFEST         |    1 
 test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/MANIFEST    |    2 
 test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/misc.txt    |    2 
 test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/torture.txt |   23 
(Continue reading)

Behdad Esfahbod | 26 Jul 19:39 2015

harfbuzz: Changes to 'refs/tags/0.9.42'

Tag '0.9.42' created by Behdad Esfahbod <behdad <at> behdad.org> at 2015-07-26 18:30 -0700

0.9.42
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEABECAAYFAlW1GSUACgkQn+4E5dNTERXqAwCfb6YU+F3ZbT9b1vjaAuJMiU6J
EfcAn0lquh10xA+NiYDtfTbbdv3VMW9v
=uZ6n
-----END PGP SIGNATURE-----

Changes since 0.9.41-27:
---
 0 files changed
---
_______________________________________________
HarfBuzz mailing list
HarfBuzz <at> lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/harfbuzz
Behdad Esfahbod | 26 Jul 19:39 2015

harfbuzz: Branch 'master'

 NEWS         |   12 ++++++++++++
 configure.ac |    2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

New commits:
commit 2ed6be66703e6cc67f3a3746e197001dad3d9b74
Author: Behdad Esfahbod <behdad <at> behdad.org>
Date:   Sun Jul 26 19:29:53 2015 +0200

    0.9.42

diff --git a/NEWS b/NEWS
index a5ac906..d079877 100644
--- a/NEWS
+++ b/NEWS
 <at>  <at>  -1,4 +1,14  <at>  <at> 
+Overview of changes leading to 0.9.42
+Thursday, July 26, 2015
+=====================================

+- New API to allow for retrieving finer-grained cluster
+  mappings if the client desires to handle them.  Default
+  behavior is unchanged.
+- Fix cluster merging when removing default-ignorables.
+- Update to Unicode 8.0
+- hb-graphite2 fixes.
+- Misc fixes.
 - Removed HB_NO_MERGE_CLUSTERS hack.
 - New API:
   hb_buffer_cluster_level_t enum
(Continue reading)

Behdad Esfahbod | 25 Jul 17:38 2015

harfbuzz: Branch 'master' - 2 commits

 src/hb-set-private.hh        |   10 
 src/hb-ucdn.cc               |    6 
 src/hb-ucdn/ucdn.h           |    6 
 src/hb-ucdn/unicodedata_db.h | 2167 +++++++++++++++++++++----------------------
 4 files changed, 1127 insertions(+), 1062 deletions(-)

New commits:
commit 23e56e088a721863cfdef4f027fb66eecbd77457
Author: Behdad Esfahbod <behdad <at> behdad.org>
Date:   Sat Jul 25 17:36:46 2015 +0200

    Fix broken sentence

diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh
index bba4015..3c302b1 100644
--- a/src/hb-set-private.hh
+++ b/src/hb-set-private.hh
 <at>  <at>  -36,7 +36,15  <at>  <at> 
  * "approximate member query".  Conceptually these are like Bloom
  * Filter and Quotient Filter, however, much smaller, faster, and
  * designed to fit the requirements of our uses for glyph coverage
- * queries.  As a result, our filters have much higher.
+ * queries.
+ *
+ * Our filters are highly accurate if the lookup covers fairly local
+ * set of glyphs, but fully flooded and ineffective if coverage is
+ * all over the place.
+ *
+ * The frozen-set can be used instead of a digest, to trade more
+ * memory for 100% accuracy, but in practice, that doesn't look like
(Continue reading)

Behdad Esfahbod | 23 Jul 13:51 2015

harfbuzz: Branch 'master' - 5 commits

 src/hb-ot-layout-private.hh                                             |    9 +
 src/hb-ot-layout.cc                                                     |   22 ++++
 src/hb-ot-map-private.hh                                                |    7 -
 src/hb-ot-map.cc                                                        |   10 ++
 src/hb-ot-shape.cc                                                      |   15 +--
 test/shaping/Makefile.am                                                |    2 
 test/shaping/fonts/sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf |binary
 test/shaping/fonts/sha1sum/MANIFEST                                     |    1 
 test/shaping/record-test.sh                                             |   47 ++++++++--
 test/shaping/run-tests.sh                                               |    9 +
 test/shaping/tests/MANIFEST                                             |    1 
 test/shaping/tests/arabic-fallback-shaping.tests                        |    2 
 test/shaping/tests/arabic-feature-order.tests                           |    6 -
 test/shaping/tests/context-matching.tests                               |    6 -
 test/shaping/tests/default-ignorables.tests                             |    2 
 test/shaping/tests/hangul-jamo.tests                                    |    4 
 test/shaping/tests/indic-joiner-candrabindu.tests                       |    4 
 test/shaping/tests/indic-old-spec.tests                                 |    4 
 test/shaping/tests/indic-pref-blocking.tests                            |    4 
 test/shaping/tests/mongolian-variation-selector.tests                   |    6 -
 test/shaping/tests/vertical.tests                                       |    1 
 test/shaping/tests/zero-width-marks.tests                               |    4 
 22 files changed, 124 insertions(+), 42 deletions(-)

New commits:
commit c81d957a264539dfe3252f9a94ee066c4a44edf4
Author: Behdad Esfahbod <behdad <at> behdad.org>
Date:   Thu Jul 23 12:50:48 2015 +0100

    [test] Add tests for improved 'vert' feature
(Continue reading)


Gmane