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
kobewi
7adc8376ed
Change Array arguments to TypedArray
2022-09-01 13:13:19 +02:00
bruvzg
d83b6b1e1c
[TextServer] Fix LCD AA fonts reading wrong glyphs.
2022-09-01 08:10:33 +03:00
bruvzg
fbcb98855d
Fix MSDF fonts color modulation.
2022-08-30 20:28:53 +03:00
Rémi Verschelde
7013c68619
Merge pull request #64422 from bruvzg/make_fonts_unbearably_ugly_2.0
2022-08-26 11:59:07 +02:00
Rémi Verschelde
62c3e72b6f
Merge pull request #63959 from KoBeWi/typo_arrray
...
Replace Array return types with TypedArray (part 1)
2022-08-23 08:52:13 +02:00
bruvzg
bcc3643989
Add font LCD sub-pixel anti-aliasing support.
2022-08-23 08:47:21 +03:00
kobewi
8be27dc59e
Replace Array return types with TypedArray
2022-08-22 22:42:36 +02:00
bruvzg
1c5a50fac6
Fix color modulation of the grayscale glyphs in font with mixed color / grayscale data.
2022-08-22 21:01:22 +03:00
bruvzg
bf1cc6326a
Allow MSDF rendering for system fonts, fix crash on loading damaged / unsupported font files.
2022-08-09 14:21:09 +03:00
bruvzg
80c9a44492
Fix overrun flag check and HarfBuzz safe to break flag check.
2022-08-04 22:58:28 +03:00
Juan Linietsky
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
bruvzg
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
kobewi
d2900429e8
Add static methods for creating Image and ImageTexture
2022-07-08 13:40:47 +02:00
bruvzg
344ba0ffaf
Refactor Font configuration and import UI, and Font resources.
2022-07-06 14:12:36 +03:00
bruvzg
b5c96df277
Move duplicate AutoWrap, Overrun and VisibleChar behavior enums to the TextServer.
2022-06-16 16:49:37 +03:00
Rémi Verschelde
632b933a03
Merge pull request #61934 from Geometror/hashfuncs
...
Hash function improvements
2022-06-15 07:34:43 +02:00
Hendrik Brucker
8c61470fa9
Hash function improvements
2022-06-15 00:32:10 +02:00
bruvzg
6e4cdad3ac
[TextServer] Adds support for TrueType / OpenType collection files (*.TTC, *.OTC).
2022-06-07 11:35:59 +03:00
bruvzg
cfcdfc38e2
[RTL] Add support for shaping in background thread.
2022-05-19 09:34:44 +03:00
bruvzg
05963674a7
Implement TextMesh resource.
...
Apply simulated slant and embolden to the TextServer `gont_get_glyph_contours` results.
2022-05-13 08:20:22 +03:00
bruvzg
6783d55ce4
Use new HashMap implementation in the TextServer, and Font.
2022-05-12 13:42:25 +03:00
reduz
8b7c7f5a75
Add a new HashMap implementation
...
Adds a new, cleaned up, HashMap implementation.
* Uses Robin Hood Hashing (https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing ).
* Keeps elements in a double linked list for simpler, ordered, iteration.
* Allows keeping iterators for later use in removal (Unlike Map<>, it does not do much
for performance vs keeping the key, but helps replace old code).
* Uses a more modern C++ iterator API, deprecates the old one.
* Supports custom allocator (in case there is a wish to use a paged one).
This class aims to unify all the associative template usage and replace it by this one:
* Map<> (whereas key order does not matter, which is 99% of cases)
* HashMap<>
* OrderedHashMap<>
* OAHashMap<>
2022-05-12 11:21:29 +02:00
bruvzg
68304bec47
[TextServer] Fix incorrect oversampled font scaling.
2022-05-10 13:57:18 +03:00
Rémi Verschelde
c273ddc3ee
Style: Partially apply clang-tidy's cppcoreguidelines-pro-type-member-init
...
Didn't commit all the changes where it wants to initialize a struct
with `{}`. Should be reviewed in a separate PR.
Option `IgnoreArrays` enabled for now to be conservative, can be
disabled to see if it proposes more useful changes.
Also fixed manually a handful of other missing initializations / moved
some from constructors.
2022-05-02 16:28:25 +02:00
bruvzg
6ab672d1ef
Implement text-to-speech support on Android, iOS, HTML5, Linux, macOS and Windows.
...
Implement TextServer word break method.
2022-04-28 14:35:41 +03:00
bruvzg
be611c1c05
Implement Label3D node.
...
Add "generate_mipmap" font import option.
Add some missing features to the Sprite3D.
Move BiDi override code from Control to TextServer.
Add functions to access TextServer font cache textures.
Add MSDF related flags and shader to the standard material.
Change standard material cache to use HashMap instead of Vector.
2022-04-22 12:08:46 +03:00
bruvzg
f851c4aa33
Fix some issues found by cppcheck.
2022-04-06 14:34:37 +03:00
bruvzg
aad9d1414c
Delay font texture update, until draw
is called. Rasterize glyphs during shaping.
2022-04-05 10:49:41 +03:00
Rémi Verschelde
b78aa4fe19
Style: Apply clang-tidy to current code, add readability-redundant-member-init
2022-04-04 21:49:51 +02:00
bruvzg
f19cd44346
Unify TextServer built-in module and GDExtension code.
2022-03-17 08:15:29 +02:00
bruvzg
d9f8cadafb
Improve simulated bold fonts advance.
2022-03-13 15:07:53 +02:00
bruvzg
b32e8d63d8
Add options to embolden and transform font outlines to simulate bold and italic typefaces.
2022-03-11 14:02:30 +02:00
bruvzg
29199579f7
Add sub-pixel glyph positioning support.
2022-02-12 19:55:52 +02:00
bruvzg
244db37508
Cleanup and move char functions to the char_utils.h
header.
2022-02-04 11:35:01 +02:00
bruvzg
215bede6ff
[TextServer] Add function to change font, font size, and OpenType features without invalidating line break points, justification points, or recreating shaped text buffer.
2022-02-02 11:20:44 +02:00
Nathan Franke
8a0a3accee
simplify formatting scripts, add a clang-tidy script, and run clang-tidy
2022-01-29 04:41:03 -06:00
bruvzg
e02a097280
[TextServer] Implement locale and context sensitive case conversion functions.
2022-01-17 14:23:36 +02:00
bruvzg
baec983d8a
[TextServer] Improvements for line breaking, "Fill" alignment, overrun, and interaction between these modes.
...
Fix "Fill" alignment processing wrong side of the text if overrun trim was applied.
Improve "Fill" alignment to avoid adding excessive subsequent spaces or elongations.
Add font detection to the overrun, to correctly add ellipsis (was using last glyph font, which doesn't necessary have dot character).
Improve line breaking to avoid adding excessive subsequent soft break points for languages without word separator.
Port missing overrun/justification code to the Fallback text server.
Fix inferred text direction detection by controls.
Add tests for "Fill" alignment and line breaking glyph flags.
2022-01-13 08:53:28 +02:00
Rémi Verschelde
7faf02383c
Merge pull request #55225 from bruvzg/fix_ligature_cursor_and_ot_features
2022-01-10 13:32:54 +01:00
bruvzg
af6758e008
Fix freezes when tab is zero or negative width.
2022-01-10 12:19:29 +02:00
bruvzg
c89c515ccf
[TextServer] Improve ligature cursor handling.
...
Fix mid-grapheme hit test.
Fix OpenType features property handling, add default features override option.
Enable mid-grapheme cursor by default.
2022-01-09 19:03:48 +02:00
Rémi Verschelde
fe52458154
Update copyright statements to 2022
...
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
bruvzg
01bac2c469
[Text Server] Fix re-shaping of substrings, improve oversampling scale.
2021-12-15 11:57:22 +02:00
Nathan Franke
41a20171eb
align to horizontal_alignment, valign to vertical_alignment, related
2021-12-09 01:38:46 -06:00
Lightning_A
e078f970db
Rename remove()
to remove_at()
when removing by index
2021-11-23 18:58:57 -07:00
Aaron Franke
ae713f8980
Add a minimal template build to CI
...
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2021-11-12 09:30:50 -06:00
Rémi Verschelde
88c4380737
Modules: Make sure to include modules_enabled.gen.h where needed
2021-11-12 13:42:58 +01:00
Rémi Verschelde
5968653662
Merge pull request #46721 from bruvzg/custom_word_break_punct
2021-11-09 00:13:59 +01:00
Rémi Verschelde
d9a74fd07f
Merge pull request #54372 from bruvzg/text_edit_ui
2021-11-09 00:13:25 +01:00
M. Huri
4052d85d05
Repaired mistyped of 'threshold' on several files.
2021-10-31 22:11:42 +07:00
bruvzg
3f33e1d7d6
Add functions for getting name and font style from dynamic and bitmap fonts.
...
Add font selection toolbar editor plugin.
2021-10-31 12:40:58 +02:00
bruvzg
ebbc25e89c
Ignore empty Font resources as theme override.
...
Add range hint to font_size properties.
Remove excessive `base_size` Font property.
2021-10-25 14:05:37 +03:00
bruvzg
efb1c03243
[TextServer] Add texture index, offsets array size and Unicode char validation.
2021-10-15 18:36:00 +03:00
bruvzg
8e98e71997
Move static feature set and number system StringName
s to the singleton.
...
Remove `hb_` prefix from the custom bitmap font functions to avoid potential conflicts with the HarfBuzz.
Cleanup commented debug code.
Update numbering system data to CLDR 39.
2021-10-12 12:47:18 +03:00
bruvzg
daa613333e
[Text Server] Add support for user defined punctuation list, used for word breaking.
2021-10-01 16:45:16 +03:00
bruvzg
0c0b5c84b0
Implement TextServer GDExtension interface, remove TextServer GDNative interface.
2021-10-01 15:13:29 +03:00
Lightning_A
c63b18507d
Use range iterators for Map
2021-09-30 15:09:12 -06:00
Hugo Locurcio
ba65730cbf
Rename RID's getornull()
to get_or_null()
2021-09-29 23:58:02 +02:00
bruvzg
3c005948ca
[Fallback TextServer] Fix char to glyph conversion.
2021-09-29 19:06:54 +03:00
bruvzg
11a49c2f29
Fix trim overrun width not being reset.
2021-09-27 21:51:18 +03:00
Rémi Verschelde
453aff4902
TextServer: Fix build with freetype disabled
...
Also remove RTR calls as we don't translate internal error messages.
2021-09-15 10:11:31 +02:00
bruvzg
0089adbd30
[TextServer] Fix HarfBuzz handle init order. Fix MinGW build.
2021-09-01 23:18:03 +03:00
bruvzg
4c3f7d1290
Makes FontData importable resource.
...
Adds multi-channel SDF font texture generation and rendering support.
Adds per-font oversampling support.
Adds FontData import plugins (for dynamic fonts, BMFonts and monospaced image fonts), font texture cache pre-generation and loading.
Adds BMFont binary format and outline support.
2021-08-27 15:43:18 +03:00
Rémi Verschelde
2c88e1c15d
Merge pull request #51178 from Geometror/layout-options-textline-textparagraph
...
Various text layout improvements (TextLine, TextParagraph, Label, TextServer)
2021-08-11 07:51:57 +02:00
Hendrik Brucker
403f4902d0
Various text layout improvements (TextLine, TextParagraph, Label, TextServer)
2021-08-11 00:09:48 +02:00
bruvzg
7c3c5603d0
[Text Server] Improve object (image/table) inline alignment.
2021-08-08 22:35:47 +03:00
Rémi Verschelde
ac3322b0af
Use const references where possible for List range iterators
2021-07-25 12:22:25 +02:00
Aaron Franke
4e6efd1b07
Use C++ iterators for Lists in many situations
2021-07-23 17:38:28 -04:00
Leonardo Christino
8b91828e4f
Separate underscore from grapheme punctuation to enable doubleclick and caret jump over snakecase variables in editor
2021-07-13 10:03:26 -03:00
Hendrik Brucker
56a8d3f30c
Improvements to Label's layout options
...
- Added options to trim the text in case it overruns
- Added more autowrap modes
- Improved line breaking, which ignores trailing spaces
2021-07-04 16:43:55 +02:00
bruvzg
e624e570bc
[CTL] Improve font fallback order selection.
2021-06-10 22:25:32 +03:00
bruvzg
0d3fa2a125
[Complex Text Layouts] Provide access to glyph contour points.
2021-03-31 09:32:14 +03:00
Anshul7sp1
91181c2086
Fixes small typos and grammar correction
2021-03-12 19:05:16 +05:30
Rémi Verschelde
a527c6856b
Merge pull request #46045 from bruvzg/text_server_bmp_create
...
[TextServer] Restores bitmap font dynamic construction functions.
2021-02-24 12:55:36 +01:00
bruvzg
2d66f364d9
Make FreeType optional for export templates.
2021-02-19 15:01:46 +02:00
bruvzg
bee718f1af
[Text Server] Restores bitmap font dynamic construction functions.
2021-02-15 10:46:49 +02:00
bruvzg
f4d095cdd3
[TextServer] Restore character and space extra spacing support.
2021-02-15 10:46:23 +02:00
Rémi Verschelde
b5334d14f7
Update copyright statements to 2021
...
Happy new year to the wonderful Godot community!
2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.
We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)
Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
Rémi Verschelde
09212fba1e
Fix missed renamings from empty() to is_empty()
...
Those were missed in #44401 or added by later PRs.
2020-12-29 09:55:07 +01:00