ttf-parser 0.5 - μια νέα βιβλιοθήκη για εργασία με γραμματοσειρές TrueType

ttf-parser είναι μια βιβλιοθήκη για την ανάλυση γραμματοσειρών TrueType/OpenType.
Η νέα έκδοση έχει πλήρη υποστήριξη για μεταβλητές γραμματοσειρές
(μεταβλητές γραμματοσειρές) και C API, με αποτέλεσμα να αποφάσισα να το διαφημίσω στο lore.

Μέχρι πρόσφατα, εάν υπήρχε ανάγκη να δουλέψετε με γραμματοσειρές TrueType, υπήρχαν ακριβώς δύο επιλογές: FreeType και stb_truetype. Ο πρώτος είναι ένας τεράστιος συνδυασμός, ο δεύτερος υποστηρίζει έναν αρκετά μικρό αριθμό λειτουργιών.

Το ttf-parser είναι κάπου στη μέση. Υποστηρίζει όλους τους ίδιους πίνακες TrueType (η μορφή TrueType αποτελείται από πολλούς ξεχωριστούς δυαδικούς πίνακες) με το FreeType, αλλά δεν σχεδιάζει τους ίδιους τους γλυφούς.

Ταυτόχρονα, ο αναλυτής ttf περιέχει πολλές άλλες σημαντικές διαφορές:

  1. Το ttf-parser είναι γραμμένο σε Rust χωρίς τη χρήση μη ασφαλούς. Τα FreeType και stb_truetype είναι γραμμένα σε C.
  2. Το ttf-parser είναι η μόνη εφαρμογή που είναι ασφαλής για τη μνήμη. Δεν είναι δυνατή η ανάγνωση τυχαίας μνήμης. Τα τρωτά σημεία διορθώνονται συνεχώς στο FreeType και το stb_truetype, καταρχήν, δεν έχει σχεδιαστεί για να διαβάζει αυθαίρετες γραμματοσειρές.
  3. Το ttf-parser είναι η μόνη ασφαλής υλοποίηση νημάτων. Όλες οι μέθοδοι ανάλυσης είναι σταθερές. Η μόνη εξαίρεση είναι ο ορισμός συντεταγμένων για μεταβλητές γραμματοσειρές, αλλά αυτή η συνάρτηση είναι επανεισαγωγή. Το FreeType είναι βασικά single-threaded. stb_truetype - reentrant (μπορείτε να χρησιμοποιήσετε μεμονωμένα αντίγραφα σε διαφορετικά νήματα, αλλά όχι ένα από τα πολλά).
  4. Το ttf-parser είναι η μόνη υλοποίηση που δεν χρησιμοποιεί εκχωρήσεις σωρού. Αυτό σας επιτρέπει να επιταχύνετε την ανάλυση και να αποφύγετε προβλήματα με το OOM.
  5. Επίσης, ελέγχονται σχεδόν όλες οι αριθμητικές πράξεις και οι μετατροπές αριθμητικών τύπων (συμπεριλαμβανομένου του στατικού).
  6. Στη χειρότερη περίπτωση, η βιβλιοθήκη μπορεί να κάνει μια εξαίρεση. Σε αυτήν την περίπτωση, στο C API, οι εξαιρέσεις θα συλληφθούν και η συνάρτηση θα εμφανίσει ένα σφάλμα, αλλά δεν θα διακοπεί.

Και παρά όλες τις εγγυήσεις ασφαλείας, το ttf-parser είναι επίσης η ταχύτερη υλοποίηση. Για παράδειγμα, η ανάλυση του CFF2 είναι 3.5 φορές ταχύτερη από το FreeType. Η ανάλυση glyf, εν τω μεταξύ, είναι 10% πιο αργή από ό, τι στο stb_truetype, αλλά αυτό οφείλεται στο γεγονός ότι δεν υποστηρίζει μεταβλητές γραμματοσειρές, η υλοποίηση των οποίων απαιτεί αποθήκευση πρόσθετων. πληροφορίες. Περισσότερες λεπτομέρειες στο README.

Πηγή: linux.org.ru

Προσθέστε ένα σχόλιο