Hello Anurag,
> From what I understood, the main performance improvement that > fontdue claims to have is that it stores the font outlines > differently, i.e. it seems to perform the curve flattening at > initial load and stores the outline in the form of "v_lines" and > "m_lines", presumably indicating "vertical lines" and lines spanning > "multiple pixels horizontally". > > While trying to implement and benchmark it, I realized I had made a > mistake in my previous benchmarks : I did not disable hinting. > > Fontdue does not support hinting, while the default mode for > FreeType seems to have hinting enabled, leading to a decrease in > performance. This was also an issue with the benchmark program used > by fontdue. > > I created a small benchmark program and reran the benchmarks with > hinting disabled, and as expected freetype was much faster with > hinting disabled. So much so that on arm64 where there is no SIMD > in fontdue, FreeType is faster in every single case. With 'FreeType' you mean the standard rasterizer in `src/smooth`, right? > Its only with SIMD optimizations that fontdue is faster in a small > range of sizes. Very interesting! Raph, can you comment, please? You can find Anurag's comparison images at https://lists.nongnu.org/archive/html/freetype-devel/2023-08/msg00008.html > I have also discovered some sort of regression with the `smooth` > rasterizer using the font "Cascadia Code". Its performance degrades > rapidly when rendering that font. A preliminary check indicates > something to do with "overlap_spans", I will send the `perf` results > as well ASAP. Thanks in advance. > While I am trying to investigate more thoroughly, the benchmarks at > first glance seem to indicate that only the SIMD improvement is > worth considering and the other claims of performance don't seem to > work well. What exactly did you compare time-wise with FreeType's 'smooth' render? The original Rust version of 'fontdue', or your conversion of 'fontdue' into a FreeType driver module written in C? https://gitlab.freedesktop.org/freetype/freetype/-/tree/gsoc-anurag-2023 Werner