Creating a Hangeul font

Tutorial
by Minjoo Ham & Aaron Bell
en zh

26 July 2022 Published on 19 November 2018

Creating a new Korean font, with such a large character set, can seem like a daunting task—where to begin? This tutorial will give you all the tools to get started with Korean and show you the basics of creating a new Korean font in Glyphs.

If you’re already familiar with the Korean language feel free to jump ahead.

The Jamo alphabet

The Korean script is called Hangeul (or Hangul) and is comprised of syllables made up of component letters called Jamo. There are three categories of Jamo: Choseong (consonants at the start of a syllable), Jungseong (vowels in the middle of a syllable), and Jongseong (consonants at the end of a syllable).

Here are all the possible Jamo in modern Korean:

  • Choseong (initial): ᄀᄁᄂᄃᄄᄅᄆᄇᄈᄉᄊᄋᄌᄍᄎᄏᄐᄑᄒ
  • Jungseong (medial): ㅏㅑㅓㅕㅗㅛㅜㅠㅡㅣㅐㅒㅔㅖㅘㅙㅚㅝㅞㅟㅢ
  • Jongseong (final): ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ

For more information on these Jamo, how to pronounce them, and other information on Hangeul, please check out the wikipedia article.

Syllable construction

Hangeul syllables are constructed from Jamo in one of six ways depending on the vowel (Jungseong) used in the syllable:

White is the initial Choseong, yellow is the medial Jungseong, and dark gray is the final Jongseong.

These six different syllables are named based on their structure.

  1. Horizontal combination (initial consonant with vertical vowel).
  2. Vertical combination (initial consonant with horizontal vowel).
  3. Mixed combination (initial consonant with mixed vowel).
  4. Horizontal combination with a final consonant.
  5. Vertical combination with a final consonant.
  6. Mixed combination with a final consonant.

Let’s look at some example syllables:

You’ll note that the relative positions of the Choseong and Jungseong stay the same, regardless of the addition of a Jongseong.

Now that you’ve got a basic handle on Korean, let’s get started!

Korean and Unicode

Glyphs makes it simple to add all the Hangeul Unicode characters you need for your project. In the sidebar, under the Languages > Korean section, there are different subcategories:

  • Jamo Compatibility: This is the Unicode block used to represent the Jamo in an isolated form.
  • Choseong: These are the consonant Jamo in the initial position.
  • Jungseong: These are the vowel Jamo in the medial position.
  • Jongseong: These are the consonant Jamo in the final position.

Hangeul syllables are each represented with their own Unicode slots. There are two subcategories that you should consider.

  • Basic Syllables: These are the core 2,780 Hangeul syllables based on the KS X 1001 standard and Adobe-KR standards. This is all you need for modern Korean typesetting, and probably what you want to have in your font as well. Trust me.
  • All Syllables: These are the full set of syllables (11,172) for anything that could possibly ever occur.

Some other subcategories worth noting:

  • Codepages > Adobe-KR: These entries cover the various Adobe-KR standards used for creating Korean fonts. Many major type foundries use these for their fonts.
  • Codepages > KS X 1001 (Hanja): This category covers Chinese characters used for Korean text. These characters are not common in modern Korean use.

To add these subcategories to your font, right click on each to list all missing glyphs, press Cmd-A to select them all, and click Generate:

Basic syllable creation

Now let’s get down to drawing! For this example, let’s focus on the glyph 밈 mim-ko, a mixed combination syllable with a final consonant. To create this syllable, we’ll need four glyphs—three Jamo and the full syllable:

mieumCho-ko
iJung-ko
mieumJong-ko
mim-ko

If you don’t already have these glyphs in your font, you can either add them through the left sidebar Languages > Korean, or select Glyph > Add Glyphs… (Cmd-Shift-G) from the top menu and paste the names above in the box. Once you confirm the dialog, and ta-daa, all of the necessary glyphs are added to your font.

Hint: In Glyphs, all Korean glyphs are marked with the suffix -ko. Additionally, to differentiate between which Jamo is at the start, middle, and end of a syllable, the abbreviations Cho for Choseong, Jung for Jungseong, and Jong for Jongseong are used in the glyph name. For example, yiJung-ko denoting the vowel yi, or mieumCho-ko denoting the initial version of the consonant mieum.

Please open the mieumCho-ko glyph:

If you’ve used another program for Korean font development, or have created a Latin font in Glyphs, you may notice that the metric box looks different for Korean characters. Instead of the standard baseline, x-height, cap-height, and ascender values, CJK glyphs are displayed using the em-square with the midway points of the em-square marked as well as the font baseline. This enables you to consider positional alignment with other scripts without being distracted by unnecessary metrics.

Let’s draw the mieumCho-ko glyph something like this:

Note in this example the positioning of the Jamo. Given that this syllable has a final consonant, let's place the first consonant high and to the left as this will ensure that the different Jamo do not overlap one another during automatic placement.

Next, double-click the iJung-ko glyph and draw the basic ㅣshape:

Again, note the placement of this Jamo—off to the right of the previous one.

Finally, double-click the mieumJong-ko glyph. As this is the same Jamo as in mieumCho-ko, feel free to copy and paste the outlines you drew here. Then shift it downward to a position underneath the iJung-ko Jamo you drew:

Now go to mim-ko, and you will see an empty glyph:

Here’s where the magic happens. Glyphs knows that the mim-ko is made up of a mieumCho-ko, iJung-ko, and mieumJong-ko, so it can automatically build the syllable for you. Choose Glyph > Create Composite (Ctrl-Cmd-C), and boom:

If you repeat this process for every Jamo in the Choseong, Jungseong, and Jongseong lists, Glyphs can even build out all 11,000+ Hangeul syllables in the All Syllables set. Wow! You’ve just created your first Hangeul font!

This style of Hangeul font is usually referred to as “out-of-frame style” (a.k.a. “deframe” or “de-squared”) and is a fairly contemporary approach to Hangeul design most often used for display typography.

Jamo variants

In the Basic Syllables section, the same Choseong, Jungseong, and Jongseong Jamo is used for every syllable, regardless of structure. However, what if your design requires that you vary the shape of a Jamo depending on the other Jamo in the same syllable?

In the example below, the ㅁ (mieum, marked in blue) changes shape depending on which final Jamo is used:

Looking at these two sample syllables, you’ll note that the ㄴ (nieun) in the first syllable affords the ㅁ (mieum) more vertical space than the ㄹ (rieul) in the second syllable. As you can imagine, every syllable is different, so suddenly you might find yourself with 5, 10, even 20 versions of each Jamo! It might seem scary, but this variation is absolutely important to achieve proper balance and proportion for text typography.

This style of Hangeul is usually referred to as “in-frame style” (or simply “frame” or “squared”) and is the most common style of Hangeul.

Advanced syllable creation

Let’s try out using Jamo variants. For this example, we’ll focus on the man-ko 만. Please add the following glyphs in your font:

man-ko
mieumCho-ko
aJung-ko
nieunJong-ko

Also create two variants:

mieumCho-ko.man
aJung-ko.man

This time, when we draw the mieumCho-ko and aJung-ko, we will draw them at full height, as if we are designing the character 마 ma-ko. First, here comes mieum-ko:

Do the same with aJung-ko:

For the nieunJong-ko, draw it at the bottom of the box, like so:

Now, when we go to man-ko, and press Glyph > Create Composite (Ctrl-Cmd-C), we get a rather unpleasant result:

Oh no! Everything is overlapping! But we have a solution. Remember those two variant glyphs we created? Copy the outline from mieumCho-ko into mieumCho-ko.man (or duplicate the glyph with Glyph > Duplicate Glyph and rename the new glyph accordingly), and raise the bottom of the Jamo so there’s room between the top of the ㄴ (nieun) and the bottom of the ㅁ (mieum).

Once done, go back to man-ko, and select the mieumCho-ko component and click the name mieumCho-ko in the grey info box below...

... and the window for selecting components will pop up. Search for mieumCho-ko.man and select it:

This will replace the selected component with its .man variant. Ta-daa! With the .man variant, we’ve solved the overlap problem, and achieved better balance between the Choseong and the Jongseong!

Now, you can probably guess already what remains to be done, and select the aJung-ko component:

If you follow the same steps for the aJung-ko, the final result will look like this:

Nice. You deserve a good shoulder pat now. In this example, we were lucky and didn’t need to make any changes to the nieunJong-ko, but in other syllables it will be necessary to swap in an alternate version for this Jamo as well.

Congratulations! You made your first “in-frame style” Hangeul syllable! Now, just repeat the process for all 2,780 basic Hangeul syllables, and you’ll be done. Easy, right?

Coming soon: Hangeul composition

Lucky for us, Glyphs includes advanced features for the creation of Hangeul syllables. The Hangeul Composition engine allows you to collect glyph variants in groups, establish rules to determine which Jamo should be used where. Once done, the engine will automatically manage the entire database of syllables for you! But that is for our next Korean tutorial.

Have fun and stay tuned!


Guest tutorial by Minjoo Ham and Aaron Bell.
Thanks to Eunyou Noh, Daekwon Kim and Yanghee Rue for their feedback.
SAMPLE FONTS: GEOJANG AND HAHMLET BY MINJOO HAM.

Update 2019-02-12: fixed and restored screenshots.
Update 2020-11-13: Glyphs 3 website updates.
Update 2022-16-08: updated title, related articles, minor formatting.