Commit Graph

135 Commits

Author SHA1 Message Date
91b24b2780 Use GODOT_MODULE define in TextServer modules 2024-01-06 01:19:29 -06:00
56579f397d [Text Overrun] Add option to set custom ellipsis character, add support for system font fallback. 2023-12-04 08:21:42 +02:00
f52559bf98 [TextServer] Fix glyph comparator ambiguous output, causing "bad comparison function" error spam when processing text with excessive use of combining diacritics. 2023-10-31 08:41:35 +02:00
0fb5d53feb [TextServerAdvanced] Keep dynamically loaded ICU data in memory. 2023-10-23 11:21:13 +03:00
9a1e0e4aef [Bitmap fonts] Add support for scaling. 2023-10-13 12:57:45 +03:00
4a167fc740 [TextServer] Store font extra spacing variations without making a full copy of font. 2023-09-28 10:45:09 +03:00
5453503697 [Text Server] Store extra spacing of individual font variations. 2023-08-24 11:58:12 +03:00
5d3fcc5766 [TextServer] Fix system font fallback and caret/selection behavior for composite characters. 2023-08-15 11:42:40 +03:00
7e21eb7e00 Extract and reorganize texture resource classes 2023-07-14 20:04:21 +02:00
25b2f1780a Style: Harmonize header includes in modules
This applies our existing style guide, and adds a new rule to that style
guide for modular components such as platform ports and modules:

Includes from the platform port or module ("local" includes) should be listed
first in their own block using relative paths, before Godot's "core" includes
which use "absolute" (project folder relative) paths, and finally thirdparty
includes.

Includes in `#ifdef`s come after their relevant section, i.e. the overall
structure is:

- Local includes
  * Conditional local includes
- Core includes
  * Conditional core includes
- Thirdparty includes
  * Conditional thirdparty includes
2023-06-15 14:35:45 +02:00
aaddec7cb8 [TextServer] Add support for retrieving OpenType name strings. 2023-05-22 18:08:34 +03:00
282e4231c2 Improve line BiDi handling, prevent crash on recursive log updates. 2023-04-12 11:39:05 +03:00
d8d88e1530 [TextServer] Improve BiDi error handling. 2023-04-11 10:07:00 +03:00
98d95f3a0e Merge pull request #74149 from bruvzg/get_char
[Font] Implement `get_char_from_glyph_index` function.
2023-03-16 13:07:11 +01:00
a8d2e7f342 Merge pull request #73987 from bruvzg/ft_lock
[TextServer] Add mutex for FreeType face creation/deletion operations.
2023-03-03 11:04:07 +01:00
7e142e04f5 Merge pull request #73669 from bruvzg/icu_static_data
[TextServer] Ensure ICU data is initialised only one and cleaned only at exit.
2023-03-02 11:26:02 +01:00
8459aeaab0 [Font] Implement get_char_from_glyph_index function. 2023-03-01 09:29:11 +02:00
bbc77b6d29 Fix text server GDExtension build. 2023-02-26 18:38:22 +02:00
c950a1ab94 [TextServer] Add mutex for FreeType face creation/deletion operations. 2023-02-26 17:55:04 +02:00
7f24433e15 [TextServer] Ensure ICU data is initialised only one and cleaned only at exit. 2023-02-21 09:43:54 +02:00
c588923433 [TextServer] Preload USpoofChecker to speed up GDScript parsing. 2023-02-05 23:31:54 +02:00
65883cc73b Merge pull request #71598 from bruvzg/gdscript_bidi_override
Implement BiDi override mode for GDScript source.
2023-01-19 19:33:18 +01:00
db7d8c2d87 [GDExtension] Expose some low level functions and String operators. 2023-01-19 12:50:49 +02:00
5361ec9f43 Implement BiDi override mode for GDScript source. 2023-01-18 19:22:20 +02:00
d95794ec8a One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
207e52c161 Fix String::word_wrap() for long words
- Changes `TextServer.string_get_word_breaks()`
  - Returns pairs of boundary start and end offsets
  - Accepts `chars_per_line` to return line breaks
- Removes `String::word_wrap()`

Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2022-12-16 13:18:57 +08:00
53c76fa5d1 [RTL/TextServer] Add baseline inline alignment mode for objects and RTL tables. 2022-12-15 23:16:02 +02:00
ecec415988 Use system fonts as fallback and improve system font handling.
Add support for font weight and stretch selection when using system fonts.
Add function to get system fallback font from a font name, style, text, and language code.
Implement system font support for Android.
Use system fonts as a last resort fallback.
2022-12-04 18:44:20 +02:00
d77902f33a Implement SVG in OT support. 2022-11-04 14:10:54 +02:00
f0b7ff324c Improve text line breaking performance for long lines. 2022-10-31 15:35:51 +02:00
c1af9d57a3 Improve font glyph cache packing shelf best height fit heuristic. 2022-10-18 18:42:04 +03:00
8f5d56e04a [GDExtension] Use function names with underscore for TextServer extension, add macros to generate wrappers for module functions. 2022-09-28 10:04:11 +03:00
163257d51b [GDExtension] Implement support for typed arrays. 2022-09-22 23:31:27 +03:00
7adc8376ed Change Array arguments to TypedArray 2022-09-01 13:13:19 +02:00
7013c68619 Merge pull request #64422 from bruvzg/make_fonts_unbearably_ugly_2.0 2022-08-26 11:59:07 +02:00
bcc3643989 Add font LCD sub-pixel anti-aliasing support. 2022-08-23 08:47:21 +03:00
8be27dc59e Replace Array return types with TypedArray 2022-08-22 22:42:36 +02:00
ae335196b5 Merge pull request #63762 from bruvzg/ft_warn
[TextServer] Add a build warning when building with external FreeType without Brotli support.
2022-08-06 00:31:15 +02:00
4373a0bb86 [TextServer] Add ICU Unicode security and spoofing detection. 2022-08-02 15:37:49 +03:00
5aa48b6ae5 [TextServer] Implement ICU/UAX 31 based is_valid_identifier function. 2022-08-02 08:30:20 +03:00
366e2d893e [TextServer] Add a build warning when building with external FreeType without Brotli support. 2022-08-01 13:22:29 +03:00
c7255388e1 Remove ThreadWorkPool, replace by WorkerThreadPool
The former needs to be allocated once per usage. The later is shared for all threads, which is more efficient.
It can also be better debugged.
2022-07-25 15:39:50 +02:00
cbe3a2dcb7 Use BitField hint for the TextServer enums. Add missing parts for BitField support to the GDextension API. 2022-07-15 08:49:50 +03:00
344ba0ffaf Refactor Font configuration and import UI, and Font resources. 2022-07-06 14:12:36 +03:00
632b933a03 Merge pull request #61934 from Geometror/hashfuncs
Hash function improvements
2022-06-15 07:34:43 +02:00
8c61470fa9 Hash function improvements 2022-06-15 00:32:10 +02:00
6e4cdad3ac [TextServer] Adds support for TrueType / OpenType collection files (*.TTC, *.OTC). 2022-06-07 11:35:59 +03:00
b3bbf3db47 [GDExtension] Expose Variant, NodePath and StringName hash functions. 2022-06-06 12:19:56 +03:00
45af29da80 Add a new HashSet template
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00