Friday, December 25, 2009

Developing OpenType Fonts for Myanmar Script - နိဒါန်း

ခေါင်းစဉ်ကြည့်ပြီးကြောက်မသွားပါနဲ့ဦး။ ပထမ Myanmar OpenType Spec လို့ ခေါင်းစဉ်တပ်မလို့၊ နောက် Microsoft Typography Specifications ကအတိုင်းပဲ ခေါင်းစဉ်တပ်လိုက်ပါတယ်။
မြန်မာဖောင့် အကြောင်းမစခင် OpenType ဖောင့်အကြောင်း နဲနဲ အကျဉ်းလောက်ပြောကြည့်ရအောင်။ OpenType ဖောင့်ဆိုတာ TrueType ဖောင့်ပုံစံကို ချဲ့ထွင်ထားတာဖြစ်ပြီး Postscript ဖောင့်ဒေတာကိုပါ အထောက်အကူပြုနိုင်အောင် ထပ်ဖြည့်ထားတာပါ။ Microsoft နဲ့ Adobe တို့ ပူးပေါင်းအကောင်အထည်ဖော်ပါတယ်။ TrueType ဖောင့်ကို Apple Computer က စထွင်ခဲ့ပြီး Postscript Type1 ဖောင့်ကို Adobe က စထွင်ခဲ့တာပါ။ ပြောရရင်တော့ Adobe ကို လိုင်စင်ကြေး မပေးချင်လို့ Apple နဲ့ Microsoft တို့ ပေါင်းပြီး TrueType ဖောင့်ကိုထွင်ကြတာပါ။ ကျွန်တော်မှတ်မိသေးတာ ဟိုတုန်းက Postscript Type1 ဖောင့်သုံးဖို့ ATM တင်ရပါတယ်။ (Automatic Teller Machine မဟုတ်ပါ၊ Adobe Type Manager ပါ) အမှတ်မမှားဘူးဆိုရင် WinMyanmarဖောင့်တို့၊ Geocomp ဖောင့်တို့လည်း စစချင်း Postscript နဲ့ပါ။ Truetype ပြောင်းပြီးသုံးကြတာ မှတ်မိနေပါတယ်။
OpenType ရဲ့ အားသာချက်တွေထဲက Extended language suport နဲ့ Advanced typography ကိုပဲ စိတ်ဝင်စားတာပါ။ OpenType Layout Tables ထဲမှာ အချက်အလက်အပိုတွေ သိမ်းဆည်းထားခြင်းဖြင့် ရှုပ်ထွေးတဲ့ဘာသာစကားတွေကို ထောက်ကူစေနိုင်ပါတယ်။ OpenType Layout မှာသုံးတဲ့ အသုံးအနှုန်းလေးတွေပါ။

Character နဲ့ Glyph
တကယ်တမ်း ကျွန်တော်တို့ ကွန်ပျူတာမှာ ကြည့်နေတာ၊ ပုံထုတ်တာ Character တွေမဟုတ်ပါဘူး။ Glyph တွေပါ။ Glyph ဆိုတာ Character ကို ကိုယ်စားပြုပေးတာ။ Unicode Character "Myanmar Letter Ka" U+1000 ကို Glyph "က" နဲ့ကိုယ်စားပြုသလိုမျိုးပါ။ ဒါပေမယ့် Character နဲ့ Glyph တစ်ခု တစ်ခုချင်းပဲ ဆက်စပ်မယ်လို့မဆိုနိုင်ပါဘူး။ Unicode Character "Myanmar Consonant Sign Medail Ra" U+103C ဆိုရင် Glyph တွေအများကြီးရှိနိုင်ပါတယ်။ ဘယ် Glyph နဲ့ဖော်ပြမယ်ဆိုတာ နောက်မှာဖော်ပြမယ့် Feature တွေကလုပ်သွားပေးမှာပါ။ ဖောင့်ဆိုတာ အဲဒီ Glyph တွေစုထားတာ။

Scripts
Script ဆိုတာ နီးစပ်ရာ Character တွေ ပေါင်းစပ်ထားပြီး ဘာသာစကားတစ်မျိုးတည်းမက ကသုံးနိုင်ပါတယ်။ Latin, Arabic နဲ့ မြန်မာ (Myanmar) တို့လိုမျိုးပေါ့။ မြန်မာ script အတွက် tag က mymr ပါ။

Language systems
Script ကို ဘာသာစကားတွေအနေနဲ့ ခွဲထုတ်နိုင်ပါတယ်။ လက်တင် (Latin) script ကို အင်္ဂလိပ်၊ ပြင်သစ်၊ ဂျာမဏီ ဘာသာစကားတွေအတွက်သုံးသလိုပါ။ မြန်မာ script ကျတော့ ဗမာ၊ မွန်၊ ကရင်၊ ရှမ်း ဘာသာစကားတွေပါ။ Language system tag တွေက မွန် (Mon) အတွက် MON၊ ကရင် (Karen) အတွက် KRN၊ ရှမ်း (Shan) အတွက် SHN တို့ဖြစ်ပါတယ်။

Features
ဖောင့်ရဲ့ အခြေခံလုပ်ဆောင်နိုင်ချက်ကို Features နဲ့ သတ်မှတ်ပေးပါတယ်။ ဖောင့်ထဲမှာပါတဲ့ glyph တွေကိုဘယ်လိုသုံးပြီး script ဒါမှမဟုတ် ဘာသာစကားတစ်ခုကို ပုံဖော်ရမလဲဆိုတာ Feature က အချက်အလက်ပေးပါတယ်။ Glyph အစားထိုးခြင်း၊ glyph နေရာချခြင်းတွေအတွက် သတ်မှတ်ပေးတာပါ။ မြန်မာစာအတွက် Feature တွေကတော့
  • abvf (Above-base Forms)

  • blwf (Below-base Forms)

  • pstf (Post-base Forms)

  • pres (Pre-base Substitutions)

  • abvs (Above-base Substitutions)

  • blws (Below-base Substitutions)

  • psts (Post-base Substitutions)

  • abvm (Above-base Mark Positioning)

  • blwm (Below--base Mark Positioning)

  • mkmk (Mark to Mark Positioning) တို့ပဲဖြစ်ပါတယ်။
ဒီ Feature တွေက Microsoft ရဲ့မူကြမ်းပေါ်မှာ မူတည်ပြီး ကျွန်တော့်ဖာသာ သတ်မှတ်ထားတာပါ။ အဆိုပြုချက်လို့ယူသော် ရပါတယ်။
OpenType Layout Feature တွေထဲမှာ Character တွေကို နေရာပြန်စီတဲ့ Feature မရှိပါဘူး။ အဲလိုလုပ်တာက shaping engine ရဲ့အလုပ်ပါ။ Windows ပေါ်မှာ Uniscribe shaping engine က အထောက်အပံ့မပေးမချင်း OpenType Font မှာ မြန်မာစာအတွက် သဝေထိုး၊ ရရစ် နဲ့ ကင်းစီး နေရာပြန်စီတာမရနိုင်သလို အပေါ်က Feature တွေလည်း အလုပ်လုပ်မှာမဟုတ်ပါဘူး။ အခုသုံးနေသလို liga၊ rlig၊ clig စတဲ့ Feature တွေပဲသုံးနေရဦးမှာပါ။ ဒီ Ligature feature တွေက script အပေါ်မမူတည်ဘဲ ပုံမှန်အားဖြင့် အလုပ်လုပ်ပါတယ်။
နောက်ဆက်ရေးသွားမှာတွေကို mymr-pangomod ရေးတာအပေါ် အခြေခံမှာပါ။ အခေါ်အဝေါ်တွေ အဆင်ပြေအောင် အင်္ဂလိပ်လိုပဲရေးသွားပါမယ်။

2 comments:

  1. Good morning bro, waiting for the next installment on this piece. Also I am searhing for a place where I can download Masterpiece font. Please share if you can. Thanks.#
    Ravi.

    ReplyDelete
  2. Sorry for late reply. As I need to revise the rules, it won't be so soon to continue on opentype spec. For font download, here is the link-
    http://sourceforge.net/projects/prahita/files/Myanmar%20Unicode%20Fonts/MasterpieceUniSans/
    It won't work on Windows and it needs pango module on Linux.

    ReplyDelete