Explain vc-BACKEND-root in Commentary; nfc.
[emacs.git] / etc / NEWS.unicode
blob1a03499ff61e4c140fbc692ed921ad0c52e9944b
1 GNU Emacs NEWS -- history of user-visible changes.
3 Copyright (C) 2007, 2008 Free Software Foundation, Inc.
4 Copyright (C) 2007, 2008
5   National Institute of Advanced Industrial Science and Technology (AIST)
6   Registration Number H14PRO021
7 See the end of the file for license conditions.
9 This file is about changes in the Emacs "unicode" branch.
12 * Changes in Emacs Unicode
14 ** The Emacs character set is now a superset of Unicode.  
15 (It has about four times the code space, which should be plenty).
17 The internal encoding used for buffers and strings is now
18 Unicode-based and called `utf-8-emacs'.  utf-8-emacs is backwards
19 compatible with the UTF-8 encoding of Unicode.  The `emacs-mule'
20 coding system can still read and write data in the old internal encoding.
22 Since the internal encoding is also used by default for byte-compiled
23 files -- i.e. the normal coding system for byte-compiled Lisp files is
24 now utf-8-Emacs -- Lisp containing non-ASCII characters which is
25 compiled by Emacs 23 can't be read by earlier versions of Emacs.  Files
26 compiled by Emacs 20, 21, or 22 are loaded correctly as emacs-mule
27 (whether or not they contain multibyte characters), which makes loading
28 them somewhat slower than Emacs 23-compiled files.  Thus it may be worth
29 recompiling existing .elc files which don't need to be shared with older
30 Emacsen.
32 ** There are assorted new coding systems/aliases -- see M-x list-coding-systems.
34 ** New charset implementation with many new charsets.
35 See M-x list-character-sets.  New charsets can be defined conveniently
36 as tables of unicodes.
38 The dimension of a charset is now 1, 2, 3, or 4, and the size of each
39 dimension is no longer limited to 94 or 96.
41 A dynamic charset priority list is used to infer the charset of
42 characters for display.
44 ** New minor mode Auto Composition Mode composes characters automatically
45 when they are displayed.  This mode is globally on by default.
47 ** Emacs now supports local fonts (fonts installed in the same machine
48 as Emacs is running) by freetype and fontconfig libraries.  On X, they
49 are derived via Xft library with antialias support.  Fontconfig-like
50 font names (e.g. monospace-12) are also accepted.
52 ** New language environments Chinese-GBK, Chinese-GB18030, Khmer,
53 TaiViet.
55 ** The following facilities are obsolete:
57 Minor modes: unify-8859-on-encoding-mode, unify-8859-on-decoding-mode
60 * Lisp changes in Emacs Unicode
62 ** Character code, representation, and charset changes.
64 Now character code space is 0x0..0x3FFFFF with no gap.  Among them,
65 characters of code 0x0..0x10FFFF are Unicode characters of the same
66 code points.  Characters of code 0x3FFF80..0x3FFFFF are raw 8-bit bytes.
68 Generic characters no longer exist.  
70 In buffer and string, characters are represented by UTF-8 byte
71 sequence in a multibyte buffer/string.
73 The concept of charset is changed.  A single character may belong to
74 multiple charset (e.g. a-grave (U+00E0) belongs to charsets unicode,
75 iso-8859-1, iso-8859-3, and etc).
77 *** The new function `characterp' returns t if and only if the argument
78 is a character.
80 *** The new function `max-char' returns the maximum character code
81 (currently it is #x3FFFFF).
83 *** The functions `encode-char' and `decode-char' now accept any
84 character sets.
86 *** The function `define-charset' now accepts a completely different
87 form of arguments (old-style arguments still work).
89 *** The new function `define-charset-alias' defines an alias of a charset.
91 *** The value of the function `char-charset' depends on the current
92 priorities of charsets.
94 *** The new function `charset-priority-list' returns the list of
95 charsets ordered by priority.
97 *** The new function `set-charset-priority' sets priorities of charsets.
99 *** The new function `unibyte-charset' returns the current unibyte
100 charset.  The unibyte charset determines how unibyte/multibyte
101 conversion is done.
103 *** The new function `set-unibyte-charset' sets the unibyte charset.
105 *** The new function `unibyte-string' make a unibyte string from bytes.
107 ** Code conversion changes
109 *** The new function `define-coding-system' should be used to define a
110 coding system instead of `make-coding-system' (which is obsolete now).
112 *** The functions `encode-coding-region' and `decode-coding-region'
113 have an optional 4th argument to specify where the result of
114 conversion should go.
116 *** The functions `encode-coding-string' and `decode-coding-string'
117 have an optional 4th argument specifying a buffer to store the result
118 of conversion.
120 *** The new function `with-coding-priority' executes the body part with
121 the specified coding system priority order.
123 *** The new function `check-coding-systems-region' checks if the text
124 in the region is encodable by the specified coding systems.
126 *** The new function `coding-system-aliases' returns a list of aliases
127 of a coding system.
129 *** The new function `coding-system-charset-list' returns a list of
130 charsets supported by a coding system.
132 *** The new function `coding-system-priority-list' returns a list of
133 coding systems ordered by their priorities.
135 *** Thew new function `set-coding-system-priority' sets priorities of
136 coding systems.
138 ** Composition changes
140 *** New functions and variables `auto-composition-mode' and
141 `global-auto-composition-mode' toggles the new minor mode Auto
142 Composition Mode locally and globally.
144 *** New variable `auto-composition-function' is a function used in
145 Auto Composition Mode to compose characters.  The default value is the
146 function `auto-compose-chars'.
148 ** Font Backend changes.
150 *** New frame parameter `font-backend' specifies a list of
151 font-backends supported by the frame's graphic device.  On X, they are
152 currently `x' and `xft'.
154 *** New function `fontp' checks if the argument is a font-spec
155 or font-entity.
157 *** New function `font-spec' creates a new font-spec object.
159 *** New function `font-get' returns a font property value.
161 *** New function `font-put' sets a font property value.
163 *** New function `list-fonts' returns a list of font-entities matching
164 the given specification.
166 *** New function `list-families' returns a list of family names of
167 available fonts.
169 *** New function `font-font' returns a font-entity best matching with
170 the given specification.
172 *** New function `font-xlfd-name' returns an XLFD name of a given font
173 (font-spec, font-entity, or font-object).
175 *** New function `clear-font-cache' clears all font caches.
177 ** The function get-char-code-property now accepts many Unicode base
178 character properties.  They are `name', `general-category',
179 `canonical-combining-class', `bidi-class', `decomposition',
180 `decimal-digit-value', `digit-value', `numeric-value', `mirrored',
181 `old-name', `iso-10646-comment', `uppercase', `lowercase', and
182 `titlecase'.
184 ** The new function `define-char-code-property' defines a character
185 code property.
187 ** The new function `char-code-property-description' returns the
188 description string of a character code property.
190 *** The new variable `find-word-boundary-function-table' is a
191 char-table of functions to search for a word boundary.
193 *** The new variable `char-script-table' is a char-table of script names.
195 *** The new variable `char-width-table' is a char-table of character widths.
197 *** The new variable `print-charset-text-property' controls how to
198 handle `charset' text property on printing a string.
200 *** The new variable `printable-chars' is a char-table defining if a
201 character is printable or not.
203 *** The new function `robin-define-package' defines a Robin package,
204 which is an input method system different from Quail.
206 *** The new function `robin-modify-package' modifies an existing Robin package.
208 *** The new function `robin-use-package' start using a Robin package
209 as an input method.
211 ** The functions `modify-syntax-entry' and `modify-category-entry' now
212 accepts a cons of characters as the first argument, and modify all
213 entries in that range of characters.
215 ** The function `set-fontset-font' now accepts a script name as the
216 second argument, and has an optional 5th argument to control how to
217 set the font.
219 ** The functions `char-bytes', `chars-in-region', `set-coding-priority',
220 `make-coding-system', and `char-valid-p' are now obsolete.
223 * Incompatible Lisp changes
225 ** The behavior of map-char-table has changed.  It may call the
226 specified function with a cons (FROM . TO) as a key if characters in
227 that range have the same value.
229 ** The value of the function `charset-id' is now always 0.
231 ** The functions `register-char-codings' and `coding-system-spec' are deleted.
233 ** Many codepage related functions are removed.  They are:
234   cp-make-coding-systems-for-codepage, cp-charset-for-codepage,
235   cp-language-for-codepage, cp-offset-for-codepage,
236   cp-supported-codepages
237 You don't need them anymore because coding systems created by these
238 functions are supported from the start now.
241 ----------------------------------------------------------------------
242 This file is part of GNU Emacs.
244 GNU Emacs is free software; you can redistribute it and/or modify
245 it under the terms of the GNU General Public License as published by
246 the Free Software Foundation; either version 2, or (at your option)
247 any later version.
249 GNU Emacs is distributed in the hope that it will be useful,
250 but WITHOUT ANY WARRANTY; without even the implied warranty of
251 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
252 GNU General Public License for more details.
254 You should have received a copy of the GNU General Public License
255 along with GNU Emacs; see the file COPYING.  If not, write to the
256 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
257 Boston, MA 02110-1301, USA.
260 Local variables:
261 mode: outline
262 paragraph-separate: "[  \f]*$"
263 end:
265 arch-tag: e21801b9-0724-4cda-8c07-7d60bf3db3fd