Commit Graph

70 Commits

Author SHA1 Message Date
WerWolv
a2c4aefced fix: Crashes when font failed to be loaded 2025-07-31 23:13:50 +02:00
WerWolv
0e855e10db fix: Slightly adjust icon positions again 2025-07-31 20:54:56 +02:00
WerWolv
fd8bdbdc90 fix: Icons being too big for regular text 2025-07-31 20:32:59 +02:00
WerWolv
83d92dde35 build: Update VSCode Icons font 2025-07-30 23:17:13 +02:00
WerWolv
5c99974202 impr: Only show fonts in the font picker that can actually be used 2025-07-30 22:33:32 +02:00
WerWolv
896e05331c feat: Preload fonts to display them in the font picker 2025-07-30 17:44:12 +02:00
WerWolv
6ab3353a15 fix: Font memory leak 2025-07-30 17:43:28 +02:00
WerWolv
a3c71b3955 fix: Settings onChange handlers running more than once in some cases 2025-07-28 18:02:33 +02:00
WerWolv
46b13b6606 impr: Nicer font registering API 2025-07-28 18:02:33 +02:00
WerWolv
bc644e324a impr: Add extra suffixes for regular / bold / italic font variations 2025-07-26 14:30:30 +02:00
WerWolv
8782be593d feat: Added ability to draw Bold and Italic text 2025-07-26 14:22:50 +02:00
WerWolv
2998cc0fd7 impr: Cleanup font loading 2025-07-26 14:01:31 +02:00
WerWolv
c1545b57c9 impr: Cleanup font loading API, fix CJK glyphs being rendered way too large 2025-07-25 23:06:44 +02:00
WerWolv
de62a4c71e impr: Better icon centering in icon buttons 2025-07-17 20:12:38 +02:00
WerWolv
5782236379 impr: Disable hinting for pixel perfect font 2025-07-11 15:04:21 +02:00
WerWolv
88de5f6be4 impr: Better font settings window 2025-07-11 14:55:25 +02:00
WerWolv
4520637aed fix: Pixel perfect font not scaling correctly 2025-07-11 14:54:54 +02:00
WerWolv
2ab54baa2c fix: DPI scaling 2025-07-10 14:39:52 +02:00
Nik
d1840a2184 build: Update ImGui to v1.92.1 (#2325)
Update ImGui to the latest version and rewrite most of the font handling
code
2025-07-10 10:00:39 +02:00
WerWolv
053f7655c3 fix: Crashes on exit due to font deletion
#2287
2025-06-28 22:58:55 +02:00
Shadow775711
df3b85765d Polish translation (#2295)
Feature description

This pull request introduces full Polish language support to ImHex.
It is a new feature that allows users to switch the UI to Polish,
improving accessibility for Polish-speaking users.

Implementation description

-Translated a total of 10 JSON language files into Polish (pl_PL.json)

-All translations were done manually, with the help of tools such as
DeepL, large language models (LLMs), and technical dictionaries

-Validated the JSON files using [jsonlint.com](https://jsonlint.com/)

-Performed initial UI testing — all translated strings appear and render
correctly

Screenshots

Below is an example of the UI in Polish:
![Zrzut ekranu z 2025-06-05
21-31-55](https://github.com/user-attachments/assets/762ab695-0851-4183-80c5-f52d4e02ac18)

![Zrzut ekranu z 2025-06-05
21-34-47](https://github.com/user-attachments/assets/2df0b26d-4f88-4ddc-b445-8793c8549723)



Additional things

-I'm a beginner with both ImHex and English, so I may have missed some
things

-I'm fully open to any suggestions or corrections — whether related to
translation accuracy or JSON formatting/style

-I would greatly appreciate it if the reviewer could:

-Confirm that the project still compiles correctly (it built fine on my
side using ninja)

-Check that the pl_PL.json files are properly formatted and follow the
project's standards

If there are preferred tools or workflows for validating and formatting
JSON in this repository, I’d be happy to adopt them in the future.

---------

Co-authored-by: paxcut <53811119+paxcut@users.noreply.github.com>
2025-06-24 02:02:42 -07:00
only9464
2b352c6d7a i18n: update Chinese (Simplified) translations (#2313)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->
Updated
[plugins/builtin/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/builtin/romfs/lang/zh_CN.json)、
[plugins/diffing/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/diffing/romfs/lang/zh_CN.json)、
[plugins/disassembler/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/disassembler/romfs/lang/zh_CN.json)、
[plugins/fonts/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/fonts/romfs/lang/zh_CN.json)、
[plugins/hashes/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/hashes/romfs/lang/zh_CN.json)、
[plugins/ui/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/ui/romfs/lang/zh_CN.json)、
[plugins/visualizers/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/visualizers/romfs/lang/zh_CN.json)
file to add support for Chinese language
### Implementation description
<!-- Explain what you did to correct the problem -->
| Plugin | Before
Modification([WerWolv/ImHex](https://github.com/WerWolv/ImHex)) | After
Modification([only9464/ImHex](https://github.com/only9464/ImHex)) |

|---------------|-------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
| builtin |
[plugins/builtin/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/builtin/romfs/lang/zh_CN.json)
|
[plugins/builtin/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/builtin/romfs/lang/zh_CN.json)
|
| diffing |
[plugins/diffing/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/diffing/romfs/lang/zh_CN.json)
|
[plugins/diffing/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/diffing/romfs/lang/zh_CN.json)
|
| disassembler |
[plugins/disassembler/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/disassembler/romfs/lang/zh_CN.json)
|
[plugins/disassembler/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/disassembler/romfs/lang/zh_CN.json)
|
| fonts |
[plugins/fonts/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/fonts/romfs/lang/zh_CN.json)
|
[plugins/fonts/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/fonts/romfs/lang/zh_CN.json)
|
| hashes |
[plugins/hashes/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/hashes/romfs/lang/zh_CN.json)
|
[plugins/hashes/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/hashes/romfs/lang/zh_CN.json)
|
| ui |
[plugins/ui/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/ui/romfs/lang/zh_CN.json)
|
[plugins/ui/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/ui/romfs/lang/zh_CN.json)
|
| visualizers |
[plugins/visualizers/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/visualizers/romfs/lang/zh_CN.json)
|
[plugins/visualizers/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/visualizers/romfs/lang/zh_CN.json)
|

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->
I don't think this PR needs a screenshot, maybe
### Additional things
<!-- Anything else you would like to say -->
Nothing
2025-06-23 05:07:43 -07:00
WerWolv
ed3e2f65f8 impr: Set default font size to 12pt 2025-05-25 23:32:43 +02:00
WerWolv
69b07d40e4 build: Updated ImGui to v1.91.9b 2025-05-25 15:30:33 +02:00
WerWolv
b96692b1ba fix: Global scale race condition during font loading 2025-05-25 15:11:09 +02:00
WerWolv
de16375903 impr: Slightly simplify subpixel rendering logic and required ImGui patches 2025-05-24 22:32:08 +02:00
WerWolv
c6548d5ad1 fix: Non-subpixel rendered glyphs appearing as white rectangles if subpixel rendering is enabled 2025-05-24 21:59:21 +02:00
WerWolv
c69a7012c5 fix: Unifont glyphs being rendered too far down 2025-05-24 16:09:15 +02:00
WerWolv
823013a3d9 fix: Fonts being smaller than their set size value 2025-05-24 11:47:46 +02:00
WerWolv
0f0bff1685 fix: Remaining Subpixel rendering issues 2025-05-19 00:00:32 +02:00
WerWolv
b6387c3f64 fix: Crash when loading subpixel font didn't work 2025-05-18 11:10:43 +02:00
WerWolv
fa3ed7e618 impr: Load all unicode planes if requested 2025-05-11 23:26:27 +02:00
WerWolv
a207969dec fix: Unicode enable option not working correctly 2025-05-11 23:07:52 +02:00
WerWolv
5a095cc993 fix: Icon scaling when using pixel perfect font 2025-05-11 17:42:36 +02:00
WerWolv
e9e3d25315 fix: Rendering on macOS being broken 2025-05-11 17:18:43 +02:00
WerWolv
e2735e283e fix: Text not rendering at all on the Web version 2025-05-11 17:07:19 +02:00
paxcut
5c4cf7379f feat: Added Subpixel Font rendering (#2092)
Proof of concept for implementing subpixel processing in ImGui. This is
work in progress, and it is bound to have problems.

What it does:
1) Uses freetype own subpixel processing implementation to build a
32-bit color atlas for the default font only (no icons, no unifont) . 2)
Avoids pixel perfect font conversion when possible. 3) Self contained,
no ImGui source code changes.
4) Results in much improved legibility of fonts rendered on low dpi LCD
screens that use horizontal RGB pixel layouts (no BRG or OLED or CRT if
they even exist anymore)

What it doesn't:
1) Fancy class based interface. The code is barely the minimum needed to
show it can work. 2) Dual source color blending. That needs to be
implemented in shader code, so it needs to change ImGui source code
although minimally. This will result in some characters appearing dimmer
than others. Easily fixed with small fragment and vertex shaders. 3)
subpixel positioning. If characters are very thin they will look
colored, or they can be moved to improve legibility. 4) deal with
detection of fringe cases including rare pixel layouts, non LCD screens,
Mac-OS not handling subpixel rendering and any other deviation from the
standard LCD. 5) tries to be efficient in speed or memory use. Font
Atlases will be 4 times the size they were before, but there are no
noticeable delays in font loading in the examples I have tried.

Any comments and code improvements are welcome.

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2025-05-11 15:36:32 +02:00
Geky
be44676b01 i18n: Added french translation (#2171) 2025-04-24 11:14:41 +02:00
WerWolv
d7960dccb4 fix: ID collision when having duplicate fonts installed
Fixes #2141
2025-02-25 11:52:46 +01:00
WerWolv
d3c2516f5f fix: Occasional crash when switching fonts 2025-02-18 21:50:51 +01:00
WerWolv
02b5df03ab impr: Drastically reduce font-related memory usage 2025-02-10 12:02:05 +01:00
WerWolv
7340a30650 impr: Make scalable font the default 2025-01-26 14:26:57 +01:00
WerWolv
403104dda1 fix: Properly scale unifont glyphs 2025-01-26 14:21:17 +01:00
WerWolv
8334fbb236 fix: Properly apply backing scaling to pixel perfect default font 2025-01-26 14:18:20 +01:00
WerWolv
93f1f5d076 impr: Better font scaling with larger backing scale factors 2025-01-25 22:27:59 +01:00
Wolf
b646ece14b impr: Refactor and restructure Event Manager (#2082)
### Problem description
This PR addresses issue #2013 that described a cluttered Event Manager.

This is a DX issue and should not impact the users whatsoever.

### Implementation description
The changes revolve around three main points:

1. the Event Manager (`event_manager.hpp`) was split into four
categories: GUI, Interaction, Lifecycle, and Provider, and two types:
Events, and Requests. This results in the following files:
    - `events_gui.hpp`
    - `events_interaction.hpp`
    - `events_lifecycle.hpp`
    - `events_provider.hpp`
    - `requests_gui.hpp`
    - `requests_interaction.hpp`
    - `requests_lifecycle.hpp`
    - `requests_provider.hpp`

2. Every event and request now has its own piece of documentation, with
a `@brief`, accompanied by a longer comment if needed, and gets its
`@param`s described.

3. The old `event_manager.hpp` import was removed and replaced by the
correct imports wherever needed, as to reduce spread of those files only
to where they are truly useful.

### Additional things
The commits have been split into (chrono-)logical steps:
- `feat`: split the Event Manager, and replace the imports
- `refactor`, `chore`: make various small changes to match the required
structure
- `docs`: add documentation for events and requests

Hopefully, this will help to review the PR.
*Note: Beware of very long rebuild times in between the commits, use
them sparingly! The Actions will ensure this PR builds anyways*

Closes #2013

---------

Signed-off-by: BioTheWolff <47079795+BioTheWolff@users.noreply.github.com>
Co-authored-by: Nik <werwolv98@gmail.com>
2025-01-25 15:32:07 +00:00
WerWolv
35e8acd69d impr: Only enable font config Apply button when setting has changed 2025-01-25 15:50:52 +01:00
WerWolv
c117d9b3e5 fix: Crash when changing DPI 2025-01-19 23:07:53 +01:00
WerWolv
117eb1e2a7 feat: Added more granular font settings
Fixes #1260
2025-01-18 23:34:43 +01:00
WerWolv
3129d6e8fd impr: Simplified custom font selection 2025-01-18 19:03:55 +01:00