Mercurial > emacs
annotate lisp/ps-bdf.el @ 74428:b401fcc1d9c0
*** empty log message ***
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 05 Dec 2006 04:07:34 +0000 |
parents | 8c9e156de392 |
children | 43cc94d955c2 |
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 |
68651
3bd95f4f2941
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
67658
diff
changeset
|
3 ;; Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation, Inc. |
67658 | 4 ;; Copyright (C) 1998, 1999, 2001, 2003 |
5 ;; National Institute of Advanced Industrial Science and Technology (AIST) | |
6 ;; Registration Number H14PRO021 | |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
7 |
26116 | 8 ;; Keywords: wp, BDF, font, PostScript |
74327
78c65b1a07f6
Fix maintainer email. Emacs 20/21 compatibility.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
68651
diff
changeset
|
9 ;; 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
|
10 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
11 ;; 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
|
12 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
13 ;; 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
|
14 ;; 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
|
15 ;; 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
|
16 ;; any later version. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
17 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
18 ;; 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
|
19 ;; 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
|
20 ;; 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
|
21 ;; 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
|
22 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
23 ;; 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
|
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
64091 | 25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
26 ;; 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
|
27 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
28 ;;; Commentary: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
29 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
30 ;; 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
|
31 ;; provided. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
32 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
33 ;;; Code: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
34 |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
35 (eval-and-compile |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
36 (require 'ps-mule) |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
37 |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
38 ;; to avoid XEmacs compilation gripes |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
39 (defvar installation-directory nil) |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
40 (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
|
41 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
42 ;;;###autoload |
24449
2428731823fd
(bdf-directory-list): Different value for ms-dos.
Eli Zaretskii <eliz@gnu.org>
parents:
24416
diff
changeset
|
43 (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
|
44 (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
|
45 (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
|
46 '("/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
|
47 "*List of directories to search for `BDF' font files. |
24467 | 48 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
|
49 |
38236
ec872cb65bc3
(bdf-directory-list): Use the value relative to
Eli Zaretskii <eliz@gnu.org>
parents:
37136
diff
changeset
|
50 ;; 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
|
51 ;; 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
|
52 (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
|
53 (setq bdf-directory-list |
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
54 (list (expand-file-name "fonts/bdf" installation-directory)))) |
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
55 |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
56 (defun bdf-expand-file-name (bdfname) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
57 "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
|
58 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
|
59 for BDFNAME." |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
60 (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
|
61 (and (file-readable-p bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
62 bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
63 (let ((dir-list bdf-directory-list) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
64 dir) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
65 (while (and dir-list |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
66 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
67 (setq dir (expand-file-name bdfname (car dir-list))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
68 (not (file-readable-p dir)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
69 (setq dir nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
70 dir-list (cdr dir-list))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
71 dir))) |
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." |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
83 (let ((file-name (bdf-expand-file-name filename))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
84 (and file-name |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
85 (let* ((new-mod-time (bdf-file-mod-time file-name)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
86 (new-time (car new-mod-time)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
87 (time (car mod-time))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
88 (or (> new-time time) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
89 (and (= new-time time) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
90 (> (nth 1 new-mod-time) (nth 1 mod-time)))))))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
91 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
92 (defun bdf-find-file (bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
93 "Return a buffer visiting a bdf file BDFNAME. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
94 If BDFNAME is not an absolute path, directories listed in |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
95 `bdf-directory-list' is searched. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
96 If BDFNAME doesn't exist, return nil." |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
97 (let ((file-name (bdf-expand-file-name bdfname))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
98 (and file-name |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
99 (let ((buf (generate-new-buffer " *bdf-work*")) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
100 (coding-system-for-read 'no-conversion)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
101 (save-excursion |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
102 (set-buffer buf) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
103 (insert-file-contents file-name) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
104 buf))))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
105 |
39307
9861030de063
(bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents:
38436
diff
changeset
|
106 (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
|
107 ;; convert-standard-filename doesn't |
9861030de063
(bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents:
38436
diff
changeset
|
108 ;; 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
|
109 ;; preserved. |
9861030de063
(bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents:
38436
diff
changeset
|
110 "~/_bdfcache.el" |
9861030de063
(bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents:
38436
diff
changeset
|
111 (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
|
112 "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
|
113 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
114 (defvar bdf-cache nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
115 "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
|
116 FONT-INFO is a list of the following format: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
117 (BDFFILE ABSOLUTE-PATH MOD-TIME SIZE FONT-BOUNDING-BOX |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
118 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
|
119 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
|
120 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
121 (defun bdf-read-cache () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
122 "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
|
123 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
|
124 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
|
125 (setq bdf-cache nil) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
126 (condition-case nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
127 (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
|
128 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
129 (load-file bdf-cache-file) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
130 (if (listp bdf-cache) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
131 bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
132 (setq bdf-cache nil)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
133 (error nil))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
134 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
135 (defun bdf-write-cache () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
136 "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
|
137 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
|
138 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
|
139 (and bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
140 (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
|
141 (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
|
142 (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
|
143 nil bdf-cache-file))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
144 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
145 (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
|
146 "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
|
147 FONT-INFO is a list of the following format: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
148 (BDFFILE ABSOLUTE-PATH MOD-TIME SIZE FONT-BOUNDING-BOX |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
149 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
|
150 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
|
151 (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
|
152 (if slot |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
153 (setcdr slot (cdr font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
154 (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
|
155 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
156 (defun bdf-initialize () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
157 "Initialize `bdf' library." |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
158 (and (bdf-read-cache) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
159 (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
|
160 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
161 (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
|
162 (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
|
163 (> code (aref code-range 5))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
164 (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
|
165 (+ (* (- (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
|
166 (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 (- (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
|
168 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
169 (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
|
170 (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
|
171 (+ (* (+ (/ 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
|
172 (+ (% 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
|
173 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
174 (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
|
175 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
176 (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
|
177 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
178 (goto-char (match-end 0)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
179 (read (current-buffer))))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
180 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
181 (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
|
182 "Read `BDF' font file BDFNAME and return information (FONT-INFO) of the file. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
183 FONT-INFO is a list of the following format: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
184 (BDFFILE ABSOLUTE-PATH MOD-TIME FONT-BOUNDING-BOX |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
185 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
|
186 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
187 BDFFILE is a name of a font file (excluding directory part). |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
188 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
189 ABSOLUTE-PATH is an absolute path of the font file. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
190 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
191 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
|
192 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
|
193 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
194 SIZE is a size of the font. This value is got from SIZE record of the |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
195 font. |
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 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
|
198 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
|
199 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
200 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
|
201 `_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
|
202 value is 0. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
203 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
204 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
|
205 `_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
|
206 value is 0. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
207 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
208 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
|
209 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
|
210 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
|
211 |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
212 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
|
213 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
214 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
|
215 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
|
216 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
217 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
|
218 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
|
219 (bdf-compact-code CODE) => N, (bdf-expand-code N) => CODE" |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
220 (let* ((absolute-path (bdf-expand-file-name bdfname)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
221 (buf (and absolute-path (bdf-find-file absolute-path))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
222 (maxlen 0) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
223 (relative-compose 'false) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
224 (baseline-offset 0) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
225 size |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39346
diff
changeset
|
226 font-bounding-box |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
227 default-char |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
228 code-range |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
229 offset-vector) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
230 (if buf |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
231 (message "Reading %s..." bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
232 (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
|
233 (unwind-protect |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
234 (save-excursion |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
235 (set-buffer buf) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
236 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
237 (search-forward "\nFONTBOUNDINGBOX") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
238 (setq font-bounding-box |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
239 (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
|
240 (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
|
241 ;; 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
|
242 ;; 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
|
243 ;; They contain wrong FONTBOUNDINGBOX. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
244 (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
|
245 (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
|
246 (aset font-bounding-box 3 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
247 (- (aref font-bounding-box 3)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
248 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
249 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
250 (search-forward "\nSIZE ") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
251 (setq size (read (current-buffer))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
252 ;; The following kludgy code is t avoid bugs of several |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
253 ;; fonts which have wrong SIZE record. |
34313
b5810f23b1b4
(bdf-read-font-info): Modify the kludgy code for fonts
Kenichi Handa <handa@m17n.org>
parents:
26116
diff
changeset
|
254 (and (<= size (/ (aref font-bounding-box 1) 3)) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
255 (setq size (aref font-bounding-box 1))) |
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) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
307 (list bdfname absolute-path (bdf-file-mod-time absolute-path) |
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 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
311 (defsubst bdf-info-absolute-path (font-info) (nth 1 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
312 (defsubst bdf-info-mod-time (font-info) (nth 2 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
313 (defsubst bdf-info-size (font-info) (nth 3 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
314 (defsubst bdf-info-font-bounding-box (font-info) (nth 4 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
315 (defsubst bdf-info-relative-compose (font-info) (nth 5 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
316 (defsubst bdf-info-baseline-offset (font-info) (nth 6 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
317 (defsubst bdf-info-code-range (font-info) (nth 7 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
318 (defsubst bdf-info-maxlen (font-info) (nth 8 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
319 (defsubst bdf-info-offset-vector (font-info) (nth 9 font-info)) |
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. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
323 The value FONT-INFO is a list of the following format: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
324 (BDFFILE ABSOLUTE-PATH MOD-TIME SIZE FONT-BOUNDING-BOX |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
325 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
|
326 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
|
327 (or bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
328 (bdf-read-cache)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
329 (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
|
330 (if (or (not font-info) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
331 (not (file-readable-p (bdf-info-absolute-path font-info))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
332 (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
|
333 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
334 (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
|
335 (bdf-set-cache font-info))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
336 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
337 |
24087
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
338 (defun bdf-find-font-info (bdfnames) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
339 "Return information about `BDF' font file with alternative names BDFNAMES. |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
340 |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
341 If BDFNAMES is a list of file names, this function finds the first file |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
342 in the list which exists and is readable, then calls `bdf-get-font-info' |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
343 on that file name." |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
344 (let ((fnlist bdfnames) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
345 (fname bdfnames)) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
346 (if (consp fnlist) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
347 (while (and fnlist |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
348 (progn |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
349 (setq fname (car fnlist)) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
350 (null (bdf-expand-file-name fname)))) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
351 (setq fname nil |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
352 fnlist (cdr fnlist)))) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
353 (bdf-get-font-info (or fname (car bdfnames))))) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
354 |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
355 (defun bdf-read-bitmap (bdfname offset maxlen) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
356 "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
|
357 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
|
358 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
|
359 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
|
360 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
|
361 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
|
362 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
|
363 (let* ((coding-system-for-read 'no-conversion) |
aa9501b93334
(bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents:
39307
diff
changeset
|
364 (bbx (elt (bdf-get-font-info bdfname) 4)) |
aa9501b93334
(bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents:
39307
diff
changeset
|
365 (dwidth (elt bbx 0)) |
aa9501b93334
(bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents:
39307
diff
changeset
|
366 (bitmap-string "") |
aa9501b93334
(bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents:
39307
diff
changeset
|
367 height yoff) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
368 (condition-case nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
369 (with-temp-buffer |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
370 (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
|
371 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
372 (search-forward "\nDWIDTH") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
373 (setq dwidth (read (current-buffer))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
374 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
375 (search-forward "\nBBX") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
376 (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
|
377 (read (current-buffer)) (read (current-buffer))) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
378 height (aref bbx 1) |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
379 yoff (aref bbx 3)) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
380 (search-forward "\nBITMAP") |
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 (delete-region (point-min) (point)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
383 (and (looking-at "\\(0+\n\\)+") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
384 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
385 (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
|
386 (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
|
387 (or (looking-at "ENDCHAR") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
388 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
389 (search-forward "ENDCHAR" nil 'move) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
390 (forward-line -1) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
391 (while (looking-at "0+$") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
392 (setq yoff (1+ yoff) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
393 height (1- height)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
394 (forward-line -1)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
395 (forward-line 1))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
396 (aset bbx 1 height) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
397 (aset bbx 3 yoff) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
398 (delete-region (point) (point-max)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
399 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
400 (while (not (eobp)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
401 (end-of-line) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
402 (delete-char 1)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
403 (setq bitmap-string (buffer-string))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
404 (error nil)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
405 (list dwidth bbx bitmap-string))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
406 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
407 (defun bdf-get-bitmaps (bdfname codes) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
408 "Return bitmap information of glyphs of CODES in `BDF' font file BDFNAME. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
409 CODES is a list of encoding number of glyphs in the file. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
410 The value is a list of CODE, DWIDTH, BBX, and BITMAP-STRING. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
411 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
|
412 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
|
413 BITMAP-STRING is a string representing bits by hexadecimal digits." |
24087
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
414 (let* ((font-info (bdf-find-font-info bdfname)) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
415 (absolute-path (bdf-info-absolute-path font-info)) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
416 ;;(font-bounding-box (bdf-info-font-bounding-box font-info)) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
417 (maxlen (bdf-info-maxlen font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
418 (code-range (bdf-info-code-range font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
419 (offset-vector (bdf-info-offset-vector font-info))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
420 (mapcar '(lambda (x) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
421 (cons x (bdf-read-bitmap |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
422 absolute-path |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
423 (aref offset-vector (bdf-compact-code x code-range)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
424 maxlen))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
425 codes))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
426 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
427 ;;; Interface to ps-print.el |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
428 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
429 ;; 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
|
430 (defun bdf-generate-prologue () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
431 (or bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
432 (bdf-initialize)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
433 (ps-mule-generate-bitmap-prologue)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
434 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
435 ;; Called from ps-mule-generate-font. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
436 (defun bdf-generate-font (charset font-spec) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
437 (let* ((font-name (ps-mule-font-spec-name font-spec)) |
24087
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
438 (font-info (bdf-find-font-info font-name)) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
439 (font-name (if (consp font-name) (car font-name) font-name))) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
440 (ps-mule-generate-bitmap-font font-name |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
441 (ps-mule-font-spec-bytes font-spec) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
442 (charset-width charset) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
443 (bdf-info-size font-info) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
444 (bdf-info-relative-compose font-info) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
445 (bdf-info-baseline-offset font-info) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
446 (bdf-info-font-bounding-box font-info)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
447 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
448 ;; Called from ps-mule-generate-glyphs. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
449 (defun bdf-generate-glyphs (font-spec code-list bytes) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
450 (let ((font-name (ps-mule-font-spec-name font-spec))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
451 (mapcar '(lambda (x) |
24087
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
452 (apply 'ps-mule-generate-bitmap-glyph |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
453 (if (consp font-name) (car font-name) font-name) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
454 x)) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
455 (bdf-get-bitmaps font-name code-list)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
456 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
457 (provide 'ps-bdf) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
458 |
52401 | 459 ;;; 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
|
460 ;;; ps-bdf.el ends here |