Commit graph

133 commits

Author SHA1 Message Date
bruvzg
4a167fc740
[TextServer] Store font extra spacing variations without making a full copy of font. 2023-09-28 10:45:09 +03:00
A Thousand Ships
517e9f8aef [Modules] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-26 16:44:52 +02:00
bruvzg
1ced1f9c99
[TextServer] Pass Dictionary properties by value and check property values instead of references.. 2023-09-07 11:59:51 +03:00
bruvzg
31a8a9b2e1
[TextServer] Remove excessive Dictionary checks. 2023-09-04 09:47:55 +03:00
bruvzg
5453503697
[Text Server] Store extra spacing of individual font variations. 2023-08-24 11:58:12 +03:00
bruvzg
07d859de25
[TextServer] Fix issues with character breaks, add more tests. 2023-08-19 11:49:34 +03:00
bruvzg
5d3fcc5766
[TextServer] Fix system font fallback and caret/selection behavior for composite characters. 2023-08-15 11:42:40 +03:00
Rémi Verschelde
faaf27f284
Fix various typos with codespell
Also includes typo fixes from #79993, #80068, #80276, and #80303.

Co-authored-by: betalars <contact@betalars.de>
Co-authored-by: spaceyjase <429978+spaceyjase@users.noreply.github.com>
Co-authored-by: Swarkin <102416174+Swarkin@users.noreply.github.com>
Co-authored-by: Raul Santos <raulsntos@gmail.com>
2023-08-07 13:09:47 +02: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
RedworkDE
8e7afec479 Fix various errors when running the unit tests
Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2023-05-09 18:40:56 +02:00
bruvzg
d904516e55
[TextServer] Use dedicated flag for object replacement characters. 2023-04-12 10:08:51 +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
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
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
e144e5dda5
Remove duplicate ucaps code from TextServerFallback. 2023-01-19 14:56:17 +02: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
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
d77902f33a
Implement SVG in OT support. 2022-11-04 14:10:54 +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
kobewi
072f6feaba Make some Image methods static 2022-10-14 14:34:15 +02:00
Rémi Verschelde
24b36354ff Merge pull request #66532 from bruvzg/mipmap_change
[Text Server] Clear textures after "generate mipmaps" property change.
2022-09-28 17:13:57 +02:00
bruvzg
51978dde5a
[Text Server] Clear textures after "generate mipmaps" property change. 2022-09-28 12:43:34 +03:00
bruvzg
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
bruvzg
8cdb482738
[TextServer] Always prefer main font over fallbacks, regardless of script/language support. 2022-09-25 23:07:30 +03:00
Rémi Verschelde
a0c85c11c6 Merge pull request #65914 from bruvzg/fix_trim_wo_space
Fix line trim/ellipsis when line do not have space or newline at the end.
2022-09-21 18:55:44 +02:00
Haoyu Qiu
2d0d6e4f63 Fix crash when executing FontFile.get_face_count 2022-09-18 14:38:57 +08:00
bruvzg
19443a7fef
Fix line trim/ellipsis when line do not have space or newline at the end. 2022-09-16 19:46:26 +03:00
Rémi Verschelde
3a62c294c7 Merge pull request #65170 from KoBeWi/your_argument_is_TypedArray 2022-09-02 13:57:02 +02:00