changeset 3665:5724b7632db3

[xemacs-hg @ 2006-11-07 15:54:42 by stephent] Try to kill src/xft-fonts.h permanently.
author stephent
date Tue, 07 Nov 2006 15:54:47 +0000
parents 1d313cd71cd7
children 3214dca89755
files lisp/unicode.el src/font-mgr.h src/lread.c src/xft-fonts.h
diffstat 3 files changed, 35 insertions(+), 69 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/unicode.el	Tue Nov 07 14:04:56 2006 +0000
+++ b/lisp/unicode.el	Tue Nov 07 15:54:47 2006 +0000
@@ -283,6 +283,38 @@
 	  "Sorry, encode-char doesn't yet support anything but the UCS.  ")
   (char-to-unicode char))
 
+(when (featurep 'mule)
+  ;; This CCL program is used for displaying the fallback UCS character set,
+  ;; and can be repurposed to lao and the IPA, all going well.
+  ;;
+  ;; define-ccl-program is available after mule-ccl is loaded, much later
+  ;; than this file in the build process. The below is the result of 
+  ;;
+  ;;   (macroexpand 
+  ;;    '(define-ccl-program ccl-encode-to-ucs-2
+  ;;      `(1
+  ;;        ((r1 = (r1 << 8))
+  ;; 	     (r1 = (r1 | r2))
+  ;; 	     (mule-to-unicode r0 r1)
+  ;; 	     (r1 = (r0 >> 8))
+  ;; 	     (r2 = (r0 & 255))))
+  ;;      "CCL program to transform Mule characters to UCS-2."))
+  ;;
+  ;; and it should occasionally be confirmed that the correspondence still
+  ;; holds.
+
+  (let ((prog [1 10 131127 8 98872 65823 147513 8 82009 255 22]))
+    (defconst ccl-encode-to-ucs-2 prog 
+      "CCL program to transform Mule characters to UCS-2.")
+    (put (quote ccl-encode-to-ucs-2) (quote ccl-program-idx) 
+	 (register-ccl-program (quote ccl-encode-to-ucs-2) prog)) nil))
+
+;; Won't do this just yet, though. 
+;; (set-charset-registry 'lao "iso10646-1")
+;; (set-charset-ccl-program 'lao 'ccl-encode-to-ucs-2)
+;; (set-charset-registry 'ipa "iso10646-1")
+;; (set-charset-ccl-program 'ipa 'ccl-encode-to-ucs-2)
+
 ;; #### UTF-7 is not yet implemented, and it's tricky to do.  There's
 ;; an implementation in appendix A.1 of the Unicode Standard, Version
 ;; 2.0, but I don't know its licensing characteristics.
--- a/src/font-mgr.h	Tue Nov 07 14:04:56 2006 +0000
+++ b/src/font-mgr.h	Tue Nov 07 15:54:47 2006 +0000
@@ -68,73 +68,4 @@
 #define CONCHECK_FCPATTERN(x) CONCHECK_RECORD (x, fc_pattern)
 #define XFCPATTERN_PTR(x) (XFCPATTERN(x)->fcpatPtr)
 
-#ifdef USE_XFT
-/*
-  The format of a fontname (as returned by fontconfig) is not well-documented,
-  But the character repertoire is represented in an ASCII-compatible way.  See
-  fccharset.c (FcCharSetUnparse).  So we can use UTF-8 for long names.
-
-  Currently we have a hack where different versions of the unparsed name are
-  used in different contexts fairly arbitrarily.  I don't think this is close
-  to coherency; even without the charset and lang properties fontconfig names
-  are too unwieldy to use.  We need to rethink the approach here.  I think
-  probably Lisp_Font_Instance.name should contain the font name as specified
-  to Lisp (almost surely much shorter than shortname, even, and most likely
-  wildcarded), while Lisp_Font_Instance.truename should contain the longname.
-  For now, I'm going to #ifdef the return values defaulting to short. -- sjt
-*/
-
-/*                DEBUGGING STUFF                */
-
-/* print message to stderr: one internal-format string argument */
-#define DEBUG_XFT0(level,s)		\
-  if (debug_xft > level) stderr_out (s)
-
-/* print message to stderr: one formatted argument */
-#define DEBUG_XFT1(level,format,x1)		\
-  if (debug_xft > level) stderr_out (format, x1)
-
-/* print message to stderr: two formatted arguments */
-#define DEBUG_XFT2(level,format,x1,x2)			\
-  if (debug_xft > level) stderr_out (format, x1, x2)
-
-/* print message to stderr: three formatted arguments */
-#define DEBUG_XFT3(level,format,x1,x2,x3)			\
-  if (debug_xft > level) stderr_out (format, x1, x2, x3)
-
-/* print message to stderr: four formatted arguments */
-#define DEBUG_XFT4(level,format,x1,x2,x3,x4)			\
-  if (debug_xft > level) stderr_out (format, x1, x2, x3, x4)
-
-/* print an Xft pattern to stderr
-   LEVEL is the debug level (to compare to debug_xft)
-   FORMAT is a newline-terminated printf format with one %s for the pattern
-     and must be internal format (eg, pure ASCII)
-   PATTERN is an FcPattern *. */
-#define PRINT_XFT_PATTERN(level,format,pattern)			\
-  do {								\
-    DECLARE_EISTRING (eistrpxft_name);				\
-    FcChar8 *name = FcNameUnparse (pattern);			\
-								\
-    eicpy_ext(eistrpxft_name, name, Qfc_font_name_encoding);	\
-    DEBUG_XFT1 (level, format, eidata(eistrpxft_name));		\
-    free (name);						\
-  } while (0)
-
-/* print a progress message
-   LEVEL is the debug level (to compare to debug_xft)
-   FONT is the Xft font name in UTF-8 (the native encoding of Xft)
-   LANG is the language being checked for support (must be ASCII). */
-#define CHECKING_LANG(level,font,lang)					\
-  do {									\
-    DECLARE_EISTRING (eistrcl_name);					\
-    eicpy_ext(eistrcl_name, font, Qfc_font_name_encoding);		\
-    DEBUG_XFT2 (level, "checking if %s handles %s\n",			\
-			eidata(eistrcl_name), lang);			\
-  } while (0)
-
-#else /* USE_XFT */
-
-#endif /* USE_XFT */
-
 #endif /* INCLUDED_font_mgr_h_ */
--- a/src/lread.c	Tue Nov 07 14:04:56 2006 +0000
+++ b/src/lread.c	Tue Nov 07 15:54:47 2006 +0000
@@ -1720,6 +1720,9 @@
 {
   /* This function can GC */
   Ichar c = readchar (readcharfun);
+  /* \u allows up to four hex digits, \U up to eight. Default to the
+     behaviour for \u, and change this value in the case that \U is seen. */
+  int unicode_hex_count = 4;
 
   if (c < 0)
     signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun));