1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-26 06:28:30 +02:00
VVVVVV/desktop_version/src
Dav999 59ccdbea00 Implement bidi reordering at display time
I'm now using SheenBidi to reorder RTL and bidirectional text properly
at text rendering time! For Arabic this is still missing reshaping, but
everything's looking really promising now!

The code changes are really non-invasive. The changes to Font.cpp are
absolutely minimal:

     1305+    if (bidi_should_transform(text))
     1306+    {
     1307+        text = bidi_transform(text);
     1308+    }

There's now a FontBidi.cpp, which implements these two functions,
notably bidi_transform(), which takes a UTF-8 encoded string and
returns another UTF-8 encoded string that has bidi reorderings and
reshapings applied.

In that function, SheenBidi gives us information about where in the
input string runs start and end, and on a basic level, all we need to
do there is to concatenate the parts together in the order that we're
given them, and to reverse the RTL runs (recognizable by odd levels).

As this is a proof-of-concept, bidi_should_transform() still always
returns true, applying the bidi algorithm to all languages and all
strings. I'm thinking of enabling bidi only when the language/font
metadata enables RTL (which could be for the interface or for a custom
level), or outside of that, at least when RTL characters are detected
(such as Arabic or Hebrew Unicode blocks).
2024-01-08 19:17:44 -08:00
..
ActionSets.h Add controller button layout mappings 2023-03-21 19:59:48 -07:00
Alloc.h Replace all free calls with VVV_free[func] 2022-11-30 22:50:08 -08:00
BinaryBlob.cpp Replace all free calls with VVV_free[func] 2022-11-30 22:50:08 -08:00
BinaryBlob.h Use fixed-size int types for resourceheader 2021-09-23 22:21:49 -07:00
BlockV.cpp Make activity zone prompts loc::gettext'ed at display time 2023-09-20 16:20:24 -07:00
BlockV.h Make activity zone prompts loc::gettext'ed at display time 2023-09-20 16:20:24 -07:00
ButtonGlyphs.cpp Steam now shares device info with SDL! 2023-12-20 23:17:28 -05:00
ButtonGlyphs.h Add "type:" override check for virtual Sony gamepads. 2023-12-01 12:08:26 -05:00
Constants.h Fix SCREEN_HEIGHT_PIXELS being wrong constant 2021-10-01 09:35:28 -07:00
Credits.h updated credits to include the Eternal Dream Arabization team 2024-01-04 16:29:01 +01:00
CustomLevels.cpp Remove NO_EDITOR/NO_CUSTOM_LEVELS, disable editor on Steam Deck 2023-08-25 09:50:27 -07:00
CustomLevels.h Remove NO_EDITOR/NO_CUSTOM_LEVELS, disable editor on Steam Deck 2023-08-25 09:50:27 -07:00
CWrappers.cpp Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
CWrappers.h Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
DeferCallbacks.c Add deferred callbacks to game loop 2021-03-21 02:55:42 -04:00
DeferCallbacks.h Add deferred callbacks to game loop 2021-03-21 02:55:42 -04:00
Editor.cpp Fix another incorrect autotile 2024-01-08 13:17:59 -08:00
Editor.h Make outside background tiles ignore solid walls 2023-12-15 19:40:07 -08:00
Ent.cpp Disable more flashing elements if a11y is on 2023-04-05 20:02:29 -07:00
Ent.h Use SDL_Color for colors instead of colourTransform 2023-01-01 16:36:43 -08:00
Entity.cpp Make activity zone prompts loc::gettext'ed at display time 2023-09-20 16:20:24 -07:00
Entity.h Remove x-position from setactivityposition 2023-02-17 20:47:32 -08:00
Enums.h Remove unused game-gamestates 2021-12-18 00:01:32 -08:00
Exit.h Use SDL_NORETURN 2021-09-27 10:32:23 -07:00
FileSystemUtils.cpp Fix compiler warnings on Android 2023-10-25 14:44:34 -07:00
FileSystemUtils.h Add warning messages for missing fonts/lang folders 2023-09-20 16:20:24 -07:00
Finalclass.cpp Strip out old special roomname system 2023-03-02 22:58:12 -08:00
Finalclass.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
Font.cpp Implement bidi reordering at display time 2024-01-08 19:17:44 -08:00
Font.h PR_BOR8 -> PR_FULLBOR, border8 -> full_border 2023-11-19 15:59:27 -08:00
FontBidi.cpp Implement bidi reordering at display time 2024-01-08 19:17:44 -08:00
FontBidi.h Implement bidi reordering at display time 2024-01-08 19:17:44 -08:00
Game.cpp Add a fast-forward keybind to level debugger 2023-12-29 13:56:30 -08:00
Game.h Add localisation credits to main menu credits 2023-12-05 16:14:06 -08:00
GlitchrunnerMode.c Split glitchrunner mode into multiple versions 2021-08-05 13:35:21 -04:00
GlitchrunnerMode.h Split glitchrunner mode into multiple versions 2021-08-05 13:35:21 -04:00
GOGNetwork.c Axe NETWORK_[set/get]AchievementProgress() 2021-09-19 21:49:54 -07:00
Graphics.cpp Fix regression: Tower BG lerps in reverse direction 2023-12-29 14:11:08 -08:00
Graphics.h Add textimage for levelcomplete and gamecomplete 2023-11-19 15:07:25 -08:00
GraphicsResources.cpp Add support for translatable sprites 2023-10-31 22:31:41 -07:00
GraphicsResources.h Add support for translatable sprites 2023-10-31 22:31:41 -07:00
GraphicsUtil.cpp Add inbounds pixel assertion to DrawPixel/ReadPixel 2023-12-29 11:54:19 -08:00
GraphicsUtil.h Fix memory leak with ApplyFilter 2023-10-27 10:25:42 -07:00
Input.cpp Fix current_credits_list_index not always being reset 2023-12-15 20:00:05 -08:00
Input.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
InterimVersion.h Use PR_RIGHT for interim version info in main menu 2023-02-13 23:27:00 -08:00
InterimVersion.in.c Use PR_RIGHT for interim version info in main menu 2023-02-13 23:27:00 -08:00
KeyPoll.cpp Add "type:" override check for virtual Sony gamepads. 2023-12-01 12:08:26 -05:00
KeyPoll.h Generalize stretch mode mouse scaling fix 2023-08-17 19:57:54 -07:00
Labclass.cpp Add level exploring menu for translators 2022-12-31 20:04:56 -08:00
Labclass.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
LevelDebugger.cpp Disable debugger logic when not active 2024-01-06 20:51:59 -08:00
LevelDebugger.h Fix moving entities flashing in over 30fps mode 2023-11-19 17:34:23 -08:00
Localization.cpp Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
Localization.h Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
LocalizationMaint.cpp Make language sync support creating blank language files 2023-12-15 19:48:55 -08:00
LocalizationMaint.h Add cutscene test menu 2022-12-31 20:04:56 -08:00
LocalizationStorage.cpp Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
LocalizationStorage.h Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
lodepng_wrapper.c Migrate LodePNG to submodule 2022-03-13 23:50:37 -07:00
Logic.cpp Fix moving entities flashing in over 30fps mode 2023-11-19 17:34:23 -08:00
Logic.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
main.cpp Enable SDL_HINT_IME_SHOW_UI to make typing CJK not guesswork 2024-01-05 15:24:27 -08:00
MakeAndPlay.h Use multiline comments in C files 2021-04-17 00:50:04 -04:00
Map.cpp Change saved <summary> tag back to English 2023-11-19 13:49:59 -08:00
Map.h Simplify mapclass::currentarea() 2023-11-19 13:49:59 -08:00
Maths.h Use SDL_Point instead of rolling our own point struct 2023-01-28 23:32:14 -08:00
Music.cpp Fix remaining audio speedup/slowdown bug 2023-11-28 20:16:38 -05:00
Music.h Implement haltedsong 2023-06-08 15:38:26 -07:00
Network.c Axe NETWORK_[set/get]AchievementProgress() 2021-09-19 21:49:54 -07:00
Network.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Otherlevel.cpp Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
Otherlevel.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
preloader.cpp Migrate more prints and graphics.len calls to font:: 2023-02-13 23:27:00 -08:00
preloader.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
ReleaseVersion.h De-duplicate release version 2022-08-23 00:00:39 -07:00
Render.cpp Fix clash between Gravitron start text and timer 2024-01-06 20:38:25 -08:00
Render.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
RenderFixed.cpp Remove NO_EDITOR/NO_CUSTOM_LEVELS, disable editor on Steam Deck 2023-08-25 09:50:27 -07:00
RenderFixed.h Show skip prompt during credits and ending picture 2023-06-05 17:57:23 -07:00
RoomnameTranslator.cpp Fix TAB bind conflict with translator & debugger 2024-01-05 11:42:10 -08:00
RoomnameTranslator.h Migrate more prints to font::, determine font for most textboxes 2023-02-13 23:27:00 -08:00
Screen.cpp Address review 2023-10-25 14:44:34 -07:00
Screen.h Store display index of window to settings 2023-03-21 00:23:42 -07:00
ScreenSettings.h Store display index of window to settings 2023-03-21 00:23:42 -07:00
Script.cpp Translate hardest room at display time instead of at time of death 2023-11-19 16:47:52 -08:00
Script.h Add textimage for levelcomplete and gamecomplete 2023-11-19 15:07:25 -08:00
Scripts.cpp Fix "he'd be a a big help" typo 2023-11-30 08:38:40 -08:00
Spacestation2.cpp Use enums for time trial indexes 2023-06-05 17:57:23 -07:00
Spacestation2.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
SteamNetwork.c Silence GCC warnings about void*-to-function-pointer casts 2021-10-21 01:00:06 -07:00
TerminalScripts.cpp Add textcase(n) commands to scripts 2022-12-31 20:04:56 -08:00
Textbook.c VS2010 buildfixes. 2023-11-27 12:09:42 -05:00
Textbook.h Add Textbook 2022-12-31 20:04:56 -08:00
Textbox.cpp Add textimage for levelcomplete and gamecomplete 2023-11-19 15:07:25 -08:00
Textbox.h Add textimage for levelcomplete and gamecomplete 2023-11-19 15:07:25 -08:00
ThirdPartyDeps.c Replace all free calls with VVV_free[func] 2022-11-30 22:50:08 -08:00
Tower.cpp Add POS_MOD macro and use for all positive modulos 2021-09-24 17:48:15 -07:00
Tower.h Remove vmult lookup tables 2021-09-24 16:37:27 -07:00
TowerBG.h Move from surfaces to the SDL render system 2023-01-28 14:36:28 -08:00
Unreachable.h Use _SDL_HAS_BUILTIN 2022-12-29 16:13:54 -08:00
Unused.h Factor out UNUSED macro to header file 2021-05-25 15:23:34 -04:00
UTF8.c Add UTF8.c 2023-02-27 23:00:41 -08:00
UTF8.h Add UTF8.c 2023-02-27 23:00:41 -08:00
UtilityClass.cpp Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
UtilityClass.h Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
VFormat.c Add a system for selecting between wordy/wordy2 2024-01-06 14:11:40 -08:00
VFormat.h Add support for button glyph display 2023-03-21 19:59:48 -07:00
Vlogging.c VS2010 buildfixes. 2023-11-27 12:09:42 -05:00
Vlogging.h Add -console option on Windows 2022-11-14 19:40:23 -08:00
WarpClass.cpp Add level exploring menu for translators 2022-12-31 20:04:56 -08:00
WarpClass.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
XMLUtils.cpp Move all settings to settings.vvv 2020-11-04 12:06:57 -05:00
XMLUtils.h Add localization "foundation" (many code changes) 2022-12-31 20:04:56 -08:00
Xoshiro.c VS2010 buildfixes. 2023-11-27 12:09:42 -05:00
Xoshiro.h Replace Gravitron RNG with seeded Xoshiro 2021-08-27 12:28:35 -07:00