* Remove hardcoded default font name.
This means the `fonts/fonts.ini` file is now mandatory
and must contain definition of all 9 font types.
Old mods relying on an incomplete `fonts.ini` file might break.
A separate PR creating the required `fonts/fonts.ini` file
should be merged before this pull request.
* Simplify `CFontLoader`.
* Return `std::optional` instead of returning a default.
* Remove the now unnecessary `std::map`s.
* Remove the now unnecessary `GetFontType` method.
* Improve Gfx::FontType.
* Provide `ToString` function for the enum, which is now
used for logs and by `CFontLoader`.
* Provide `ToBoldFontType` and `ToItalicFontType` functions.
* Replace hex literals with binary literals for readability.
* Move font caching related code to a new private class `FontsCache`.
* Add neccessary changes because of changes made in `CFontLoader`.
* Add minor code improvements like renames and formatting.
* Split the code into smaller functions for readability.
* Simplify the `CText` class.
* Apply the rule of 5 to the `CachedFont` structure.
Split the test into several parametrised tests for each data type.
Add more tests with different values.
Fix the ReadBinary() function in order to fix the ReadDouble() function
for negative values (the sign bit was being lost).
We currently use CMake 3.16 for compatibility with Ubuntu 18.04 LTS.
The `NAME_MISMATCHED` argument which turns off a CMake warning
when using `FIND_PACKAGE_HANDLE_STANDARD_ARGS`, is not available
in CMake 3.16 and can prevent a successful build.
See
https://github.com/colobot/colobot/pull/1478#issuecomment-986204233
Update the `data` and `lib/googletest` submodules.
`git submodule update --remote` command should now
update the data submodule by rebasing on the remote branch named
the same as the current branch.
Changes in the `lib/googletest` submodule should now be ignored
in `git status`.
Fail occurred due to wrong read of min double.
`unsigned long` has been changed in Write/ReadDouble functions to
`uint64_t`.
`unsigned int` has been changed in Write/ReadFloat functions to
`uint32_t`.
According to the standard
`int` is at least 16-bit so it might be too small for 32-bit `float`,
`long` is at least 32-bit so it might be too small for 64-bit `double`,
and `long long` is at least 64-bit.