ttf-parser is in bibleteek foar it parsearjen fan TrueType/OpenType-lettertypen.
De nije ferzje hat folsleine stipe foar fariabele lettertypen
(fariabele lettertypen) en C API, as gefolch wêrfan ik besleat om it te advertearjen yn 'e lear.
Oant koartlyn, as der ferlet wie om te wurkjen mei TrueType-lettertypen, wiene d'r krekt twa opsjes: FreeType en stb_truetype. De earste is in enoarme kombinaasje, de twadde stipet in frij lyts oantal funksjes.
ttf-parser is earne yn it midden. It stipet allegear deselde TrueType-tabellen (it TrueType-formaat bestiet út in protte aparte binêre tabellen) as FreeType, mar tekenet de glyphs sels net.
Tagelyk befettet ttf-parser in protte oare wichtige ferskillen:
- ttf-parser is skreaun yn Rust sûnder ûnfeilich te brûken. FreeType en stb_truetype wurde skreaun yn C.
- ttf-parser is de ienige ûnthâld-feilige ymplemintaasje. It lêzen fan willekeurige ûnthâld is net mooglik. Kwetsberheden wurde hieltyd fêst yn FreeType, en stb_truetype is, yn prinsipe, net ûntwurpen om te lêzen willekeurige lettertypen.
- ttf-parser is de ienige thread-feilige ymplemintaasje. Alle parsearmetoaden binne konstant. De ienige útsûndering is it ynstellen fan koördinaten foar fariabele lettertypen, mar dizze funksje is reentrant. FreeType is yn prinsipe single-threaded. stb_truetype - reentrant (jo kinne yndividuele kopyen brûke yn ferskate diskusjes, mar net ien fan in protte).
- ttf-parser is de ienige ymplemintaasje dy't gjin heap-allokaasjes brûkt. Hjirmei kinne jo it parsearjen fersnelle en problemen mei OOM foarkomme.
- Ek wurde hast alle rekkenoperaasjes en konversaasjes fan numerike typen kontrolearre (ynklusyf statysk).
- Yn it slimste gefal kin de biblioteek in útsûndering smyt. Yn dit gefal, yn 'e C API, sille útsûnderings wurde fongen en de funksje sil in flater weromjaan, mar sil net crashe.
En nettsjinsteande alle feiligens garânsjes, ttf-parser is ek de fluchste ymplemintaasje. Bygelyks, it parsearjen fan CFF2 is 3.5 kear flugger as FreeType. It parsearjen fan glyf is yntusken 10% stadiger as yn stb_truetype, mar dit komt troch it feit dat it gjin fariabele lettertypen stipet, wêrfan de ymplemintaasje ekstra opslach fereasket. ynformaasje. Mear details yn README.
Boarne: linux.org.ru
