1. 14 May, 2008 40 commits
    • Glenn Morris's avatar
      Update for font-backend changes. · 2fc5063f
      Glenn Morris authored
      2fc5063f
    • Glenn Morris's avatar
      Regenerate. · 3d265861
      Glenn Morris authored
      3d265861
    • Glenn Morris's avatar
      Mark as part of the GNU C Library rather than of Emacs. · 4cec53bf
      Glenn Morris authored
      Re-fill permissions.
      4cec53bf
    • Miles Bader's avatar
      Merge from emacs--rel--22 · ecae6af9
      Miles Bader authored
      Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1159
      ecae6af9
    • Kenichi Handa's avatar
      131b3b11
    • Kenichi Handa's avatar
      (font-weight-table, font-slant-table) · 6e783e91
      Kenichi Handa authored
      (font-swidth-table): Declare them by defconst.  Change the format
      of elements.  Call internal-set-font-style-table after their
      declaration.
      (face-valid-attribute-values): Call font-family-list.  Get values
      for width, weight, and slant from font-xxx-table.
      6e783e91
    • Kenichi Handa's avatar
    • Kenichi Handa's avatar
      (setup-default-fontset): For kana, han, · e096e30e
      Kenichi Handa authored
      hangul, and cjk-misc, move an entry with font-spec at the end.
      (generate-fontset-menu): Exclue fontset-auto* from the list.
      e096e30e
    • Kenichi Handa's avatar
      8aeebac2
    • Kenichi Handa's avatar
      ("Chinese-GB", "Chinese-BIG5") · 11d95776
      Kenichi Handa authored
      ("Chinese-CNS", "Chinese-EUC-TW", "Chinese-GBK")
      ("Chinese-GB18030"): Set `iso639-language' property to `zh'.
      11d95776
    • Kenichi Handa's avatar
      40551685
    • Kenichi Handa's avatar
      789c1a0c
    • Kenichi Handa's avatar
      Regenerate. · b8bdd8c9
      Kenichi Handa authored
      b8bdd8c9
    • Kenichi Handa's avatar
      Don't handle --disable-font-backend. Don't print · 1ef37fa8
      Kenichi Handa authored
      a message about a font backend.
      1ef37fa8
    • Kenichi Handa's avatar
      (fonts_changed_p): Comment improved. · 3aa9f0c4
      Kenichi Handa authored
      3aa9f0c4
    • Kenichi Handa's avatar
      (detect_coding_iso_2022): Ignore a coding category that · c6b278e7
      Kenichi Handa authored
      has no corresponding coding system.
      c6b278e7
    • Kenichi Handa's avatar
      Throughout the file, delete all USE_FONT_BACKEND · 90546022
      Kenichi Handa authored
      conditionals.  Don't check enable_font_backend.  Delete all codes
      used only when USE_FONT_BACKEND is not defined.  Don't include
      ccl.h.
      (x_per_char_metric, x_encode_char): Deleted.
      (x_set_cursor_gc, x_set_mouse_face_gc): Don't set GCFont.
      (x_compute_glyph_string_overhangs): Adjusted for the change of
      `struct face'
      (x_draw_glyph_string_foreground)
      (x_draw_composite_glyph_string_foreground): Likewise.
      (x_draw_glyph_string): Likewise.  Use font->underline_position and
      font->underline_thickness.
      (x_new_font): Renamed from x_new_fontset2.
      (x_new_fontset, x_get_font_info, x_list_fonts): Deleted.
      (x_check_font): Call `check' method of a font driver.
      (x_font_min_bounds, x_compute_min_glyph_bounds, x_load_font)
      (x_query_font, x_get_font_repertory): Deleted.
      (x_find_ccl_program): Renamed and moved to xfont.c.
      (x_redisplay_interface): Adjusted for the change of `struct
      redisplay_interface'.
      90546022
    • Kenichi Handa's avatar
      f6bac558
    • Kenichi Handa's avatar
      (xftfont_list): Adjusted for the change of `list' · 3528e709
      Kenichi Handa authored
      callback function.
      (xftfont_match): Adjusted for the fontmat change of font-entity.
      (xftfont_open): Adjusted for the format change of font-entity and
      font-object.  Adjusted for the change of struct font.  Return a
      font-object.  Don't update dpyinfo->smallest_font_height and
      dpyinfo->smallest_char_width.
      (xftfont_close): Block input while calling XftFontClose.
      (xftfont_prepare_face): Don't block input while calling
      xftfont_get_colors.  Adjusted for the change of struct font.
      (xftfont_shape): Return value of error case fixed.
      3528e709
    • Kenichi Handa's avatar
      Include <stdlib.h> and "ccl.h". · f0c55750
      Kenichi Handa authored
      (struct xfont_info): New structure.
      (xfont_query_font): Deleted.
      (xfont_find_ccl_program): Renamed from x_find_ccl_program and
      moved from xterm.c.
      (xfont_driver): Adjusted for the change of struct font_driver.
      (compare_font_names): New function.
      (xfont_list_pattern): Sort font names case insensitively.  Make
      font_entity by calling font_make_entity.  Avoid auto-scaled fonts.
      (xfont_list): Return a list, not vector.
      (xfont_match): If the font doesn't have QCname property, generate
      a name from the other font properties.
      (xfont_open): Return a font-ojbect.  Adjusted for the change of
      struct font.  Get underline_thickness and underline_position from
      font property.  Don't update dpyinfo->smallest_font_height and
      dpyinfo->smallest_char_width.
      (xfont_close): Don't free struct font.
      (xfont_prepare_face): Adjusted for the change of struct font.
      (xfont_done_face): Deleted.
      (xfont_has_char): Adjusted for the change of struct font.
      (xfont_encode_char, xfont_draw): Likewise.
      (xfont_check): New function.
      f0c55750
    • Kenichi Handa's avatar
      Throughout the file, delete all USE_FONT_BACKEND · b51238f5
      Kenichi Handa authored
      conditionals.  Don't check enable_font_backend.  Delete all codes
      used only when USE_FONT_BACKEND is not defined.
      (xic_create_xfontset): Original code deleted and renamed from
      xic_create_xfontset2.  Use FRAME_FONT, not FRAME_FONT_OBJECT.
      (x_make_gc): Don't set GCFont in GCs.
      (Fx_create_frame) [USE_LUCID]: Set xlwmenu_default_font to a font
      opened by "fixed".
      (syms_of_xfns): Don't set get_font_info_func, load_font_func,
      find_ccl_program_func, query_font_func, set_frame_fontset_func,
      get_font_repertory_func.
      b51238f5
    • Kenichi Handa's avatar
      Throughout the file, delete all USE_FONT_BACKEND · 2dee4c0b
      Kenichi Handa authored
      conditionals.  Don't check enable_font_backend.  Delete all codes
      used only when USE_FONT_BACKEND is not defined.  Use
      FONT_XXX_NAME_NUMERIC instead of face_numeric_xxx.
      (QCfoundry, QCadstyle, QCregistry, QCspacing, QCsize, QCavgwidth)
      (Qp): Extern them.
      (clear_font_table, load_face_font, xlfd_lookup_field_contents):
      Deleted.
      (struct font_name): Deleted.
      (xlfd_numeric_value, xlfd_symbolic_value): Deleted.
      (compare_fonts_by_sort_order): New function.
      (xlfd_numeric_slant, xlfd_symbolic_slant, xlfd_numeric_weight)
      (xlfd_symbolic_weight, xlfd_numeric_swidth, xlfd_symbolic_swidth):
      Deleted.
      (Fx_family_fonts): Use font_list_entities, and sort fonts by
      compare_fonts_by_sort_order.
      (Fx_font_family_list): Call Ffont_family_list.
      (face_numeric_value, face_numeric_weight, face_numeric_slant)
      (face_numeric_swidth, face_symbolic_value, face_symbolic_weight)
      (face_symbolic_slant, face_symbolic_swidth)
      (split_font_name_into_vector, build_font_name_from_vector)
      (xlfd_fixed_p, xlfd_point_size, pixel_point_size)
      (font_rescale_ratio, split_font_name, build_font_name)
      (free_font_names, sort_fonts, x_face_list_fonts)
      (face_font_available_p, sorted_font_list, cmp_font_names)
      (font_list_1, concat_font_list, font_list, remove_duplicates):
      Deleted.
      (Fx_list_fonts): Use Ffont_list.
      (LFACE_AVGWIDTH): Deleted.
      (check_lface_attrs): Don't check LFACE_AVGWIDTH.  Check LFACE_FONT
      by FONTP.
      (lface_fully_specified_p): Don't check LFACE_AVGWIDTH.
      (set_lface_from_font_name): Delete it.
      (set_lface_from_font): Renamed from
      set_lface_from_font_and_fontset.  Caller changed.  Don't set
      LFACE_AVGWIDTH.  Use FONT_XXX_FOR_FACE to get a symbol suitable
      for face.
      (merge_face_vectors): Copy font-spec if necessary.  Clear
      properties of the font-spec if necessary.
      (merge_face_ref): Clear properties of the font-spec if necessary.
      (Finternal_set_lisp_face_attribute): Likewise.
      (set_font_frame_param): Use font_load_for_lface to load a
      font-object, and call Fmodify_frame_parameters with it.
      (x_update_menu_appearance): Don't check LFACE_AVGWIDTH.  Get XLFD
      font name by Ffont_xlfd_name.
      (Finternal_lisp_face_attribute_values): Don't check QCweight,
      QCslant, and QCwidth.
      (Fface_font): Get a font name from font->props[FONT_NAME_INDEX].
      (lface_same_font_attributes_p): Don't check LFACE_AVGWIDTH.
      Compare fonts by EQ.
      (lookup_non_ascii_face): Deleted.
      (face_for_font): The 2nd argument changed.
      (x_supports_face_attributes_p): Don't check LFACE_AVGWIDTH.  Check
      atomic font properties by case insensitive.
      (realize_non_ascii_face): Set face->overstrike correctly.
      (realize_x_face): Likewise.  Check if LFACE_FONT is a font_object.
      (dump_realized_face): Get font name from
      font->props[FONT_NAME_INDEX].  Don't print font_info_id.
      2dee4c0b
    • Kenichi Handa's avatar
      Throughout the file, delete all USE_FONT_BACKEND · 4039e20c
      Kenichi Handa authored
      conditionals.  Don't check enable_font_backend.  Delete all codes
      used only when USE_FONT_BACKEND is not defined.
      (handle_auto_composed_prop): Do nothing if it->f is not on a
      window system.  Check how many following characters can be
      displayed by the same font.
      (calc_pixel_width_or_height): Type of the 4th arg is changed to
      'struct font *'.
      (get_char_face_and_encoding): Assign the whole encoding task to
      the `encode-char' method of a font driver.
      (fill_composite_glyph_string): Adjusted for the change of `struct
      face' and `struct glyph_string'.
      (fill_glyph_string): Likewise.
      (get_per_char_metric): Arguments changed.
      (x_get_glyph_overhangs): Adjusted for the change of `struct face'
      and `struct glyph_string'.
      (produce_stretch_glyph, calc_line_height_property)
      (x_produce_glyphs): Likewise.
      4039e20c
    • Kenichi Handa's avatar
      Include font.h. · 2a7b7982
      Kenichi Handa authored
      (print_object): Handle font-related objects.
      2a7b7982
    • Kenichi Handa's avatar
      (enum pvec_type): New member PREV_FONT. · f85064bd
      Kenichi Handa authored
      (Fassoc_string): EXFUN it.
      f85064bd
    • Kenichi Handa's avatar
      (image_ascent): Don't include "charset.h". Include · 3dcc8b84
      Kenichi Handa authored
      "character.h" and "font.h".
      3dcc8b84
    • Kenichi Handa's avatar
      Throughout the file, delete all USE_FONT_BACKEND · e0c8ad78
      Kenichi Handa authored
      conditionals.  Don't check enable_font_backend.  Delete all codes
      used only when USE_FONT_BACKEND is not defined.
      (x_set_font): Call x_new_font, not x_new_fontset2.
      (x_set_font_backend): Use FRAME_FONT macro to check if a font is
      already set for the frame.
      e0c8ad78
    • Kenichi Handa's avatar
      (ftxfont_list): Return a list, not vector. · a952e54c
      Kenichi Handa authored
      (ftxfont_open): Return a font-ojbect.  Adjusted for the change of
      struct font.  Get underline_thickness and underline_position from
      font property.  Don't update dpyinfo->smallest_font_height and
      dpyinfo->smallest_char_width.
      (ftxfont_close): Don't decrese FRAME_X_DISPLAY_INFO (f)->n_fonts.
      (ftxfont_draw): Adjusted for the change of struct font.
      a952e54c
    • Kenichi Handa's avatar
      (ftfont_pattern_entity): Argument FRAME removed. Make · 42984a74
      Kenichi Handa authored
      a font-entity by font_make_entity.  Use font_intern_prop instead
      of intern_downcase.  Use FONT_SET_STYLE to set a style-related
      font property.  If a font is scalable, set avgwidth property to 0.
      Set font-entity property by font_put_extra.
      (ftfont_list_generic_family): Argument SPEC and REGISTRY removed.
      (ffont_driver): Adjusted for the change of struct font_driver.
      (ftfont_spec_pattern): New function.
      (ftfont_list): Return a list, not vector.
      (ftfont_match): Use ftfont_spec_pattern to get a pattern.
      (ftfont_list_family): Don't downcase names.
      (ftfont_free_entity): Deleted.
      (ftfont_open): Return a font-ojbect.  Adjusted for the change of
      struct font.  Get underline_thickness and underline_position from
      font property.  Don't update dpyinfo->smallest_font_height and
      dpyinfo->smallest_char_width.
      (ftfont_close): Don't free `struct font'.
      (ftfont_has_char): Adjusted for the format change of font-entity.
      (ftfont_encode_char, ftfont_text_extents): Likewise.
      42984a74
    • Kenichi Handa's avatar
      Delete USE_FONT_BACKEND conditional. · 38548f60
      Kenichi Handa authored
      38548f60
    • Kenichi Handa's avatar
      (internal_equal): Handle PREV_FONT. · f6204a24
      Kenichi Handa authored
      f6204a24
    • Kenichi Handa's avatar
      Throughout the file, delete all USE_FONT_BACKEND · 581f7ac7
      Kenichi Handa authored
      conditionals.  Don't check enable_font_backend.  Delete all codes
      used only when USE_FONT_BACKEND is not defined.
      (get_font_info_func, list_font_func, load_font_func)
      (query_font_func, set_frame_fontset_func, find_ccl_program_func)
      (get_font_repertory_func): Delete them.
      (FONTSET_SPEC, FONT_DEF_NEW, FONT_DEF_SPEC, FONT_DEF_ENCODING)
      (FONT_DEF_REPERTORY, RFONT_DEF_FACE, RFONT_DEF_SET_FACE)
      (RFONT_DEF_FONT_DEF, RFONT_DEF_SPEC, RFONT_DEF_REPERTORY)
      (RFONT_DEF_OBJECT, RFONT_DEF_SET_OBJECT, RFONT_DEF_SCORE)
      (RFONT_DEF_SET_SCORE, RFONT_DEF_NEW): New macros.
      (fontset_compare_rfontdef): New function.
      (reorder_font_vector): Remove the argument CHARSET-ID.  Sort
      ront-defs by qsort.  Adjusted for the change of font-group vector.
      (load_font_get_repertory): Deleted.
      (fontset_find_font): Use new macros to ref/set elements of
      font-def and rfont-def.
      (fontset_font): Fix the timing of remembering that no font for C.
      (free_face_fontset): Do nothing if the face has no fontset.
      (face_suitable_for_char_p): Use new macros to ref/set elements of
      rfont-def.
      (face_for_char): Likewise.  Call face_for_char with font_object.
      (fs_load_font): Delete.  Delete #pragma surrounding it.
      (fs_query_fontset): Use strcasecmp instead of strcmp.
      (generate_ascii_font_name): Adjusted for the format change of
      font-spec.
      (Fset_fontset_font): Likewise.  Use new macros to set elements of
      font-def.
      (Fnew_fontset): Use font_unparse_xlfd to generate
      FONTSET_ASCII (fontset).
      (new_fontset_from_font_name): Deleted.
      (fontset_from_font): Renamed from new_fontset_from_font.  Check if
      a fontset is already created for the font.  FIx updating of
      Vfontset_alias_alist.
      (fontset_ascii_font): Deleted.
      (Ffont_info): Adjusted for the format change of font-spec.
      (Finternal_char_font): Likewise.
      (Ffontset_info): Likewise.
      (syms_of_fontset): Don't check load_font_func.
      581f7ac7
    • Kenichi Handa's avatar
      (struct font_info): Delete it. Most memnbers go to · f36f5a93
      Kenichi Handa authored
      struct font.
      (FONT_ENCODING_NOT_DECIDED): Moved to font.h.
      (enum FONT_SPEC_INDEX): Delete it.
      (font_info, list_fonts_func, load_font_func, query_font_func)
      (set_frame_fontset_func, find_ccl_program_func)
      (get_font_repertory_func, new_fontset_from_font_name): Delete
      externs.
      (fontset_from_font_name): Extern it.
      (FS_LOAD_FONT, FONT_INFO_ID, FONT_INFO_FROM_ID)
      (FONT_INFO_FROM_FACE): Deleted.
      (face_for_font): Adjust prototype.
      f36f5a93
    • Kenichi Handa's avatar
      Include <strings.h>. · 35027d0c
      Kenichi Handa authored
      (enable_font_backend): Delete it.
      (Qfont_spec, Qfont_entity, Qfont_object): New variables.
      (CHECK_VALIDATE_FONT_SPEC): Delete it.
      (PT_PER_INCH, POINT_TO_PIXEL, PIXEL_TO_POINT): Moved to font.h.
      (null_string): Delete it.
      (null_vector): Make it static.
      (font_family_alist): Delete it.
      (Qnormal): Extern it.
      (QCextra, QClanguage): Delete it.
      (QClang, QCavgwidth, QCfont_entity, QCfc_unknown_spec): New
      variables.
      (font_make_spec, font_make_entity, font_make_object)
      (font_intern_prop): Renamed from intern_downcase.  Don't downcase
      the string.  Callers changed.
      (font_pixel_size): Adjusted for the format change of font-related
      objects.
      (prop_name_to_numeric, prop_numeric_to_name): Delete them.
      (font_style_to_value, font_style_symbolic): New function.
      (build_font_family_alist): Delete it.
      (font_registry_charsets): Use Fassoc_string instead of
      assq_no_quit.
      (font_prop_validate_symbol): Don't return null_string.
      (font_prop_validate_style): Adjusted for the change of
      style-related values in a font vector.
      (font_property_table): Delete entries for QClangauge and
      QCantialias, add entries for QCavgwidth.
      (get_font_prop_index): Delete the 2nd argument FROM.
      (font_prop_validate): Arguments changed.
      (font_put_extra): Adjusted for the change of font-related objects.
      (font_expand_wildcards, font_parse_xlfd, font_unparse_xlfd)
      (font_parse_fcname, font_unparse_fcname)
      (font_prepare_composition): Likewise.
      (font_parse_family_registry): Renamed from font_merge_old_spec.
      (otf_open): Delete the 1st arg entity.
      (font_otf_capability): Adjusted for the above change.
      (font_score): New arg alternate_families.  Adjusted for the change
      of font-related objects.
      (font_sort_entites): New arg best_only.
      (font_symbolic_weight, font_symbolic_slant, font_symbolic_width):
      Delete them.
      (font_match_p): Check alternate families.
      (font_find_object): Delete it.
      (font_check_object): New function.
      (font_clear_cache): Adjusted for the change of font-related
      objects.
      (font_delete_unmatched): New arg.
      (font_list_entities): Call font_driver->list with a spec that
      doesn't specify style-related properties.
      (font_matching_entity): Arguments changed.  Caller changed.
      (font_open_entity): Adjusted for the change of font-related
      objects.
      (font_close_object, font_has_char, font_encode_char)
      (font_get_name, font_get_spec): Likewise.
      (font_spec_from_name, font_clear_prop, font_update_lface): New
      functions.
      (font_find_for_lface, font_open_for_lface, font_load_for_lface):
      (font_prepare_for_face, font_done_for_face, font_open_by_name)
      (font_at): Adjusted for the change of font-related objects.
      (font_range): New function.
      (Ffontp, Ffont_spec, Ffont_get, Ffont_put, Flist_fonts)
      (Ffont_xlfd_name): Adjusted for the change of font-related
      objects.
      (Fcopy_font_spec, Fmerge_font_spec): New function.
      (Ffont_family_list): Renamed from list-families.
      (Finternal_set_font_style_table): Arguments changed.
      (Ffont_fill_gstring, Ffont_shape_text, Fopen_font)
      (Ffont_drive_otf, Fquery_font, Ffont_match_p): Adjusted for the
      change of font-related objects.
      (syms_of_font): Delete "ifdef USE_FONT_BACKEND".  DEFSYM new
      symboles.
      35027d0c
    • Kenichi Handa's avatar
      (Qfont_spec, Qfont_entity, Qfont_object): Extern them. · 875003e5
      Kenichi Handa authored
      (enum font_property_index): New members FONT_DPI_INDEX,
      FONT_SPACING_INDEX, FONT_AVGWIDTH_INDEX, FONT_NAME_INDEX,
      FONT_FULLNAME_INDEX, FONT_FILE_INDEX, FONT_FORMAT_INDEX,
      FONT_OBJECT_MAX.  Delete FONT_FRAME_INDEX.
      (FONT_WEIGHT_NUMERIC, FONT_SLANT_NUMERIC, FONT_WIDTH_NUMERIC)
      (FONT_WEIGHT_SYMBOLIC, FONT_SLANT_SYMBOLIC, FONT_WIDTH_SYMBOLIC)
      (FONT_WEIGHT_FOR_FACE, FONT_SLANT_FOR_FACE, FONT_WIDTH_FOR_FACE)
      (FONT_WEIGHT_NAME_NUMERIC, FONT_SLANT_NAME_NUMERIC)
      (FONT_WIDTH_NAME_NUMERIC, FONT_SET_STYLE): New macros.
      (struct font_spec, struct font_entity): New structs.
      (FONT_ENCODING_NOT_DECIDED): Moved from fontset.h.
      (struct font): Many members from old "struct font_info" moved to
      here.  Members font and entity deleted.
      (FONT_SPEC_P, FONT_ENTITY_P, FONT_OBJECT_P, FONTP): Modified for
      the new font-related objects.
      (CHECK_FONT_SPEC, CHECK_FONT_ENTITY, CHECK_FONT_OBJECT)
      (CHECK_FONT_GET_OBJECT): Likewise.
      (XFONT_SPEC, XFONT_ENTITY, XFONT_OBJECT, XSETFONT): New macros.
      (PT_PER_INCH, POINT_TO_PIXEL, PIXEL_TO_POINT): Moved from font.h.
      (struct font_driver): New members case_sensitive anc check.  Type
      of the member list and open changed.
      (enable_font_backend, font_symbolic_weight, font_symbolic_slant)
      (font_symbolic_width, font_find_object, font_get_spec)
      (font_set_lface_from_name): Delete extern.
      (Fcopy_font_spec, Fmerge_font_spec, Ffont_family_list): New
      EXFUNs.
      875003e5
    • Kenichi Handa's avatar
      (enable_font_backend): Delete extern. · 5a51a144
      Kenichi Handa authored
      (main): Don't set enable_font_backend.  Don't check the command
      line argument "-disable-font-backend".
      5a51a144
    • Kenichi Handa's avatar
      (struct glyph_string): Change type of `font' to · 93cf902a
      Kenichi Handa authored
      `struct font *'.
      (struct glyph_string): New member underline_position and
      underline_thickness.
      (enum lface_attribute_index): Remove LFACE_AVGWIDTH_INDEX.
      (struct face): Change type of `font' to `struct font *'.  Remove
      members `font_name', `font_info_id'.
      (per_char_metric, encode_char): Delete externs.
      (calc_pixel_width_or_height): Adjust the prototype.
      93cf902a
    • Kenichi Handa's avatar
      Throughout the file, delete all USE_FONT_BACKEND · dd5e1ed4
      Kenichi Handa authored
      conditionals.  Don't check enable_font_backend.  Delete all codes
      used only when USE_FONT_BACKEND is not defined.
      dd5e1ed4
    • Kenichi Handa's avatar
      (Vcharset_non_preferred_head): New variable. · 6a9c90ec
      Kenichi Handa authored
      (Vcurrent_iso639_language): New variable.
      (syms_of_charset): Declare it as a Lisp variable.
      (char_charset): Don't check non preferred charsets.  As a last
      resort, return charset_unicode.
      (Fset_charset_priority): Update Vcharset_non_preferred_head.
      6a9c90ec
    • Kenichi Handa's avatar
      (Vcharset_non_preferred_head) · 370cefff
      Kenichi Handa authored
      (Vcurrent_iso639_language): Extern them.
      370cefff