Mercurial > emacs
annotate lisp/language/hebrew.el @ 109069:325f0ae2b5bf
xfns.c (x_default_font_parameter): Remove got_from_system (Bug#6526).
author | Jan D <jan.h.d@swipnet.se> |
---|---|
date | Mon, 28 Jun 2010 14:46:39 +0200 |
parents | 023730733576 |
children | 09daf1538316 |
rev | line source |
---|---|
47726
33d53d287ee4
Add "no-byte-compile: t" in first line.
Juanma Barranquero <lekktu@gmail.com>
parents:
42152
diff
changeset
|
1 ;;; hebrew.el --- support for Hebrew -*- coding: iso-2022-7bit; no-byte-compile: t -*- |
17052 | 2 |
106815 | 3 ;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
74544 | 4 ;; Free Software Foundation, Inc. |
74605
6ee41fdd69ff
Update AIST copyright years.
Kenichi Handa <handa@m17n.org>
parents:
74544
diff
changeset
|
5 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
106815 | 6 ;; 2005, 2006, 2007, 2008, 2009, 2010 |
62396 | 7 ;; National Institute of Advanced Industrial Science and Technology (AIST) |
8 ;; Registration Number H14PRO021 | |
42058 | 9 |
89483 | 10 ;; Copyright (C) 2003 |
11 ;; National Institute of Advanced Industrial Science and Technology (AIST) | |
12 ;; Registration Number H13PRO009 | |
42058 | 13 |
17052 | 14 ;; Keywords: multilingual, Hebrew |
15 | |
16 ;; This file is part of GNU Emacs. | |
17 | |
94665
55b7f25d920a
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
18 ;; GNU Emacs is free software: you can redistribute it and/or modify |
17052 | 19 ;; it under the terms of the GNU General Public License as published by |
94665
55b7f25d920a
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
20 ;; the Free Software Foundation, either version 3 of the License, or |
55b7f25d920a
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
21 ;; (at your option) any later version. |
17052 | 22 |
23 ;; GNU Emacs is distributed in the hope that it will be useful, | |
24 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
25 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
26 ;; GNU General Public License for more details. | |
27 | |
28 ;; You should have received a copy of the GNU General Public License | |
94665
55b7f25d920a
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
29 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
17052 | 30 |
31 ;;; Commentary: | |
32 | |
42052 | 33 ;; For Hebrew, the character set ISO8859-8 is supported. |
37112 | 34 ;; See http://www.ecma.ch/ecma1/STAND/ECMA-121.HTM. |
42052 | 35 ;; Windows-1255 is also supported. |
42058 | 36 |
17052 | 37 ;;; Code: |
38 | |
88414
fad0f879877f
Call define-coding-system instead of make-coding-system. All CCL program deleted.
Kenichi Handa <handa@m17n.org>
parents:
42152
diff
changeset
|
39 (define-coding-system 'hebrew-iso-8bit |
fad0f879877f
Call define-coding-system instead of make-coding-system. All CCL program deleted.
Kenichi Handa <handa@m17n.org>
parents:
42152
diff
changeset
|
40 "ISO 2022 based 8-bit encoding for Hebrew (MIME:ISO-8859-8)." |
fad0f879877f
Call define-coding-system instead of make-coding-system. All CCL program deleted.
Kenichi Handa <handa@m17n.org>
parents:
42152
diff
changeset
|
41 :coding-type 'charset |
fad0f879877f
Call define-coding-system instead of make-coding-system. All CCL program deleted.
Kenichi Handa <handa@m17n.org>
parents:
42152
diff
changeset
|
42 :mnemonic ?8 |
fad0f879877f
Call define-coding-system instead of make-coding-system. All CCL program deleted.
Kenichi Handa <handa@m17n.org>
parents:
42152
diff
changeset
|
43 :charset-list '(iso-8859-8) |
88513 | 44 :mime-charset 'iso-8859-8) |
17052 | 45 |
18520
383d11185239
Swap args to define-coding-system-alias.
Richard M. Stallman <rms@gnu.org>
parents:
18377
diff
changeset
|
46 (define-coding-system-alias 'iso-8859-8 'hebrew-iso-8bit) |
18203
0745f30aec66
Adjusted for coding system name change.
Kenichi Handa <handa@m17n.org>
parents:
17993
diff
changeset
|
47 |
29157
f0754aea38e3
(iso-8859-8-e, iso-8859-8-i): For now, just
Eli Zaretskii <eliz@gnu.org>
parents:
28906
diff
changeset
|
48 ;; These are for Explicit and Implicit directionality information, as |
f0754aea38e3
(iso-8859-8-e, iso-8859-8-i): For now, just
Eli Zaretskii <eliz@gnu.org>
parents:
28906
diff
changeset
|
49 ;; defined in RFC 1556. We don't yet support directional information |
f0754aea38e3
(iso-8859-8-e, iso-8859-8-i): For now, just
Eli Zaretskii <eliz@gnu.org>
parents:
28906
diff
changeset
|
50 ;; in bidi languages, so these aliases are a lie, especially as far as |
f0754aea38e3
(iso-8859-8-e, iso-8859-8-i): For now, just
Eli Zaretskii <eliz@gnu.org>
parents:
28906
diff
changeset
|
51 ;; iso-8859-8-e is concerned. FIXME. |
f0754aea38e3
(iso-8859-8-e, iso-8859-8-i): For now, just
Eli Zaretskii <eliz@gnu.org>
parents:
28906
diff
changeset
|
52 (define-coding-system-alias 'iso-8859-8-e 'hebrew-iso-8bit) |
f0754aea38e3
(iso-8859-8-e, iso-8859-8-i): For now, just
Eli Zaretskii <eliz@gnu.org>
parents:
28906
diff
changeset
|
53 (define-coding-system-alias 'iso-8859-8-i 'hebrew-iso-8bit) |
f0754aea38e3
(iso-8859-8-e, iso-8859-8-i): For now, just
Eli Zaretskii <eliz@gnu.org>
parents:
28906
diff
changeset
|
54 |
17052 | 55 (set-language-info-alist |
89483 | 56 "Hebrew" '((charset iso-8859-8) |
22714
e632673d8975
("Hebrew"): Add coding-priority.
Kenichi Handa <handa@m17n.org>
parents:
20741
diff
changeset
|
57 (coding-priority hebrew-iso-8bit) |
88707
42305f57ba27
("Hebrew"): Add windows-1255, cp862 coding
Dave Love <fx@gnu.org>
parents:
88619
diff
changeset
|
58 (coding-system hebrew-iso-8bit windows-1255 cp862) |
88414
fad0f879877f
Call define-coding-system instead of make-coding-system. All CCL program deleted.
Kenichi Handa <handa@m17n.org>
parents:
42152
diff
changeset
|
59 (nonascii-translation . iso-8859-8) |
22982
5fef9d1a7fc2
(setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents:
22714
diff
changeset
|
60 (input-method . "hebrew") |
5fef9d1a7fc2
(setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents:
22714
diff
changeset
|
61 (unibyte-display . hebrew-iso-8bit) |
17772
550afdbb31d8
Make functions setup-LANGUAGE-environment
Kenichi Handa <handa@m17n.org>
parents:
17098
diff
changeset
|
62 (sample-text . "Hebrew ,Hylem(B") |
108598
bd78a6519aa5
lisp/language/hebrew.el ("Hebrew", "Windows-1255"): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
106815
diff
changeset
|
63 (documentation . "Bidirectional editing is supported."))) |
17052 | 64 |
42052 | 65 (set-language-info-alist |
66 "Windows-1255" '((coding-priority windows-1255) | |
67 (coding-system windows-1255) | |
42152 | 68 (documentation . "\ |
69 Support for Windows-1255 encoding, e.g. for Yiddish. | |
108598
bd78a6519aa5
lisp/language/hebrew.el ("Hebrew", "Windows-1255"): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
106815
diff
changeset
|
70 Bidirectional editing is supported."))) |
42052 | 71 |
88558
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
72 (define-coding-system 'windows-1255 |
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
73 "windows-1255 (Hebrew) encoding (MIME: WINDOWS-1255)" |
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
74 :coding-type 'charset |
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
75 :mnemonic ?h |
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
76 :charset-list '(windows-1255) |
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
77 :mime-charset 'windows-1255) |
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
78 (define-coding-system-alias 'cp1255 'windows-1255) |
cb333bb24363
(windows-1255, cp1255): New coding systems.
Dave Love <fx@gnu.org>
parents:
88513
diff
changeset
|
79 |
88619
3157a3f9d92d
(cp862, ibm862): New coding systems.
Dave Love <fx@gnu.org>
parents:
88558
diff
changeset
|
80 (define-coding-system 'cp862 |
88707
42305f57ba27
("Hebrew"): Add windows-1255, cp862 coding
Dave Love <fx@gnu.org>
parents:
88619
diff
changeset
|
81 "DOS codepage 862 (Hebrew)" |
88619
3157a3f9d92d
(cp862, ibm862): New coding systems.
Dave Love <fx@gnu.org>
parents:
88558
diff
changeset
|
82 :coding-type 'charset |
3157a3f9d92d
(cp862, ibm862): New coding systems.
Dave Love <fx@gnu.org>
parents:
88558
diff
changeset
|
83 :mnemonic ?D |
3157a3f9d92d
(cp862, ibm862): New coding systems.
Dave Love <fx@gnu.org>
parents:
88558
diff
changeset
|
84 :charset-list '(cp862) |
3157a3f9d92d
(cp862, ibm862): New coding systems.
Dave Love <fx@gnu.org>
parents:
88558
diff
changeset
|
85 :mime-charset 'cp862) |
3157a3f9d92d
(cp862, ibm862): New coding systems.
Dave Love <fx@gnu.org>
parents:
88558
diff
changeset
|
86 (define-coding-system-alias 'ibm862 'cp862) |
3157a3f9d92d
(cp862, ibm862): New coding systems.
Dave Love <fx@gnu.org>
parents:
88558
diff
changeset
|
87 |
108762 | 88 ;; Composition function for hebrew. |
89 (defun hebrew-shape-gstring (gstring) | |
90 (setq gstring (font-shape-gstring gstring)) | |
91 (let ((header (lgstring-header gstring)) | |
92 (nchars (lgstring-char-len gstring)) | |
93 (nglyphs (lgstring-glyph-len gstring)) | |
94 (base-width (lglyph-width (lgstring-glyph gstring 0)))) | |
108801
023730733576
language/hebrew.el (hebrew-shape-gstring): Check if a glyph element of GSTRING is nil.
Kenichi Handa <handa@etlken>
parents:
108762
diff
changeset
|
95 (while (and (> nglyphs 1) |
023730733576
language/hebrew.el (hebrew-shape-gstring): Check if a glyph element of GSTRING is nil.
Kenichi Handa <handa@etlken>
parents:
108762
diff
changeset
|
96 (not (lgstring-glyph gstring (1- nglyphs)))) |
023730733576
language/hebrew.el (hebrew-shape-gstring): Check if a glyph element of GSTRING is nil.
Kenichi Handa <handa@etlken>
parents:
108762
diff
changeset
|
97 (setq nglyphs (1- nglyphs))) |
108762 | 98 (while (> nglyphs 1) |
99 (setq nglyphs (1- nglyphs)) | |
100 (let* ((glyph (lgstring-glyph gstring nglyphs)) | |
101 (adjust (and glyph (lglyph-adjustment glyph)))) | |
102 (if adjust | |
103 (setq nglyphs 0) | |
104 (if (>= (lglyph-lbearing glyph) 0) | |
105 (lglyph-set-adjustment glyph (- base-width) 0 0)))))) | |
106 gstring) | |
107 | |
108 (let ((pattern1 "[\u05D0-\u05F2][\u0591-\u05BF\u05C1-\u05C5\u05C7]+") | |
109 (pattern2 "[\u05D0-\u05F2]\u200D[\u0591-\u05BF\u05C1-\u05C5\u05C7]+")) | |
110 (set-char-table-range | |
111 composition-function-table '(#x591 . #x5C7) | |
112 (list (vector pattern2 2 'hebrew-shape-gstring) | |
113 (vector pattern1 1 'hebrew-shape-gstring) | |
114 ["[\u0591-\u05C7]" 0 font-shape-gstring])) | |
115 (set-char-table-range | |
116 composition-function-table #x5C0 nil) | |
117 (set-char-table-range | |
118 composition-function-table #x5C6 nil)) | |
119 | |
33778 | 120 (provide 'hebrew) |
121 | |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
91327
diff
changeset
|
122 ;; arch-tag: 3ca04f32-3f1e-498e-af46-8267498ba5d9 |
18203
0745f30aec66
Adjusted for coding system name change.
Kenichi Handa <handa@m17n.org>
parents:
17993
diff
changeset
|
123 ;;; hebrew.el ends here |