Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=879&lang=405, vytištěno: 06/05/2024 05:17:35
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.
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ě. 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. 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. 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. 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 |