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:
- ttf-parser er skrifaður í Rust án þess að nota óöruggt. FreeType og stb_truetype eru skrifaðar í C.
- 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.
- 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).
- 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.
- Einnig eru næstum allar reikniaðgerðir og umreikningar talnategunda athugaðar (þar á meðal statískar).
- Í 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