bugUnifont - Bugs: bug #51422, Jamo don’t form syllable blocks

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #51422: Jamo don’t form syllable blocks

Submitter:  David Corbett <dscorbett>
Submitted:  Sun 09 Jul 2017 12:24:26 AM UTC
   
 
Category:  None Severity:  3 - Normal
Item Group:  None Status:  Works For Me
Privacy:  Public Assigned to:  unifoundry
Open/Closed:  Closed

Thu 28 Dec 2017 03:26:16 AM UTC, comment #4: 

These are not combining characters, and any substitutions would be handled by an input method editor and/or use an intelligent OpenType font with glyph substitutions. Unifont is neither of those. So I am going to leave the Jamo glyphs as they are.


Paul Hardy

Paul Hardy <unifoundry>
Group administrator
Sun 09 Jul 2017 09:06:17 PM UTC, comment #3: 

David,

Originally my thinking was that with the modern Hangul syllables having their own block, I would leave the Hangul Jamo block as standalone glyphs for illustration purposes.

Fitting Hangul syllables comprised of single form glyphs into 16 rows is easier said than done. What I would consider, if someone would actually use the font, is to create a separate font only comprised of conjoining Hangul jamo that was 24 rows tall. I would be especially inclined to do this if there is no other free font available that provides support for the ancient characters contained within the Hangul jamo block.

That is something I could do possibly over the next year as I have time. I would try to make the result look more or less decent. I would leave the Unifont Hangul Jamo block as it is in that case.

When Andrew Miller created Perl versions of my C programs to create graphic charts, he included a capability to handle glyphs that were 24 pixels tall. I have not used that capability yet, but I could try it for this particular case.

As for the Indic scripts, Unifont is very lacking in representing them. For all of the Indic scripts, I think Unifont truly is a font of last resort when nothing else is available.


Paul Hardy

Paul Hardy <unifoundry>
Group administrator
Sun 09 Jul 2017 02:57:44 PM UTC, comment #2: 

Unifont can do this, and I think you’ve misunderstood the scope of my suggestion.

I am not proposing any change to the characters in Hangul Syllables. I am only referring to the characters in Hangul Jamo, Hangul Jamo Extended-A, and Hangul Jamo Extended-B. This would has no impact on Unifont’s Hangul syllable generation.

The current behavior is wrong for ancient Hangul. An ancient Hangul syllable block is 4 or 6 cells wide but should be 2 wide. Naïvely superimposing jamo may look like the work of a little child, but it is the best Unifont can do and is no different from what it does in other scripts. (For example, Malayalam puts combining characters all around its letters, which requires squishing left-side vowels and leaving extra space after every consonant in case it has a right-side mark. This is not beautiful but it is better than making every combining mark spacing.)

That means that, using the variation numbering from hangul-generation.html, choseong should use variation 10, 3-variation jungseong should use variation 2, 4-variation jungseong should use variation 4, and jongseong should use variation 2. This does not require any TrueType kerning, so it is within Unifont’s capabilities.

As it happens, many of the jamo are already designed to fit together like this; they just require entries in plane00-combining.txt. For example, ⟨냐ᇃ⟩ looks fine if you manually make the jamo overstrike each other.

I hope this is convincing. If not, I have two questions. Is the current behavior correct for ancient Hangul? How is this different from my example of Malayalam?

David Corbett <dscorbett>
Sun 09 Jul 2017 05:07:33 AM UTC, comment #1: 

David,

This goes far beyond the capabilities of Unifont. I will try to explain why.

When I thought to create a block of Hangul syllables that used one glyph for each letter, superimposing three letters to form a syllable, a well-educated person from Korea told me that no Korean would ever be satisfied with such an approach, that frankly the result would look like the syllables were written by a little child who had not learned the rules of writing Hangul. That is what you will produce if you try to combine Hangul letters together in a syllable when each letter only has one variation.

There was a program called Hanterm that ran under an xterm window that used several variations for each glyph, with rules as to how they were combined to form syllables. Jungshik Shin (a Korean) had donated a Perl script to the Unifont effort to use the Hanterm fonts to create syllables. Unfortunately, the Hanterm glyphs were never licensed for use in anything except Hanterm. I was unable to locate the author of those fonts to get permission to use them in Unifont. Unifont contained those glyphs originally, and they had to be pulled out because of the licensing issue.

I reasoned that if Koreans had created Hanterm, they probably had derived an acceptable minimal number of variations for each letter when combining them into syllables.

There was no English documentation that I could find on the Web explaining how the Hanterm fonts were organized, so I studied Jungshik's Perl program and added some comments to it to help myself understand it better. I also shared my thoughts with native Koreans to get further insight into why the letter variations were formed the way they were.

You can see the fruits of that labor here:

http://www.unifoundry.com/hangul/index.html

and here:

http://unifoundry.com/hangul/hangul-generation.html

I wound up spending five years off and on with native Koreans going over those glyphs to get something that they considered acceptable. The end result is still not absolutely perfect, but it was at a point of diminishing returns. So I wrapped up work on those glyphs and used them to create the Hangul Syllables Block that is in Unifont today.

Only having a row height of 16 pixels made the effort extremely difficult. If the glyphs had been 24 pixels tall, it would have made a world of difference. But that is not what I had to work with.

So what you suggest is something that could be implemented in a TrueType font with mapping to kerning pairs that is beyond the capabilities of Unifont. Such a font would have to be created by someone who was well versed in the many nuances of Hangul syllable formation. There was a point where I understood enough that I could have created a new Hangul font that was 24 pixels tall, but only by using multiple variations of each glyph. However, I do not think I will put in that level of effort for Hangul again. If someone Korean is interested in creating a new set of glyphs to distribute under the GPL, that is something I could help get off the ground but it would be a different font than the current Unifont.


Paul Hardy

Paul Hardy <unifoundry>
Group administrator
Sun 09 Jul 2017 12:24:26 AM UTC, original submission:  

Hangul jamo don’t combine into syllable blocks; for example, ⟨ᅞᆦᇾ⟩. The jungseong and jongseong (vowels and trailing consonants) should be treated as combining characters. Some jamo will need to be shifted or made a bit smaller to avoid overlapping other jamo. U+115F HANGUL CHOSEONG FILLER and U+1160 HANGUL JUNGSEONG FILLER should have blank 2-cell-wide glyphs.

David Corbett <dscorbett>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by unifoundry (Posted a comment)
  • -email is unavailable- added by dscorbett (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2017-12-28 unifoundry StatusPostponed Works For Me
        Assigned toNone unifoundry
        Open/ClosedOpen Closed
    2017-07-12 unifoundry StatusNone Postponed

    Back to the top

    Powered by Savane 3.13-d3ae.
    Corresponding source code