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