Commit Graph

123 Commits

Author SHA1 Message Date
21fc5cce5c Use LocalVector<Glyph> to reduce reallocation. 2025-05-12 18:11:18 +08:00
91931606f7 Remove _FORCE_INLINE_ from TextServer*::_ensure* methods
Reduces binary size by ~1.5 MB when compiling with TextServerAdvanced, and ~800 KB for TextServerFallback
2025-05-06 17:49:38 -04:00
4afeca3bcf Replace global oversampling with overrideable per-viewport oversampling. 2025-04-14 13:43:09 +03:00
b106dfd4f9 Base accessibility API. 2025-04-08 20:14:28 +03:00
f25fc34439 SCons: Add CPPEXTPATH for external includes 2025-04-02 07:29:08 -05:00
19f360d65a Add font import flag to toggle modulation of colored glyphs. 2025-04-01 13:36:10 +03:00
c93ce94f4a Merge pull request #104455 from Ivorforce/ubrk-clone
Optimize startup times by using `ubrk_clone` instead of `ubrk_open`.
2025-03-28 14:33:03 +01:00
09e7bef0e0 Use ubrk_clone instead of ubrk_open to create UBreakIterator instances.
`ubrk_clone` is much faster, because the locale doesn't have to be parsed again.
2025-03-22 00:42:43 +01:00
bfc1ef4ab7 Optimize TextServerAdvanced::_add_features by using iteration instead of .values() and .keys().
Rename `_add_featuers` to `_add_features`.
2025-03-21 11:59:29 +01:00
90509e6402 Merge pull request #102129 from Ivorforce/optimize-text-server-adv-break-iter
Optimize text rendering by caching `UBreakIterator` instances.
2025-03-11 16:53:56 -05:00
331a43a9d8 Add String::remove_char(s) methods for performance and convenience 2025-03-10 13:19:28 +01:00
324512e11c Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
70a8421c30 Apply fix_alpha_edges for both theme icons and font glyphs.
Only apply fix_alpha_edges for SVG glyphs.
Allow modulate for svg glyphs.
2025-02-18 13:10:28 -08:00
b50d9742c2 Fix is_valid_float, Variant parser, Expression parser, script highlighter, and TextServer not handing capital E in scientific notation. 2025-02-05 18:39:40 +02:00
6c82cf0737 Optimize text rendering by caching UBreakIterator instances. 2025-01-29 14:03:03 +01:00
cc1db569e1 [TextServer] Improve embedded objects handling performance. 2025-01-07 08:01:29 +02:00
33817b186f Remove unused header in drivers and modules.
Co-authored-by: Thaddeus Crews <repiteo@outlook.com>
2024-12-24 00:40:47 +08:00
26e7b6bdd6 Merge pull request #99164 from bruvzg/int_files
[Export] Write text server data from memory, instead of using temporary file.
2024-12-03 14:40:58 -06:00
c5ca56f40b [Export] Write text server data from memory, instead of using temporary file. 2024-12-02 18:22:55 +02:00
e81a2afbc4 [TextServer] Reset subpixel shift on blank glyphs and import option to enable/disable it. 2024-11-01 10:18:57 +02:00
e698870caa Update ICU to 76.1 2024-10-24 22:47:59 +03:00
d222daa9c8 [TextServer] Silently skip invalid system fallback fonts. 2024-10-01 17:22:16 +03:00
b37fc1014a Style: Apply new clang-format changes 2024-09-20 08:09:48 -05:00
4ba7738a1f TextServerAdvanced: improve performance by removing redundant lookups
+ caching editor setting
+ using a faster hash method on the FontForSizeAdvanced cache
+ SafeFlag for ShapedTextDataAdvanced::valid
2024-08-28 13:01:11 -07:00
32bc1c2f33 [Font Import] Detect pixel fonts and disable subpixel positioning. 2024-07-23 20:34:39 +03:00
e651421905 [TextServer, GDExtension] Fix building text servers as GDExtension, expose new/changed low-level methods to GDExtension API. 2024-06-12 19:30:19 +03:00
a0dbdcc3ab Replace find with contains/has where applicable
* Replaces `find(...) != -1` with `contains` for `String`
* Replaces `find(...) == -1` with `!contains` for `String`
* Replaces `find(...) != -1` with `has` for containers
* Replaces `find(...) == -1` with `!has` for containers
2024-05-08 12:37:42 +02:00
25fe3d4b46 Merge pull request #81639 from MJacred/is_letter
Add `is_valid_letter()` to `TextServer`
2024-05-03 01:21:34 +02:00
717513a62d Add is_valid_letter() to TextServer 2024-05-02 21:32:20 +02:00
1f8387f8fd [TextServer] Improve empty glyph handling to allow glyphs smaller than 2px and avoid unnecessary texture updates. 2024-04-07 18:19:45 +03:00
27f6f4147b [TextServer] Expose ICU title case string conversion to scripting. 2024-04-04 10:56:49 +03:00
061e0c758d Merge pull request #89395 from bruvzg/rtl_ts_img_range
[RTL] Use "visible characters" property for inline object visibility
2024-03-12 14:23:03 +01:00
433de7f1a8 [RTL] Use "visible characters" property for inline object visibility 2024-03-12 11:28:45 +02:00
911fa38d3a [Font] Add option to disable embedded bitmaps loading. 2024-03-11 16:31:10 +02:00
4bb3af67e0 Merge pull request #88091 from bruvzg/extra_fallback
[TextServer] Add extra fallback step, to lookup for individual characters.
2024-02-15 17:35:40 +01:00
062a93fb77 [TextServer] Add extra fallback step, to lookup for individual characters. 2024-02-09 23:47:48 +02:00
19f1d5afa9 [TextServer / Font] Do not duplicate images to prevent unnecessary embedding. 2024-02-05 10:38:32 +02:00
85df221610 [TextServer / Font] Add support for customizable baseline offset. 2024-01-28 13:26:49 +02:00
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