Update the compatibility mode for DJI to use the actual DJI font. #10046
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Since INAV 6.0, there has been a feature introduced to add support for DJI's incomplete MSP DisplayPort implementation. It was called BFCOMPAT mode. The issue is, at the time it was believed that DJI's font was using BetaFlight's font. But the truth is that it doesn't. DJI's font uses some elements of an old BetaFlight font, and some of their 4.3 font. Meaning, it doesn't actually align with BetaFlight. It's DJI's own font layout.
Here is a document containing the differences BF vs BF vs DJI.xlsx
This PR works toward making a couple of changes for better compatibility with DJI.
BFCOMPAT?
Firstly. INAV doesn't need to be compatible with BetaFlight's font. The two firmwares are not sharing OSD data. So BFCOMPAT is really a misnomer. What we are trying to be compatible with is DJI's incomplete MSP DisplayPort implementation. So this is really what that OSD type is really about. No other system uses only BetaFlight's font. All of this is just for DJI. So I believe the distinction should be made.
To address this. This PR renames BFCOMPAT to DJICOMPAT.
What the font?
Because this whole thing is to try and give DJI pilots the best viewing experience. Until DJI stop being selfish, inconsiderate arseholes and actually fix their product, that is. This should be based on the font inside the DJI goggles. This font has not changed since the first goggles were released. So it is pretty stable.
While I appreciate that in the future DJI could make changes to their font. There is also nothing stopping BetaFlight to make changes too. Those changes could actually pull it further away from DJI's font. Meaning more incompatibility. So yes, in the future. DJI's font could change. I see it as no worse than sticking with BetaFlight's font. However, there are some positives to using DJI's font. As there are elements that can be used, which were not previously mapped because BetaFlight's later font was being used. Which no longer had those elements.
This PR maps available characters in the DJI font to symbols in INAV. I have also added some extra translations which seem appropriate and acceptable.
This was all discussed in Discord. I know that some are for the change, others are against. There was a vote, which resulted in a tie. So I have done the work, and will leave it up to @DzikuVx to decide if this change goes ahead or not. At the end of the day, I don't even use DJI. So my OSDs are already perfect. In fact, I think DJI are a shady, despicable company who are only after people's money.
Even after all that. I still put this PR forward. Why? Because I believe it's the best way we can support their pilots using INAV. That is until DJI hopefully do the right thing and fully implement MSP DisplayPort, with user uploadable fonts. Just like every other mainstream HD system does.