[HarfBuzz] Using Harfbuzz & ICU & Glyphy in OpenES2 Engine
Jeremy Moles
cubicool at gmail.com
Tue Feb 11 00:02:17 CET 2014
Hey, thanks for the response; chronotext is a cool site. :)
On 02/09/2014 04:01 AM, Ariel Malka wrote:
> Hi Jeremy,
>
> I have developed a solution based on Harfbuzz and ICU for rendering
> Unicode text with C++ and OpenGL from the ground-up:
> https://github.com/arielm/Unicode
>
> The topic of line-breaking is also on my agenda (more on the long
> term, nothing urgent...)
> One of the directions I'm planning to check in the future:
> https://github.com/adah1972/libunibreak
>
> I wonder how do you handle topics like font-fallback,
> script-itemization and BIDI, prior to shaping and line-breaking?
>
Font fallbacks I don't bother with. Script-itemization and BIDI I'm not
even sure what they are. :)
Does anyone else have any comments on my original post? I mean, EVERYONE
using harfbuzz is doing what I'm doing, how are they doing it? :)
> Regarding one of your questions, it's easy to pass to Harfbuzz some
> text previously processed with ICU, as demonstrated here:
> https://github.com/arielm/Unicode/blob/v4.0.0/Projects/Rendering/src/TextRun.h#L50
>
> HTH,
> Ariel
> http://chronotext.org
>
>
> On Sat, Feb 8, 2014 at 12:01 AM, Jeremy Moles <cubicool at gmail.com
> <mailto:cubicool at gmail.com>> wrote:
>
> Hey guys! I'm working on a Python3-based OpenGL library and I want
> to use the union of Harfbuzz and libicu to do some (a small
> subset) of what Pango currently does. I cannot, unfortunately,
> simply use Pango, as its dependency chain will likely stop my
> clients' interest dead in its tracks. Further, there are some
> issues when customizing Pango's rendering model (and I'm not
> speaking without experience here, I've done it when I wrote
> osgPango) that aren't ideal to work with.
>
> So, I would like to use hb and icu to accomplish some very basic
> layout in my OpenGL scenes (note: I will also be using Glyphy
> instead of my own rasterized SDF font textures too). I will need
> basic left|right|center alignment (potentitally justify, but it
> isn't a request yet), some basic markup support, etc.
>
> I nearly have everything working locally, but the one area I'm
> having a lot of trouble with is knowing how--and in fact, WHOSE
> responsibility it is--to determine how to break large lines of
> text given my sizing constraints. This doesn't appear to be
> something harfbuzz attempts to do, but it may have helper
> functions nonetheless.
>
> What I'm looking for are a few hints on how people (Behdad?) might
> tackle this problem. ALL text in this library gets converted in
> whitespace-normalized UTF8 using libicu and line breaks can only
> be FORCED by using <p/> or <br/> markup. Otherwise, all breaks
> should behave similarly to how they do in HTML.
>
> If I feed my force-delimited lines of text (that is, break my
> input feed up by <br>/<p>) one huge chunk at a time to harfbuzz, I
> can get the extents for each glyph as if I had unlimited X
> coordinate space. I can use these extents to position as required
> by the calling function, but again, I'm having trouble determining
> where it is safe to break.
>
> Is this something libicu can handle? Can harfbuzz make it easier?
>
> NOTE: When I "whitespace normalize" my string before ever passing
> it harfbuzz, I use the UBRK API of libicu. There are also
> functions like:
>
> u_isspace()
>
> ...which look promising, but it expects a UChar32, which I do not
> know how to easily fetch while using harfbuzz's UTF8 functions,
> who operate on potential multibyte chars.
>
> Thanks in advance!
> _______________________________________________
> HarfBuzz mailing list
> HarfBuzz at lists.freedesktop.org <mailto:HarfBuzz at lists.freedesktop.org>
> http://lists.freedesktop.org/mailman/listinfo/harfbuzz
>
>
More information about the HarfBuzz
mailing list