Library

Update : UniMM is closely aligning with new myanmar unicode character allocation pipeline. This book data and informations may not relevant anymore in some area. If you have doubt, please contact me to seek latest update.


UniMM Font Library and Ligatures

One unit, One font, One Source which is open and give you freedom, the "UniMM"

This library meant the re-useable work for developers. This library has the UniMM naming standard for those extra glyphs(identical to how much glyphs pertaining) and Adobe naming standard for Unicode range. This is one of the Core for implementing digital font. I, have written in as of no warranty. If you were log in, you can comment on it. If you want to make your contribution on this library, please contact haalaaluu[at]users[dot]sourceforge[dot]net.

UniMM lastest SVN trunk can browse at: svnroot/uniburma/unimm

CMAP

Unicode 4.1 Myanmar U1000-U109F

Please refer to U1000.pdf

Non Unicode

UniMM still do not use any PUA, yet. The following are non unicode characters which imply UniMM. This non unicode CMAP also respect to UniMM naming standard. These are also available at Filebrowser.

Unicode Value Glyph Description
-1 U_cut U_cut
-1 aa_tall_1 aa_tall_1
-1 aa_tall_2 aa_tall_2
-1 bot_medra_big bot_medra_big
-1 bot_medra_small bot_medra_small
-1 com_med_ya_ha com_med_ya_ha
-1 double_101e double_101e
-1 kinzi kinzi
-1 med_ha_102f med_ha_102f
-1 med_ha med_ha
-1 med_ha_small med_ha_small
-1 med_ra med_ra
-1 med_ra_big med_ra_big
-1 med_wa med_wa
-1 med_ya med_ya
-1 multi_1 multi_1
-1 multi_2 multi_2
-1 multi_3 multi_3
-1 multi_4 multi_4
-1 multi_5 multi_5
-1 nnya_cut nnya_cut
-1 notail_na notail_na
-1 ra_shape ra_shape
-1 rare_ddha_dda rare_ddha_dda
-1 stack_nna_dda stack_nna_dda
-1 sub_con_a sub_con_a
-1 sub_con_ba sub_con_ba
-1 sub_con_bha sub_con_bha
-1 sub_con_ca sub_con_ca
-1 sub_con_cha sub_con_cha
-1 sub_con_da sub_con_da
-1 sub_con_dda sub_con_dda
-1 sub_con_dha sub_con_dha
-1 sub_con_ga sub_con_ga
-1 sub_con_gha sub_con_gha
-1 sub_con_ja sub_con_ja
-1 sub_con_ka sub_con_ka
-1 sub_con_kha sub_con_kha
-1 sub_con_la sub_con_la
-1 sub_con_ma sub_con_ma
-1 sub_con_na sub_con_na
-1 sub_con_nga sub_con_nga
-1 sub_con_nna sub_con_nna
-1 sub_con_pa sub_con_pa
-1 sub_con_pha sub_con_pha
-1 sub_con_sa sub_con_sa
-1 sub_con_ta sub_con_ta
-1 sub_con_tha sub_con_tha
-1 sub_con_tta sub_con_tta
-1 sub_con_ttha sub_con_ttha
-1 sub_dot1 sub_dot1
-1 sub_dot2 sub_dot2
-1 ta_wa_small ta_wa_small
-1 tall_102f tall_102f
-1 tall_1030 tall_1030
-1 top_medra_big top_medra_big
-1 top_medra_small top_medra_small
-1 wa_ha wa_ha

Opentype Table

For OTL Feature Tags, we still do not have official Burmese OpenType Specification like Khmer OpenType Specification. This OTL is still under developing though it is well-tested and working. Please read Solution Chapter 3 for implementation approach.

This is still Beta and pending for vowel, context shaping and kinzi. You might want to try SVN trunk for lastest source.

GDEF

The lastest GDEF table can browse and download at SVN trunk:
    -OpenType Tables
      -'GDEF' Glyph Definition Table
        -Glyph Definition Sub-Table
          uni0000 Base
          space Base
          uni1000 Base
          uni1001 Base
          uni1002 Base
          uni1003 Base
          uni1004 Base
          uni1005 Base
          uni1006 Base
          uni1007 Base
          uni1008 Base
          uni1009 Base
          uni100A Base
          uni100B Base
          uni100C Base
          uni100D Base
          uni100E Base
          uni100F Base
          uni1010 Base
          uni1011 Base
          uni1012 Base
          uni1013 Base
          uni1014 Base
          uni1015 Base
          uni1016 Base
          uni1017 Base
          uni1018 Base
          uni1019 Base
          uni101A Base
          uni101B Base
          uni101C Base
          uni101D Base
          uni101E Base
          uni101F Base
          uni1020 Base
          uni1021 Base
          uni1022 Base
          uni1023 Base
          uni1024 Base
          uni1025 Base
          uni1026 Base
          uni1027 Base
          uni1029 Base
          uni102A Base
          uni102C Base
          uni102D Base
          uni102E Base
          uni102F Base
          uni1030 Base
          uni1031 Base
          uni1032 Base
          uni1036 Base
          uni1037 Base
          uni1038 Base
          uni1039 Base
          uni1040 Base
          uni1041 Base
          uni1042 Base
          uni1043 Base
          uni1044 Base
          uni1045 Base
          uni1046 Base
          uni1047 Base
          uni1048 Base
          uni1049 Base
          uni104A Base
          uni104B Base
          uni104C Base
          uni104D Base
          uni104E Base
          uni104F Base
          uni1050 Base
          uni1051 Base
          uni1052 Base
          uni1053 Base
          uni1054 Base
          uni1055 Base
          uni1056 Base
          uni1057 Base
          uni1058 Base
          uni1059 Base
          aa_tall_1 Base
          aa_tall_2 Ligature
          kinzi Base
          sub_con_ka Ligature
          sub_con_kha Ligature
          sub_con_ga Ligature
          sub_con_gha Ligature
          sub_con_nga Ligature
          sub_con_ca Ligature
          sub_con_cha Ligature
          sub_con_ja Ligature
          sub_con_tta Ligature
          sub_con_ttha Ligature
          sub_con_dda Ligature
          sub_con_ddha Ligature
          sub_con_nna Ligature
          sub_con_ta Ligature
          sub_con_tha Ligature
          sub_con_da Ligature
          sub_con_dha Ligature
          sub_con_na Ligature
          sub_con_pa Ligature
          sub_con_pha Ligature
          sub_con_ba Ligature
          sub_con_bha Ligature
          sub_con_ma Ligature
          sub_con_la Ligature
          sub_con_sa Ligature
          sub_con_a Ligature
          med_ya Ligature
          med_ra Ligature
          med_wa Ligature
          med_ha Ligature
          med_ha_102f Ligature
          tall_102f Base
          tall_1030 Base
          com_med_ya_ha Ligature
          stack_nna_dda Ligature
          rare_ddha_dda Ligature
          wa_ha Ligature
          med_ha_small Base
          bot_medra_small Base
          bot_medra_big Base
          top_medra_small Base
          top_medra_big Base
          med_ra_big Base
          ra_shape Base
          ta_wa_small Base
          U_cut Base
          nnya_cut Base
          double_101e Base
          notail_na Base
          multi_1 Ligature
          multi_2 Ligature
          multi_3 Ligature
          multi_4 Ligature
          multi_5 Ligature
          afii61664 Base
          afii301 Base
          sub_dot1 Base
          sub_dot2 Base
          exclam Base
          quotedbl Base
          numbersign Base
          dollar Base
          percent Base
          ampersand Base
          quotesingle Base
          parenleft Base
          parenright Base
          asterisk Base
          plus Base
          hyphen Base
          period Base
          slash Base
          zero Base
          one Base
          two Base
          three Base
          four Base
          five Base
          six Base
          seven Base
          eight Base
          nine Base
          colon Base
          semicolon Base
          less Base
          equal Base
          greater Base
          question Base
          at Base
          uni00A0 Base
          currency Base
          section Base
          logicalnot Base
          degree Base
          paragraph Base
          periodcentered Base
          bullet Base
          uni25CC Base
          square Base
        -Ligature Caret Sub-Table
          -med_ra
            -5
        +'GPOS' Glyph Positioning Table
        +'GSUB' Glyph Substitution Table
      +Apple Advanced Typography

GSUB

The lastest GSUB table can browse and download at SVN trunk:
    -OpenType Tables
      +'GDEF' Glyph Definition Table
      +'GPOS' Glyph Positioning Table
      -'GSUB' Glyph Substitution Table
        -'mymr' Myanmar writing system|Script
          -'dflt' Default Language
            -'calt' Contextual Alternates
              Chaining Substitution by classes
              Backtrack class 1: uni1001 uni1002 uni1004 uni1012 uni1015
              Backtrack class 2: uni1009 uni100A uni100B uni100C uni100D uni1020 uni1023 uni1025 uni1026 uni1029
              Backtrack class 3: uni102D uni102E uni1036
              Backtrack class 4: uni1031
              Backtrack class 5: sub_con_da
              Backtrack class 6: sub_con_ka sub_con_kha sub_con_ga sub_con_gha sub_con_nga sub_con_ca sub_con_cha sub_con_ja sub_con_tta sub_con_dda sub_con_nna sub_con_ta sub_con_tha sub_con_dha sub_con_na sub_con_pa sub_con_pha sub_con_ba sub_con_bha sub_con_ma sub_con_la sub_con_sa sub_con_a med_ya med_ra med_wa wa_ha ta_wa_small
              Backtrack class 7: uni1000 uni1003 uni1006 uni100F uni1010 uni1011 uni1018 uni101A uni101C uni101E uni101F uni1021
              Class 1: uni102C
              Class 2: uni102F uni1030
              Class 3: uni1014 uni101B
              Class 4: uni1000 uni1001 uni1002 uni1003 uni1004 uni1005 uni1006 uni1007 uni1008 uni1009 uni100A uni100B uni100D uni100E uni100F uni1010 uni1011 uni1012 uni1013 uni1015 uni1016 uni1017 uni1018 uni1019 uni101A uni101C uni101D uni101E uni101F uni1020 uni1021 uni1025
              Class 5: uni1031
              Class 6: med_ra
              Lookahead class 1: uni102F uni1030
              Lookahead class 2: sub_con_ka sub_con_kha sub_con_ga sub_con_gha sub_con_nga sub_con_ca sub_con_cha sub_con_ja sub_con_tta sub_con_dda sub_con_nna sub_con_ta sub_con_tha sub_con_da sub_con_dha sub_con_na sub_con_pa sub_con_pha sub_con_ba sub_con_bha sub_con_ma sub_con_la sub_con_sa sub_con_a med_ya med_ra med_wa med_ha med_ha_102f wa_ha ta_wa_small
              Lookahead class 3: uni1031
              Lookahead class 4: uni102D uni102E uni1036
              Lookahead class 5: kinzi
              -Rule 0
                Backtrack class: 1
                Class1
                -Apply at 0 'tall'
                  uni102C => aa_tall_1
              -Rule 1
                Backtrack class: 5
                Class1
                -Apply at 0 'tall'
                  uni102C => aa_tall_1
              -Rule 2
                Backtrack class: 2
                Class2
                -Apply at 0 '2f30'
                  uni102F => tall_102f
                  uni1030 => tall_1030
              -Rule 3
                Backtrack classes: 2 3
                Class2
                -Apply at 0 '2f30'
                  uni102F => tall_102f
                  uni1030 => tall_1030
              -Rule 4
                Backtrack class: 5
                Class2
                -Apply at 0 '2f30'
                  uni102F => tall_102f
                  uni1030 => tall_1030
              -Rule 5
                Backtrack class: 6
                Class2
                -Apply at 0 '2f30'
                  uni102F => tall_102f
                  uni1030 => tall_1030
              -Rule 6
                Class3
                Lookahead class: 1
                -Apply at 0 'tail'
                  uni1014 => notail_na
                  uni101B => ra_shape
              -Rule 7
                Class3
                Lookahead class: 2
                -Apply at 0 'tail'
                  uni1014 => notail_na
                  uni101B => ra_shape
              -Rule 8
                Class3
                Lookahead class: 4
                -Apply at 0 'tail'
                  uni1014 => notail_na
                  uni101B => ra_shape
              -Rule 9
                Backtrack class: 7
                Class6
                -Apply at 0 'MRA3'
                  med_ra => med_ra_big
                  bot_medra_small => bot_medra_big
                  top_medra_small => top_medra_big
              -Rule 10
                Class6
                Lookahead class: 2
                  -Apply at 0 'MRA1'
                  med_ra => bot_medra_small
              -Rule 11
                Class6
                Lookahead class: 4
                -Apply at 0 'MRA2'
                  med_ra => top_medra_small
            -'calt' Contextual Alternates
              Chaining Substitution by coverage
              -Rule 0
                Coverage 0: uni1000 uni1001 uni1002 uni1003 uni1004 uni1005 uni1006 uni1007 uni1008 uni1009 uni100A uni100B uni100C uni100D uni100E uni100F uni1010 uni1011 uni1012 uni1013 uni1014 uni1015 uni1016 uni1017 uni1018 uni1019 uni101A uni101B uni101C uni101D uni101E uni101F uni1020 uni1021
                Lookahead coverage 1: uni1031
                -Apply at 0 'U31A'
                uni1000 => uni1031 uni1000
                uni1014 => uni1031 uni1014
                uni101B => uni1031 uni101B
                uni101E => uni1031 uni101E
            -'calt' Contextual Alternates
              Chaining Substitution by coverage
              -Rule 0
                Back coverage -1: uni1031
                Coverage 0: uni1000 uni1001 uni1002 uni1003 uni1004 uni1005 uni1006 uni1007 uni1008 uni1009 uni100A uni100B uni100C uni100D uni100E uni100F uni1010 uni1011 uni1012 uni1013 uni1014 uni1015 uni1016 uni1017 uni1018 uni1019 uni101A uni101B uni101C uni101D uni101E uni101F uni1020 uni1021
                Coverage 1: uni1031
                -Apply at 0 'U31B'
                uni1000 <= uni1000 uni1031
                uni1014 <= uni1014 uni1031
                uni101B <= uni101B uni1031
                uni101E <= uni101E uni1031
            -'ccmp' Glyph Composition/Decomposition
              com_med_ya_ha <= med_ya med_ha
              stack_nna_dda <= uni100F sub_con_dda
              rare_ddha_dda <= uni100E sub_con_dda
              wa_ha <= med_wa med_ha
              multi_1 <= med_ya med_wa
              multi_2 <= med_ya med_wa med_ha
              multi_3 <= med_ya sub_con_ca
              multi_4 <= uni100B sub_con_tta
              multi_5 <= uni100D sub_con_dda
            -'liga' Standard Ligatures
              sub_con_ka <= uni1039 uni1000
              sub_con_kha <= uni1039 uni1001
              sub_con_ga <= uni1039 uni1002
              sub_con_gha <= uni1039 uni1003
              sub_con_nga <= uni1039 uni1004
              sub_con_ca <= uni1039 uni1005
              sub_con_cha <= uni1039 uni1006
              sub_con_ja <= uni1039 uni1007
              sub_con_tta <= uni1039 uni100B
              sub_con_dda <= uni1039 uni100D
              sub_con_nna <= uni1039 uni100F
              sub_con_ta <= uni1039 uni1010
              sub_con_tha <= uni1039 uni1011
              sub_con_da <= uni1039 uni1012
              sub_con_dha <= uni1039 uni1013
              sub_con_na <= uni1039 uni1014
              sub_con_pa <= uni1039 uni1015
              sub_con_pha <= uni1039 uni1016
              sub_con_ba <= uni1039 uni1017
              sub_con_bha <= uni1039 uni1018
              sub_con_ma <= uni1039 uni1019
              sub_con_la <= uni1039 uni101C
              sub_con_sa <= uni1039 uni101E
              sub_con_a <= uni1039 uni1021
              med_ya <= uni1039 uni101A
              med_ra <= uni1039 uni101B
              med_wa <= uni1039 uni101D
              med_ha <= uni1039 uni101F
            -'rlig' Required Ligatures
              aa_tall_2 <= aa_tall_1 uni1039
              med_ha_102f <= med_ha uni102F
    +Apple Advanced Typography

AAT

State machine or AAT respectively..

Classes

These are the class group of Myanmar (Burmese script) characters. Lastest classes and its standalone html files can browse and download from SVN trunk: /trunk/font/html/

Match Classes

Class No Glyph Group
1 uni102C
2 uni102F uni1030
3 uni1014 uni101B
4 [more]
5 [more]
6 [more]

Back Classes

Class No Glyph Group
1 uni1001 uni1002 uni1004 uni1012 uni1015
2 uni100A uni100B uni100C uni100D uni1020 uni1023 uni1025 uni1026 uni1029
3 [more]
4 [more]
5 [more]
6 [more]

Ahead Classes

Class No Glyph Group
1 uni102F uni1030
2 sub_con_ka sub_con_kha sub_con_ga sub_con_gha sub_con_nga sub_con_ca sub_con_cha sub_con_ja sub_con_tta sub_con_dda sub_con_nna sub_con_ta sub_con_tha sub_con_da sub_con_dha sub_con_na sub_con_pa sub_con_pha sub_con_ba sub_con_bha sub_con_ma sub_con_la sub_con_sa sub_con_a med_ya med_ra med_wa med_ha med_ha_102f wa_ha ta_wa_small
3 [more]
4 [more]
5 [more]
6 [more]

Functions

These are UniMM substitution functions list. Lastest functions and its standalone html files can browse and download from SVN trunk: /trunk/font/html/

Unicode Standard Features

UniMM Sub Fn: Name/Standard Unicode Non-Unicode
tall uni102C aa_tall_1
2f30 uni102F uni1030 tall_102f tall_1030
tail uni1014 uni101B notail_na ra_shape
     
     
     
     

GDL

UniMM.gdl
This is UniMM module for Graphite Description Language and Graphite enable program. This module base on Mr.Martin Hosken's myanmar.gdl

{under development, may be or may not be achieved}

For Graphite, Paduak is better choice for now. Currently, UniMM focus on Opentype and AAT.

Extra Features

Font Internal Extra Features

Features are a set of functions which UniMM enhance to support writing and grammar concept. But it is not a strict rule for font to have these features. Somehow, grammar and writing is responsibility of writer(s) or typewriter(s), and he/she must check whether his/her burmese writing is grammatically or not. These are just the features which respect to grammatically writing. Not a standard or Encoding or Limitation. This extra features may be or may not be achieved, though theorically can be done. These extra features are just a modifications of font creator(s) which he/she thought that to do. But it is also important for font creator(s) to make sure themself that they won't break the rule of standard encoding by doing (_these_) extra features. Perhaps, checking grammar or writing must be done by another module or another 3rd party program/software. Not necessary in __Ordinary Digital Font__ itself but for the sake of future technology, __Smart Font__ [sil | wiki | MS-Urdu Example].

GPOS Always True
UniMM will correctly display only if user(s) type in:

  1. uni102D followed by uni1037
    gpos_example

Other Forms

Other Form or Extra Glyphs or Glyphs Formations

Keyboard

Mac

Please refer to the following link for Mac. It's XML data for Mac Keyboard. The lastest source can browse at SVN trunk:

/trunk/keyboard/mac/

Window

The lastest source can browse at SVN trunk:

/trunk/keyboard/window/

XKB

The lastest source can browse at SVN trunk:

/trunk/keyboard/xkb/

Image

The lastest source can browse at SVN trunk:

/trunk/keyboard/image/