*** empty log message ***
[bpt/emacs.git] / src / ChangeLog.unicode
index 69a60ad..a4f5ad6 100644 (file)
@@ -1,3 +1,633 @@
+2007-12-03  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * xfaces.c [HAVE_WINDOW_SYSTEM]: Include "font.h" unconditionally.
+       (choose_face_font): Accept new form of font-spec.
+
+       * frame.h (font_driver_list): Declare it unconditionally.
+       (struct frame): Define members font_driver_list and font_data_list
+       unconditionally.
+
+       * fontset.c: Include "font.h" unconditionally.
+       (generate_ascii_font_name): Use font_parse_xlfd and
+       font_unparse_xlfd.
+       (Fset_fontset_font): Accept a font-spec object.
+
+       * font.c (font_unparse_xlfd): If pixel_size is zero, make the
+       PIXEL_SIZE part a wild card.
+
+       * dispextern.h (struct glyph_string): Define members clip and
+       num_clips unconditionally.
+       (struct face): Define members font_info and extra unconditionally.
+
+       * ftfont.c (ftfont_open): Set members maybe_otf and otf of
+       ftfont_info only when HAVE_LIBOTF is defined.
+
+2007-12-02  Andreas Schwab  <schwab@suse.de>
+
+       * xdisp.c (back_to_previous_visible_line_start): Fix type of beg
+       and end.
+
+2007-12-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_driver): Add new fields.
+
+2007-12-01  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * config.in: Re-generated.
+
+       * Makefile.in (ALL_CFLAGS): Add @M17N_FLT_CFLAGS@.
+       (FONTSRC, FONTOBJ) [HAVE_WINDOW_SYSTEM]: Set them unconditionally.
+       (LIBES): Add @M17N_FLT_CFLAGS@.
+
+       * composite.c (compose_text): Don't treat the new style
+       composition specially.
+
+       * emacs.c (main): Call syms_of_font unconditionally.
+
+       * font.h (FONT_ENTITY_NOT_LOADABLE)
+       (FONT_ENTITY_SET_NOT_LOADABLE): New macros.
+       (LGSTRING_XXXX, LGLYPH_XXX): Adjusted for the change of lispy
+       gstring.
+       (struct font_driver): New member shape.
+       (font_registry_charsets): Extern. it.
+       (font_find_for_lface): Prototype adjusted.
+       (font_prepare_composition): Likewise.
+       (font_otf_capability, font_drive_otf): Delete their externs.
+
+       * font.c [HAVE_M17N_FLT]: Include <m17n-flt.h>.
+       (font_charset_alist): Moved from xfont.c and renamed.
+       (font_registry_charsets): Likewise.
+       (font_prop_validate_otf): New function.
+       (font_property_table): Register it for QCotf.
+       (DEVICE_DELTA, adjust_anchor, REPLACEMENT_CHARACTER)
+       (font_drive_otf): Deleted.
+       (font_prepare_composition): New arg F.  Adjusted for the change of
+       lispy gstring.
+       (font_find_for_lface): New arg C.
+       (font_load_for_face): Adjusted for the change of
+       font_find_for_lface.
+       (Ffont_make_gstring): Adjusted for the change of lispy gstring.
+       (Ffont_fill_gstring): Likewise.
+       (Ffont_shape_text): New function.
+       (Fopen_font): If the font size is not given, use 12-pixel.
+       (Ffont_at): New arg STRING.
+       (syms_of_font): Initalize font_charset_alist.  Declare
+       Ffont_shape_text as a Lisp function.  Call syms_of_XXfont
+       conditionally.
+
+       * fontset.c (fontset_find_font) [USE_FONT_BACKEND]: Try multiple
+       fonts of the same font-spec.  Change the format of RFONT-DEF.
+       (face_for_char): Adjusted for the change of RFONT-DEF.
+       (make_fontset_for_ascii_face): Likewise.
+       (Finternal_char_font): Likewise.
+       (Fset_fontset_font) [USE_FONT_BACKEND]: Handle new format of
+       font-spec.
+
+       * ftfont.h: New file.
+
+       * ftfont.c: Don't include Freetype headers.  Include "ftfont.h".
+       (struct ftfont_info) [HAVE_LIBOTF]: New members maybe_otf and otf.
+       (ftfont_open) [HAVE_LIBOTF]: Initialize the above members.
+       (ftfont_driver) [HAVE_LIBOTF, HAVE_M17N_FLT]: Don't set
+       font_otf_capability and font_drive_otf, set ftfont_shape.
+       (ftfont_list): Adjusted for the change of :otf property value.
+       (struct MFLTFontFT) [HAVE_LIBOTF, HAVE_M17N_FLT]: New struct.
+       (ftfont_get_glyph_id, ftfont_get_metrics, ftfont_check_otf)
+       (adjust_anchor, ftfont_drive_otf, ftfont_shape_by_flt)
+       (ftfont_shape) [HAVE_LIBOTF, HAVE_M17N_FLT]: New function.s
+       (DEVICE_DELTA) [HAVE_LIBOTF, HAVE_M17N_FLT]: New macro.
+       (otf_gstring, gstring, m17n_flt_initialized): New variables.
+
+       * w32term.c (x_draw_composite_glyph_string_foreground): Adjusted
+       for the change of lispy gstring.
+
+       * xdisp.c (handle_composition_prop): Adjusted for the change of
+       lispy gstring.  Call a function for auto-composition with the
+third arg it->window.
+       (fill_composite_glyph_string): Adjusted for the change of lispy
+       string.
+       (x_produce_glyphs): Adjusted for the change of
+       font_prepare_compositionl.
+
+       * xfaces.c (set_font_frame_param): Adjusted for the change of
+       font_find_for_lface.
+
+       * xfont.c (x_font_charset_alist): Moved to font.c and renamed.
+       (xfont_registry_charsets): Likewise.  Caller changed.
+       (syms_of_xfont): Don't handle x_font_charset_alist.
+
+       * xftfont.c: Include "ftfont.h".
+       (struct xftfont_info) [HAVE_LIBOTF]: New members maybe_otf and
+       otf.
+       (xftfont_open) [HAVE_LIBOTF]: Initialize the above members.
+       (xftfont_close) [HAVE_LIBOTF]: Close otf.
+       (xftfont_shape) [HAVE_LIBOTF, HAVE_M17N_FLT]: New function.
+       (syms_of_xftfont) [HAVE_LIBOTF, HAVE_M17N_FLT]: Set
+       xftfont_driver.shape to xftfont_shape.
+
+       * xterm.c (x_draw_composite_glyph_string_foreground): Adjusted for
+       the change of lispy gstring.
+
+2007-11-29  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * ftxfont.c (ftxfont_end_for_frame): Fix array indexing error.
+
+2007-12-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_draw): Fill background manually.
+
+2007-11-23  Jason Rumney  <jasonr@gnu.org>
+
+       * font.c (Qfontp): Remove unused symbol.
+       (QCantialias): New symbol.
+       (syms_of_font): Define it.
+       (font_property_table): Set a validator for QCantialias.
+
+       * w32font.c (CLEARTYPE_QUALITY, CLEARTYPE_NATURAL_QUALITY): Define
+       if not already.
+       (QCfamily): Share with xfaces.c.
+       (Qstandard, Qsubpixel, Qnatural): New symbols.
+       (syms_of_w32font): Define them. Don't define QCfamily here.
+       (w32_antialias_type, lispy_antialias_type): New functions.
+       (w32_enumfont_pattern_entity): New arg requested_font.
+       Set antialias parameter if non-default was requested.
+       (fill_in_logfont): Fill in lfQuality if :antialias specified.
+
+2007-11-21  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * lread.c (read1): Undo the previous change.
+
+2007-11-21  CHENG Gao  <chenggao@gmail.com>  (tiny change)
+
+       * frame.c (Fdelete_frame): Call font_update_drivers only when
+       USE_FONT_BACKEND is defined..
+
+2007-11-19  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * font.h (struct font_bitmap): New member bits_per_pixel.
+       (struct font_driver): New members start_for_frame and end_for_frame.
+       (struct font_data_list): New struct.
+       (font_put_frame_data, font_get_frame_data): Extern them.
+
+       * frame.h (struct frame): New member font_data_list.
+
+       * font.c (font_update_drivers): Call driver->start_for_frame and
+       driver->end_for_frame at proper timings.
+       (font_put_frame_data, font_get_frame_data): New functions.
+       (Ffont_spec): Add usage in the docstring.
+
+       * frame.c (make_frame): Initialize f->font_data_list to NULL.
+       (Fdelete_frame): Call font_update_drivers.
+
+       * xftfont.c (struct xftface_info): Delete the member xft_draw.
+       (xftfont_prepare_face): Adjusted for the above change.
+       (xftfont_done_face): Likewise.
+       (xftfont_get_xft_draw): New function.
+       (xftfont_draw): Get XftDraw by xftfont_get_xft_draw.
+       (xftfont_end_for_frame): New function.
+       (syms_of_xftfont): Set xftfont_driver.end_for_frame.
+
+       * ftxfont.c (ftxfont_get_gcs): Renamed from ftxfont_create_gcs.
+       Argument changed.  Cache GCs in the per-frame data.
+       (struct ftxfont_frame_data): New struct.
+       (ftxfont_draw_bitmap): New arg gc_fore and flush.
+       (ftxfont_prepare_face, ftxfont_done_face): Delete them.
+       (ftxfont_draw): Get GCs by ftxfont_get_gcs.  Reflect s->clip in
+       GCs.
+       (ftxfont_end_for_frame): New function.
+       (syms_of_ftxfont): Set ftxfont_driver.end_for_frame.
+
+       * ftfont.c (ftfont_get_bitmap): Set bitmap->bits_per_pixel.
+
+2007-11-18  Kenichi Handa  <handa@m17n.org>
+
+       * xselect.c (Vselection_coding_system)
+       (Vnext_selection_coding_system): Delete them.
+       (syms_of_xselect): Don't declare selection-coding-system and
+       next-selection-coding-system.  They are declared in select.el.
+
+2007-11-17  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.h (WM_UNICHAR, UNICODE_NOCHAR): Define if not already.
+
+       * w32fns.c: Include imm.h.
+       (get_composition_string_fn, get_ime_context_fn): New optional
+       system functions.
+       (globals_of_w32fns): Load them from imm32.dll.
+       (ignore_ime_char): New flag.
+       (w32_wnd_proc): Handle WM_UNICHAR, WM_IME_CHAR and
+       WM_IME_ENDCOMPOSITION messages.
+
+       * w32term.c (w32_read_socket) [WM_UNICHAR]: Handle as
+       MULTIBYTE_CHAR_KEYSTROKE_EVENT.
+
+2007-11-14  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * lread.c (READCHAR): Call readchar with the 2nd arg NULL.
+       (READCHAR_REPORT_MULTIBYTE): New macro.
+       (readchar): New 2nd arg MULTIBYTE.
+       (read1): Use READCHAR_REPORT_MULTIBYTE for the first read.  Make
+       symbol's name multibyte according to the multibyteness of the
+       source.
+
+2007-11-12  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * xfaces.c (face_for_overlay_string): Call lookup_face with
+       correct arguments (fix of synching with the trunk).
+
+2007-11-05  Kenichi Handa  <handa@m17n.org>
+
+       * font.c (font_prop_validate_symbol): The argument prop_index is
+       deleted.
+       (font_prop_validate_style, font_prop_validate_non_neg)
+       (font_prop_validate_spacing): Likewise.
+       (font_property_table): Arguments to validater changed.  Callers
+       changed.
+       (font_lispy_object): Deleted.
+       (font_at): Use font_find_object instead fo font_lispy_object.
+
+2007-11-02  Kenichi Handa  <handa@ni.aist.go.jp>
+
+       * fileio.c (Fexpand_file_name): Adjust multibyteness of directory
+       and file names.
+
+2007-10-27  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (add_font_name_to_list): Avoid vertical fonts.
+       (font_matches_spec): Remove debug output.
+       (add_font_entity_to_list): Avoid using substituted fonts.
+
+2007-10-21  Jason Rumney  <jasonr@gnu.org>
+
+       * doc.c (Fsnarf_documentation):
+       * Makefile.in (temacs${EXEEXT}, mostlyclean): Undo last change.
+
+2007-10-12  Miles Bader  <miles@gnu.org>
+
+       * src/dispextern.h (struct glyph_row): Only define "clip" field if
+       HAVE_WINDOW_SYSTEM is defined.
+
+2007-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Fix up multi-tty merge.
+
+       * xterm.c (handle_one_xevent): Remove duplicate code and fix up nesting
+       and indentation.
+
+       * xfaces.c (free_realized_face, clear_face_gcs):
+       Include font_done_for_face in the input_blocked section, just in case.
+
+       * xdisp.c (decode_mode_spec): Use terminal-local coding systems.
+       (get_char_face_and_encoding): Undo last change and remove the *other*
+       duplicate definition (i.e. keep the one that's better scoped and that
+       includes code for the font-backend).
+
+       * terminal.c (create_terminal): Default keyboard_coding to
+       `no-conversion' and terminal_coding to `undecided'.
+
+       * lread.c (read1): Use XSETPVECTYPE to set a pseudovector's tag.
+
+       * fontset.c (free_realized_fontsets): Check that the table entry does
+       contain a fontset before trying to compare it to `base'.
+
+       * emacs.c (main): Move syms_of_data, syms_of_fileio, syms_of_alloc,
+       syms_of_charset, and syms_of_coding earlier because init_window_once
+       now needs Vcoding_system_hash_table to be setup.
+
+       * coding.h (default_buffer_file_coding): Remove.
+
+       * coding.c (default_buffer_file_coding): Remove.
+       (Fterminal_coding_system, Fkeyboard_coding_system): Use ->id rather
+       than ->symbol, and use the terminal-local coding system.
+       (syms_of_coding): Don't setup the coding-systems that are not
+       terminal-local.
+       (Fdefine_coding_system_internal): Use XCAR/XCDR.
+
+       * chartab.c (Fmake_char_table, make_sub_char_table, copy_char_table):
+       Use XSETPVECTYPE now that XSETCHAR_TABLE doesn't set the tag anymore.
+
+       * alloc.c (Fmake_char_table, make_sub_char_table): Remove.  They're now
+       in chartab.c and were re-added here by mistake.
+       (Fpurecopy): Use XSETPVECTYPE after copying a COMPILED pseudovector.
+
+       * doc.c (Fsnarf_documentation):
+       * Makefile.in (temacs${EXEEXT}, mostlyclean): Move buildobj.lst from
+       src to etc.
+
+       * ChangeLog.10: Add mistakenly removed entry.
+
+2007-10-12  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * Makefile.in (fringe.o, minibuf.o): Fix dependencies.
+
+2007-10-11  Miles Bader  <miles@gnu.org>
+
+       * xdisp.c (get_char_face_and_encoding): Remove extraneous definition.
+       Add extra args to FACE_FOR_CHAR.
+
+2007-09-20  Kenichi Handa  <handa@m17n.org>
+
+       * keymap.c (where_is_internal_1): If key is a cons, store the copy
+       in sequence.
+
+       * chartab.c (map_sub_char_table): If the range contains just one
+       character, call the function with that character even if the depth
+       is not 3.
+       (map_char_table): Likewise.
+
+2007-09-19  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_text_extents): Calculate metrics for the
+       whole string.
+
+2007-09-15  Jason Rumney  <jasonr@gnu.org>
+
+       * w32xfns.c (get_next_msg): Consolidate WM_PAINT messages.
+
+2007-09-13  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_set_glyph_string_clipping): Use
+       get_glyph_string_clip_rects.
+       (x_set_glyph_string_clipping_exactly): Adjusted for the change of
+       struct glyph_string.
+       (x_draw_glyph_string): Likewise.
+
+       * w32font.c (w32font_draw): Do clipping here.
+
+2007-09-13  Kenichi Handa  <handa@m17n.org>
+
+       * xftfont.c (xftfont_draw): Adjusted for the change of struct
+       glyph_string.
+
+       * xterm.c (x_set_glyph_string_clipping): Use
+       get_glyph_string_clip_rects.
+       (x_set_glyph_string_clipping_exactly): Adjusted for the change of
+       struct glyph_string.
+       (x_draw_glyph_string): Likewise.
+
+       * xdisp.c (get_glyph_string_clip_rects): Reflect s->row->clip to
+       the resulting clip(s}.
+       (expose_overlaps): Add arg r.  Callers changed.  Set it ot
+       row->clip temporarily.
+       (expose_window): Redraw rows overlapping the exposed area.
+
+       * dispextern.h (struct glyph_row): New member clip.
+       (struct glyph_string): Delete members clip_x, clip_y, clip_width,
+       clip_height, new member clip, and num_clips.
+
+2007-09-07  Kenichi Handa  <handa@m17n.org>
+
+       * data.c (Fchar_or_string_p): Fix docstring.
+
+2007-08-22  Kenichi Handa  <handa@m17n.org>
+
+       * xftfont.c (xftfont_draw): If s->font_info != s->face->font_info,
+       create a temporal XftDraw object.
+
+2007-07-26  Kenichi Handa  <handa@m17n.org>
+
+       * font.c (Ffontp): Fix docstring.
+
+       * coding.c (detect_coding_iso_2022): Don't treat SI/SO codes as a
+       strong evidence of ISO-2022.
+
+2007-07-23  Kenichi Handa  <handa@m17n.org>
+
+       * abbrev.c (abbrev_check_chars): Use CHAR_TABLE_REF, not
+       SYNTAX_ENTRY_FOLLOW_PARENT.
+
+2007-06-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fns.c (weak_hash_tables): Rename from Vweak_hash_tables and change
+       its type.
+       (make_hash_table, copy_hash_table, sweep_weak_hash_tables, init_fns):
+       Update to the new type of weak_hash_tables and next_weak.
+
+       * lisp.h (struct Lisp_Hash_Table): Change next_weak from Lisp_Object to
+       a plain C pointer to Lisp_Hash_Table.
+
+       * lisp.h (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
+       (GC_INTEGERP, GC_SYMBOLP, GC_MISCP, GC_VECTORLIKEP, GC_STRINGP)
+       (GC_CONSP, GC_FLOATP, GC_VECTORP, GC_OVERLAYP, GC_MARKERP)
+       (GC_INTFWDP, GC_BOOLFWDP, GC_OBJFWDP, GC_BUFFER_OBJFWDP)
+       (GC_BUFFER_LOCAL_VALUEP, GC_SOME_BUFFER_LOCAL_VALUEP)
+       (GC_KBOARD_OBJFWDP, GC_PSEUDOVECTORP, GC_WINDOW_CONFIGURATIONP)
+       (GC_PROCESSP, GC_WINDOWP, GC_SUBRP, GC_COMPILEDP, GC_BUFFERP)
+       (GC_SUB_CHAR_TABLE_P, GC_CHAR_TABLE_P, GC_BOOL_VECTOR_P, GC_FRAMEP)
+       (GC_EQ): Remove since they've been identical to their non-GC_
+       alter-egos ever since the markbit was eradicated.
+
+       * src/alloc.c:
+       * src/buffer.c:
+       * src/buffer.h:
+       * src/data.c:
+       * src/fileio.c:
+       * src/filelock.c:
+       * src/fns.c:
+       * src/frame.h:
+       * src/lisp.h:
+       * src/macterm.c:
+       * src/print.c:
+       * src/process.c:
+       * src/w32fns.c:
+       * src/w32menu.c:
+       * src/w32term.c:
+       * src/xfns.c:
+       * src/xmenu.c:
+       * src/xterm.c: Replace uses of GC_* macros with the non-GC_ versions.
+
+2007-06-25  Kenichi Handa  <handa@m17n.org>
+
+       * chartab.c (map_sub_char_table): Make it work for the top-level
+       char-table.  Fix handling of parent char-table.
+       (map_char_table):  Adjust for the above change.
+
+2007-06-24  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (Qgdi): Rename from Qw32.
+
+2007-06-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32bdf.c (get_quoted_string): Make function static.
+
+2007-06-20  Kenichi Handa  <handa@m17n.org>
+
+       * xftfont.c (xftfont_open): If one of font's ASCII glyph has
+       bigger ascent and descent than those of the font, use them as
+       font's ascent and descent.
+
+2007-06-18  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.in (${lispsource}international/charprop.el): Move this
+       target within "#ifdef HAVE_UNIDATA" and "#endif".
+
+2007-06-16  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.in (lisp): Add ${lispsource}language/tai-viet.el.
+       (shortlisp): Add ../lisp/language/tai-viet.el.
+
+2007-06-15  Ulrich Mueller  <ulm@gentoo.org>  (tiny change)
+
+       * Makefile.in (${lispsource}international/charprop.el): Depend on
+       temacs${EXEEXT}.
+
+2007-06-13  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_close): Delete the GDI font object.
+
+       * w32menu.c: Include character.h
+
+       * w32proc.c: Likewise.
+
+       * w32select.c: Likewise.
+
+       * makefile.w32-in (w32proc.o): Depend on character.h
+
+2007-06-11  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (syms_of_w32fns): Use DEFSYM macro.
+
+       * w32menu.c (syms_of_w32menu): Likewise.
+
+       * w32proc.c (syms_of_ntproc): Likewise.
+
+       * w32select.c (syms_of_w32select): Likewise.
+
+       * w32term.c (syms_of_w32term): Likewise.
+
+2007-06-06  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_draw): Delete brush after using it.
+
+2007-06-04  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_open): Don't set font_idx.
+       (w32font_text_extents): Try GetTextExtentPoint32W before defaulting
+       to font settings.
+       (w32font_draw): Fill background explicitly.
+
+2007-06-03  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_initialize): Don't call w32font_initialize.
+
+       * w32font.c (w32font_info): Remove subranges.
+       (QCsubranges, Qmodern, Qswiss, Qroman): Remove.
+       (QCfamily, Qmonospace, Qsans_serif, Qmono, Qsans, Qsans__serif)
+       (Qraster, Qoutline, Qlatin, Qgreek, Qcoptic, Qcyrillic, Qarmenian)
+       (Qhebrew, Qarabic, Qsyriac, Qnko, Qthaana, Qdevanagari, Qbengali)
+       (Qgurmukhi, Qgujarati, Qoriya, Qtamil, Qtelugu, Qkannada)
+       (Qmalayalam, Qsinhala, Qthai, Qlao, Qtibetan, Qmyanmar, Qgeorgian)
+       (Qhangul, Qethiopic, Qcherokee, Qcanadian_aboriginal, Qogham)
+       (Qrunic, Qkhmer, Qmongolian, Qsymbol, Qbraille, Qhan)
+       (Qideographic_description, Qcjk_misc, Qkana, Qbopomofo, Qkanbun)
+       (Qyi, Qbyzantine_musical_symbol, Qmusical_symbol, Qmathematical):
+       New symbols.
+       (font_callback_data): New struct.
+       (w32font_list, w32font_match): Use it.
+       (w32font_open): Don't populate subranges.
+       (w32font_has_char): Use script Lisp symbols, not subrange bitmask.
+       (w32font_encode_char): Always return unicode code-point as-is.
+       (w32font_text_extents): Supply a tranformation matrix to
+       GetGlyphOutline. Never look up by glyph index. Avoid looping
+       twice. Use unicode version of GetTexExtentPoint32 instead of
+       glyph index version.
+       (set_fonts_frame): Remove
+       (w32_enumfont_pattern_entity): Add frame parameter, use it to
+       set frame parameter. Use backward compatible fake foundries.
+       Save generic family in extra slot under QCfamily. Make width slot
+       constant. Save QCspacing value. Save list of scripts instead of
+       binary subranges.
+       (w32_generic_family, logfonts_match, font_matches_spec): New functions.
+       (add_font_entity_to_list): Use font_callback_data struct. Filter
+       unwanted fonts.
+       (add_one_font_entity_to_list): Use font_callback_data struct.
+       (w32_registry): Default to iso10646_1;
+       (fill_in_logfont): Use dpi from extra slot. Don't bother with
+       string font registries. Don't fill in font name if it is a generic
+       family name, fill family instead. Use spacing, family and script
+       extra info to fill pitch, family and charset fields.
+       (list_all_matching_fonts): Use font_callback_data struct.
+       (unicode_range_for_char): Remove.
+       (font_supported_scripts): New function.
+       (w32font_initialize): Remove.
+       (syms_of_w32font): Update which symbols are defined.
+
+2007-06-02  Jason Rumney  <jasonr@gnu.org>
+
+       * font.c (font_pixel_size): Reverse assq_no_quit args.
+
+       * w32term.h (FONT_WIDTH): Report max width, not average.
+       (FONT_MAX_WIDTH): Remove.
+       (FONT_AVG_WIDTH): New macro.
+
+       * xfaces.c (Fx_list_fonts) [WINDOWSNT]: Remove Windows only
+       redefinition of FONT_WIDTH.
+
+       * w32term.c (x_font_min_bounds): Use FONT_AVG_WIDTH.
+       (w32_cache_char_metrics): Use FONT_WIDTH.
+
+       * w32fns.c (w32_load_system_font, w32_list_fonts): Use FONT_AVG_WIDTH.
+
+2007-06-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_open): Make lfHeight negative.
+
+       * w32fns.c (x_default_font_parameter): Use new style font name.
+       (Fx_create_frame, x_create_tip_frame): Initialize resx and resy.
+
+2007-05-31  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (QCsubranges): New symbol.
+       (w32font_open, w32font_has_char): Get subranges from subproperty
+       of extra.
+       (w32_enumfont_pattern_entity): Set subranges as subproperty of extra.
+       (syms_of_w32font): Define :subranges symbol.
+
+       * font.c (font_put_extra): Expose externally.
+
+       * font.h (font_put_extra): Moved declaration from font.c.
+
+       * font.c (Ffont_get): Use font driver to determine otf capability.
+       (adjust_anchor): Check if driver defines anchor_point before using.
+
+       * w32font.c (w32font_open): Handle size, height and pixel_size better.
+       (w32font_draw): Use options.
+       (w32_enumfont_pattern_entity): Set size to 0 for scalable fonts.
+       Fix detection of truetype fonts.
+       (registry_to_w32_charset): Handle charsets other than iso8859-1
+       expressed as lisp symbols.
+       (w32_registry): Express charset as lisp symbol.
+       (fill_in_logfont): Reverse pixel and point height logic.
+       Don't set width here. Set quality to default.
+
+       * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
+       (x_to_w32_font): Fill in lfPitchAndFamily correctly.
+
+       * xterm.c (x_draw_glyph_string_foreground) [USE_FONT_BACKEND]:
+       Remove redundant loop and allocation.
+
+       * makefile.w32-in (font.o, w32font.o): New objects.
+       (fontset.o, xdisp.o, xfaces.o, w32fns.o, w32term.o): Depend on font.h
+       (FONTOBJ): New group of objects conditioned on USE_FONT_BACKEND.
+
+       * xdisp.c (fill_composite_glyph_string): Make the first arg to
+       STORE_XCHARB a valid l-value.
+
+       * w32term.c (w32_native_per_char_metric): Swap width and rbearing
+       calculations for non-Truetype fonts.
+       (x_draw_glyph_string): Sync with xterm.c.
+       (x_draw_glyph_string_foreground) [USE_FONT_BACKEND]: Remove
+       redundant code.
+       (w32_initialize) [USE_FONT_BACKEND]: Call w32font_initialize.
+
+       * w32term.h (w32_output_data) [USE_FONT_BACKEND]: Add fontp member.
+       (FRAME_FONT_OBJECT) [USE_FONT_BACKEND]: New macro from xterm.h.
+
+       * w32fns.c [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
+       (x_to_w32_charset, w32_to_x_charset): Expose externally.
+
+       * w32font.c: New file for w32 font backend.
+
 2007-05-28  Kenichi Handa  <handa@m17n.org>
 
        * term.c: Don't include "buffer.h" twice.
 
 2007-02-20  Kenichi Handa  <handa@m17n.org>
 
-       * xterm.c (x_draw_composite_glyph_string_foreground): Fix 
+       * xterm.c (x_draw_composite_glyph_string_foreground): Fix
        indexing into elements of s->cmp and s->char2b.
 
 2007-02-16  Juanma Barranquero  <lekktu@gmail.com>
        font_otf_gpos.
        (Ffont_otf_alternates): Check if the driver has otf_gsub function.
        Call font->driver->otf_gsub instead of font_otf_gsub.
-       
+
        * frame.c (x_set_font_backend): Do more works that were done in
        font_update_drivers before.
 
        (Fcoding_system_p): Check Qcoding_system_define_form.
        (Fcheck_coding_system): Try to autoload the definition of
        CODING-SYSTEM.
-       
+
        * coding.h (CODING_SYSTEM_P): If ID is not available, call
        Fcoding_system_p.
        (CHECK_CODING_SYSTEM): If ID is not available, call
 
 2005-07-29  Kenichi Handa  <handa@m17n.org>
 
-       * coding.c (QCascii_compatible_p): New variable. 
+       * coding.c (QCascii_compatible_p): New variable.
        (syms_of_coding): Initialize it.
        (ONE_MORE_BYTE): Decrement `src' before calling string_char.
        (ONE_MORE_BYTE_NO_CHECK): Likewise.
        (setup_config, Fw32_get_clipboard_data): Use
        validate_coding_system.
        (Fx_selection_exists): Move call to setup_config to a place
-       were signals are allowed. 
+       were signals are allowed.
 
        * lisp.h (Fcoding_system_base, Fcoding_system_eol_type)
        (Fcheck_coding_system): Add declarations.
        (detect_coding): Optimization for ISO-2022 when no 8-bit data is
        found.
        (detect_coding_system): Likewise.
-       
+
 2004-09-01  Jason Rumney  <jasonr@gnu.org>
 
        * w32fns.c (x_to_w32_font): Update to use new coding struct.
 2004-08-03  Steven Tamm  <steventamm@mac.com>
 
        * macterm.c (mac_encode_char): Add charset argument and update
-       to use encoding_type    
+       to use encoding_type.
        (x_new_font,x_new_fontset): Merge in changes from xterm.c;
        switch to pure fontset
        (decode_mac_font_name): Temporarily remove decoding
 
        * coding.c: Sync to HEAD.
        (emacs_mule_char): Check invalid code more regidly.
-       
+
        * coding.h: Sync to HEAD.
 
        * charset.c: Sync to HEAD.
        a specific size, don't change that size.
        (try_font_list): Try a scalable font also in the case that a
        pattern string is specified,
-       
+
 
 2004-03-03  Kenichi Handa  <handa@m17n.org>
 
        (Qinvalid_source, Qinterrupted, Qinsufficient_memory): New
        variables.
        (Vlast_code_conversion_error): New variables.
-       (syms_of_coding): DEFSYM or DEFVAR_LISP them. 
+       (syms_of_coding): DEFSYM or DEFVAR_LISP them.
        (ONE_MORE_BYTE): Record error if any instead of signaling an
        error.  If non-ASCII multibyte char is found, return the negative
        value of the code.  All callers changed to check it.
        * keyboard.c (adjust_point_for_property): Make beg and end
        EMACS_INT.
 
-       * intervals.c (get_property_and_range)
+       * intervals.c (get_property_and_range):
        * intervals.h (get_property_and_range): Make start and end EMACS_INT.
 
        * unexalpha.c: Don't include varargs.h.
        (raw_text_coding_system): Check NILP (coding_system).
        (coding_inherit_eol_type): Check NILP (coding_system) and
        NILP (parent).
-       (consume_chars): Fix for the case of raw-text. 
+       (consume_chars): Fix for the case of raw-text.
 
        * process.c (read_process_output): Handle carryover correctly.
 
        notsyntaxspec, categoryspec, notcategoryspec> Fetch a character
        by GET_CHAR_AFTER.
        (bcmp_translate):  Likewise.
-       
+
        * search.c (compile_pattern): Check the member target_multibyte,
        not the member multibyte of buf.
 
        * lread.c (read_emacs_mule_char) [len==2]: Index
        emacs_mule_charset correctly.
 
-2003-02-16  Dave Love  <fx@gnu.org>                            
+2003-02-16  Dave Love  <fx@gnu.org>
 
        * coding.c (Qbig5, Vbig5_coding_system, CATEGORY_MASK_BIG5)
        (detect_coding_big5, decode_coding_big5, encode_coding_big5)
        * coding.c (detect_coding): Fix previous change.
        (detect_coding_charset): If only ASCII bytes are found, return 0.
        (detect_coding_system): Fix previous change.
-       (Fdefine_coding_system_internal): Setup CODING_ATTR_ASCII_COMPAT
-       (attrs) correctly.
+       (Fdefine_coding_system_internal): Setup
+       CODING_ATTR_ASCII_COMPAT (attrs) correctly.
 
 2002-10-15  Dave Love  <fx@gnu.org>
 
 
        * bytecode.c (Fbyte_code): Likewise.
 
-       * character.h (LEADING_CODE_LATIN_1_MIN) 
+       * character.h (LEADING_CODE_LATIN_1_MIN)
        (LEADING_CODE_LATIN_1_MAX): New macros.
        (unibyte_to_multibyte_table): Extern it.
        (unibyte_char_to_multibyte): New macro.
        here.
        (re_compile_fastmap) [emacs]: Call analyse_first with the arg
        multibyte always 1.
-       (re_search_2) In emacs, set the locale variable multibyte to 1,
+       (re_search_2): In emacs, set the locale variable multibyte to 1,
        otherwise to 0.  New local variable target_multibyte.  Check it
        to decide the multibyteness of STR1 and STR2.  If
        target_multibyte is zero, convert unibyte chars to multibyte
        * casetab.c (set_canon, set_identity, shuffle): Simplified.
 
        * casefiddle.c (casify_object): Simplified.  Handle the case that
-       the case conversion change the byte length.  
+       the case conversion change the byte length.
        (casify_region): Likewise
 
        * character.h (MAKE_CHAR_UNIBYTE, MAKE_CHAR_MULTIBYTE): New
        (lookup_face, lookup_named_face, lookup_derived_face): Prototype
        fixed.
        (generate_ascii_font_name): Renamed from generate_ascii_font.
-       
+
        * fontset.h (get_font_repertory_func): New prototype.
        (make_fontset_for_ascii_face, fs_load_font): Prototypes fixed.
        (FS_LOAD_FONT): Call fs_load_font with the 3rd arg charset_ascii.
 
        * dispextern.h (redraw_frame, redraw_garbaged_frames): Removed.
 
-       * fontset.c (fontset_ref, fontset_set, fs_load_font) 
+       * fontset.c (fontset_ref, fontset_set, fs_load_font)
        (Ffontset_info): Convert Lisp types.
 
        * syntax.h (SYNTAX_ENTRY_INT): Don't use make_number.
 
        * config.in (HAVE_PTY_H, HAVE_SIZE_T, HAVE_LANGINFO_CODESET): New.
        (size_t): Removed.
-       
+
 2002-06-06  Dave Love  <fx@gnu.org>
 
        * Makefile.in (chartab.o): Depend on charset.h
        and alt&rule composition.
        (decode_coding_iso_2022): Handle composition correctly.
        (init_coding_once): Setup emacs_mule_bytes for private charsets.
-       
+
        * charset.c (Fdefine_charset_internal): Fix bug for the case of
        re-defining a charset.  If the charset has :emacs-mule-id, setup
        emacs_mule_bytes.
 
        * coding.c (Vchar_coding_system_table, Qchar_coding_system):
        Removed.
-       (Fset_coding_system_priority, Fset_coding_system_priority) 
+       (Fset_coding_system_priority, Fset_coding_system_priority)
        (Fdefine_coding_system_internal): Doc fix.
 
 2002-05-16  Dave Love  <fx@gnu.org>
        * .gdbinit (xchartable): Adjusted for the change of char table
        structure.
        (xsubchartable, xcoding, xcharset, xcurbuf): New commands.
-       
+
        * Makefile.in (obj): Add character.o and chartab.o.
        (lisp, shortlisp): Remove utf-8.elc:
        (*.o): For many files, change dependency on charset.h to
        character.h, and add dependency on character.h.
        (character.o, chartab.o): New targets.
-       
+
        * abbrev.c, bytecode.c, casefiddle.c, cmds.c, dispnew.c, doc.c,
        doprnt.c, dosfns.c, frame.c, marker.c, minibuf.c, msdos.c,
        w16select.c, w32bdf.c, w32console.c: Include "character.h" instead
        of "charset.h".
-       
+
        * dired.c, filelock.c: Include "character.h".
 
        * alloc.c: Include "character.h" instead of "charset.h".
        (Qccl, Qcclp, Fccl_program_p): Extern them.
        (CHECK_CCL_PROGRAM): New macro.
 
-       * character.c, character.h, chartab.c: New files. 
+       * character.c, character.h, chartab.c: New files.
 
        * charset.c: Mostly re-written.  Character and multibyte sequence
        handling codes are moved to character.c.
 
        * disptab.h (DISP_CHAR_VECTOR): Adjusted for the change of char
        table structure.
-       
+
        * editfns.c: Include "character.h" instead of "charset.h".
        (Fchar_to_string): Always call CHAR_STRING.