ttf-parser 0.5 - nýtt bókasafn til að vinna með TrueType leturgerðir

ttf-þáttur er bókasafn til að flokka TrueType/OpenType leturgerðir.
Nýja útgáfan hefur fullan stuðning fyrir breytilegt leturgerð
(breytilegt letur) og C API, í kjölfarið ákvað ég að auglýsa það í fróðleiknum.

Þar til nýlega, ef það var þörf á að vinna með TrueType leturgerðir, þá voru nákvæmlega tveir valkostir: FreeType og stb_truetype. Sú fyrri er risastór sameining, sú seinni styður frekar fáan fjölda aðgerða.

ttf-parser er einhvers staðar í miðjunni. Það styður allar sömu TrueType töflurnar (TrueType sniðið samanstendur af mörgum aðskildum tvíundartöflum) og FreeType, en teiknar ekki táknmyndina sjálfa.

Á sama tíma inniheldur ttf-parser marga aðra mikilvæga mun:

  1. ttf-parser er skrifaður í Rust án þess að nota óöruggt. FreeType og stb_truetype eru skrifaðar í C.
  2. ttf-parser er eina minni örugga útfærslan. Það er ekki hægt að lesa af handahófi minni. Stöðugt er verið að laga veikleika í FreeType og stb_truetype er í grundvallaratriðum ekki hannað til að lesa handahófskenndar leturgerðir.
  3. ttf-parser er eina þráðarörugga útfærslan. Allar þáttunaraðferðir eru stöðugar. Eina undantekningin er að setja hnit fyrir breytilegt letur, en þessi aðgerð er endurvirk. FreeType er í grundvallaratriðum einn-þráður. stb_truetype - reentrant (þú getur notað einstök eintök í mismunandi þræði, en ekki einn af mörgum).
  4. ttf-parser er eina útfærslan sem notar ekki hrúguúthlutun. Þetta gerir þér kleift að flýta fyrir þáttun og forðast vandamál með OOM.
  5. Einnig eru næstum allar reikniaðgerðir og umreikningar talnategunda athugaðar (þar á meðal statískar).
  6. Í versta falli getur bókasafnið gert undantekningu. Í þessu tilviki, í C API, verða undantekningar veiddir og aðgerðin mun skila villu, en mun ekki hrynja.

Og þrátt fyrir allar öryggisábyrgðir er ttf-parser líka hraðvirkasta útfærslan. Til dæmis er þáttun CFF2 3.5 sinnum hraðari en FreeType. Að flokka glyf er á sama tíma 10% hægari en í stb_truetype, en það er vegna þess að það styður ekki breytilegt leturgerð, útfærsla þess krefst geymslu viðbótar. upplýsingar. Nánari upplýsingar í README.

Heimild: linux.org.ru

Bæta við athugasemd