Re: Culmus and OpenType tables

Jonathan Ben Avraham <[email protected]> Tue, 17 Oct 2006 09:46:27 +0200 (IST)
Newsgroups gmane.linux.region.israel.ivrix.discuss
Message-ID <[email protected]>
Hi Dov,
I think that the way forward is option 3 + option 1 below. I was not aware 
that the GSUB and GPOS rules were so difficult to compose. I can 
contribute some time to work on this but in terms of expertise I certainly 
do not have any more than you at this point.
Regards,

  - yba


On Mon, 16 Oct 2006, Dov Grobgeld wrote:

> Date: Mon, 16 Oct 2006 23:21:49 +0200
> From: Dov Grobgeld <[email protected]>
> Reply-To: Ivrix Discussions <[email protected]>
> To: Maxim Iorsh <iorsh-TS7m/[email protected]>,
>     Ivrix Discussions <[email protected]>
> Subject: Re: Culmus and OpenType tables
> 
> Hi Maxim,
>
> Thanks for your email.
>
> I'm taking the liberty of CC:ing ivrix-discuss, as I believe that
> there may be more interesting in this thread. I hope you don't mind.
>
> Regarding the viewing of fonts with OpenType tables, I have found that
> both Gtk/Pango and Qt do quite a good job of displaying the fonts
> according to the OpenType tables. Thus I simply use gedit or kedit for
> the display. I believe the one of the best stress tests for a font is
> by displaying the tenach with teamim from:
>
>  http://www.mechon-mamre.org/c/ct/c0101.htm
>
> Currently, the only semi-free font that I am aware of that can display
> that nicely is SBL Hebrew from:
>
>   http://www.bible-researcher.com/sblhebrew.html
>
> In my efforts to adding nikud to the Culmus fonts, I have so far only
> touched the OpenType anchor tables. I have done quite a lot of
> progress during the last weeks and can now automatically add all the
> nikud by heuristics based on the bounding box.
>
> But there were things that I did not manage, and that is to the more
> complex GSUB and GPOS tables. I have really tried, but I still haven't
> got it to work. That is the reason that wrote code that searches for
> in the mapiq ligatures and then replaced it with an anchor. This
> solved among others the BA problem (Bet-Mapiq-Qamatz), which I could
> not get to render properly when Bet-Mapiq was a ligature.
>
> I also started playing around with a goocanvas based tool for manual
> placement of the marks, but it is not much more than a proof of
> concept yet.
>
> I'm not really sure how to continue and are considering several options:
>
> 1. Running all your fonts through my script and and then doing manual
> fine tuning of the mapiq positions.
>
> 2.a. Improve heuristics code so that it renders the fonts and then
> searches for more optical position based on the bitmap.
>
> 2.b. Instead of bitmap, do queries on the font contors by using the
> program Asymptote (see: .http://asymptote.sourceforge.net/ - This
> program inherits the strong mathematical foundation for bezier curve
> calculations from MetaFont and MeaPost).
>
> 3. Figure out how to do use GPOS and GSUB tables. This is necessary
> e.g. for placing the mapiq in the yud and vav for fonts without a
> "roof" in order to provide more space for the mapiq. I'd love help on
> this one. All I need is a one by one instruction of how to create such
> a rule in FontForge.
>
> 4. Improve my interactive tool to make it easier to define mark
> placement than it is in FontForge.
>
> Finally, as an example I have upload the font
> FrankRuehlCLM-Medium-dov.otf generated as followed:
>
>   ./hebpfa-insert-gpos FrankRuehlCLM-Medium-dov.otf
>
> It is available in
>
>   http://imagic.weizmann.ac.il/~dov/FrankRuehlCLM-Medium.pfa
>
> To use it, copy it to ~/.fonts. The font is called AAA and you may
> test it by running gedit and choosing the font.
>
> I hope to create a web page describing this work that also includes
> the script hebpfa-insert-gpos and its dependencies in the next few
> days.
>
> Regards,
> Dov
>
> On 10/16/06, Maxim Iorsh <iorsh-TS7m/[email protected]> wrote:
>> [Maxim's message deleted, as I have not yet received permission to post 
>> it.]
>> 
>> -----Original Message-----
>> From: Dov Grobgeld [mailto:[email protected]]
>> Sent: Friday, September 22, 2006 9:24 AM
>> To: Maxim Iorsh
>> Subject: Culmus and OpenType tables
>> 
>> Shalom Maxim,
>> 
>> I just wanted to let you know that I have lately started working on a
>> script that adds OpenType nikud positioning to the Culmus fonts. I
>> know you started working on it in the Frank Ruehl OT font, but I
>> started from your pfa fonts and my plans are to do as much of the
>> insertion as automatic as possible.
>> 
>> My initial idea is basically to insert all the heuristics that I used
>> for the pango Hebrew module and encode through anchors in the opentype
>> table. My method is a perl script that invokes fontforge a couple of
>> times for the font stuff.
>> 
>> It turns out that it was was tougher than I thought... All these
>> tables really are complicated.
>> 
>> One thing that I wanted to tell you about is that I have a problem
>> with the predefined mapiq glyphs. It turns out that that if we want to
>> layout e.g. Yud, Mapiq, Patach, then this will not work (at least not
>> in pango) if the character order is Yud, Patach, Mapiq. This can be
>> solved by replacing the Yud/Mapiq ligature with an anchor point
>> instead. I will write my script so that I will search for the position
>> that you chose for the mapiq and create an anchor at the same place.
>> Do you have any thoughts on this?
>> 
>> Again, thank you for your great work on the fonts!
>> 
>> I'm including my current version script.
>> 
>> Shana Tova!
>> Dov
>> 
>> 
> ----
> Ivrix-discuss list. See http://ivrix.org.il.
> To unsubscribe, please send mail to [email protected] with
> only the following line in the message body (NOT SUBJECT!): unsubscribe
>

-- 
  EE 77 7F 30 4A 64 2E C5  83 5F E7 49 A6 82 29 BA    ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
      - [email protected] - tel: +972.2.679.5364, http://www.tkos.co.il -
----
Ivrix-discuss list. See http://ivrix.org.il.
To unsubscribe, please send mail to [email protected] with
only the following line in the message body (NOT SUBJECT!): unsubscribe