ttf-parser 0.5 - librerija ġdida biex taħdem b'fonts TrueType

ttf-parser hija librerija għall-parsing tal-fonts TrueType/OpenType.
Il-verżjoni l-ġdida għandha appoġġ sħiħ għal fonts varjabbli
(fonts varjabbli) u C API, li b'riżultat tagħhom iddeċidejt li nirreklamaha fil-lore.

Sa ftit ilu, jekk kien hemm bżonn li taħdem bil-fonts TrueType, kien hemm eżattament żewġ għażliet: FreeType u stb_truetype. L-ewwel hija taħlita enormi, it-tieni tappoġġja numru pjuttost żgħir ta 'funzjonijiet.

ttf-parser huwa x'imkien fin-nofs. Jappoġġja l-istess tabelli TrueType kollha (il-format TrueType jikkonsisti f'ħafna tabelli binarji separati) bħal FreeType, iżda ma jiġbedx il-glifi nfushom.

Fl-istess ħin, ttf-parser fih ħafna differenzi sinifikanti oħra:

  1. ttf-parser huwa miktub f'Rut mingħajr ma juża mhux sigur. FreeType u stb_truetype huma miktuba f'C.
  2. ttf-parser huwa l-unika implimentazzjoni bla periklu għall-memorja. Il-qari tal-memorja każwali mhuwiex possibbli. Il-vulnerabbiltajiet qed jiġu ffissati kontinwament fil-FreeType, u stb_truetype, fil-prinċipju, mhuwiex iddisinjat biex jaqra fonts arbitrarji.
  3. ttf-parser hija l-unika implimentazzjoni bla periklu għall-ħajt. Il-metodi kollha ta' parsing huma kostanti. L-unika eċċezzjoni hija l-issettjar tal-koordinati għal fonts varjabbli, iżda din il-funzjoni hija reentrant. FreeType huwa bażikament b'ħajt wieħed. stb_truetype - reentrant (tista' tuża kopji individwali f'ħjut differenti, iżda mhux waħda minn ħafna).
  4. ttf-parser hija l-unika implimentazzjoni li ma tużax allokazzjonijiet tal-heap. Dan jippermettilek tħaffef l-analiżi u tevita problemi bl-OOM.
  5. Ukoll, kważi l-operazzjonijiet aritmetiċi kollha u l-konverżjonijiet tat-tipi numeriċi huma kkontrollati (inkluż b'mod statiku).
  6. Fl-agħar każ, il-librerija tista' tarmi eċċezzjoni. F'dan il-każ, fis-C API, se jinqabdu eċċezzjonijiet u l-funzjoni terġa 'lura żball, iżda mhux se tiġġarraf.

U minkejja l-garanziji tas-sigurtà kollha, ttf-parser huwa wkoll l-aktar implimentazzjoni mgħaġġla. Per eżempju, parsing CFF2 huwa 3.5 darbiet aktar mgħaġġel minn FreeType. Parsing glyf, sadanittant, huwa 10% aktar kajman milli fi stb_truetype, iżda dan huwa dovut għall-fatt li ma jappoġġjax fonts varjabbli, li l-implimentazzjoni tagħhom teħtieġ ħażna addizzjonali. informazzjoni. Aktar dettalji fi README.

Sors: linux.org.ru

Żid kumment