ttf-parser 0.5 - TrueType අකුරු සමඟ වැඩ කිරීම සඳහා නව පුස්තකාලයක්

ttf-විග්රහකය TrueType/OpenType අකුරු විග්‍රහ කිරීම සඳහා පුස්තකාලයකි.
නව අනුවාදයේ විචල්‍ය අකුරු සඳහා පූර්ණ සහය ඇත
(විචල්ය අකුරු) සහ C API, එහි ප්‍රතිඵලයක් ලෙස මම එය ජනප්‍රවාදයේ ප්‍රචාරණය කිරීමට තීරණය කළෙමි.

මෑතක් වන තුරු, TrueType අකුරු සමඟ වැඩ කිරීමට අවශ්ය නම්, හරියටම විකල්ප දෙකක් තිබුණි: FreeType සහ stb_truetype. පළමුවැන්න විශාල සංයෝජනයකි, දෙවැන්න තරමක් කුඩා කාර්යයන් ගණනකට සහය දක්වයි.

ttf-parser මැද කොහේ හරි. එය FreeType ලෙස එකම TrueType වගු (TrueType ආකෘතිය බොහෝ වෙනම ද්විමය වගු වලින් සමන්විත වේ) සඳහා සහය දක්වයි, නමුත් ග්ලයිෆ් ඒවාම අඳින්නේ නැත.

ඒ අතරම, ttf-parser හි තවත් බොහෝ සැලකිය යුතු වෙනස්කම් අඩංගු වේ:

  1. ttf-parser අනාරක්ෂිත ලෙස භාවිතා නොකර රස්ට් වලින් ලියා ඇත. FreeType සහ stb_truetype C වලින් ලියා ඇත.
  2. ttf-parser යනු මතක ආරක්ෂිත ක්‍රියාත්මක කිරීම පමණි. අහඹු මතකය කියවීම කළ නොහැක. FreeType හි අනාරක්‍ෂිතතා නිරන්තරයෙන් නිරාකරණය වෙමින් පවතින අතර, stb_truetype ප්‍රතිපත්තිමය වශයෙන්, හිතුවක්කාර අකුරු කියවීමට නිර්මාණය කර නැත.
  3. ttf-parser යනු එකම නූල් ආරක්ෂිත ක්‍රියාත්මක කිරීමයි. සියලුම විග්‍රහ කිරීමේ ක්‍රම නියත වේ. එකම ව්යතිරේකය වන්නේ විචල්ය අකුරු සඳහා ඛණ්ඩාංක සැකසීමයි, නමුත් මෙම ශ්රිතය නැවත ඇතුල් වේ. FreeType මූලික වශයෙන් තනි නූල් වේ. stb_truetype - නැවත ඇතුල් කරන්න (ඔබට විවිධ නූල් වල තනි පිටපත් භාවිතා කළ හැකිය, නමුත් බොහෝ ඒවායින් එකක් නොවේ).
  4. ttf-parser යනු ගොඩ වෙන් කිරීම් භාවිතා නොකරන එකම ක්‍රියාත්මක කිරීමයි. මෙය ඔබට විග්‍රහ කිරීම වේගවත් කිරීමට සහ OOM සමඟ ඇති ගැටළු මඟහරවා ගැනීමට ඉඩ සලසයි.
  5. එසේම, සියලුම ගණිතමය මෙහෙයුම් සහ සංඛ්‍යාත්මක වර්ගවල පරිවර්තන (ස්ථිතික ඇතුළුව) පරීක්ෂා කරනු ලැබේ.
  6. නරකම අවස්ථාවක, පුස්තකාලය ව්යතිරේකයක් විසි කළ හැකිය. මෙම අවස්ථාවෙහිදී, C API හි, ව්‍යතිරේක හසුවනු ඇති අතර ශ්‍රිතය දෝෂයක් ලබා දෙනු ඇත, නමුත් බිඳ වැටෙන්නේ නැත.

සහ සියලු ආරක්ෂක සහතික තිබියදීත්, ttf-parser වේගවත්ම ක්රියාත්මක කිරීම ද වේ. උදාහරණයක් ලෙස, CFF2 විග්‍රහ කිරීම FreeType වලට වඩා 3.5 ගුණයකින් වේගවත් වේ. විග්‍රහ කිරීම glyf, මේ අතර, stb_truetype ට වඩා 10% මන්දගාමී වේ, නමුත් මෙයට හේතුව එය විචල්‍ය අකුරු සඳහා සහය නොදක්වන බැවිනි, ක්‍රියාත්මක කිරීමට අමතර ගබඩා කිරීම අවශ්‍ය වේ. විස්තර. වැඩි විස්තර තුල README.

මූලාශ්රය: linux.org.ru

අදහස් එක් කරන්න