annotate lisp/ps-bdf.el @ 91151:6120724e072b

*** empty log message ***
author Kenichi Handa <handa@m17n.org>
date Sat, 01 Dec 2007 04:18:25 +0000
parents f55f9811f5d7
children 606f2d163a64
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38240
diff changeset
1 ;;; ps-bdf.el --- BDF font file handler for ps-print
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
2
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74605
diff changeset
3 ;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007
74544
43cc94d955c2 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74417
diff changeset
4 ;; Free Software Foundation, Inc.
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74605
diff changeset
5 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
67658
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64645
diff changeset
6 ;; National Institute of Advanced Industrial Science and Technology (AIST)
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64645
diff changeset
7 ;; Registration Number H14PRO021
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
8
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
9 ;; Copyright (C) 2003
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
10 ;; National Institute of Advanced Industrial Science and Technology (AIST)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
11 ;; Registration Number H13PRO009
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
12
26116
9eb84d5ffd61 Doc fix.
Kenichi Handa <handa@m17n.org>
parents: 24467
diff changeset
13 ;; 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
14 ;; 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
15
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
16 ;; 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
17
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
18 ;; 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
19 ;; it under the terms of the GNU General Public License as published by
78299
101aee30491c Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 75347
diff changeset
20 ;; the Free Software Foundation; either version 3, or (at your option)
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
21 ;; any later version.
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 ;; 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
24 ;; 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
25 ;; 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
26 ;; 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
27
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
28 ;; 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
29 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
30 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
31 ;; 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
32
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
33 ;;; Commentary:
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
34
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
35 ;; 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
36 ;; provided.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
37
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
38 ;;; Code:
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
39
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
40 (eval-and-compile
90736
ef1369583937 Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 90735
diff changeset
41 (require 'ps-mule))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
42
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
43 ;;;###autoload
24449
2428731823fd (bdf-directory-list): Different value for ms-dos.
Eli Zaretskii <eliz@gnu.org>
parents: 24416
diff changeset
44 (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
45 (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
46 (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
47 '("/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
48 "*List of directories to search for `BDF' font files.
24467
4d5aae556ba8 (bdf-directory-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 24450
diff changeset
49 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
50
38236
ec872cb65bc3 (bdf-directory-list): Use the value relative to
Eli Zaretskii <eliz@gnu.org>
parents: 37136
diff changeset
51 ;; 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
52 ;; 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
53 (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
54 (setq bdf-directory-list
60d1fad41645 (bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 24449
diff changeset
55 (list (expand-file-name "fonts/bdf" installation-directory))))
60d1fad41645 (bdf-directory-list): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 24449
diff changeset
56
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
57 (defun bdf-expand-file-name (bdfname)
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
58 "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
59 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
60 for BDFNAME."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
61 (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
62 (and (file-readable-p bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
63 bdfname)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
64 (catch 'tag
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
65 (dolist (dir bdf-directory-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
66 (let ((absolute-path (expand-file-name bdfname dir)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
67 (if (file-readable-p absolute-path)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
68 (throw 'tag absolute-path)))))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
69
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
70 (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
71 "Return modification time of FILENAME.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
72 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
73 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
74 (nth 5 (file-attributes filename)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
75
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
76 (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
77 "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
78 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
79 integer has high-order 16 bits, the second has low 16 bits."
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
80 (let* ((new-mod-time (bdf-file-mod-time filename))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
81 (new-time (car new-mod-time))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
82 (time (car mod-time)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
83 (or (> new-time time)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
84 (and (= new-time time)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
85 (> (nth 1 new-mod-time) (nth 1 mod-time))))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
86
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
87 (defun bdf-find-file (bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
88 "Return a buffer visiting a bdf file BDFNAME.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
89 BDFNAME must be an absolute file name.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
90 If BDFNAME doesn't exist, return nil."
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
91 (and (file-readable-p bdfname)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
92 (let ((buf (generate-new-buffer " *bdf-work*"))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
93 (coding-system-for-read 'no-conversion))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
94 (save-excursion
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
95 (set-buffer buf)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
96 (insert-file-contents bdfname)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
97 buf))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
98
39307
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
99 (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
100 ;; convert-standard-filename doesn't
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
101 ;; 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
102 ;; preserved.
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
103 "~/_bdfcache.el"
9861030de063 (bdf-cache-file) <ms-dos>: Use _bdfcache.el, since
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
104 (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
105 "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
106
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
107 (defvar bdf-cache nil
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
108 "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
109 FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
110 (ABSOLUTE-FILE-NAME MOD-TIME SIZE FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
111 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
112 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
113
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
114 (defun bdf-read-cache ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
115 "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
116 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
117 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
118 (setq bdf-cache nil)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
119 (condition-case nil
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
120 (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
121 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
122 (load-file bdf-cache-file)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
123 (if (listp bdf-cache)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
124 bdf-cache
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 (error nil)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
127
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
128 (defun bdf-write-cache ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
129 "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
130 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
131 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
132 (and bdf-cache
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
133 (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
134 (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
135 (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
136 nil bdf-cache-file)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
137
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
138 (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
139 "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
140 FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
141 (ABSOLUTE-FILE-NAME MOD-TIME SIZE FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
142 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
143 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
144 (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
145 (if slot
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
146 (setcdr slot (cdr font-info))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
147 (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
148
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
149 (defun bdf-initialize ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
150 "Initialize `bdf' library."
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
151 (and (bdf-read-cache)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
152 (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
153
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
154 (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
155 (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
156 (> code (aref code-range 5)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
157 (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
158 (+ (* (- (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
159 (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
160 (- (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
161
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
162 (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
163 (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
164 (+ (* (+ (/ 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
165 (+ (% 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
166
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
167 (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
168 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
169 (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
170 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
171 (goto-char (match-end 0))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
172 (read (current-buffer)))))
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-read-font-info (bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
175 "Read `BDF' font file BDFNAME and return information (FONT-INFO) of the file.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
176 BDFNAME must be an absolute file name.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
177 FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
178 (BDFFILE MOD-TIME FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
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 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
182 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
183
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
184 SIZE is a size of the font on 72 dpi device. This value is got
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
185 from SIZE record of the font.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
186
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
187 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
188 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
189
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
190 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
191 `_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
192 value is 0.
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 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
195 `_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
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 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
199 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
200 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
201
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
202 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
203
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
204 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
205 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
206
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
207 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
208 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
209 (bdf-compact-code CODE) => N, (bdf-expand-code N) => CODE"
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
210 (let* ((buf (bdf-find-file bdfname))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
211 (maxlen 0)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
212 (relative-compose 'false)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
213 (baseline-offset 0)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
214 size
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
215 dpi
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 39346
diff changeset
216 font-bounding-box
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
217 default-char
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
218 code-range
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
219 offset-vector)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
220 (if buf
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
221 (message "Reading %s..." bdfname)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
222 (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
223 (unwind-protect
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
224 (save-excursion
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
225 (set-buffer buf)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
226 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
227 (search-forward "\nFONTBOUNDINGBOX")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
228 (setq font-bounding-box
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
229 (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
230 (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
231 ;; 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
232 ;; 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
233 ;; They contain wrong FONTBOUNDINGBOX.
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
234 (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
235 (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
236 (aset font-bounding-box 3
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
237 (- (aref font-bounding-box 3))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
238
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
239 (goto-char (point-min))
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
240 (search-forward "\nFONT ")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
241 (if (looking-at "-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-\\([0-9]+\\)")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
242 (setq size (string-to-int (match-string 1)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
243 (search-forward "\nSIZE ")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
244 (setq size (read (current-buffer)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
245 ;; The following kludgy code is t avoid bugs of several
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
246 ;; fonts which have wrong SIZE record.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
247 (and (string-match "jiskan" bdfname)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
248 (<= size (/ (aref font-bounding-box 1) 3))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
249 (setq size (aref font-bounding-box 1)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
250 (setq dpi (read (current-buffer)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
251 (if (and (> dpi 0) (/= dpi 72))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
252 (setq size (/ (* size dpi) 72))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
253
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
254 (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
255
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
256 (search-forward "\nSTARTCHAR")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
257 (forward-line -1)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
258 (let ((limit (point)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
259 (setq relative-compose
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_RELATIVE_COMPOSE" limit)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
261 'false)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
262 baseline-offset
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_BASELINE_OFFSET" limit)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
264 0)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
265
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
266 (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
267 (max-code0 0) (max-code1 0) (max-code 0)
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
268 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
269
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
270 (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
271 (setq offset (line-beginning-position))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
272 (search-forward "\nENCODING")
64645
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
273 (setq code (read (current-buffer)))
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
274 (if (< code 0)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
275 (search-forward "ENDCHAR")
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
276 (setq code0 (lsh code -8)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
277 code1 (logand code 255)
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
278 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
279 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
280 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
281 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
282 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
283 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
284 (search-forward "ENDCHAR")
e4b9a37feb33 (bdf-read-font-info): Ignore glyphs whose ENCODING is
Kenichi Handa <handa@m17n.org>
parents: 64091
diff changeset
285 (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
286 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
287
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
288 (setq code-range
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
289 (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
290 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
291 offset-vector
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
292 (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
293 nil))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
294
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
295 (while glyph-list
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
296 (setq glyph (car glyph-list)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
297 glyph-list (cdr glyph-list))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
298 (aset offset-vector
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
299 (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
300 (cdr glyph)))))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
301
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
302 (kill-buffer buf))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
303 (message "Reading %s...done" bdfname)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
304 (list bdfname (bdf-file-mod-time bdfname)
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
305 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
306 code-range maxlen offset-vector)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
307
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
308 (defsubst bdf-info-absolute-path (font-info) (nth 0 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
309 (defsubst bdf-info-mod-time (font-info) (nth 1 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
310 (defsubst bdf-info-size (font-info) (nth 2 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
311 (defsubst bdf-info-font-bounding-box (font-info) (nth 3 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
312 (defsubst bdf-info-relative-compose (font-info) (nth 4 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
313 (defsubst bdf-info-baseline-offset (font-info) (nth 5 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
314 (defsubst bdf-info-code-range (font-info) (nth 6 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
315 (defsubst bdf-info-maxlen (font-info) (nth 7 font-info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
316 (defsubst bdf-info-offset-vector (font-info) (nth 8 font-info))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
317
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
318 (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
319 "Return information about `BDF' font file BDFNAME.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
320 BDFNAME must be an absolute file name.
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
321 The value FONT-INFO is a list of the following format:
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
322 (BDFNAME MOD-TIME SIZE FONT-BOUNDING-BOX
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
323 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
324 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
325 (or bdf-cache
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
326 (bdf-read-cache))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
327 (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
328 (if (or (not font-info)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
329 (not (file-readable-p bdfname))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
330 (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
331 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
332 (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
333 (bdf-set-cache font-info)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
334 font-info))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
335
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
336 (defun bdf-read-bitmap (bdfname offset maxlen relative-compose)
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
337 "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
338 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
339 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
340 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
341 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
342 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
343 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
344 (let* ((coding-system-for-read 'no-conversion)
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
345 (bbx (bdf-info-font-bounding-box (bdf-get-font-info bdfname)))
39346
aa9501b93334 (bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents: 39307
diff changeset
346 (dwidth (elt bbx 0))
aa9501b93334 (bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents: 39307
diff changeset
347 (bitmap-string "")
aa9501b93334 (bdf-read-bitmap): Initialize returned values to
Gerd Moellmann <gerd@gnu.org>
parents: 39307
diff changeset
348 height yoff)
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
349 (condition-case nil
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
350 (with-temp-buffer
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
351 (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
352 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
353 (search-forward "\nDWIDTH")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
354 (setq dwidth (read (current-buffer)))
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
355 (if (= dwidth 0)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
356 (setq dwidth 0.1))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
357 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
358 (search-forward "\nBBX")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
359 (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
360 (read (current-buffer)) (read (current-buffer)))
37136
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
361 height (aref bbx 1)
422bd2e720f2 XEmacs compatibility. Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 34313
diff changeset
362 yoff (aref bbx 3))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
363 (search-forward "\nBITMAP")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
364 (forward-line 1)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
365 (delete-region (point-min) (point))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
366 (and (looking-at "\\(0+\n\\)+")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
367 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
368 (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
369 (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
370 (or (looking-at "ENDCHAR")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
371 (progn
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
372 (search-forward "ENDCHAR" nil 'move)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
373 (forward-line -1)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
374 (while (looking-at "0+$")
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
375 (setq yoff (1+ yoff)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
376 height (1- height))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
377 (forward-line -1))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
378 (forward-line 1)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
379 (aset bbx 1 height)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
380 (aset bbx 3 yoff)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
381 (delete-region (point) (point-max))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
382 (goto-char (point-min))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
383 (while (not (eobp))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
384 (end-of-line)
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
385 (delete-char 1))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
386 (setq bitmap-string (buffer-string)))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
387 (error nil))
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
388 (vector dwidth (aref bbx 0) (aref bbx 1) (aref bbx 2) (aref bbx 3)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
389 (concat "<" bitmap-string ">")
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
390 (or relative-compose 'false))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
391
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
392 (defun bdf-get-bitmap (bdfname code)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
393 "Return bitmap information of glyph of CODE in `BDF' font file BDFNAME.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
394 CODE is an encoding number of glyph in the file.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
395 The value is a list (DWIDTH BBX BITMAP-STRING).
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
396 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
397 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
398 BITMAP-STRING is a string representing bits by hexadecimal digits."
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
399 (let* ((info (bdf-get-font-info bdfname))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
400 (maxlen (bdf-info-maxlen info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
401 (code-range (bdf-info-code-range info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
402 (offset-vector (bdf-info-offset-vector info)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
403 (bdf-read-bitmap bdfname
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
404 (aref offset-vector (bdf-compact-code code code-range))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
405 maxlen (bdf-info-relative-compose info))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
406
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
407 ;;; Interface to ps-mule.el
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
408
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
409 ;; 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
410 (defun bdf-generate-prologue ()
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
411 (or bdf-cache
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
412 (bdf-initialize))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
413 (ps-mule-generate-bitmap-prologue))
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
414
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
415 ;; Called from ps-mule-check-font.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
416 (defun bdf-check-font (font-spec)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
417 (let ((font-name-list (ps-mule-font-spec-name font-spec)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
418 (ps-mule-font-spec-set-name
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
419 font-spec
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
420 (if (stringp font-name-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
421 (bdf-expand-file-name font-name-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
422 (catch 'tag
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
423 (dolist (font-name font-name-list)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
424 (setq font-name (bdf-expand-file-name font-name))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
425 (if font-name
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
426 (throw 'tag font-name))))))))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
427
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
428 ;; Called from ps-mule-generate-font.
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
429 (defun bdf-generate-font (font-spec)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
430 (let ((info (bdf-get-font-info (ps-mule-font-spec-name font-spec))))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
431 (ps-mule-font-spec-set-extra
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
432 font-spec (bdf-info-absolute-path info))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
433 (ps-mule-generate-bitmap-font font-spec
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
434 (bdf-info-size info)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
435 (bdf-info-relative-compose info)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
436 (bdf-info-baseline-offset info)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
437 (bdf-info-font-bounding-box info))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
438
89530
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
439 ;; Called from ps-mule-generate-glyph.
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
440 (defun bdf-generate-glyph (font-spec char)
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
441 (let ((font-name (ps-mule-font-spec-extra font-spec))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
442 (code (ps-mule-encode-char char font-spec)))
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
443 (ps-mule-generate-bitmap-glyph font-spec char code
498e5353548a Mostly re-written.
Kenichi Handa <handa@m17n.org>
parents: 88123
diff changeset
444 (bdf-get-bitmap font-name code))))
23896
c0c441b28347 File name changed from bdf.el. Provide ps-bdf
Kenichi Handa <handa@m17n.org>
parents: 23895
diff changeset
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
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51875
diff changeset
448 ;;; 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
449 ;;; ps-bdf.el ends here