Commit Graph

175 Commits

Author SHA1 Message Date
Hendrik Brucker 7e21eb7e00 Extract and reorganize texture resource classes 2023-07-14 20:04:21 +02:00
David Snopek 263c909349 Fix text_server_adv compiling as a GDExtension 2023-06-20 10:50:33 -05:00
Rémi Verschelde 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
bruvzg aaddec7cb8
[TextServer] Add support for retrieving OpenType name strings. 2023-05-22 18:08:34 +03:00
Rémi Verschelde fb3e4e7967
Merge pull request #75975 from bruvzg/bidi_and_log_errors
Improve line BiDi handling, prevent crash on recursive log updates.
2023-04-12 13:28:12 +02:00
bruvzg 282e4231c2
Improve line BiDi handling, prevent crash on recursive log updates. 2023-04-12 11:39:05 +03:00
bruvzg d904516e55
[TextServer] Use dedicated flag for object replacement characters. 2023-04-12 10:08:51 +03:00
bruvzg d8d88e1530
[TextServer] Improve BiDi error handling. 2023-04-11 10:07:00 +03:00
Yuri Sizov 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
Yuri Sizov b5845f87fc
Merge pull request #74556 from AThousandShips/text_adv_svg_freetype
[TextServer] Make sure Freetype is enabled for ot-svg
2023-03-15 15:04:01 +01:00
bruvzg 8d501a2dc3
[TextServer] Add invalid font scaling check, restrict Linux/BSD system fonts lookup to TrueType/CFF only. 2023-03-10 09:36:17 +02:00
Ninni Pipping 3a5d7a4b54 [TextServer] Make sure Freetype is enabled for ot-svg 2023-03-07 16:27:24 +01:00
bruvzg 016b2f3555
[TextServer] Fix justification on punctuation characters. 2023-03-06 12:39:08 +02:00
Rémi Verschelde 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
Rémi Verschelde 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
bruvzg 8459aeaab0
[Font] Implement `get_char_from_glyph_index` function. 2023-03-01 09:29:11 +02:00
bruvzg bbc77b6d29
Fix text server GDExtension build. 2023-02-26 18:38:22 +02:00
bruvzg c950a1ab94
[TextServer] Add mutex for FreeType face creation/deletion operations. 2023-02-26 17:55:04 +02:00
bruvzg 7f24433e15
[TextServer] Ensure ICU data is initialised only one and cleaned only at exit. 2023-02-21 09:43:54 +02:00
bruvzg c588923433
[TextServer] Preload USpoofChecker to speed up GDScript parsing. 2023-02-05 23:31:54 +02:00
bruvzg 0cc1f4240a
[RichTextLabel] Fix thread unsafe `set_physics_process_internal` usage. Use `WorkerThreadPool` instead of creating new threads. 2023-01-30 20:47:45 +02:00
Rémi Verschelde 0f31e6569a
Merge pull request #71931 from bruvzg/ts_s
[TextServer] Fix ICU data loading and exporting with `internationalization/locale/include_text_server_data` setting.
2023-01-23 20:45:58 +01:00
bruvzg 15dafc49d3
[TextServer] Fix ICU data loading and exporting with `internationalization/locale/include_text_server_data` setting. 2023-01-23 21:13:32 +02:00
bruvzg 458f720ea9
[TextServer] Add fallback code in case of missing ICU data. 2023-01-23 20:50:30 +02:00
bruvzg 96ed1c19dd
Fix BiDi override for the characters outside BMP (e.g., emojis). 2023-01-23 12:51:35 +02:00
Rémi Verschelde 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
bruvzg db7d8c2d87
[GDExtension] Expose some low level functions and String operators. 2023-01-19 12:50:49 +02:00
bruvzg 5361ec9f43
Implement BiDi override mode for GDScript source. 2023-01-18 19:22:20 +02:00
Juan Linietsky 6f0e210093 Refactor ProjectSetting overrides
* Overrides no longer happen for set/get.
* They must be checked with a new function: `ProjectSettings::get_setting_with_override()`.
* GLOBAL_DEF/GLOBAL_GET updated to use this

This change solves many problems:
* General confusion about getting the actual or overriden setting.
* Feature tags available after settings are loaded were being ignored, they are now considered.
* Hacks required for the Project Settings editor to work.

Fixes #64100. Fixes #64014. Fixes #61908.
2023-01-13 15:13:56 +01:00
Rémi Verschelde 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
bruvzg a28e8f0c8d
[TextServer] Make `free` calls thread safe. 2023-01-02 21:59:05 +02:00
bruvzg 20d9457f9d
Scale MSDF font outline with the font size and MSDF source size to match dynamic font behavior. 2022-12-17 22:47:54 +02:00
Haoyu Qiu 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
bruvzg 53c76fa5d1
[RTL/TextServer] Add baseline inline alignment mode for objects and RTL tables. 2022-12-15 23:16:02 +02:00
evan-gordon 88015b0edb check for empty string TextServer _string_to_upper 2022-12-11 12:01:54 -08:00
bruvzg 3395539ed4
[TextServer] Do not clean up font texture cache when setting `allow_system_fallback` property. 2022-12-10 17:07:42 +02:00
bruvzg 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
bruvzg e910aa490c
[TextServer] Fix line breaking for the special fonts that substitute a long string (with breaks opportunities in it) with a single glyph. 2022-11-21 09:42:34 +02:00
bruvzg d77902f33a
Implement SVG in OT support. 2022-11-04 14:10:54 +02:00
bruvzg 02a4b3f859
[TextServer] Fix hex code box positions in vertical text layout. 2022-11-01 11:51:29 +02:00
bruvzg 397fa2fa7a
[TextServer] Fix incorrect line breaks count for embedded objects (e.g. RTL tables). 2022-10-31 17:34:07 +02:00
bruvzg f0b7ff324c
Improve text line breaking performance for long lines. 2022-10-31 15:35:51 +02:00
Rémi Verschelde cd25e48456
Merge pull request #67562 from bruvzg/improve_font_packing
Improve font glyph cache packing shelf best height fit heuristic.
2022-10-31 14:26:13 +01:00
Rémi Verschelde ae81a569b9
Merge pull request #67409 from bruvzg/fix_oversampling_rounding
[TextServer] Do not round glyph advances / coordinates if font oversampling or bitmap glyph scaling is used.
2022-10-31 14:21:56 +01:00
kobewi e48c5daddf Unify usage of GLOBAL/EDITOR_GET 2022-10-18 19:01:48 +02:00
bruvzg c1af9d57a3
Improve font glyph cache packing shelf best height fit heuristic. 2022-10-18 18:42:04 +03:00
Rémi Verschelde 3c4b110ae0 Merge pull request #67521 from nikitalita/speed_up_texture_pos
Speed up `find_texture_pos_for_glyph()`
2022-10-17 17:31:54 +02:00
bruvzg 68ec84cded
[TextServer] Do not round glyph advances / coordinates if font oversampling or bitmap glyph scaling is used. 2022-10-17 10:57:49 +03:00
nikitalita 21341ddaed Speed up `find_texture_pos_for_glyph()` 2022-10-16 22:29:26 -07:00
Haoyu Qiu 6db8e79eed Fix memory leak when `_ensure_cache_for_size()` fails 2022-10-17 12:47:38 +08:00