ttf-parser 0.5 - TrueType ဖောင့်များနှင့် လုပ်ဆောင်ရန်အတွက် စာကြည့်တိုက်အသစ်

ttf-parser TrueType/OpenType ဖောင့်များကို ပိုင်းခြားရန် စာကြည့်တိုက်တစ်ခုဖြစ်သည်။
ဗားရှင်းအသစ်တွင် ပြောင်းလဲနိုင်သောဖောင့်များအတွက် အပြည့်အဝပံ့ပိုးမှုရှိသည်။
(ပြောင်းလဲနိုင်သောဖောင့်များ) နှင့် C API၊ ရလဒ်အနေဖြင့် ၎င်းကို ဒဏ္ဍာရီတွင် ကြော်ငြာရန် ဆုံးဖြတ်ခဲ့သည်။

မကြာသေးမီအထိ၊ TrueType ဖောင့်များနှင့် အလုပ်လုပ်ရန် လိုအပ်ပါက၊ FreeType နှင့် stb_truetype အတိအကျ ရွေးချယ်စရာနှစ်ခုရှိသည်။ ပထမတစ်ခုသည် ကြီးမားသောပေါင်းစပ်မှုဖြစ်ပြီး၊ ဒုတိယသည် သေးငယ်သောလုပ်ဆောင်ချက်များကို ထောက်ပံ့ပေးသည်။

ttf-parser သည် အလယ်တစ်နေရာတွင်ရှိသည်။ ၎င်းသည် FreeType ကဲ့သို့ တူညီသော TrueType ဇယားများအားလုံးကို ပံ့ပိုးပေးသည် (TrueType ဖော်မတ်တွင် သီးခြား binary tables အများအပြား ပါဝင်သည်) ကို ပံ့ပိုးပေးသော်လည်း ဂလစ်ဖ်များကို ၎င်းတို့ကိုယ်တိုင် မရေးဆွဲပါ။

တစ်ချိန်တည်းမှာပင်၊ ttf-parser တွင် အခြားသော သိသာထင်ရှားသော ခြားနားချက်များ များစွာပါရှိသည်။

  1. ttf-parser ကို အန္တရာယ်မကင်းဘဲ Rust ဖြင့်ရေးထားသည်။ FreeType နှင့် stb_truetype ကို C ဖြင့်ရေးထားသည်။
  2. ttf-parser သည် တစ်ခုတည်းသော memory-safe အကောင်အထည်ဖော်မှုဖြစ်သည်။ ကျပန်းမှတ်ဉာဏ်ဖတ်ခြင်း မဖြစ်နိုင်ပါ။ အားနည်းချက်များကို FreeType တွင် အဆက်မပြတ်ပြင်ဆင်နေပြီး stb_truetype သည် မူအားဖြင့် မထင်သလိုဖောင့်များကိုဖတ်ရန် ဒီဇိုင်းထုတ်ထားခြင်းမဟုတ်ပါ။
  3. ttf-parser သည် တစ်ခုတည်းသော thread-safe အကောင်အထည်ဖော်မှုဖြစ်သည်။ ခွဲခြမ်းစိတ်ဖြာခြင်းနည်းလမ်းအားလုံးသည် အဆက်မပြတ်ဖြစ်သည်။ တစ်ခုတည်းသောခြွင်းချက်မှာ ပြောင်းလဲနိုင်သောဖောင့်များအတွက် သြဒိနိတ်များသတ်မှတ်ခြင်းဖြစ်သည်၊ သို့သော် ဤလုပ်ဆောင်ချက်သည် ပြန်လည်လုပ်ဆောင်သည်။ FreeType သည် အခြေခံအားဖြင့် single-threaded ဖြစ်သည်။ stb_truetype - reentrant (သင် မတူညီသော စာတွဲများတွင် တစ်ဦးချင်းစီ မိတ္တူများကို သုံးနိုင်သော်လည်း များစွာထဲမှ တစ်ခုမဟုတ်ပါ)။
  4. ttf-parser သည် heap ခွဲတမ်းများကို အသုံးမပြုသော တစ်ခုတည်းသောအကောင်အထည်ဖော်မှုဖြစ်သည်။ ၎င်းသည် ခွဲခြမ်းစိတ်ဖြာမှုကို မြန်ဆန်စေပြီး OOM နှင့် ပြဿနာများကို ရှောင်ရှားနိုင်စေပါသည်။
  5. ထို့အပြင်၊ ဂဏန်းသင်္ချာဆိုင်ရာ လုပ်ဆောင်မှုများနှင့် ဂဏန်းအမျိုးအစားများ၏ ပြောင်းလဲမှုများ အားလုံးနီးပါးကို စစ်ဆေးထားသည် (ကိန်းဂဏန်းအရ အပါအဝင်)။
  6. အဆိုးဆုံးအခြေအနေတွင်၊ စာကြည့်တိုက်သည် ခြွင်းချက်တစ်ခု ဖြစ်နိုင်သည်။ ဤကိစ္စတွင်၊ C API တွင် ခြွင်းချက်များကို ဖမ်းမိမည်ဖြစ်ပြီး လုပ်ဆောင်ချက်သည် အမှားအယွင်းတစ်ခု ပြန်ဖြစ်သွားလိမ့်မည်၊ သို့သော် ပျက်စီးမည်မဟုတ်ပါ။

လုံခြုံရေး အာမခံချက်များအားလုံးရှိနေသော်လည်း ttf-parser သည် အမြန်ဆုံးအကောင်အထည်ဖော်မှုလည်းဖြစ်သည်။ ဥပမာ၊ CFF2 ကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည် FreeType ထက် 3.5 ဆ ပိုမြန်သည်။ ခွဲခြမ်းစိပ်ဖြာခြင်း glyf သည် stb_truetype ထက် 10% ပိုနှေးသည်၊ သို့သော် ၎င်းသည် ပြောင်းလဲနိုင်သောဖောင့်များကို မပံ့ပိုးနိုင်သောကြောင့်၊ ၎င်းသည် ထပ်လောင်းသိမ်းဆည်းရန် လိုအပ်သောကြောင့် ဖြစ်သည်။ သတင်းအချက်အလက်။ နောက်ထပ်အသေးစိတ်အချက်များထဲတွင် README.

source: linux.org.ru

မှတ်ချက် Add