File: CHANGELOG.md

package info (click to toggle)
ruby-unicode-display-width 3.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 148 kB
  • sloc: ruby: 278; makefile: 3
file content (299 lines) | stat: -rw-r--r-- 7,506 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
# CHANGELOG

## 3.2.0

- Unicode 17.0

## 3.1.5

- Cache Emoji support level for performance reasons #30, patch by @Earlopain:

## 3.1.4

- Fix that skin tone modifiers were ignored when used in a non-ZWJ sequence
  context (= single emoji char + modifier) #29
- Add more docs and specs about modifier handling

## 3.1.3

Better handling of non-UTF-8 strings, patch by @Earlopain:

- Data with *BINARY* encoding is interpreted as UTF-8, if possible
- Use `invalid: :replace` and `undef: :replace` options when converting to UTF-8

## 3.1.2

- Performance improvements

## 3.1.1

- Performance improvements

## 3.1.0

**Improve Emoji support:**

- Emoji modes: Differentiate between well-formed Emoji (`:possible`) and any
  ZWJ/modifier sequence (`:all`). The latter is more common and more efficient
  to implement.
- Unify `:rgi_{fqe,mqe,uqe}` options to just `:rgi` to keep things simpler (corresponds to
  the former `:rgi_uqe` option). Most terminals that want to support the RGI set
  will probably want to catch Emoji sequences with missing VS16s.
- Add new `:all_no_vs16` and `:rgi_at` modes to be able to support some terminals
  that needs these quirks
- Add alias `emoji: :auto` for `emoji: true` and `emoji: :none` for `emoji: false`
- `:auto` mode: Only consider terminal cells when recommending Emoji support level
  (Emoji themselves might display differently)
- `:auto` mode: Set default Emoji mode for unknown/unsupported terminals to `:none`
- Rename `:basic` mode to `:vs16`

## 3.0.1


- Add WezTerm and foot as good Emoji terminals

## 3.0.0

**Rework Emoji support:**

- Emoji widths are now enabled by default
- Only reduce Emoji width to 2 when RGI Emoji detected (configurable)
- VS16 turns Emoji characters of width 1 into full-width
- Please note that Emoji parsing has a notable impact on performance.
  You can use the `emoji: false` option to disable Emoji adjustments
- Tries to detect terminal's Emoji support level automatically (from ENV vars)

**Index fixes and updates:**

- Private-use characters are considered ambiguous (were given width 1 before)
- Fix that a few zero-width ignorable codepoints from recent Unicode were missing
- Consider the following separators to be zero-width:
  - U+2028 - LINE SEPARATOR - Zl
  - U+2029 - PARAGRAPH SEPARATOR - Zp

**Other:**

- Add keyword arguments to `Unicode::DisplayWidth.of`. If you are using a hash
  with overwrite values as third parameter, be sure to put it in curly braces.
- Using third parameter or explicit hash as fourth parameter is deprecated,
  please migrate to the keyword arguments API
- Gem raises `ArgumentError` for ambiguous values other than 1 or 2
- Performance optimizations
- Require Ruby 2.5

## 2.6.0

- Unicode 16

## 2.5.0

- Unicode 15.1

## 2.4.2

More performance improvements:

- Optimize lookup of first 4096 codepoints
- Avoid overwrite lookup if no overwrites are set

## 2.4.1

- Improve general performance!
- Further improve performance for ASCII strings

*You should really upgrade - it's much faster now!*

## 2.4.0
- Improve performance for ASCII-only strings, by @fatkodima
- Require Ruby 2.4

## 2.3.0

- Unicode 15.0

## 2.2.0

- Add *Hangul Jamo Extended-B* block to zero-width chars, thanks @ninjalj #22

## 2.1.0

- Unicode 14.0

## 2.0.0

Add Support for Ruby 3.0

### Breaking Changes

Some features of this library were marked deprecated for a long time and have been removed with Version 2.0:

- Aliases of display\_width (…\_size, …\_length) have been removed
- Auto-loading of string core extension has been removed:

If you are relying on the `String#display_width` string extension to be automatically loaded (old behavior), please load it explicitly now:

```ruby
require "unicode/display_width/string_ext"
```

You could also change your `Gemfile` line to achieve this:

```ruby
gem "unicode-display_width", require: "unicode/display_width/string_ext"
```

## 2.0.0.pre2

- Update 2.0 branch to Unicode 13

## 2.0.0.pre1

Will be published as non-pre version on rubygems.org when Ruby 3.0 is released (December 2020)

- Introduce new class-based API, which remembers your string-width configuration. See README for details.
- Remove auto-loading of string extension
  - You can: `require "unicode/display_width/string_ext"` to continue to use the string extension
  - The manual opt-out `require "unicode/display_width/no_string_ext"` is not needed anymore and will
    issue a warning in the future
- Remove (already deprecated) String#display_size and String#display_width aliases

Refactorings / Internal Changes:

- Freeze string literals
- The Unicode::DisplayWidth now is class, instead of a module, this enables the new config-object API

## 1.8.0

- Unicode 14.0 (last release of 1.x)

## 1.7.0

- Unicode 13

## 1.6.1

- Fix that ambiguous and overwrite options where ignored for emoji-measuring

## 1.6.0

- Unicode 12.1

## 1.5.0

- Unicode 12

## 1.4.1

- Only bundle required lib/* and data/* files in actual rubygem, patch by @tas50

## 1.4.0

- Unicode 11

## 1.3.3

- Replace Gem::Util.gunzip with direct zlib implementation
  This removes the dependency on rubygems, fixes #17

## 1.3.2

- Explicitly load rubygems/util, fixes regression in 1.3.1 (autoload issue)

## 1.3.1

- Use `Gem::Util` for `gunzip`, removes deprecation warning, patch by @Schwad

## 1.3.0

- Unicode 10

## 1.2.1

- Fix bug that `emoji: true` would fail for emoji without modifier

## 1.2.0

- Add zero-width codepoint ranges: U+2060..U+206F, U+FFF0..U+FFF8, U+E0000..U+E0FFF
- Add full-witdh codepoint ranges: U+3400..U+4DBF, U+4E00..U+9FFF, U+F900..U+FAFF, U+20000..U+2FFFD, U+30000..U+3FFFD
- Experimental emoji support using the [unicode-emoji](https://github.com/janlelis/unicode-emoji) gem
- Fix minor bug in index compression scheme

## 1.1.3

- Fix that non-UTF-8 encodings do not throw errors, patch by @windwiny

## 1.1.2

- Reduce memory consumption and increase performance, patch by @rrosenblum

## 1.1.1

- Always load index into memory, fixes #9

## 1.1.0

- Support Unicode 9.0

## 1.0.5

- Actually include new index from 1.0.4

## 1.0.4

- New index format (much smaller) and internal API changes
- Move index generation to a builder plugin for the unicoder gem
- No public API changes

## 1.0.3

- Avoid circular dependency warning

## 1.0.2

- Fix error that gemspec might be invalid under some circumstances (see gh#6)

## 1.0.1

- Inofficially allow Ruby 1.9

## 1.0.0

- Faster than 0.3.1
- Advanced determination of character width
- This includes: Treat width of most chars of general categories (Mn, Me, Cf) as 0
- This includes: Introduce list of characters with special widths
- Allow custom overrides for specific codepoints
- Set required Ruby version to 2.0
- Add NO_STRING_EXT mode to disable monkey patching
- Internal API & index format changed drastically
- Remove require 'unicode/display_size' (use 'unicode/display_width' instead)

## 0.3.1

- Faster than 0.3.0
- Deprecate usage of aliases: String#display_size and String#display_length
- Eliminate Ruby warnings (@amatsuda)

## 0.3.0

- Update EastAsianWidth from 7.0 to 8.0
- Add rake task to update EastAsianWidth.txt
- Move code to generate index from library to Rakefile
- Update project's meta files
- Deprecate requiring 'unicode-display_size'

## 0.2.0

- Update EastAsianWidth from 6.0 to 7.0
- Don't build index table automatically when not available
- Don't include EastAsianWidth.txt in gem (only index)


## 0.1.0

- Fix github issue #1


## 0.1.0

- Initial release