TTMSFMXHTMLText rendering is slow on Mac

I have an empty test app with only a TTMSFMXHTMLText control inside a TVertScrollBox.
The HTML text contains around 200 words with a few html tags.

Rendering on Windows is fast, but on OSX it takes around 1 second on a Mac mini! - this means scrolling with the mouse wheel, which can easily scroll 5 steps at once, takes 5 seconds.
For the user it looks like the app has crashed because it is unresponsive for that long.

Is there any solution for that?


It depends on the kind of HTML that is being used, but the HTML needs to be parsed in order to be rendered. Can you send us a sample with the specific HTML? Alternatively, you can also use the TTMSFMXWebBrowser that has a LoadHTML function.
Below is the HTML text that I used in the test app. I can send the test app too if you like:

<FONT size="16" color="#111111">
The first three notes of the major scale include three possible melodic intervals (from smallest to largest): the <i>Unison</i>, the <i>Major 2nd</i>, and the <i>Major 3rd</i>.<br><br>In this exercise, your task is to simply listen and learn the sounds of each of these three intervals. You''ll hear two melodic intervals and be asked which of the intervals is larger.<br><br><i>A few helpful hints:</i><br><ul><li>When an interval is ascending (i.e. C up to E), it often sounds a bit different than when the interval is descending (i.e. E down to C).</li><li>Make sure that you are comfortable with both versions (ascending and descending) of these intervals before proceeding to the next lesson.</li><li>Use these exercises to "learn" the sound of the various intervals. The answers will be displayed on the screen, but these answers will disappear in later lessons.</li></ul><br><br>*To identify intervals, a helpful technique for beginners is to use known melodies as references.<br>Here are a few suggestions for each of the intervals included in this lesson:<br><br><b>Unison:</b> "<i>Same tone repeated</i>"<br><b>Major 2nd:</b> "<i>Happy Birthday to You</i>"<br><b>Major 3rd:</b> "<i>Oh, when the Saints</i>"<br><br>The songs listed above are only suggestions, you can compile your own list of reference songs and read more about how to use them at <a href=""></a>.<br><br>When an interval is played descending, start by singing the two tones and then reverse their order so as to sing them ascendingly.<br>


We have investigated this here and are noticing a delay, but unfortunately the rendering is part of the framework. You can change the rendering to see if that improves speed by changing or adding the following keywords to the DPR file:

GlobalUseDirect2D := True/False;
GlobalUseGPUCanvas := True/False;

the unit that needs to be added is FMX.Types

Thank you for your reply. Unfortunately those options have no effect.

GlobalUseGPUCanvas is not supported on the MacOS target
GlobalUseDirect2D has no effect on the speed problem (probably it does nothing on MacOS)

I suppose that the only solution is to optimize the rendering code in the HTML component? -eventually with a double-buffer solution where it renders to a hidden bitmap only when the text or size changes.
I hope you can find a solution.

We'll investigate here what can be done to improve performance.

Thank you. I am looking forward to hearing from you.


Some solution to the TTMSFMXHTMLText render performance?
I find this reference and I have the same problem (two years later)

Additionally, if you use the TMultiview component, the visual effect is uggly

Is there any solution for that?

There is currently no solution. The HTML engine was ported from VCL and currently not optimized for FMX. We have however already added this on our todolist for investigation.