X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/d235ca2ff8fab139ce797757fcb159d1e28fa7e0..34e856d5ac828753b7be20e2471f39fb613f7f40:/lisp/ps-bdf.el diff --git a/lisp/ps-bdf.el b/lisp/ps-bdf.el index 3ab884c34d..12e9541b4c 100644 --- a/lisp/ps-bdf.el +++ b/lisp/ps-bdf.el @@ -1,25 +1,25 @@ ;;; ps-bdf.el --- BDF font file handler for ps-print -;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -;; Free Software Foundation, Inc. +;; Copyright (C) 1998-1999, 2001-2014 Free Software Foundation, Inc. ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, -;; 2008 +;; 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 +;; (according to ack.texi) ;; Keywords: wp, BDF, font, PostScript -;; Maintainer: Kenichi Handa +;; 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 @@ -27,9 +27,7 @@ ;; 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 . ;;; Commentary: @@ -38,16 +36,18 @@ ;;; 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. @@ -70,20 +70,15 @@ for BDFNAME." (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. @@ -92,17 +87,11 @@ If BDFNAME doesn't exist, return nil." (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 @@ -179,8 +168,8 @@ FONT-INFO is a list of the following format: (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. @@ -222,8 +211,7 @@ CODE, where N and CODE are in the following relation: (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 @@ -240,10 +228,10 @@ CODE, where N and CODE are in the following relation: (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)) @@ -446,5 +434,4 @@ BITMAP-STRING is a string representing bits by hexadecimal digits." (provide 'ps-bdf) -;;; arch-tag: 9b875ba8-565a-4ecf-acaa-30cee732c898 ;;; ps-bdf.el ends here