From 2702f850c282e05add1dc889ed67f5ae1162ee37 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 24 Aug 2018 00:37:48 +0900 Subject: [PATCH] elaboration of before-and-after tag; spec change - RTL tag removed - we're calling the program part "the font compiler" --- CONTRIBUTING.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ff1b8ce..6959fdd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,12 +36,12 @@ Although the font is basically a Spritesheet, some of the sheet expects variable Width is encoded in binary bits, on pixels. On the font spritesheet, every glyph has vertical dots on their top-right side (to be exact, every (16k - 1)th pixel on x axis). Above image is a sample of the font, with width information coloured in magenta. From top to bottom, each dot represents 1, 2, 4 and 8. For example, in the above image, ! (exclamation mark) has width of 5, " (double quote) has width of 6, # (octothorp) has width of 8, $ (dollar sign) has width of 9. -### Glyph Tagging System +### Glyph Tags Green-tinted area (should be 10 px tall) contains the tags. Tags are defined as following: ``` -(LSB) 0 == RTL +(LSB) 0 == Use Compiler Directive (Undefined right now, keep it as 0) 1 -+ 1 | Align to this X pos of prev char, 1 | 2 | only valid if write-on-top is 1 1 | 4 | and is centre-aligned and non-zero @@ -70,15 +70,20 @@ Since this tag does not make sense for diacritics, they will use the value for c #### Diacritics That Comes Before and After +When this tag is set, the font compiler will replace this glyph with two extra code points given in the bitmap. + To implement those, this two extra code points are needed, which are provided in the Unicode's Reference Chart (www.unicode.org/charts/PDF/Uxxxx.pdf) The code points must be "drawn" in the bitmap, in the same manor as a tagging system. The zeroth column (x = 0) has the "before" character, the first column (x = 1) has the "after". All nineteen pixels (bits) are read by the font, which encompasses U+0000..U+EFFFF For working examples, take a note at the bengali sprite sheet. +This tag can be used as a general "replace this with these" directive, as long as you're replacing it into two letters. (e.g. U+0B94; TAMIL LETTER AU, which is a combination of U+0B92 and U+0BD7 -NOTES: -- If the diacritics comes before AND after the glyph (e.g. U+103C), "Align before the glyph" must be set too. -- If glyphs are right or centre aligned, they must be aligned in the same way inside of the bitmap; the program assumes every variable-width glyphs to have a width of 15, regardless of the tagged width. -- If the diacritic is aligned before the glyph, the diacritic itself is always assumed as left-aligned, as this font will exchange position of said diacritic and the glyph right before it. +Also note that the font compiler will not "stack" these diacritics. + + +#### NOTES +- If glyphs are right or centre aligned, they must be aligned in the same way inside of the bitmap; the font compiler assumes every variable-width glyphs to have a width of 15, regardless of the tagged width. +- If the diacritic is aligned before the glyph, the diacritic itself is always assumed as left-aligned, as the font compiler will exchange position of said diacritic and the glyph right before it. ![Visual representation of left/right/centre align](alignment_illustration.jpg)