Creating a Hangeul Font

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 you need 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.

Hint: We recommend that you design at least one of each of these six syllable variants by hand early in your workflow. Doing so will help you determine guides, alignments, and sizes of letters quickly.

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

Korean & 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.

Pro Tip: A key feature in Glyphs is the inclusion of technology that automatically generates the Hangeul syllables. This technology requires the use of the Choseong / Jungseong / Jongseong unicode blocks. If you are planning to build the syllables individually by hand, use of these unicode slots is not necessary.

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.

Pro tip: Glyphs includes an extremely handy feature called CJK Grid which allows you to add a custom grid. Go to File > Font Info > Masters and in the Custom Parameters field, click on the plus and add CJK Grid as Property. Then set the Value as the number of columns and rows you want. We recommend using 8 for Hangeul development.

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 > Make Component Glyph (Cmd-Opt-Shift-C), and boom:

Pro tip: If you are wondering which Jamo are used for a certain syllable, you can preview the compositions in Window > Glyph Info, and overwrite the defaults with your own compositions by writing your own Glyph Data XML.

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 > Make Component Glyph, 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).

Pro tip: With Smart Components, you can re-use and adapt shapes much easier. Making Smart Components takes a little time, but it is worth it. Otherwise, you would spend lots of time repeating shapes in all kinds of variations.

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.

Tip: To edit the original glyph of a component, simply double click the (grey) component, and Glyphs will insert the original glyph in Edit view, and even activate it for immediate editing. This way, you can adapt the .man glyphs, and see the combined result right away in the man-ko syllable.

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.