Mercurial > emacs
annotate lisp/ps-bdf.el @ 37375:612c8df1b6a5
Fix a typo.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Wed, 18 Apr 2001 12:33:29 +0000 |
parents | 422bd2e720f2 |
children | ec872cb65bc3 |
rev | line source |
---|---|
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
1 ;;; ps-bdf.el --- BDF font file handler for ps-print. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
2 |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
3 ;; Copyright (C) 1998,99,2001 Electrotechnical Laboratory, JAPAN. |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
4 ;; Licensed to the Free Software Foundation. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
5 |
26116 | 6 ;; Keywords: wp, BDF, font, PostScript |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
7 ;; Maintainer: Kenichi Handa <handa@etl.go.jp> |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
8 ;; Time-stamp: <2001/03/05 09:04:32 vinicius> |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
9 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
10 ;; 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
|
11 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
12 ;; 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
|
13 ;; 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
|
14 ;; 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
|
15 ;; any later version. |
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 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
|
18 ;; 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
|
19 ;; 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
|
20 ;; 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
|
21 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
22 ;; 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
|
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
25 ;; Boston, MA 02111-1307, USA. |
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 ;;; Commentary: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
28 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
29 ;; 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
|
30 ;; provided. |
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 ;;; Code: |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
33 |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
34 (eval-and-compile |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
35 (require 'ps-mule) |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
36 |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
37 ;; to avoid XEmacs compilation gripes |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
38 (defvar installation-directory nil) |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
39 (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
|
40 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
41 ;;;###autoload |
24449
2428731823fd
(bdf-directory-list): Different value for ms-dos.
Eli Zaretskii <eliz@gnu.org>
parents:
24416
diff
changeset
|
42 (defvar bdf-directory-list |
2428731823fd
(bdf-directory-list): Different value for ms-dos.
Eli Zaretskii <eliz@gnu.org>
parents:
24416
diff
changeset
|
43 (if (eq system-type 'ms-dos) |
24450
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
44 (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
|
45 '("/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
|
46 "*List of directories to search for `BDF' font files. |
24467 | 47 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
|
48 |
24450
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
49 ;; MS-DOS users like to move the binary around after it's built, but |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
50 ;; the value above is computed at load-up time. |
24450
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
51 (and (eq system-type 'ms-dos) |
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
52 (setq bdf-directory-list |
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
53 (list (expand-file-name "fonts/bdf" installation-directory)))) |
60d1fad41645
(bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
24449
diff
changeset
|
54 |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
55 (defun bdf-expand-file-name (bdfname) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
56 "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
|
57 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
|
58 for BDFNAME." |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
59 (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
|
60 (and (file-readable-p bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
61 bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
62 (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
|
63 dir) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
64 (while (and dir-list |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
65 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
66 (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
|
67 (not (file-readable-p dir)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
68 (setq dir nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
69 dir-list (cdr dir-list))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
70 dir))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
71 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
72 (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
|
73 "Return modification time of FILENAME. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
74 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
|
75 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
|
76 (nth 5 (file-attributes filename))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
77 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
78 (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
|
79 "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
|
80 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
|
81 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
|
82 (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
|
83 (and file-name |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
84 (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
|
85 (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
|
86 (time (car mod-time))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
87 (or (> new-time time) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
88 (and (= new-time time) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
89 (> (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
|
90 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
91 (defun bdf-find-file (bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
92 "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
|
93 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
|
94 `bdf-directory-list' is searched. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
95 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
|
96 (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
|
97 (and file-name |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
98 (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
|
99 (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
|
100 (save-excursion |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
101 (set-buffer buf) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
102 (insert-file-contents file-name) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
103 buf))))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
104 |
24087
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
105 (defvar bdf-cache-file (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
|
106 "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
|
107 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
108 (defvar bdf-cache nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
109 "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
|
110 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
|
111 (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
|
112 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
|
113 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
|
114 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
115 (defun bdf-read-cache () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
116 "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
|
117 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
|
118 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
|
119 (setq bdf-cache nil) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
120 (condition-case nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
121 (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
|
122 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
123 (load-file bdf-cache-file) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
124 (if (listp bdf-cache) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
125 bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
126 (setq bdf-cache nil)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
127 (error nil))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
128 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
129 (defun bdf-write-cache () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
130 "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
|
131 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
|
132 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
|
133 (and bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
134 (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
|
135 (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
|
136 (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
|
137 nil bdf-cache-file))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
138 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
139 (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
|
140 "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
|
141 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
|
142 (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
|
143 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
|
144 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
|
145 (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
|
146 (if slot |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
147 (setcdr slot (cdr font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
148 (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
|
149 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
150 (defun bdf-initialize () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
151 "Initialize `bdf' library." |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
152 (and (bdf-read-cache) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
153 (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
|
154 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
155 (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
|
156 (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
|
157 (> code (aref code-range 5))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
158 (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
|
159 (+ (* (- (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
|
160 (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
|
161 (- (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
|
162 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
163 (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
|
164 (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
|
165 (+ (* (+ (/ 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
|
166 (+ (% 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
|
167 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
168 (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
|
169 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
170 (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
|
171 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
172 (goto-char (match-end 0)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
173 (read (current-buffer))))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
174 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
175 (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
|
176 "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
|
177 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
|
178 (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
|
179 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
|
180 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
181 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
|
182 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
183 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
|
184 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
185 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
|
186 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
|
187 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
188 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
|
189 font. |
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 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
|
192 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
|
193 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
194 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
|
195 `_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
|
196 value is 0. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
197 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
198 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
|
199 `_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
|
200 value is 0. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
201 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
202 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
|
203 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
|
204 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
|
205 |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
206 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
|
207 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
208 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
|
209 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
|
210 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
211 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
|
212 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
|
213 (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
|
214 (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
|
215 (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
|
216 (maxlen 0) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
217 (relative-compose 'false) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
218 (baseline-offset 0) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
219 size |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
220 font-bounding-box |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
221 default-char |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
222 code-range |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
223 offset-vector) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
224 (if buf |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
225 (message "Reading %s..." bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
226 (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
|
227 (unwind-protect |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
228 (save-excursion |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
229 (set-buffer buf) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
230 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
231 (search-forward "\nFONTBOUNDINGBOX") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
232 (setq font-bounding-box |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
233 (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
|
234 (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
|
235 ;; 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
|
236 ;; 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
|
237 ;; They contain wrong FONTBOUNDINGBOX. |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
238 (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
|
239 (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
|
240 (aset font-bounding-box 3 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
241 (- (aref font-bounding-box 3)))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
242 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
243 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
244 (search-forward "\nSIZE ") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
245 (setq size (read (current-buffer))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
246 ;; 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
|
247 ;; 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
|
248 (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
|
249 (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
|
250 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
251 (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
|
252 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
253 (search-forward "\nSTARTCHAR") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
254 (forward-line -1) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
255 (let ((limit (point))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
256 (setq relative-compose |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
257 (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
|
258 'false) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
259 baseline-offset |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
260 (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
|
261 0))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
262 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
263 (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
|
264 (max-code0 0) (max-code1 0) (max-code 0) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
265 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
|
266 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
267 (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
|
268 (setq offset (line-beginning-position)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
269 (search-forward "\nENCODING") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
270 (setq code (read (current-buffer)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
271 code0 (lsh code -8) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
272 code1 (logand code 255) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
273 min-code (min min-code code) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
274 max-code (max max-code code) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
275 min-code0 (min min-code0 code0) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
276 max-code0 (max max-code0 code0) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
277 min-code1 (min min-code1 code1) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
278 max-code1 (max max-code1 code1)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
279 (search-forward "ENDCHAR") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
280 (setq maxlen (max maxlen (- (point) offset)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
281 glyph-list (cons (cons code offset) glyph-list))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
282 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
283 (setq code-range |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
284 (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
|
285 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
|
286 offset-vector |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
287 (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
|
288 nil)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
289 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
290 (while glyph-list |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
291 (setq glyph (car glyph-list) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
292 glyph-list (cdr glyph-list)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
293 (aset offset-vector |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
294 (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
|
295 (cdr glyph))))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
296 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
297 (kill-buffer buf)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
298 (message "Reading %s...done" bdfname) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
299 (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
|
300 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
|
301 code-range maxlen offset-vector))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
302 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
303 (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
|
304 (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
|
305 (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
|
306 (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
|
307 (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
|
308 (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
|
309 (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
|
310 (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
|
311 (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
|
312 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
313 (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
|
314 "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
|
315 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
|
316 (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
|
317 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
|
318 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
|
319 (or bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
320 (bdf-read-cache)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
321 (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
|
322 (if (or (not font-info) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
323 (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
|
324 (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
|
325 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
326 (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
|
327 (bdf-set-cache font-info))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
328 font-info)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
329 |
24087
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
330 (defun bdf-find-font-info (bdfnames) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
331 "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
|
332 |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
333 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
|
334 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
|
335 on that file name." |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
336 (let ((fnlist bdfnames) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
337 (fname bdfnames)) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
338 (if (consp fnlist) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
339 (while (and fnlist |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
340 (progn |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
341 (setq fname (car fnlist)) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
342 (null (bdf-expand-file-name fname)))) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
343 (setq fname nil |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
344 fnlist (cdr fnlist)))) |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
345 (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
|
346 |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
347 (defun bdf-read-bitmap (bdfname offset maxlen) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
348 "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
|
349 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
|
350 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
|
351 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
|
352 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
|
353 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
|
354 BITMAP-STRING is a string representing bits by hexadecimal digits." |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
355 (let ((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
|
356 dwidth bbx height yoff bitmap-string) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
357 (condition-case nil |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
358 (with-temp-buffer |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
359 (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
|
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 "\nDWIDTH") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
362 (setq dwidth (read (current-buffer))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
363 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
364 (search-forward "\nBBX") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
365 (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
|
366 (read (current-buffer)) (read (current-buffer))) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
367 height (aref bbx 1) |
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
368 yoff (aref bbx 3)) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
369 (search-forward "\nBITMAP") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
370 (forward-line 1) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
371 (delete-region (point-min) (point)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
372 (and (looking-at "\\(0+\n\\)+") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
373 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
374 (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
|
375 (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
|
376 (or (looking-at "ENDCHAR") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
377 (progn |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
378 (search-forward "ENDCHAR" nil 'move) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
379 (forward-line -1) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
380 (while (looking-at "0+$") |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
381 (setq yoff (1+ yoff) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
382 height (1- height)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
383 (forward-line -1)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
384 (forward-line 1))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
385 (aset bbx 1 height) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
386 (aset bbx 3 yoff) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
387 (delete-region (point) (point-max)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
388 (goto-char (point-min)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
389 (while (not (eobp)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
390 (end-of-line) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
391 (delete-char 1)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
392 (setq bitmap-string (buffer-string))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
393 (error nil)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
394 (list dwidth bbx bitmap-string))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
395 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
396 (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
|
397 "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
|
398 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
|
399 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
|
400 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
|
401 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
|
402 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
|
403 (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
|
404 (absolute-path (bdf-info-absolute-path font-info)) |
37136
422bd2e720f2
XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
34313
diff
changeset
|
405 ;;(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
|
406 (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
|
407 (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
|
408 (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
|
409 (mapcar '(lambda (x) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
410 (cons x (bdf-read-bitmap |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
411 absolute-path |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
412 (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
|
413 maxlen))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
414 codes))) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
415 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
416 ;;; Interface to ps-print.el |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
417 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
418 ;; 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
|
419 (defun bdf-generate-prologue () |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
420 (or bdf-cache |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
421 (bdf-initialize)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
422 (ps-mule-generate-bitmap-prologue)) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
423 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
424 ;; 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
|
425 (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
|
426 (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
|
427 (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
|
428 (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
|
429 (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
|
430 (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
|
431 (charset-width charset) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
432 (bdf-info-size font-info) |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
433 (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
|
434 (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
|
435 (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
|
436 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
437 ;; 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
|
438 (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
|
439 (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
|
440 (mapcar '(lambda (x) |
24087
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
441 (apply 'ps-mule-generate-bitmap-glyph |
dd3bd06af523
(bdf-cache-file): Use convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
23896
diff
changeset
|
442 (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
|
443 x)) |
23896
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
444 (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
|
445 |
c0c441b28347
File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents:
23895
diff
changeset
|
446 (provide 'ps-bdf) |
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 ;;; ps-bdf.el ends here |