Commit Graph

67 Commits

Author SHA1 Message Date
Patric Stout 81d4fa6999 Feature: drop ICU-lx in favour of directly interfacing with harfbuzz
This means we have RTL support again with ICU 58+. It makes use of:
- ICU for bidi-itemization
- ICU for script-itemization
- OpenTTD for style-itemization
- harfbuzz for shaping
2023-05-01 22:17:56 +02:00
Patric Stout 9cb60768fe Codechange: split implementations of ParagraphLayouterFactory into their own file 2023-05-01 22:17:56 +02:00
Rubidium c578917783 Fix #10057: FallbackParagraphLayout fails to properly wrap
... during the first word after a new run has been started.
2023-01-15 11:43:22 +01:00
Peter Nelson daaa058493 Change: Vertically centre sprite font relative to TrueType font. 2022-12-18 11:46:01 -05:00
PeterN cea62ef73d
Fix #10161: Ignore ascender in FallbackLayouter for non-built-in fonts. (#10169) 2022-11-13 17:10:34 +00:00
Peter Nelson 9666e46739 Feature: Variable GUI scale.
GUI scale is now variable from 100% to 500%, and no longer restricted to
powers-of-2.
2022-11-12 18:28:39 +00:00
Frédéric Simonis ac4a7d02c7
Codechange: Improve LineCache queries (#9417)
Adds the support to query the linecache without copying the string.
This uses a custom transparent comparator in conjunction with
a query type using a std::string_view.
2021-08-16 11:18:47 +02:00
rubidium42 55a11710a6 Codechange: convert printf DEBUG statements to fmt Debug statements 2021-06-13 12:45:45 +02:00
Charles Pigott 9b800a96ed
Codechange: Remove min/max functions in favour of STL variants (#8502) 2021-01-08 11:16:18 +01:00
Lars Wendler cf29d23ba4 Fix: build with icu-68.1
icu-68.1 removed public macro definitions for TRUE and FALSE

Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
2020-10-30 18:07:58 +00:00
glx 0c80ae5288 Fix: Ignore not printable characters when layouting a string 2020-02-15 23:15:58 +00:00
S. D. Cloudt 13cc8a0cee Cleanup: Removed SVN headers 2019-11-10 17:59:20 +00:00
Charles Pigott 150884a93f Fix: Remove workaround for clang-3.8, now that GCC9 warns about it 2019-09-30 14:00:06 +01:00
pnda a35b43ce93 Fix #6666: Mismatched parentheses in RTL languages 2019-07-07 18:30:51 +02:00
Henry Wilson 7c8e7c6b6e Codechange: Use null pointer literal instead of the NULL macro 2019-04-10 23:22:20 +02:00
Michael Lutz baf9229931 Codechange: Replace AutoDeleteSmallVector with direct std::vector use in text layout code. 2019-04-09 22:45:15 +02:00
Michael Lutz 329bb52613 Codechange: Store text layout runs directly as values in a std::vector instead of heap allocated.
This reduces memory allocations and heap fragmentation.
2019-04-09 22:45:15 +02:00
Michael Lutz fbc4cef180 Codechange: Use override specifier for text layout classes. 2019-04-09 22:45:15 +02:00
glx22 66dd7c3879
Fix: MSVC warnings (#7423) 2019-03-28 00:09:33 +01:00
Henry Wilson cc62f4163f Cleanup: Remove unused size template parameters from SmallMap and Auto[Free|Delete]SmallVector 2019-03-26 20:15:57 +00:00
Henry Wilson ab711e6942 Codechange: Replaced SmallVector::[Begin|End]() with std alternatives 2019-03-26 20:15:57 +00:00
Henry Wilson a0f36a50e6 Codechange: Replaced SmallVector::Append() with std::vector::[push|emplace]_back() 2019-03-26 20:15:57 +00:00
Henry Wilson 097328c3d7 Codechange: Replaced SmallVector::Get() const with std alternatives 2019-03-26 20:15:57 +00:00
Henry Wilson a690936ed7 Codechange: Replace SmallVector::Length() with std::vector::size() 2019-03-26 20:15:57 +00:00
Henry Wilson bfd79e59dc Codechange: Replace SmallVector::Clear() with std::vector::clear() 2019-03-26 20:15:57 +00:00
Patric Stout 52d7e7d45e Codechange: ICU_LAYOUT is in reality ICU_LX (according to their CMake files)
By naming it in a different way, things get a bit confusing.
Especially if we are switching to CMake, which autodetects these
things, we need to use the name the authors of ICU gave it; not
our interpertation of that name.
2019-03-11 10:16:00 +01:00
Michael Lutz 32ce1ce347 Add: [OSX] Text layout using the native CoreText API.
By default, the native API will be used instead of ICU, but if ICU is
forced in using configure, it will take precedence.
2018-12-08 20:13:27 +01:00
Charles Pigott e0c0394e37 Fix: Remove various dead or unnecessary assignments 2018-10-31 12:41:49 +01:00
Stefan Strogin fec44b0d09 Fix #6854: Compilation with ICU 62 (#6912) 2018-09-20 22:36:45 +02:00
Ingo von Borstel 88b77a7883
Fix #6844: Compile warning when compiling dedicated server (#6849) 2018-07-07 18:48:17 +02:00
Michael Lutz 574f547aca Fix 768a31b: When cascading to another text layouter, clear the old font run state left over from the previous (failed) layout attempt. 2018-06-16 11:04:03 +02:00
Michael Lutz 768a31bfe3 Add: [Win32] Text layout using the native Windows Uniscribe library.
Uniscribe is sometimes producing different results compared to ICU, especially
when RTL and LTR content is mixed. Comparing the results to other programs
(like editors or web browsers) leads me to believe that the result are at least
not worse than ICU and possibly better.
2018-06-06 21:37:09 +02:00
Michael Lutz a4278c302b Codechange: Move ParagraphLayouter-specific functions into factory classes instead of relying on overloads. 2018-06-06 21:37:09 +02:00
PeterN 3b32075e8a
Add: {PUSH_COLOUR} and {POP_COLOUR} control codes to handle switching colours. (#6737)
This replaces the internal SCC_PREVIOUS_COLOUR swap.
2018-04-19 19:33:21 +01:00
Pavel Stupnikov 9175c349da Fix #6465: Add {NORMAL_FONT} and {MONO_FONT} control codes to GS strings (#6726) 2018-04-17 18:41:31 +01:00
rubidium 69fac508c3 (svn r27367) -Codechange: make a distinction between the layouting part of ICU (lx) or the sorting/collation part of ICU (i18n) 2015-08-09 12:33:27 +00:00
rubidium 0463dbdc9e (svn r26482) -Codechange: add an include that allows us to undefine/redefine "unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values 2014-04-23 20:13:33 +00:00
rubidium 5b3d3b7240 (svn r26037) -Fix (r26036): there was a reason they weren't references... 2013-11-18 19:47:43 +00:00
rubidium a36fb735c0 (svn r26036) -Fix [FS#5809]: multi line text was handled incorrectly causing glitches 2013-11-18 19:35:06 +00:00
michi_cc b0b20192a9 (svn r26029) -Fix (r26017): The internal index of a character in the layout line depends on the used layouter. 2013-11-17 17:08:20 +00:00
rubidium 4c5ccc8b94 (svn r26018) -Codechange: since there's a wrapper for ICU functions now, we can use proper coding style for names again 2013-11-16 21:05:26 +00:00
rubidium ddc0026712 (svn r26017) -Change: allow the fallback and ICU layouter to exist in unison
-Fix [FS#5711]: crash when the ICU layouter thinks a font is corrupted
2013-11-16 20:57:54 +00:00
rubidium 6449e96f1a (svn r26016) -Codechange: prepare for some class renames 2013-11-16 20:32:55 +00:00
rubidium b9e4697d8a (svn r26015) -Codechange: some constificaton 2013-11-16 19:59:06 +00:00
rubidium 2df78944b9 (svn r25949) -Fix [FS#5683]: text direction forcing characters were not filtered out, but shown as ? when ICU was not used for layouting. These are included in chat and console messages to force them to be displayed right 2013-11-08 19:13:32 +00:00
fonsinchen 0baa72aff9 (svn r25714) -Fix: explicitly cast some things to silence warnings on GCC 4.0 2013-08-10 12:47:24 +00:00
rubidium 13855f0a09 (svn r25705) -Fix: a number of typos (inspired by 90c920601c84975acb694f3673e2beb08b013753) 2013-08-09 18:43:44 +00:00
michi_cc bd02761b55 (svn r25696) -Fix (r25651): Missing function in the non-ICU paragraph layouter. 2013-08-06 17:35:11 +00:00
michi_cc 4ed08dcd60 (svn r25694) -Fix (r25651): Picky GCC. 2013-08-05 20:50:55 +00:00
michi_cc 30867c487f (svn r25691) -Add: [OSX] Support for mouse selection in the IME composition string. 2013-08-05 20:37:53 +00:00