Commit Graph

103 Commits

Author SHA1 Message Date
Ruslan Mustakov 5cd12f6649 Perfect FreeType-based outlines for DynamicFonts
- Implement outlines based on FreeType Stroker API. This allows
  artifact-free results, similar to what you will see in Web or any text
  editing tools. Outline is a part of DynamicFont rather than Label,
  because outlines have to be baked into the font's atlas. Font has a
  default outline_color and a Label can specify font_outline_modulator
  that will be multiplied with the Font's color to get the final result.

- draw_char now has to be called twice to fully render a text - first
  with p_outline == true for each character and then with
  p_outline == false for each character.

- Number of draw-calls is reduced from 5 to 2 per outlined character.

- Overall cleanup of DynamicFont code, extracted duplicated code pieces
  into separate methods.

- The change is backward-compatible - Labels still have outline
  properties that work exactly as they worked before.

Closes #16279.
2018-05-08 13:45:24 +07:00
Ruslan Mustakov aa8561ded4 Ceil dynamic font glyph size
Fixes #15459. When oversampling is enabled, glyphs may have fractional
size, but they are still rendered into integral pixels, which results in
them taking more space than was anticiped by autowrapping algorithm. The
solution here is to return ceiled width, which makes autowrapper
consider characters a bit larger than they are, but it doesn't hurt the
actual rendering and ensures there is enough space for the characters.
2018-03-14 19:53:44 +07:00
Hugo Locurcio c1544c12ef
Add an hinting mode setting to DynamicFonts
- Editor font hinting can now be tweaked in the Editor Settings.
- DynamicFonts used in projects now have tweakable hinting settings
  in their DynamicFontData child. Changes will be visible upon
  reloading the scene in the editor.
2018-02-28 00:12:26 +01:00
Rémi Verschelde 5933cf867a
Merge pull request #15780 from volzhs/emoji
Support colored font
2018-02-19 21:51:53 +01:00
Juan Linietsky 8daf5491ab I have no idea why this commit fixes #15392 2018-01-21 16:19:35 -03:00
volzhs c5e3acc29c Support colored font 2018-01-16 22:56:54 +09:00
Bernhard Liebl a64dc5af74 Two potential glitches in font oversampling 2018-01-08 18:09:41 +01:00
Bernhard Liebl 526e637a97 Fix stale dynamic font reference fetch from cache
Seems to fix issue 15392
2018-01-07 16:57:23 +01:00
Rémi Verschelde e4213e66b2 Add missing copyright headers and fix formatting
Using `misc/scripts/fix_headers.py` on all Godot files.
Some missing header guards were added, and the header inclusion order
was fixed in the Bullet module.
2018-01-05 01:22:23 +01:00
Rémi Verschelde b50a9114b1 Update copyright statements to 2018
Happy new year to the wonderful Godot community!
2018-01-01 14:40:47 +01:00
Juan Linietsky b08735f209 Make dynamic font oversampling fully dynamic. 2017-12-19 21:58:32 -03:00
Juan Linietsky fc103566e6 Added font oversampling support 2017-12-19 18:48:30 -03:00
Juan Linietsky bc2e8d99e5 Made Vector::ptrw explicit for writing, compiler was sometimes using the wrong function,
leading to unnecesary copy on writes and reduced performance.
2017-11-25 00:09:40 -03:00
Rémi Verschelde ed57f0a0d4 Remove get_default_video_mode definition on OSX/iOS
It had been missed in d09160a8b6 and broke compilation
for those platforms.

Took the opportunity to run clang-format on the code base to fix some corner cases
that went through our static tests/were overlooked recently.
2017-11-09 23:36:08 +01:00
Rémi Verschelde d79ce05b91 Merge pull request #11365 from leezh/freetype_mono
Added support for FT_PIXEL_MODE_MONO in FreeType
2017-09-21 10:37:21 +02:00
letheed 5ad9be4c24 Rename pos to position in user facing methods and variables
Rename user facing methods and variables as well as the corresponding
C++ methods according to the folloming changes:

* pos -> position
* rot -> rotation
* loc -> location

C++ variables are left as is.
2017-09-20 13:11:10 +02:00
Zher Huei Lee 2ca82225b7 Added support for FT_PIXEL_MODE_MONO in FreeType 2017-09-19 14:00:00 +08:00
Rémi Verschelde bd282ff43f Use HTTPS URL for Godot's website in the headers 2017-08-27 14:16:55 +02:00
Ignacio Etcheverry 32dd9a9f66 ClassDB: Provide the enum name of integer constants 2017-08-20 22:07:43 +02:00
Marcelo Fernandez eab850524e Add closest_power_of_2 func and implement mix_rate/latency on OS X 2017-08-17 19:51:13 -03:00
TwistedTwigleg 00f6c85928 Synchronize parameter names in definition and declaration
Fixes #10244.
2017-08-16 17:22:23 +02:00
Ignacio Etcheverry 2f290038d6 Removes type information from method binds 2017-08-10 07:17:50 +02:00
Juan Linietsky 772485cdb3 Several changes to better run in mobile. 2017-07-22 14:08:17 -03:00
Juan Linietsky 98a3296702 Removal of Image from Variant, converted to a Resource. 2017-05-17 07:37:45 -03:00
Rémi Verschelde df61dc4b2b Add "Godot Engine contributors" copyright line 2017-04-08 00:11:42 +02:00
volzhs 56af1a3790 Cache DynamicFont resource for Android 2017-03-24 16:18:35 +09:00
Rémi Verschelde 5dbf1809c6 A Whole New World (clang-format edition)
I can show you the code
Pretty, with proper whitespace
Tell me, coder, now when did
You last write readable code?

I can open your eyes
Make you see your bad indent
Force you to respect the style
The core devs agreed upon

A whole new world
A new fantastic code format
A de facto standard
With some sugar
Enforced with clang-format

A whole new world
A dazzling style we all dreamed of
And when we read it through
It's crystal clear
That now we're in a whole new world of code
2017-03-05 16:44:50 +01:00
Hein-Pieter van Braam 411ee71b4d Rename the _MD macro to D_METHOD
This new name also makes its purpose a little clearer

This is a step towards fixing #56
2017-02-13 12:50:02 +01:00
Hein-Pieter van Braam 0f687f0ccb Remove use of _SCS from ADD_METHOD
This saves typing and is a step towards fixing #56
2017-02-13 10:37:47 +01:00
Rémi Verschelde f44ee891be Style: Fix statements ending with ';;' 2017-01-16 08:49:52 +01:00
Rémi Verschelde 93ab45b6b5 Style: Fix whole-line commented code
They do not play well with clang-format which aligns the `//` part
with the rest of the code block, thus producing badly indented commented code.
2017-01-14 14:52:23 +01:00
Juan Linietsky d9d77291bc rename String.extension() -> String.get_extension() / String.basename() -> String.get_basename() 2017-01-14 00:51:09 -03:00
Juan Linietsky 2ab83e1abb Memory pool vectors (DVector) have been enormously simplified in code, and renamed to PoolVector 2017-01-07 18:26:38 -03:00
Juan Linietsky b085c40edf -Conversion of most properties to a simpler syntax, easier to use by script
-Modified help to display properties

GDScript can still not make use of them, though.
2017-01-04 01:16:14 -03:00
Juan Linietsky 118eed485e ObjectTypeDB was renamed to ClassDB. Types are meant to be more generic to Variant.
All usages of "type" to refer to classes were renamed to "class"
ClassDB has been exposed to GDScript.
OBJ_TYPE() macro is now GDCLASS()
2017-01-02 23:03:46 -03:00
Rémi Verschelde 3f3f5a5359 Merge remote-tracking branch 'origin/gles3' into gles3-on-master
Various merge conflicts have been fixed manually and some mistakes
might have been made - time will tell :)
2017-01-02 21:52:26 +01:00
Rémi Verschelde c7bc44d5ad Welcome in 2017, dear changelog reader!
That year should bring the long-awaited OpenGL ES 3.0 compatible renderer
with state-of-the-art rendering techniques tuned to work as low as middle
end handheld devices - without compromising with the possibilities given
for higher end desktop games of course. Great times ahead for the Godot
community and the gamers that will play our games!
2017-01-01 22:03:33 +01:00
Juan Linietsky 22d83bc9f6 Begining of GLES3 renderer:
-Most 2D drawing is implemented
-Missing shaders
-Missing all 3D
-Editor needs to be set on update always to be used, otherwise it does not refresh
-Large parts of editor not working
2016-10-03 21:35:16 +02:00
Zher Huei Lee 0de7860511 DynamicFont caches now accounts for texture flags
CacheID added for future-proofing
2016-08-02 15:36:11 +01:00
Zher Huei Lee af6ef01c69 Added extra spacing support for DynamicFont
Side effect is that label min-size will now take into account
kerning.
2016-08-02 11:05:20 +01:00
Zher Huei Lee 7b165e8ac2 Added texture mipmaps and filtering to DynamicFont 2016-08-02 08:01:51 +01:00
Rémi Verschelde f40f360a2c Remove unused variables (fourth pass) + dead code
Also fix a potential regression from 3fcb9b1ec1.
2016-07-08 16:47:55 +02:00
Juan Linietsky d6225b1e00 Improved binding system (ObjectTypeDB::bind_method) to be friendlier to statically typed languages, should help in the Mono integration.
Disabled by default.
2016-06-22 23:13:41 -03:00
Rémi Verschelde c7b425ed9c Merge pull request #5259 from neikeq/pr-textedit-zoom
TextEdit: Change font size with Ctrl+Mouse Wheel Up/Down
2016-06-19 13:04:20 +02:00
Juan Linietsky 0bbb0d0caa DynamicFontData can be built-in (will still link to a ttf though), closes #4600 2016-06-18 19:03:53 -03:00
Ignacio Etcheverry bc9f9b1c6a TextEdit: Change font size with Ctrl+Mouse Wheel Up/Down 2016-06-18 18:47:11 +02:00
Rémi Verschelde a7fc04626a Add missing license headers in our source files (#5255)
Also removes a couple wrong Godot headers from third-party source files.
2016-06-18 14:46:12 +02:00
Juan Linietsky 944c7e2603 fix crash when clearing dynamicfontdata, closes #4877 2016-06-13 22:24:11 -03:00
Juan Linietsky df139f57b3 Some cleanup to GDScript
separated GDFunction (VM) from GDScript in two different files
2016-05-31 22:33:43 -03:00
Juan Linietsky 0eb6c644b2 changed font system to use fallbacks
this way more than 64k characters can be used
2016-05-30 19:41:32 -03:00
Juan Linietsky 3e8eb396d7 Finalized DynamicFont implementation
-DynamicFont uses Freetype by default
-Editor fonts are now scalable thanks to this
-Cleaned up documentation browser and added fonts for this
2016-05-29 11:37:52 -03:00
sanikoyes c824781e98 Fix crash in dynamic font 2016-05-03 17:25:33 +08:00
Juan Linietsky 5bb7cef836 Support for dynamic fonts (TTF)
Added support for DynamicFont, which can load a TTF of any size to use
as a font. No import required.
2016-05-01 23:13:06 -03:00