From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kenichi Handa Newsgroups: gmane.emacs.devel Subject: Re: Hebrew xlation of Emacs tutorial Date: Mon, 05 Feb 2007 09:52:28 +0900 Message-ID: References: <20070202014816.c691bb82.yotam.medini@gmail.com> <20070202172551.3a25b37f.yotam.medini@gmail.com> <858xffgqkb.fsf@lola.goethe.zz> <85r6t7f42d.fsf@lola.goethe.zz> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 (generated by SEMI 1.14.3 - "Ushinoya") Content-Type: text/plain; charset=US-ASCII X-Trace: sea.gmane.org 1170636785 2065 80.91.229.12 (5 Feb 2007 00:53:05 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 5 Feb 2007 00:53:05 +0000 (UTC) Cc: eliz@gnu.org, emacs-devel@gnu.org To: James Cloos Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Feb 05 01:52:54 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1HDs6H-000465-TV for ged-emacs-devel@m.gmane.org; Mon, 05 Feb 2007 01:52:54 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HDs6J-00048D-Dj for ged-emacs-devel@m.gmane.org; Sun, 04 Feb 2007 19:52:55 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HDs68-00047q-7p for emacs-devel@gnu.org; Sun, 04 Feb 2007 19:52:44 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HDs65-00047d-Dy for emacs-devel@gnu.org; Sun, 04 Feb 2007 19:52:43 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HDs65-00047a-AL for emacs-devel@gnu.org; Sun, 04 Feb 2007 19:52:41 -0500 Original-Received: from mx1.aist.go.jp ([150.29.246.133]) by monty-python.gnu.org with esmtp (Exim 4.52) id 1HDs62-0007uL-HX; Sun, 04 Feb 2007 19:52:39 -0500 Original-Received: from rqsmtp2.aist.go.jp (rqsmtp2.aist.go.jp [150.29.254.123]) by mx1.aist.go.jp with ESMTP id l150qTLI010839; Mon, 5 Feb 2007 09:52:29 +0900 (JST) env-from (handa@m17n.org) Original-Received: from smtp4.aist.go.jp by rqsmtp2.aist.go.jp with ESMTP id l150qTea002097; Mon, 5 Feb 2007 09:52:29 +0900 (JST) env-from (handa@m17n.org) Original-Received: by smtp4.aist.go.jp with ESMTP id l150qSxn025455; Mon, 5 Feb 2007 09:52:28 +0900 (JST) env-from (handa@m17n.org) Original-Received: from handa by etlken.m17n.org with local (Exim 4.63) (envelope-from ) id 1HDs5s-0000UK-1R; Mon, 05 Feb 2007 09:52:28 +0900 In-reply-to: (message from James Cloos on Sun, 04 Feb 2007 14:00:19 -0500) User-Agent: SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/22.0.93 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI) X-detected-kernel: Solaris 8 (1) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:65875 Archived-At: In article , James Cloos writes: >>> so there shouldn't be any problem using [Pango] as a primary >>> reference for writing the necessary lisp.) > Belay that. I just read overnight that neither pango nor icu are > happy with their shaping engines for Brahmic scripts. > But it seems (again, from what I just read) that qt's engine is up to > par, so perhaps qt's (GPL2'ed) shaping engine can be used as a primary > reference in writing an engine in lisp.... As for a shaping engine, my plan is to equip Emacs with FLT (Font Layout Table) driver. FLT is developped by our team in AIST for writing a shaping rule by s-expressions to be used with our m17n-lib . This page shows the currently supported scripts: http://www.m17n.org/m17n-lib-en/screenshots.html Attached is the FLT for Devanagari. --- Kenichi Handa handa@m17n.org ;; DEVA-OTF.flt -- Font Layout Table for Devanagari OpenType font ;; Copyright (C) 2003, 2004 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H15PRO112 ;; This file is part of the m17n database; a sub-part of the m17n ;; library. ;; The m17n library is free software; you can redistribute it and/or ;; modify it under the terms of the GNU Lesser General Public License ;; as published by the Free Software Foundation; either version 2.1 of ;; the License, or (at your option) any later version. ;; The m17n library is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; Lesser General Public License for more details. ;; You should have received a copy of the GNU Lesser General Public ;; License along with the m17n library; if not, write to the Free ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;;
  • DEVA-OTF.flt ;;; ;;; For Devanagari OpenType fonts to draw the Devanagari script. (category ;; C: consonant (except for R) ;; R: consonant RA ;; n: NUKTA ;; H: HALANT ;; m: MATRA (pre) ;; u: MATRA (above) ;; b: MATRA (below) ;; p: MATRA (post) ;; A: vowel modifier (above) ;; a: vowel modifier (post) ;; S: stress sign (above) ;; s: stress sign (below) ;; V: independent vowel ;; N: ZWNJ (ZERO WIDTH NON-JOINER) ;; J: ZWJ (ZERO WIDTH JOINER) ;; E: ELSE ;; (#x0900 #x097F ?E) ; ELSE (#x0901 ?A) ; SIGN CANDRABINDU (above) (#x0902 ?A) ; SIGN ANUSVARA (above) (#x0903 ?a) ; SIGN VISARGA (post) (#x0905 #x0914 ?V) ; LETTER A .. LETTER AU (#x0915 #x0939 ?C) ; LETTER KA .. LETTER HA (#x0930 ?R) ; LETTER RA (#x093C ?n) ; SIGN NUKTA (#x093D ?E) ; SIGN AVAGRAHA (#x093E #x094C ?p) ; VOWEL SIGN (post) (#x093F ?m) ; VOWEL SIGN I (pre) (#x0941 #x0944 ?b) ; VOWEL SIGN (below) (#x0945 #x0948 ?u) ; VOWEL SIGN (above) (#x094D ?H) ; SIGN VIRAMA (HALANT) (#x0950 ?E) ; OM (#x0951 #x0954 ?S) ; STRESS SIGN or TONE MARK (above) (#x0952 ?s) ; STRESS SIGN or TONE MARK (below) (#x0958 #x095E ?C) ; LETTER QA .. LETTER YYA (#x0960 ?V) ; LETTER VOCALIC RR (#x0961 ?V) ; LETTER VOCALIC LL (#x0962 #x0963 ?b) ; VOWEL SIGN (below) (#x0964 #x0970 ?E) ; DANDA .. ABBREVIATION SIGN (#x200C ?N) ; ZWNJ (#x200D ?J) ; ZWJ (#x097D ?x) ; internally used tag to indicate Reph (#x097E ?y) ; internally used tag to indicate Mpost (#x097F ?z) ; internally used tag to indicate Cbase ) ;; The first stage is to extract a syllable and re-order characters in ;; it. (generator (0 (cond ;; If [CR]H is followed by ZWNJ/ZWJ, move ZWNJ/ZWJ to the head so ;; that the later stages find it quickly. ("([CR]n?H)([NJ])" < | (2 =) (1 = *) | > ) ;; A syllable starting with RH (Reph) and ending with a vowel ;; and/or a vowel modifier. ("(RH)(([CR]n?H)*[CR]n?)([mubp][Aa]?[Ss]?|[Aa][Ss]?|[Ss])" < | (1 #x097D = =) (2 move-base-Halant) (4 reorder-post-base) | >) ;; A syllable starting with RH (Reph) and ending without a vowel ;; nor a vowel modifier. ("(RH)(([CR]n?H)*[CR]n?)(H)?" < | (1 #x097D = =) (2 move-base-Halant) (4 =) | >) ;; A syllable starting with the other consonant and ending with a ;; vowel and/or a vowel modifier. ("(([CR]n?H)*[CR]n?)([mubp][Aa]?[Ss]?|[Aa][Ss]?|[Ss])" < | (1 move-base-Halant) (3 reorder-post-base) | >) ;; A syllable starting with the other consonant and ending without ;; a vowel nor a vowel modifier. ("(([CR]n?H)*[CR]n?)(H)?" < | (1 move-base-Halant) (3 =) | >) ;; A syllable starting with an independent vowel. ("V[Aa]?[Ss]?" < | = * | > ) ("." =)) *) ;; Move Halant on a base consonant to the tail. (move-base-Halant (cond ("(([CR]n?H)*[CR]n?)(H)(R)" (1 = *) (4 =) (3 =)) (".*" = *))) ;; Re-order post modifiers. (reorder-post-base ;; 12 3 4 5 67 8 9 10 ("((m)|(u)|(b)|(p))?((A)|(a))?((S)|(s))?$" (2 =) (4 =) (10 =) (3 =) (5 =) #x097E (7 =) (9 =) (8)))) ;; The second stage is to reorder Reph and Mpre. (generator (0 (cond (" [NJ]([^ ]*) " = *) (" (x(..))([CRnH]*) " | (3 = *) (2 otf:deva=rphf) |) (" (x(..))([CRnH]*)(m?)([^y]*)y([^ ]*) " | (4 =) (3 = *) (5 = *) (2 otf:deva=rphf) (6 = *) |) (" ([CRnH][CRnH]*) " = *) (" ([CRnH][CRnH]*)(m?)([^y]*)y([^ ]*) " | (2 =) (1 = *) (3 = *) (4 = *) |) ("." =)) *)) ;; The third stage is to drive OTF tables. For the moment, we use ;; the default LangSys, and try all GSUB/GPOS features except for the ;; sequence followed by ZWNJ in which case try "nukt" and "haln" ;; features only. (generator (0 (cond (" N([^ ]*) " (1 otf:deva=nukt,haln)) (" J([^ ]*) " (1 otf:deva)) (" ([^ ]*)(CH) " (1 otf:deva=~rphf,*) (2 otf:deva=haln)) (" ([^ ]*) " (1 otf:deva=~rphf,*)) ("." \[ otf:deva=+ \] )) *)) ;; Local Variables: ;; mode: emacs-lisp ;; End: