* Use generator expressions
* Update cmake minimum
* Move options and remove project name
* Use further generator expressions
* Try upgrading to CMake 3.25 on Ubuntu 22.04 CI
Install software-properties-common
* Standardise with DISABLE_TTF for disable defines
* Set X64 var differently due to unknown reasons
---------
Co-authored-by: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com>
* Allow high image ids when rendering an inline sprite
* CustomWindow: refactor use of ImageId::FromUInt32
* Dropdown: refactor use of ImageId::FromUInt32, ToUInt32
* Remove ImageId::FromUInt32
* Fix typo in mechanic status string ids
* Rewrite InventoryFormatItem to not use inline sprites any more
* Widget: replace ImageId::ToUInt32 with ImageId::GetIndex
* Remove ImageId::ToUInt32
Should fix [#21039 ](https://github.com/OpenRCT2/OpenRCT2/issues/21039).
As it is explained in the issue, the outline and inset code would not respect the DPI bounds in the drawing process by accessing e.g. `*(dst + 1)` to draw an outline, in this case to the right.
#### Approach
I approached this issue by creating a function `GetPixel()` in `TTFSurface` that would return a value if the given x and y coordinates is a part of a TTF text, else 0.
In the for loop, iterating through the TTF text, the if condition
```
if (surface->GetPixel(xx + srcX_start + 1, yy + srcY_start)
|| surface->GetPixel(xx + srcX_start - 1, yy + srcY_start)
|| surface->GetPixel(xx + srcX_start, yy + srcY_start + 1)
|| surface->GetPixel(xx + srcX_start, yy + srcY_start - 1))
```
checks if the coordinates **(xx, yy)** is an outline of a text. the writing bounds. Adding `srcX_start`, which is 0 or `-skipX` if `skipX < 0`, when calling `GetPixel()`, would shift the pixel access to the correct position, where the text begins on the surface. The same is done for the Y axis. (Not having this would lead to the outlines/insets not moving with the text when the window with the TTF text moves)
Fixes a consistent assertion when displaying "Cannot start construction"
in Japanese, but it has potential fix countless other crashes
related to string wrapping/display.