Küzdelem a Windows konzollal – avagy hogyan nem rajzolunk betűket 2025-ben
Amikor elkezdtem betűket és karaktereket kirakni a Windows konzolra, az volt a célom, hogy egy gyors, alacsony szintű „renderer”-t készítsek. Valami olyasmit, mint a régi DOS-os, karakteres felületű játékok vagy demók, csak modern megközelítéssel: Unicode, színek, akár 144 Hz fölötti frissítés. A konzolnak elvileg alkalmasnak kellene lennie erre – hiszen képes szöveget és színeket kezelni –, de a gyakorlatban kiderült, hogy a Windows konzol mélyen a múltban ragadt.
Először a klasszikus WriteConsoleOutputW
API-t próbáltam, ami egy nagy sebességű, rácsos memóriaművelet: egyetlen hívással akár több ezer karaktert és színt is ki lehet írni. A teljesítmény kiváló volt, de gyorsan kiderült, hogy az API nem támogatja a modern Unicode-karaktereket, például az emojikat. A karakterrács ugyanis fixen egyetlen UTF-16 kódot tárol cellánként, így minden, ami surrogate-párt igényel, egyszerűen szétesik.
Ezután jött a WriteConsoleW
, ami már