annotate lisp/ps-bdf.el @ 90710:0b79f231aae3

Remove Time-stamp comment mark.
author Vinicius Jose Latorre <viniciusjl@ig.com.br>
date Mon, 04 Dec 2006 14:46:24 +0000
parents c5406394f567
children 6588c6259dfb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38240
diff changeset
1 ;;; ps-bdf.el --- BDF font file handler for ps-print
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
2
90294
c5406394f567 Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-13
Miles Bader <miles@gnu.org>
parents: 90261 68651
diff changeset
3 ;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2006
c5406394f567 Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-13
Miles Bader <miles@gnu.org>
parents: 90261 68651
diff changeset
4 ;; Free Software Foundation, Inc.
67658
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64645
diff changeset
5 ;; Copyright (C) 1998, 1999, 2001, 2003
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64645
diff changeset
6 ;; National Institute of Advanced Industrial Science and Technology (AIST)
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64645
diff changeset
7 ;; Registration Number H14PRO021
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
8 ;; Copyright (C) 2003
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
9 ;; National Institute of Advanced Industrial Science and Technology (AIST)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
10 ;; Registration Number H13PRO009
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
11
26116
9eb84d5ffd61 Doc fix.
Kenichi Handa <handa@m17n.org>
parents: 24467
diff changeset
12 ;; Keywords: wp, BDF, font, PostScript
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
13 ;; Maintainer: Kenichi Handa <handa@m17n.org>
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
14
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
15 ;; This file is part of GNU Emacs.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
16
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
17 ;; GNU Emacs is free software; you can redistribute it and/or modify
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
18 ;; it under the terms of the GNU General Public License as published by
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
19 ;; the Free Software Foundation; either version 2, or (at your option)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
20 ;; any later version.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
21
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
22 ;; GNU Emacs is distributed in the hope that it will be useful,
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
23 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
24 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
25 ;; GNU General Public License for more details.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
26
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
27 ;; You should have received a copy of the GNU General Public License
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
28 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
29 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
30 ;; Boston, MA 02110-1301, USA.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
31
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
32 ;;; Commentary:
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
33
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
34 ;; Functions for getting bitmap information from X's BDF font file are
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
35 ;; provided.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
36
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
37 ;;; Code:
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
38
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
39 (eval-and-compile
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
40 (require 'ps-mule)
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
41
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
42 ;; to avoid XEmacs compilation gripes
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
43 (defvar installation-directory nil)
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
44 (defvar coding-system-for-read nil))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
45
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
46 ;;;###autoload
24449
2428731823fd (bdf-directory-list): Different value for ms-dos.
Eli Zaretskii <eliz@gnu.org>
parents: 24416
diff changeset
47 (defvar bdf-directory-list
51875
5488bfe4b6be copyright line fix & bdf-directory-list init fix
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 49597
diff changeset
48 (if (memq system-type '(ms-dos windows-nt))
24450
60d1fad41645 (bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 24449
diff changeset
49 (list (expand-file-name "fonts/bdf" installation-directory))
24449
2428731823fd (bdf-directory-list): Different value for ms-dos.
Eli Zaretskii <eliz@gnu.org>
parents: 24416
diff changeset
50 '("/usr/local/share/emacs/fonts/bdf"))
24416
3d446442b6a0 (bdf-directory-list): Initialize it to '("/usr/local/share/emacs/fonts/bdf").
Kenichi Handa <handa@m17n.org>
parents: 24087
diff changeset
51 "*List of directories to search for `BDF' font files.
24467
4d5aae556ba8 (bdf-directory-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 24450
diff changeset
52 The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
53
38236
ec872cb65bc3 (bdf-directory-list): Use the value relative to
Eli Zaretskii <eliz@gnu.org>
parents: 37136
diff changeset
54 ;; MS-DOS and MS-Windows users like to move the binary around after
ec872cb65bc3 (bdf-directory-list): Use the value relative to
Eli Zaretskii <eliz@gnu.org>
parents: 37136
diff changeset
55 ;; it's built, but the value above is computed at load-up time.
51875
5488bfe4b6be copyright line fix & bdf-directory-list init fix
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 49597
diff changeset
56 (and (memq system-type '(ms-dos windows-nt))
24450
60d1fad41645 (bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 24449
diff changeset
57 (setq bdf-directory-list
60d1fad41645 (bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 24449
diff changeset
58 (list (expand-file-name "fonts/bdf" installation-directory))))
60d1fad41645 (bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 24449
diff changeset
59
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
60 (defun bdf-expand-file-name (bdfname)
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
61 "Return an absolute path name of a `BDF' font file BDFNAME.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
62 It searches directories listed in the variable `bdf-directory-list'
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
63 for BDFNAME."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
64 (if (file-name-absolute-p bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
65 (and (file-readable-p bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
66 bdfname)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
67 (catch 'tag
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
68 (dolist (dir bdf-directory-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
69 (let ((absolute-path (expand-file-name bdfname dir)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
70 (if (file-readable-p absolute-path)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
71 (throw 'tag absolute-path)))))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
72
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
73 (defsubst bdf-file-mod-time (filename)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
74 "Return modification time of FILENAME.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
75 The value is a list of two integers, the first integer has high-order
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
76 16 bits, the second has low 16 bits."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
77 (nth 5 (file-attributes filename)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
78
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
79 (defun bdf-file-newer-than-time (filename mod-time)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
80 "Return non-nil if and only if FILENAME is newer than MOD-TIME.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
81 MOD-TIME is a modification time as a list of two integers, the first
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
82 integer has high-order 16 bits, the second has low 16 bits."
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
83 (let* ((new-mod-time (bdf-file-mod-time filename))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
84 (new-time (car new-mod-time))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
85 (time (car mod-time)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
86 (or (> new-time time)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
87 (and (= new-time time)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
88 (> (nth 1 new-mod-time) (nth 1 mod-time))))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
89
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
90 (defun bdf-find-file (bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
91 "Return a buffer visiting a bdf file BDFNAME.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
92 BDFNAME must be an absolute file name.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
93 If BDFNAME doesn't exist, return nil."
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
94 (and (file-readable-p bdfname)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
95 (let ((buf (generate-new-buffer " *bdf-work*"))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
96 (coding-system-for-read 'no-conversion))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
97 (save-excursion
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
98 (set-buffer buf)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
99 (insert-file-contents bdfname)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
100 buf))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
101
39307
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
102 (defvar bdf-cache-file (if (eq system-type 'ms-dos)
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
103 ;; convert-standard-filename doesn't
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
104 ;; guarantee that the .el extension will be
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
105 ;; preserved.
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
106 "~/_bdfcache.el"
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
107 (convert-standard-filename "~/.bdfcache.el"))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
108 "Name of cache file which contains information of `BDF' font files.")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
109
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
110 (defvar bdf-cache nil
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
111 "Cached information of `BDF' font files. It is a list of FONT-INFO.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
112 FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
113 (ABSOLUTE-FILE-NAME MOD-TIME SIZE FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
114 RELATIVE-COMPOSE BASELINE-OFFSET CODE-RANGE MAXLEN OFFSET-VECTOR)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
115 See the documentation of the function `bdf-read-font-info' for more detail.")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
116
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
117 (defun bdf-read-cache ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
118 "Return a cached information about `BDF' font files from a cache file.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
119 The variable `bdf-cache-file' holds the cache file name.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
120 If the cache file is not readable, this return nil."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
121 (setq bdf-cache nil)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
122 (condition-case nil
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
123 (and (file-readable-p bdf-cache-file)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
124 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
125 (load-file bdf-cache-file)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
126 (if (listp bdf-cache)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
127 bdf-cache
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
128 (setq bdf-cache nil))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
129 (error nil)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
130
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
131 (defun bdf-write-cache ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
132 "Write out cached information of `BDF' font file to a file.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
133 The variable `bdf-cache-file' holds the cache file name.
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
134 The file is written if and only if the file already exists and writable."
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
135 (and bdf-cache
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
136 (file-exists-p bdf-cache-file)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
137 (file-writable-p bdf-cache-file)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
138 (write-region (format "(setq bdf-cache '%S)\n" bdf-cache)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
139 nil bdf-cache-file)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
140
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
141 (defun bdf-set-cache (font-info)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
142 "Cache FONT-INFO as information about one `BDF' font file.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
143 FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
144 (ABSOLUTE-FILE-NAME MOD-TIME SIZE FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
145 RELATIVE-COMPOSE BASELINE-OFFSET CODE-RANGE MAXLEN OFFSET-VECTOR)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
146 See the documentation of the function `bdf-read-font-info' for more detail."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
147 (let ((slot (assoc (car font-info) bdf-cache)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
148 (if slot
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
149 (setcdr slot (cdr font-info))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
150 (setq bdf-cache (cons font-info bdf-cache)))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
151
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
152 (defun bdf-initialize ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
153 "Initialize `bdf' library."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
154 (and (bdf-read-cache)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
155 (add-hook 'kill-emacs-hook 'bdf-write-cache)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
156
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
157 (defun bdf-compact-code (code code-range)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
158 (if (or (< code (aref code-range 4))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
159 (> code (aref code-range 5)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
160 (setq code (aref code-range 6)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
161 (+ (* (- (lsh code -8) (aref code-range 0))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
162 (1+ (- (aref code-range 3) (aref code-range 2))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
163 (- (logand code 255) (aref code-range 2))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
164
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
165 (defun bdf-expand-code (code code-range)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
166 (let ((code0-range (1+ (- (aref code-range 3) (aref code-range 2)))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
167 (+ (* (+ (/ code code0-range) (aref code-range 0)) 256)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
168 (+ (% code code0-range) (aref code-range 2)))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
169
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
170 (defun bdf-search-and-read (match limit)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
171 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
172 (and (search-forward match limit t)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
173 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
174 (goto-char (match-end 0))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
175 (read (current-buffer)))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
176
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
177 (defun bdf-read-font-info (bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
178 "Read `BDF' font file BDFNAME and return information (FONT-INFO) of the file.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
179 BDFNAME must be an absolute file name.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
180 FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
181 (BDFFILE MOD-TIME FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
182 RELATIVE-COMPOSE BASELINE-OFFSET CODE-RANGE MAXLEN OFFSET-VECTOR)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
183
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
184 MOD-TIME is last modification time as a list of two integers, the
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
185 first integer has high-order 16 bits, the second has low 16 bits.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
186
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
187 SIZE is a size of the font on 72 dpi device. This value is got
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
188 from SIZE record of the font.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
189
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
190 FONT-BOUNDING-BOX is the font bounding box as a list of four integers,
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
191 BBX-WIDTH, BBX-HEIGHT, BBX-XOFF, and BBX-YOFF.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
192
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
193 RELATIVE-COMPOSE is an integer value of the font's property
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
194 `_MULE_RELATIVE_COMPOSE'. If the font doesn't have this property, the
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
195 value is 0.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
196
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
197 BASELINE-OFFSET is an integer value of the font's property
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
198 `_MULE_BASELINE_OFFSET'. If the font doesn't have this property, the
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
199 value is 0.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
200
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
201 CODE-RANGE is a vector of minimum 1st byte, maximum 1st byte, minimum
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
202 2nd byte, maximum 2nd byte, minimum code, maximum code, and default
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
203 code. For 1-byte fonts, the first two elements are 0.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
204
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
205 MAXLEN is a maximum bytes of one glyph information in the font file.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
206
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
207 OFFSET-VECTOR is a vector of a file position which starts bitmap data
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
208 of the glyph in the font file.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
209
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
210 Nth element of OFFSET-VECTOR is a file position for the glyph of code
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
211 CODE, where N and CODE are in the following relation:
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
212 (bdf-compact-code CODE) => N, (bdf-expand-code N) => CODE"
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
213 (let* ((buf (bdf-find-file bdfname))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
214 (maxlen 0)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
215 (relative-compose 'false)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
216 (baseline-offset 0)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
217 size
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
218 dpi
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 39346
diff changeset
219 font-bounding-box
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
220 default-char
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
221 code-range
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
222 offset-vector)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
223 (if buf
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
224 (message "Reading %s..." bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
225 (error "BDF file %s doesn't exist" bdfname))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
226 (unwind-protect
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
227 (save-excursion
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
228 (set-buffer buf)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
229 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
230 (search-forward "\nFONTBOUNDINGBOX")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
231 (setq font-bounding-box
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
232 (vector (read (current-buffer)) (read (current-buffer))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
233 (read (current-buffer)) (read (current-buffer))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
234 ;; The following kludgy code is to avoid bugs of fonts
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
235 ;; jiskan16.bdf and jiskan24.bdf distributed with X.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
236 ;; They contain wrong FONTBOUNDINGBOX.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
237 (and (> (aref font-bounding-box 3) 0)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
238 (string-match "jiskan\\(16\\|24\\)" bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
239 (aset font-bounding-box 3
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
240 (- (aref font-bounding-box 3))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
241
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
242 (goto-char (point-min))
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
243 (search-forward "\nFONT ")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
244 (if (looking-at "-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-\\([0-9]+\\)")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
245 (setq size (string-to-int (match-string 1)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
246 (search-forward "\nSIZE ")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
247 (setq size (read (current-buffer)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
248 ;; The following kludgy code is t avoid bugs of several
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
249 ;; fonts which have wrong SIZE record.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
250 (and (string-match "jiskan" bdfname)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
251 (<= size (/ (aref font-bounding-box 1) 3))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
252 (setq size (aref font-bounding-box 1)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
253 (setq dpi (read (current-buffer)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
254 (if (and (> dpi 0) (/= dpi 72))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
255 (setq size (/ (* size dpi) 72))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
256
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
257 (setq default-char (bdf-search-and-read "\nDEFAULT_CHAR" nil))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
258
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
259 (search-forward "\nSTARTCHAR")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
260 (forward-line -1)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
261 (let ((limit (point)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
262 (setq relative-compose
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
263 (or (bdf-search-and-read "\n_MULE_RELATIVE_COMPOSE" limit)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
264 'false)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
265 baseline-offset
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
266 (or (bdf-search-and-read "\n_MULE_BASELINE_OFFSET" limit)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
267 0)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
268
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
269 (let ((min-code0 256) (min-code1 256) (min-code 65536)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
270 (max-code0 0) (max-code1 0) (max-code 0)
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
271 glyph glyph-list code0 code1 code offset)
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
272
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
273 (while (search-forward "\nSTARTCHAR" nil t)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
274 (setq offset (line-beginning-position))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
275 (search-forward "\nENCODING")
64645
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
276 (setq code (read (current-buffer)))
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
277 (if (< code 0)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
278 (search-forward "ENDCHAR")
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
279 (setq code0 (lsh code -8)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
280 code1 (logand code 255)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
281 min-code (min min-code code)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
282 max-code (max max-code code)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
283 min-code0 (min min-code0 code0)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
284 max-code0 (max max-code0 code0)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
285 min-code1 (min min-code1 code1)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
286 max-code1 (max max-code1 code1))
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
287 (search-forward "ENDCHAR")
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
288 (setq maxlen (max maxlen (- (point) offset))
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
289 glyph-list (cons (cons code offset) glyph-list))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
290
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
291 (setq code-range
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
292 (vector min-code0 max-code0 min-code1 max-code1
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
293 min-code max-code (or default-char min-code))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
294 offset-vector
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
295 (make-vector (1+ (bdf-compact-code max-code code-range))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
296 nil))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
297
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
298 (while glyph-list
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
299 (setq glyph (car glyph-list)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
300 glyph-list (cdr glyph-list))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
301 (aset offset-vector
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
302 (bdf-compact-code (car glyph) code-range)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
303 (cdr glyph)))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
304
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
305 (kill-buffer buf))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
306 (message "Reading %s...done" bdfname)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
307 (list bdfname (bdf-file-mod-time bdfname)
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
308 size font-bounding-box relative-compose baseline-offset
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
309 code-range maxlen offset-vector)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
310
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
311 (defsubst bdf-info-absolute-path (font-info) (nth 0 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
312 (defsubst bdf-info-mod-time (font-info) (nth 1 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
313 (defsubst bdf-info-size (font-info) (nth 2 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
314 (defsubst bdf-info-font-bounding-box (font-info) (nth 3 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
315 (defsubst bdf-info-relative-compose (font-info) (nth 4 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
316 (defsubst bdf-info-baseline-offset (font-info) (nth 5 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
317 (defsubst bdf-info-code-range (font-info) (nth 6 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
318 (defsubst bdf-info-maxlen (font-info) (nth 7 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
319 (defsubst bdf-info-offset-vector (font-info) (nth 8 font-info))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
320
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
321 (defun bdf-get-font-info (bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
322 "Return information about `BDF' font file BDFNAME.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
323 BDFNAME must be an absolute file name.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
324 The value FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
325 (BDFNAME MOD-TIME SIZE FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
326 RELATIVE-COMPOSE BASELINE-OFFSET CODE-RANGE MAXLEN OFFSET-VECTOR)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
327 See the documentation of the function `bdf-read-font-info' for more detail."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
328 (or bdf-cache
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
329 (bdf-read-cache))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
330 (let ((font-info (assoc bdfname bdf-cache)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
331 (if (or (not font-info)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
332 (not (file-readable-p bdfname))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
333 (bdf-file-newer-than-time bdfname (bdf-info-mod-time font-info)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
334 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
335 (setq font-info (bdf-read-font-info bdfname))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
336 (bdf-set-cache font-info)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
337 font-info))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
338
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
339 (defun bdf-read-bitmap (bdfname offset maxlen relative-compose)
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
340 "Read `BDF' font file BDFNAME to get bitmap data at file position OFFSET.
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
341 BDFNAME is an absolute path name of the font file.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
342 MAXLEN specifies how many bytes we should read at least.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
343 The value is a list of DWIDTH, BBX, and BITMAP-STRING.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
344 DWIDTH is a pixel width of a glyph.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
345 BBX is a bounding box of the glyph.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
346 BITMAP-STRING is a string representing bits by hexadecimal digits."
39346
aa9501b93334 (bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents: 39307
diff changeset
347 (let* ((coding-system-for-read 'no-conversion)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
348 (bbx (bdf-info-font-bounding-box (bdf-get-font-info bdfname)))
39346
aa9501b93334 (bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents: 39307
diff changeset
349 (dwidth (elt bbx 0))
aa9501b93334 (bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents: 39307
diff changeset
350 (bitmap-string "")
aa9501b93334 (bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents: 39307
diff changeset
351 height yoff)
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
352 (condition-case nil
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
353 (with-temp-buffer
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
354 (insert-file-contents bdfname nil offset (+ offset maxlen))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
355 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
356 (search-forward "\nDWIDTH")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
357 (setq dwidth (read (current-buffer)))
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
358 (if (= dwidth 0)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
359 (setq dwidth 0.1))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
360 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
361 (search-forward "\nBBX")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
362 (setq bbx (vector (read (current-buffer)) (read (current-buffer))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
363 (read (current-buffer)) (read (current-buffer)))
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
364 height (aref bbx 1)
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
365 yoff (aref bbx 3))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
366 (search-forward "\nBITMAP")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
367 (forward-line 1)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
368 (delete-region (point-min) (point))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
369 (and (looking-at "\\(0+\n\\)+")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
370 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
371 (setq height (- height (count-lines (point) (match-end 0))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
372 (delete-region (point) (match-end 0))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
373 (or (looking-at "ENDCHAR")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
374 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
375 (search-forward "ENDCHAR" nil 'move)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
376 (forward-line -1)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
377 (while (looking-at "0+$")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
378 (setq yoff (1+ yoff)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
379 height (1- height))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
380 (forward-line -1))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
381 (forward-line 1)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
382 (aset bbx 1 height)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
383 (aset bbx 3 yoff)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
384 (delete-region (point) (point-max))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
385 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
386 (while (not (eobp))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
387 (end-of-line)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
388 (delete-char 1))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
389 (setq bitmap-string (buffer-string)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
390 (error nil))
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
391 (vector dwidth (aref bbx 0) (aref bbx 1) (aref bbx 2) (aref bbx 3)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
392 (concat "<" bitmap-string ">")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
393 (or relative-compose 'false))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
394
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
395 (defun bdf-get-bitmap (bdfname code)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
396 "Return bitmap information of glyph of CODE in `BDF' font file BDFNAME.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
397 CODE is an encoding number of glyph in the file.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
398 The value is a list (DWIDTH BBX BITMAP-STRING).
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
399 DWIDTH is a pixel width of a glyph.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
400 BBX is a bounding box of the glyph.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
401 BITMAP-STRING is a string representing bits by hexadecimal digits."
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
402 (let* ((info (bdf-get-font-info bdfname))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
403 (maxlen (bdf-info-maxlen info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
404 (code-range (bdf-info-code-range info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
405 (offset-vector (bdf-info-offset-vector info)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
406 (bdf-read-bitmap bdfname
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
407 (aref offset-vector (bdf-compact-code code code-range))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
408 maxlen (bdf-info-relative-compose info))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
409
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
410 ;;; Interface to ps-mule.el
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
411
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
412 ;; Called from ps-mule-init-external-library.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
413 (defun bdf-generate-prologue ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
414 (or bdf-cache
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
415 (bdf-initialize))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
416 (ps-mule-generate-bitmap-prologue))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
417
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
418 ;; Called from ps-mule-check-font.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
419 (defun bdf-check-font (font-spec)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
420 (let ((font-name-list (ps-mule-font-spec-name font-spec)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
421 (ps-mule-font-spec-set-name
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
422 font-spec
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
423 (if (stringp font-name-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
424 (bdf-expand-file-name font-name-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
425 (catch 'tag
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
426 (dolist (font-name font-name-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
427 (setq font-name (bdf-expand-file-name font-name))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
428 (if font-name
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
429 (throw 'tag font-name))))))))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
430
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
431 ;; Called from ps-mule-generate-font.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
432 (defun bdf-generate-font (font-spec)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
433 (let ((info (bdf-get-font-info (ps-mule-font-spec-name font-spec))))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
434 (ps-mule-font-spec-set-extra
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
435 font-spec (bdf-info-absolute-path info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
436 (ps-mule-generate-bitmap-font font-spec
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
437 (bdf-info-size info)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
438 (bdf-info-relative-compose info)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
439 (bdf-info-baseline-offset info)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
440 (bdf-info-font-bounding-box info))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
441
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
442 ;; Called from ps-mule-generate-glyph.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
443 (defun bdf-generate-glyph (font-spec char)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
444 (let ((font-name (ps-mule-font-spec-extra font-spec))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
445 (code (ps-mule-encode-char char font-spec)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
446 (ps-mule-generate-bitmap-glyph font-spec char code
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
447 (bdf-get-bitmap font-name code))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
448
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
449 (provide 'ps-bdf)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
450
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51875
diff changeset
451 ;;; arch-tag: 9b875ba8-565a-4ecf-acaa-30cee732c898
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
452 ;;; ps-bdf.el ends here