1 ;; ARAB-OTF-NO-GPOS.flt -- Font Layout Table for Arabic OpenType font sans GPOS
2 ;; Copyright (C) 2005, 2006, 2007, 2008 AIST (H15PRO112)
3 ;; See the end for copying conditions.
5 (font layouter arab-otf-no-gpos nil
6 (font (nil nil unicode-bmp :otf=arab=init,medi,fina,liga+~mark)))
8 ;;; <li> ARAB-OTF-NO-GPOS.flt
10 ;;; For Arabic OpenType fonts that don't have GPOS table to draw the
13 ;; Step 0: Move Kazakh high hamza.
16 ;; p: high hamza carrier (p for positive)
17 ;; n: high hamza suppressor (n for negative)
19 ;; X: presentation form
25 (0x0750 0x077F ?x) ; Arabic Supplement
29 (0xFB50 0xFDFF ?X) ; Arabic Presentation Forms-A
30 (0xFE70 0xFEFC ?X) ; Arabic Presentation Forms-B
36 ;; If a presentation form is found, draw the whole sequence as is.
39 (".*p.*" ; If a high hamza is found,
41 (".*n.*" ; and a suppressor exists,
42 rmhamza *) ; then remove the high hamza.
43 (0 ; Otherwise, move the high
44 0x674 rmhamza *))) ; hamza to the beginning.
45 (0 = *))) ; If no high hamza, do nothing.
59 ;; D: Dual-joining (beh, teh, etc. & zwj)
60 ;; R: Right-joining (alef, dal, thal, reh, zain)
61 ;; U: Non-joining (Hamza, etc. & zwnj)
62 ;; T: Transparent (combining marks)
119 (0xFB50 0xFDFF ?X) ; Arabic Presentation Forms-A
120 (0xFE70 0xFEFC ?X) ; Arabic Presentation Forms-B
127 ;; Step 2: Initial, medial, or final.
132 (".*X.*" (cond ("[DRUX]T*" < = * >) ("." =)) *)
142 ("(.)(T*)(.*)" ; == (D)(T*)(U.*)
170 ("(.)(T*)(.*)" ; == (D)(T*)(U.*)
194 ("(.)(T*)(.*)" ; == (D)(T*)(U.*)
201 ("(.)(T*)(.*)" ; == ([RU])(T*)(.*)
208 ;; Step 3: GPOS features.
213 ((0x0651 0x0650) tc+bc 0x064E tc+bc 0x0651) ; shadda + kasra
214 ((0x0651 0x064D) tc+bc 0x064B tc+bc 0x0651) ; shadda + kasratan
215 ((range 0x0610 0x0615) tc+bc =)
222 ((range 0x0651 0x0654) tc+bc =)
225 ((range 0x0657 0x065B) tc+bc =)
230 ((range 0x06D6 0x06DC) tc+bc =)
231 ((range 0x06DF 0x06E2) tc+bc =)
245 ;; Copyright (C) 2005, 2006, 2007, 2008
246 ;; National Institute of Advanced Industrial Science and Technology (AIST)
247 ;; Registration Number H15PRO112
249 ;; This file is part of the m17n database; a sub-part of the m17n
252 ;; The m17n library is free software; you can redistribute it and/or
253 ;; modify it under the terms of the GNU Lesser General Public License
254 ;; as published by the Free Software Foundation; either version 2.1 of
255 ;; the License, or (at your option) any later version.
257 ;; The m17n library is distributed in the hope that it will be useful,
258 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
259 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
260 ;; Lesser General Public License for more details.
262 ;; You should have received a copy of the GNU Lesser General Public
263 ;; License along with the m17n library; if not, write to the Free
264 ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
265 ;; Boston, MA 02110-1301, USA.