*** empty log message ***
[m17n/m17n-lib.git] / src / ChangeLog
index 13b1b79..63431e7 100644 (file)
+2005-10-29  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (get_candidate_list): Fix the timing of refering plist.
+
+2005-10-28  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (load_branch): Ignore an undefined map name.
+       (load_im_info): Set im_info->title from `name' only if it's not
+       Mnil.
+       (shift_state): Always update ic->status.
+       (adjust_candidates): Renamed from adjust_candidate_command.
+       Argument changed.  Caller changed.
+       (get_candidate_list, regularize_action): New functions.
+       (take_action_list): Use them.  On handling Munhandle, don't set
+       ic_info->used to 0.
+       (handle_key): If KEY is not handled by MAP, and MAP has
+       branch_actions, perform them.
+
+       * database.c (mdatabase__fini): Free dir_info->filename;
+
+2005-10-20  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (marker_code): Accept '@@'.
+       (integer_value): Handle '@@'.
+       (parse_action_list): Accept a symbol argument.
+       (take_action_list): Resolve the symbol argument.  Handle the
+       integer argument.
+
+2005-10-18  Kenichi Handa  <handa@m17n.org>
+
+       * input.c: Include "charset.h".
+       (M_candidates, Mcandidates_group_size, Mcandidates_charset): New
+       variables.
+       (MIMState): New member (M17NObject control).
+       (lookup_nested_list, set_nested_list, parse_nested_list_value)
+       (get_nested_list, resolve_variable): New functions.
+       (integer_value): New arg (MPlist **value).  Set it to the plist
+       element containing the value.
+       (resolve_command): New function.
+       (load_translation): New arg (MPlist *map_actions).
+       (load_branch): New args language and name.  If `keylist' is a
+       symbol, resolved that as a command name.
+       (free_map): New arg top.  Free map->map_actions only if top is
+       nonzero.
+       (free_state): New function.
+       (load_state): New arg name.
+       (im_info_list): New variable.
+       (free_im_info, get_im_info_by_tags): New functions.
+       (load_im_info): Arg key changed to plist.  Handle `include'.
+       Return (MInputMethodInfo *).
+       (preedit_commit): Ref ic->candidate_list.
+       (get_select_charset, adjust_candidate_command): New functions.
+       (take_action_list): Handle `include'.  Adjust candidate action
+       properly.  Handle control variables `candidates-charset' and
+       `candidates-group-size'.
+       (open_im): Use get_im_info.
+       (create_ic): Get global variables.
+       (load_partial_im_info): New function.
+       (get_im_info): New function.
+       (check_command_keyseq, check_command_list, check_variable_list):
+       New functions.
+       (minput__init): Don't handle M_database_hook and Mdetail_text.
+       Initialize M_candidates, Mcandidates_group_size,
+       Mcandidates_charset.
+       (parse_variable_list, get_variable_list, parse_command_list)
+       (get_command_list): Delete them.
+       (MDatabaseStatList, imdir_stat_list, input_method_hook): Delete them.
+       (minput__fini): Simply unref command_list and variable_list.
+       (minput_get_description): Adjusted for the new form of description.
+       (minput_get_commands): Use get_nested_list.
+       (minput_assign_command_keys): Likewise.
+       (minput_get_variables, minput_set_variable): Likewise.
+
+       * input.h (MInputMethodInfo): New members im and maps.
+
+       * database.h (M_database_hook): Delete extern.
+       (MDatabaseHookFunc): Delete extern.
+       (mdatabase__check): Extern it.
+
+       * database.c: Include <glob.h>.
+       (MAX_TIME): New macro.
+       (Masterisk): New variable.
+       (get_database_stream): Argument changed to (MDatabaseInfo *).
+       Callers changed.
+       (get_dir_info): Renamed from duplicate_dirname.  Callers changed.
+       (find_database): New function.
+       (update_database_list): New function.
+       (mdatabase__init): Initialize Masterisk.  Setup mdb_list by
+       calling update_database_list.
+       (mdatabase__check): New function.
+       (mdatabase_find): Use update_database and find_database.  Don't
+       handle MDatabaseHookFunc.
+       (mdatabase_list): Call update_database at first.
+       (mdatabase_define): Adjusted for the change of mdb->extra_info.
+       (MDatabaseList): New type.
+
+       * plist.h (mplist_conv, mplist__pop_unref): Extern them.
+
+       * m17n.h (Mdetail_text): Delete extern.
+
+       * m17n-core.h (mplist_conc): Delete extern.
+
+       * plist.c (mplist__conc): Renamed from mplist_conc.  Don't ref
+       tail.
+       (mplist_conc): Renamed to mplist__conc.
+       (mplist__pop_unref): New function.
+
+2005-10-14  Kenichi Handa  <handa@m17n.org>
+
+       * plist.c (read_mtext_element): Ignore the sequence of '\\' and
+       newline.
+       (read_element): If keys is an empty plist, return any element
+       found first.
+       (dump_plist_element): Check if plist is nested.
+       (mplist_conc): Always ref tail.
+       (mplist_set): If key is a managing key, ref val in advance.
+
+       * plist.h (MPLIST_VAL_MANAGED_P): Delete this macro.
+       (MPLIST_NESTED_P, MPLIST_SET_NESTED_P): New macros.
+       (MPLIST_ADD_PLIST, MPLIST_PUSH_PLIST, MPLIST_PUT_PLIST): New
+       macros.
+
+       * fontset.c (free_fontset): Unref fontset_list if necessary.
+       (mfont__fontset_fini): Don't free fontset_list.  Unref
+       default_fontset.
+       (mfont__realize_fontset): Initialize request.
+       (mfontset): Ref default_fontset or fontset only if necessary.
+       (mfontset_copy): Don't ref copy.
+
+       * draw.c (render_glyphs): Check gend->type before checking
+       gend->to.
+
+       * font-ft.c (mfont__ft_fini): Unref ft_default_list.  Set all
+       unrefed plists to NULL.
+
+2005-10-04  Kenichi Handa  <handa@m17n.org>
+
+       * textprop.c (mtext_serialize): Be sure to make mt
+       MTEXT_FORMAT_UTF_8 and NULL terminated.
+
+       * m17n-gui.c (m17n_init_win): Initialize Mcolormap.
+
+       * draw.c (mdraw_glyph_list): Fix settting of glyphs->font->source.
+
+2005-10-03  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (mdraw_glyph_info): Pay attention to the case that FROM
+       is not at the beginning of line.
+
+2005-09-22  Kenichi Handa  <handa@m17n.org>
+
+       * input.c: Include <sys/stat.h> and <unistd.h>.
+       (Minclude, Mcommit, Munhandle): New variables.
+       (minput__init): Initialize them.  Push only Mstate to
+       load_im_info_keys.   Add aliases C-lowercase for C-uppercase.
+       (parse_action_list): Allow integer arg for undo.  Handle Mcommit
+       and Munhandle.
+       (load_input_method): Handle "include" directive.  If no states are
+       loaded, return -1.
+       (shift_state): If state_name is Mt, shift back to the previous
+       state.  Call preedit_commit to commit preedit text.
+       (preedit_commit): New function.
+       (take_action_list): Improve debug printing.  Handle commit and
+       unhandle commands.
+       (handle_key): Check the return value of take_action_list.  Don't
+       take branch_actions just after changing to the root map.
+       (reset_ic): Reset all ic_info members.
+       (filter): When a key is not handled, just move ic_info->keys
+       instead fo calling reset_ic.
+       (load_im_info): If key is not Mstate, push Mmap to
+       load_im_info_keys.
+       (MDatabaseStatList): New type.
+       (imdir_stat_list): New variable.
+       (input_method_hook): Don't cancel the hook.  Check the
+       modification time of directories.
+       (minput__fini): Free imdir_stat_list;
+
+       * input.h (MInputContextInfo): New member prev_state.
+
+       * m17n-core.h (mplist_conc): Extern it.
+
+       * plist.c (mplist_conc): New function.
+
+       * mtext.c (mdebug_dump_mtext): Escape '"' and '\\' by '\\'.
+
+       * font.h (MRealizedFont): New member average_width.
+
+       * font-ft.c (ft_open): Set rface->average_width.
+
+       * font.c (xlfd_unparse_name): Print '*' before registry name.
+
+       * m17n-X.c (MDisplayInfo): New member AVERAGE_WIDTH.
+       (xfont_open): Set rfont->average_width.
+       (xft_open): Likewise.
+       (device_open): Initialize disp_info->AVERAGE_WIDTH.
+
+       * internal-gui.h (struct MFrame): New member average_width.
+
+       * m17n-gui.c (mframe): Fix setting of frame->rfont.
+       (mframe_get_prop): Return the average_width of a font.
+
+       * face.c (mface__realize): Set rface->average_width.
+       (mface__update_frame_face): Set frame->average_width.
+
+       * face.h (MRealizedFace): New member average_width.
+
+2005-09-19  Kenichi Handa  <handa@m17n.org>
+
+       * font.c (xlfd_unparse_name): New arg full_xlfd.
+       (mfont__encode_char): Use shortcut only for X core fonts.
+       (mfont_unparse_name): Call xlfd_unparse_name with full_xlfd arg 1.
+       (mfont_put_prop): Handle `language' property.
+       (mdebug_dump_font): Call xlfd_unparse_name with full_xlfd arg 0.
+       Print file can capability info too.
+
+       * m17n-core.c (mdebug__output): New variable.
+       (SET_DEBUG_FLAG): Unset mask if env_value is '0'.
+       (m17n_init_core): Handle MDEBUG_ALL and MDEBUG_OUTPUT_FILE.
+       (m17n_fini_core): Close mdebug__output if it's not stderr.
+
+       * m17n-X.c (MDisplayInfo): New member MULE_BASELINE_OFFSET.
+       (xfont_open): Handle baseline_offset.
+       (xfont_find_metric): Likewise.
+       (xfont_render): Likewise.
+       (xft_open): Likewise.
+       (xft_render): Likewise.
+
+       * internal.h (MDebugMaskBit): Add MDEBUG_ALL.
+       (mdebug__output): Extern it.
+       (MDEBUG_PRINT, MDEBUG_PRINT1, MDEBUG_PRINT2, MDEBUG_PRINT3)
+       (MDEBUG_PRINT4, MDEBUG_PRINT5): Print to medebug__output.
+       (MDEBUG_DUMP): New macro.
+       (MDEBUG_PRINT_TIME): Print to medebug__output.
+
+       * font.h (MRealizedFont): New member baseline_offset.
+
+       * font-ft.c (ft_get_charmaps): Check if the font support iso8859-1
+       characters.
+       (fc_weight_table): Add FC_WEIGHT_REGULAR.
+       (ft_list_family): Check alias.
+       (ft_list_language): If language is "en", don't try to the second
+       step.
+       (ft_default_list): New variable.
+       (ft_list_default): New function.
+       (ft_select): If family is not specified, try only the default
+       fonts.  Treat the weights normal and medium same.
+       (ft_open): Fix debug message.  If registry is not specified, try
+       unicode-bmp.  Handle _MULE_BASELINE_OFFSET property of BDF fonts.
+       (ft_find_metric): Likewise.
+       (ft_render): Likewise.
+       (ft_list): Fix debug message.  Accept the registring iso8859-1.
+       If family is not specified, try only the default fonts.
+
+       * face.c (mface__realize): Fix logic of opening a font.
+
+2005-09-16  Kenichi Handa  <handa@m17n.org>
+
+       * face.c (mface__realize): 
+
+       * m17n.h (Minput_focus_move, Minput_focus_in, Minput_focus_out):
+       Extern them.
+
+       * input.c (shift_state): Fix the condition of taking init actions.
+       (take_action_list): Fix handling of pushback action.
+       (handle_key): Don't change key while checking its alias.
+       (minput__init): Initialize new variables.
+       (Minput_focus_move, Minput_focus_in, Minput_focus_out): New
+       variables.
+
+2005-09-12  Kenichi Handa  <handa@m17n.org>
+
+       * mtext.c (mtext__uppercase): Add proper open/close parens.
+       (mtext_titlecase): Add proper casting.
+
+       * input.c (parse_action_list): Handle the case that the arg is a
+       key sequence (MText or MPlist).
+       (take_action_list): Likewise.
+       (shift_state): Shorter debug message.
+       (handle_key): Terminate a debug message by "\n".
+       (reset_ic): Don't take initial actions here.
+       (minput_open_im): Print a debug message.
+       (minput_close_im): Likewise.
+       (minput_create_ic): Likewise.
+       (minput_destroy_ic): Likewise.
+
+2005-09-09  TAKAHASHI Naoto  <ntakahas@m17n.org>
+
+       * mtext.c (mtext_lowercase, mtext_titlecase, mtext_uppercase):
+       Change API.
+
+2005-09-07  TAKAHASHI Naoto  <ntakahas@m17n.org>
+       * character.c: Add "cased", "soft-dotted", and "case-mapping" in
+       mchar__init ().
+
+       * character.c: Add Japanese documentation for
+       mchar_get_prop_table ().
+
+2005-09-06  TAKAHASHI Naoto  <ntakahas@m17n.org>
+
+       * mtext.c (tricky_chars, *cased, *soft_dotted, *case_mapping)
+       (MCharTable *combining_class, Mlt, Mtr, Maz, gr03A3, lt0049,
+       (lt004A, lt012E, lt00CC, lt00CD, lt0128, tr0130, tr0049, tr0069):
+       New variables.
+       (init_case_conversion): New function.
+       (CASE_CONV_INIT, REPLACE, DELETE, LOOKUP): New macros.
+       (uppercase_precheck, lowercase_precheck, final_sigma)
+       (after_soft_dotted, more_above, before_dot, after_i)
+       (mtext_uppercase, mtext_titlecase, mtext_lowercase): New functions.
+
+2005-09-05  TAKAHASHI Naoto  <ntakahas@m17n.org>
+
+       * plist.c (read_mtext_element): Fix previous change.
+
+2005-09-05  Kenichi Handa  <handa@m17n.org>
+
+       * plist.c (read_mtext_element): Handle \uXXXX notation.
+
+       * internal.h (MTABLE_MALLOC): Don't use a local variable.
+       (MTABLE_ALLOCA): Change the name of local variable.
+
+       * m17n-gd.c (device_open): Define it even if HAVE_GD nor
+       HAVE_FREETYPE are defined.
+
+       * m17n-X.c: Check HAVE_X11.
+
+       * Makefile.am (X_LD_FLAGS): Use @X11_LD_FLAGS@ instead of
+       directory listing libraries.
+       (noinst_PROGRAMS): Define it only in maintainer mode.
+
+2005-09-02  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (mdraw_line_break_option): Extern it.
+
+       * draw.c (truncate_gstring): Use find_glyph_in_gstring to find the
+       end of the first glyph.
+       (GET_LB_TYPE, find_break_backward, find_break_forward): Delete
+       them.
+       (mdraw_line_break_option): New variable.
+       (mdraw_default_line_break): Use mtext_line_break.
+
+       * mtext.h (wordseg_func_table): Don't extern it.
+       (mtext__wseg_fini): Extern it.
+
+       * mtext.c: Don't include word-thai.h.
+       (wordseg_func_table): Delete this variable.
+       (mtext__init): Don't initialize above.  Don't call
+       mtext__word_thai_init.
+       (mtext__fini): Don't free wordseg_func_table.  Call
+       mtext__wseg_fini instead fo mtext__word_thai_fini.
+       (MTextWordsegFunc): Don't typedef it.
+       (mtext__word_segment): Moved to mtext-wseg.c.
+
+       * m17n-core.h (enum MTextLineBreakOption): New enum.
+       (mtext_line_break): Extern it.
+
+       * mtext-wseg.c: New file.
+
+       * mtext-lbrk.c: New file.
+
+       * Makefile.am (libm17n_core_la_SOURCES): Delete word-thai.[ch],
+       add mtext-lbrk.c and mtext-wseg.c.
+
+       * textprop.c (mtext__adjust_plist_for_change): Pay attention for
+       the case that head is NULL.
+
+2005-09-01  Kenichi Handa  <handa@m17n.org>
+
+       * word-thai.c (wordseg_propertize): If the property value is nil,
+       don't make the property no-merge.
+       (thai_wordseg): Don't require *from and *to are set a priori.  Pay
+       attention to the case that they are NULL.
+       (mtext__word_thai_init): Make the name of Mthai_wordseg starts
+       with two spaces.
+
+       * character.c (mchar_get_prop_table): New function.
+
+       * textprop.h (mtext__adjust_plist_for_change): Prototype adjusted.
+
+       * m17n-core.h (mtext_insert, mtext_replace): Extern them.
+       (mchar_get_prop_table): Extern it.
+
+       * textprop.c (prepare_to_modify): New arg deleting.  Callers changed.
+       (mtext__adjust_plist_for_change): Argument changed.  Callers changed.
+
+       * internal.h (enum MTextCoverage): New enum.
+       (MText): New member coverage.
+
+       * mtext.c (FORMAT_COVERAGE): New macro.
+       (insert): Copy mt2->coverage.
+       (mtext__from_data): Initialize mt->coverage.
+       (mtext__adjust_format): Update mt->coverage.
+       (mtext): Initialize mt->coverage.
+       (mtext_set_char): Adjust args to mtext__adjust_plist_for_change.
+       Update mt->coverage if necessary.
+       (mtext_duplicate): Copy mt->coverage.
+       (mtext_insert, mtext_replace): New functions.
+       (mtext_dup): Use mtext_duplicate.
+       (mtext__word_segment): Don't set *from and *to if a word
+       segmentation funcion is not found.
+       (mtext_ins_char): Fix typo.
+
+2005-08-25  Kenichi Handa  <handa@m17n.org>
+
+       * font.h (MFont): New member for_full_width.
+
+       * font.c (compare_font_score): Prefer a font of not
+       for_full_width.
+
+       * m17n-X.c (xfont_registry_list): Set font.for_full_width if the
+       registry charset of a font is one of CJK charsets.
+
+       * font-ft.c (fc_parse_pattern): Set font->for_full_width if a font
+       supports some of CJK.
+
+2005-08-24  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (Mascent, Mdescent): Don't extern them.
+
+       * m17n-gui.c (null_device_open): Check Mresolution param and set
+       frame->dpi.
+
+       * m17n-gd.c (device_open): Check Mresolution param and set
+       frame->dpi.
+
+       * m17n-X.c (MWDevice): New member resy.
+       (xfont_open): Set ascent, descent, and max_advance members of
+       rfont.
+       (xft_open): Likewise.
+       (device_open): Compare also screen_num to find a device.  Set
+       device->resy and frame->dpi.
+
+       * internal-gui.h (MFrame): New member dpi.
+
+       * font.h (MRealizedFont): New member max_advance.
+
+       * font.c (xlfd_unparse_name): Handle the case of font->size < 0.
+       (mfont__init): Don't initialize Mascent, Mdescent.
+       (Mascent, Mdescent): Delete these variables.
+       (mfont_get_prop): Fix previous change.  Check Mfont_ascent and
+       Mfont_descent instead of Mascent and Mdescent.
+       (mfont_put_prop): Allow negative size.
+       (mfont_find): Handle the case of spec->size < 0.  Fix previous
+       change.
+       (mfont_list): Handle the case of spec->size < 0.
+       (mfont_check): Likewise.
+
+       * font-ft.c (STRDUP_LOWER): Ignore the tailing spaces.
+       (fc_get_pattern): Handle the case of font->size < 0.
+       (ft_open): Set ascent, descent, and max_advance members of rfont.
+       (ft_find_metric): Improve rounding.
+       (mfont__ft_parse_name): If FC_PIXEL_SIZE is not available, set
+       FC_SIZE.
+
+       * face.c (mface__realize): Handle the case of font->size < 0.
+
+2005-08-22  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (MConverterStatus): Change the member buf to union.
+       (mconv_buffer_converter): Add const to the arg buf.
+       (mconv_decode_buffer, mconv_rebind_buffer): Likewise.
+       (mconv_decode): Adjusted for the change of MConverterStatus.
+       (mconv_encode_range): Likewise.
+
+       * m17n.h (mconv_buffer_converter): Prototype adjusted.
+       (mconv_decode_buffer, mconv_rebind_buffer): Likewise.
+
+2005-08-20  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (mfont_from_name): Prototype adjusted.
+       (Mspacing, Mascent, Mdescent, Mmax_advance): Extern them.
+
+       * m17n-X.c (xfont_open): Set members ascent, descent, and
+       max_advance of rfont.
+       (xft_open): Likewise.
+
+       * font-ft.c (ft_open): Set members ascent, descent, and max_advance
+       of rfont.
+       (mfont__ft_parse_name): Add const to the arg name.
+
+       * font.c (xlfd_parse_name): Add const to the arg name.  Call
+       mfont__set_property instead of mfont_set_spec.  Set font->spacing.
+       (xlfd_unparse_name): Handle spacing.
+       (mfont__init): Initialize new variables.
+       (mfont__id): Handle spacing.
+       (mfont__merge): Likewise.
+       (mfont__set_spec): This function deleted.
+       (mfont__parse_name_into_font): Add const to the arg name.  Fix the
+       condition of calling mfont__ft_parse_name.
+       (Mspacing, Mascent, Mdescent, Mmax_advance): New variables.
+       (mfont_get_prop): Handle properties spacing, ascent, descent,
+       and max-advance.
+       (mfont_find): Return a realized font.
+       (mfont_from_name): Add const to the arg name.
+
+       * font.h (enum MFontProperty): New member MFONT_SPACING.
+       (enum MFontSpacing): New enum.
+       (MFont): New members spacing and max_advance.
+       (mfont__ft_parse_name): Prototype adjusted.
+       (mfont__set_spec): Extern deleted.
+       (mfont__parse_name_into_font): Prototype adjusted.
+
+2005-08-19  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (mfont_parse_name): Prototype adjusted.
+
+       * font.c (mfont_list): If FONT is null, use a temporary font.
+       (mfont_parse_name): Add const to the arg name.
+
+2005-08-18  Kenichi Handa  <handa@m17n.org>
+
+       * word-thai.c: Surround code by #ifdef and #endif to escape from
+       doxygen.
+
+       * font-ft.c: Mostly re-written.
+
+       * font-flt.c (FontLayoutCmdOTF): This type deleted.
+       (FontLayoutCmd): Type of the member otf changed..
+       (load_otf_command): Adjusted for the format change of otf command.
+       (load_command): Likewise.
+       (free_flt_command): Unref cmd->body.otf.
+       (run_otf): Ajusted for the type change of otf_cmd.
+       (run_command): Ajusted for the type change of otf_cmd.  On
+       debugging, print ctx->combining_code.
+       (mfont__flt_run): Initialize ctx's members code_offset,
+       combining_code, and left_padding to 0.
+
+       * face.h (struct MRealizedFace): New member font.
+       (mface__realize): Prototype adjusted.
+
+       * face.c (find_realized_face): New arg font.
+       (find_realized_face): Adjusted for the change of MFont.
+       (mface__init): Call M17N_OBJECT_ADD_ARRAY.
+       (mface__fini): Don't call mdebug__report_object.
+       (mface__realize): New arg font.
+       (mface__for_chars): Adjusted for the change of mfont__encode_char.
+       Optimize the latin case.
+       (mface__free_realized): Free rface->font.
+       (mface__update_frame_face): Adjusted for the change of mface__realize.
+       (mface_equal): New function.
+
+       * draw.c (Mcommon): New variable.
+       (visual_order): Args to mfont__encode_char changed.
+       (compose_glyph_string): Handle Mfont text property.
+       (layout_glyphs): Adjusted for the change of MFont.
+       (mdraw__init): Initialize Mcommon.
+       (mdraw_glyph_info): Adjusted for the change of MRealizedFont.
+
+       * font.h (enum MFontType): Members completely changed.
+       (enum MFontProperty): Move MFONT_SIZE to the tail.
+       (enum MFontSource): New enum.
+       (struct MFont): New members type, source, sizes, file, capability,
+       and encoding.
+       (struct MRealizedFont): Type of member font changed. Members
+       score, status, and encoding deleted.
+       (MFontScore): New type.
+       (MFontList): Member changed.
+       (struct MFontDriver): New member has_char.  Types of members
+       changed.
+       (Miso8859_1, Miso10646_1, Municode_bmp, Municode_full)
+       (Mapple_roman): Extern them.
+       (OTF_Tag): Typedefed if not HAVE_OTF.
+       (enum MFontOpenTypeTable): New enum.
+       (MFontCapability): New type.
+       (mfont__ft_drive_otf): Prototype adjusted.
+       (mfont__score): Extern deleted.
+       (mfont__merge): Extern it.
+       (mfont__has_char): Extern it.
+       (mfont__encode_char): Prototype adjusted.
+       (mfont__open): Extern it.
+       (mfont__set_spec): Prototype adjusted.
+       (mfont__get_capability): Extern it.
+
+       * font.c: Include "fontset.h".
+       (M_font_capability, M_font_list, M_font_list_len): New variables.
+       (font_score_priority): Change order of initial elements.
+       (font_score_shift_bits): Fix array size.
+       (common_weight): Add "thin", "semibold", and "heavy".
+       (common_stretch): Add "ultracondensed", "extracondensed",
+       "extraexpanded", and "utltraexpand".
+       (font_weight_regular, font_weight_normal, font_weight_medium): New
+       variables.
+       (gen_font_name): This function deleted.
+       (find_encoding): Set font->encoding.
+       (OTF_tag): New function.
+       (otf_script_list): New variable.
+       (load_otf_script_list): New function.
+       (find_script_from_otf_tag): New function.
+       (xlfd_parse_name): Set font->type and font->source.
+       (mfont__free_realized): Free chains rfonts.
+       (font_score): Renamed from mfont__score.
+       (Miso8859_1, Miso10646_1, Municode_bmp, Municode_full)
+       (Mapple_roman): New variables.
+       (mfont__init): Initilize new variables.  Initalize
+       default_encoding.encoding_name and
+       default_encoding.encoding_charset to Municode_full and
+       mcharset__unicode.  Use SAFE* macros for allocating filepath
+       buffer.
+       (mfont__fini): Free otf_script_list.
+       (mfont__id): New function.
+       (mfont__match_p): Check also capability member of MFont.
+       (mfont__merge): New funciton.
+       (mfont__set_spec_from_face): Set type and source members.
+       (mfont__set_spec_from_plist): Set capability and type members.
+       (mfont__select): Argument changed.
+       (mfont__available): New function.
+       (compare_font_score): New function.
+       (mfont__list): New function.
+       (mfont__open): Return a realized font.
+       (mfont__resize): Adjusted for the change of MFont.
+       (mfont__has_char): New function.
+       (mfont__encode_char): Argument changed.
+       (mfont__set_spec): Argument changed.
+       (free_font_capability): New function.
+       (mfont__get_capability): New function.
+       (MFontfile): New variable.
+       (mfont_get_prop): Adjusted for the change of MFont.
+       (mfont_put_prop): Likewise.
+       (mfont_set_selection_priority): Fix the way of setting
+       font_score_priority[].
+       (mfont_find): Use mfont__list instead of mfont__select.
+       (mfont_resize_ratio): Adjusted for the change of MFont.
+       (mfont_list): Use mfont__list.
+       (mfont_check): New function.
+       (font_score): Make it static.
+
+       * fontset.h (mfont__realize_fontset): Prototype adjusted.
+       (mfont__lookup_fontset): Likewise.
+
+       * fontset.c (struct MFontset): Delete member font_spec_list.
+       (struct MRealizedFontset): Type of member spec changed.  New
+       member request.
+       (load_font_group): Arg spec_list deleted.
+       (load_fontset_contents): Adjusted for the change of fontset_def.
+       (free_fontset): Fix the way of freeing fontset elements.
+       (realize_fontset_elements): Argument changed.
+       (get_per_script): New function.
+       (free_realized_fontset_elements): Fix the way of feeing rfontset
+       elements.
+       (update_fontset_elements): Fix args to realize_fontset_elements.
+       (mfont__realize_fontset): New arg spec.
+       (try_font_list): New function.
+       (try_font_group): New arg request.  Use try_font_list.
+       (mfont__lookup_fontset): New arg ignore_fallback.  Fix arg to
+       try_font_group.
+       (mfontset): Adjusted for the change of MFontset.
+       (mfontset_copy): Likewise.  Don't share plists.
+       (mfontset_modify_entry): Adjusted for the change of MFontset.
+       (mfontset_lookup): Call get_per_script.
+       (mdebug_dump_fontset): Print also the address of fonts.
+
+       * input.c (shift_state): Don't reset ic_info->vars.
+       (take_action_list): Call MDEBUG_PRINT fore calling
+       take_action_list.
+
+       * internal-gui.h (MFontDriver): Don't typedef it here.
+
+       * m17n-X.c: Include <fontconfig/fcfreetype.h> if HAVE_XFT2.
+       (MXFont): This type deleted.
+       (MFontX): New type.
+       (struct _MFontX): New struct.
+       (SET_SIZE, HAVE_SIZE): Adjusted for the change of arg FONTX.
+       (MDisplayInfo): Member base_font_list deleted.
+       (DEFAULT_FONT): Definition changed.
+       (FALLBACK_FONT): This maclr deleted.
+       (free_display_info): Adjusted for the change of MDisplayInfo.
+       (free_device): Argument to mfont__free_realized changed.
+       (xfont_driver): Adjusted for the change of MFontDriver.
+       (xfont_registry_list): Use MFontX instead of MXFont.
+       (MRealizedFontX): Renamed from MXFontInfo.
+       (xfont_select): Return the font found first.
+       (close_xfont): Change MXFontInfo to MRealizedFontX.
+       (xfont_open): Return the realized font.
+       (xfont_find_metric): Get xfont from rfont->fontp.
+       (xfont_has_char): New function.
+       (xfont_encode_char): Adjusted for the argument change.
+       (xfont_render): Get xfont from rfont->fontp.
+       (xfont_list): Adjusted for the argument change.
+       (MRealizedFontXft): Renamed from MXftFontInfo.
+       (xft_driver): Ajusted for the change of MFontDriver.
+       (close_xft): Change MXtfFontInfo to MRealizedFontXft
+       (xft_open_font): Argument changed.
+       (xft_open): Argument changed.  Return the realized font.
+       (xft_find_metric): Get xft_font from rfont->fontp.
+       (xft_has_char, xft_encode_char): New functions.
+       (xft_render): Change MXftFontInfo to MRealizedFontXft.  Open a
+       font if not yet opened.
+       (device_open): Don't set frame->font.
+
+       * m17n-gd.c (gd_font_driver): Adjusted for the change of
+       MFontDriver.
+       (gd_font_open): New function.
+       (gd_render): Don't use the local variable ft_info.
+       (device_init): Adjusted for the change of gd_font_driver.
+
+       * textprop.c (mtext__prop_init): Initialize text_property_table.
+       Call M17N_OBJECT_ADD_ARRAY.
+       (mtext__prop_fini): Don't call mdebug__report_object.
+
+       * plist.c (mplist__init): Initialize plist_table.
+       (mplist__init): Call M17N_OBJECT_ADD_ARRAY.
+       (mplist__fini): Don't call mdebug__report_object.
+
+       * mtext.c (mtext__init): Call M17N_OBJECT_ADD_ARRAY.
+       (mtext__fini): Don't call mdebug__report_object.
+       (MTEXT_FORMAT_UTF_16): Correct type.
+       (mtext_data): New function.
+       (mtext_text): Fix calculation of limit and args to
+       find_char_backward.
+
+       * language.c: Include "plist.h".
+       (M_script_lang_list): New variable.
+       (mlang__init): Read languages and their information from m17n
+       database.
+       (mlanguage__list): New function.
+       (Miso639_1, Miso639_2): New variables.
+
+       * language.h (mlanguage__list): Extern it.
+
+       * database.c (get_database_stream): Use SAFE_* macros for
+       allocating and freeing path.
+       (mdatabase__init): Likewise.
+
+       * symbol.c (msymbol__fini): Don't free symbols here.
+       (msymbol__free_table): New function.
+       (msymbol_is_managing_key): New function.
+
+       * symbol.h (msymbol__free_table): Extern it.
+       (msymbol__list): Extern it.
+
+       * internal.h (MFATAL, USE_SAFE_ALLOCA, SAFE_ALLOCA, SAFE_FREE):
+       New macros.
+       (M17N_OBJECT_UNREF): Change "if ... else ..." structure.
+       (struct _M17NObjectArray): New member name and next.
+       (mdebug__add_object_array): Extern it.
+       (M17N_OBJECT_ADD_ARRAY): New macro.
+       (mdebug__report_object): Don't extern it.
+
+       * m17n-misc.h (enum MErrorCode): New element MERROR_FONT_X.
+
+       * m17n-gui.c (free_frame): Don't free frame->font.
+       (null_device_fini): Fix code for freeing
+       null_device.realized_font_list.
+       (m17n_fini_win): Free interface.
+       (mframe): Cast the return value of dlsym.  Set frame->font here.
+       (mframe_get_prop): Check frame->rface->rfont before accessing the
+       member font.
+
+       * m17n-gui.h (Mfontfile): Extern it.
+       (mfont_check): Extern it.
+       (mface_equal): Extern it.
+
+       * m17n-core.c: Include "symbol.h".
+       (report_header_printed): This variable deleted.
+       (object_array_root): New variable.
+       (report_object_array): New function.
+       (mdebug__report_object): This function deleted.
+       (mdebug__add_object_array): New function.
+       (m17n_init_core): Call mchartable_init () before mtext_init ().
+       (m17n_fini_core): Call report_object_array (if necessary) and
+       msymbol__free_atable at the end.
+
+       * m17n-core.h (msymbol_is_managing_key): Extern it.
+       (mtext_data): Extern it.
+       (MTEXT_FORMAT_UTF_16): Correct type.
+       (M17NLIB_MINOR_VERSION): Changed to 3.
+       (M17NLIB_VERSION_NAME): Changed to "1.3.0".
+       
+       * chartab.c (mchartable__init): Initalize chartable_table.count.
+       (mchartable__fini): Use N17N_OBJECT_ADD_ARRAY instead of
+       mdebug__report_object.
+
+2005-05-26  Kenichi Handa  <handa@m17n.org>
+
+       * m17n.h (Miso639_1, Miso639_2): Extern them.
+
+       * symbol.h (msymbol__list): Extern it.
+
+       * symbol.c (msymbol__list): New function.
+
+2005-05-19  Kenichi Handa  <handa@m17n.org>
+
+       * input-gui.c (minput__win_init): Don't change the value of
+       minput_driver.
+
+2005-05-16  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-core.c (m17n_object): Be sure to initialize all members.
+
+       * font-ft.c (fc_decode_prop): Fix args to msymbol.
+
+2005-05-09  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (mwin__close_device): Fix arg to M17N_OBJECT_UNREF.
+
+2005-04-27  Kenichi Handa  <handa@m17n.org>
+
+       * language.c (mlang__init): Add "an" (Aragonese).
+
+       * word-thai.c: Add support for libthai.
+       (mtext__word_thai_init): Initialize wordseg library conditionaly.
+       (mtext__word_thai_fini): Finalize wordseg library conditionaly.
+
+       * mtext.c: Include "word-thai.h" conditionaly.
+       (mtext__init): Call mtext__word_thai_init conditionaly.
+       (mtext__fini): Call mtext__word_thai_fini conditionaly.
+
+       * Makefile.am (libm17n_core_la_LIBADD): Add THAI_WORDSEG_LD_FLAGS,
+       not WORDCUT_LD_FLAGS.
+
+2005-04-19  Kenichi Handa  <handa@m17n.org>
+
+       * word-thai.c (wordseg_propertize): Always unref the attached
+       property.
+       (thai_wordseg): Don't unref the property.
+
+2005-04-18  Kenichi Handa  <handa@m17n.org>
+
+       * word-thai.c: Include stdlib.h.
+       (wordseg_propertize): Add dummy function for the case that wordcut
+       library doesn't exist.
+       (wordseg_propertize): Fix for old wordcut library.
+
+2005-04-16  Kenichi Handa  <handa@m17n.org>
+
+       * word-thai.c: Include <stdio.h>.
+
+2005-04-15  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c: Include mtext.h.
+       (linebreak_table, M_break_at_space, M_break_at_word)
+       (M_break_at_any, M_kinsoku_bol, M_kinsoku_eol): New variables.
+       (compose_glyph_string): Check POS before getting Mface text
+       property.
+       (truncate_gstring): Give correct TO arg to line_break function.
+       (GET_LB_TYPE): New macro.
+       (find_break_backward, find_break_forward): New functions.
+       (mdraw__init): Initialize the above new variables.
+       (mdraw__fini): Free linebreak_table.
+       (mdraw_default_line_break): Use find_break_backward and
+       find_break_forward.
+
+       * word-thai.c: New file.
+
+       * word-thai.h: New file.
+
+       * mtext.c: Include word-thai.h.
+       (wordseg_func_table): New variable.
+       (mtext__init): Initialize wordseg_func_table and call
+       mtext__word_thai_init.
+       (mtext__fini): Call mtext__word_thai_fini, free
+       wordseg_func_table.
+       (MTextWordsegFunc): New type.
+       (mtext__word_segment): New function.
+
+       * mtext.h (wordseg_func_table): Extern it.
+       (mtext__word_segment): Extern it.
+
+       * m17n.c (m17n_init): Fix typo (== -> =).
+
+       * Makefile.am (libm17n_core_la_SOURCES): Include word-thai.[ch].
+       (libm17n_core_la_LIBADD): Add @WORDCUT_LD_FLAGS@.
+
+       * textprop.h (MTEXTPROP_START, MTEXTPROP_END, MTEXTPROP_KEY)
+       (MTEXTPROP_VAL): New macros.
+
+       * input.c (DLOPEN_SHLIB_EXT): Don't define it.
+
+2005-04-07  Kenichi Handa  <handa@m17n.org>
+
+       * database.c (load_chartable): Fix pursing of symbol name.
+
+2005-03-24  Kenichi Handa  <handa@m17n.org>
+
+       * m17n.c (m17n_init): Fix typo (== -> =).
+
+2005-03-11  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.c (m17n_init_win): Set merror_code to MERROR_NONE at first.
+
+       * m17n.c (m17n_init): Set merror_code to MERROR_NONE at first.
+
+       * m17n-core.c (m17n_init_core): Set merror_code to MERROR_NONE at
+       first.
+
+2005-03-09  handa  <handa@m17n.org>
+
+       * m17n-gui.c (m17n_init_win): Set merror_code to MERROR_NONE before
+       calling m17n_init ().
+
+       * m17n.c (m17n_init): Set merror_code to MERROR_NONE before
+       calling m17n_init_core ().
+
+2005-02-28  Kenichi Handa  <handa@m17n.org>
+
+       * font-flt.c (mfont__flt_run): Add resulting code sequence in
+       debug info.
+
+2005-02-17  Kenichi Handa  <handa@m17n.org>
+
+       * input.c: Include <sys/types.h>, <dirent.h>, and "database.h".
+       (M_description, M_command, M_variable): New variables.
+       (load_im_info_keys): New variables.
+       (load_im_info, check_command_keyseq, get_description_advance)
+       (parse_command_list, get_command_list, parse_variable_list)
+       (get_variable_list, input_method_hook): New functions.
+       (command_list, variable_list): New variables.
+       (minput__init): Put input_method_hook to Minput_method.
+       Initialize M_description, M_command, M_variable, Mdetail_text,
+       load_im_info_keys, command_list, variable_list.
+       (minput__fini): Unref command_list, variable_list, load_im_info_keys.
+       (Mdetail_text): New variable.
+       (minput_get_description, minput_get_commands)
+       (minput_assign_command_keys, minput_get_variables)
+       (minput_set_variable): New functions.
+
+       * m17n.h (Mdetail_text, minput_get_description, minput_get_commands)
+       (minput_assign_command_keys, minput_get_variables)
+       (minput_set_variable): Extern them.
+
+       * plist.c (UNGETC): Just decrement st->p.
+       (read_mtext_element): New arg skip.
+       (read_integer_element): Likewise.
+       (read_symbol_element): Likewise.
+       (read_element): New arg KEYS.
+       (mplist__from_plist): Don't increment ref-count of NULL object.
+       (mplist__from_file): New arg KEYS.
+       (mplist_put): Don't increment ref-count of NULL object.
+       (mplist_add): Likewise.
+       (mplist_push): Likewise.
+       (mplist_set): Likewise.  Call M17N_OBJECT_UNREF unconditionally.
+
+       * plist.h (mplist__from_file): Prototype adjusted.
+
+       * database.c (mdatabase__dir_list): Renamed from mdb_dir_list.
+       (get_database_stream): New function.
+       (load_database): Use get_database_stream.
+       (M_database_hook): New variable
+       (mdatabase__init): Initialize M_database_hook.
+       (mdatabase__load_for_keys): New function.
+       (mdatabase_find, mdatabase_list, mdatabase_define): Check hook
+       function.
+       (mdatabase_define): Free mdb->extra_info if necessary.
+
+       * database.h (mdatabase__dir_list, M_database_hook)
+       (mdatabase__load_for_keys): Extern them.
+       (MDatabaseHookFunc): New type.
+
+       * internal.h (M17N_OBJECT_UNREF): When freed, set OBJECT to NULL.
+
+2004-12-27  Kenichi Handa  <handa@m17n.org>
+
+       * Version 1.2.0 released.
+
+2004-12-27  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (minput_filter): Don't reset ic->xxx_changed.
+
+       * mtext.c (mtext_from_data): Fix documentation.
+
+2004-12-25  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-core.h (M17NLIB_MINOR_VERSION): Update to 2.
+       (M17NLIB_VERSION_NAME): Update to "1.2.".
+
+2004-12-24  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (reset_ic): Set key_unhandled to 0.
+
+2004-12-21  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (mfont_from_spec): Delete extern.
+
+       * input-gui.c (win_callback): Handle Minput_reset.
+       (minput__win_init): Register reset_ic as a callback for
+       Minput_reset.
+
+       * input.c (reset_ic): New arg IGNORE which is ignored.  Caller
+       changed.  At first, shift to the initial state.
+       (minput__init): Initialize Minput_reset.  Register reset_ic as a
+       callback for Minput_reset.
+       (Minput_reset): New variable.
+       (minput_filter): Always set ic->xxx_changed to 0.
+       (minput_reset_ic): New function.
+       (integer_value): Fix typo ('>' -> '<') and calculation of length
+       of preedit text.
+
+       * m17n-core.c (merror_code): Change type to `int'.
+
+       * m17n-misc.h (merror_code): Adjust type.
+
+       * m17n.h (Minput_reset, minput_reset_ic): Extern them.
+
+       * m17n-core.h (MTEXT_FORMAT_UTF_16, MTEXT_FORMAT_UTF_32): Adjust types.
+       (mtext_change_prop): Delete extern.
+
+       * mtext.c (MTEXT_FORMAT_UTF_16, MTEXT_FORMAT_UTF_32): Change types
+       to `int'.  Move the documents to m17n-core.h.
+
+2004-12-13  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-core.h (m17n_object): Rename extern from m17n_object_setup.
+       (MTextProperty): Document it.
+
+2004-12-09  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-core.h: Fix typo (MTextStatus -> M17NStatus).
+
+2004-12-03  Kenichi Handa  <handa@m17n.org>
+
+       * internal.h (m17n__core_initialized, m17n__shell_initialized,
+       m17n__gui_initialized): New externs.
+
+       * m17n-core.h (enum M17NStatus): New enum.
+       (m17n_status): Extern it.
+
+       * m17n-core.c (core_initialized): Delete this variable.
+       (m17n__core_initialized, m17n__shell_initialized,
+       m17n__gui_initialized): New variables.
+       (m17n_init_core, m17n_fini_core): Check m17n__core_initialized
+       instead of core_initialized.
+       (m17n_status): New function.
+
+       * m17n.c (shell_initialized): Delete this variable.
+       (m17n_init, m17n_fini): Check m17n__shell_initialized instead of
+       shell_initialized.
+
+       * m17n-gui.h (m17n_init_win): Adjust the prototype.
+
+       * m17n-gui.c (win_initialized): Delete this variable.
+       (m17n_init_win, m17n_fini_win): Check m17n__gui_initialized
+       instead of gui_initialized.
+
+2004-11-19  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (reset_ic): Check if ic_info->state is NULL.
+       (filter): If ic_info->state is NULL, return 0.
+       (load_input_method): Don't unref `maps' it it's not created.
+
+2004-11-15  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (find_candidates_group): If INDEX is -1, find the last
+       candidate group.
+       (take_action_list): If the previous of the first candidate is
+       requested, select the last candidate.
+
+2004-11-08  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (device_open): Try at most 32 fonts to find a
+       non-autoscaled font.
+
+       * font.c (xlfd_parse_name): Fix previous change.
+
+2004-11-05  Kenichi Handa  <handa@m17n.org>
+
+       * font.c: (commont_style): Include dummy elements "slanted" and
+       "rslanted" to prefer "o" to "r" if "i" is requested.
+
+       * font-ft.c (ft_to_prop): Fix "oblique" entry.
+
+2004-10-29  Kenichi Handa  <handa@m17n.org>
+
+       * font.c (xlfd_parse_name): If avgwidth is 0, set the size to 0.
+
+       * m17n-X.c (MXFont): Change type of the member `sizes' to int.
+       New members smallest and larger.
+       (SET_SIZE, HAVE_SIZE): Adjusted for the above change.
+       (xfont_registry_list): Likewise.
+       (xfont_select): Likewise.
+       
+
+2004-10-28  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (xfont_registry_list): Include '-' before PIXEL_SIZE in
+       font name comparison.
+       (xfont_select): Fix logic for selecting a larger size font.
+
+2004-10-25  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (take_action_list): Initialize `ret' to 0 for "=", "<",
+       ">" actions.
+
+2004-10-22  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (update_candidate): Renamed from udpate_candidate.
+       (take_action_list): Show more debugging info on arithmetic commands.
+
+       * m17n-X.c (device_open): Fix previous change.
+
+       * draw.c (compose_glyph_string): Don't get face property at the
+       end of M-text.
+
+2004-10-21  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (compose_glyph_string): Fix for the case of category
+       being Mnil.
+
+2004-10-19  Kenichi Handa  <handa@m17n.org>
+
+       * input.c (mdebug_mask): New variable.
+       (shift_state): Print debug information.
+       (take_action_list): Likewise.
+       (handle_key): Likewise.
+
+2004-10-14  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (device_open): Accept Mxft as the value of key Mfont.
+
+2004-10-13  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (device_open): Be sure to register at least one font
+       driver.
+
+       * font-ft.c: Include <freetype/ftbdf.h> conditionally.  Check
+       HAVE_FTBDF_H before calling FT_Get_BDF_Property.
+
+2004-10-12  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (alloc_gstring): Fix previous change.
+
+       * font-ft.c (ft_list_generic): Fix for the case of not
+       HAVE_FONTCONFIG.
+
+       * m17n-X.c (mwin__parse_event): Fix for non-ASCII keys.
+
+       * font.c (mfont_list): If no font is found, return NULL.
+       (load_font_encoding_table): Put entries of nil registry first.
+       (find_encoding): Adjust for the above change.
+
+2004-10-11  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (mfont_list): Adjust prototype.
+
+       * m17n-X.c (xfont_list): New arg maxnum.
+
+       * font.h (struct MFontDriver): Change prototype of <list>.
+
+       * font-ft.c (fc_generic_family_list): Delete it.
+       (Mserif, Msans_serif, Mmonospace): Delete them.
+       (M_generic_family_info): New variable.
+       (enum GenericFamilyType): New enum.
+       (struct GenericFamilyInfo): New struct.
+       (generic_family_table): New variable.
+       (set_font_info): New arg style. Don't check 0xA0..0xBF to decide
+       iso8859-1.
+       (add_font_info): Get style here.
+       (ft_list_family): Don't initialize fc_config here.  Don't list
+       generic families.
+       (ft_list_generic): New function.
+       (ft_select): Pay attention to generic familes here.
+       (ft_open): Fix calculation of ascent and descent.
+       (ft_list): Pay attention to generic families.
+       (mfont__ft_init): Initialize M_generic_family_info,
+       generic_family_table, and fc_config..
+       (mfont__ft_fini): Finalize generic_family_table.
+
+       * draw.c (compose_glyph_string): Use more constant font for
+       glyphs.  Adjust for the member change in MGlyph.
+       (layout_glyph_string): Adjust for the member change in MGlyph.
+       (alloc_gstring): Intilize scracth_glyph to avoid
+       compose_glyph_string on it.
+       (get_gstring): Don't call compose_glyph_string on scracth_glyph.
+       (mdraw_coordinates_position): Fix previous change.
+
+       * internal-gui.h (glyph_category): New enum.
+       (MGlyph): Change type of <category> to enum glyph_category.
+
+       * face.c (mface__realize): Delete args langauge and charset.
+       (mface__for_chars): Fix for the case that glyphs have different
+       rfaces.
+       (mface__update_frame_face): Adjust for mface__realize change.
+
+       * face.h (mface__realize): Adjust prototype.
+
+2004-10-05  Kenichi Handa  <handa@m17n.org>
+
+       * language.c (mlang__init): Add Akan.
+
+2004-10-04  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (add_font_info): Add instead of push the element.
+       (ft_list_family): For generic fonts, try all
+       substituted. families.
+
+       * font-flt.c (UPDATE_CLUSTER_RANGE): New macro.
+       (run_rule): Don't update cluster range here.
+       (run_command): Update cluster range on appending a glyph.
+       (run_otf): Update cluster range for glyphs generated by OTF.
+
+2004-10-02  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (device_open): Handle Mfont key in PLIST.
+
+2004-09-30  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (ft_select): Ignore family on calling mfont__score.
+
+2004-09-30  Kenichi Handa  <handa@m17n.org>
+
+       * font.h: Include <fontconfig/fontconfig.h>.
+       (MFTInfo): New member langset.
+       (mfont__encoding_list): Extern it.
+
+       * font.c (mfont__encoding_list): New function.
+       (mdebug_dump_font_list): New function.
+
+       * font-ft.c: Don't include <fontconfig/fontconfig.h> here.
+       (Mserif, Msans_serif, Mmonospace, Mmedium, Mr, Mnull): New
+       variables.
+       (ft_family_list): New variable.
+       (set_font_info): New arg basep.  Callers changed.
+       (fc_list): Check the return value of FcPatternGetString.
+       (add_font_info): New arg plist.  Callers changed. Update
+       ft_family_list.
+       (ft_list_family): New function (merged fc_list and ft_list_all).
+       (ft_select): Use ft_list_family.
+       (ft_list): Likewise.  If FONT is not NULL, check all fonts.  Fix
+       typo (== -> !=).
+       (mfont__ft_init): Initialize above new variables.
+       (mfont__ft_fini): Free ft_family_list.
+       (STRDUP_LOWER): New macro.
+       (set_font_info): Use STRDUP_LOWER.
+       (ft_list_family): Avoid duplicate addition of font path.  Use
+       STRDUP_LOWER.
+       (fc_decode_prop): Fix typo.
+
+       * m17n-X.c (MDisplayInfo): New member all_fonts_scaned.
+       (xfont_registry_list): Change argument disp_info to frame.
+       Callers changed.
+       (xfont_list_all): New function.
+       (xfont_list): If FONT is not NULL, check all fonts.
+
+2004-09-28  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (MXFont, MXFontList): New types.
+       (MDisplayInfo): Delete members font_registry_list,
+       iso8859_1_family_list, iso10646_1_family_list, new members
+       font_list, base_font_list.
+       (free_display_info): Adusted for the change of MDisplayInfo.
+       (xfont_driver): Initialize with xfont_list.
+       (font_compare): New function.
+       (build_font_list): Deleted.
+       (xfont_registry_list): New function.
+       (xfont_select): Use xfont_registry_list.
+       (xfont_list): New function.
+       (device_open): Adusted for the change of MDisplayInfo.
+
+       * font-ft.c (add_font_info): New arg languages.  Callers changed.
+       (fc_list): Get languages from fonts..
+       (ft_list_all): Renamed from ft_list.  Callers changed.
+       (ft_list): New function.
+       (mfont__ft_driver): Initalize with ft_list.
+
+       * font.c (mfont_list): New function.
+
+       * font.h (struct MFontDriver): New member `list'.
+       (MFTInfo): New member languages.
+
+       * m17n-gui.h (mfont_list): Extern it.
+
+2004-09-27  Kenichi Handa  <handa@m17n.org>
+
+       * internal-gui.h (struct MGlyphString): Delete members mt,
+       sub_width, sub_lbrearing, sub_rbearing, and region.
+
+       * draw.c (MSubTextExtents): New type.
+       (layout_glyphs): New arg extents.  Set its members.
+       (layout_glyph_string): Adjusted for the above change.
+       (alloc_gstring): Don't set gstring->mt.
+       (truncate_gstring): Call line_break function with mt instead of
+       gstring->mt.
+
+2004-09-22  Kenichi Handa  <handa@m17n.org>
+
+       * mtext.c (count_utf_16_chars): Count each code of invalid
+       surrogates as one.
+
+2004-09-19  Kenichi Handa  <handa@m17n.org>
+
+       * mtext.c (default_utf_16, default_utf_32): Rename them to
+       MTEXT_FORMAT_UTF_16 and MTEXT_FORMAT_UTF_32 respectively.  Caller
+       changed.
+
+       * m17n-core.h (MTEXT_FORMAT_UTF_16, MTEXT_FORMAT_UTF_32): Extern
+       them.
+
+2004-09-13  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (Mlatin): Don't declare it here.
+       (visual_order): Fix reordering of combining characters.
+       (compose_glyph_string): Fix detection of script.
+       (layout_glyphs): Don't fix reordering of combining characters
+       here.
+       (layout_glyph_string): Pay attention to
+       control->disable_overlapping_adjustment.
+       (truncate_gstring): Include at least on character in a line.
+       (get_gstring): Always scan one full line.
+       (mdraw__init): Don't initialize Mlatin here.
+       (mdraw_text_per_char_extents): Fix iteration.  If a glyph doesn't
+       have a font, use ascent/descent of an ASCII font.  Allow
+       ink_array_return and logical_array_return to be NULL.
+       (mdraw_coordinates_position): Fix iteration.
+
+       * font-ft.c (MFTtoProp): Member completely changed.
+       (ft_to_prop): Adjusted for the above change.
+       (ft_to_prop_size): Likewise.
+       (set_font_info): Adjusted for the change of MFTtoProp.
+       (fc_generic_family_list): New variable.
+       (fc_list): Add special handling of generic font names.
+       (mfont__ft_init): Adjusted for the change of MFTtoProp.
+       Initialize fc_generic_family_list.
+       (mfont__ft_fini): Don't free ft_to_prop.  Free
+       fc_generic_family_list.
+       (FC_vs_M17N_font_prop): New type.
+       (fc_weight_table, fc_slant_table, fc_width_table): New variables.
+       (fc_decode_prop, fc_encode_prop): New functions.
+       (mfont__ft_parse_name): Use fc_decode_prop.
+       (mfont__ft_unparse_name): Use fc_encode_prop.
+
+       * m17n-X.c (MDisplayInfo): Delete member realized_font_list.
+       (MWDevice): Add member realized_font_list.
+       (free_display_info): Don't free disp_info->realized_font_list.
+       (free_device): Free device->realized_fontset_list.
+       (xft_find_metric): Use gstring->frame instead of rfont->frame.
+       (device_open): Don't initialize disp_info->realized_font_list.
+       (device_open): Initialize device->realized_font_list and set it to
+       frame->realized_font_list.
+
+       * fontset.c (try_font_group): New function.
+       (mfont__lookup_fontset): Use try_font_group.
+
+       * font.c (common_weight): Change the order of "regular".
+
+       * face.c (Mlatin): Don't make it static.
+       (mface__realize): Be sure to set work_gstring.frame.
+       (mface__for_chars): Likewise.
+
+       * mtext.c (mdebug_dump_mtext): Fix for the case of mt->format >
+       MTEXT_FORMAT_UTF_8.
+
+       * internal-gui.h (Mlatin): Extern it.
+
+       * m17n-gui.h (MDrawControl): New member
+       disable_overlapping_adjustment.
+
+2004-09-06  Kenichi Handa  <handa@m17n.org>
+
+       * font-flt.c (run_otf): Fix typo ('}'->']').
+
+       * internal-gui.h (MAKE_PRECOMPUTED_COMBINDING_CODE)
+       (COMBINING_PRECOMPUTED_P): New macros.
+
+       * draw.c (layout_glyphs): Handle precomputed combining code.
+
+       * font-ft.c (mfont__ft_drive_otf): Set g->combining_code to a
+       precomupted combining code.
+
+2004-09-03  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (mfont__ft_drive_otf): Use malloc and free for
+       otf_gstring.glyphs.
+
+2004-08-27  Kenichi Handa  <handa@m17n.org>
+
+       * face.c (mface_put_prop): If the new value is the same as the
+       current one, don't increment frame->tick.
+
+2004-08-25  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (mfontset): Initialize font_spec_list member.
+       (mfontset_copy): Load fontset if necessary.
+
+       * m17n-gui.h (MDrawGlyphInfo): Change the member name 'this' to
+       'metrics' to for C++.
+
+       * draw.c (mdraw_glyph_info): Adjusted for the member name change
+       (this -> metics).
+
+2004-08-16  Kenichi Handa  <handa@m17n.org>
+
+       * Version 1.1.0 released.
+
+2004-08-13  Kenichi Handa  <handa@m17n.org>
+
+       * language.c (mlang__init): Add Dhivehi.
+
+       * m17n-gui.c (Mx, Mfreetype): Delete it.
+       (m17n_init_win): Don't initialize Mx and Mfreetype here.
+
+       * m17n-gui.h (Mfreetype, Mxft): Extern them.
+       (mfont_resize_ratio): Extern it.
+       (MDrawGlyphInfo): New member logical_width;
+       (MDrawGlyph): New type.
+       (mdraw_glyph_list): Prototype adjusted.
+
+       * m17n-X.c (xfont_open): Set type and fontp members.
+       (xft_open): Likewise.
+
+       * internal-gui.h (Mx, Mfreetype): Delete extern.
+
+       * font.h (struct MRealizedFont): New member type and fontp.
+
+       * font.c (mfont__init): Initialize Mx, Mfreetype, and Mxft.
+       (Mx, Mfreetype): Declare here.
+       (Mxft): New variable.
+       (mfont_resize_ratio): New function.
+
+       * font-ft.c (ft_open): Set type and fontp members.
+
+       * draw.c (mdraw_glyph_list): Argument type changed.  Don't set
+       glyph_code member.
+
+2004-08-11  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (ft_find_metric): Call FT_Load_Glyph with
+       FT_LOAD_DEFAULT.
+
+2004-08-06  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (mfont__ft_drive_otf): Fix for the case that no GSUB
+       feature to apply.
+
+       * font-flt.c (run_otf): Print debugging information if necessary.
+
+2004-08-05  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (mfont__ft_drive_otf): Fix sign of g->yoff.  Support
+       positioning_type 5 and 6.  Switch simplified.
+
+2004-08-04  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (mfont__ft_drive_otf): Call OTF_drive_gdef.
+
+2004-08-02  Kenichi Handa  <handa@m17n.org>
+
+       * font.c (mfont__score): If prop is MFONT_FOUNDRY or MFONT_FAMILY,
+       set val to 1 even if it is greater than 1.
+
+       * fontset.c (mfontset_modify_entry): Fix handling of the arg `how'.
+
+2004-07-29  Kenichi Handa  <handa@m17n.org>
+
+       * font-flt.c (run_rule, run_command, mfont__flt_run): Print more
+       debugging information.
+
+       * internal.h (MDEBUG_PRINT5): New macro.
+
+       * draw.c (layout_glyphs): Don't combine a zero width glyph with
+       the previous one if the zero width glyph has left or right
+       padding.
+
+2004-07-26  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (xft_render): Pay attention to members left_padding and
+       right_padding of MGlyph.
+
+       * draw.c (visual_order): Allocate one more elements for arrays as
+       a workaround of fribidi bug.
+       (layout_glyphs): Fix previous change. Check MGlyph->combining_code
+       instead of MGlyph->bidi_sensitive.
+       (layout_glyph_string): Pay attentinon to
+       control->orientation_reversed when padding at the head or tail.
+       Fix adjustment of space glyph width.
+       (get_gstring): If cursor_width or cursor_bidi is changed, don't
+       use a cache.
+
+       * font-ft.c (mfont__ft_drive_otf): Set MGlyph->combining_code
+       instead of MGlyph->bidi_sensitive.
+
+       * internal-gui.h (MGlyph): Delete member bidi_sensitive.
+
+2004-07-26  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (visual_order): Don't treat combined glyphs specially.
+       (layout_glyphs): Don't get metrics glyphs that are already ready.
+       Pay attention to MGlyph->bidi_sensitive.  Combine a glyph of zero
+       width with the previous one. 
+       (draw_background): Fix bar cursor position on a r2l glyph.
+
+       * font-flt.c (FontLayoutCmdOTF): Move back from internal-gui.h.
+       (run_rule): Fix place of updating cluster_begin_pos and
+       cluster_end_pos here.
+       (run_otf): Don't set left_padding.
+
+       * font-ft.c (adjust_anchor): Type of argument `code' changed.
+       Caller changed.
+       (mfont__ft_drive_otf): Renamed back from mfont__ft_drive_gsub.
+       Fix handling of GPOS.
+       (mfont__ft_drive_gpos): Delete this function.
+
+       * font.h (mfont__ft_drive_otf): Renamed back from
+       mfont__ft_drive_gsub.
+       (mfont__ft_drive_gpos): Delete extern.
+
+       * internal-gui.h (FontLayoutCmdOTF): Move back to font-flt.c.
+       (MGlyph): Delete member otf_cmd, add member bidi_sensitive.
+
+2004-07-23  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (layout_glyphs): Call mfont__ft_drive_gpos with glyphs of
+       the same bidi level.
+
+       * font-ft.c (mfont__ft_drive_gpos): Check bidi-level.
+
+2004-07-22  Kenichi Handa  <handa@m17n.org>
+
+       * font-flt.c (load_flt): Treat the symbol Mend as end-of-file.
+
+2004-07-20  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (render_glyphs): Fix checking of g->code validity.
+
+       * face.c (mface__realize): Set g.type.
+
+2004-07-18  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.am: Prepend ${top_srcdir} to all *.la in
+       *_LIBADD/*_LDADD.
+
+       * m17n-gui.c (mframe): Print error message give by dlopen to
+       stderr.
+
+2004-07-16  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (compose_glyph_string): Improve the way of deciding a
+       script.  For a character that doesn't have script property, use
+       the last non-latin script.
+
+       * font-ft.c (fc_list): Cancel previous change.
+       (mfont__ft_init): Add more entries in ft_to_prop_name.
+
+2004-07-15  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (mdraw_glyph_list): Add the width of padding glyphs to
+       previous or next character glyphs.
+
+2004-07-14  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (compose_glyph_string): Be sure to set codes for glyphs
+       of type GLYPH_SPACE.
+
+       * fontset.c (mfont__lookup_fontset): If glyph type is
+       GLYPH_SPACE, get codes for SPACE.
+
+       * internal-gui.h (Mfont): Delete extern.
+
+       * m17n-gui.h (Mfont): Delete duplicated extern.
+
+2004-07-13  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (DEVICE_DELTA): New macro.
+       (adjust_anchor): New function.
+       (mfont__ft_drive_gsub): Renamed from mfont__ft_drive_otf.  Drive
+       only GSUB.
+       (mfont__ft_drive_gpos): New function.
+
+       * font-flt.c (FontLayoutCmdOTF): Moved to internal-gui.h.
+       (FontLayoutContext): Delete member `rfont'.
+       (run_otf): Set g->otf_cmd.  Call 
+       (mfont__flt_run): Don't set ctx.rfont.  Call mfont__ft_decode_otf
+       only whne HAVE_OTF is defined.
+
+       * fontset.c: Include "config.h".
+
+       * internal-gui.h (FontLayoutCmdOTF): Moved from font-flt.c.
+       (MGlyph): New member otf_cmd.
+
+       * font.h (mfont__ft_drive_gsub): Changed from mfont__ft_drive_otf.
+       (mfont__ft_drive_gpos): Extern it.
+
+       * face.c: Include "config.h".
+
+       * draw.c (layout_glyphs): Call mfont__ft_drive_gpos.
+
+       * input-gui.c: Include "config.h".
+
+       * plist.c: Include "config.h".
+
+2004-07-06  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.c, m17n-gui.h, m17n-gd.c, m17n-X.h, m17n-X.c,
+       internal-gui.h: Cancel previous changes.
+
+       * m17n-gd.h: Delete it.
+
+       * Makefile.am (libm17n_core_la_LIBADD): New variable.
+       (libm17n_core_la_LDFLAGS): Add -export-dynamic, move
+       @XML2_LD_FLAGS@ to above.
+       (libm17n_la_LIBADD): Add -ldl.
+       (libm17n_la_LDFLAGS): Add -export-dynamic.
+       (X_LD_FLAGS): Fix the order of linking.
+       (libm17n_gui_la_LIBADD): Add ${OPTIONAL_LD_FLAGS}.
+       (libm17n_gui_la_LDFLAGS): Add -export-dynamic, delete above.
+       (libm17n_X_la_LDFLAGS): Add -module.
+       (libm17n_gd_la_SOURCES): Delete m17n-gd.h.
+       (libm17n_gd_la_LIBADD): Add @GD_LD_FLAGS@.
+       (libm17n_gd_la_LDFLAGS): Add -module.
+       (include_HEADERS): Delete m17n-gd.h.
+
+2004-06-30  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.c: Adjusted for the change of struct MDeviceDriver.
+       (MDeviceLibraryInterface): Delete it.
+       (register_device_library): Delete it.
+       (m17n__device_library_list): Renamed from device_library_list.
+
+       * m17n-gui.h (M17N_INIT_X, M17N_INIT_GD): New macros.
+       (m17n_init_win): Adjust prototype.
+
+       * m17n-gd.c: Adjusted for the change of struct MDeviceDriver.
+       (m17n_init_gd): New function. 
+
+       * m17n-gd.h: New file.
+
+       * m17n-X.h: Include <m17n-gui.h>.
+       (m17n_init_X): Extern it.
+       (M17N_INIT): Redefine it.
+
+       * m17n-X.c: Adjusted for the change of struct MDeviceDriver.
+       (m17n_init_X): New function.
+
+       * internal-gui.h (m17n__device_library_list): Extern it.
+       (struct MDeviceDriver): New members initialized, init, and fini.
+
+       * Makefile.am (libm17n_X_la_LIBADD): Add ${X_LD_FLAGS} and
+       @XFT2_LD_FLAGS@.
+       (libm17n_X_la_LIBADD): Delete aboves.
+       (libm17n_gd_la_SOURCES): Add m17n-gd.h.
+       (libm17n_gd_la_LIBADD): Add @GD_LD_FLAGS@.
+       (libm17n_gd_la_LDFLAGS): Delete it.
+       (include_HEADERS): Add m17n-gd.h.
+
+2004-06-25  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.am (libm17n_X_la_LDFLAGS): Cancel previous change.
+       (libm17n_gd_la_LDFLAGS): Cancel previous change.
+
+       * m17n-gd.c (gd_render): Don't call FT_Get_Char_Index.
+
+       * font-ft.c (fc_list): If FcFontList finds no font, try
+       FcFontMatch.
+
+       * draw.c (compose_glyph_string): Terminate the last loop after
+       doing default combining if necessary.
+
+2004-06-24  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (mdraw_glyph_list): Unref gstring->top at the tail.
+
+       * character.c (mchar_define_property): Add const to an arg.
+
+       * charset.c (mchar_define_charset): Add const to an arg.
+
+       * coding.c (MCodingSystem): Add const to an arg or decoder.
+       (finish_decoding): Add const to an arg.
+       (decode_coding_charset, decode_coding_utf_8)
+       (decode_coding_utf_16, decode_coding_utf_32)
+       (decode_coding_iso_2022, decode_coding_sjis)
+       (mconv_define_coding): Likewise.
+
+       * m17n-X.c (xft_find_metric): Delete unused variable.
+
+       * m17n-core.h (mchar_define_property, mtext_from_data): Adjust
+       prototypes.
+
+       * m17n.h (mchar_define_charset, mconv_define_coding): Adjust
+       prototypes.
+
+       * mtext.c (count_utf_8_chars, count_utf_16_chars)
+       (mtext__from_data, mtext_from_data): Add `const' to an arg.
+
+       * mtext.h (mtext__from_data): Ajust prototype.
+
+2004-06-23  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (compose_glyph_string): Always get glyph codes by
+       mface__for_char.
+       (mdraw_glyph_info): Set info->glyph_code and info->logical_width.
+       (mdraw_glyph_list): New function.
+
+       * font-flt.c (mfont__flt_run): Be sure to call
+       rfont->driver->encode_char.
+
+       * font-ft.c (ft_find_metric): Don't call FT_Get_Char_Index.
+       (ft_encode_char): Delete arg C.
+       (ft_render): Don't call FT_Get_Char_Index.
+
+       * font.c (mfont__encodable_p): Delete it.
+       (mfont__encode_char): Be sure to call rfont->driver->encode_char.
+
+       * font.h (struct MFontDriver): Delete arg C of encode_char.
+       (mfont__encodable_p): Delete extern.
+
+       * m17n-X.c (xfont_encode_char): Delete arg C.
+       (xft_find_metric): Don't cal FT_Get_Char_Index.
+       (xft_render): Likewise.
+
+       * m17n-gui.h (MDrawGlyphInfo): New members glyph_code and
+       logical_width.
+       (mdraw_glyph_list): Extern it.
+
+       * Makefile.am (libm17n_X_la_LDFLAGS): Don't include ${X_LD_FLAGS}.
+
+2004-06-22  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (mfontset_lookup): Extern it.
+
+       * m17n-gui.c (m17n_init_win): Delete unnecessary printing.
+
+       * fontset.c (realize_fontset_elements)
+       (free_realized_fontset_elements, update_fontset_elements): New
+       functions.
+       (mfont__realize_fontset): Call realize_fontset_elements.
+       (mfont__free_realized_fontset): Call free_realized_fontset_elements.
+       (mfont__lookup_fontset): If a fontset was modified, update
+       the realized fontset.
+       (mfontset_modify_entry): Increment fontset->tick.
+       (mfontset_lookup): New function.
+
+2004-06-21  Kenichi Handa  <handa@m17n.org>
+
+       * font-ft.c (mfont__ft_parse_name): Cast the arg to FcNameParse.
+
+       * mtext.c (mtext_dup, mtext_cat, mtext_ncat, mtext_cpy)
+       (mtext_ncpy, mtext_duplicate): Pay attention to the case that the
+       length of source text 0.
+
+2004-06-21  Kenichi Handa  <handa@m17n.org>
+
+       * mtext.c (INC_POSITION): Use CHAR_UNITS_BY_HEAD_UTF16.
+       (compare): Pay attention to format other than utf-8.
+       (copy): Delete this function.
+       (count_by_utf_8, count_by_utf_16, insert): New functions.
+       (count_utf_16_chars): Fix handling of a surrogate pair.
+       (find_char_forward, find_char_backward): Likewise.
+       (mtext__from_data): Delete unnecessary check.  Fix number of
+       allocated bytes.
+       (mtext_from_data): Don't count items.
+       (mtext_ref_char): Optimize the code.
+       (mtext_set_char): Pay attention to format other than utf-8.
+       (mtext_cat_char): Likewise.
+       (mtext_dup): Don't call copy, instead do allocation here.
+       (mtext_cat): Call insert instead of copy.
+       (mtext_ncat): Likewise.
+       (mtext_cpy): Delete character at first and call insert instead of
+       copy.
+       (mtext_ncpy): Likewise.
+       (mtext_copy): Likewise.
+       (mtext_duplicate): Call insert instead of copy.
+       (mtext_del): Pay attention to format other than utf-8.
+       (mtext_ins): Simply call insert.
+       (mtext_ins_char): Pay attention to format other than utf-8.
+       (mtext_tok): Call insert instead of copy.
+       (mtext_text): Call UNIT_BYTES.
+
+       * textprop.c (mtext__adjust_plist_for_change): New function.
+
+       * character.h (USHORT_SIZE, UINT_SIZE, UNIT_BYTES): New macros.
+       (CHAR_UNITS_UTF16, CHAR_UNITS): Simplified.
+       (CHAR_UNITS_AT): Fix typo.
+       (CHAR_UNITS_BY_HEAD): Fix typo.
+       (STRING_CHAR_AND_UNITS): Fix typo.
+
+       * internal.h (MTEXT_READ_ONLY_P): New macro. 
+
+       * mtext.h (mtext__replace): Delete the extern.
+       (mtext__adjust_foramt): Adjust prototype.
+
+       * plist.c (mplist_deserialize): Adjust the format of MT to utf-8
+       if possible.  Otherwise make a copy of mmt.
+
+       * coding.c (mconv_decode, mconv_gets): Adjust the format of MT to
+       utf-8.
+
+2004-06-18  Kenichi Handa  <handa@m17n.org>
+
+       * character.h (CHAR_STRING_UTF16): Fix syntax.
+
+2004-06-16  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.am (libm17n_gd_la_LIBADD): Delete it.
+       (libm17n_X_la_LIBADD): Delete it.
+       (libm17n_gd_la_LDFLAGS): Don't include @GD_LD_FLAGS@.
+
+       * m17n-X.c (device_open): Add parens in `if' condition.
+
+       * mtext.c (INC_POSITION): Handle format other than utf8 and utf16.
+       (DEC_POSITION): Likewise.
+       (compare): Fix case that mt1->format is MTEXT_FORMAT_UTF_8.
+
+2004-06-15  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (mfont__lookup_fontset): Fix selection of font groups
+       by language.
+
+       * draw.c (compose_glyph_string): If langauge is specified, call
+       mface__for_chars even if a text is all latin.  Fix condition for
+       setting non_ascii_found.
+
+       * m17n-X.c (xft_find_metric): Fix setting of g->lbrearing.
+
+       * m17n.h (minput_char_to_key): Delete extern.
+
+       * m17n-gui.h (minput_event_to_key): Cancel previous change.
+
+       * m17n-gui.c (null_device_open): Set several members of frame.
+
+2004-06-14  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (minput_event_to_key): Delete extern.
+
+       * symbol.h (struct MSymbolStruct): Renamed from MSymbol.
+
+       * m17n-core.h (MSymbol): Defined as "struct MSymbolStruct *".
+
+       * Makefile.am (AM_CPPFLAGS): Refer to @M17NDIR@.
+
+2004-06-08  Kenichi Handa  <handa@m17n.org>
+
+       * character.c (mchar_put_prop): Don't increment the ref-count of
+       record->table.
+
+2004-06-04  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-core.c (mdebug__register_object): New function.
+       (mdebug__unregister_object): Likewise.
+
+       * internal.h (mdebug__register_object, mdebug__unregister_object):
+       Extern them.
+       (M17N_OBJECT_REGISTER, M17N_OBJECT_UNREGISTER): Call them
+       respectively.
+
+       * charset.c (mcharset__load_from_database): Don't call
+       mconv__register_charset_coding here.
+
+       * coding.c (find_coding): Get a real name from an element of
+       coding_definition_list.
+       (mconv__register_charset_coding): Set the real name at the top of
+       param.
+       (mcoding__load_from_database): Likewise.
+       (mconv_list_codings): Adjusted for the above change.
+
+2004-06-03  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (find_coding): Find by canonicalized name.  Don't have
+       to modify the element of coding_definition_list by
+       mplist__from_plist.
+       (mconv__define_coding_from_charset): Delete it.
+       (mconv__register_charset_coding): Canonicalize sym.
+       (mcoding__load_from_database): Register plist modified by
+       mplist__from_plist.
+
+       * coding.h (mconv__define_coding_from_charset): Don't extern it.
+
+       * font-ft.c (ft_open): Fix setting of rfont->descent.
+
+2004-06-02  Kenichi Handa  <handa@m17n.org>
+
+       * font.c (enum xlfd_field_idx): Moved from m17n-X.c.
+       (xlfd_parse_name): Merge split_font_name and xfont_parse_name.
+       (xlfd_unparse_name): Renamed from xfont_build_name.
+       (mfont__init): Initialized Mfontconfig.
+       (mfont__free_realized): Unconditionally unref rfont->info.
+       (mfont__select): Free `this' if it's not best.
+       (mfont__open): Don't check frame->realized_font_list.
+       (mfont__parse_name_into_font): New function.
+       (Mfontconfig): New variable.
+       (mfont_from_name): Call mfont_parse_name.
+       (mfont_name): Call mfont_unparse_name.
+       (mdebug_dump_font): Likewise.
+
+       * font.h (struct MFontDriver): Delete members parse_name and
+       build_name.
+       (mfont__ft_parse_name, mfont__ft_unparse_name): Extern them.
+       (mfont__parse_name_into_font): Extern it.
+
+       * font-ft.c: Include "symbol.h".
+       (close_ft): Unconditionally free filename and charmap_list of
+       ft_into.
+       (ft_open): Duplicate base->filename.  Increment ref-count of
+       ft_info->charmap_list.  Free ft_info->charmap_list and
+       ft_info->filename on error.
+       (mfont__ft_parse_name, mfont__ft_unparse_name): New functions.
+
+       * m17n-X.c (xfont_driver): Don't include xfont_parse_name and
+       xfont_build_name.
+       (enum xlfd_field_idx): Moved to font.c.
+       (split_font_name, build_font_name): Likewise.
+       (build_font_list): Call mfont__parse_name_info_font.
+       (xfont_open): Call mfont__unparse_name.  Free name.
+       (xfont_parse_name, xfont_build_name): Moved to font.c
+       (xft_select): Prototype deleted.
+       (device_open): Check HAVE_FREETYPE on using mfont__ft_driver.
+       Call mfont_pase_name.
+
+       * m17n-gui.c (free_frame): Unref frame->font_driver_list.
+       (m17n_fini_win): Add check HAVE_FREETYPE on using null_interface.
+       (mframe): Likewise.
+
+       * m17n-gui.h (mfont_parse_name, mfont_unparse_name, Mfontconfig):
+       Extern them.
+
+       * Makefile.am (linkgui_LDADD): Add libm17n-X.la and libm17n-gd.la.
+
+2004-06-01  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (mfontset_modify_entry): Pay attention to the case
+       that fontset->font_spec_list is NULL.
+
+2004-05-31  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.c: Include <dlfcn.h> only when HAVE_DLFCN_H is defined.
+
+       * input.c: Include <dlfcn.h> only when HAVE_DLFCN_H is defined.
+
+       * font.c (mfont__select): Print score the a font for debugging.
+
+       * Makefile.am (libm17n_la_LIBADD): Delete -ldl.
+
+       * coding.c (reset_coding_sjis): Check kanji and kana instead of
+       kanji_sym and kana_sym.
+
+2004-05-28  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.am (VINFO): New variable.
+       (libm17n_core_la_LDFLAGS, libm17n_la_LDFLAGS)
+       (libm17n_gd_la_LDFLAGS): Include ${VINFO}.
+
+2004-05-27  Kenichi Handa  <handa@m17n.org>
+
+       The following chanages are to make device dependent functions
+       accessible only from MDeviceDriver structure, and to add GD and
+       null device drivers.  Font drivers get also device dependent.
+
+       * m17n.c (m17n_init): Increament shell_initialized.
+       (m17n_fini): Decremented shell_initialized.
+
+       * m17n-misc.h (enum MErrorCode): New element MERROR_GD.
+
+       * m17n-gui.h (Mdevice, Mdisplay, Mscreen, Mdrawable, Mdepth)
+       (Mwidget, Mcolormap, Mx): Extern them.
+
+       * m17n-gui.c: Include <dlfcn.h> and "config.h".
+       (free_frame): Call frame->driver->close instead of
+       mwin__close_device.
+       (DLOPEN_SHLIB_EXT): New macro.
+       (MDeviceLibraryInterface): New type.
+       (device_library_list): New variable.
+       (register_device_library): New function.
+       (null_device): New variable.
+       (null_device_close, null_device_get_prop)
+       (null_device_realize_face, null_device_free_realized_face): New
+       function.
+       (null_driver): New variable.
+       (null_device_init, null_device_fini, null_device_open): New
+       functions.
+       (null_interface): New variable.
+       (Mfreetype, Mdevice): Declare them.
+       (m17n_init_win): Increment win_initialized.  Initialize Mx, Mgd,
+       Mfreetype, Mdevice, Mdisplay, Mscreen, Mdrawable, Mdevice, and
+       Mwin__Close_Device.  Register drivers for Mx and Mgd.
+       (m17n_fini_win): Decremented win_initialized.  Call "fini"
+       function of all opened devices.  Don't call mwin__fini.
+       (Mdisplay, Mscreen, Mdrawable, Mdepth, Mwidget, Mcolormap):
+       Declare them here.
+       (mframe): Handle Mdevice key of PLIST.
+       (mframe_get_prop): Call frame->device->get_prop instead of
+       mwin__device_get_prop.
+
+       * m17n-gd.c: New file.
+
+       * m17n-core.h (M17NLIB_MAJOR_VERSION, M17NLIB_MINOR_VERSION)
+       (M17NLIB_PATCH_LEVEL, M17NLIB_VERSION_NAME): Updated to 1.1.0.
+
+       * m17n-core.c (m17n_init_core): Increate core_initialized.
+       (m17n_fini_core): Decremented core_initialized.
+
+       * m17n-X.h (Mdisplay, Mscreen, Mdrawable, Mdepth, Mwidget)
+       (Mcolormap): Don't extern them here.
+
+       * m17n-X.c (FRAME_DEVICE): New macro.
+       (FRAME_DISPLAY, FRAME_SCREEN, FRAME_CMAP): Use FRAME_DEVICE.
+       (free_display_info): Use MPLIST_DO.
+       (free_device): Free rface->info.
+       (xft_close): Delete it.
+       (device_init): Renamed from mwin__init.
+       (device_fini): Renamed from mwin__fini.
+       (device_open): Renamed from mwin__open_device.
+       (x_driver): New variable.
+       (MXFontInfo): Delete member frame, add member display.
+       (Mdisplay, Mscreen, Mdrawable, Mdepth, Mwidget, Mcolormap, Mxim):
+       Don't declare them here.
+
+       * internal-gui.h (MDeviceType): New enum.
+       (MWDefice): Delete it.
+       (struct MFrame): Change type of device to void *.  New members
+       device_type, driver, font_driver_list.
+       (M_CHECK_WRITABLE, M_CHECK_READABLE): New macros.
+       (MDeviceDriver): New type.
+       (Mx, Mgd, Mfreetype): Extern them.
+       (mwin__XXX): Delete all of them.
+
+       * input-gui.c (win_create_ic): Call frame->driver->XXX instead of
+       mwin__XXX.
+       (win_destroy_ic): Likewise.
+       (adjust_window_and_draw): Likewise.
+       (win_callback): Likewise.
+       (Mxim): Declare it here.
+       (minput_event_to_key): Call M_CHECK_READABLE.
+
+       * fontset.c (mfont__lookup_fontset): Delete local variable
+       font_group.
+
+       * font.h (struct MFontDriver): Delete member close, add members
+       parse_name and build_name.
+       (mfont__driver_list): Delete extern.
+       (mfont__close): Delete extern.
+
+       * font.c (mfont__init): Don't set mfont__driver_list.
+       (mfont__fini): Don't unref mfont__driver_list.
+       (mfont__select): Try font drivers in frame->font_driver_list.  Set
+       driver member of a realized font.
+       (mfont__close): Delete it.
+       (mfont_from_name, mfont_name, mdebug_dump_font): Call driver
+       functions of the default frame.
+
+       * font-ft.c (close_ft): Check ft_info->ft_face and work
+       differently.
+       (add_font_info): Allocate ft_info by M17N_OBJECT.
+       (ft_close): Delete it.
+       (mfont__ft_driver): Don't set ft_close.
+       (ft_select): Increment ref-count of best_font.
+       (ft_open): Decremented ref-count of base.  On error, call
+       FT_Done_Face and free ft_info.
+       (ft_find_metric): Always use XXX_MONO in load_flags.
+       (ft_render): Fix setting of width.  Call
+       frame->driver->draw_points instead of mwin__draw_points.
+       (ft_to_prop): Don't set mfont__driver_list.
+       (mfont__ft_fini): Just unref ft_info.
+
+       * face.c (mface__init): Exchange foreground and background of
+       mface__default.  Call mface_put_prop to set hline of
+       mface_underline,
+       (mface__realize): Call frame->driver->XXX instead of mwin__XXX.
+       (mface__free_realized): Don't call mwin__free_realized_face.
+
+       * draw.c (Mdepth): Don't declare it here.
+       (draw_background): Call frame->driver->XXX instead of mwin__XXX.
+       (render_glyphs, render_glyph_string): Likewise.
+       (mdraw__init): Don't set Mdepth.
+       (mdraw_text, mdraw_image_text, mdraw_text_with_control): Call
+       M_CHECK_WRITABLE.
+       (mdraw_text_per_char_extents): Return 0 on success and -1 on
+       error.
+       (mdraw_text_items): Check FRAME is writable.
+       (mdraw_per_char_extents): Implement body.
+
+       * Makefile.am (lib_LTLIBRARIES): Include libm17n-gui.la and
+       libm17n-gd.la.
+       (OPTIONAL_LD_FLAGS): Include @FONTCONFIG_LD_FLAGS@.
+       (GUI_SOURCES): Delete it.
+       (libm17n_X_la_SOURCES): Don't include ${GUI_SOURCES}.
+       (libm17n_gui_la_SOURCES, libm17n_gui_la_LIBADD)
+       (libm17n_gui_la_LDFLAGS, libm17n_gd_la_SOURCES)
+       (libm17n_gd_la_LIBADD, libm17n_gd_la_LDFLAGS): New targets.
+       (linkgui_LDADD): Set to libm17n-gui.la
+       (linkgui_LDFLAGS): New target.
+       (SRC): Include ${libm17n_gui_la_SOURCES} and
+       ${libm17n_gd_la_SOURCES}.
+
+2004-05-24  Kenichi Handa  <handa@m17n.org>
+
+       * draw.c (draw_background): Don't draw background even if
+       rface->face.property[MFACE_BACKGROUND] is not Mnil.
+
+2004-05-22  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (xft_open_font): Fix anti_alias setting.
+
+2004-05-20  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-gui.h (MFaceHookFunc): Change this function type to void.
+
+       * m17n-gui.c: Include "plist.h".
+       (mframe): If PLIST is NULL, initialize it to emply plist.
+
+       * m17n-X.c (build_font_list): Don't set property[MFONT_TYPE].
+       (xft_driver): New variable.
+       (xft_select, close_xft, xft_open_font, xft_open, xft_close)
+       (xft_find_metric, xft_render): New function.
+       (mwin__init): Adjusted for the new mfont__driver_list.
+       (mwin__open_device): Assume arg PARAM is not NULL.  Push a newly
+       generated face to PARAM.
+       (mwin__realize_face): Fix setting of box colors.  Don't call hook
+       function here.
+       (mwin__draw_hline): New function.
+       (mwin__xft_close, mwin__xft_open, mwin__xft_get_metric)
+       (mwin__xft_render): Delete these function.
+
+       * internal-gui.h (struct MFrame): New member tick.
+       (struct MGlyphString): New member tick.
+       (mwin__draw_rect, mwin__draw_empty_boxes): Extern them.
+       (mwin__xft_open, mwin__xft_close, mwin__xft_get_metric)
+       (mwin__xft_render): Delete extern.
+
+       * fontset.c (mfont__lookup_fontset): Make the code simpler.
+       (mfontset): Always increment the reference count of returned
+       object.
+
+       * font-ft.c (mfont__ft_fini): Don't include <otf.h> here.
+       (MFTInfo): Moved to font.h.
+       (ft_iso8859_1_font_list): Delete this variable.
+       (set_font_info): Don't set font->property[MFONT_TYPE].
+       (set_font_info): Don't udpate ft_iso8859_1_font_list.
+       (add_font_info): Change type to void.
+       (fc_list): Change anme from xft_list.  Caller changed.  Include
+       FC_FOUNDRY and FC_PIXEL_SIZE in FcObjectSet.
+       (mfont__ft_driver): Change name from ft_driver.  Caller changed.
+       (ft_select): Check HAVE_FONTCONFIG instead of HAVE_XFT2.
+       (close_ft): Don't call mwin__xft_close.  Unref
+       ft_info->extra_info.
+       (ft_open): Don't setup ft_info->fontname.  Don't call
+       mwin__xft_open.
+       (ft_find_metric): Don't call mwin__xft_get_metric.
+       (ft_encode_char): Call rfont->driver->open instead of ft_open.
+       (ft_render): Don't check HAVE_XFT2.  Don't call mwin__xft_render.
+       (mfont__ft_init): Adjusted for new mfont__driver_list.
+       (mfont__ft_fini): Don't unref ft_iso8859_1_font_list.
+
+       * font.c (mfont__driver_list): Make it MPlist.
+       (mfont__init): Adjust initialization of mfont__driver_list.
+       (mfont__fini): Free mfont__driver_list.
+       (mfont__set_spec_from_face): Don't set spec->property[MFONT_TYPE].
+       (mfont__select): Adjusted for the new mfont__driver_list.
+
+       * font.h (enum MFontProperty): Delete MFONT_TYPE.
+       (mfont__drirver_list): Adjust prototype.
+       (MFTInfo): Move to here from fron.c.  Deleve member fontname.
+
+       * face.h (struct MFace): Delete member realized_face_list, add
+       member frame_list.
+       (struct MRealizedFace): Delete member need_update
+       andnofont_rface, add member non_ascii_list.
+       (mface__update_frame_face): Extern it.
+
+       * face.c (hline_prop_list, box_prop_list, noop_hook): New
+       variables.
+       (get_hline_create, get_box_create): New functions.
+       (find_realized_face): Cancel previous change.  Arg RFONT deleted.
+       Use memcmp.
+       (free_face): Cancep previous change.  Free face->frame_list.
+       (serialize_hline): Do nothing if hline->width is zero.
+       (serialize_box): Do nothing if box->width is zero.
+       (mface__init): Setup all properties of mface__default.
+       (mface__fini): Free hline_prop_list and box_prop_list.
+       (mface__realize): Cancel previous change.  Update
+       face->frame_list.  Setup rface->non_ascii_list.
+       (mface__for_chars): Update rface->non_ascii_list.
+       (mface__free_realized): Free rface->non_ascii_list.
+       (mface__update_frame_face): New function.
+       (mface): Initialize face->frame_list.
+       (mface_copy): Likewise.  Just copy MFACE_HLINE and MFACE_BOX
+       properties.
+       (mface_merge): Likewise.
+       (mface_put_prop): If key is Mhline or Mbox, get value by
+       get_hline_create or get_box_create respectively.
+       (mface_put_prop): Update frame->tick and call
+       mface__update_frame_face if necessary.
+       (mface_update): Do nothing if func is noop_hook.
+
+       * draw.c (render_glyphs): If a font is not found, use
+       mwin__draw_empty_boxes.
+       (alloc_gstring): Initialize gstring->tick.
+       (get_gstring): Check gstring->tick.
+
+2004-05-17  Kenichi Handa  <handa@m17n.org>
+
+       * face.c (find_realized_face): Return value changed.  If RFONT is
+       NULL, avoid unnecessary checking.
+       (free_face): Free face->realized_face_list.
+       (mface__realize): Adjusted for the change of find_realized_face.
+       If it returns a realized face that needs update, free it and
+       realize a new one.  Push a new realized face to
+       frame->realized_face_list instead of appending.
+       (mface__for_chars): Adjusted for the change of find_realized_face.
+       Short cut if the required font is in rface->ascii_rface.
+       (mface_put_prop): Free old value if necessary.  Set need_update
+       member of realized faces to 1.
+
+       * face.h (struct MFace): Delete member tick, add member
+       realized_face_list.
+       (struct MRealizedFace): Delete member tick, add member
+       need_update.
+
+2004-05-13  Kenichi Handa  <handa@m17n.org>
+
+       * m17n-X.c (mwin__xft_open): Destroy unnecessary patterns.
+
+2004-05-12  Kenichi Handa  <handa@m17n.org>
+
+       * internal-gui.h (mwin__xft_open): Arguemnt name changed.
+
+       * m17n-X.c (mwin__xft_open): Argument changed to fontname and
+       parse it XftNameParse.
+
+       * font-ft.c (MFTInfo) [HAVE_XFT2]: New member fontname.
+       (all_fonts_scaned): New variable.
+       (set_font_info): FAMILY may be Mnil.
+       (add_font_info): Argument changed.
+       (xft_list): Call add_font_info in it.
+       (ft_list): Likewise.
+       (ft_select): Make it work in the case family is Mnil.
+       (ft_open) [HAVE_XFT2]: Setup ft_info->fontname.
+       (mfont__ft_fini): Set all_fonts_scaned to 0.
+
+       * fontset.c (mfont__lookup_fontset): Don't repeatedly try a font
+       that is failed to open.
+
 2004-05-10  Kenichi Handa  <handa@m17n.org>
 
+       * m17n-X.c (mwin__xft_render): Don't use anti-alias if the
+       device's depth is 1 (i.e. monochrome).
+
        * Makefile.am (OPTIONAL_LD_FLAGS): Change the order of elements
        to work around the problem of libtool.