WebblÀsaren Chrome har flyttats till typsnittsmotorn Skrifa, skriven i Rust.

Google har översatt webblÀsaren Chrome till biblioteket Skrifa, som Àr skrivet i Rust och erbjuder möjligheter för hantering av typsnitt i OpenType-format. Skrifa implementerar en delmÀngd av funktionerna i typsnittsmotorn FreeType, vilket Àr nödvÀndigt för 2D-biblioteket Skia som anvÀnds i Chrome och Chromium. För att frigöra Skia-biblioteket frÄn beroendet av FreeType-motorn har en ny typsnittsbakÀnd skapats som Àr baserad pÄ Skrifa.

I Chrome 128 inkluderades den pÄ Rust skrivna bakÀnden i ett experimentellt lÀge för sÀllan anvÀnda typsnittformat, sÄsom CFF2 och fÀrgade typsnitt. FrÄn och med lanseringen av Chrome 133 anvÀnds den nya bakÀnden för alla webtypsnitt i byggnader för plattformar som Linux, Android och ChromeOS. PÄ plattformarna Windows och macOS anvÀnds den nya motorn för nÀrvarande som en reserv och tillÀmpas om systemet inte stöder det typsnittformat som webblÀsaren försöker visa.

Koden för Skrifa Àr utvecklad av Googles ingenjörer inom verktyget Fontations och Àr öppet licensierad under MIT- och Apache 2.0-licenserna. För att verifiera Skrifas funktionalitet har cirka 700 enhetstester förberetts. Biblioteket stöder avkodning av glyfer i formaten glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT och sbix, samt variabla typsnitt i formaten glyf, CFF2 och COLRv1, och hintning av typsnitt i formaten glyf, CFF och CFF2.

Förutom biblioteket Skrifa, som tillhandahÄller ett API för att fÄ Ätkomst till typsnittsmetadata och ladda glyfens konturer, inkluderar verktyget Fontations lÄg-nivÄbibliotek för att lÀsa, parsa, modifiera och skapa typsnittsdata i OpenType-format. Fontations Àr Ä sin sida en del av projektet Oxidize, som skapades för att översÀtta verktyg och bibliotek för arbete med texter och typsnitt frÄn komponenter pÄ sprÄk som Python (fonttools, fontmake, nanoemoji) och C++ (HarfBuzz, FreeType) till nya implementationer skrivna i Rust.

Utvecklingen av komponenter i Rust pÄbörjades pÄ grund av otillrÀcklig effektivitet vid felupptÀckter genom fuzzing-testning, eftersom typsnittsformat Àr för komplexa för att tÀcka alla möjliga kombinationer. Till exempel upptÀcktes en kritisk sÄrbarhet i FreeType förra veckan, vilket gjorde det möjligt att köra kod vid bearbetning av sÀrskilt utformade typsnitt genom buffertöverflöde. Förutom FreeType-motorn kan sÀkerhetsproblem ocksÄ skapas av dess beroenden, som bzip2, libpng och zlib.

AnvÀndningen av Rust har kraftigt minskat sannolikheten för problem med minneshantering, förbÀttrat kodens kvalitet, minskat tiden som behövs för att ÄtgÀrda sÀkerhetsproblem och ökat hastigheten pÄ införandet av förbÀttringar av Chromes fontfunktioner. Enligt statistik frÄn Google och Microsoft orsakar cirka 70 % av farliga sÄrbarheter problem med minneshantering, vilket kan undvikas genom att anvÀnda Rust utan unsafe-block.

Till exempel skulle anvÀndningen av Rust ha förhindrat tidigare identifierade problem i FreeType-koden relaterade till Ätkomst till frigjorda minnesomrÄden, bufferöverflöd, Ätkomst till arrayer utan indexkontroll, heltalsöverflöd, felaktig anvÀndning av oinitierade minnesomrÄden och typkonverteringsfel.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster