Skip to main content

Apple以Swift改寫TrueType微調直譯器,降低記憶體安全風險且較C語言版快13%

Posted in 業界新聞
新聞

TrueType是常見的向量字型標準,網頁、PDF、作業系統與應用程式都可能使用,可內含供微調引擎執行的程式,系統透過位元組碼直譯器處理這些程式,在特定字級或低解析度畫面調整字形輪廓,使文字更容易閱讀。雖然現代高解析度螢幕已能直接呈現細緻字型,但Apple指出,仍有字型需要該機制確保可讀性。

Apple現在公開原始碼,提供底層C元件搬遷到Swift的參考實例。字型解析器會處理來自網頁或文件的外部資料,資料來源不一定可信,因此直譯器若存在記憶體錯誤,就可能成為攻擊入口。Apple將該元件改寫為Swift,讓關鍵程式碼具備更好的記憶體安全性。

改寫的難處不只在於更換程式語言,Apple說明,新版直譯器必須讓既有程式在不修改的情況下繼續運作,也必須產生與C版本相同的文字顯示結果。字型微調會影響字形最後落在畫面上的像素位置,因此即使直譯器行為只有細微差異,也可能讓使用者看到不同的文字外觀。

Apple把正確性定義為輸出結果必須與原C實作一致,Apple建立兩套測試,第一套是可同時測試C與Swift版本的單元測試,程式碼覆蓋率達99.7%。第二套則從1,000萬個PDF檔案中縮減出4,200個測試文件,且不降低程式碼覆蓋率。這批文件內含25,572個字型,合計2,700萬個字形,Apple再以4種不同轉換方式產生畫面結果,逐一比對輸出的點陣圖。

效能方面,Apple指出,最佳化工作集中在降低Swift執行期成本、減少C與Swift之間的資料複製、避免短時間記憶體配置,以及減少動態分配。Apple表示,在其測試中,Swift版直譯器平均比被取代的C版本快13%。

View original 0 Likes 0 Boosts

Comments (0)

No comments yet.