diff lisp/mule/mule-x-init.el @ 428:3ecd8885ac67 r21-2-22

Import from CVS: tag r21-2-22
author cvs
date Mon, 13 Aug 2007 11:28:15 +0200
parents
children abe6d1db359e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/mule/mule-x-init.el	Mon Aug 13 11:28:15 2007 +0200
@@ -0,0 +1,126 @@
+;;; mule-x-init.el --- initialization code for X Windows under MULE
+;; Copyright (C) 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1996 Ben Wing <ben@xemacs.org>
+
+;; Author: various
+;; Keywords: mule X11
+
+;; This file is part of XEmacs.
+;;
+;; XEmacs 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 2, or (at your option)
+;; any later version.
+;;
+;; XEmacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+;;; Work around what is arguably a Sun CDE bug.
+
+(defun x-use-halfwidth-roman-font (fullwidth-charset roman-registry)
+  "Maybe set charset registry of the 'ascii charset to ROMAN-REGISTRY.
+
+Do this only if:
+ - the current display is an X device
+ - the displayed width of FULLWIDTH-CHARSET is twice the displayed
+   width of the 'ascii charset, but only when using ROMAN-REGISTRY.
+
+Traditionally, Asian characters have been displayed so that they
+occupy exactly twice the screen space of ASCII (`halfwidth')
+characters.  On many systems, e.g. Sun CDE systems, this can only be
+achieved by using a national variant roman font to display ASCII."
+  (let ((charset-font-width
+	 (lambda (charset)
+	   (font-instance-width
+	    (face-font-instance 'default (selected-device) charset))))
+
+	(twice-as-wide
+	 (lambda (cs1 cs2)
+	   (let ((width1 (funcall charset-font-width cs1))
+		 (width2 (funcall charset-font-width cs2)))
+	     (and width1 width2 (eq (+ width1 width1) width2))))))
+
+    (when (eq 'x (device-type))
+      (condition-case nil
+	  (unless (funcall twice-as-wide 'ascii fullwidth-charset)
+	    (set-charset-registry 'ascii roman-registry)
+	    (unless (funcall twice-as-wide 'ascii fullwidth-charset)
+	      ;; Restore if roman-registry didn't help
+	      (set-charset-registry 'ascii "iso8859-1")))
+	(error (set-charset-registry 'ascii "iso8859-1"))))))
+
+;;;;
+
+(defvar mule-x-win-initted nil)
+
+(defun init-mule-x-win ()
+  "Initialize X Windows for MULE at startup.  Don't call this."
+  (when (not mule-x-win-initted)
+    (define-specifier-tag 'mule-fonts
+      (lambda (device) (eq 'x (device-type device))))
+
+    (set-face-font
+     'default
+     '("-*-fixed-medium-r-*--16-*-iso8859-1"
+       "-*-fixed-medium-r-*--*-iso8859-1"
+       "-*-fixed-medium-r-*--*-iso8859-2"
+       "-*-fixed-medium-r-*--*-iso8859-3"
+       "-*-fixed-medium-r-*--*-iso8859-4"
+       "-*-fixed-medium-r-*--*-iso8859-7"
+       "-*-fixed-medium-r-*--*-iso8859-8"
+       "-*-fixed-medium-r-*--*-iso8859-5"
+       "-*-fixed-medium-r-*--*-iso8859-9"
+
+       ;; Following 3 fonts proposed by Teruhiko.Kurosaka@Japan.eng.sun
+       "-sun-gothic-medium-r-normal--14-120-75-75-c-60-jisx0201.1976-0"
+       "-sun-gothic-medium-r-normal--14-120-75-75-c-120-jisx0208.1983-0"
+       "-wadalab-gothic-medium-r-normal--14-120-75-75-c-120-jisx0212.1990-0"
+       ;; Other Japanese fonts
+       "-*-fixed-medium-r-*--*-jisx0201.1976-*"
+       "-*-fixed-medium-r-*--*-jisx0208.1983-*"
+       "-*-fixed-medium-r-*--*-jisx0212*-*"
+
+       ;; Chinese fonts
+       "-*-*-medium-r-*--*-gb2312.1980-*"
+       
+       ;; Use One font specification for CNS chinese
+       ;; Too many variations in font naming
+       "-*-fixed-medium-r-*--*-cns11643*-*"
+       ;; "-*-fixed-medium-r-*--*-cns11643*2"
+       ;; "-*-fixed-medium-r-*--*-cns11643*3"
+       ;; "-*-fixed-medium-r-*--*-cns11643*4"
+       ;; "-*-fixed-medium-r-*--*-cns11643.5-0"
+       ;; "-*-fixed-medium-r-*--*-cns11643.6-0"
+       ;; "-*-fixed-medium-r-*--*-cns11643.7-0"
+       
+       "-*-fixed-medium-r-*--*-big5*-*"
+       "-*-fixed-medium-r-*--*-sisheng_cwnn-0"
+
+       ;; Other fonts
+       
+       ;; "-*-fixed-medium-r-*--*-viscii1.1-1"
+       
+       ;; "-*-fixed-medium-r-*--*-mulearabic-0"
+       ;; "-*-fixed-medium-r-*--*-mulearabic-1"
+       ;; "-*-fixed-medium-r-*--*-mulearabic-2"
+
+       ;; "-*-fixed-medium-r-*--*-muleipa-1"
+       ;; "-*-fixed-medium-r-*--*-ethio-*"
+
+       "-*-mincho-medium-r-*--*-ksc5601.1987-*" ; Korean
+       "-*-fixed-medium-r-*--*-tis620.2529-1"   ; Thai
+       )
+     'global '(mule-fonts) 'append)
+
+    (setq mule-x-win-initted t)))