;;; ps-bdf.el --- BDF font file handler for ps-print
-;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-;; Free Software Foundation, Inc.
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;; Copyright (C) 1998-1999, 2001-2016 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;; 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
-
;; Copyright (C) 2003
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
+;; Author: Kenichi Handa <handa@m17n.org>
+;; (according to ack.texi)
;; Keywords: wp, BDF, font, PostScript
-;; Maintainer: Kenichi Handa <handa@m17n.org>
+;; Package: ps-print
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
-(eval-and-compile
- (require 'ps-mule))
+(require 'ps-mule)
;;;###autoload
-(defvar bdf-directory-list
+(defcustom bdf-directory-list
(if (memq system-type '(ms-dos windows-nt))
(list (expand-file-name "fonts/bdf" installation-directory))
'("/usr/local/share/emacs/fonts/bdf"))
- "*List of directories to search for `BDF' font files.
-The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
+ "List of directories to search for `BDF' font files.
+The default value is (\"/usr/local/share/emacs/fonts/bdf\")."
+ :type '(repeat :tag "BDF font directory list"
+ (directory :tag "BDF font directory"))
+ :group 'ps-print-miscellany)
;; MS-DOS and MS-Windows users like to move the binary around after
;; it's built, but the value above is computed at load-up time.
(defsubst bdf-file-mod-time (filename)
"Return modification time of FILENAME.
-The value is a list of two integers, the first integer has high-order
-16 bits, the second has low 16 bits."
+The value is a list of integers in the same format as `current-time'."
(nth 5 (file-attributes filename)))
(defun bdf-file-newer-than-time (filename mod-time)
"Return non-nil if and only if FILENAME is newer than MOD-TIME.
-MOD-TIME is a modification time as a list of two integers, the first
-integer has high-order 16 bits, the second has low 16 bits."
- (let* ((new-mod-time (bdf-file-mod-time filename))
- (new-time (car new-mod-time))
- (time (car mod-time)))
- (or (> new-time time)
- (and (= new-time time)
- (> (nth 1 new-mod-time) (nth 1 mod-time))))))
+MOD-TIME is a modification time as a list of integers in the same
+format as `current-time'."
+ (let ((new-mod-time (bdf-file-mod-time filename)))
+ (time-less-p mod-time new-mod-time)))
(defun bdf-find-file (bdfname)
"Return a buffer visiting a bdf file BDFNAME.
(and (file-readable-p bdfname)
(let ((buf (generate-new-buffer " *bdf-work*"))
(coding-system-for-read 'no-conversion))
- (save-excursion
- (set-buffer buf)
+ (with-current-buffer buf
(insert-file-contents bdfname)
buf))))
-(defvar bdf-cache-file (if (eq system-type 'ms-dos)
- ;; convert-standard-filename doesn't
- ;; guarantee that the .el extension will be
- ;; preserved.
- "~/_bdfcache.el"
- (convert-standard-filename "~/.bdfcache.el"))
+(defvar bdf-cache-file (locate-user-emacs-file "bdfcache.el" ".bdfcache.el")
"Name of cache file which contains information of `BDF' font files.")
(defvar bdf-cache nil
(BDFFILE MOD-TIME FONT-BOUNDING-BOX
RELATIVE-COMPOSE BASELINE-OFFSET CODE-RANGE MAXLEN OFFSET-VECTOR)
-MOD-TIME is last modification time as a list of two integers, the
-first integer has high-order 16 bits, the second has low 16 bits.
+MOD-TIME is last modification time as a list of integers in the
+same format as `current-time'.
SIZE is a size of the font on 72 dpi device. This value is got
from SIZE record of the font.
(message "Reading %s..." bdfname)
(error "BDF file %s doesn't exist" bdfname))
(unwind-protect
- (save-excursion
- (set-buffer buf)
+ (with-current-buffer buf
(goto-char (point-min))
(search-forward "\nFONTBOUNDINGBOX")
(setq font-bounding-box
(goto-char (point-min))
(search-forward "\nFONT ")
(if (looking-at "-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-\\([0-9]+\\)")
- (setq size (string-to-int (match-string 1)))
+ (setq size (string-to-number (match-string 1)))
(search-forward "\nSIZE ")
(setq size (read (current-buffer)))
- ;; The following kludgy code is t avoid bugs of several
+ ;; The following kludgy code is to avoid bugs of several
;; fonts which have wrong SIZE record.
(and (string-match "jiskan" bdfname)
(<= size (/ (aref font-bounding-box 1) 3))
(provide 'ps-bdf)
-;;; arch-tag: 9b875ba8-565a-4ecf-acaa-30cee732c898
;;; ps-bdf.el ends here