Commit Graph

15 Commits

Author SHA1 Message Date
Minh Nguyễn
e6c15d0f6f Upright CJK characters in vertically-oriented labels (#7114)
CJK characters and adjacent punctuation now remain upright in vertically oriented labels that have line placement.

Fixes #1682.
2017-02-10 18:57:48 -06:00
Konstantin Käfer
62ea1f2185 [core] remove trailing whitespace, add trailing newlines, add space after // 2017-01-27 11:44:16 +01:00
Chris Loer
d5b878a553 Small line breaking improvements based on testing with Chinese data:
- Put "breakable" punctuation (such as a hyphen) on the line that starts the break, not the line after the break.
- Process all characters with the line breaking algorithm, even if we don't have glyphs for them. Some fonts have glyph-less breakable characters (we end up treating them similarly to a "zero-width space").
- Don't include trailing white space in raggedness calculations
- Make the "favor short final lines" rule more aggressive (unlike the other changes, this one is purely an aesthetic choice)
2017-01-05 10:22:53 -08:00
Chris Loer
12a9932ebc Port raggedness-minimizing line breaking from gl-js. 2017-01-05 10:22:53 -08:00
Chris Loer
35ccb01dbd Render newlines in labels even if there's nothing else on the line. 2017-01-05 10:22:53 -08:00
Chris Loer
f68449aeb8 Cleaning up line breaking code.
* Don't include trailing spacing (as opposed to whitespace) in lineLength
* Modify BiDi interface to require initial bidi layout and linebreaking to happen in one call.
* Code style changes suggested by @kkaefer
2017-01-05 10:22:53 -08:00
Chris Loer
5f29c3ba26 [core] Full support for line breaking bidirectional text using ICU bidi functionality.
- Trim whitespace from labels before determining their max-width for alignment.
 - Fix crash on labels that contain lines with only a single character of whitespace.
2016-11-30 11:54:08 -08:00
Konstantin Käfer
e76de05402 [build] move logging to util 2016-11-22 20:58:51 +01:00
Chris Loer
d4fc66af39 [core] Add minimal line breaking support for RTL text. 2016-11-17 14:33:03 -08:00
Chris Loer
40b0c8d076 [core] Use UTF-16 instead of UTF-32 for label features to avoid extra conversions and reduce in-memory size.
Continue to use uint32 as glyph ID to maintain Glyph PBF, even though we're only using 16 bits of that uint32.
Use std::codecvt instead of boost::unicode_iterator for UTF8->UTF16 conversions.
2016-11-17 14:33:03 -08:00
Minh Nguyễn
dbd2235744 [core] Line-break ideographic text by character (#6828)
* [core] Line-break ideographic text by character

Allow a line break to be inserted after any supported Chinese, Japanese, or Yi character in a point-placed label. Balance the lines unless non-ideographic text such as Latin letters are present.

Fixes #1223.

* [core] Moved more character classing into util::i18n

* [core] Detect character properties by Unicode block

* [test] Reenabled ideographic breaking tests
2016-11-14 14:53:21 -08:00
John Firebaugh
d58bee6d90 [core] Avoid unnecessary copies in GlyphSet::insert 2016-07-04 17:35:20 -07:00
John Firebaugh
9330d674a9 [core] Use geometry.hpp's point 2016-05-05 11:30:53 -07:00
John Firebaugh
ce2a06e677 [core] Privatize math.hpp and vec.hpp 2016-05-05 11:16:57 -07:00
John Firebaugh
0c5d805bf9 [core] FontStack ⇢ GlyphSet (#4803)
A font stack is an array of font names. This is not that.
2016-04-22 13:28:03 -07:00