specifier instancing may be misleading [Re: font for jit chars?]

Ilya N. Golubev gin
Thu Nov 9 12:46:07 EST 2006


Will be mostly unable to check mail until Dec. 12 at least.


> Does specifier-matching-instance give a different result for the font
> compared to this: 
>
> face-font-instance

Yes.  The following expressions

(setq fia (face-font-instance 'default nil 'jit-ucs-charset-0))

(specifier-matching-instance
 (face-font 'default)
 (cons (find-charset 'jit-ucs-charset-0) 'initial))

(face-font-instance 'default nil (find-charset 'jit-ucs-charset-0))

would return the same, `eq' values:

#<font-instance "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1" on #<x-device on ":0.0" 0xa692a> font id: 0xa0011b, 0xdc3e0>

The expression

(specifier-matching-instance
 (face-font 'default)
 (cons 'jit-ucs-charset-0 'initial))

would return different value: 

#<font-instance "-b&h-lucidatypewriter-medium-r-normal-sans-12-120-75-75-m-70-iso10646-1" on #<x-device on ":0.0" 0xa692a> font id: 0xa00131, 0x107f92>


Also tracked redisplay of jit emchar for unicode code point u+10db in
default face.  If jit emchars processing may depend on order in which
they were created, this was the only one created in that xemacs
process duration.  It was created by `decode-coding-region' `utf-8'.
`specifier_instance_no_quit -> specifier_instance_1' for this face
font specifier was called only with MATCHSPEC

(#<charset jit-ucs-charset-0 "jit-ucs-charset-0" "Mule charset for otherwise unknown Unicode code points." "Mule charset for otherwise unknown Unicode code points." 96x96 l2r cols=1 g0 final='0' reg=[iso10646-1] 0x476c2> . initial)

SPECIFIER is `eq' to `(face-font 'default)', which was in my xemacs
then with `specifier-spec-list'

((#<x-frame "XEmacs" 0xac5dc> ((x) . "*-*-lucida*-medium-r-*-*-12-*-*-*-m-*-*-*") ((encode-as-utf-8 initial x) . "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1") ((initial two-dimensional x) . "-*-*-medium-r-*-*-*-150-*-*-c-*-*-*") ((final one-dimensional x) . "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1") ((final two-dimensional x) . "-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1")) (global ((x) . "*-*-lucida*-medium-r-*-*-12-*-*-*-m-*-*-*") ((encode-as-utf-8 initial x) . "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1") ((initial two-dimensional x) . "-*-*-medium-r-*-*-*-150-*-*-c-*-*-*") ((final one-dimensional x) . "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1") ((final two-dimensional x) . "-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1")))

The program had single frame then, one from this list.

That is, `specifier_instance_1' was called as when evaluating one of
the above expressions:

(specifier-matching-instance
 (face-font 'default)
 (cons (find-charset 'jit-ucs-charset-0) 'initial))

Confirming that `specifier_instance_1' would eventually call
`Fmake_font_instance'.

Confirming that X font id obtained for
`-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1' was
actually passed to `XDrawImageString16' when redisplaying that emchar.
Will post detailed gdb session transcript snippets on request.  How
xemacs displays that emchar does match what `xfd' displays for its
code point in that font, have no reasons to suspect any text mis-
drawing in my core X tools.

So only the value obtained with charset first- class object in
MATCHSPEC pointed to the font actually used for redisplay.  The value
obtained with charset name symbol in MATCHSPEC was different,
misleading.

The `Installation' for that build is as follows.

Also observed the same return values in another build, will post its
`Installation' on request.

If different return values are intended, please document.  Otherwise,
please fix it.  Anyway, please document the right MATCHSPEC's for
`specifier-matching-instance'. 

--

uname -a: Linux 2.6.3-27mdk #1 Tue May 31 21:48:42 MDT 2005 i686 unknown unknown GNU/Linux

../share/xemacs-local-21.5/configure '--disable-optimization' '--enable-cflags-debugging=-g' '--enable-debug' '--enable-error-checking=all' '--disable-pdump' '--enable-external-widget' '--with-gpm=no' '--enable-sound=native' '--with-pop' '--with-mail-locking=lockf' '--enable-clash-detection' '--enable-mule=yes' '--with-hesiod=no' '--enable-menubars=lucid' '--enable-scrollbars=lucid' '--enable-dialogs=lucid' '--with-xim=xlib' '--with-canna=no' '--with-wnn=no' '--with-wnn6=no' '--with-msw=no' '--with-xfs=yes'


XEmacs 21.5-b27 "fiddleheads" (+CVS-20061106) configured for `i686-pc-linux'.

Compilation Environment and Installation Defaults:
  Operating system description file: `s/linux.h'
  Machine description file:          `m/intel386.h'
  Compiler version:                  gcc (GCC) 3.3.2 (Mandrake Linux 10.0 3.3.2-6mdk)
    - GCC specs file:                /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.2/specs
    - Compiler command:              gcc   -Wall -Wno-switch -Wundef -Wsign-compare -Wno-char-subscripts -Wpacked -Wunused-parameter -g  
  libc version:                      glibc-2.3.3-12.8.100mdk
  Relocating allocator for buffers:  no
  GNU version of malloc:             yes
    - Using Doug Lea's new malloc from the GNU C Library.
  Linking with `-z nocombreloc'.
    - Consider configuring with --enable-pdump.

Window System:
  Compiling in support for the X window system:
    - X Windows headers location:                 /usr/X11R6/include
    - X Windows libraries location:               /usr/X11R6/lib
    - Handling WM_COMMAND properly.
  Compiling in support for the Athena widget set:
    - Athena headers location:                    X11/Xaw
    - Athena library to link:                     Xaw
  Using Lucid menubars.
  Using Lucid scrollbars.
  Using Athena dialog boxes.
  Using Athena native widgets.

TTY:
  Compiling in support for ncurses.

Images:
  Compiling in support for GIF  images (builtin).
  Compiling in support for XPM  images.
  Compiling in support for PNG  images.
  Compiling in support for JPEG images.
  Compiling in support for TIFF images.
  Compiling in support for X-Face message headers.

Sound:
  Compiling in support for sound (native).
  Compiling in support for ALSA (Advanced Linux Sound Architecture).
  Compiling in support for NAS (network audio system).

Databases:
  Compiling in support for Berkeley database.
  Compiling in support for LDAP.
  Compiling in support for PostgreSQL.
    - Using PostgreSQL header file:  pgsql/libpq-fe.h
    - Using PostgreSQL V7 bindings.

Internationalization:
  Compiling in support for Mule (multi-lingual Emacs).
  Compiling in support for XIM (X11R5+ I18N input method).
    - Using raw Xlib to provide XIM support.
    - Using XFontSet to provide bilingual menubar.

Mail:
  Compiling in support for POP mail retrieval.
  Compiling in support for "lockf" mail spool file locking method.

Other Features:
  Inhibiting IPv6 canonicalization at startup.
  Compiling in support for dynamic shared object modules.
  Using the new GC mark algorithms (KKCC).
  WARNING: ---------------------------------------------------------
  WARNING: The new algorithms are experimental. They are enabled by
  WARNING: default for this release. Use `--disable-kkcc' to
  WARNING: turn it off.
  WARNING: ---------------------------------------------------------
  Compiling in support for extra debugging code.
  Compiling in support for runtime error checking.
  WARNING: ---------------------------------------------------------
  WARNING: XEmacs will run noticeably more slowly as a result.
  WARNING: Error checking is on by default for XEmacs beta releases.
  WARNING: ---------------------------------------------------------

--



More information about the XEmacs-Beta mailing list