1 ;;; chise-tex.el --- Coding-system based chise2otf like tool
3 ;; Copyright (C) 2004 MORIOKA Tomohiko
5 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
6 ;; Keywords: OTF package, pTeX, CHISE, Multiscript, Multilingual
8 ;; This file is a part of Omega/CHISE.
10 ;; This program is free software; you can redistribute it and/or
11 ;; modify it under the terms of the GNU General Public License as
12 ;; published by the Free Software Foundation; either version 2, or (at
13 ;; your option) any later version.
15 ;; This program is distributed in the hope that it will be useful, but
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 ;; General Public License for more details.
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with this program; see the file COPYING. If not, write to
22 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
27 (defvar chise-tex-coded-charset-expression-alist
28 '((=ucs@gb "UCSgb" 4 X)
29 (=ucs@jis "UCSjis" 4 X)
30 (=gt-pj-1 "GTpj1" 4 X)
31 (=gt-pj-2 "GTpj2" 4 X)
32 (=gt-pj-3 "GTpj3" 4 X)
33 (=gt-pj-4 "GTpj4" 4 X)
34 (=gt-pj-5 "GTpj5" 4 X)
35 (=gt-pj-6 "GTpj6" 4 X)
36 (=gt-pj-7 "GTpj7" 4 X)
37 (=gt-pj-8 "GTpj8" 4 X)
38 (=gt-pj-9 "GTpj9" 4 X)
39 (=gt-pj-10 "GTpj10" 4 X)
40 (=gt-pj-11 "GTpj11" 4 X)
42 (=ucs@cns "UCScns" 4 X)))
44 (defun chise-tex-encode-region-for-gb (start end)
48 (narrow-to-region start end)
50 (let (chr ret rest spec)
51 (while (and (skip-chars-forward "\x00-\xFF")
53 (setq chr (char-after))
54 (cond ((memq chr '(?
\e$(O#@
\e(B))
56 (insert (format "\\UCSjis{%04X}"
57 (encode-char chr '=ucs@jis)))
59 ((and (setq ret (encode-char chr '=jis-x0208-1983))
62 ;; ((setq ret (encode-char chr '=jis-x0208-1990))
64 ;; (insert (decode-char '=jis-x0208-1983 ret)))
66 (setq rest chise-tex-coded-charset-expression-alist)
67 (while (setq spec (car rest))
68 (if (setq ret (encode-char chr (car spec)))
70 (setq rest (cdr rest))))
72 ;; (if (eq (char-before) ?
\e$B!T
\e(B)
74 (insert (format (format "\\%s{%%0%d%s}"
82 (defun chise-tex-decode-region (start end)
86 (narrow-to-region start end)
88 (let (macro code ret ms me)
89 (while (re-search-forward "\\\\\\([a-zA-Z0-9]+\\){\\([0-9A-Fa-f]+\\)}"
91 (setq macro (match-string 1)
93 ms (match-beginning 0)
96 (setq rest chise-tex-coded-charset-expression-alist)
97 (while (setq spec (car rest))
98 (if (string= (nth 1 spec) macro)
100 (setq rest (cdr rest))))
101 (setq ret (decode-char (car spec)
104 (if (eq (nth 3 spec) 'X)
107 (delete-region (match-beginning 0)(match-end 0))
112 'iso-2022-jp-tex-gb 'iso2022
113 "ISO-2022-JP with TeX representation for GB fonts."
117 input-charset-conversion ((latin-jisx0201 ascii)
118 (japanese-jisx0208-1978 japanese-jisx0208))
119 pre-write-conversion chise-tex-encode-region-for-gb
120 post-read-conversion chise-tex-decode-region
121 mnemonic "pTeX(GB)/7bit"
130 ;;; chise-tex.el ends here