From 8897c65b98ca91e46f2893574a98090674b10b3b Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 27 May 2017 22:55:12 +0900 Subject: [PATCH] readme - elaboration on font metrics --- README.md | 6 ++++-- width_bit_encoding_annotated.png | Bin 0 -> 18385 bytes 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 width_bit_encoding_annotated.png diff --git a/README.md b/README.md index c92413e..9e5576e 100644 --- a/README.md +++ b/README.md @@ -60,11 +60,13 @@ On your code (Java): ## Font metrics -Although the font is basically a Spritesheet, some of the sheet expects variable widths to be supported. Any sheets with ```_variable``` means it expects variable widths. Anything else expects fixed width (regular Spritesheet behaviour). ```cjkpunct``` has width of 10, ```kana``` has width of 12, ```hangul_johab``` has width of 11, ```wenquanyi``` has width of 16. +Although the font is basically a Spritesheet, some of the sheet expects variable widths to be supported. Any sheets with ```_variable``` means it expects variable widths. Anything else expects fixed width (regular Spritesheet behaviour). ```cjkpunct``` has width of 10, ```kana``` and ```hangul_johab``` has width of 12, ```wenquanyi``` has width of 16. ### Parsing glyph widths for variable font sheets -Width is encoded in binary number, on pixels. On the font spritesheet, every glyph has vertical dots on their right side (to be exact, every (16k - 1)th pixel on x axis). From top to bottom, each dot represents 1, 2, 4 and 8. For example, ASCII glyph 'C' has width of 9, 'W' has width of 11, " (double quote) has width of 6. +![Sample of Font Spritesheet with annotation](https://github.com/minjaesong/Terrarum-sans-bitmap/blob/master/width_bit_encoding_annotated.png) + +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. ### Implementing the Korean writing system diff --git a/width_bit_encoding_annotated.png b/width_bit_encoding_annotated.png new file mode 100644 index 0000000000000000000000000000000000000000..18806e5a188e0cf202000c31a4d510deeec5096a GIT binary patch literal 18385 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 X$D{rJOYvO}e4mw>ooSxQ);<3MAG2pj literal 0 HcmV?d00001