Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=879&lang=405, vytištěno: 30.04.2025 14:19:22
Hlavní stránka▹Produkty▹Programový systém Control Web▹Články | 8.6.2018 |
---|
Přesné, ostré a kvalitně vykreslené písmo již dávno považujeme za naprostou samozřejmost. Máme jej všude kolem sebe na obrazovkách svých telefonů a počítačů a jsme na něj zvyklí. Proč se tím tedy nyní zabývat. Nový update systému Control Web přináší v OpenGL vykreslovacích kontextech změnu ve vykreslování fontů. Někdo ti toho možná ani nevšimne, pro někoho ale může být tato nová technologie dost podstatná. Řeší totiž vykreslování při libovolné změně velikosti a proporcí panelů s udržením maximální ostrosti a pixelové přesnosti písma. |
Kvalita písma v grafických kontextech, které používají Microsoftem oblíbená grafická rozhraní GDI, GDI+ a Direct2D, je velmi vysoká. Ostatně systém DirectWrite je stále považován za etalon kvality. Chceme-li ale využívat otevřené a široce multiplatformně rozšířené grafické API OpenGL, které, korektně řečeno, nemá firma Microsoft v přílišné oblibě, jsme postaveni před nutnost vyřešit vykreslování písma v minimálně v takové kvalitě, která je v současnosti všeobecně očekávána. A zde jsou nám výše jmenované technologie k ničemu, neboť tvůrce operačního systému Windows je do vykreslovacího systému OpenGL neimplementoval. Problémem bitmapových fontů pro OpenGL v rozhraní wgl není ani tak jejich prehistorická kvalita, ale několik závažných chyb v jejich implementaci, které velmi komplikují až prakticky znemožňují jejich použití. A vypadá to, že se můžeme spolehnout na to, že tyto chyby nebudou nikdy opraveny. OpenGL vykreslovač v systému Control Web si každý font inicializuje ve dvou provedeních:
Pro rasterizaci písmen jsme využili systému FreeType. Do této knihovny byl ve spolupráci firem Google a Adobe vestavěn vyspělý rasterizer a technologie FreeType je nyní používána v operačních systémech Android, Chrome OS, iOS, GNU/Linux a v dalších variantách unixových operačních systémů, jako je např. FreeBSD a NetBSD. Kvalita rasterizace je opravdu vysoká a rasterizer je také velmi rychlý. V OpenGL vykreslovači systému Control Web jsou obrazy písmen uloženy v rychlé paměti grafického procesoru. Vykreslování je pak nepřekonatelně rychlé a svým datovým tokem nijak nezatěžuje paměť a CPU. Vnímání a posuzovaní grafické kvality písma je vždy hodně subjektivní a je věcí osobních preferencí. Někdo má raději měkčí okraje znaků. K takovým jedincům patřím i já, nicméně v našem vývojovém týmu drtivě převažuje poptávka po maximální ostrosti písma. Obrázky jsou ve vašem prohlížečí zmenšené a tudíž nepřesné. Je nutno na ně kliknout, abychom je viděli přesně. Jeden za základních TrueType fontů v základní velikosti kontextu, tedy bez zoomu. Ostřejší písmo vlevo je naše nové písmo v OpenGL kontextu, mírně rozmazanější písmo vpravo je rasterizováno systémem Microsoft DirectWrite a vykresleno v Direct2D kontextu. Srovnání FreeType písma antialiasovaného do stupňů šedi a ClearType v GDI využívající vodorovné RGB pořadí barevných subpixelů. Dnes se již převážně upouští od antialiasingu, využívající RGB subpixely. Jednak na vodorovně lineární RGB uspořádání barev obrazových panelů se již dnes nedá spolehnout a tento systém také není použitelný při změně pozice obrazovky na šířku a na výšku. Srovnání OpenGL a Direct2D kontextu se základní velikostí bez zoomu. Font v OpenGL je rasterizován a pozicován pro maximální ostrost. Teď teprve přijdou ty největší potíže. Naše vykreslovací kontexty musíme plynule, tedy neceločíselně, zvětšovat a zmenšovat, a to i neproporčně. Přitom žádoucí je udržet maximální ostrost písma. Také pozice znaků musí plně respektovat bodový rastr zobrazovacího panelu. Opět srovnání OpenGL a Direct2D, tentokrát uprostřed v základní velikosti, nahoře neproporčně zmenšený a rovněž dole neproporčně zvětšený (rozšířený) kontext. Při změnách velikosti vykreslovacího kontextu musí být vždy rasterizována nová podoba písma. Jen tak lze udržet ostrost a bodovou přesnost. Ke každému písmu dokáže OpenGL vykreslovač vytvořit jeho variantu pro obecné prostorové zobrazování. Každý znak je pak vektorovým modelem se souřadnicemi v plovoucí řádové čárce. Navíc znaku mohou být i extrudovány do zvolené hloubky a mohou tak lépe vypadat z některých směrů pohledu. U vektorových reprezentací znaků je důležitým parametrem i přesnost tesselace - tedy to, kolika trojúhelníky jsou aproximovány obrysové křivky. Prvotní vytvoření objektů znaků je pomalejší, než rasterizace. Proto je tato varianta písma vytváří až tehdy, kdy bude opravdu použita. Na druhé straně se tesselace provádí vždy jen jednou - veškeré velikosti jsou vykreslovány ze stejných objektů uložených v grafické paměti GPU. Nové řešení správy písma je jednou z věcí, které jsou připravovány pro novou generaci systému Control Web, a které se nyní objevují i v update stávajících verzí tohoto systému. rc |