Merge Android 14 QPR2 to AOSP main

Bug: 319669529
Merged-In: I952d74a1364d8cd4de45c8d9e1e9bb65416cdbfe
Change-Id: I6397373181b868e00d03526f60fa7cd336fd5dbf
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 279657d..287c353 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -2,6 +2,25 @@
   "presubmit": [
     {
       "name": "minikin_tests"
+    },
+    {
+      "name": "CtsTextTestCases",
+      "options": [
+          {
+              "exclude-annotation": "androidx.test.filters.FlakyTest"
+          },
+          {
+              "exclude-annotation": "androidx.test.filters.LargeTest"
+          }
+      ]
+    },
+    {
+      "name": "CtsGraphicsTestCases",
+      "options": [
+          {
+              "exclude-annotation": "androidx.test.filters.FlakyTest"
+          }
+      ]
     }
   ]
 }
diff --git a/include/minikin/AndroidLineBreakerHelper.h b/include/minikin/AndroidLineBreakerHelper.h
index 302d2b1..88dd2dd 100644
--- a/include/minikin/AndroidLineBreakerHelper.h
+++ b/include/minikin/AndroidLineBreakerHelper.h
@@ -74,11 +74,17 @@
 class StaticLayoutNative {
 public:
     StaticLayoutNative(BreakStrategy strategy, HyphenationFrequency frequency, bool isJustified,
-                       std::vector<float>&& indents)
+                       std::vector<float>&& indents, bool useBoundsForWidth)
             : mStrategy(strategy),
               mFrequency(frequency),
               mIsJustified(isJustified),
-              mIndents(std::move(indents)) {}
+              mIndents(std::move(indents)),
+              mUseBoundsForWidth(useBoundsForWidth) {}
+
+    StaticLayoutNative(BreakStrategy strategy, HyphenationFrequency frequency, bool isJustified,
+                       std::vector<float>&& indents)
+            : StaticLayoutNative(strategy, frequency, isJustified, std::move(indents),
+                                 false /* useBoundsForWidth */) {}
 
     LineBreakResult computeBreaks(const U16StringPiece& textBuf, const MeasuredText& measuredText,
                                   // Line width arguments
@@ -90,7 +96,8 @@
         AndroidLineWidth lineWidth(firstWidth, firstWidthLineCount, restWidth, mIndents,
                                    indentsOffset);
         return breakIntoLines(textBuf, mStrategy, mFrequency, mIsJustified, measuredText, lineWidth,
-                              TabStops(tabStops, tabStopSize, defaultTabStopWidth));
+                              TabStops(tabStops, tabStopSize, defaultTabStopWidth),
+                              mUseBoundsForWidth);
     }
 
     inline BreakStrategy getStrategy() const { return mStrategy; }
@@ -104,6 +111,7 @@
     const std::vector<float> mIndents;
     const std::vector<float> mLeftPaddings;
     const std::vector<float> mRightPaddings;
+    const bool mUseBoundsForWidth;
 };
 
 }  // namespace android
diff --git a/include/minikin/BoundsCache.h b/include/minikin/BoundsCache.h
deleted file mode 100644
index 64f2b49..0000000
--- a/include/minikin/BoundsCache.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MINIKIN_BOUNDS_CACHE_H
-#define MINIKIN_BOUNDS_CACHE_H
-
-#include "minikin/LayoutCache.h"
-
-#include <mutex>
-
-#include <utils/LruCache.h>
-
-#include "minikin/BoundsCache.h"
-#include "minikin/FontCollection.h"
-#include "minikin/Hasher.h"
-#include "minikin/MinikinPaint.h"
-
-namespace minikin {
-
-// Cache entry
-struct BoundsValue {
-    MinikinRect rect;
-    float advance;
-};
-
-// Used for callback for LayoutCache.
-struct ValueExtractor {
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& paint);
-    std::unique_ptr<BoundsValue> value;
-};
-
-class BoundsCache : private android::OnEntryRemoved<LayoutCacheKey, BoundsValue*> {
-public:
-    void clear() {
-        std::lock_guard<std::mutex> lock(mMutex);
-        mCache.clear();
-    }
-
-    // Do not use BoundsCache inside the callback function, otherwise dead-lock may happen.
-    template <typename F>
-    void getOrCreate(const U16StringPiece& text, const Range& range, const MinikinPaint& paint,
-                     bool dir, StartHyphenEdit startHyphen, EndHyphenEdit endHyphen, F& f) {
-        LayoutCacheKey key(text, range, paint, dir, startHyphen, endHyphen);
-        if (paint.skipCache() || range.getLength() >= LENGTH_LIMIT_CACHE) {
-            LayoutPiece piece = LayoutPiece(text, range, dir, paint, startHyphen, endHyphen);
-            f(getBounds(piece, paint), piece.advance());
-            return;
-        }
-        {
-            std::lock_guard<std::mutex> lock(mMutex);
-            BoundsValue* value = mCache.get(key);
-            if (value != nullptr) {
-                f(value->rect, value->advance);
-                return;
-            }
-        }
-        // Doing text layout takes long time, so releases the mutex during doing layout.
-        // Don't care even if we do the same layout in other thread.
-        key.copyText();
-        ValueExtractor ve;
-        LayoutCache::getInstance().getOrCreate(text, range, paint, dir, startHyphen, endHyphen, ve);
-        f(ve.value->rect, ve.value->advance);
-        {
-            std::lock_guard<std::mutex> lock(mMutex);
-            mCache.put(key, ve.value.release());
-        }
-    }
-
-    static BoundsCache& getInstance() {
-        static BoundsCache cache(kMaxEntries);
-        return cache;
-    }
-
-    // Compute new bounding box for the layout piece.
-    static MinikinRect getBounds(const LayoutPiece& layoutPiece, const MinikinPaint& paint);
-
-protected:
-    BoundsCache(uint32_t maxEntries) : mCache(maxEntries) {
-        mCache.setOnEntryRemovedListener(this);
-    }
-
-private:
-    // callback for OnEntryRemoved
-    void operator()(LayoutCacheKey& key, BoundsValue*& value) {
-        key.freeText();
-        delete value;
-    }
-
-    std::mutex mMutex;
-    android::LruCache<LayoutCacheKey, BoundsValue*> mCache GUARDED_BY(mMutex) GUARDED_BY(mMutex);
-    // LRU cache capacity. Should be fine to be less than LayoutCache#kMaxEntries since bbox
-    // calculation happens less than layout calculation.
-    static const size_t kMaxEntries = 500;
-};
-
-}  // namespace minikin
-#endif  // MINIKIN_BOUNDS_CACHE_H
diff --git a/include/minikin/Characters.h b/include/minikin/Characters.h
index 074d134..d298d07 100644
--- a/include/minikin/Characters.h
+++ b/include/minikin/Characters.h
@@ -34,6 +34,7 @@
 constexpr uint32_t CHAR_UCAS_HYPHEN = 0x1400;
 constexpr uint32_t CHAR_ZWJ = 0x200D;
 constexpr uint32_t CHAR_HYPHEN = 0x2010;
+constexpr uint32_t CHAR_REPLACEMENT_CHARACTER = 0xFFFD;
 
 }  // namespace minikin
 
diff --git a/include/minikin/Constants.h b/include/minikin/Constants.h
new file mode 100644
index 0000000..ba074e4
--- /dev/null
+++ b/include/minikin/Constants.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MINIKIN_CONST_H
+#define MINIKIN_CONST_H
+
+#include <cstdint>
+#include <memory>
+#include <vector>
+
+#include "minikin/FontVariation.h"
+
+namespace minikin {
+
+constexpr uint32_t MakeTag(char c1, char c2, char c3, char c4) {
+    return ((uint32_t)c1 << 24) | ((uint32_t)c2 << 16) | ((uint32_t)c3 << 8) | (uint32_t)c4;
+}
+
+// Axis tags
+const uint32_t TAG_wght = MakeTag('w', 'g', 'h', 't');
+const uint32_t TAG_ital = MakeTag('i', 't', 'a', 'l');
+
+}  // namespace minikin
+
+#endif  // MINIKIN_CONST_H
diff --git a/include/minikin/Debug.h b/include/minikin/Debug.h
new file mode 100644
index 0000000..20d8d8d
--- /dev/null
+++ b/include/minikin/Debug.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MINIKIN_DEBUG_H
+#define MINIKIN_DEBUG_H
+
+#include <string>
+
+namespace minikin {
+
+struct Point;
+struct MinikinRect;
+struct MinikinExtent;
+struct MinikinPaint;
+struct FontFeature;
+class Range;
+class U16StringPiece;
+class LayoutPiece;
+
+namespace debug {
+
+// Convert UTF16 string to std::string for debugging purpose.
+std::string toUtf8(const U16StringPiece& text);
+
+std::string toString(const Point& point);
+std::string toString(const MinikinRect& rect);
+std::string toString(const Range& range);
+std::string toString(const MinikinExtent& extent);
+std::string toString(const LayoutPiece& layout);
+std::string toString(const MinikinPaint& paint);
+std::string toString(const FontFeature& feature);
+std::string toString(const std::vector<FontFeature>& features);
+
+}  // namespace debug
+
+}  // namespace minikin
+#endif  // MINIKIN_DEBUG_H
diff --git a/include/minikin/FamilyVariant.h b/include/minikin/FamilyVariant.h
index 1734a1f..7711484 100644
--- a/include/minikin/FamilyVariant.h
+++ b/include/minikin/FamilyVariant.h
@@ -18,6 +18,7 @@
 #define MINIKIN_FAMILY_VARIANT_H
 
 #include <cstdint>
+#include <ostream>
 
 namespace minikin {
 
@@ -28,6 +29,19 @@
     ELEGANT = 2,  // Must be the same as FontConfig.VARIANT_ELEGANT
 };
 
+inline std::ostream& operator<<(std::ostream& os, const FamilyVariant& variant) {
+    switch (variant) {
+        case FamilyVariant::DEFAULT:
+            return os << "default";
+        case FamilyVariant::COMPACT:
+            return os << "compact";
+        case FamilyVariant::ELEGANT:
+            return os << "elegant";
+        default:
+            return os << "[UNKNOWN]";
+    }
+}
+
 }  // namespace minikin
 
 #endif  // MINIKIN_FAMILY_VARIANT_H
diff --git a/include/minikin/Font.h b/include/minikin/Font.h
index f144bea..5f85b77 100644
--- a/include/minikin/Font.h
+++ b/include/minikin/Font.h
@@ -20,7 +20,9 @@
 #include <gtest/gtest_prod.h>
 
 #include <atomic>
+#include <map>
 #include <memory>
+#include <mutex>
 #include <unordered_set>
 
 #include "minikin/Buffer.h"
@@ -38,33 +40,65 @@
 // attributes representing transforms (fake bold, fake italic) to match styles
 class FontFakery {
 public:
-    FontFakery() : mFakeBold(false), mFakeItalic(false) {}
-    FontFakery(bool fakeBold, bool fakeItalic) : mFakeBold(fakeBold), mFakeItalic(fakeItalic) {}
+    FontFakery() : FontFakery(false, false, -1, -1) {}
+    FontFakery(bool fakeBold, bool fakeItalic) : FontFakery(fakeBold, fakeItalic, -1, -1) {}
+    FontFakery(bool fakeBold, bool fakeItalic, int16_t wghtAdjustment, int8_t italAdjustment)
+            : mBits(pack(fakeBold, fakeItalic, wghtAdjustment, italAdjustment)) {}
+
     // TODO: want to support graded fake bolding
-    bool isFakeBold() { return mFakeBold; }
-    bool isFakeItalic() { return mFakeItalic; }
-    inline bool operator==(const FontFakery& o) const {
-        return mFakeBold == o.mFakeBold && mFakeItalic == o.mFakeItalic;
+    bool isFakeBold() { return (mBits & MASK_FAKE_BOLD) != 0; }
+    bool isFakeItalic() { return (mBits & MASK_FAKE_ITALIC) != 0; }
+    bool hasAdjustment() const { return hasWghtAdjustment() || hasItalAdjustment(); }
+    bool hasWghtAdjustment() const { return (mBits & MASK_HAS_WGHT_ADJUSTMENT) != 0; }
+    bool hasItalAdjustment() const { return (mBits & MASK_HAS_ITAL_ADJUSTMENT) != 0; }
+    int16_t wghtAdjustment() const {
+        if (hasWghtAdjustment()) {
+            return (mBits & MASK_WGHT_ADJUSTMENT) >> WGHT_ADJUSTMENT_SHIFT;
+        } else {
+            return -1;
+        }
     }
+
+    int8_t italAdjustment() const {
+        if (hasItalAdjustment()) {
+            return (mBits & MASK_ITAL_ADJUSTMENT) != 0 ? 1 : 0;
+        } else {
+            return -1;
+        }
+    }
+
+    uint16_t bits() const { return mBits; }
+
+    inline bool operator==(const FontFakery& o) const { return mBits == o.mBits; }
     inline bool operator!=(const FontFakery& o) const { return !(*this == o); }
 
 private:
-    bool mFakeBold;
-    bool mFakeItalic;
-};
+    static constexpr uint16_t MASK_FAKE_BOLD = 1u;
+    static constexpr uint16_t MASK_FAKE_ITALIC = 1u << 1;
+    static constexpr uint16_t MASK_HAS_WGHT_ADJUSTMENT = 1u << 2;
+    static constexpr uint16_t MASK_HAS_ITAL_ADJUSTMENT = 1u << 3;
+    static constexpr uint16_t MASK_ITAL_ADJUSTMENT = 1u << 4;
+    static constexpr uint16_t MASK_WGHT_ADJUSTMENT = 0b1111111111u << 5;
+    static constexpr uint16_t WGHT_ADJUSTMENT_SHIFT = 5;
 
-struct FakedFont {
-    inline bool operator==(const FakedFont& o) const {
-        return font == o.font && fakery == o.fakery;
+    uint16_t pack(bool isFakeBold, bool isFakeItalic, int16_t wghtAdjustment,
+                  int8_t italAdjustment) {
+        uint16_t bits = 0u;
+        bits |= isFakeBold ? MASK_FAKE_BOLD : 0;
+        bits |= isFakeItalic ? MASK_FAKE_ITALIC : 0;
+        if (wghtAdjustment != -1) {
+            bits |= MASK_HAS_WGHT_ADJUSTMENT;
+            bits |= (static_cast<uint16_t>(wghtAdjustment) << WGHT_ADJUSTMENT_SHIFT) &
+                    MASK_WGHT_ADJUSTMENT;
+        }
+        if (italAdjustment != -1) {
+            bits |= MASK_HAS_ITAL_ADJUSTMENT;
+            bits |= (italAdjustment == 1) ? MASK_ITAL_ADJUSTMENT : 0;
+        }
+        return bits;
     }
-    inline bool operator!=(const FakedFont& o) const { return !(*this == o); }
 
-    // ownership is the enclosing FontCollection
-    // FakedFont will be stored in the LayoutCache. It is not a good idea too keep font instance
-    // even if the enclosing FontCollection, i.e. Typeface is GC-ed. The layout cache is only
-    // purged when it is overflown, thus intentionally keep only reference.
-    const std::shared_ptr<Font>& font;
-    FontFakery fakery;
+    const uint16_t mBits;
 };
 
 // Represents a single font file.
@@ -121,9 +155,16 @@
     // This locale list is just for API compatibility. This is not used in font selection or family
     // fallback.
     uint32_t getLocaleListId() const { return mLocaleListId; }
-    const std::shared_ptr<MinikinFont>& typeface() const;
     inline FontStyle style() const { return mStyle; }
+
     const HbFontUniquePtr& baseFont() const;
+    const std::shared_ptr<MinikinFont>& baseTypeface() const;
+
+    // Returns an adjusted hb_font_t instance and MinikinFont instance.
+    // Passing -1 each means do not override the current variation settings.
+    HbFontUniquePtr getAdjustedFont(int wght, int ital) const;
+    const std::shared_ptr<MinikinFont>& getAdjustedTypeface(int wght, int ital) const;
+
     BufferReader typefaceMetadataReader() const { return mTypefaceMetadataReader; }
 
     std::unordered_set<AxisTag> getSupportedAxes() const;
@@ -139,6 +180,11 @@
 
         std::shared_ptr<MinikinFont> mTypeface;
         HbFontUniquePtr mBaseFont;
+
+        const std::shared_ptr<MinikinFont>& getAdjustedTypeface(int wght, int ital) const;
+        mutable std::mutex mMutex;
+        mutable std::map<uint16_t, std::shared_ptr<MinikinFont>> mVarTypefaceCache
+                GUARDED_BY(mMutex);
     };
 
     // Use Builder instead.
@@ -152,6 +198,7 @@
     void resetExternalRefs(ExternalRefs* refs);
 
     const ExternalRefs* getExternalRefs() const;
+    std::vector<FontVariation> getAdjustedVariations(int wght, int ital) const;
 
     static HbFontUniquePtr prepareFont(const std::shared_ptr<MinikinFont>& typeface);
     static FontStyle analyzeStyle(const HbFontUniquePtr& font);
@@ -172,6 +219,28 @@
     FRIEND_TEST(FontTest, MoveAssignmentTest);
 };
 
+struct FakedFont {
+    inline bool operator==(const FakedFont& o) const {
+        return font == o.font && fakery == o.fakery;
+    }
+    inline bool operator!=(const FakedFont& o) const { return !(*this == o); }
+
+    HbFontUniquePtr hbFont() const {
+        return font->getAdjustedFont(fakery.wghtAdjustment(), fakery.italAdjustment());
+    }
+
+    const std::shared_ptr<MinikinFont>& typeface() const {
+        return font->getAdjustedTypeface(fakery.wghtAdjustment(), fakery.italAdjustment());
+    }
+
+    // ownership is the enclosing FontCollection
+    // FakedFont will be stored in the LayoutCache. It is not a good idea too keep font instance
+    // even if the enclosing FontCollection, i.e. Typeface is GC-ed. The layout cache is only
+    // purged when it is overflown, thus intentionally keep only reference.
+    const std::shared_ptr<Font>& font;
+    FontFakery fakery;
+};
+
 }  // namespace minikin
 
 #endif  // MINIKIN_FONT_H
diff --git a/include/minikin/FontCollection.h b/include/minikin/FontCollection.h
index 03d06e6..63f79d6 100644
--- a/include/minikin/FontCollection.h
+++ b/include/minikin/FontCollection.h
@@ -35,6 +35,8 @@
 // The maximum number of font families.
 constexpr uint32_t MAX_FAMILY_COUNT = 254;
 
+class LocaleList;
+
 class FontCollection {
 public:
     static std::shared_ptr<FontCollection> create(
@@ -148,6 +150,8 @@
         return itemize(text, style, localeListId, familyVariant, text.size());
     }
 
+    MinikinExtent getReferenceExtentForLocale(const MinikinPaint& paint) const;
+
     // Returns true if there is a glyph for the code point and variation selector pair.
     // Returns false if no fonts have a glyph for the code point and variation
     // selector pair, or invalid variation selector is passed.
@@ -224,6 +228,9 @@
 
     bool isPrimaryFamily(const std::shared_ptr<FontFamily>& fontFamily) const;
 
+    void filterFamilyByLocale(const LocaleList& localeList,
+                              const std::function<void(const FontFamily& family)>& callback) const;
+
     static uint32_t calcLocaleMatchingScore(uint32_t userLocaleListId,
                                             const FontFamily& fontFamily);
 
diff --git a/include/minikin/FontFamily.h b/include/minikin/FontFamily.h
index 6161f5c..c61a076 100644
--- a/include/minikin/FontFamily.h
+++ b/include/minikin/FontFamily.h
@@ -30,6 +30,13 @@
 
 namespace minikin {
 
+enum VariationFamilyType : uint8_t {
+    None = 0,
+    SingleFont_wghtOnly = 1,
+    SingleFont_wght_ital = 2,
+    TwoFont_wght = 3,
+};
+
 class FontFamily {
 public:
     static std::shared_ptr<FontFamily> create(std::vector<std::shared_ptr<Font>>&& fonts);
@@ -37,7 +44,8 @@
                                               std::vector<std::shared_ptr<Font>>&& fonts);
     static std::shared_ptr<FontFamily> create(uint32_t localeListId, FamilyVariant variant,
                                               std::vector<std::shared_ptr<Font>>&& fonts,
-                                              bool isCustomFallback, bool isDefaultFallback);
+                                              bool isCustomFallback, bool isDefaultFallback,
+                                              VariationFamilyType varFamilyType);
 
     FontFamily(FontFamily&&) = default;
     FontFamily& operator=(FontFamily&&) = default;
@@ -47,6 +55,7 @@
                             const std::vector<std::shared_ptr<FontFamily>>& families);
 
     FakedFont getClosestMatch(FontStyle style) const;
+    FakedFont getVariationFamilyAdjustment(FontStyle style) const;
 
     uint32_t localeListId() const { return mLocaleListId; }
     FamilyVariant variant() const { return mVariant; }
@@ -80,7 +89,7 @@
 private:
     FontFamily(uint32_t localeListId, FamilyVariant variant,
                std::vector<std::shared_ptr<Font>>&& fonts, bool isCustomFallback,
-               bool isDefaultFallback);
+               bool isDefaultFallback, VariationFamilyType varFamilyType);
     explicit FontFamily(BufferReader* reader, const std::shared_ptr<std::vector<Font>>& fonts);
 
     void writeTo(BufferWriter* writer, uint32_t* fontIndex) const;
@@ -103,6 +112,7 @@
     bool mIsColorEmoji;                // 1 byte
     bool mIsCustomFallback;            // 1 byte
     bool mIsDefaultFallback;           // 1 byte
+    VariationFamilyType mVarFamilyType;  // 1byte
 
     MINIKIN_PREVENT_COPY_AND_ASSIGN(FontFamily);
 };
diff --git a/include/minikin/FontFeature.h b/include/minikin/FontFeature.h
new file mode 100644
index 0000000..c47594b
--- /dev/null
+++ b/include/minikin/FontFeature.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MINIKIN_FONT_FEATURE_H
+#define MINIKIN_FONT_FEATURE_H
+
+#include <hb.h>
+
+#include <ostream>
+#include <string_view>
+#include <vector>
+
+namespace minikin {
+
+struct MinikinPaint;
+
+// Subset of the hb_feature_t since we don't allow setting features on ranges.
+struct FontFeature {
+    hb_tag_t tag;
+    uint32_t value;
+
+    static std::vector<FontFeature> parse(std::string_view fontFeatureString);
+};
+
+/**
+ * Returns the final set of font features based on the features requested by this paint object and
+ * extra defaults or implied font features.
+ *
+ * Features are included from the paint object if they are:
+ *   1) in a supported range
+ *
+ * Default features are added based if they are:
+ *   1) implied due to Paint settings such as letterSpacing
+ *   2) default features that do not conflict with requested features
+ */
+std::vector<hb_feature_t> cleanAndAddDefaultFontFeatures(const MinikinPaint& features);
+
+// For gtest output
+inline std::ostream& operator<<(std::ostream& os, const FontFeature& feature) {
+    return os << static_cast<char>(feature.tag >> 24) << static_cast<char>(feature.tag >> 16)
+              << static_cast<char>(feature.tag >> 8) << static_cast<char>(feature.tag) << " "
+              << feature.value;
+}
+
+inline std::ostream& operator<<(std::ostream& os, const std::vector<FontFeature>& features) {
+    for (size_t i = 0; i < features.size(); ++i) {
+        if (i != 0) {
+            os << ", ";
+        }
+        os << features;
+    }
+    return os;
+}
+
+constexpr bool operator==(const FontFeature& l, const FontFeature& r) {
+    return l.tag == r.tag && l.value == r.value;
+}
+
+constexpr bool operator!=(const FontFeature& l, const FontFeature& r) {
+    return !(l == r);
+}
+
+}  // namespace minikin
+#endif  // MINIKIN_LAYOUT_H
diff --git a/include/minikin/FontStyle.h b/include/minikin/FontStyle.h
index 51e4ad8..7a9e597 100644
--- a/include/minikin/FontStyle.h
+++ b/include/minikin/FontStyle.h
@@ -19,6 +19,8 @@
 
 #include <minikin/Buffer.h>
 
+#include <ostream>
+
 namespace minikin {
 
 // FontStyle represents style information.
@@ -61,10 +63,6 @@
     constexpr uint16_t weight() const { return mWeight; }
     constexpr Slant slant() const { return mSlant; }
 
-    constexpr bool operator==(const FontStyle& other) const {
-        return weight() == other.weight() && slant() == other.slant();
-    }
-
     constexpr uint32_t identifier() const {
         return (static_cast<uint32_t>(weight()) << 16) | static_cast<uint32_t>(slant());
     }
@@ -74,6 +72,29 @@
     Slant mSlant;
 };
 
+inline std::ostream& operator<<(std::ostream& os, const FontStyle::Slant& slant) {
+    switch (slant) {
+        case FontStyle::Slant::ITALIC:
+            return os << "italic";
+        case FontStyle::Slant::UPRIGHT:
+            return os << "upright";
+        default:
+            return os << "[UNKNOWN]";
+    }
+}
+
+inline std::ostream& operator<<(std::ostream& os, const FontStyle& style) {
+    return os << "{weight=" << style.weight() << ", slant=" << style.slant() << "}";
+}
+
+constexpr bool operator==(const FontStyle& l, const FontStyle& r) {
+    return l.weight() == r.weight() && l.slant() == r.slant();
+}
+
+constexpr bool operator!=(const FontStyle& l, const FontStyle& r) {
+    return !(l == r);
+}
+
 }  // namespace minikin
 
 #endif  // MINIKIN_FONT_STYLE_H
diff --git a/include/minikin/Hasher.h b/include/minikin/Hasher.h
index 4a76b29..dcfdd0b 100644
--- a/include/minikin/Hasher.h
+++ b/include/minikin/Hasher.h
@@ -18,9 +18,9 @@
 #define MINIKIN_HASHER_H
 
 #include <cstdint>
-
 #include <string>
 
+#include "minikin/FontFeature.h"
 #include "minikin/Macros.h"
 
 namespace minikin {
@@ -57,6 +57,21 @@
         return update(bits.i);
     }
 
+    inline Hasher& update(const std::vector<FontFeature>& features) {
+        uint32_t size = features.size();
+        update(size);
+        for (const FontFeature& feature : features) {
+            update(feature);
+        }
+        return *this;
+    }
+
+    inline Hasher& update(const FontFeature& feature) {
+        update(feature.tag);
+        update(feature.value);
+        return *this;
+    }
+
     inline Hasher& updateShorts(const uint16_t* data, uint32_t length) {
         update(length);
         uint32_t i;
diff --git a/include/minikin/Layout.h b/include/minikin/Layout.h
index 388a7a7..d1f2137 100644
--- a/include/minikin/Layout.h
+++ b/include/minikin/Layout.h
@@ -78,7 +78,13 @@
 
     static float measureText(const U16StringPiece& str, const Range& range, Bidi bidiFlags,
                              const MinikinPaint& paint, StartHyphenEdit startHyphen,
-                             EndHyphenEdit endHyphen, float* advances);
+                             EndHyphenEdit endHyphen, float* advances) {
+        return measureText(str, range, bidiFlags, paint, startHyphen, endHyphen, advances, nullptr);
+    }
+
+    static float measureText(const U16StringPiece& str, const Range& range, Bidi bidiFlags,
+                             const MinikinPaint& paint, StartHyphenEdit startHyphen,
+                             EndHyphenEdit endHyphen, float* advances, MinikinRect* bounds);
 
     const std::vector<float>& advances() const { return mAdvances; }
 
@@ -87,6 +93,7 @@
     const Font* getFont(int i) const { return mGlyphs[i].font.font.get(); }
     const std::shared_ptr<Font>& getFontRef(int i) const { return mGlyphs[i].font.font; }
     FontFakery getFakery(int i) const { return mGlyphs[i].font.fakery; }
+    const std::shared_ptr<MinikinFont>& typeface(int i) const { return mGlyphs[i].font.typeface(); }
     unsigned int getGlyphId(int i) const { return mGlyphs[i].glyph_id; }
     float getX(int i) const { return mGlyphs[i].x; }
     float getY(int i) const { return mGlyphs[i].y; }
@@ -115,18 +122,18 @@
     static float doLayoutRunCached(const U16StringPiece& textBuf, const Range& range, bool isRtl,
                                    const MinikinPaint& paint, size_t dstStart,
                                    StartHyphenEdit startHyphen, EndHyphenEdit endHyphen,
-                                   Layout* layout, float* advances);
+                                   Layout* layout, float* advances, MinikinRect* bounds);
 
     // Lay out a single word
     static float doLayoutWord(const uint16_t* buf, size_t start, size_t count, size_t bufSize,
                               bool isRtl, const MinikinPaint& paint, size_t bufStart,
                               StartHyphenEdit startHyphen, EndHyphenEdit endHyphen, Layout* layout,
-                              float* advances);
+                              float* advances, MinikinRect* bounds);
 
     // Lay out a single bidi run
     void doLayoutRun(const uint16_t* buf, size_t start, size_t count, size_t bufSize, bool isRtl,
                      const MinikinPaint& paint, StartHyphenEdit startHyphen,
-                     EndHyphenEdit endHyphen);
+                     EndHyphenEdit endHyphen, MinikinRect* bounds);
 
     std::vector<LayoutGlyph> mGlyphs;
 
diff --git a/include/minikin/LayoutCache.h b/include/minikin/LayoutCache.h
index a1cc34a..fa572fb 100644
--- a/include/minikin/LayoutCache.h
+++ b/include/minikin/LayoutCache.h
@@ -55,6 +55,7 @@
               mStartHyphen(startHyphen),
               mEndHyphen(endHyphen),
               mIsRtl(dir),
+              mFontFeatureSettings(paint.fontFeatureSettings),
               mHash(computeHash()) {}
 
     bool operator==(const LayoutCacheKey& o) const {
@@ -64,6 +65,7 @@
                mFontFlags == o.mFontFlags && mLocaleListId == o.mLocaleListId &&
                mFamilyVariant == o.mFamilyVariant && mStartHyphen == o.mStartHyphen &&
                mEndHyphen == o.mEndHyphen && mIsRtl == o.mIsRtl && mNchars == o.mNchars &&
+               mFontFeatureSettings == o.mFontFeatureSettings &&
                !memcmp(mChars, o.mChars, mNchars * sizeof(uint16_t));
     }
 
@@ -77,6 +79,7 @@
     void freeText() {
         delete[] mChars;
         mChars = NULL;
+        mFontFeatureSettings.clear();
     }
 
     uint32_t getMemoryUsage() const { return sizeof(LayoutCacheKey) + sizeof(uint16_t) * mNchars; }
@@ -99,6 +102,7 @@
     StartHyphenEdit mStartHyphen;
     EndHyphenEdit mEndHyphen;
     bool mIsRtl;
+    std::vector<FontFeature> mFontFeatureSettings;
     // Note: any fields added to MinikinPaint must also be reflected here.
     // TODO: language matching (possibly integrate into style)
     android::hash_t mHash;
@@ -120,11 +124,33 @@
                 .update(packHyphenEdit(mStartHyphen, mEndHyphen))
                 .update(mIsRtl)
                 .updateShorts(mChars, mNchars)
+                .update(mFontFeatureSettings)
                 .hash();
     }
 };
 
-class LayoutCache : private android::OnEntryRemoved<LayoutCacheKey, LayoutPiece*> {
+// A class holds a layout information and bounding box of it. The bounding box can be invalid if not
+// calculated.
+class LayoutSlot {
+public:
+    LayoutSlot(LayoutPiece&& layout)
+            : mLayout(std::move(layout)), mBounds(MinikinRect::makeInvalid()) {}
+    LayoutSlot(LayoutPiece&& layout, MinikinRect&& bounds)
+            : mLayout(std::move(layout)), mBounds(std::move(bounds)) {}
+    LayoutSlot(const LayoutPiece& layout, const MinikinRect& bounds)
+            : mLayout(layout), mBounds(bounds) {}
+
+    const LayoutPiece mLayout;
+    MinikinRect mBounds;
+
+private:
+    LayoutSlot(const LayoutSlot&) = delete;
+    LayoutSlot& operator=(const LayoutSlot&) = delete;
+    LayoutSlot(LayoutSlot&&) = delete;
+    LayoutSlot& operator=(LayoutSlot&&) = delete;
+};
+
+class LayoutCache : private android::OnEntryRemoved<LayoutCacheKey, LayoutSlot*> {
 public:
     void clear() {
         std::lock_guard<std::mutex> lock(mMutex);
@@ -134,29 +160,55 @@
     // Do not use LayoutCache inside the callback function, otherwise dead-lock may happen.
     template <typename F>
     void getOrCreate(const U16StringPiece& text, const Range& range, const MinikinPaint& paint,
-                     bool dir, StartHyphenEdit startHyphen, EndHyphenEdit endHyphen, F& f) {
+                     bool dir, StartHyphenEdit startHyphen, EndHyphenEdit endHyphen,
+                     bool boundsCalculation, F& f) {
         LayoutCacheKey key(text, range, paint, dir, startHyphen, endHyphen);
         if (paint.skipCache() || range.getLength() >= LENGTH_LIMIT_CACHE) {
-            f(LayoutPiece(text, range, dir, paint, startHyphen, endHyphen), paint);
+            LayoutPiece piece(text, range, dir, paint, startHyphen, endHyphen);
+            if (boundsCalculation) {
+                f(piece, paint, LayoutPiece::calculateBounds(piece, paint));
+            } else {
+                f(piece, paint, MinikinRect::makeInvalid());
+            }
             return;
         }
+
+        LayoutSlot* cachedSlot;
         {
             std::lock_guard<std::mutex> lock(mMutex);
-            LayoutPiece* layout = mCache.get(key);
-            if (layout != nullptr) {
-                f(*layout, paint);
+            cachedSlot = mCache.get(key);
+
+            if (cachedSlot != nullptr) {
+                if (boundsCalculation && !cachedSlot->mBounds.isValid()) {
+                    MinikinRect bounds = LayoutPiece::calculateBounds(cachedSlot->mLayout, paint);
+                    LayoutPiece lp = cachedSlot->mLayout;
+                    f(lp, paint, bounds);
+                    cachedSlot->mBounds = bounds;
+                } else {
+                    f(cachedSlot->mLayout, paint, cachedSlot->mBounds);
+                }
                 return;
             }
         }
         // Doing text layout takes long time, so releases the mutex during doing layout.
         // Don't care even if we do the same layout in other thred.
         key.copyText();
-        std::unique_ptr<LayoutPiece> layout =
-                std::make_unique<LayoutPiece>(text, range, dir, paint, startHyphen, endHyphen);
-        f(*layout, paint);
+
+        std::unique_ptr<LayoutSlot> slot;
+        if (boundsCalculation) {
+            LayoutPiece lp = LayoutPiece(text, range, dir, paint, startHyphen, endHyphen);
+            MinikinRect rect = LayoutPiece::calculateBounds(lp, paint);
+
+            slot = std::make_unique<LayoutSlot>(std::move(lp), std::move(rect));
+        } else {
+            slot = std::make_unique<LayoutSlot>(
+                    LayoutPiece(text, range, dir, paint, startHyphen, endHyphen));
+        }
+
+        f(slot->mLayout, paint, slot->mBounds);
         {
             std::lock_guard<std::mutex> lock(mMutex);
-            mCache.put(key, layout.release());
+            mCache.put(key, slot.release());
         }
     }
 
@@ -177,12 +229,12 @@
 
 private:
     // callback for OnEntryRemoved
-    void operator()(LayoutCacheKey& key, LayoutPiece*& value) {
+    void operator()(LayoutCacheKey& key, LayoutSlot*& value) {
         key.freeText();
         delete value;
     }
 
-    android::LruCache<LayoutCacheKey, LayoutPiece*> mCache GUARDED_BY(mMutex);
+    android::LruCache<LayoutCacheKey, LayoutSlot*> mCache GUARDED_BY(mMutex);
 
     // static const size_t kMaxEntries = LruCache<LayoutCacheKey, Layout*>::kUnlimitedCapacity;
 
diff --git a/include/minikin/LayoutCore.h b/include/minikin/LayoutCore.h
index cade517..cf5b958 100644
--- a/include/minikin/LayoutCore.h
+++ b/include/minikin/LayoutCore.h
@@ -17,15 +17,16 @@
 #ifndef MINIKIN_LAYOUT_CORE_H
 #define MINIKIN_LAYOUT_CORE_H
 
-#include <vector>
-
 #include <gtest/gtest_prod.h>
 
+#include <vector>
+
 #include "minikin/FontFamily.h"
 #include "minikin/Hyphenator.h"
 #include "minikin/MinikinExtent.h"
 #include "minikin/MinikinFont.h"
 #include "minikin/MinikinRect.h"
+#include "minikin/Point.h"
 #include "minikin/Range.h"
 #include "minikin/U16StringPiece.h"
 
@@ -33,19 +34,12 @@
 
 struct MinikinPaint;
 
-struct Point {
-    Point() : x(0), y(0) {}
-    Point(float x, float y) : x(x), y(y) {}
-    bool operator==(const Point& o) const { return x == o.x && y == o.y; }
-    float x;
-    float y;
-};
-
 // Immutable, recycle-able layout result.
 class LayoutPiece {
 public:
     LayoutPiece(const U16StringPiece& textBuf, const Range& range, bool isRtl,
                 const MinikinPaint& paint, StartHyphenEdit startHyphen, EndHyphenEdit endHyphen);
+    ~LayoutPiece();
 
     // Low level accessors.
     const std::vector<uint8_t>& fontIndices() const { return mFontIndices; }
@@ -68,12 +62,14 @@
                sizeof(MinikinRect) + sizeof(MinikinExtent);
     }
 
+    static MinikinRect calculateBounds(const LayoutPiece& layout, const MinikinPaint& paint);
+
 private:
     FRIEND_TEST(LayoutTest, doLayoutWithPrecomputedPiecesTest);
 
-    std::vector<uint8_t> mFontIndices;  // per glyph
-    std::vector<uint32_t> mGlyphIds;    // per glyph
-    std::vector<Point> mPoints;         // per glyph
+    std::vector<uint8_t> mFontIndices;      // per glyph
+    std::vector<uint32_t> mGlyphIds;        // per glyph
+    std::vector<Point> mPoints;             // per glyph
 
     std::vector<float> mAdvances;  // per code units
 
@@ -83,10 +79,6 @@
     std::vector<FakedFont> mFonts;
 };
 
-// For gtest output
-inline std::ostream& operator<<(std::ostream& os, const Point& p) {
-    return os << "(" << p.x << ", " << p.y << ")";
-}
 }  // namespace minikin
 
 #endif  // MINIKIN_LAYOUT_CORE_H
diff --git a/include/minikin/LayoutPieces.h b/include/minikin/LayoutPieces.h
index 7985ecc..d98ba35 100644
--- a/include/minikin/LayoutPieces.h
+++ b/include/minikin/LayoutPieces.h
@@ -30,14 +30,19 @@
 
     struct Key {
         Key(const Range& range, HyphenEdit hyphenEdit, bool dir, uint32_t paintId)
-                : range(range), hyphenEdit(hyphenEdit), dir(dir), paintId(paintId) {}
+                : range(range),
+                  hyphenEdit(hyphenEdit),
+                  dir(dir),
+                  paintId(paintId),
+                  hash(calcHash()) {}
 
         Range range;
         HyphenEdit hyphenEdit;
         bool dir;
         uint32_t paintId;
+        uint32_t hash;
 
-        uint32_t hash() const {
+        uint32_t calcHash() const {
             return Hasher()
                     .update(range.getStart())
                     .update(range.getEnd())
@@ -58,7 +63,7 @@
     };
 
     struct KeyHasher {
-        std::size_t operator()(const Key& key) const { return key.hash(); }
+        std::size_t operator()(const Key& key) const { return key.hash; }
     };
 
     struct PaintHasher {
@@ -70,10 +75,10 @@
 
     uint32_t nextPaintId;
     std::unordered_map<MinikinPaint, uint32_t, PaintHasher> paintMap;
-    std::unordered_map<Key, LayoutPiece, KeyHasher> offsetMap;
+    std::unordered_map<Key, LayoutSlot, KeyHasher> offsetMap;
 
     void insert(const Range& range, HyphenEdit edit, const LayoutPiece& layout, bool dir,
-                const MinikinPaint& paint) {
+                const MinikinPaint& paint, const MinikinRect& rect) {
         uint32_t paintId = findPaintId(paint);
         if (paintId == kNoPaintId) {
             paintId = nextPaintId++;
@@ -81,22 +86,29 @@
         }
         offsetMap.emplace(std::piecewise_construct,
                           std::forward_as_tuple(range, edit, dir, paintId),
-                          std::forward_as_tuple(layout));
+                          std::forward_as_tuple(layout, rect));
     }
 
     template <typename F>
     void getOrCreate(const U16StringPiece& textBuf, const Range& range, const Range& context,
                      const MinikinPaint& paint, bool dir, StartHyphenEdit startEdit,
-                     EndHyphenEdit endEdit, uint32_t paintId, F& f) const {
+                     EndHyphenEdit endEdit, uint32_t paintId, bool boundsCalculation, F& f) const {
         const HyphenEdit edit = packHyphenEdit(startEdit, endEdit);
         auto it = offsetMap.find(Key(range, edit, dir, paintId));
-        if (it == offsetMap.end()) {
-            LayoutCache::getInstance().getOrCreate(textBuf.substr(context),
-                                                   range - context.getStart(), paint, dir,
-                                                   startEdit, endEdit, f);
-        } else {
-            f(it->second, paint);
+        if (it != offsetMap.end()) {
+            const LayoutPiece& piece = it->second.mLayout;
+            const MinikinRect& bounds = it->second.mBounds;
+            if (boundsCalculation && !bounds.isValid()) {
+                f(piece, paint, LayoutPiece::calculateBounds(piece, paint));
+            } else {
+                f(piece, paint, bounds);
+            }
+            return;
         }
+
+        LayoutCache::getInstance().getOrCreate(textBuf.substr(context), range - context.getStart(),
+                                               paint, dir, startEdit, endEdit, boundsCalculation,
+                                               f);
     }
 
     uint32_t findPaintId(const MinikinPaint& paint) const {
@@ -107,7 +119,7 @@
     uint32_t getMemoryUsage() const {
         uint32_t result = 0;
         for (const auto& i : offsetMap) {
-            result += i.first.getMemoryUsage() + i.second.getMemoryUsage();
+            result += i.first.getMemoryUsage() + i.second.mLayout.getMemoryUsage();
         }
         result += (sizeof(MinikinPaint) + sizeof(uint32_t)) * paintMap.size();
         return result;
diff --git a/include/minikin/LineBreakStyle.h b/include/minikin/LineBreakStyle.h
index f474cbd..aadf5bb 100644
--- a/include/minikin/LineBreakStyle.h
+++ b/include/minikin/LineBreakStyle.h
@@ -26,6 +26,8 @@
     Loose = 1,
     Normal = 2,
     Strict = 3,
+    NoBreak = 4,
+    Auto = 5,
 };
 
 // The line break word style(lw) of the strings.
@@ -33,6 +35,7 @@
 enum class LineBreakWordStyle : uint8_t {
     None = 0,
     Phrase = 1,
+    Auto = 2,
 };
 
 }  // namespace minikin
diff --git a/include/minikin/LineBreaker.h b/include/minikin/LineBreaker.h
index 5d3e752..7fee1b7 100644
--- a/include/minikin/LineBreaker.h
+++ b/include/minikin/LineBreaker.h
@@ -99,6 +99,7 @@
     std::vector<float> ascents;
     std::vector<float> descents;
     std::vector<int> flags;
+    std::vector<MinikinRect> bounds;
 
     LineBreakResult(LineBreakResult&&) = default;
     LineBreakResult& operator=(LineBreakResult&&) = default;
@@ -109,6 +110,7 @@
         std::reverse(ascents.begin(), ascents.end());
         std::reverse(descents.begin(), descents.end());
         std::reverse(flags.begin(), flags.end());
+        std::reverse(bounds.begin(), bounds.end());
     }
 
 private:
@@ -118,7 +120,7 @@
 LineBreakResult breakIntoLines(const U16StringPiece& textBuffer, BreakStrategy strategy,
                                HyphenationFrequency frequency, bool justified,
                                const MeasuredText& measuredText, const LineWidth& lineWidth,
-                               const TabStops& tabStops);
+                               const TabStops& tabStops, bool useBoundsForWidth);
 
 }  // namespace minikin
 
diff --git a/include/minikin/MeasuredText.h b/include/minikin/MeasuredText.h
index fa37eb6..a3b8bf1 100644
--- a/include/minikin/MeasuredText.h
+++ b/include/minikin/MeasuredText.h
@@ -31,6 +31,27 @@
 
 namespace minikin {
 
+// Structs that of line metrics information.
+struct LineMetrics {
+    LineMetrics() : advance(0) {}
+    LineMetrics(const MinikinExtent& extent, const MinikinRect& bounds, float advance)
+            : extent(extent), bounds(bounds), advance(advance) {}
+
+    void append(const LineMetrics& metrics) {
+        append(metrics.extent, metrics.bounds, metrics.advance);
+    }
+
+    void append(const MinikinExtent& nextExtent, const MinikinRect& nextBounds, float nextAdvance) {
+        extent.extendBy(nextExtent);
+        bounds.join(nextBounds, advance, 0);
+        advance += nextAdvance;
+    }
+
+    MinikinExtent extent;
+    MinikinRect bounds;
+    float advance;
+};
+
 class Run {
 public:
     Run(const Range& range) : mRange(range) {}
@@ -42,6 +63,9 @@
     // Returns true if this run can be broken into multiple pieces for line breaking.
     virtual bool canBreak() const = 0;
 
+    // Returns true if this run can be hyphenated.
+    virtual bool canHyphenate() const = 0;
+
     // Return the line break style(lb) for this run.
     virtual LineBreakStyle lineBreakStyle() const = 0;
 
@@ -53,13 +77,17 @@
 
     // Fills the each character's advances, extents and overhangs.
     virtual void getMetrics(const U16StringPiece& text, std::vector<float>* advances,
-                            LayoutPieces* precomputed, LayoutPieces* outPieces) const = 0;
+                            std::vector<uint8_t>* flags, LayoutPieces* precomputed,
+                            bool boundsCalculation, LayoutPieces* outPieces) const = 0;
 
     virtual std::pair<float, MinikinRect> getBounds(const U16StringPiece& text, const Range& range,
                                                     const LayoutPieces& pieces) const = 0;
     virtual MinikinExtent getExtent(const U16StringPiece& text, const Range& range,
                                     const LayoutPieces& pieces) const = 0;
 
+    virtual LineMetrics getLineMetrics(const U16StringPiece& text, const Range& range,
+                                       const LayoutPieces& pieces) const = 0;
+
     virtual void appendLayout(const U16StringPiece& text, const Range& range,
                               const Range& contextRange, const LayoutPieces& pieces,
                               const MinikinPaint& paint, uint32_t outOrigin,
@@ -93,11 +121,12 @@
 class StyleRun : public Run {
 public:
     StyleRun(const Range& range, MinikinPaint&& paint, int lineBreakStyle, int lineBreakWordStyle,
-             bool isRtl)
+             bool hyphenation, bool isRtl)
             : Run(range),
               mPaint(std::move(paint)),
               mLineBreakStyle(lineBreakStyle),
               mLineBreakWordStyle(lineBreakWordStyle),
+              mHyphenation(hyphenation),
               mIsRtl(isRtl) {}
 
     bool canBreak() const override { return true; }
@@ -107,11 +136,13 @@
     LineBreakWordStyle lineBreakWordStyle() const override {
         return static_cast<LineBreakWordStyle>(mLineBreakWordStyle);
     }
+    bool canHyphenate() const override { return mHyphenation; }
     uint32_t getLocaleListId() const override { return mPaint.localeListId; }
     bool isRtl() const override { return mIsRtl; }
 
     void getMetrics(const U16StringPiece& text, std::vector<float>* advances,
-                    LayoutPieces* precomputed, LayoutPieces* outPieces) const override;
+                    std::vector<uint8_t>* flags, LayoutPieces* precomputed, bool boundsCalculation,
+                    LayoutPieces* outPieces) const override;
 
     std::pair<float, MinikinRect> getBounds(const U16StringPiece& text, const Range& range,
                                             const LayoutPieces& pieces) const override;
@@ -119,6 +150,9 @@
     MinikinExtent getExtent(const U16StringPiece& text, const Range& range,
                             const LayoutPieces& pieces) const override;
 
+    LineMetrics getLineMetrics(const U16StringPiece& text, const Range& range,
+                               const LayoutPieces& pieces) const override;
+
     void appendLayout(const U16StringPiece& text, const Range& range, const Range& contextRange,
                       const LayoutPieces& pieces, const MinikinPaint& paint, uint32_t outOrigin,
                       StartHyphenEdit startHyphen, EndHyphenEdit endHyphen,
@@ -135,6 +169,7 @@
     MinikinPaint mPaint;
     int mLineBreakStyle;
     int mLineBreakWordStyle;
+    const bool mHyphenation;
     const bool mIsRtl;
 };
 
@@ -145,12 +180,14 @@
 
     bool isRtl() const { return false; }
     bool canBreak() const { return false; }
+    bool canHyphenate() const { return false; }
     LineBreakStyle lineBreakStyle() const override { return LineBreakStyle::None; }
     LineBreakWordStyle lineBreakWordStyle() const override { return LineBreakWordStyle::None; }
     uint32_t getLocaleListId() const { return mLocaleListId; }
 
     void getMetrics(const U16StringPiece& /* text */, std::vector<float>* advances,
-                    LayoutPieces* /* precomputed */, LayoutPieces* /* outPieces */) const override {
+                    std::vector<uint8_t>* /*flags*/, LayoutPieces* /* precomputed */, bool,
+                    LayoutPieces* /* outPieces */) const override {
         (*advances)[mRange.getStart()] = mWidth;
         // TODO: Get the extents information from the caller.
     }
@@ -167,6 +204,11 @@
         return MinikinExtent();
     }
 
+    LineMetrics getLineMetrics(const U16StringPiece& /*text*/, const Range& /*range*/,
+                               const LayoutPieces& /*pieces*/) const override {
+        return LineMetrics();
+    }
+
     void appendLayout(const U16StringPiece& /* text */, const Range& /* range */,
                       const Range& /* contextRange */, const LayoutPieces& /* pieces */,
                       const MinikinPaint& /* paint */, uint32_t /* outOrigin */,
@@ -209,10 +251,45 @@
     // The style information.
     std::vector<std::unique_ptr<Run>> runs;
 
+    // Per character flags.
+    // The loweset bit represents that that character *may* have overhang. If this bit is not set,
+    // the character doesn't have overhang. If this bit is set, the character *may* have overhang.
+    // This information is used for determining using the bounding box based line breaking.
+    static constexpr uint8_t MAY_OVERHANG_BIT = 0b0000'0001;
+    std::vector<uint8_t> flags;
+
     // The copied layout pieces for construcing final layouts.
     // TODO: Stop assigning width/extents if layout pieces are available for reducing memory impact.
     LayoutPieces layoutPieces;
 
+    bool hasOverhang(const Range& range) const {
+        // Heuristics: Check first 5 and last 5 characters and treat there is overhang if at least
+        // one character has overhang.
+        constexpr uint32_t CHARS_TO_DUMPER = 5;
+
+        if (range.getLength() < CHARS_TO_DUMPER * 2) {
+            for (uint32_t i : range) {
+                if ((flags[i] & MAY_OVERHANG_BIT) == MAY_OVERHANG_BIT) {
+                    return true;
+                }
+            }
+        } else {
+            Range first = Range(range.getStart(), range.getStart() + CHARS_TO_DUMPER);
+            Range last = Range(range.getEnd() - CHARS_TO_DUMPER, range.getEnd());
+            for (uint32_t i : first) {
+                if ((flags[i] & MAY_OVERHANG_BIT) == MAY_OVERHANG_BIT) {
+                    return true;
+                }
+            }
+            for (uint32_t i : last) {
+                if ((flags[i] & MAY_OVERHANG_BIT) == MAY_OVERHANG_BIT) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     uint32_t getMemoryUsage() const {
         return sizeof(float) * widths.size() + sizeof(HyphenBreak) * hyphenBreaks.size() +
                layoutPieces.getMemoryUsage();
@@ -223,6 +300,7 @@
                        EndHyphenEdit endHyphen);
     MinikinRect getBounds(const U16StringPiece& textBuf, const Range& range) const;
     MinikinExtent getExtent(const U16StringPiece& textBuf, const Range& range) const;
+    LineMetrics getLineMetrics(const U16StringPiece& textBuf, const Range& range) const;
 
     MeasuredText(MeasuredText&&) = default;
     MeasuredText& operator=(MeasuredText&&) = default;
@@ -233,14 +311,15 @@
     friend class MeasuredTextBuilder;
 
     void measure(const U16StringPiece& textBuf, bool computeHyphenation, bool computeLayout,
-                 bool ignoreHyphenKerning, MeasuredText* hint);
+                 bool computeBounds, bool ignoreHyphenKerning, MeasuredText* hint);
 
     // Use MeasuredTextBuilder instead.
     MeasuredText(const U16StringPiece& textBuf, std::vector<std::unique_ptr<Run>>&& runs,
-                 bool computeHyphenation, bool computeLayout, bool ignoreHyphenKerning,
-                 MeasuredText* hint)
-            : widths(textBuf.size()), runs(std::move(runs)) {
-        measure(textBuf, computeHyphenation, computeLayout, ignoreHyphenKerning, hint);
+                 bool computeHyphenation, bool computeLayout, bool computeBounds,
+                 bool ignoreHyphenKerning, MeasuredText* hint)
+            : widths(textBuf.size()), runs(std::move(runs)), flags(textBuf.size(), 0) {
+        measure(textBuf, computeHyphenation, computeLayout, computeBounds, ignoreHyphenKerning,
+                hint);
     }
 };
 
@@ -249,9 +328,10 @@
     MeasuredTextBuilder() {}
 
     void addStyleRun(int32_t start, int32_t end, MinikinPaint&& paint, int lineBreakStyle,
-                     int lineBreakWordStyle, bool isRtl) {
+                     int lineBreakWordStyle, bool hyphenation, bool isRtl) {
         mRuns.emplace_back(std::make_unique<StyleRun>(Range(start, end), std::move(paint),
-                                                      lineBreakStyle, lineBreakWordStyle, isRtl));
+                                                      lineBreakStyle, lineBreakWordStyle,
+                                                      hyphenation, isRtl));
     }
 
     void addReplacementRun(int32_t start, int32_t end, float width, uint32_t localeListId) {
@@ -267,10 +347,16 @@
     std::unique_ptr<MeasuredText> build(const U16StringPiece& textBuf, bool computeHyphenation,
                                         bool computeLayout, bool ignoreHyphenKerning,
                                         MeasuredText* hint) {
+        return build(textBuf, computeHyphenation, computeLayout, false, ignoreHyphenKerning, hint);
+    }
+
+    std::unique_ptr<MeasuredText> build(const U16StringPiece& textBuf, bool computeHyphenation,
+                                        bool computeLayout, bool computeBounds,
+                                        bool ignoreHyphenKerning, MeasuredText* hint) {
         // Unable to use make_unique here since make_unique is not a friend of MeasuredText.
-        return std::unique_ptr<MeasuredText>(new MeasuredText(textBuf, std::move(mRuns),
-                                                              computeHyphenation, computeLayout,
-                                                              ignoreHyphenKerning, hint));
+        return std::unique_ptr<MeasuredText>(
+                new MeasuredText(textBuf, std::move(mRuns), computeHyphenation, computeLayout,
+                                 computeBounds, ignoreHyphenKerning, hint));
     }
 
     MINIKIN_PREVENT_COPY_ASSIGN_AND_MOVE(MeasuredTextBuilder);
diff --git a/include/minikin/MinikinExtent.h b/include/minikin/MinikinExtent.h
index ac9b49f..baa56ff 100644
--- a/include/minikin/MinikinExtent.h
+++ b/include/minikin/MinikinExtent.h
@@ -25,24 +25,29 @@
 struct MinikinExtent {
     MinikinExtent() : ascent(0), descent(0) {}
     MinikinExtent(float ascent, float descent) : ascent(ascent), descent(descent) {}
-    bool operator==(const MinikinExtent& o) const {
-        return ascent == o.ascent && descent == o.descent;
-    }
-    float ascent;   // negative
-    float descent;  // positive
-
-    void reset() { ascent = descent = 0.0; }
 
     void extendBy(const MinikinExtent& e) {
         ascent = std::min(ascent, e.ascent);
         descent = std::max(descent, e.descent);
     }
+
+    float ascent;   // negative
+    float descent;  // positive
 };
 
 // For gtest output
 inline std::ostream& operator<<(std::ostream& os, const MinikinExtent& e) {
-    return os << e.ascent << ", " << e.descent;
+    return os << "(ascent = " << e.ascent << ", descent = " << e.descent << ")";
 }
+
+inline bool operator==(const MinikinExtent& l, const MinikinExtent& r) {
+    return l.ascent == r.ascent && l.descent == r.descent;
+}
+
+inline bool operator!=(const MinikinExtent& l, const MinikinExtent& r) {
+    return !(l == r);
+}
+
 }  // namespace minikin
 
 #endif  // MINIKIN_MINIKIN_EXTENT_H
diff --git a/include/minikin/MinikinFont.h b/include/minikin/MinikinFont.h
index 4d3ba9c..6d5f006 100644
--- a/include/minikin/MinikinFont.h
+++ b/include/minikin/MinikinFont.h
@@ -75,10 +75,6 @@
             const std::vector<FontVariation>&) const {
         return nullptr;
     }
-
-    static uint32_t MakeTag(char c1, char c2, char c3, char c4) {
-        return ((uint32_t)c1 << 24) | ((uint32_t)c2 << 16) | ((uint32_t)c3 << 8) | (uint32_t)c4;
-    }
 };
 
 }  // namespace minikin
diff --git a/include/minikin/MinikinPaint.h b/include/minikin/MinikinPaint.h
index 54b476f..04cab1d 100644
--- a/include/minikin/MinikinPaint.h
+++ b/include/minikin/MinikinPaint.h
@@ -23,6 +23,7 @@
 #include "minikin/FamilyVariant.h"
 #include "minikin/FontCollection.h"
 #include "minikin/FontFamily.h"
+#include "minikin/FontFeature.h"
 #include "minikin/Hasher.h"
 
 namespace minikin {
@@ -45,7 +46,7 @@
 };
 
 // Possibly move into own .h file?
-// Note: if you add a field here, either add it to LayoutCacheKey or to skipCache()
+// Note: if you add a field here, either add it to LayoutCacheKey
 struct MinikinPaint {
     MinikinPaint(const std::shared_ptr<FontCollection>& font)
             : size(0),
@@ -59,7 +60,7 @@
               fontFeatureSettings(),
               font(font) {}
 
-    bool skipCache() const { return !fontFeatureSettings.empty(); }
+    bool skipCache() const;
 
     float size;
     float scaleX;
@@ -70,7 +71,7 @@
     uint32_t localeListId;
     FontStyle fontStyle;
     FamilyVariant familyVariant;
-    std::string fontFeatureSettings;
+    std::vector<FontFeature> fontFeatureSettings;
     std::shared_ptr<FontCollection> font;
 
     void copyFrom(const MinikinPaint& paint) { *this = paint; }
@@ -100,7 +101,7 @@
                 .update(localeListId)
                 .update(fontStyle.identifier())
                 .update(static_cast<uint8_t>(familyVariant))
-                .updateString(fontFeatureSettings)
+                .update(fontFeatureSettings)
                 .update(font->getId())
                 .hash();
     }
diff --git a/include/minikin/MinikinRect.h b/include/minikin/MinikinRect.h
index 38c2180..f37cc2f 100644
--- a/include/minikin/MinikinRect.h
+++ b/include/minikin/MinikinRect.h
@@ -19,45 +19,63 @@
 
 #include <ostream>
 
+#include "minikin/Point.h"
+
 namespace minikin {
 
 struct MinikinRect {
     MinikinRect() : mLeft(0), mTop(0), mRight(0), mBottom(0) {}
     MinikinRect(float left, float top, float right, float bottom)
             : mLeft(left), mTop(top), mRight(right), mBottom(bottom) {}
-    bool operator==(const MinikinRect& o) const {
-        return mLeft == o.mLeft && mTop == o.mTop && mRight == o.mRight && mBottom == o.mBottom;
-    }
-    bool operator!=(const MinikinRect& o) const { return !(*this == o); }
-    float mLeft;
-    float mTop;
-    float mRight;
-    float mBottom;
 
     bool isEmpty() const { return mLeft == mRight || mTop == mBottom; }
-    void set(const MinikinRect& r) {
-        mLeft = r.mLeft;
-        mTop = r.mTop;
-        mRight = r.mRight;
-        mBottom = r.mBottom;
-    }
+    bool isValid() const { return !std::isnan(mLeft); }
+    float width() const { return mRight - mLeft; }
+
+    void setEmpty() { mLeft = mRight = mTop = mBottom = 0; }
+
+    // Shift the rectangle with given amount.
     void offset(float dx, float dy) {
         mLeft += dx;
         mTop += dy;
         mRight += dx;
         mBottom += dy;
     }
-    void setEmpty() { mLeft = mTop = mRight = mBottom = 0.0; }
-    void join(const MinikinRect& r) {
+
+    // Update the rectangle with the union of the given rectangle with shifting.
+    void join(float l, float t, float r, float b, float dx, float dy) {
         if (isEmpty()) {
-            set(r);
-        } else if (!r.isEmpty()) {
-            mLeft = std::min(mLeft, r.mLeft);
-            mTop = std::min(mTop, r.mTop);
-            mRight = std::max(mRight, r.mRight);
-            mBottom = std::max(mBottom, r.mBottom);
+            mLeft = l + dx;
+            mTop = t + dy;
+            mRight = r + dx;
+            mBottom = b + dy;
+        } else {
+            mLeft = std::min(mLeft, l + dx);
+            mTop = std::min(mTop, t + dy);
+            mRight = std::max(mRight, r + dx);
+            mBottom = std::max(mBottom, b + dy);
         }
     }
+
+    void offset(const Point& p) { offset(p.x, p.y); }
+    void join(const MinikinRect& r) { return join(r.mLeft, r.mTop, r.mRight, r.mBottom, 0, 0); }
+    void join(const MinikinRect& r, float dx, float dy) {
+        return join(r.mLeft, r.mTop, r.mRight, r.mBottom, dx, dy);
+    }
+    void join(const MinikinRect& r, const Point& p) {
+        return join(r.mLeft, r.mTop, r.mRight, r.mBottom, p.x, p.y);
+    }
+
+    static MinikinRect makeInvalid() {
+        return MinikinRect(
+                std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN(),
+                std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN());
+    }
+
+    float mLeft;
+    float mTop;
+    float mRight;
+    float mBottom;
 };
 
 // For gtest output
@@ -65,6 +83,14 @@
     return os << "(" << r.mLeft << ", " << r.mTop << ")-(" << r.mRight << ", " << r.mBottom << ")";
 }
 
+inline bool operator==(const MinikinRect& l, const MinikinRect& r) {
+    return l.mLeft == r.mLeft && l.mTop == r.mTop && l.mRight == r.mRight && l.mBottom == r.mBottom;
+}
+
+inline bool operator!=(const MinikinRect& l, const MinikinRect& r) {
+    return !(l == r);
+}
+
 }  // namespace minikin
 
 #endif  // MINIKIN_MINIKIN_RECT_H
diff --git a/include/minikin/Point.h b/include/minikin/Point.h
new file mode 100644
index 0000000..c3fe2f3
--- /dev/null
+++ b/include/minikin/Point.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MINIKIN_POINT_H
+#define MINIKIN_POINT_H
+
+#include <ostream>
+
+namespace minikin {
+
+struct Point {
+    Point(float x, float y) : x(x), y(y) {}
+    float x, y;
+};
+
+// For gtest
+inline std::ostream& operator<<(std::ostream& os, const Point& p) {
+    return os << "(" << p.x << ", " << p.y << ")";
+}
+
+inline bool operator==(const Point& l, const Point& r) {
+    return l.x == r.x && l.y == r.y;
+}
+
+inline bool operator!=(const Point& l, const Point& r) {
+    return !(l == r);
+}
+
+}  // namespace minikin
+
+#endif  // MINIKIN_POINT_H
diff --git a/include/minikin/Range.h b/include/minikin/Range.h
index 991912d..f8b8ba8 100644
--- a/include/minikin/Range.h
+++ b/include/minikin/Range.h
@@ -19,6 +19,7 @@
 
 #include <algorithm>
 #include <limits>
+#include <ostream>
 #include <utility>
 
 namespace minikin {
@@ -117,6 +118,11 @@
     uint32_t mEnd;
 };
 
+// For gtest output
+inline std::ostream& operator<<(std::ostream& os, const Range& r) {
+    return os << "(" << r.getStart() << ", " << r.getEnd() << ")";
+}
+
 }  // namespace minikin
 
 #endif  // MINIKIN_RANGE_H
diff --git a/libs/minikin/Android.bp b/libs/minikin/Android.bp
index 5c7abf2..d23f053 100644
--- a/libs/minikin/Android.bp
+++ b/libs/minikin/Android.bp
@@ -28,7 +28,6 @@
     host_supported: true,
     srcs: [
         "BidiUtils.cpp",
-        "BoundsCache.cpp",
         "CmapCoverage.cpp",
         "Emoji.cpp",
         "Font.cpp",
@@ -53,6 +52,7 @@
         "MinikinFontFactory.cpp",
         "MinikinInternal.cpp",
         "OptimalLineBreaker.cpp",
+        "ScriptUtils.cpp",
         "SparseBitSet.cpp",
         "SystemFonts.cpp",
         "WordBreaker.cpp",
@@ -68,12 +68,16 @@
     product_variables: {
         debuggable: {
             // Enable assertion on eng and userdebug build.
-            cppflags: ["-DENABLE_ASSERTION"],
+            srcs: [
+                "Debug.cpp",
+            ],
+            cppflags: [ "-DENABLE_ASSERTION" ],
         },
     },
     shared_libs: [
         "liblog",
         "libharfbuzz_ng",
+        "libcutils",
     ],
     header_libs: [
         "libbase_headers",
@@ -86,6 +90,7 @@
         android: {
             shared_libs: [
                 "libicu",
+                "aconfig_text_flags_c_lib",
             ],
             export_shared_lib_headers: [
                 "libicu",
diff --git a/libs/minikin/BoundsCache.cpp b/libs/minikin/BoundsCache.cpp
deleted file mode 100644
index 1edc853..0000000
--- a/libs/minikin/BoundsCache.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "minikin/BoundsCache.h"
-
-namespace minikin {
-
-void ValueExtractor::operator()(const LayoutPiece& layoutPiece, const MinikinPaint& paint) {
-    value.reset(new BoundsValue);
-    value->rect = BoundsCache::getBounds(layoutPiece, paint);
-    value->advance = layoutPiece.advance();
-}
-
-// static
-MinikinRect BoundsCache::getBounds(const LayoutPiece& layoutPiece, const MinikinPaint& paint) {
-    MinikinRect pieceBounds;
-    MinikinRect tmpRect;
-    for (uint32_t i = 0; i < layoutPiece.glyphCount(); ++i) {
-        const FakedFont& font = layoutPiece.fontAt(i);
-        const Point& point = layoutPiece.pointAt(i);
-
-        MinikinFont* minikinFont = font.font->typeface().get();
-        minikinFont->GetBounds(&tmpRect, layoutPiece.glyphIdAt(i), paint, font.fakery);
-        tmpRect.offset(point.x, point.y);
-        pieceBounds.join(tmpRect);
-    }
-    return pieceBounds;
-}
-
-}  // namespace minikin
diff --git a/libs/minikin/Debug.cpp b/libs/minikin/Debug.cpp
new file mode 100644
index 0000000..8168a77
--- /dev/null
+++ b/libs/minikin/Debug.cpp
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "minikin/Debug.h"
+
+#include <unicode/utf16.h>
+#include <unicode/utf8.h>
+
+#include <sstream>
+
+#include "minikin/FontFeature.h"
+#include "minikin/FontFileParser.h"
+#include "minikin/LayoutCore.h"
+#include "minikin/LocaleList.h"
+#include "minikin/MinikinExtent.h"
+#include "minikin/MinikinPaint.h"
+#include "minikin/MinikinRect.h"
+#include "minikin/Point.h"
+#include "minikin/Range.h"
+#include "minikin/U16StringPiece.h"
+
+namespace minikin {
+
+namespace debug {
+
+std::string toUtf8(const U16StringPiece& text) {
+    std::string output;
+    output.resize(text.size() * 4);
+    uint32_t in_i = 0;
+    uint32_t out_i = 0;
+    bool isError = false;
+
+    while (in_i < text.size()) {
+        uint32_t ch;
+        U16_NEXT(text, in_i, text.size(), ch);
+        U8_APPEND(output, out_i, output.size(), ch, isError);
+        if (isError) {
+            return "";
+        }
+    }
+
+    output.resize(out_i);
+    return output;
+}
+
+std::string toString(const Point& point) {
+    std::stringstream ss;
+    ss << point;
+    return ss.str();
+}
+
+std::string toString(const MinikinRect& rect) {
+    std::stringstream ss;
+    ss << rect;
+    return ss.str();
+}
+
+std::string toString(const Range& range) {
+    std::stringstream ss;
+    ss << range;
+    return ss.str();
+}
+
+std::string toString(const MinikinExtent& extent) {
+    std::stringstream ss;
+    ss << extent;
+    return ss.str();
+}
+
+std::string toString(const FontFeature& feature) {
+    std::stringstream ss;
+    ss << feature;
+    return ss.str();
+}
+
+std::string toString(const std::vector<FontFeature>& features) {
+    std::stringstream ss;
+    ss << features;
+    return ss.str();
+}
+
+std::string toString(const LayoutPiece& layout) {
+    std::stringstream ss;
+    ss << "{advance=" << layout.advance() << ", extent=" << toString(layout.extent())
+       << ", glyphs=";
+
+    for (uint32_t i = 0; i < layout.glyphCount(); ++i) {
+        ss << "{id:" << layout.glyphIdAt(i) << ", pos = " << toString(layout.pointAt(i))
+           << ", font = \""
+           << FontFileParser(layout.fontAt(i).hbFont()).getPostScriptName().value_or("[UNKNOWN]")
+           << "\"}, ";
+    }
+    return ss.str();
+}
+
+std::string toString(const MinikinPaint& paint) {
+    std::stringstream ss;
+    ss << "{size=" << paint.size << ", scaleX=" << paint.scaleX << ", skewX=" << paint.skewX
+       << ", letterSpacing=" << paint.letterSpacing << ", wordSpacing=" << paint.wordSpacing
+       << ", fontFlags=" << paint.fontFlags
+       << ", localeList=" << getLocaleString(paint.localeListId)
+       << ", fontStyle=" << paint.fontStyle << ", familyVariant=" << paint.familyVariant
+       << ", fontFeatureSettings=" << paint.fontFeatureSettings
+       << ", fontCollectionId=" << paint.font->getId();
+    return ss.str();
+}
+
+}  // namespace debug
+
+}  // namespace minikin
diff --git a/libs/minikin/FeatureFlags.h b/libs/minikin/FeatureFlags.h
new file mode 100644
index 0000000..9cfcf9d
--- /dev/null
+++ b/libs/minikin/FeatureFlags.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MINIKIN_FEATURE_FLAGS_H
+#define MINIKIN_FEATURE_FLAGS_H
+
+#ifdef __ANDROID__
+#include <com_android_text_flags.h>
+#endif  // __ANDROID__
+
+namespace features {
+
+#ifdef __ANDROID__
+#define DEFINE_FEATURE_FLAG_ACCESSOROR(feature_name)                \
+    inline bool feature_name() {                                    \
+        static bool flag = com_android_text_flags_##feature_name(); \
+        return flag;                                                \
+    }
+#else  //  __ANDROID__
+#define DEFINE_FEATURE_FLAG_ACCESSOROR(feature_name) \
+    inline bool feature_name() {                     \
+        return true;                                 \
+    }
+#endif  //  __ANDROID__
+
+DEFINE_FEATURE_FLAG_ACCESSOROR(phrase_strict_fallback)
+DEFINE_FEATURE_FLAG_ACCESSOROR(word_style_auto)
+DEFINE_FEATURE_FLAG_ACCESSOROR(inter_character_justification)
+
+}  // namespace features
+
+#endif  // FEATURE_FLAGS
diff --git a/libs/minikin/Font.cpp b/libs/minikin/Font.cpp
index bf7450a..a044b90 100644
--- a/libs/minikin/Font.cpp
+++ b/libs/minikin/Font.cpp
@@ -27,12 +27,35 @@
 #include "FontUtils.h"
 #include "LocaleListCache.h"
 #include "MinikinInternal.h"
+#include "minikin/Constants.h"
 #include "minikin/HbUtils.h"
 #include "minikin/MinikinFont.h"
 #include "minikin/MinikinFontFactory.h"
 
 namespace minikin {
 
+namespace {
+
+// |-------|-------|
+//                 X : (1 bit) 1 if weight variation is available, otherwise 0.
+//                Y  : (1 bit) 1 if italic variation is available, otherwise 0.
+//               I   : (1 bit) 1 for italic, 0 for upright
+//     WWWWWWWWWW    : (10 bits) unsigned 10 bits integer for weight value.
+inline uint16_t packKey(int wght, int ital) {
+    uint16_t res = 0;
+    if (wght != -1) {
+        res |= 1u;
+        res |= static_cast<uint16_t>(wght) << 3;
+    }
+    if (ital != -1) {
+        res |= 1u << 1;
+        res |= (ital == 1) ? 1 << 2 : 0;
+    }
+    return res;
+}
+
+}  // namespace
+
 std::shared_ptr<Font> Font::Builder::build() {
     if (mIsWeightSet && mIsSlantSet) {
         // No need to read OS/2 header of the font file.
@@ -62,7 +85,7 @@
 void Font::writeTo(BufferWriter* writer) const {
     mStyle.writeTo(writer);
     LocaleListCache::writeTo(writer, mLocaleListId);
-    MinikinFontFactory::getInstance().write(writer, typeface().get());
+    MinikinFontFactory::getInstance().write(writer, baseTypeface().get());
 }
 
 Font::Font(Font&& o) noexcept
@@ -91,7 +114,7 @@
     }
 }
 
-const std::shared_ptr<MinikinFont>& Font::typeface() const {
+const std::shared_ptr<MinikinFont>& Font::baseTypeface() const {
     return getExternalRefs()->mTypeface;
 }
 
@@ -154,7 +177,7 @@
 
 // static
 FontStyle Font::analyzeStyle(const HbFontUniquePtr& font) {
-    HbBlob os2Table(font, MinikinFont::MakeTag('O', 'S', '/', '2'));
+    HbBlob os2Table(font, MakeTag('O', 'S', '/', '2'));
     if (!os2Table) {
         return FontStyle();
     }
@@ -169,7 +192,7 @@
 }
 
 std::unordered_set<AxisTag> Font::getSupportedAxes() const {
-    HbBlob fvarTable(baseFont(), MinikinFont::MakeTag('f', 'v', 'a', 'r'));
+    HbBlob fvarTable(baseFont(), MakeTag('f', 'v', 'a', 'r'));
     if (!fvarTable) {
         return std::unordered_set<AxisTag>();
     }
@@ -178,4 +201,75 @@
     return supportedAxes;
 }
 
+HbFontUniquePtr Font::getAdjustedFont(int wght, int ital) const {
+    if (wght == -1 && ital == -1) {
+        return HbFontUniquePtr(hb_font_reference(baseFont().get()));
+    }
+
+    HbFontUniquePtr font(hb_font_create_sub_font(baseFont().get()));
+    std::vector<hb_variation_t> variations;
+    variations.reserve(baseTypeface()->GetAxes().size());
+    for (const FontVariation& variation : baseTypeface()->GetAxes()) {
+        if (wght != -1 && variation.axisTag == TAG_wght) {
+            continue;  // Add wght axis later
+        } else if (ital != -1 && variation.axisTag == TAG_ital) {
+            continue;  // Add ital axis later
+        } else {
+            variations.push_back({variation.axisTag, variation.value});
+        }
+    }
+    if (wght != -1) {
+        variations.push_back({TAG_wght, static_cast<float>(wght)});
+    }
+    if (ital != -1) {
+        variations.push_back({TAG_ital, static_cast<float>(ital)});
+    }
+    hb_font_set_variations(font.get(), variations.data(), variations.size());
+    return font;
+}
+
+const std::shared_ptr<MinikinFont>& Font::getAdjustedTypeface(int wght, int ital) const {
+    return getExternalRefs()->getAdjustedTypeface(wght, ital);
+}
+
+const std::shared_ptr<MinikinFont>& Font::ExternalRefs::getAdjustedTypeface(int wght,
+                                                                            int ital) const {
+    if (wght == -1 && ital == -1) {
+        return mTypeface;
+    }
+
+    const uint16_t key = packKey(wght, ital);
+
+    std::lock_guard<std::mutex> lock(mMutex);
+
+    std::map<uint16_t, std::shared_ptr<MinikinFont>>::iterator it = mVarTypefaceCache.find(key);
+    if (it != mVarTypefaceCache.end()) {
+        return it->second;
+    }
+
+    std::vector<FontVariation> variations;
+    variations.reserve(mTypeface->GetAxes().size());
+    for (const FontVariation& variation : mTypeface->GetAxes()) {
+        if (wght != -1 && variation.axisTag == TAG_wght) {
+            continue;  // Add wght axis later
+        } else if (ital != -1 && variation.axisTag == TAG_ital) {
+            continue;  // Add ital axis later
+        } else {
+            variations.push_back({variation.axisTag, variation.value});
+        }
+    }
+    if (wght != -1) {
+        variations.push_back({TAG_wght, static_cast<float>(wght)});
+    }
+    if (ital != -1) {
+        variations.push_back({TAG_ital, static_cast<float>(ital)});
+    }
+    std::shared_ptr<MinikinFont> newTypeface = mTypeface->createFontWithVariation(variations);
+
+    auto [result_iterator, _] =
+            mVarTypefaceCache.insert(std::make_pair(key, std::move(newTypeface)));
+
+    return result_iterator->second;
+}
+
 }  // namespace minikin
diff --git a/libs/minikin/FontCollection.cpp b/libs/minikin/FontCollection.cpp
index 0c1a173..84e5dd9 100644
--- a/libs/minikin/FontCollection.cpp
+++ b/libs/minikin/FontCollection.cpp
@@ -30,6 +30,8 @@
 #include "minikin/Characters.h"
 #include "minikin/Emoji.h"
 #include "minikin/FontFileParser.h"
+#include "minikin/MinikinExtent.h"
+#include "minikin/MinikinPaint.h"
 
 using std::vector;
 
@@ -606,6 +608,89 @@
     return b.build();
 }
 
+void FontCollection::filterFamilyByLocale(
+        const LocaleList& localeList,
+        const std::function<void(const FontFamily& family)>& callback) const {
+    for (uint8_t i = 0; i < mFamilyCount; ++i) {
+        const auto& family = getFamilyAt(i);
+
+        uint32_t fontLocaleId = family->localeListId();
+        if (fontLocaleId == LocaleListCache::kInvalidListId) {
+            continue;
+        }
+        const LocaleList& fontLocaleList = LocaleListCache::getById(fontLocaleId);
+        if (!localeList.atLeastOneScriptMatch(fontLocaleList)) {
+            continue;
+        }
+
+        callback(*family.get());
+    }
+}
+
+MinikinExtent FontCollection::getReferenceExtentForLocale(const MinikinPaint& paint) const {
+    uint32_t localeId = paint.localeListId;
+    MinikinExtent result(0, 0);
+    for (uint8_t i = 0; i < mFamilyCount; ++i) {
+        const auto& family = getFamilyAt(i);
+        if (!family->isCustomFallback()) {
+            break;
+        }
+
+        // Use this family
+        MinikinExtent extent(0, 0);
+        FakedFont font = getFamilyAt(i)->getClosestMatch(paint.fontStyle);
+        font.typeface()->GetFontExtent(&extent, paint, font.fakery);
+        result.extendBy(extent);
+    }
+
+    if (localeId == LocaleListCache::kInvalidListId) {
+        return result;
+    }
+
+    // If default is requested, use compact one.
+    const FamilyVariant requestVariant = paint.familyVariant == FamilyVariant::DEFAULT
+                                                 ? FamilyVariant::COMPACT
+                                                 : paint.familyVariant;
+    const LocaleList& requestedLocaleList = LocaleListCache::getById(localeId);
+
+    bool familyFound = false;
+    filterFamilyByLocale(requestedLocaleList, [&](const FontFamily& family) {
+        const FamilyVariant familyVariant = family.variant() == FamilyVariant::DEFAULT
+                                                    ? FamilyVariant::COMPACT
+                                                    : family.variant();
+
+        if (familyVariant != requestVariant) {
+            return;
+        }
+
+        MinikinExtent extent(0, 0);
+        FakedFont font = family.getClosestMatch(paint.fontStyle);
+        font.typeface()->GetFontExtent(&extent, paint, font.fakery);
+        result.extendBy(extent);
+
+        familyFound = true;
+    });
+
+    // If nothing matches, try non-variant match cases since it is used for fallback.
+    filterFamilyByLocale(requestedLocaleList, [&](const FontFamily& family) {
+        // Use this family
+        MinikinExtent extent(0, 0);
+        FakedFont font = family.getClosestMatch(paint.fontStyle);
+        font.typeface()->GetFontExtent(&extent, paint, font.fakery);
+        result.extendBy(extent);
+
+        familyFound = true;
+    });
+
+    // If nothing matches, use default font.
+    if (!familyFound) {
+        FakedFont font = getFamilyAt(0)->getClosestMatch(paint.fontStyle);
+        font.typeface()->GetFontExtent(&result, paint, font.fakery);
+    }
+
+    return result;
+}
+
 std::vector<FontCollection::Run> FontCollection::itemize(U16StringPiece text, FontStyle,
                                                          uint32_t localeListId,
                                                          FamilyVariant familyVariant,
diff --git a/libs/minikin/FontFamily.cpp b/libs/minikin/FontFamily.cpp
index 836674c..e6da84e 100644
--- a/libs/minikin/FontFamily.cpp
+++ b/libs/minikin/FontFamily.cpp
@@ -29,6 +29,7 @@
 #include "LocaleListCache.h"
 #include "MinikinInternal.h"
 #include "minikin/CmapCoverage.h"
+#include "minikin/Constants.h"
 #include "minikin/FamilyVariant.h"
 #include "minikin/HbUtils.h"
 #include "minikin/MinikinFont.h"
@@ -44,21 +45,23 @@
 std::shared_ptr<FontFamily> FontFamily::create(FamilyVariant variant,
                                                std::vector<std::shared_ptr<Font>>&& fonts) {
     return create(kEmptyLocaleListId, variant, std::move(fonts), false /* isCustomFallback */,
-                  false /* isDefaultFallback */);
+                  false /* isDefaultFallback */, VariationFamilyType::None);
 }
 
 // static
 std::shared_ptr<FontFamily> FontFamily::create(uint32_t localeListId, FamilyVariant variant,
                                                std::vector<std::shared_ptr<Font>>&& fonts,
-                                               bool isCustomFallback, bool isDefaultFallback) {
+                                               bool isCustomFallback, bool isDefaultFallback,
+                                               VariationFamilyType varFamilyType) {
     // TODO(b/174672300): Revert back to make_shared.
     return std::shared_ptr<FontFamily>(new FontFamily(localeListId, variant, std::move(fonts),
-                                                      isCustomFallback, isDefaultFallback));
+                                                      isCustomFallback, isDefaultFallback,
+                                                      varFamilyType));
 }
 
 FontFamily::FontFamily(uint32_t localeListId, FamilyVariant variant,
                        std::vector<std::shared_ptr<Font>>&& fonts, bool isCustomFallback,
-                       bool isDefaultFallback)
+                       bool isDefaultFallback, VariationFamilyType varFamilyType)
         : mFonts(std::make_unique<std::shared_ptr<Font>[]>(fonts.size())),
           // computeCoverage may update supported axes and coverages later.
           mSupportedAxes(nullptr),
@@ -72,7 +75,8 @@
           mIsColorEmoji(LocaleListCache::getById(localeListId).getEmojiStyle() ==
                         EmojiStyle::EMOJI),
           mIsCustomFallback(isCustomFallback),
-          mIsDefaultFallback(isDefaultFallback) {
+          mIsDefaultFallback(isDefaultFallback),
+          mVarFamilyType(varFamilyType) {
     MINIKIN_ASSERT(!fonts.empty(), "FontFamily must contain at least one font.");
     MINIKIN_ASSERT(fonts.size() <= std::numeric_limits<uint32_t>::max(),
                    "Number of fonts must be less than 2^32.");
@@ -107,6 +111,7 @@
     mIsColorEmoji = static_cast<bool>(reader->read<uint8_t>());
     mIsCustomFallback = static_cast<bool>(reader->read<uint8_t>());
     mIsDefaultFallback = static_cast<bool>(reader->read<uint8_t>());
+    mVarFamilyType = reader->read<VariationFamilyType>();
     mCoverage = SparseBitSet(reader);
     // Read mCmapFmt14Coverage. As it can have null entries, it is stored in the buffer as a sparse
     // array (size, non-null entry count, array of (index, entry)).
@@ -133,6 +138,7 @@
     writer->write<uint8_t>(mIsColorEmoji);
     writer->write<uint8_t>(mIsCustomFallback);
     writer->write<uint8_t>(mIsDefaultFallback);
+    writer->write<VariationFamilyType>(mVarFamilyType);
     mCoverage.writeTo(writer);
     // Write mCmapFmt14Coverage as a sparse array (size, non-null entry count,
     // array of (index, entry))
@@ -223,6 +229,9 @@
 }
 
 FakedFont FontFamily::getClosestMatch(FontStyle style) const {
+    if (mVarFamilyType != VariationFamilyType::None) {
+        return getVariationFamilyAdjustment(style);
+    }
     int bestIndex = 0;
     Font* bestFont = mFonts[bestIndex].get();
     int bestMatch = computeMatch(bestFont->style(), style);
@@ -238,9 +247,23 @@
     return FakedFont{mFonts[bestIndex], computeFakery(style, bestFont->style())};
 }
 
+FakedFont FontFamily::getVariationFamilyAdjustment(FontStyle style) const {
+    const bool italic = style.slant() == FontStyle::Slant::ITALIC;
+    switch (mVarFamilyType) {
+        case VariationFamilyType::SingleFont_wghtOnly:
+            return FakedFont{mFonts[0], FontFakery(false, italic, style.weight(), -1)};
+        case VariationFamilyType::SingleFont_wght_ital:
+            return FakedFont{mFonts[0], FontFakery(false, false, style.weight(), italic ? 1 : 0)};
+        case VariationFamilyType::TwoFont_wght:
+            return FakedFont{mFonts[italic ? 1 : 0], FontFakery(false, false, style.weight(), -1)};
+        case VariationFamilyType::None:
+            return FakedFont{mFonts[0], FontFakery()};
+    }
+}
+
 void FontFamily::computeCoverage() {
     const std::shared_ptr<Font>& font = getClosestMatch(FontStyle()).font;
-    HbBlob cmapTable(font->baseFont(), MinikinFont::MakeTag('c', 'm', 'a', 'p'));
+    HbBlob cmapTable(font->baseFont(), MakeTag('c', 'm', 'a', 'p'));
     if (cmapTable.get() == nullptr) {
         ALOGE("Could not get cmap table size!\n");
         return;
@@ -333,7 +356,7 @@
         }
         std::shared_ptr<MinikinFont> minikinFont;
         if (supportedVariations) {
-            minikinFont = font->typeface()->createFontWithVariation(variations);
+            minikinFont = font->baseTypeface()->createFontWithVariation(variations);
         }
         if (minikinFont == nullptr) {
             fonts.push_back(font);
@@ -342,7 +365,8 @@
         }
     }
 
-    return create(mLocaleListId, mVariant, std::move(fonts), mIsCustomFallback, mIsDefaultFallback);
+    return create(mLocaleListId, mVariant, std::move(fonts), mIsCustomFallback, mIsDefaultFallback,
+                  VariationFamilyType::None);
 }
 
 }  // namespace minikin
diff --git a/libs/minikin/FontFeatureUtils.cpp b/libs/minikin/FontFeatureUtils.cpp
index e1ec065..cc0749a 100644
--- a/libs/minikin/FontFeatureUtils.cpp
+++ b/libs/minikin/FontFeatureUtils.cpp
@@ -14,12 +14,29 @@
  * limitations under the License.
  */
 
-#include "FontFeatureUtils.h"
-
 #include "StringPiece.h"
+#include "minikin/FontFeature.h"
+#include "minikin/MinikinPaint.h"
 
 namespace minikin {
 
+std::vector<FontFeature> FontFeature::parse(std::string_view fontFeatureSettings) {
+    std::vector<FontFeature> features;
+
+    SplitIterator it(StringPiece(fontFeatureSettings), ',');
+    while (it.hasNext()) {
+        StringPiece featureStr = it.next();
+        static hb_feature_t feature;
+        // We do not allow setting features on ranges. As such, reject any setting that has
+        // non-universal range.
+        if (hb_feature_from_string(featureStr.data(), featureStr.size(), &feature) &&
+            feature.start == 0 && feature.end == (unsigned int)-1) {
+            features.push_back({feature.tag, feature.value});
+        }
+    }
+    return features;
+}
+
 std::vector<hb_feature_t> cleanAndAddDefaultFontFeatures(const MinikinPaint& paint) {
     std::vector<hb_feature_t> features;
     // Disable default-on non-required ligature features if letter-spacing
@@ -40,27 +57,17 @@
     static constexpr hb_tag_t halt_tag = HB_TAG('h', 'a', 'l', 't');
     static constexpr hb_tag_t palt_tag = HB_TAG('p', 'a', 'l', 't');
 
-    SplitIterator it(paint.fontFeatureSettings, ',');
-    while (it.hasNext()) {
-        StringPiece featureStr = it.next();
-        static hb_feature_t feature;
-        // We do not allow setting features on ranges. As such, reject any setting that has
-        // non-universal range.
-        if (hb_feature_from_string(featureStr.data(), featureStr.size(), &feature) &&
-            feature.start == 0 && feature.end == (unsigned int)-1) {
-            // OpenType requires disabling default `chws` feature if glyph-width features.
-            // https://docs.microsoft.com/en-us/typography/opentype/spec/features_ae#tag-chws
-            // Here, we follow Chrome's impl: not enabling default `chws` feature if `palt` or
-            // `halt` is enabled.
-            // https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/fonts/shaping/font_features.cc;drc=77a9a09de0688ca449f5333a305ceaf3f36b6daf;l=215
-            if (default_enable_chws &&
-                (feature.tag == chws_tag ||
-                 (feature.value && (feature.tag == halt_tag || feature.tag == palt_tag)))) {
-                default_enable_chws = false;
-            }
-
-            features.push_back(feature);
+    for (const FontFeature& feature : paint.fontFeatureSettings) {
+        // OpenType requires disabling default `chws` feature if glyph-width features.
+        // https://docs.microsoft.com/en-us/typography/opentype/spec/features_ae#tag-chws
+        // Here, we follow Chrome's impl: not enabling default `chws` feature if `palt` or
+        // `halt` is enabled.
+        // https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/fonts/shaping/font_features.cc;drc=77a9a09de0688ca449f5333a305ceaf3f36b6daf;l=215
+        if (feature.tag == chws_tag ||
+            (feature.value && (feature.tag == halt_tag || feature.tag == palt_tag))) {
+            default_enable_chws = false;
         }
+        features.push_back({feature.tag, feature.value, 0, ~0u});
     }
 
     if (default_enable_chws) {
diff --git a/libs/minikin/FontFeatureUtils.h b/libs/minikin/FontFeatureUtils.h
deleted file mode 100644
index 1a02173..0000000
--- a/libs/minikin/FontFeatureUtils.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MINIKIN_FONT_FEATURE_UTILS_H
-#define MINIKIN_FONT_FEATURE_UTILS_H
-
-#include <hb.h>
-
-#include "minikin/MinikinPaint.h"
-
-namespace minikin {
-
-/**
- * Returns the final set of font features based on the features requested by this paint object and
- * extra defaults or implied font features.
- *
- * Features are included from the paint object if they are:
- *   1) in a supported range
- *
- * Default features are added based if they are:
- *   1) implied due to Paint settings such as letterSpacing
- *   2) default features that do not conflict with requested features
- */
-std::vector<hb_feature_t> cleanAndAddDefaultFontFeatures(const MinikinPaint& paint);
-
-}  // namespace minikin
-#endif  // MINIKIN_LAYOUT_UTILS_H
diff --git a/libs/minikin/FontFileParser.cpp b/libs/minikin/FontFileParser.cpp
index 1bcb711..a7d5210 100644
--- a/libs/minikin/FontFileParser.cpp
+++ b/libs/minikin/FontFileParser.cpp
@@ -18,16 +18,16 @@
 
 #define LOG_TAG "Minikin"
 
+#include <hb-ot.h>
+#include <hb.h>
+
 #include <cstdint>
 #include <optional>
 #include <string>
 #include <vector>
 
-#include <hb-ot.h>
-#include <hb.h>
-
 #include "MinikinInternal.h"
-#include "minikin/MinikinFont.h"
+#include "minikin/Constants.h"
 
 namespace minikin {
 
@@ -175,7 +175,7 @@
 std::optional<uint32_t> FontFileParser::getFontRevision() const {
     if (!mFace) return std::optional<uint32_t>();
 
-    HbBlob headTable(mFace, MinikinFont::MakeTag('h', 'e', 'a', 'd'));
+    HbBlob headTable(mFace, MakeTag('h', 'e', 'a', 'd'));
     if (!headTable) return std::optional<uint32_t>();
 
     uint32_t out = 0;
@@ -211,8 +211,8 @@
 std::optional<bool> FontFileParser::isPostScriptType1Font() const {
     if (!mFace) return std::optional<bool>();
 
-    HbBlob cffTable(mFace, MinikinFont::MakeTag('C', 'F', 'F', ' '));
-    HbBlob cff2Table(mFace, MinikinFont::MakeTag('C', 'F', 'F', '2'));
+    HbBlob cffTable(mFace, MakeTag('C', 'F', 'F', ' '));
+    HbBlob cff2Table(mFace, MakeTag('C', 'F', 'F', '2'));
     return cffTable || cff2Table;
 }
 
diff --git a/libs/minikin/GreedyLineBreaker.cpp b/libs/minikin/GreedyLineBreaker.cpp
index bb2f91c..c4ceabe 100644
--- a/libs/minikin/GreedyLineBreaker.cpp
+++ b/libs/minikin/GreedyLineBreaker.cpp
@@ -16,17 +16,17 @@
 
 #define LOG_TAG "GreedyLineBreak"
 
-#include "minikin/Characters.h"
-#include "minikin/LineBreaker.h"
-#include "minikin/MeasuredText.h"
-#include "minikin/Range.h"
-#include "minikin/U16StringPiece.h"
-
+#include "FeatureFlags.h"
 #include "HyphenatorMap.h"
 #include "LineBreakerUtil.h"
 #include "Locale.h"
 #include "LocaleListCache.h"
 #include "WordBreaker.h"
+#include "minikin/Characters.h"
+#include "minikin/LineBreaker.h"
+#include "minikin/MeasuredText.h"
+#include "minikin/Range.h"
+#include "minikin/U16StringPiece.h"
 
 namespace minikin {
 
@@ -40,18 +40,21 @@
     // destructed.
     GreedyLineBreaker(const U16StringPiece& textBuf, const MeasuredText& measured,
                       const LineWidth& lineWidthLimits, const TabStops& tabStops,
-                      bool enableHyphenation)
+                      bool enableHyphenation, bool useBoundsForWidth)
             : mLineWidthLimit(lineWidthLimits.getAt(0)),
               mTextBuf(textBuf),
               mMeasuredText(measured),
               mLineWidthLimits(lineWidthLimits),
               mTabStops(tabStops),
-              mEnableHyphenation(enableHyphenation) {}
+              mEnableHyphenation(enableHyphenation),
+              mUseBoundsForWidth(useBoundsForWidth) {}
 
-    void process();
+    void process(bool forceWordStyleAutoToPhrase);
 
     LineBreakResult getResult() const;
 
+    bool retryWithPhraseWordBreak = false;
+
 private:
     struct BreakPoint {
         BreakPoint(uint32_t offset, float lineWidth, StartHyphenEdit startHyphen,
@@ -99,6 +102,9 @@
     // This method return true if there is no characters to be processed.
     bool doLineBreakWithGraphemeBounds(const Range& range);
 
+    bool overhangExceedLineLimit(const Range& range);
+    bool doLineBreakWithFallback(const Range& range);
+
     // Info about the line currently processing.
     uint32_t mLineNum = 0;
     double mLineWidth = 0;
@@ -121,6 +127,7 @@
     const LineWidth& mLineWidthLimits;
     const TabStops& mTabStops;
     bool mEnableHyphenation;
+    bool mUseBoundsForWidth;
 
     // The result of line breaking.
     std::vector<BreakPoint> mBreakPoints;
@@ -181,6 +188,10 @@
         return false;
     }
 
+    if (!targetRun->canHyphenate()) {
+        return false;
+    }
+
     const std::vector<HyphenationType> hyphenResult =
             hyphenate(mTextBuf.substr(targetRange), *mHyphenator);
     Range contextRange = range;
@@ -263,7 +274,8 @@
         if (w == 0) {
             continue;  // w == 0 means here is not a grapheme bounds. Don't break here.
         }
-        if (width + w > mLineWidthLimit) {
+        if (width + w > mLineWidthLimit ||
+            overhangExceedLineLimit(Range(range.getStart(), i + 1))) {
             // Okay, here is the longest position.
             breakLineAt(i, width, mLineWidth - width, mSumOfCharWidths - width,
                         EndHyphenEdit::NO_EDIT, StartHyphenEdit::NO_EDIT);
@@ -282,6 +294,72 @@
     return true;
 }
 
+bool GreedyLineBreaker::doLineBreakWithFallback(const Range& range) {
+    if (!features::phrase_strict_fallback()) {
+        return false;
+    }
+    Run* targetRun = nullptr;
+    for (const auto& run : mMeasuredText.runs) {
+        if (run->getRange().contains(range)) {
+            targetRun = run.get();
+        }
+    }
+
+    if (targetRun == nullptr) {
+        return false;  // The target range may lay on multiple run. Unable to fallback.
+    }
+
+    if (targetRun->lineBreakWordStyle() == LineBreakWordStyle::None) {
+        return false;  // If the line break word style is already none, nothing can be falled back.
+    }
+
+    WordBreaker wb;
+    wb.setText(mTextBuf.data(), mTextBuf.length());
+    ssize_t next = wb.followingWithLocale(getEffectiveLocale(targetRun->getLocaleListId()),
+                                          targetRun->lineBreakStyle(), LineBreakWordStyle::None,
+                                          range.getStart());
+
+    if (!range.contains(next)) {
+        return false;  // No fallback break points.
+    }
+
+    int32_t prevBreak = -1;
+    float wordWidth = 0;
+    float preBreakWidth = 0;
+    for (uint32_t i = range.getStart(); i < range.getEnd(); ++i) {
+        const float w = mMeasuredText.widths[i];
+        if (w == 0) {
+            continue;  // w == 0 means here is not a grapheme bounds. Don't break here.
+        }
+        if (i == (uint32_t)next) {
+            if (preBreakWidth + wordWidth > mLineWidthLimit) {
+                if (prevBreak == -1) {
+                    return false;  // No candidate before this point. Give up.
+                }
+                breakLineAt(prevBreak, preBreakWidth, mLineWidth - preBreakWidth,
+                            mSumOfCharWidths - preBreakWidth, EndHyphenEdit::NO_EDIT,
+                            StartHyphenEdit::NO_EDIT);
+                return true;
+            }
+            prevBreak = i;
+            next = wb.next();
+            preBreakWidth += wordWidth;
+            wordWidth = w;
+        } else {
+            wordWidth += w;
+        }
+    }
+
+    if (preBreakWidth <= mLineWidthLimit) {
+        breakLineAt(prevBreak, preBreakWidth, mLineWidth - preBreakWidth,
+                    mSumOfCharWidths - preBreakWidth, EndHyphenEdit::NO_EDIT,
+                    StartHyphenEdit::NO_EDIT);
+        return true;
+    }
+
+    return false;
+}
+
 void GreedyLineBreaker::updateLineWidth(uint16_t c, float width) {
     if (c == CHAR_TAB) {
         mSumOfCharWidths = mTabStops.nextTab(mSumOfCharWidths);
@@ -294,18 +372,48 @@
     }
 }
 
+bool GreedyLineBreaker::overhangExceedLineLimit(const Range& range) {
+    if (!mUseBoundsForWidth) {
+        return false;
+    }
+    if (!mMeasuredText.hasOverhang(range)) {
+        return false;
+    }
+
+    uint32_t i;
+    for (i = 0; i < range.getLength(); ++i) {
+        uint16_t ch = mTextBuf[range.getEnd() - i - 1];
+        if (!isLineEndSpace(ch)) {
+            break;
+        }
+    }
+    if (i == range.getLength()) {
+        return false;
+    }
+
+    return mMeasuredText.getBounds(mTextBuf, Range(range.getStart(), range.getEnd() - i)).width() >
+           mLineWidthLimit;
+}
+
 void GreedyLineBreaker::processLineBreak(uint32_t offset, WordBreaker* breaker,
                                          bool doHyphenation) {
-    while (mLineWidth > mLineWidthLimit) {
-        const Range lineRange(getPrevLineBreakOffset(), offset);  // The range we need to address.
+    while (mLineWidth > mLineWidthLimit ||
+           overhangExceedLineLimit(Range(getPrevLineBreakOffset(), offset))) {
         if (tryLineBreakWithWordBreak()) {
             continue;  // The word in the new line may still be too long for the line limit.
-        } else if (doHyphenation && tryLineBreakWithHyphenation(lineRange, breaker)) {
+        }
+
+        if (doHyphenation &&
+            tryLineBreakWithHyphenation(Range(getPrevLineBreakOffset(), offset), breaker)) {
             continue;  // TODO: we may be able to return here.
-        } else {
-            if (doLineBreakWithGraphemeBounds(lineRange)) {
-                return;
-            }
+        }
+
+        if (doLineBreakWithFallback(Range(getPrevLineBreakOffset(), offset))) {
+            continue;
+        }
+
+        if (doLineBreakWithGraphemeBounds(Range(getPrevLineBreakOffset(), offset))) {
+            return;
         }
     }
 
@@ -319,24 +427,27 @@
     }
 }
 
-void GreedyLineBreaker::process() {
+void GreedyLineBreaker::process(bool forceWordStyleAutoToPhrase) {
     WordBreaker wordBreaker;
     wordBreaker.setText(mTextBuf.data(), mTextBuf.size());
 
-    // Following two will be initialized after the first iteration.
-    uint32_t localeListId = LocaleListCache::kInvalidListId;
+    WordBreakerTransitionTracker wbTracker;
     uint32_t nextWordBoundaryOffset = 0;
     for (const auto& run : mMeasuredText.runs) {
         const Range range = run->getRange();
 
         // Update locale if necessary.
-        uint32_t newLocaleListId = run->getLocaleListId();
-        if (localeListId != newLocaleListId) {
-            Locale locale = getEffectiveLocale(newLocaleListId);
-            nextWordBoundaryOffset = wordBreaker.followingWithLocale(
-                    locale, run->lineBreakStyle(), run->lineBreakWordStyle(), range.getStart());
+        if (wbTracker.update(*run)) {
+            const LocaleList& localeList = wbTracker.getCurrentLocaleList();
+            const Locale locale = localeList.empty() ? Locale() : localeList[0];
+
+            LineBreakWordStyle lbWordStyle = wbTracker.getCurrentLineBreakWordStyle();
+            std::tie(lbWordStyle, retryWithPhraseWordBreak) =
+                    resolveWordStyleAuto(lbWordStyle, localeList, forceWordStyleAutoToPhrase);
+
+            nextWordBoundaryOffset = wordBreaker.followingWithLocale(locale, run->lineBreakStyle(),
+                                                                     lbWordStyle, range.getStart());
             mHyphenator = HyphenatorMap::lookup(locale);
-            localeListId = newLocaleListId;
         }
 
         for (uint32_t i = range.getStart(); i < range.getEnd(); ++i) {
@@ -371,12 +482,32 @@
             hasTabChar |= mTextBuf[i] == CHAR_TAB;
         }
 
-        MinikinExtent extent =
-                mMeasuredText.getExtent(mTextBuf, Range(prevBreakOffset, breakPoint.offset));
+        if (mUseBoundsForWidth) {
+            Range range = Range(prevBreakOffset, breakPoint.offset);
+            Range actualRange = trimTrailingLineEndSpaces(mTextBuf, range);
+            if (actualRange.isEmpty()) {
+                // No characters before the line-end-spaces.
+                MinikinExtent extent = mMeasuredText.getExtent(mTextBuf, range);
+                out.ascents.push_back(extent.ascent);
+                out.descents.push_back(extent.descent);
+                out.bounds.emplace_back(0, extent.ascent, breakPoint.lineWidth, extent.descent);
+            } else {
+                LineMetrics metrics = mMeasuredText.getLineMetrics(mTextBuf, actualRange);
+                out.ascents.push_back(metrics.extent.ascent);
+                out.descents.push_back(metrics.extent.descent);
+                out.bounds.emplace_back(metrics.bounds);
+            }
+        } else {
+            MinikinExtent extent =
+                    mMeasuredText.getExtent(mTextBuf, Range(prevBreakOffset, breakPoint.offset));
+            out.ascents.push_back(extent.ascent);
+            out.descents.push_back(extent.descent);
+            // We don't have bounding box if mUseBoundsForWidth is false. Use line ascent/descent
+            // and linew width for the bounding box.
+            out.bounds.emplace_back(0, extent.ascent, breakPoint.lineWidth, extent.descent);
+        }
         out.breakPoints.push_back(breakPoint.offset);
         out.widths.push_back(breakPoint.lineWidth);
-        out.ascents.push_back(extent.ascent);
-        out.descents.push_back(extent.descent);
         out.flags.push_back((hasTabChar ? TAB_BIT : 0) | static_cast<int>(breakPoint.hyphenEdit));
 
         prevBreakOffset = breakPoint.offset;
@@ -388,13 +519,41 @@
 
 LineBreakResult breakLineGreedy(const U16StringPiece& textBuf, const MeasuredText& measured,
                                 const LineWidth& lineWidthLimits, const TabStops& tabStops,
-                                bool enableHyphenation) {
+                                bool enableHyphenation, bool useBoundsForWidth) {
     if (textBuf.size() == 0) {
         return LineBreakResult();
     }
-    GreedyLineBreaker lineBreaker(textBuf, measured, lineWidthLimits, tabStops, enableHyphenation);
-    lineBreaker.process();
-    return lineBreaker.getResult();
+    GreedyLineBreaker lineBreaker(textBuf, measured, lineWidthLimits, tabStops, enableHyphenation,
+                                  useBoundsForWidth);
+    lineBreaker.process(false);
+    LineBreakResult res = lineBreaker.getResult();
+
+    if (!features::word_style_auto()) {
+        return res;
+    }
+
+    // The line breaker says that retry with phrase based word break because of the auto option and
+    // given locales.
+    if (!lineBreaker.retryWithPhraseWordBreak) {
+        return res;
+    }
+
+    // If the line break result is more than heuristics threshold, don't try pharse based word
+    // break.
+    if (res.breakPoints.size() >= LBW_AUTO_HEURISTICS_LINE_COUNT) {
+        return res;
+    }
+
+    GreedyLineBreaker phLineBreaker(textBuf, measured, lineWidthLimits, tabStops, enableHyphenation,
+                                    useBoundsForWidth);
+    phLineBreaker.process(true);
+    LineBreakResult res2 = phLineBreaker.getResult();
+
+    if (res2.breakPoints.size() < LBW_AUTO_HEURISTICS_LINE_COUNT) {
+        return res2;
+    } else {
+        return res;
+    }
 }
 
 }  // namespace minikin
diff --git a/libs/minikin/GreedyLineBreaker.h b/libs/minikin/GreedyLineBreaker.h
index ead93e4..9d17ec2 100644
--- a/libs/minikin/GreedyLineBreaker.h
+++ b/libs/minikin/GreedyLineBreaker.h
@@ -27,7 +27,7 @@
 
 LineBreakResult breakLineGreedy(const U16StringPiece& textBuf, const MeasuredText& measured,
                                 const LineWidth& lineWidthLimits, const TabStops& tabStops,
-                                bool enableHyphenation);
+                                bool enableHyphenation, bool useBoundsForWidth);
 
 }  // namespace minikin
 
diff --git a/libs/minikin/Layout.cpp b/libs/minikin/Layout.cpp
index e7d41c8..6369109 100644
--- a/libs/minikin/Layout.cpp
+++ b/libs/minikin/Layout.cpp
@@ -18,12 +18,6 @@
 
 #include "minikin/Layout.h"
 
-#include <cmath>
-#include <iostream>
-#include <mutex>
-#include <string>
-#include <vector>
-
 #include <hb-icu.h>
 #include <hb-ot.h>
 #include <log/log.h>
@@ -31,18 +25,22 @@
 #include <unicode/utf16.h>
 #include <utils/LruCache.h>
 
-#include "minikin/Emoji.h"
-#include "minikin/HbUtils.h"
-#include "minikin/LayoutCache.h"
-#include "minikin/LayoutPieces.h"
-#include "minikin/Macros.h"
+#include <cmath>
+#include <iostream>
+#include <mutex>
+#include <string>
+#include <vector>
 
 #include "BidiUtils.h"
 #include "LayoutSplitter.h"
 #include "LayoutUtils.h"
 #include "LocaleListCache.h"
 #include "MinikinInternal.h"
-
+#include "minikin/Emoji.h"
+#include "minikin/HbUtils.h"
+#include "minikin/LayoutCache.h"
+#include "minikin/LayoutPieces.h"
+#include "minikin/Macros.h"
 namespace minikin {
 
 void Layout::doLayout(const U16StringPiece& textBuf, const Range& range, Bidi bidiFlags,
@@ -53,19 +51,27 @@
     mGlyphs.reserve(count);
     for (const BidiText::RunInfo& runInfo : BidiText(textBuf, range, bidiFlags)) {
         doLayoutRunCached(textBuf, runInfo.range, runInfo.isRtl, paint, range.getStart(),
-                          startHyphen, endHyphen, this, nullptr);
+                          startHyphen, endHyphen, this, nullptr, nullptr);
     }
 }
 
 float Layout::measureText(const U16StringPiece& textBuf, const Range& range, Bidi bidiFlags,
                           const MinikinPaint& paint, StartHyphenEdit startHyphen,
-                          EndHyphenEdit endHyphen, float* advances) {
+                          EndHyphenEdit endHyphen, float* advances, MinikinRect* bounds) {
     float advance = 0;
+
+    MinikinRect tmpBounds;
     for (const BidiText::RunInfo& runInfo : BidiText(textBuf, range, bidiFlags)) {
         const size_t offset = range.toRangeOffset(runInfo.range.getStart());
         float* advancesForRun = advances ? advances + offset : nullptr;
-        advance += doLayoutRunCached(textBuf, runInfo.range, runInfo.isRtl, paint, 0, startHyphen,
-                                     endHyphen, nullptr, advancesForRun);
+        tmpBounds.setEmpty();
+        float run_advance = doLayoutRunCached(textBuf, runInfo.range, runInfo.isRtl, paint, 0,
+                                              startHyphen, endHyphen, nullptr, advancesForRun,
+                                              bounds ? &tmpBounds : nullptr);
+        if (bounds) {
+            bounds->join(tmpBounds, advance, 0);
+        }
+        advance += run_advance;
     }
     return advance;
 }
@@ -73,11 +79,12 @@
 float Layout::doLayoutRunCached(const U16StringPiece& textBuf, const Range& range, bool isRtl,
                                 const MinikinPaint& paint, size_t dstStart,
                                 StartHyphenEdit startHyphen, EndHyphenEdit endHyphen,
-                                Layout* layout, float* advances) {
+                                Layout* layout, float* advances, MinikinRect* bounds) {
     if (!range.isValid()) {
         return 0.0f;  // ICU failed to retrieve the bidi run?
     }
     float advance = 0;
+    MinikinRect tmpBounds;
     for (const auto[context, piece] : LayoutSplitter(textBuf, range, isRtl)) {
         // Hyphenation only applies to the start/end of run.
         const StartHyphenEdit pieceStartHyphen =
@@ -86,25 +93,32 @@
                 (piece.getEnd() == range.getEnd()) ? endHyphen : EndHyphenEdit::NO_EDIT;
         float* advancesForRun =
                 advances ? advances + (piece.getStart() - range.getStart()) : nullptr;
-        advance += doLayoutWord(textBuf.data() + context.getStart(),
-                                piece.getStart() - context.getStart(), piece.getLength(),
-                                context.getLength(), isRtl, paint, piece.getStart() - dstStart,
-                                pieceStartHyphen, pieceEndHyphen, layout, advancesForRun);
+        tmpBounds.setEmpty();
+        float word_advance = doLayoutWord(
+                textBuf.data() + context.getStart(), piece.getStart() - context.getStart(),
+                piece.getLength(), context.getLength(), isRtl, paint, piece.getStart() - dstStart,
+                pieceStartHyphen, pieceEndHyphen, layout, advancesForRun,
+                bounds ? &tmpBounds : nullptr);
+        if (bounds) {
+            bounds->join(tmpBounds, advance, 0);
+        }
+        advance += word_advance;
     }
     return advance;
 }
 
 class LayoutAppendFunctor {
 public:
-    LayoutAppendFunctor(Layout* layout, float* advances, float* totalAdvance, uint32_t outOffset,
-                        float wordSpacing)
+    LayoutAppendFunctor(Layout* layout, float* advances, uint32_t outOffset, float wordSpacing,
+                        MinikinRect* bounds)
             : mLayout(layout),
               mAdvances(advances),
-              mTotalAdvance(totalAdvance),
               mOutOffset(outOffset),
-              mWordSpacing(wordSpacing) {}
+              mWordSpacing(wordSpacing),
+              mBounds(bounds) {}
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */) {
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */,
+                    const MinikinRect& bounds) {
         if (mLayout) {
             mLayout->appendLayout(layoutPiece, mOutOffset, mWordSpacing);
         }
@@ -112,30 +126,37 @@
             const std::vector<float>& advances = layoutPiece.advances();
             std::copy(advances.begin(), advances.end(), mAdvances);
         }
-        if (mTotalAdvance) {
-            *mTotalAdvance = layoutPiece.advance();
+        if (mBounds) {
+            mBounds->join(bounds, mTotalAdvance, 0);
         }
+        mTotalAdvance += layoutPiece.advance();
     }
 
+    float getTotalAdvance() { return mTotalAdvance; }
+
 private:
     Layout* mLayout;
     float* mAdvances;
-    float* mTotalAdvance;
+    float mTotalAdvance{0};
     const uint32_t mOutOffset;
     const float mWordSpacing;
+    MinikinRect* mBounds;
 };
 
 float Layout::doLayoutWord(const uint16_t* buf, size_t start, size_t count, size_t bufSize,
                            bool isRtl, const MinikinPaint& paint, size_t bufStart,
                            StartHyphenEdit startHyphen, EndHyphenEdit endHyphen, Layout* layout,
-                           float* advances) {
+                           float* advances, MinikinRect* bounds) {
     float wordSpacing = count == 1 && isWordSpace(buf[start]) ? paint.wordSpacing : 0;
     float totalAdvance = 0;
+    const bool boundsCalculation = bounds != nullptr;
 
     const U16StringPiece textBuf(buf, bufSize);
     const Range range(start, start + count);
-    LayoutAppendFunctor f(layout, advances, &totalAdvance, bufStart, wordSpacing);
-    LayoutCache::getInstance().getOrCreate(textBuf, range, paint, isRtl, startHyphen, endHyphen, f);
+    LayoutAppendFunctor f(layout, advances, bufStart, wordSpacing, bounds);
+    LayoutCache::getInstance().getOrCreate(textBuf, range, paint, isRtl, startHyphen, endHyphen,
+                                           boundsCalculation, f);
+    totalAdvance = f.getTotalAdvance();
 
     if (wordSpacing != 0) {
         totalAdvance += wordSpacing;
diff --git a/libs/minikin/LayoutCore.cpp b/libs/minikin/LayoutCore.cpp
index 6f33ad7..b079e85 100644
--- a/libs/minikin/LayoutCore.cpp
+++ b/libs/minikin/LayoutCore.cpp
@@ -15,6 +15,7 @@
  */
 
 #define LOG_TAG "Minikin"
+#define ATRACE_TAG ATRACE_TAG_VIEW
 
 #include "minikin/LayoutCore.h"
 
@@ -24,6 +25,7 @@
 #include <unicode/ubidi.h>
 #include <unicode/utf16.h>
 #include <utils/LruCache.h>
+#include <utils/Trace.h>
 
 #include <cmath>
 #include <iostream>
@@ -32,11 +34,12 @@
 #include <vector>
 
 #include "BidiUtils.h"
-#include "FontFeatureUtils.h"
 #include "LayoutUtils.h"
 #include "LocaleListCache.h"
 #include "MinikinInternal.h"
+#include "ScriptUtils.h"
 #include "minikin/Emoji.h"
+#include "minikin/FontFeature.h"
 #include "minikin/HbUtils.h"
 #include "minikin/LayoutCache.h"
 #include "minikin/LayoutPieces.h"
@@ -136,45 +139,6 @@
     return cbdt;
 }
 
-static hb_codepoint_t decodeUtf16(const uint16_t* chars, size_t len, ssize_t* iter) {
-    UChar32 result;
-    U16_NEXT(chars, *iter, (ssize_t)len, result);
-    if (U_IS_SURROGATE(result)) {  // isolated surrogate
-        result = 0xFFFDu;          // U+FFFD REPLACEMENT CHARACTER
-    }
-    return (hb_codepoint_t)result;
-}
-
-static hb_script_t getScriptRun(const uint16_t* chars, size_t len, ssize_t* iter) {
-    if (size_t(*iter) == len) {
-        return HB_SCRIPT_UNKNOWN;
-    }
-    uint32_t cp = decodeUtf16(chars, len, iter);
-    hb_unicode_funcs_t* unicode_func = hb_unicode_funcs_get_default();
-    hb_script_t current_script = hb_unicode_script(unicode_func, cp);
-    for (;;) {
-        if (size_t(*iter) == len) break;
-        const ssize_t prev_iter = *iter;
-        cp = decodeUtf16(chars, len, iter);
-        const hb_script_t script = hb_unicode_script(unicode_func, cp);
-        if (script != current_script) {
-            if (current_script == HB_SCRIPT_INHERITED || current_script == HB_SCRIPT_COMMON) {
-                current_script = script;
-            } else if (script == HB_SCRIPT_INHERITED || script == HB_SCRIPT_COMMON) {
-                continue;
-            } else {
-                *iter = prev_iter;
-                break;
-            }
-        }
-    }
-    if (current_script == HB_SCRIPT_INHERITED) {
-        current_script = HB_SCRIPT_COMMON;
-    }
-
-    return current_script;
-}
-
 /**
  * Disable certain scripts (mostly those with cursive connection) from having letterspacing
  * applied. See https://github.com/behdad/harfbuzz/issues/64 for more details.
@@ -349,7 +313,7 @@
     double size = paint.size;
     double scaleX = paint.scaleX;
 
-    std::unordered_map<const Font*, uint32_t> fontMap;
+    std::unordered_map<const MinikinFont*, uint32_t> fontMap;
 
     float x = 0;
     float y = 0;
@@ -358,19 +322,20 @@
          isRtl ? --run_ix : ++run_ix) {
         FontCollection::Run& run = items[run_ix];
         FakedFont fakedFont = paint.font->getBestFont(substr, run, paint.fontStyle);
-        auto it = fontMap.find(fakedFont.font.get());
+        const std::shared_ptr<MinikinFont>& typeface = fakedFont.typeface();
+        auto it = fontMap.find(typeface.get());
         uint8_t font_ix;
         if (it == fontMap.end()) {
             // First time to see this font.
             font_ix = mFonts.size();
             mFonts.push_back(fakedFont);
-            fontMap.insert(std::make_pair(fakedFont.font.get(), font_ix));
+            fontMap.insert(std::make_pair(typeface.get(), font_ix));
 
             // We override some functions which are not thread safe.
-            HbFontUniquePtr font(hb_font_create_sub_font(fakedFont.font->baseFont().get()));
+            HbFontUniquePtr font(hb_font_create_sub_font(fakedFont.hbFont().get()));
             hb_font_set_funcs(
                     font.get(), isColorBitmapFont(font) ? getFontFuncsForEmoji() : getFontFuncs(),
-                    new SkiaArguments({fakedFont.font->typeface().get(), &paint, fakedFont.fakery}),
+                    new SkiaArguments({fakedFont.typeface().get(), &paint, fakedFont.fakery}),
                     [](void* data) { delete reinterpret_cast<SkiaArguments*>(data); });
             hbFonts.push_back(std::move(font));
         } else {
@@ -387,7 +352,7 @@
         }
         if (needExtent) {
             MinikinExtent verticalExtent;
-            fakedFont.font->typeface()->GetFontExtent(&verticalExtent, paint, fakedFont.fakery);
+            typeface->GetFontExtent(&verticalExtent, paint, fakedFont.fakery);
             mExtent.extendBy(verticalExtent);
         }
 
@@ -400,11 +365,10 @@
 
         // Note: scriptRunStart and scriptRunEnd, as well as run.start and run.end, run between 0
         // and count.
-        ssize_t scriptRunEnd;
-        for (ssize_t scriptRunStart = run.start; scriptRunStart < run.end;
-             scriptRunStart = scriptRunEnd) {
-            scriptRunEnd = scriptRunStart;
-            hb_script_t script = getScriptRun(buf + start, run.end, &scriptRunEnd /* iterator */);
+        for (const auto [range, script] : ScriptText(textBuf, run.start, run.end)) {
+            ssize_t scriptRunStart = range.getStart();
+            ssize_t scriptRunEnd = range.getEnd();
+
             // After the last line, scriptRunEnd is guaranteed to have increased, since the only
             // time getScriptRun does not increase its iterator is when it has already reached the
             // end of the buffer. But that can't happen, since if we have already reached the end
@@ -494,4 +458,22 @@
     mAdvance = x;
 }
 
+// static
+MinikinRect LayoutPiece::calculateBounds(const LayoutPiece& layout, const MinikinPaint& paint) {
+    ATRACE_CALL();
+    MinikinRect out;
+    for (uint32_t i = 0; i < layout.glyphCount(); ++i) {
+        MinikinRect bounds;
+        uint32_t glyphId = layout.glyphIdAt(i);
+        const FakedFont& fakedFont = layout.fontAt(i);
+        const Point& pos = layout.pointAt(i);
+
+        fakedFont.typeface()->GetBounds(&bounds, glyphId, paint, fakedFont.fakery);
+        out.join(bounds, pos);
+    }
+    return out;
+}
+
+LayoutPiece::~LayoutPiece() {}
+
 }  // namespace minikin
diff --git a/libs/minikin/LineBreaker.cpp b/libs/minikin/LineBreaker.cpp
index 12cf9bd..20a075c 100644
--- a/libs/minikin/LineBreaker.cpp
+++ b/libs/minikin/LineBreaker.cpp
@@ -24,13 +24,13 @@
 LineBreakResult breakIntoLines(const U16StringPiece& textBuffer, BreakStrategy strategy,
                                HyphenationFrequency frequency, bool justified,
                                const MeasuredText& measuredText, const LineWidth& lineWidth,
-                               const TabStops& tabStops) {
+                               const TabStops& tabStops, bool useBoundsForWidth) {
     if (strategy == BreakStrategy::Greedy || textBuffer.hasChar(CHAR_TAB)) {
         return breakLineGreedy(textBuffer, measuredText, lineWidth, tabStops,
-                               frequency != HyphenationFrequency::None);
+                               frequency != HyphenationFrequency::None, useBoundsForWidth);
     } else {
-        return breakLineOptimal(textBuffer, measuredText, lineWidth, strategy, frequency,
-                                justified);
+        return breakLineOptimal(textBuffer, measuredText, lineWidth, strategy, frequency, justified,
+                                useBoundsForWidth);
     }
 }
 
diff --git a/libs/minikin/LineBreakerUtil.h b/libs/minikin/LineBreakerUtil.h
index 5764c5e..030e677 100644
--- a/libs/minikin/LineBreakerUtil.h
+++ b/libs/minikin/LineBreakerUtil.h
@@ -19,19 +19,21 @@
 
 #include <vector>
 
-#include "minikin/Hyphenator.h"
-#include "minikin/MeasuredText.h"
-#include "minikin/U16StringPiece.h"
-
 #include "HyphenatorMap.h"
 #include "LayoutUtils.h"
 #include "Locale.h"
 #include "LocaleListCache.h"
 #include "MinikinInternal.h"
 #include "WordBreaker.h"
+#include "minikin/Hyphenator.h"
+#include "minikin/LineBreakStyle.h"
+#include "minikin/MeasuredText.h"
+#include "minikin/U16StringPiece.h"
 
 namespace minikin {
 
+constexpr uint32_t LBW_AUTO_HEURISTICS_LINE_COUNT = 5;
+
 // ParaWidth is used to hold cumulative width from beginning of paragraph. Note that for very large
 // paragraphs, accuracy could degrade using only 32-bit float. Note however that float is used
 // extensively on the Java side for this. This is a typedef so that we can easily change it based
@@ -55,6 +57,15 @@
            || c == 0x3000;
 }
 
+inline Range trimTrailingLineEndSpaces(const U16StringPiece& textBuf, const Range& range) {
+    for (uint32_t i = 0; i < range.getLength(); i++) {
+        if (!isLineEndSpace(textBuf[range.getEnd() - i - 1])) {
+            return Range(range.getStart(), range.getEnd() - i);
+        }
+    }
+    return Range(range.getStart(), range.getStart());
+}
+
 inline Locale getEffectiveLocale(uint32_t localeListId) {
     const LocaleList& localeList = LocaleListCache::getById(localeListId);
     return localeList.empty() ? Locale() : localeList[0];
@@ -125,6 +136,58 @@
     }
 }
 
+// Class for tracking the word breaker transition point.
+class WordBreakerTransitionTracker {
+public:
+    // Update the word breaker transition information. This function return true if the word
+    // breaker need to be updated.
+    bool update(const Run& run) {
+        const uint32_t newLocaleListId = run.getLocaleListId();
+        const LineBreakStyle newLineBreakStyle = run.lineBreakStyle();
+        const LineBreakWordStyle newLineBreakWordStyle = run.lineBreakWordStyle();
+        const bool isUpdate = localeListId != newLocaleListId ||
+                              lineBreakStyle != newLineBreakStyle ||
+                              lineBreakWordStyle != newLineBreakWordStyle;
+
+        localeListId = newLocaleListId;
+        lineBreakStyle = newLineBreakStyle;
+        lineBreakWordStyle = newLineBreakWordStyle;
+
+        return isUpdate;
+    }
+
+    const LocaleList& getCurrentLocaleList() const {
+        return LocaleListCache::getById(localeListId);
+    }
+
+    LineBreakStyle getCurrentLineBreakStyle() const { return lineBreakStyle; }
+
+    LineBreakWordStyle getCurrentLineBreakWordStyle() const { return lineBreakWordStyle; }
+
+private:
+    uint32_t localeListId = LocaleListCache::kInvalidListId;
+    LineBreakStyle lineBreakStyle = LineBreakStyle::None;
+    LineBreakWordStyle lineBreakWordStyle = LineBreakWordStyle::None;
+};
+
+inline std::pair<LineBreakWordStyle, bool> resolveWordStyleAuto(LineBreakWordStyle lbWordStyle,
+                                                                const LocaleList& localeList,
+                                                                bool forceWordStyleAutoToPhrase) {
+    if (lbWordStyle == LineBreakWordStyle::Auto) {
+        if (forceWordStyleAutoToPhrase) {
+            return std::make_pair(LineBreakWordStyle::Phrase, false);
+        } else if (localeList.hasKorean()) {
+            return std::make_pair(LineBreakWordStyle::Phrase, false);
+        } else if (localeList.hasJapanese()) {
+            return std::make_pair(LineBreakWordStyle::None, true);
+        } else {
+            return std::make_pair(LineBreakWordStyle::None, false);
+        }
+    } else {
+        return std::make_pair(lbWordStyle, false);
+    }
+}
+
 // Processes and retrieve informations from characters in the paragraph.
 struct CharProcessor {
     // The number of spaces.
@@ -157,6 +220,8 @@
     // The current hyphenator.
     const Hyphenator* hyphenator = nullptr;
 
+    bool retryWithPhraseWordBreak = false;
+
     // Retrieve the current word range.
     inline Range wordRange() const { return breaker.wordRange(); }
 
@@ -175,15 +240,17 @@
 
     // The user of CharProcessor must call updateLocaleIfNecessary with valid locale at least one
     // time before feeding characters.
-    void updateLocaleIfNecessary(const Run& run) {
-        uint32_t newLocaleListId = run.getLocaleListId();
-        if (localeListId != newLocaleListId) {
-            Locale locale = getEffectiveLocale(newLocaleListId);
-            nextWordBreak = breaker.followingWithLocale(locale, run.lineBreakStyle(),
-                                                        run.lineBreakWordStyle(),
+    void updateLocaleIfNecessary(const Run& run, bool forceWordStyleAutoToPhrase) {
+        if (wbTracker.update(run)) {
+            const LocaleList& localeList = wbTracker.getCurrentLocaleList();
+            const Locale locale = localeList.empty() ? Locale() : localeList[0];
+
+            LineBreakWordStyle lbWordStyle = wbTracker.getCurrentLineBreakWordStyle();
+            std::tie(lbWordStyle, retryWithPhraseWordBreak) =
+                    resolveWordStyleAuto(lbWordStyle, localeList, forceWordStyleAutoToPhrase);
+            nextWordBreak = breaker.followingWithLocale(locale, run.lineBreakStyle(), lbWordStyle,
                                                         run.getRange().getStart());
             hyphenator = HyphenatorMap::lookup(locale);
-            localeListId = newLocaleListId;
         }
     }
 
@@ -212,9 +279,7 @@
     }
 
 private:
-    // The current locale list id.
-    uint32_t localeListId = LocaleListCache::kInvalidListId;
-
+    WordBreakerTransitionTracker wbTracker;
     WordBreaker breaker;
 };
 }  // namespace minikin
diff --git a/libs/minikin/Locale.cpp b/libs/minikin/Locale.cpp
index d246020..f7e7323 100644
--- a/libs/minikin/Locale.cpp
+++ b/libs/minikin/Locale.cpp
@@ -467,6 +467,12 @@
     return supportsScript(mSubScriptBits, scriptToSubScriptBits(packedScript));
 }
 
+bool Locale::supportsScript(char c1, char c2, char c3, char c4) const {
+    uint32_t packedScript = packScript(c1, c2, c3, c4);
+    if (packedScript == mScript) return true;
+    return supportsScript(mSubScriptBits, scriptToSubScriptBits(packedScript));
+}
+
 int Locale::calcScoreFor(const LocaleList& supported) const {
     bool languageScriptMatch = false;
     bool subtagMatch = false;
@@ -528,4 +534,29 @@
     }
 }
 
+bool LocaleList::atLeastOneScriptMatch(const LocaleList& list) const {
+    if ((mUnionOfSubScriptBits & list.mUnionOfSubScriptBits) != 0) {
+        return true;
+    }
+
+    for (const Locale& myLocale : mLocales) {
+        for (const Locale& otherLocale : list.mLocales) {
+            if (myLocale.isEqualScript(otherLocale)) {
+                return true;
+            }
+        }
+    }
+
+    return false;
+}
+
+bool LocaleList::hasScript(char c1, char c2, char c3, char c4) const {
+    for (const Locale& locale : mLocales) {
+        if (locale.supportsScript(c1, c2, c3, c4)) {
+            return true;
+        }
+    }
+    return false;
+}
+
 }  // namespace minikin
diff --git a/libs/minikin/Locale.h b/libs/minikin/Locale.h
index 285bb7b..a19daa9 100644
--- a/libs/minikin/Locale.h
+++ b/libs/minikin/Locale.h
@@ -123,6 +123,7 @@
     // Returns true if this script supports the given script. For example, ja-Jpan supports Hira,
     // ja-Hira doesn't support Jpan.
     bool supportsScript(uint32_t script) const;
+    bool supportsScript(char c1, char c2, char c3, char c4) const;
 
     std::string getString() const;
 
@@ -217,6 +218,11 @@
     // The effective means the first non empty emoji style in the list.
     EmojiStyle getEmojiStyle() const { return mEmojiStyle; }
 
+    bool atLeastOneScriptMatch(const LocaleList& list) const;
+
+    bool hasJapanese() const { return hasScript('J', 'p', 'a', 'n'); }
+    bool hasKorean() const { return hasScript('K', 'o', 'r', 'e'); }
+
 private:
     friend struct Locale;  // for calcScoreFor
 
@@ -231,6 +237,8 @@
     uint8_t getUnionOfSubScriptBits() const { return mUnionOfSubScriptBits; }
     bool isAllTheSameLocale() const { return mIsAllTheSameLocale; }
 
+    bool hasScript(char c1, char c2, char c3, char c4) const;
+
     // Do not copy and assign.
     LocaleList(const LocaleList&) = delete;
     void operator=(const LocaleList&) = delete;
diff --git a/libs/minikin/MeasuredText.cpp b/libs/minikin/MeasuredText.cpp
index 33dab38..8a37dc7 100644
--- a/libs/minikin/MeasuredText.cpp
+++ b/libs/minikin/MeasuredText.cpp
@@ -17,32 +17,40 @@
 #define LOG_TAG "Minikin"
 #include "minikin/MeasuredText.h"
 
-#include "minikin/Layout.h"
-
 #include "BidiUtils.h"
 #include "LayoutSplitter.h"
 #include "LayoutUtils.h"
 #include "LineBreakerUtil.h"
+#include "minikin/Characters.h"
+#include "minikin/Layout.h"
 
 namespace minikin {
 
 // Helper class for composing character advances.
 class AdvancesCompositor {
 public:
-    AdvancesCompositor(std::vector<float>* outAdvances, LayoutPieces* outPieces)
-            : mOutAdvances(outAdvances), mOutPieces(outPieces) {}
+    AdvancesCompositor(std::vector<float>* outAdvances, std::vector<uint8_t>* flags,
+                       LayoutPieces* outPieces)
+            : mOutAdvances(outAdvances), mFlags(flags), mOutPieces(outPieces) {}
 
     void setNextRange(const Range& range, bool dir) {
         mRange = range;
         mDir = dir;
     }
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& paint) {
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& paint,
+                    const MinikinRect& bounds) {
         const std::vector<float>& advances = layoutPiece.advances();
         std::copy(advances.begin(), advances.end(), mOutAdvances->begin() + mRange.getStart());
 
+        if (bounds.mLeft < 0 || bounds.mRight > layoutPiece.advance()) {
+            for (uint32_t i : mRange) {
+                (*mFlags)[i] |= MeasuredText::MAY_OVERHANG_BIT;
+            }
+        }
+
         if (mOutPieces != nullptr) {
-            mOutPieces->insert(mRange, 0 /* no edit */, layoutPiece, mDir, paint);
+            mOutPieces->insert(mRange, 0 /* no edit */, layoutPiece, mDir, paint, bounds);
         }
     }
 
@@ -50,12 +58,14 @@
     Range mRange;
     bool mDir;
     std::vector<float>* mOutAdvances;
+    std::vector<uint8_t>* mFlags;
     LayoutPieces* mOutPieces;
 };
 
 void StyleRun::getMetrics(const U16StringPiece& textBuf, std::vector<float>* advances,
-                          LayoutPieces* precomputed, LayoutPieces* outPieces) const {
-    AdvancesCompositor compositor(advances, outPieces);
+                          std::vector<uint8_t>* flags, LayoutPieces* precomputed,
+                          bool boundsCalculation, LayoutPieces* outPieces) const {
+    AdvancesCompositor compositor(advances, flags, outPieces);
     const Bidi bidiFlag = mIsRtl ? Bidi::FORCE_RTL : Bidi::FORCE_LTR;
     const uint32_t paintId =
             (precomputed == nullptr) ? LayoutPieces::kNoPaintId : precomputed->findPaintId(mPaint);
@@ -65,11 +75,12 @@
             if (paintId == LayoutPieces::kNoPaintId) {
                 LayoutCache::getInstance().getOrCreate(
                         textBuf.substr(context), piece - context.getStart(), mPaint, info.isRtl,
-                        StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, compositor);
+                        StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, boundsCalculation,
+                        compositor);
             } else {
                 precomputed->getOrCreate(textBuf, piece, context, mPaint, info.isRtl,
                                          StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, paintId,
-                                         compositor);
+                                         boundsCalculation, compositor);
             }
         }
     }
@@ -80,7 +91,7 @@
 public:
     TotalAdvancesCompositor() : mOut(0) {}
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint&) {
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint&, const MinikinRect&) {
         for (float w : layoutPiece.advances()) {
             mOut += w;
         }
@@ -100,7 +111,7 @@
         for (const auto [context, piece] : LayoutSplitter(textBuf, info.range, info.isRtl)) {
             layoutCache.getOrCreate(textBuf.substr(context), piece - context.getStart(), mPaint,
                                     info.isRtl, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT,
-                                    compositor);
+                                    false /* bounds calculation */, compositor);
         }
     }
     return compositor.getTotalAdvance();
@@ -117,10 +128,11 @@
         mDir = dir;
     }
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& paint) {
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& paint,
+                    const MinikinRect& bounds) {
         mTotalAdvance += layoutPiece.advance();
         if (mOutPieces != nullptr) {
-            mOutPieces->insert(mRange, mEdit, layoutPiece, mDir, paint);
+            mOutPieces->insert(mRange, mEdit, layoutPiece, mDir, paint, bounds);
         }
     }
 
@@ -147,16 +159,17 @@
                     piece.getEnd() == range.getEnd() ? endHyphen : EndHyphenEdit::NO_EDIT;
 
             compositor.setNextContext(piece, packHyphenEdit(startEdit, endEdit), info.isRtl);
-            LayoutCache::getInstance().getOrCreate(textBuf.substr(context),
-                                                   piece - context.getStart(), mPaint, info.isRtl,
-                                                   startEdit, endEdit, compositor);
+            LayoutCache::getInstance().getOrCreate(
+                    textBuf.substr(context), piece - context.getStart(), mPaint, info.isRtl,
+                    startEdit, endEdit, false /* bounds calculation */, compositor);
         }
     }
     return compositor.advance();
 }
 
 void MeasuredText::measure(const U16StringPiece& textBuf, bool computeHyphenation,
-                           bool computeLayout, bool ignoreHyphenKerning, MeasuredText* hint) {
+                           bool computeLayout, bool computeBounds, bool ignoreHyphenKerning,
+                           MeasuredText* hint) {
     if (textBuf.size() == 0) {
         return;
     }
@@ -165,13 +178,14 @@
     CharProcessor proc(textBuf);
     for (const auto& run : runs) {
         const Range& range = run->getRange();
-        run->getMetrics(textBuf, &widths, hint ? &hint->layoutPieces : nullptr, piecesOut);
+        run->getMetrics(textBuf, &widths, &flags, hint ? &hint->layoutPieces : nullptr,
+                        computeBounds, piecesOut);
 
         if (!computeHyphenation || !run->canBreak()) {
             continue;
         }
 
-        proc.updateLocaleIfNecessary(*run);
+        proc.updateLocaleIfNecessary(*run, false /* forceWordStyleAutoToPhrase */);
         for (uint32_t i = range.getStart(); i < range.getEnd(); ++i) {
             // Even if the run is not a candidate of line break, treat the end of run as the line
             // break candidate.
@@ -198,7 +212,8 @@
 
     void setOutOffset(uint32_t outOffset) { mOutOffset = outOffset; }
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */) {
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */,
+                    const MinikinRect&) {
         mOutLayout->appendLayout(layoutPiece, mOutOffset, mExtraAdvance);
     }
 
@@ -212,6 +227,7 @@
                             const MinikinPaint& paint, uint32_t outOrigin,
                             StartHyphenEdit startHyphen, EndHyphenEdit endHyphen,
                             Layout* outLayout) const {
+    bool boundsCalculation = false;
     float wordSpacing = range.getLength() == 1 && isWordSpace(textBuf[range.getStart()])
                                 ? mPaint.wordSpacing
                                 : 0;
@@ -230,11 +246,11 @@
 
             if (canUsePrecomputedResult) {
                 pieces.getOrCreate(textBuf, piece, context, mPaint, info.isRtl, startEdit, endEdit,
-                                   paintId, compositor);
+                                   paintId, boundsCalculation, compositor);
             } else {
-                LayoutCache::getInstance().getOrCreate(textBuf.substr(context),
-                                                       piece - context.getStart(), paint,
-                                                       info.isRtl, startEdit, endEdit, compositor);
+                LayoutCache::getInstance().getOrCreate(
+                        textBuf.substr(context), piece - context.getStart(), paint, info.isRtl,
+                        startEdit, endEdit, boundsCalculation, compositor);
             }
         }
     }
@@ -245,20 +261,9 @@
 public:
     BoundsCompositor() : mAdvance(0) {}
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& paint) {
-        MinikinRect pieceBounds;
-        MinikinRect tmpRect;
-        for (uint32_t i = 0; i < layoutPiece.glyphCount(); ++i) {
-            const FakedFont& font = layoutPiece.fontAt(i);
-            const Point& point = layoutPiece.pointAt(i);
-
-            MinikinFont* minikinFont = font.font->typeface().get();
-            minikinFont->GetBounds(&tmpRect, layoutPiece.glyphIdAt(i), paint, font.fakery);
-            tmpRect.offset(point.x, point.y);
-            pieceBounds.join(tmpRect);
-        }
-        pieceBounds.offset(mAdvance, 0);
-        mBounds.join(pieceBounds);
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */,
+                    const MinikinRect& bounds) {
+        mBounds.join(bounds, mAdvance, 0);
         mAdvance += layoutPiece.advance();
     }
 
@@ -279,7 +284,7 @@
         for (const auto[context, piece] : LayoutSplitter(textBuf, info.range, info.isRtl)) {
             pieces.getOrCreate(textBuf, piece, context, mPaint, info.isRtl,
                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, paintId,
-                               compositor);
+                               true /* bounds calculation */, compositor);
         }
     }
     return std::make_pair(compositor.advance(), compositor.bounds());
@@ -290,7 +295,8 @@
 public:
     ExtentCompositor() {}
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */) {
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */,
+                    const MinikinRect&) {
         mExtent.extendBy(layoutPiece.extent());
     }
 
@@ -309,12 +315,42 @@
         for (const auto[context, piece] : LayoutSplitter(textBuf, info.range, info.isRtl)) {
             pieces.getOrCreate(textBuf, piece, context, mPaint, info.isRtl,
                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, paintId,
-                               compositor);
+                               false /* bounds calculation */, compositor);
         }
     }
     return compositor.extent();
 }
 
+class LineMetricsCompositor {
+public:
+    LineMetricsCompositor() {}
+
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */,
+                    const MinikinRect& bounds) {
+        mMetrics.append(layoutPiece.extent(), bounds, layoutPiece.advance());
+    }
+
+    const LineMetrics& metrics() const { return mMetrics; }
+
+private:
+    LineMetrics mMetrics;
+};
+
+LineMetrics StyleRun::getLineMetrics(const U16StringPiece& textBuf, const Range& range,
+                                     const LayoutPieces& pieces) const {
+    LineMetricsCompositor compositor;
+    Bidi bidiFlag = mIsRtl ? Bidi::FORCE_RTL : Bidi::FORCE_LTR;
+    const uint32_t paintId = pieces.findPaintId(mPaint);
+    for (const BidiText::RunInfo info : BidiText(textBuf, range, bidiFlag)) {
+        for (const auto [context, piece] : LayoutSplitter(textBuf, info.range, info.isRtl)) {
+            pieces.getOrCreate(textBuf, piece, context, mPaint, info.isRtl,
+                               StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, paintId,
+                               true /* bounds calculation */, compositor);
+        }
+    }
+    return compositor.metrics();
+}
+
 Layout MeasuredText::buildLayout(const U16StringPiece& textBuf, const Range& range,
                                  const Range& contextRange, const MinikinPaint& paint,
                                  StartHyphenEdit startHyphen, EndHyphenEdit endHyphen) {
@@ -346,8 +382,7 @@
         }
         auto[advance, bounds] =
                 run->getBounds(textBuf, Range::intersection(runRange, range), layoutPieces);
-        bounds.offset(totalAdvance, 0);
-        rect.join(bounds);
+        rect.join(bounds, totalAdvance, 0);
         totalAdvance += advance;
     }
     return rect;
@@ -360,11 +395,23 @@
         if (!Range::intersects(range, runRange)) {
             continue;
         }
-        MinikinExtent runExtent =
-                run->getExtent(textBuf, Range::intersection(runRange, range), layoutPieces);
-        extent.extendBy(runExtent);
+        extent.extendBy(
+                run->getExtent(textBuf, Range::intersection(runRange, range), layoutPieces));
     }
     return extent;
 }
 
+LineMetrics MeasuredText::getLineMetrics(const U16StringPiece& textBuf, const Range& range) const {
+    LineMetrics metrics;
+    for (const auto& run : runs) {
+        const Range& runRange = run->getRange();
+        if (!Range::intersects(range, runRange)) {
+            continue;
+        }
+        metrics.append(
+                run->getLineMetrics(textBuf, Range::intersection(runRange, range), layoutPieces));
+    }
+    return metrics;
+}
+
 }  // namespace minikin
diff --git a/libs/minikin/Measurement.cpp b/libs/minikin/Measurement.cpp
index 968ab6f..7797faa 100644
--- a/libs/minikin/Measurement.cpp
+++ b/libs/minikin/Measurement.cpp
@@ -21,8 +21,8 @@
 
 #include "BidiUtils.h"
 #include "LayoutSplitter.h"
-#include "minikin/BoundsCache.h"
 #include "minikin/GraphemeBreak.h"
+#include "minikin/LayoutCache.h"
 
 namespace {
 bool isAsciiOrBidiControlCharacter(uint16_t c) {
@@ -194,11 +194,10 @@
 struct BoundsComposer {
     BoundsComposer() : mAdvance(0) {}
 
-    void operator()(const MinikinRect& rect, float advance) {
-        MinikinRect tmp = rect;
-        tmp.offset(mAdvance, 0);
-        mBounds.join(tmp);
-        mAdvance += advance;
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint& /* paint */,
+                    const MinikinRect& bounds) {
+        mBounds.join(bounds, mAdvance, 0);
+        mAdvance += layoutPiece.advance();
     }
 
     float mAdvance;
@@ -215,9 +214,9 @@
                     (piece.getStart() == range.getStart()) ? startHyphen : StartHyphenEdit::NO_EDIT;
             const EndHyphenEdit pieceEndHyphen =
                     (piece.getEnd() == range.getEnd()) ? endHyphen : EndHyphenEdit::NO_EDIT;
-            BoundsCache::getInstance().getOrCreate(str.substr(context), piece - context.getStart(),
-                                                   paint, info.isRtl, pieceStartHyphen,
-                                                   pieceEndHyphen, bc);
+            LayoutCache::getInstance().getOrCreate(
+                    str.substr(context), piece - context.getStart(), paint, info.isRtl,
+                    pieceStartHyphen, pieceEndHyphen, true /* bounds calculation */, bc);
             // Increment word spacing for spacer
             if (piece.getLength() == 1 && isWordSpace(str[piece.getStart()])) {
                 bc.mAdvance += paint.wordSpacing;
@@ -230,7 +229,7 @@
 struct ExtentComposer {
     ExtentComposer() {}
 
-    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint&) {
+    void operator()(const LayoutPiece& layoutPiece, const MinikinPaint&, const MinikinRect&) {
         extent.extendBy(layoutPiece.extent());
     }
 
@@ -242,9 +241,10 @@
     ExtentComposer composer;
     for (const BidiText::RunInfo info : BidiText(textBuf, range, bidiFlag)) {
         for (const auto [context, piece] : LayoutSplitter(textBuf, info.range, info.isRtl)) {
-            LayoutCache::getInstance().getOrCreate(
-                    textBuf.substr(context), piece - context.getStart(), paint, info.isRtl,
-                    StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, composer);
+            LayoutCache::getInstance().getOrCreate(textBuf.substr(context),
+                                                   piece - context.getStart(), paint, info.isRtl,
+                                                   StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT,
+                                                   false /* bounds calculation */, composer);
         }
     }
     return composer.extent;
diff --git a/libs/minikin/MinikinInternal.cpp b/libs/minikin/MinikinInternal.cpp
index d02f71f..5b81406 100644
--- a/libs/minikin/MinikinInternal.cpp
+++ b/libs/minikin/MinikinInternal.cpp
@@ -17,9 +17,12 @@
 
 #define LOG_TAG "Minikin"
 
+#include "MinikinInternal.h"
+
 #include <log/log.h>
 
-#include "MinikinInternal.h"
+#include "FeatureFlags.h"
+#include "minikin/MinikinPaint.h"
 
 namespace minikin {
 
@@ -45,4 +48,12 @@
     return isBMPVariationSelector(codePoint) || isVariationSelectorSupplement(codePoint);
 }
 
+bool MinikinPaint::skipCache() const {
+    if (features::inter_character_justification()) {
+        return false;  // if the flag is on, do not skip the cache.
+    } else {
+        return !fontFeatureSettings.empty();
+    }
+}
+
 }  // namespace minikin
diff --git a/libs/minikin/OptimalLineBreaker.cpp b/libs/minikin/OptimalLineBreaker.cpp
index b05a94d..1d11532 100644
--- a/libs/minikin/OptimalLineBreaker.cpp
+++ b/libs/minikin/OptimalLineBreaker.cpp
@@ -19,11 +19,7 @@
 #include <algorithm>
 #include <limits>
 
-#include "minikin/Characters.h"
-#include "minikin/Layout.h"
-#include "minikin/Range.h"
-#include "minikin/U16StringPiece.h"
-
+#include "FeatureFlags.h"
 #include "HyphenatorMap.h"
 #include "LayoutUtils.h"
 #include "LineBreakerUtil.h"
@@ -31,6 +27,10 @@
 #include "LocaleListCache.h"
 #include "MinikinInternal.h"
 #include "WordBreaker.h"
+#include "minikin/Characters.h"
+#include "minikin/Layout.h"
+#include "minikin/Range.h"
+#include "minikin/U16StringPiece.h"
 
 namespace minikin {
 
@@ -41,6 +41,7 @@
 constexpr float SCORE_INFTY = std::numeric_limits<float>::max();
 constexpr float SCORE_OVERFULL = 1e12f;
 constexpr float SCORE_DESPERATE = 1e10f;
+constexpr float SCORE_FALLBACK = 1e6f;
 
 // Multiplier for hyphen penalty on last line.
 constexpr float LAST_LINE_PENALTY_MULTIPLIER = 4.0f;
@@ -96,12 +97,13 @@
     // fonts), it's only guaranteed to pick one.
     float spaceWidth = 0.0f;
 
+    bool retryWithPhraseWordBreak = false;
+
     // Append desperate break point to the candidates.
-    inline void pushDesperate(uint32_t offset, ParaWidth sumOfCharWidths, uint32_t spaceCount,
-                              bool isRtl) {
-        candidates.emplace_back(offset, sumOfCharWidths, sumOfCharWidths, SCORE_DESPERATE,
-                                spaceCount, spaceCount,
-                                HyphenationType::BREAK_AND_DONT_INSERT_HYPHEN, isRtl);
+    inline void pushDesperate(uint32_t offset, ParaWidth sumOfCharWidths, float score,
+                              uint32_t spaceCount, bool isRtl) {
+        candidates.emplace_back(offset, sumOfCharWidths, sumOfCharWidths, score, spaceCount,
+                                spaceCount, HyphenationType::BREAK_AND_DONT_INSERT_HYPHEN, isRtl);
     }
 
     // Append hyphenation break point to the candidates.
@@ -156,23 +158,56 @@
     // The sum of the character width from the beginning of the word.
     ParaWidth sumOfChars;
 
-    DesperateBreak(uint32_t offset, ParaWidth sumOfChars)
-            : offset(offset), sumOfChars(sumOfChars){};
+    float score;
+
+    DesperateBreak(uint32_t offset, ParaWidth sumOfChars, float score)
+            : offset(offset), sumOfChars(sumOfChars), score(score){};
 };
 
 // Retrieves desperate break points from a word.
-std::vector<DesperateBreak> populateDesperatePoints(const MeasuredText& measured,
-                                                    const Range& range) {
+std::vector<DesperateBreak> populateDesperatePoints(const U16StringPiece& textBuf,
+                                                    const MeasuredText& measured,
+                                                    const Range& range, const Run& run) {
     std::vector<DesperateBreak> out;
-    ParaWidth width = measured.widths[range.getStart()];
-    for (uint32_t i = range.getStart() + 1; i < range.getEnd(); ++i) {
-        const float w = measured.widths[i];
-        if (w == 0) {
-            continue;  // w == 0 means here is not a grapheme bounds. Don't break here.
+
+    if (!features::phrase_strict_fallback() ||
+        run.lineBreakWordStyle() == LineBreakWordStyle::None) {
+        ParaWidth width = measured.widths[range.getStart()];
+        for (uint32_t i = range.getStart() + 1; i < range.getEnd(); ++i) {
+            const float w = measured.widths[i];
+            if (w == 0) {
+                continue;  // w == 0 means here is not a grapheme bounds. Don't break here.
+            }
+            out.emplace_back(i, width, SCORE_DESPERATE);
+            width += w;
         }
-        out.emplace_back(i, width);
-        width += w;
+    } else {
+        WordBreaker wb;
+        wb.setText(textBuf.data(), textBuf.length());
+        ssize_t next = wb.followingWithLocale(getEffectiveLocale(run.getLocaleListId()),
+                                              run.lineBreakStyle(), LineBreakWordStyle::None,
+                                              range.getStart());
+
+        const bool calculateFallback = range.contains(next);
+        ParaWidth width = measured.widths[range.getStart()];
+        for (uint32_t i = range.getStart() + 1; i < range.getEnd(); ++i) {
+            const float w = measured.widths[i];
+            if (w == 0) {
+                continue;  // w == 0 means here is not a grapheme bounds. Don't break here.
+            }
+            if (calculateFallback && i == (uint32_t)next) {
+                out.emplace_back(i, width, SCORE_FALLBACK);
+                next = wb.next();
+                if (!range.contains(next)) {
+                    break;
+                }
+            } else {
+                out.emplace_back(i, width, SCORE_DESPERATE);
+            }
+            width += w;
+        }
     }
+
     return out;
 }
 
@@ -192,7 +227,7 @@
         // breaks first.
         if (d != desperates.end() && (hyIter == endHyIter || d->offset <= hyIter->offset)) {
             out->pushDesperate(d->offset, proc.sumOfCharWidthsAtPrevWordBreak + d->sumOfChars,
-                               proc.effectiveSpaceCount, isRtl);
+                               d->score, proc.effectiveSpaceCount, isRtl);
             d++;
         } else {
             out->pushHyphenation(hyIter->offset, proc.sumOfCharWidths - hyIter->second,
@@ -206,7 +241,7 @@
 // Enumerate all line break candidates.
 OptimizeContext populateCandidates(const U16StringPiece& textBuf, const MeasuredText& measured,
                                    const LineWidth& lineWidth, HyphenationFrequency frequency,
-                                   bool isJustified) {
+                                   bool isJustified, bool forceWordStyleAutoToPhrase) {
     const ParaWidth minLineWidth = lineWidth.getMin();
     CharProcessor proc(textBuf);
 
@@ -227,7 +262,7 @@
             result.linePenalty = std::max(penalties.second, result.linePenalty);
         }
 
-        proc.updateLocaleIfNecessary(*run);
+        proc.updateLocaleIfNecessary(*run, forceWordStyleAutoToPhrase);
 
         for (uint32_t i = range.getStart(); i < range.getEnd(); ++i) {
             MINIKIN_ASSERT(textBuf[i] != CHAR_TAB, "TAB is not supported in optimal line breaker");
@@ -252,9 +287,10 @@
                 hyIter++;
             }
             if (proc.widthFromLastWordBreak() > minLineWidth) {
-                desperateBreaks = populateDesperatePoints(measured, contextRange);
+                desperateBreaks = populateDesperatePoints(textBuf, measured, contextRange, *run);
             }
-            appendWithMerging(beginHyIter, doHyphenation ? hyIter : beginHyIter, desperateBreaks,
+            const bool doHyphenationRun = doHyphenation && run->canHyphenate();
+            appendWithMerging(beginHyIter, doHyphenationRun ? hyIter : beginHyIter, desperateBreaks,
                               proc, hyphenPenalty, isRtl, &result);
 
             // We skip breaks for zero-width characters inside replacement spans.
@@ -267,6 +303,7 @@
         }
     }
     result.spaceWidth = proc.spaceWidth;
+    result.retryWithPhraseWordBreak = proc.retryWithPhraseWordBreak;
     return result;
 }
 
@@ -276,7 +313,7 @@
 
     LineBreakResult computeBreaks(const OptimizeContext& context, const U16StringPiece& textBuf,
                                   const MeasuredText& measuredText, const LineWidth& lineWidth,
-                                  BreakStrategy strategy, bool justified);
+                                  BreakStrategy strategy, bool justified, bool useBoundsForWidth);
 
 private:
     // Data used to compute optimal line breaks
@@ -287,14 +324,15 @@
     };
     LineBreakResult finishBreaksOptimal(const U16StringPiece& textBuf, const MeasuredText& measured,
                                         const std::vector<OptimalBreaksData>& breaksData,
-                                        const std::vector<Candidate>& candidates);
+                                        const std::vector<Candidate>& candidates,
+                                        bool useBoundsForWidth);
 };
 
 // Follow "prev" links in candidates array, and copy to result arrays.
 LineBreakResult LineBreakOptimizer::finishBreaksOptimal(
         const U16StringPiece& textBuf, const MeasuredText& measured,
-        const std::vector<OptimalBreaksData>& breaksData,
-        const std::vector<Candidate>& candidates) {
+        const std::vector<OptimalBreaksData>& breaksData, const std::vector<Candidate>& candidates,
+        bool useBoundsForWidth) {
     LineBreakResult result;
     const uint32_t nCand = candidates.size();
     uint32_t prevIndex;
@@ -305,9 +343,28 @@
 
         result.breakPoints.push_back(cand.offset);
         result.widths.push_back(cand.postBreak - prev.preBreak);
-        MinikinExtent extent = measured.getExtent(textBuf, Range(prev.offset, cand.offset));
-        result.ascents.push_back(extent.ascent);
-        result.descents.push_back(extent.descent);
+        if (useBoundsForWidth) {
+            Range range = Range(prev.offset, cand.offset);
+            Range actualRange = trimTrailingLineEndSpaces(textBuf, range);
+            if (actualRange.isEmpty()) {
+                MinikinExtent extent = measured.getExtent(textBuf, range);
+                result.ascents.push_back(extent.ascent);
+                result.descents.push_back(extent.descent);
+                result.bounds.emplace_back(0, extent.ascent, cand.postBreak - prev.preBreak,
+                                           extent.descent);
+            } else {
+                LineMetrics metrics = measured.getLineMetrics(textBuf, actualRange);
+                result.ascents.push_back(metrics.extent.ascent);
+                result.descents.push_back(metrics.extent.descent);
+                result.bounds.emplace_back(metrics.bounds);
+            }
+        } else {
+            MinikinExtent extent = measured.getExtent(textBuf, Range(prev.offset, cand.offset));
+            result.ascents.push_back(extent.ascent);
+            result.descents.push_back(extent.descent);
+            result.bounds.emplace_back(0, extent.ascent, cand.postBreak - prev.preBreak,
+                                       extent.descent);
+        }
 
         const HyphenEdit edit =
                 packHyphenEdit(editForNextLine(prev.hyphenType), editForThisLine(cand.hyphenType));
@@ -321,7 +378,8 @@
                                                   const U16StringPiece& textBuf,
                                                   const MeasuredText& measured,
                                                   const LineWidth& lineWidth,
-                                                  BreakStrategy strategy, bool justified) {
+                                                  BreakStrategy strategy, bool justified,
+                                                  bool useBoundsForWidth) {
     const std::vector<Candidate>& candidates = context.candidates;
     uint32_t active = 0;
     const uint32_t nCand = candidates.size();
@@ -357,7 +415,25 @@
             }
             const float jScore = breaksData[j].score;
             if (jScore + bestHope >= best) continue;
-            const float delta = candidates[j].preBreak - leftEdge;
+            float delta = candidates[j].preBreak - leftEdge;
+
+            if (useBoundsForWidth) {
+                // FIXME: Support bounds based line break for hyphenated break point.
+                if (candidates[i].hyphenType == HyphenationType::DONT_BREAK &&
+                    candidates[j].hyphenType == HyphenationType::DONT_BREAK) {
+                    if (delta >= 0) {
+                        Range range = Range(candidates[j].offset, candidates[i].offset);
+                        Range actualRange = trimTrailingLineEndSpaces(textBuf, range);
+                        if (!actualRange.isEmpty() && measured.hasOverhang(range)) {
+                            float boundsDelta =
+                                    width - measured.getBounds(textBuf, actualRange).width();
+                            if (boundsDelta < 0) {
+                                delta = boundsDelta;
+                            }
+                        }
+                    }
+                }
+            }
 
             // compute width score for line
 
@@ -399,21 +475,52 @@
                               bestPrev,                                            // prev
                               breaksData[bestPrev].lineNumber + 1});               // lineNumber
     }
-    return finishBreaksOptimal(textBuf, measured, breaksData, candidates);
+    return finishBreaksOptimal(textBuf, measured, breaksData, candidates, useBoundsForWidth);
 }
 
 }  // namespace
 
 LineBreakResult breakLineOptimal(const U16StringPiece& textBuf, const MeasuredText& measured,
                                  const LineWidth& lineWidth, BreakStrategy strategy,
-                                 HyphenationFrequency frequency, bool justified) {
+                                 HyphenationFrequency frequency, bool justified,
+                                 bool useBoundsForWidth) {
     if (textBuf.size() == 0) {
         return LineBreakResult();
     }
+
     const OptimizeContext context =
-            populateCandidates(textBuf, measured, lineWidth, frequency, justified);
+            populateCandidates(textBuf, measured, lineWidth, frequency, justified,
+                               false /* forceWordStyleAutoToPhrase */);
     LineBreakOptimizer optimizer;
-    return optimizer.computeBreaks(context, textBuf, measured, lineWidth, strategy, justified);
+    LineBreakResult res = optimizer.computeBreaks(context, textBuf, measured, lineWidth, strategy,
+                                                  justified, useBoundsForWidth);
+
+    if (!features::word_style_auto()) {
+        return res;
+    }
+
+    // The line breaker says that retry with phrase based word break because of the auto option and
+    // given locales.
+    if (!context.retryWithPhraseWordBreak) {
+        return res;
+    }
+
+    // If the line break result is more than heuristics threshold, don't try pharse based word
+    // break.
+    if (res.breakPoints.size() >= LBW_AUTO_HEURISTICS_LINE_COUNT) {
+        return res;
+    }
+
+    const OptimizeContext phContext =
+            populateCandidates(textBuf, measured, lineWidth, frequency, justified,
+                               true /* forceWordStyleAutoToPhrase */);
+    LineBreakResult res2 = optimizer.computeBreaks(phContext, textBuf, measured, lineWidth,
+                                                   strategy, justified, useBoundsForWidth);
+    if (res2.breakPoints.size() < LBW_AUTO_HEURISTICS_LINE_COUNT) {
+        return res2;
+    } else {
+        return res;
+    }
 }
 
 }  // namespace minikin
diff --git a/libs/minikin/OptimalLineBreaker.h b/libs/minikin/OptimalLineBreaker.h
index f13e2a8..da7798d 100644
--- a/libs/minikin/OptimalLineBreaker.h
+++ b/libs/minikin/OptimalLineBreaker.h
@@ -25,7 +25,8 @@
 
 LineBreakResult breakLineOptimal(const U16StringPiece& textBuf, const MeasuredText& measured,
                                  const LineWidth& lineWidthLimits, BreakStrategy strategy,
-                                 HyphenationFrequency frequency, bool justified);
+                                 HyphenationFrequency frequency, bool justified,
+                                 bool useBoundsForWidth);
 
 }  // namespace minikin
 
diff --git a/libs/minikin/ScriptUtils.cpp b/libs/minikin/ScriptUtils.cpp
new file mode 100644
index 0000000..90bd5de
--- /dev/null
+++ b/libs/minikin/ScriptUtils.cpp
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "Minikin"
+
+#include "ScriptUtils.h"
+
+#include <unicode/ubidi.h>
+#include <unicode/uscript.h>
+#include <unicode/utf16.h>
+#include <unicode/utypes.h>
+
+#include <algorithm>
+
+#include "MinikinInternal.h"
+#include "minikin/Emoji.h"
+
+namespace minikin {
+
+static hb_codepoint_t decodeUtf16(U16StringPiece text, Range range, uint32_t pos) {
+    uint32_t result;
+    U16_NEXT(text.data(), pos, range.getEnd(), result);
+    if (U_IS_SURROGATE(result)) {  // isolated surrogate
+        result = CHAR_REPLACEMENT_CHARACTER;
+    }
+    return static_cast<hb_codepoint_t>(result);
+}
+
+static UScriptCode getICUScript(uint32_t cp) {
+    UErrorCode status = U_ZERO_ERROR;
+    UScriptCode scriptCode = uscript_getScript(cp, &status);
+    if (U_FAILURE(status)) [[unlikely]] {
+        return USCRIPT_INVALID_CODE;
+    }
+    return scriptCode;
+}
+
+static hb_script_t getHbScript(uint32_t cp) {
+    hb_unicode_funcs_t* unicode_func = hb_unicode_funcs_get_default();
+    return hb_unicode_script(unicode_func, cp);
+}
+
+// static
+std::pair<uint32_t, hb_script_t> ScriptText::getScriptRun(U16StringPiece text, Range range,
+                                                          uint32_t pos) {
+    if (!range.contains(pos)) {
+        return std::make_pair(range.getEnd(), HB_SCRIPT_UNKNOWN);
+    }
+
+    uint32_t cp = decodeUtf16(text, range, pos);
+    UScriptCode current_script = getICUScript(cp);
+    hb_script_t current_hb_script = getHbScript(cp);
+    uint32_t i;
+    for (i = pos + U16_LENGTH(cp); i < range.getEnd(); i += U16_LENGTH(cp)) {
+        cp = decodeUtf16(text, range, i);
+        UScriptCode next_script = getICUScript(cp);
+        if (current_script != next_script) {
+            if (current_script == USCRIPT_INHERITED || current_script == USCRIPT_COMMON) {
+                current_script = next_script;
+                current_hb_script = getHbScript(cp);
+            } else if (next_script == USCRIPT_INHERITED || next_script == USCRIPT_COMMON) {
+                continue;
+            } else {
+                break;
+            }
+        }
+    }
+    if (current_script == USCRIPT_INHERITED) {
+        return std::make_pair(i, HB_SCRIPT_COMMON);
+    } else {
+        return std::make_pair(i, current_hb_script);
+    }
+}
+
+}  // namespace minikin
diff --git a/libs/minikin/ScriptUtils.h b/libs/minikin/ScriptUtils.h
new file mode 100644
index 0000000..7bf575f
--- /dev/null
+++ b/libs/minikin/ScriptUtils.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MINIKIN_SCRIPT_UTILS_H
+#define MINIKIN_SCRIPT_UTILS_H
+
+#define LOG_TAG "Minikin"
+
+#include <unicode/ubidi.h>
+
+#include <memory>
+
+#include "minikin/Layout.h"
+#include "minikin/Macros.h"
+#include "minikin/U16StringPiece.h"
+
+namespace minikin {
+
+// A helper class for iterating the bidi run transitions.
+class ScriptText {
+public:
+    struct RunInfo {
+        Range range;
+        hb_script_t script;
+    };
+
+    ScriptText(const U16StringPiece& textBuf, uint32_t start, uint32_t end)
+            : mTextBuf(textBuf), mRange(start, end) {}
+
+    class iterator {
+    public:
+        inline bool operator==(const iterator& o) const {
+            return mStart == o.mStart && mParent == o.mParent;
+        }
+
+        inline bool operator!=(const iterator& o) const { return !(*this == o); }
+
+        inline std::pair<Range, hb_script_t> operator*() const {
+            return std::make_pair(Range(mStart, mEnd), mScript);
+        }
+
+        inline iterator& operator++() {
+            mStart = mEnd;
+            std::tie(mEnd, mScript) = getScriptRun(mParent->mTextBuf, mParent->mRange, mStart);
+            return *this;
+        }
+
+    private:
+        friend class ScriptText;
+
+        iterator(const ScriptText* parent, uint32_t start) : mParent(parent), mStart(start) {
+            std::tie(mEnd, mScript) = getScriptRun(mParent->mTextBuf, mParent->mRange, mStart);
+        }
+
+        const ScriptText* mParent;
+        uint32_t mStart;
+        uint32_t mEnd;
+        hb_script_t mScript;
+    };
+
+    inline iterator begin() const { return iterator(this, mRange.getStart()); }
+    inline iterator end() const { return iterator(this, mRange.getEnd()); }
+
+private:
+    U16StringPiece mTextBuf;
+    Range mRange;
+
+    static std::pair<uint32_t, hb_script_t> getScriptRun(U16StringPiece text, Range range,
+                                                         uint32_t pos);
+
+    MINIKIN_PREVENT_COPY_AND_ASSIGN(ScriptText);
+};
+
+}  // namespace minikin
+
+#endif  // MINIKIN_SCRIPT_UTILS_H
diff --git a/libs/minikin/StringPiece.h b/libs/minikin/StringPiece.h
index befb312..84c7d17 100644
--- a/libs/minikin/StringPiece.h
+++ b/libs/minikin/StringPiece.h
@@ -29,6 +29,7 @@
     StringPiece(const char* data) : mData(data), mLength(data == nullptr ? 0 : strlen(data)) {}
     StringPiece(const char* data, size_t length) : mData(data), mLength(length) {}
     StringPiece(const std::string& str) : mData(str.data()), mLength(str.size()) {}
+    StringPiece(std::string_view str) : mData(str.data()), mLength(str.size()) {}
 
     inline const char* data() const { return mData; }
     inline size_t length() const { return mLength; }
diff --git a/libs/minikin/WordBreaker.cpp b/libs/minikin/WordBreaker.cpp
index ae79d3c..a1e9526 100644
--- a/libs/minikin/WordBreaker.cpp
+++ b/libs/minikin/WordBreaker.cpp
@@ -32,20 +32,54 @@
 namespace minikin {
 
 namespace {
-static UBreakIterator* createNewIterator(const Locale& locale, LineBreakStyle lbStyle,
-                                         LineBreakWordStyle lbWordStyle) {
+static std::unique_ptr<BreakIterator> createNewIterator(const Locale& locale,
+                                                        LineBreakStyle lbStyle,
+                                                        LineBreakWordStyle lbWordStyle) {
+    MINIKIN_ASSERT(lbStyle != LineBreakStyle::Auto,
+                   "LineBreakStyle::Auto must be resolved beforehand.");
+    MINIKIN_ASSERT(lbWordStyle != LineBreakWordStyle::Auto,
+                   "LineBreakWordStyle::Auto must be resolved beforehand.");
+
     // TODO: handle failure status
-    UErrorCode status = U_ZERO_ERROR;
-    char localeID[ULOC_FULLNAME_CAPACITY] = {};
-    uloc_forLanguageTag(locale.getStringWithLineBreakOption(lbStyle, lbWordStyle).c_str(), localeID,
-                        ULOC_FULLNAME_CAPACITY, nullptr, &status);
-    return ubrk_open(UBreakIteratorType::UBRK_LINE, localeID, nullptr, 0, &status);
+    if (lbStyle == LineBreakStyle::NoBreak) {
+        return std::make_unique<NoBreakBreakIterator>();
+    } else {
+        UErrorCode status = U_ZERO_ERROR;
+        char localeID[ULOC_FULLNAME_CAPACITY] = {};
+        uloc_forLanguageTag(locale.getStringWithLineBreakOption(lbStyle, lbWordStyle).c_str(),
+                            localeID, ULOC_FULLNAME_CAPACITY, nullptr, &status);
+        IcuUbrkUniquePtr icuBrkPtr(
+                ubrk_open(UBreakIteratorType::UBRK_LINE, localeID, nullptr, 0, &status));
+        return std::make_unique<ICUBreakIterator>(std::move(icuBrkPtr));
+    }
 }
 }  // namespace
 
+void ICUBreakIterator::setText(UText* text, size_t) {
+    UErrorCode status = U_ZERO_ERROR;
+    ubrk_setUText(mBreaker.get(), text, &status);
+}
+
+bool ICUBreakIterator::isBoundary(int32_t i) {
+    return ubrk_isBoundary(mBreaker.get(), i);
+}
+
+int32_t ICUBreakIterator::following(size_t i) {
+    return ubrk_following(mBreaker.get(), i);
+}
+
+int32_t ICUBreakIterator::next() {
+    return ubrk_next(mBreaker.get());
+}
+
 ICULineBreakerPool::Slot ICULineBreakerPoolImpl::acquire(const Locale& locale,
                                                          LineBreakStyle lbStyle,
                                                          LineBreakWordStyle lbWordStyle) {
+    if (lbStyle == LineBreakStyle::Auto) {
+        lbStyle = locale.supportsScript('J', 'p', 'a', 'n') ? LineBreakStyle::Strict
+                                                            : LineBreakStyle::None;
+    }
+
     const uint64_t id = locale.getIdentifier();
     std::lock_guard<std::mutex> lock(mMutex);
     for (auto i = mPool.begin(); i != mPool.end(); i++) {
@@ -57,8 +91,7 @@
     }
 
     // Not found in pool. Create new one.
-    return {id, lbStyle, lbWordStyle,
-            IcuUbrkUniquePtr(createNewIterator(locale, lbStyle, lbWordStyle))};
+    return {id, lbStyle, lbWordStyle, createNewIterator(locale, lbStyle, lbWordStyle)};
 }
 
 void ICULineBreakerPoolImpl::release(ICULineBreakerPool::Slot&& slot) {
@@ -86,10 +119,9 @@
         return mCurrent;
     }
     mIcuBreaker = mPool->acquire(locale, lbStyle, lbWordStyle);
-    UErrorCode status = U_ZERO_ERROR;
     MINIKIN_ASSERT(mText != nullptr, "setText must be called first");
     // TODO: handle failure status
-    ubrk_setUText(mIcuBreaker.breaker.get(), mUText.get(), &status);
+    mIcuBreaker.breaker->setText(mUText.get(), mTextSize);
     if (mInEmailOrUrl) {
         // Note:
         // Don't reset mCurrent, mLast, or mScanOffset for keeping email/URL context.
@@ -171,9 +203,9 @@
 // Customized iteratorNext that takes care of both resets and our modifications
 // to ICU's behavior.
 int32_t WordBreaker::iteratorNext() {
-    int32_t result = ubrk_following(mIcuBreaker.breaker.get(), mCurrent);
+    int32_t result = mIcuBreaker.breaker->following(mCurrent);
     while (!isValidBreak(mText, mTextSize, result)) {
-        result = ubrk_next(mIcuBreaker.breaker.get());
+        result = mIcuBreaker.breaker->next();
     }
     return result;
 }
@@ -221,11 +253,11 @@
             }
         }
         if (state == SAW_AT || state == SAW_COLON_SLASH_SLASH) {
-            if (!ubrk_isBoundary(mIcuBreaker.breaker.get(), i)) {
+            if (!mIcuBreaker.breaker->isBoundary(i)) {
                 // If there are combining marks or such at the end of the URL or the email address,
                 // consider them a part of the URL or the email, and skip to the next actual
                 // boundary.
-                i = ubrk_following(mIcuBreaker.breaker.get(), i);
+                i = mIcuBreaker.breaker->following(i);
             }
             mInEmailOrUrl = true;
         } else {
diff --git a/libs/minikin/WordBreaker.h b/libs/minikin/WordBreaker.h
index c4af635..ccb3186 100644
--- a/libs/minikin/WordBreaker.h
+++ b/libs/minikin/WordBreaker.h
@@ -37,6 +37,16 @@
 
 namespace minikin {
 
+class BreakIterator {
+public:
+    BreakIterator() {}
+    virtual ~BreakIterator() {}
+    virtual void setText(UText* text, size_t size) = 0;
+    virtual bool isBoundary(int32_t i) = 0;
+    virtual int32_t following(size_t i) = 0;
+    virtual int32_t next() = 0;
+};
+
 // A class interface for providing pooling implementation of ICU's line breaker.
 // The implementation can be customized for testing purposes.
 class ICULineBreakerPool {
@@ -44,7 +54,7 @@
     struct Slot {
         Slot() : localeId(0), breaker(nullptr) {}
         Slot(uint64_t localeId, LineBreakStyle lbStyle, LineBreakWordStyle lbWordStyle,
-             IcuUbrkUniquePtr&& breaker)
+             std::unique_ptr<BreakIterator>&& breaker)
                 : localeId(localeId),
                   lbStyle(lbStyle),
                   lbWordStyle(lbWordStyle),
@@ -60,7 +70,7 @@
         uint64_t localeId;
         LineBreakStyle lbStyle;
         LineBreakWordStyle lbWordStyle;
-        IcuUbrkUniquePtr breaker;
+        std::unique_ptr<BreakIterator> breaker;
     };
     virtual ~ICULineBreakerPool() {}
     virtual Slot acquire(const Locale& locale, LineBreakStyle lbStyle,
@@ -95,6 +105,33 @@
     mutable std::mutex mMutex;
 };
 
+class ICUBreakIterator : public BreakIterator {
+public:
+    ICUBreakIterator(IcuUbrkUniquePtr&& breaker) : mBreaker(std::move(breaker)) {}
+    virtual ~ICUBreakIterator() {}
+    virtual void setText(UText* text, size_t size);
+    virtual bool isBoundary(int32_t i);
+    virtual int32_t following(size_t i);
+    virtual int32_t next();
+
+private:
+    IcuUbrkUniquePtr mBreaker;
+};
+
+class NoBreakBreakIterator : public BreakIterator {
+public:
+    NoBreakBreakIterator() {}
+    virtual ~NoBreakBreakIterator() {}
+
+    virtual void setText(UText*, size_t size) { mSize = size; }
+    virtual bool isBoundary(int32_t i) { return i == 0 || i == static_cast<int32_t>(mSize); }
+    virtual int32_t following(size_t) { return mSize; }
+    virtual int32_t next() { return mSize; }
+
+private:
+    size_t mSize = 0;
+};
+
 class WordBreaker {
 public:
     virtual ~WordBreaker() { finish(); }
diff --git a/tests/Android.bp b/tests/Android.bp
index 3088ca4..4611594 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -16,15 +16,18 @@
         "data/CustomExtent.ttf",
         "data/Emoji.ttf",
         "data/EmojiBase.ttf",
+        "data/Hangul.ttf",
         "data/Hiragana.ttf",
         "data/Italic.ttf",
         "data/Ja.ttf",
+        "data/Japanese.ttf",
         "data/Ko.ttf",
         "data/Ligature.ttf",
         "data/LayoutTestFont.ttf",
         "data/MultiAxis.ttf",
         "data/NoCmapFormat14.ttf",
         "data/NoGlyphFont.ttf",
+        "data/OvershootTest.ttf",
         "data/OverrideEmoji.ttf",
         "data/Regular.ttf",
         "data/TextEmojiFont.ttf",
@@ -32,6 +35,7 @@
         "data/UnicodeBMPOnly2.ttf",
         "data/UnicodeUCS4.ttf",
         "data/VariationSelectorTest-Regular.ttf",
+        "data/WeightEqualsEmVariableFont.ttf",
         "data/ZhHans.ttf",
         "data/ZhHant.ttf",
         "data/emoji.xml",
diff --git a/tests/data/Hangul.ttf b/tests/data/Hangul.ttf
new file mode 100644
index 0000000..1dff832
--- /dev/null
+++ b/tests/data/Hangul.ttf
Binary files differ
diff --git a/tests/data/Hangul.ttx b/tests/data/Hangul.ttx
new file mode 100644
index 0000000..ea17053
--- /dev/null
+++ b/tests/data/Hangul.ttx
@@ -0,0 +1,11819 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.0">
+
+  <GlyphOrder>
+    <GlyphID id="0" name=".notdef"/>
+    <GlyphID id="1" name="1em"/>
+  </GlyphOrder>
+
+  <head>
+    <tableVersion value="1.0"/>
+    <fontRevision value="1.0"/>
+    <checkSumAdjustment value="0x640cdb2f"/>
+    <magicNumber value="0x5f0f3cf5"/>
+    <flags value="00000000 00000011"/>
+    <unitsPerEm value="100"/>
+    <created value="Fri Mar 17 07:26:00 2017"/>
+    <macStyle value="00000000 00000000"/>
+    <lowestRecPPEM value="7"/>
+    <fontDirectionHint value="2"/>
+    <glyphDataFormat value="0"/>
+  </head>
+
+  <hhea>
+    <tableVersion value="0x00010000"/>
+    <ascent value="0"/>
+    <descent value="0"/>
+    <lineGap value="0"/>
+    <caretSlopeRise value="1"/>
+    <caretSlopeRun value="0"/>
+    <caretOffset value="0"/>
+    <reserved0 value="0"/>
+    <reserved1 value="0"/>
+    <reserved2 value="0"/>
+    <reserved3 value="0"/>
+    <metricDataFormat value="0"/>
+  </hhea>
+
+  <maxp>
+    <tableVersion value="0x10000"/>
+    <maxZones value="0"/>
+    <maxTwilightPoints value="0"/>
+    <maxStorage value="0"/>
+    <maxFunctionDefs value="0"/>
+    <maxInstructionDefs value="0"/>
+    <maxStackElements value="0"/>
+    <maxSizeOfInstructions value="0"/>
+    <maxComponentElements value="0"/>
+  </maxp>
+
+  <OS_2>
+    <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+         will be recalculated by the compiler -->
+    <version value="3"/>
+    <xAvgCharWidth value="594"/>
+    <usWeightClass value="400"/>
+    <usWidthClass value="5"/>
+    <fsType value="00000000 00001000"/>
+    <ySubscriptXSize value="650"/>
+    <ySubscriptYSize value="600"/>
+    <ySubscriptXOffset value="0"/>
+    <ySubscriptYOffset value="75"/>
+    <ySuperscriptXSize value="650"/>
+    <ySuperscriptYSize value="600"/>
+    <ySuperscriptXOffset value="0"/>
+    <ySuperscriptYOffset value="350"/>
+    <yStrikeoutSize value="50"/>
+    <yStrikeoutPosition value="300"/>
+    <sFamilyClass value="0"/>
+    <panose>
+      <bFamilyType value="0"/>
+      <bSerifStyle value="0"/>
+      <bWeight value="5"/>
+      <bProportion value="0"/>
+      <bContrast value="0"/>
+      <bStrokeVariation value="0"/>
+      <bArmStyle value="0"/>
+      <bLetterForm value="0"/>
+      <bMidline value="0"/>
+      <bXHeight value="0"/>
+    </panose>
+    <ulUnicodeRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+    <achVendID value="UKWN"/>
+    <fsSelection value="00000000 01000000"/>
+    <usFirstCharIndex value="32"/>
+    <usLastCharIndex value="122"/>
+    <sTypoAscender value="800"/>
+    <sTypoDescender value="-200"/>
+    <sTypoLineGap value="200"/>
+    <usWinAscent value="1000"/>
+    <usWinDescent value="200"/>
+    <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+    <sxHeight value="500"/>
+    <sCapHeight value="700"/>
+    <usDefaultChar value="0"/>
+    <usBreakChar value="32"/>
+    <usMaxContext value="0"/>
+  </OS_2>
+
+  <hmtx>
+    <mtx name=".notdef" width="50" lsb="0"/>
+    <mtx name="1em" width="100" lsb="0"/>
+  </hmtx>
+
+  <cmap>
+    <tableVersion version="0"/>
+    <cmap_format_12 format="12" reserved="0" length="6" nGroups="1" platformID="3" platEncID="10" language="0">
+      <map code="0x0020" name="1em" />
+      <map code="0x002E" name="1em" />
+
+      <!-- CJK Symbols -->
+      <map code="0x3000" name="1em" /> <!--  IDEOGRAPHIC SPACE -->
+      <map code="0x3001" name="1em" /> <!--  IDEOGRAPHIC COMMA -->
+      <map code="0x3002" name="1em" /> <!--  IDEOGRAPHIC FULL STOP -->
+
+      <!-- Hangul letters -->
+      <map code="0x1100" name="1em"/><!-- HANGUL CHOSEONG KIYEOK -->
+      <map code="0x1101" name="1em"/><!-- HANGUL CHOSEONG SSANGKIYEOK -->
+      <map code="0x1102" name="1em"/><!-- HANGUL CHOSEONG NIEUN -->
+      <map code="0x1103" name="1em"/><!-- HANGUL CHOSEONG TIKEUT -->
+      <map code="0x1104" name="1em"/><!-- HANGUL CHOSEONG SSANGTIKEUT -->
+      <map code="0x1105" name="1em"/><!-- HANGUL CHOSEONG RIEUL -->
+      <map code="0x1106" name="1em"/><!-- HANGUL CHOSEONG MIEUM -->
+      <map code="0x1107" name="1em"/><!-- HANGUL CHOSEONG PIEUP -->
+      <map code="0x1108" name="1em"/><!-- HANGUL CHOSEONG SSANGPIEUP -->
+      <map code="0x1109" name="1em"/><!-- HANGUL CHOSEONG SIOS -->
+      <map code="0x110a" name="1em"/><!-- HANGUL CHOSEONG SSANGSIOS -->
+      <map code="0x110b" name="1em"/><!-- HANGUL CHOSEONG IEUNG -->
+      <map code="0x110c" name="1em"/><!-- HANGUL CHOSEONG CIEUC -->
+      <map code="0x110d" name="1em"/><!-- HANGUL CHOSEONG SSANGCIEUC -->
+      <map code="0x110e" name="1em"/><!-- HANGUL CHOSEONG CHIEUCH -->
+      <map code="0x110f" name="1em"/><!-- HANGUL CHOSEONG KHIEUKH -->
+      <map code="0x1110" name="1em"/><!-- HANGUL CHOSEONG THIEUTH -->
+      <map code="0x1111" name="1em"/><!-- HANGUL CHOSEONG PHIEUPH -->
+      <map code="0x1112" name="1em"/><!-- HANGUL CHOSEONG HIEUH -->
+      <map code="0x1113" name="1em"/><!-- HANGUL CHOSEONG NIEUN-KIYEOK -->
+      <map code="0x1114" name="1em"/><!-- HANGUL CHOSEONG SSANGNIEUN -->
+      <map code="0x1115" name="1em"/><!-- HANGUL CHOSEONG NIEUN-TIKEUT -->
+      <map code="0x1116" name="1em"/><!-- HANGUL CHOSEONG NIEUN-PIEUP -->
+      <map code="0x1117" name="1em"/><!-- HANGUL CHOSEONG TIKEUT-KIYEOK -->
+      <map code="0x1118" name="1em"/><!-- HANGUL CHOSEONG RIEUL-NIEUN -->
+      <map code="0x1119" name="1em"/><!-- HANGUL CHOSEONG SSANGRIEUL -->
+      <map code="0x111a" name="1em"/><!-- HANGUL CHOSEONG RIEUL-HIEUH -->
+      <map code="0x111b" name="1em"/><!-- HANGUL CHOSEONG KAPYEOUNRIEUL -->
+      <map code="0x111c" name="1em"/><!-- HANGUL CHOSEONG MIEUM-PIEUP -->
+      <map code="0x111d" name="1em"/><!-- HANGUL CHOSEONG KAPYEOUNMIEUM -->
+      <map code="0x111e" name="1em"/><!-- HANGUL CHOSEONG PIEUP-KIYEOK -->
+      <map code="0x111f" name="1em"/><!-- HANGUL CHOSEONG PIEUP-NIEUN -->
+      <map code="0x1120" name="1em"/><!-- HANGUL CHOSEONG PIEUP-TIKEUT -->
+      <map code="0x1121" name="1em"/><!-- HANGUL CHOSEONG PIEUP-SIOS -->
+      <map code="0x1122" name="1em"/><!-- HANGUL CHOSEONG PIEUP-SIOS-KIYEOK -->
+      <map code="0x1123" name="1em"/><!-- HANGUL CHOSEONG PIEUP-SIOS-TIKEUT -->
+      <map code="0x1124" name="1em"/><!-- HANGUL CHOSEONG PIEUP-SIOS-PIEUP -->
+      <map code="0x1125" name="1em"/><!-- HANGUL CHOSEONG PIEUP-SSANGSIOS -->
+      <map code="0x1126" name="1em"/><!-- HANGUL CHOSEONG PIEUP-SIOS-CIEUC -->
+      <map code="0x1127" name="1em"/><!-- HANGUL CHOSEONG PIEUP-CIEUC -->
+      <map code="0x1128" name="1em"/><!-- HANGUL CHOSEONG PIEUP-CHIEUCH -->
+      <map code="0x1129" name="1em"/><!-- HANGUL CHOSEONG PIEUP-THIEUTH -->
+      <map code="0x112a" name="1em"/><!-- HANGUL CHOSEONG PIEUP-PHIEUPH -->
+      <map code="0x112b" name="1em"/><!-- HANGUL CHOSEONG KAPYEOUNPIEUP -->
+      <map code="0x112c" name="1em"/><!-- HANGUL CHOSEONG KAPYEOUNSSANGPIEUP -->
+      <map code="0x112d" name="1em"/><!-- HANGUL CHOSEONG SIOS-KIYEOK -->
+      <map code="0x112e" name="1em"/><!-- HANGUL CHOSEONG SIOS-NIEUN -->
+      <map code="0x112f" name="1em"/><!-- HANGUL CHOSEONG SIOS-TIKEUT -->
+      <map code="0x1130" name="1em"/><!-- HANGUL CHOSEONG SIOS-RIEUL -->
+      <map code="0x1131" name="1em"/><!-- HANGUL CHOSEONG SIOS-MIEUM -->
+      <map code="0x1132" name="1em"/><!-- HANGUL CHOSEONG SIOS-PIEUP -->
+      <map code="0x1133" name="1em"/><!-- HANGUL CHOSEONG SIOS-PIEUP-KIYEOK -->
+      <map code="0x1134" name="1em"/><!-- HANGUL CHOSEONG SIOS-SSANGSIOS -->
+      <map code="0x1135" name="1em"/><!-- HANGUL CHOSEONG SIOS-IEUNG -->
+      <map code="0x1136" name="1em"/><!-- HANGUL CHOSEONG SIOS-CIEUC -->
+      <map code="0x1137" name="1em"/><!-- HANGUL CHOSEONG SIOS-CHIEUCH -->
+      <map code="0x1138" name="1em"/><!-- HANGUL CHOSEONG SIOS-KHIEUKH -->
+      <map code="0x1139" name="1em"/><!-- HANGUL CHOSEONG SIOS-THIEUTH -->
+      <map code="0x113a" name="1em"/><!-- HANGUL CHOSEONG SIOS-PHIEUPH -->
+      <map code="0x113b" name="1em"/><!-- HANGUL CHOSEONG SIOS-HIEUH -->
+      <map code="0x113c" name="1em"/><!-- HANGUL CHOSEONG CHITUEUMSIOS -->
+      <map code="0x113d" name="1em"/><!-- HANGUL CHOSEONG CHITUEUMSSANGSIOS -->
+      <map code="0x113e" name="1em"/><!-- HANGUL CHOSEONG CEONGCHIEUMSIOS -->
+      <map code="0x113f" name="1em"/><!-- HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS -->
+      <map code="0x1140" name="1em"/><!-- HANGUL CHOSEONG PANSIOS -->
+      <map code="0x1141" name="1em"/><!-- HANGUL CHOSEONG IEUNG-KIYEOK -->
+      <map code="0x1142" name="1em"/><!-- HANGUL CHOSEONG IEUNG-TIKEUT -->
+      <map code="0x1143" name="1em"/><!-- HANGUL CHOSEONG IEUNG-MIEUM -->
+      <map code="0x1144" name="1em"/><!-- HANGUL CHOSEONG IEUNG-PIEUP -->
+      <map code="0x1145" name="1em"/><!-- HANGUL CHOSEONG IEUNG-SIOS -->
+      <map code="0x1146" name="1em"/><!-- HANGUL CHOSEONG IEUNG-PANSIOS -->
+      <map code="0x1147" name="1em"/><!-- HANGUL CHOSEONG SSANGIEUNG -->
+      <map code="0x1148" name="1em"/><!-- HANGUL CHOSEONG IEUNG-CIEUC -->
+      <map code="0x1149" name="1em"/><!-- HANGUL CHOSEONG IEUNG-CHIEUCH -->
+      <map code="0x114a" name="1em"/><!-- HANGUL CHOSEONG IEUNG-THIEUTH -->
+      <map code="0x114b" name="1em"/><!-- HANGUL CHOSEONG IEUNG-PHIEUPH -->
+      <map code="0x114c" name="1em"/><!-- HANGUL CHOSEONG YESIEUNG -->
+      <map code="0x114d" name="1em"/><!-- HANGUL CHOSEONG CIEUC-IEUNG -->
+      <map code="0x114e" name="1em"/><!-- HANGUL CHOSEONG CHITUEUMCIEUC -->
+      <map code="0x114f" name="1em"/><!-- HANGUL CHOSEONG CHITUEUMSSANGCIEUC -->
+      <map code="0x1150" name="1em"/><!-- HANGUL CHOSEONG CEONGCHIEUMCIEUC -->
+      <map code="0x1151" name="1em"/><!-- HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC -->
+      <map code="0x1152" name="1em"/><!-- HANGUL CHOSEONG CHIEUCH-KHIEUKH -->
+      <map code="0x1153" name="1em"/><!-- HANGUL CHOSEONG CHIEUCH-HIEUH -->
+      <map code="0x1154" name="1em"/><!-- HANGUL CHOSEONG CHITUEUMCHIEUCH -->
+      <map code="0x1155" name="1em"/><!-- HANGUL CHOSEONG CEONGCHIEUMCHIEUCH -->
+      <map code="0x1156" name="1em"/><!-- HANGUL CHOSEONG PHIEUPH-PIEUP -->
+      <map code="0x1157" name="1em"/><!-- HANGUL CHOSEONG KAPYEOUNPHIEUPH -->
+      <map code="0x1158" name="1em"/><!-- HANGUL CHOSEONG SSANGHIEUH -->
+      <map code="0x1159" name="1em"/><!-- HANGUL CHOSEONG YEORINHIEUH -->
+      <map code="0x115a" name="1em"/><!-- HANGUL CHOSEONG KIYEOK-TIKEUT -->
+      <map code="0x115b" name="1em"/><!-- HANGUL CHOSEONG NIEUN-SIOS -->
+      <map code="0x115c" name="1em"/><!-- HANGUL CHOSEONG NIEUN-CIEUC -->
+      <map code="0x115d" name="1em"/><!-- HANGUL CHOSEONG NIEUN-HIEUH -->
+      <map code="0x115e" name="1em"/><!-- HANGUL CHOSEONG TIKEUT-RIEUL -->
+      <map code="0x115f" name="1em"/><!-- HANGUL CHOSEONG FILLER -->
+      <map code="0x1160" name="1em"/><!-- HANGUL JUNGSEONG FILLER -->
+      <map code="0x1161" name="1em"/><!-- HANGUL JUNGSEONG A -->
+      <map code="0x1162" name="1em"/><!-- HANGUL JUNGSEONG AE -->
+      <map code="0x1163" name="1em"/><!-- HANGUL JUNGSEONG YA -->
+      <map code="0x1164" name="1em"/><!-- HANGUL JUNGSEONG YAE -->
+      <map code="0x1165" name="1em"/><!-- HANGUL JUNGSEONG EO -->
+      <map code="0x1166" name="1em"/><!-- HANGUL JUNGSEONG E -->
+      <map code="0x1167" name="1em"/><!-- HANGUL JUNGSEONG YEO -->
+      <map code="0x1168" name="1em"/><!-- HANGUL JUNGSEONG YE -->
+      <map code="0x1169" name="1em"/><!-- HANGUL JUNGSEONG O -->
+      <map code="0x116a" name="1em"/><!-- HANGUL JUNGSEONG WA -->
+      <map code="0x116b" name="1em"/><!-- HANGUL JUNGSEONG WAE -->
+      <map code="0x116c" name="1em"/><!-- HANGUL JUNGSEONG OE -->
+      <map code="0x116d" name="1em"/><!-- HANGUL JUNGSEONG YO -->
+      <map code="0x116e" name="1em"/><!-- HANGUL JUNGSEONG U -->
+      <map code="0x116f" name="1em"/><!-- HANGUL JUNGSEONG WEO -->
+      <map code="0x1170" name="1em"/><!-- HANGUL JUNGSEONG WE -->
+      <map code="0x1171" name="1em"/><!-- HANGUL JUNGSEONG WI -->
+      <map code="0x1172" name="1em"/><!-- HANGUL JUNGSEONG YU -->
+      <map code="0x1173" name="1em"/><!-- HANGUL JUNGSEONG EU -->
+      <map code="0x1174" name="1em"/><!-- HANGUL JUNGSEONG YI -->
+      <map code="0x1175" name="1em"/><!-- HANGUL JUNGSEONG I -->
+      <map code="0x1176" name="1em"/><!-- HANGUL JUNGSEONG A-O -->
+      <map code="0x1177" name="1em"/><!-- HANGUL JUNGSEONG A-U -->
+      <map code="0x1178" name="1em"/><!-- HANGUL JUNGSEONG YA-O -->
+      <map code="0x1179" name="1em"/><!-- HANGUL JUNGSEONG YA-YO -->
+      <map code="0x117a" name="1em"/><!-- HANGUL JUNGSEONG EO-O -->
+      <map code="0x117b" name="1em"/><!-- HANGUL JUNGSEONG EO-U -->
+      <map code="0x117c" name="1em"/><!-- HANGUL JUNGSEONG EO-EU -->
+      <map code="0x117d" name="1em"/><!-- HANGUL JUNGSEONG YEO-O -->
+      <map code="0x117e" name="1em"/><!-- HANGUL JUNGSEONG YEO-U -->
+      <map code="0x117f" name="1em"/><!-- HANGUL JUNGSEONG O-EO -->
+      <map code="0x1180" name="1em"/><!-- HANGUL JUNGSEONG O-E -->
+      <map code="0x1181" name="1em"/><!-- HANGUL JUNGSEONG O-YE -->
+      <map code="0x1182" name="1em"/><!-- HANGUL JUNGSEONG O-O -->
+      <map code="0x1183" name="1em"/><!-- HANGUL JUNGSEONG O-U -->
+      <map code="0x1184" name="1em"/><!-- HANGUL JUNGSEONG YO-YA -->
+      <map code="0x1185" name="1em"/><!-- HANGUL JUNGSEONG YO-YAE -->
+      <map code="0x1186" name="1em"/><!-- HANGUL JUNGSEONG YO-YEO -->
+      <map code="0x1187" name="1em"/><!-- HANGUL JUNGSEONG YO-O -->
+      <map code="0x1188" name="1em"/><!-- HANGUL JUNGSEONG YO-I -->
+      <map code="0x1189" name="1em"/><!-- HANGUL JUNGSEONG U-A -->
+      <map code="0x118a" name="1em"/><!-- HANGUL JUNGSEONG U-AE -->
+      <map code="0x118b" name="1em"/><!-- HANGUL JUNGSEONG U-EO-EU -->
+      <map code="0x118c" name="1em"/><!-- HANGUL JUNGSEONG U-YE -->
+      <map code="0x118d" name="1em"/><!-- HANGUL JUNGSEONG U-U -->
+      <map code="0x118e" name="1em"/><!-- HANGUL JUNGSEONG YU-A -->
+      <map code="0x118f" name="1em"/><!-- HANGUL JUNGSEONG YU-EO -->
+      <map code="0x1190" name="1em"/><!-- HANGUL JUNGSEONG YU-E -->
+      <map code="0x1191" name="1em"/><!-- HANGUL JUNGSEONG YU-YEO -->
+      <map code="0x1192" name="1em"/><!-- HANGUL JUNGSEONG YU-YE -->
+      <map code="0x1193" name="1em"/><!-- HANGUL JUNGSEONG YU-U -->
+      <map code="0x1194" name="1em"/><!-- HANGUL JUNGSEONG YU-I -->
+      <map code="0x1195" name="1em"/><!-- HANGUL JUNGSEONG EU-U -->
+      <map code="0x1196" name="1em"/><!-- HANGUL JUNGSEONG EU-EU -->
+      <map code="0x1197" name="1em"/><!-- HANGUL JUNGSEONG YI-U -->
+      <map code="0x1198" name="1em"/><!-- HANGUL JUNGSEONG I-A -->
+      <map code="0x1199" name="1em"/><!-- HANGUL JUNGSEONG I-YA -->
+      <map code="0x119a" name="1em"/><!-- HANGUL JUNGSEONG I-O -->
+      <map code="0x119b" name="1em"/><!-- HANGUL JUNGSEONG I-U -->
+      <map code="0x119c" name="1em"/><!-- HANGUL JUNGSEONG I-EU -->
+      <map code="0x119d" name="1em"/><!-- HANGUL JUNGSEONG I-ARAEA -->
+      <map code="0x119e" name="1em"/><!-- HANGUL JUNGSEONG ARAEA -->
+      <map code="0x119f" name="1em"/><!-- HANGUL JUNGSEONG ARAEA-EO -->
+      <map code="0x11a0" name="1em"/><!-- HANGUL JUNGSEONG ARAEA-U -->
+      <map code="0x11a1" name="1em"/><!-- HANGUL JUNGSEONG ARAEA-I -->
+      <map code="0x11a2" name="1em"/><!-- HANGUL JUNGSEONG SSANGARAEA -->
+      <map code="0x11a3" name="1em"/><!-- HANGUL JUNGSEONG A-EU -->
+      <map code="0x11a4" name="1em"/><!-- HANGUL JUNGSEONG YA-U -->
+      <map code="0x11a5" name="1em"/><!-- HANGUL JUNGSEONG YEO-YA -->
+      <map code="0x11a6" name="1em"/><!-- HANGUL JUNGSEONG O-YA -->
+      <map code="0x11a7" name="1em"/><!-- HANGUL JUNGSEONG O-YAE -->
+      <map code="0x11a8" name="1em"/><!-- HANGUL JONGSEONG KIYEOK -->
+      <map code="0x11a9" name="1em"/><!-- HANGUL JONGSEONG SSANGKIYEOK -->
+      <map code="0x11aa" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-SIOS -->
+      <map code="0x11ab" name="1em"/><!-- HANGUL JONGSEONG NIEUN -->
+      <map code="0x11ac" name="1em"/><!-- HANGUL JONGSEONG NIEUN-CIEUC -->
+      <map code="0x11ad" name="1em"/><!-- HANGUL JONGSEONG NIEUN-HIEUH -->
+      <map code="0x11ae" name="1em"/><!-- HANGUL JONGSEONG TIKEUT -->
+      <map code="0x11af" name="1em"/><!-- HANGUL JONGSEONG RIEUL -->
+      <map code="0x11b0" name="1em"/><!-- HANGUL JONGSEONG RIEUL-KIYEOK -->
+      <map code="0x11b1" name="1em"/><!-- HANGUL JONGSEONG RIEUL-MIEUM -->
+      <map code="0x11b2" name="1em"/><!-- HANGUL JONGSEONG RIEUL-PIEUP -->
+      <map code="0x11b3" name="1em"/><!-- HANGUL JONGSEONG RIEUL-SIOS -->
+      <map code="0x11b4" name="1em"/><!-- HANGUL JONGSEONG RIEUL-THIEUTH -->
+      <map code="0x11b5" name="1em"/><!-- HANGUL JONGSEONG RIEUL-PHIEUPH -->
+      <map code="0x11b6" name="1em"/><!-- HANGUL JONGSEONG RIEUL-HIEUH -->
+      <map code="0x11b7" name="1em"/><!-- HANGUL JONGSEONG MIEUM -->
+      <map code="0x11b8" name="1em"/><!-- HANGUL JONGSEONG PIEUP -->
+      <map code="0x11b9" name="1em"/><!-- HANGUL JONGSEONG PIEUP-SIOS -->
+      <map code="0x11ba" name="1em"/><!-- HANGUL JONGSEONG SIOS -->
+      <map code="0x11bb" name="1em"/><!-- HANGUL JONGSEONG SSANGSIOS -->
+      <map code="0x11bc" name="1em"/><!-- HANGUL JONGSEONG IEUNG -->
+      <map code="0x11bd" name="1em"/><!-- HANGUL JONGSEONG CIEUC -->
+      <map code="0x11be" name="1em"/><!-- HANGUL JONGSEONG CHIEUCH -->
+      <map code="0x11bf" name="1em"/><!-- HANGUL JONGSEONG KHIEUKH -->
+      <map code="0x11c0" name="1em"/><!-- HANGUL JONGSEONG THIEUTH -->
+      <map code="0x11c1" name="1em"/><!-- HANGUL JONGSEONG PHIEUPH -->
+      <map code="0x11c2" name="1em"/><!-- HANGUL JONGSEONG HIEUH -->
+      <map code="0x11c3" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-RIEUL -->
+      <map code="0x11c4" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK -->
+      <map code="0x11c5" name="1em"/><!-- HANGUL JONGSEONG NIEUN-KIYEOK -->
+      <map code="0x11c6" name="1em"/><!-- HANGUL JONGSEONG NIEUN-TIKEUT -->
+      <map code="0x11c7" name="1em"/><!-- HANGUL JONGSEONG NIEUN-SIOS -->
+      <map code="0x11c8" name="1em"/><!-- HANGUL JONGSEONG NIEUN-PANSIOS -->
+      <map code="0x11c9" name="1em"/><!-- HANGUL JONGSEONG NIEUN-THIEUTH -->
+      <map code="0x11ca" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-KIYEOK -->
+      <map code="0x11cb" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-RIEUL -->
+      <map code="0x11cc" name="1em"/><!-- HANGUL JONGSEONG RIEUL-KIYEOK-SIOS -->
+      <map code="0x11cd" name="1em"/><!-- HANGUL JONGSEONG RIEUL-NIEUN -->
+      <map code="0x11ce" name="1em"/><!-- HANGUL JONGSEONG RIEUL-TIKEUT -->
+      <map code="0x11cf" name="1em"/><!-- HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH -->
+      <map code="0x11d0" name="1em"/><!-- HANGUL JONGSEONG SSANGRIEUL -->
+      <map code="0x11d1" name="1em"/><!-- HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK -->
+      <map code="0x11d2" name="1em"/><!-- HANGUL JONGSEONG RIEUL-MIEUM-SIOS -->
+      <map code="0x11d3" name="1em"/><!-- HANGUL JONGSEONG RIEUL-PIEUP-SIOS -->
+      <map code="0x11d4" name="1em"/><!-- HANGUL JONGSEONG RIEUL-PIEUP-HIEUH -->
+      <map code="0x11d5" name="1em"/><!-- HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP -->
+      <map code="0x11d6" name="1em"/><!-- HANGUL JONGSEONG RIEUL-SSANGSIOS -->
+      <map code="0x11d7" name="1em"/><!-- HANGUL JONGSEONG RIEUL-PANSIOS -->
+      <map code="0x11d8" name="1em"/><!-- HANGUL JONGSEONG RIEUL-KHIEUKH -->
+      <map code="0x11d9" name="1em"/><!-- HANGUL JONGSEONG RIEUL-YEORINHIEUH -->
+      <map code="0x11da" name="1em"/><!-- HANGUL JONGSEONG MIEUM-KIYEOK -->
+      <map code="0x11db" name="1em"/><!-- HANGUL JONGSEONG MIEUM-RIEUL -->
+      <map code="0x11dc" name="1em"/><!-- HANGUL JONGSEONG MIEUM-PIEUP -->
+      <map code="0x11dd" name="1em"/><!-- HANGUL JONGSEONG MIEUM-SIOS -->
+      <map code="0x11de" name="1em"/><!-- HANGUL JONGSEONG MIEUM-SSANGSIOS -->
+      <map code="0x11df" name="1em"/><!-- HANGUL JONGSEONG MIEUM-PANSIOS -->
+      <map code="0x11e0" name="1em"/><!-- HANGUL JONGSEONG MIEUM-CHIEUCH -->
+      <map code="0x11e1" name="1em"/><!-- HANGUL JONGSEONG MIEUM-HIEUH -->
+      <map code="0x11e2" name="1em"/><!-- HANGUL JONGSEONG KAPYEOUNMIEUM -->
+      <map code="0x11e3" name="1em"/><!-- HANGUL JONGSEONG PIEUP-RIEUL -->
+      <map code="0x11e4" name="1em"/><!-- HANGUL JONGSEONG PIEUP-PHIEUPH -->
+      <map code="0x11e5" name="1em"/><!-- HANGUL JONGSEONG PIEUP-HIEUH -->
+      <map code="0x11e6" name="1em"/><!-- HANGUL JONGSEONG KAPYEOUNPIEUP -->
+      <map code="0x11e7" name="1em"/><!-- HANGUL JONGSEONG SIOS-KIYEOK -->
+      <map code="0x11e8" name="1em"/><!-- HANGUL JONGSEONG SIOS-TIKEUT -->
+      <map code="0x11e9" name="1em"/><!-- HANGUL JONGSEONG SIOS-RIEUL -->
+      <map code="0x11ea" name="1em"/><!-- HANGUL JONGSEONG SIOS-PIEUP -->
+      <map code="0x11eb" name="1em"/><!-- HANGUL JONGSEONG PANSIOS -->
+      <map code="0x11ec" name="1em"/><!-- HANGUL JONGSEONG IEUNG-KIYEOK -->
+      <map code="0x11ed" name="1em"/><!-- HANGUL JONGSEONG IEUNG-SSANGKIYEOK -->
+      <map code="0x11ee" name="1em"/><!-- HANGUL JONGSEONG SSANGIEUNG -->
+      <map code="0x11ef" name="1em"/><!-- HANGUL JONGSEONG IEUNG-KHIEUKH -->
+      <map code="0x11f0" name="1em"/><!-- HANGUL JONGSEONG YESIEUNG -->
+      <map code="0x11f1" name="1em"/><!-- HANGUL JONGSEONG YESIEUNG-SIOS -->
+      <map code="0x11f2" name="1em"/><!-- HANGUL JONGSEONG YESIEUNG-PANSIOS -->
+      <map code="0x11f3" name="1em"/><!-- HANGUL JONGSEONG PHIEUPH-PIEUP -->
+      <map code="0x11f4" name="1em"/><!-- HANGUL JONGSEONG KAPYEOUNPHIEUPH -->
+      <map code="0x11f5" name="1em"/><!-- HANGUL JONGSEONG HIEUH-NIEUN -->
+      <map code="0x11f6" name="1em"/><!-- HANGUL JONGSEONG HIEUH-RIEUL -->
+      <map code="0x11f7" name="1em"/><!-- HANGUL JONGSEONG HIEUH-MIEUM -->
+      <map code="0x11f8" name="1em"/><!-- HANGUL JONGSEONG HIEUH-PIEUP -->
+      <map code="0x11f9" name="1em"/><!-- HANGUL JONGSEONG YEORINHIEUH -->
+      <map code="0x11fa" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-NIEUN -->
+      <map code="0x11fb" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-PIEUP -->
+      <map code="0x11fc" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-CHIEUCH -->
+      <map code="0x11fd" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-KHIEUKH -->
+      <map code="0x11fe" name="1em"/><!-- HANGUL JONGSEONG KIYEOK-HIEUH -->
+      <map code="0x11ff" name="1em"/><!-- HANGUL JONGSEONG SSANGNIEUN -->
+      <map code="0x302e" name="1em"/><!-- HANGUL SINGLE DOT TONE MARK -->
+      <map code="0x302f" name="1em"/><!-- HANGUL DOUBLE DOT TONE MARK -->
+      <map code="0x3131" name="1em"/><!-- HANGUL LETTER KIYEOK -->
+      <map code="0x3132" name="1em"/><!-- HANGUL LETTER SSANGKIYEOK -->
+      <map code="0x3133" name="1em"/><!-- HANGUL LETTER KIYEOK-SIOS -->
+      <map code="0x3134" name="1em"/><!-- HANGUL LETTER NIEUN -->
+      <map code="0x3135" name="1em"/><!-- HANGUL LETTER NIEUN-CIEUC -->
+      <map code="0x3136" name="1em"/><!-- HANGUL LETTER NIEUN-HIEUH -->
+      <map code="0x3137" name="1em"/><!-- HANGUL LETTER TIKEUT -->
+      <map code="0x3138" name="1em"/><!-- HANGUL LETTER SSANGTIKEUT -->
+      <map code="0x3139" name="1em"/><!-- HANGUL LETTER RIEUL -->
+      <map code="0x313a" name="1em"/><!-- HANGUL LETTER RIEUL-KIYEOK -->
+      <map code="0x313b" name="1em"/><!-- HANGUL LETTER RIEUL-MIEUM -->
+      <map code="0x313c" name="1em"/><!-- HANGUL LETTER RIEUL-PIEUP -->
+      <map code="0x313d" name="1em"/><!-- HANGUL LETTER RIEUL-SIOS -->
+      <map code="0x313e" name="1em"/><!-- HANGUL LETTER RIEUL-THIEUTH -->
+      <map code="0x313f" name="1em"/><!-- HANGUL LETTER RIEUL-PHIEUPH -->
+      <map code="0x3140" name="1em"/><!-- HANGUL LETTER RIEUL-HIEUH -->
+      <map code="0x3141" name="1em"/><!-- HANGUL LETTER MIEUM -->
+      <map code="0x3142" name="1em"/><!-- HANGUL LETTER PIEUP -->
+      <map code="0x3143" name="1em"/><!-- HANGUL LETTER SSANGPIEUP -->
+      <map code="0x3144" name="1em"/><!-- HANGUL LETTER PIEUP-SIOS -->
+      <map code="0x3145" name="1em"/><!-- HANGUL LETTER SIOS -->
+      <map code="0x3146" name="1em"/><!-- HANGUL LETTER SSANGSIOS -->
+      <map code="0x3147" name="1em"/><!-- HANGUL LETTER IEUNG -->
+      <map code="0x3148" name="1em"/><!-- HANGUL LETTER CIEUC -->
+      <map code="0x3149" name="1em"/><!-- HANGUL LETTER SSANGCIEUC -->
+      <map code="0x314a" name="1em"/><!-- HANGUL LETTER CHIEUCH -->
+      <map code="0x314b" name="1em"/><!-- HANGUL LETTER KHIEUKH -->
+      <map code="0x314c" name="1em"/><!-- HANGUL LETTER THIEUTH -->
+      <map code="0x314d" name="1em"/><!-- HANGUL LETTER PHIEUPH -->
+      <map code="0x314e" name="1em"/><!-- HANGUL LETTER HIEUH -->
+      <map code="0x314f" name="1em"/><!-- HANGUL LETTER A -->
+      <map code="0x3150" name="1em"/><!-- HANGUL LETTER AE -->
+      <map code="0x3151" name="1em"/><!-- HANGUL LETTER YA -->
+      <map code="0x3152" name="1em"/><!-- HANGUL LETTER YAE -->
+      <map code="0x3153" name="1em"/><!-- HANGUL LETTER EO -->
+      <map code="0x3154" name="1em"/><!-- HANGUL LETTER E -->
+      <map code="0x3155" name="1em"/><!-- HANGUL LETTER YEO -->
+      <map code="0x3156" name="1em"/><!-- HANGUL LETTER YE -->
+      <map code="0x3157" name="1em"/><!-- HANGUL LETTER O -->
+      <map code="0x3158" name="1em"/><!-- HANGUL LETTER WA -->
+      <map code="0x3159" name="1em"/><!-- HANGUL LETTER WAE -->
+      <map code="0x315a" name="1em"/><!-- HANGUL LETTER OE -->
+      <map code="0x315b" name="1em"/><!-- HANGUL LETTER YO -->
+      <map code="0x315c" name="1em"/><!-- HANGUL LETTER U -->
+      <map code="0x315d" name="1em"/><!-- HANGUL LETTER WEO -->
+      <map code="0x315e" name="1em"/><!-- HANGUL LETTER WE -->
+      <map code="0x315f" name="1em"/><!-- HANGUL LETTER WI -->
+      <map code="0x3160" name="1em"/><!-- HANGUL LETTER YU -->
+      <map code="0x3161" name="1em"/><!-- HANGUL LETTER EU -->
+      <map code="0x3162" name="1em"/><!-- HANGUL LETTER YI -->
+      <map code="0x3163" name="1em"/><!-- HANGUL LETTER I -->
+      <map code="0x3164" name="1em"/><!-- HANGUL FILLER -->
+      <map code="0x3165" name="1em"/><!-- HANGUL LETTER SSANGNIEUN -->
+      <map code="0x3166" name="1em"/><!-- HANGUL LETTER NIEUN-TIKEUT -->
+      <map code="0x3167" name="1em"/><!-- HANGUL LETTER NIEUN-SIOS -->
+      <map code="0x3168" name="1em"/><!-- HANGUL LETTER NIEUN-PANSIOS -->
+      <map code="0x3169" name="1em"/><!-- HANGUL LETTER RIEUL-KIYEOK-SIOS -->
+      <map code="0x316a" name="1em"/><!-- HANGUL LETTER RIEUL-TIKEUT -->
+      <map code="0x316b" name="1em"/><!-- HANGUL LETTER RIEUL-PIEUP-SIOS -->
+      <map code="0x316c" name="1em"/><!-- HANGUL LETTER RIEUL-PANSIOS -->
+      <map code="0x316d" name="1em"/><!-- HANGUL LETTER RIEUL-YEORINHIEUH -->
+      <map code="0x316e" name="1em"/><!-- HANGUL LETTER MIEUM-PIEUP -->
+      <map code="0x316f" name="1em"/><!-- HANGUL LETTER MIEUM-SIOS -->
+      <map code="0x3170" name="1em"/><!-- HANGUL LETTER MIEUM-PANSIOS -->
+      <map code="0x3171" name="1em"/><!-- HANGUL LETTER KAPYEOUNMIEUM -->
+      <map code="0x3172" name="1em"/><!-- HANGUL LETTER PIEUP-KIYEOK -->
+      <map code="0x3173" name="1em"/><!-- HANGUL LETTER PIEUP-TIKEUT -->
+      <map code="0x3174" name="1em"/><!-- HANGUL LETTER PIEUP-SIOS-KIYEOK -->
+      <map code="0x3175" name="1em"/><!-- HANGUL LETTER PIEUP-SIOS-TIKEUT -->
+      <map code="0x3176" name="1em"/><!-- HANGUL LETTER PIEUP-CIEUC -->
+      <map code="0x3177" name="1em"/><!-- HANGUL LETTER PIEUP-THIEUTH -->
+      <map code="0x3178" name="1em"/><!-- HANGUL LETTER KAPYEOUNPIEUP -->
+      <map code="0x3179" name="1em"/><!-- HANGUL LETTER KAPYEOUNSSANGPIEUP -->
+      <map code="0x317a" name="1em"/><!-- HANGUL LETTER SIOS-KIYEOK -->
+      <map code="0x317b" name="1em"/><!-- HANGUL LETTER SIOS-NIEUN -->
+      <map code="0x317c" name="1em"/><!-- HANGUL LETTER SIOS-TIKEUT -->
+      <map code="0x317d" name="1em"/><!-- HANGUL LETTER SIOS-PIEUP -->
+      <map code="0x317e" name="1em"/><!-- HANGUL LETTER SIOS-CIEUC -->
+      <map code="0x317f" name="1em"/><!-- HANGUL LETTER PANSIOS -->
+      <map code="0x3180" name="1em"/><!-- HANGUL LETTER SSANGIEUNG -->
+      <map code="0x3181" name="1em"/><!-- HANGUL LETTER YESIEUNG -->
+      <map code="0x3182" name="1em"/><!-- HANGUL LETTER YESIEUNG-SIOS -->
+      <map code="0x3183" name="1em"/><!-- HANGUL LETTER YESIEUNG-PANSIOS -->
+      <map code="0x3184" name="1em"/><!-- HANGUL LETTER KAPYEOUNPHIEUPH -->
+      <map code="0x3185" name="1em"/><!-- HANGUL LETTER SSANGHIEUH -->
+      <map code="0x3186" name="1em"/><!-- HANGUL LETTER YEORINHIEUH -->
+      <map code="0x3187" name="1em"/><!-- HANGUL LETTER YO-YA -->
+      <map code="0x3188" name="1em"/><!-- HANGUL LETTER YO-YAE -->
+      <map code="0x3189" name="1em"/><!-- HANGUL LETTER YO-I -->
+      <map code="0x318a" name="1em"/><!-- HANGUL LETTER YU-YEO -->
+      <map code="0x318b" name="1em"/><!-- HANGUL LETTER YU-YE -->
+      <map code="0x318c" name="1em"/><!-- HANGUL LETTER YU-I -->
+      <map code="0x318d" name="1em"/><!-- HANGUL LETTER ARAEA -->
+      <map code="0x318e" name="1em"/><!-- HANGUL LETTER ARAEAE -->
+      <map code="0xa960" name="1em"/><!-- HANGUL CHOSEONG TIKEUT-MIEUM -->
+      <map code="0xa961" name="1em"/><!-- HANGUL CHOSEONG TIKEUT-PIEUP -->
+      <map code="0xa962" name="1em"/><!-- HANGUL CHOSEONG TIKEUT-SIOS -->
+      <map code="0xa963" name="1em"/><!-- HANGUL CHOSEONG TIKEUT-CIEUC -->
+      <map code="0xa964" name="1em"/><!-- HANGUL CHOSEONG RIEUL-KIYEOK -->
+      <map code="0xa965" name="1em"/><!-- HANGUL CHOSEONG RIEUL-SSANGKIYEOK -->
+      <map code="0xa966" name="1em"/><!-- HANGUL CHOSEONG RIEUL-TIKEUT -->
+      <map code="0xa967" name="1em"/><!-- HANGUL CHOSEONG RIEUL-SSANGTIKEUT -->
+      <map code="0xa968" name="1em"/><!-- HANGUL CHOSEONG RIEUL-MIEUM -->
+      <map code="0xa969" name="1em"/><!-- HANGUL CHOSEONG RIEUL-PIEUP -->
+      <map code="0xa96a" name="1em"/><!-- HANGUL CHOSEONG RIEUL-SSANGPIEUP -->
+      <map code="0xa96b" name="1em"/><!-- HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP -->
+      <map code="0xa96c" name="1em"/><!-- HANGUL CHOSEONG RIEUL-SIOS -->
+      <map code="0xa96d" name="1em"/><!-- HANGUL CHOSEONG RIEUL-CIEUC -->
+      <map code="0xa96e" name="1em"/><!-- HANGUL CHOSEONG RIEUL-KHIEUKH -->
+      <map code="0xa96f" name="1em"/><!-- HANGUL CHOSEONG MIEUM-KIYEOK -->
+      <map code="0xa970" name="1em"/><!-- HANGUL CHOSEONG MIEUM-TIKEUT -->
+      <map code="0xa971" name="1em"/><!-- HANGUL CHOSEONG MIEUM-SIOS -->
+      <map code="0xa972" name="1em"/><!-- HANGUL CHOSEONG PIEUP-SIOS-THIEUTH -->
+      <map code="0xa973" name="1em"/><!-- HANGUL CHOSEONG PIEUP-KHIEUKH -->
+      <map code="0xa974" name="1em"/><!-- HANGUL CHOSEONG PIEUP-HIEUH -->
+      <map code="0xa975" name="1em"/><!-- HANGUL CHOSEONG SSANGSIOS-PIEUP -->
+      <map code="0xa976" name="1em"/><!-- HANGUL CHOSEONG IEUNG-RIEUL -->
+      <map code="0xa977" name="1em"/><!-- HANGUL CHOSEONG IEUNG-HIEUH -->
+      <map code="0xa978" name="1em"/><!-- HANGUL CHOSEONG SSANGCIEUC-HIEUH -->
+      <map code="0xa979" name="1em"/><!-- HANGUL CHOSEONG SSANGTHIEUTH -->
+      <map code="0xa97a" name="1em"/><!-- HANGUL CHOSEONG PHIEUPH-HIEUH -->
+      <map code="0xa97b" name="1em"/><!-- HANGUL CHOSEONG HIEUH-SIOS -->
+      <map code="0xa97c" name="1em"/><!-- HANGUL CHOSEONG SSANGYEORINHIEUH -->
+      <map code="0xac00" name="1em"/><!-- HANGUL SYLLABLE GA -->
+      <map code="0xac01" name="1em"/><!-- HANGUL SYLLABLE GAG -->
+      <map code="0xac02" name="1em"/><!-- HANGUL SYLLABLE GAGG -->
+      <map code="0xac03" name="1em"/><!-- HANGUL SYLLABLE GAGS -->
+      <map code="0xac04" name="1em"/><!-- HANGUL SYLLABLE GAN -->
+      <map code="0xac05" name="1em"/><!-- HANGUL SYLLABLE GANJ -->
+      <map code="0xac06" name="1em"/><!-- HANGUL SYLLABLE GANH -->
+      <map code="0xac07" name="1em"/><!-- HANGUL SYLLABLE GAD -->
+      <map code="0xac08" name="1em"/><!-- HANGUL SYLLABLE GAL -->
+      <map code="0xac09" name="1em"/><!-- HANGUL SYLLABLE GALG -->
+      <map code="0xac0a" name="1em"/><!-- HANGUL SYLLABLE GALM -->
+      <map code="0xac0b" name="1em"/><!-- HANGUL SYLLABLE GALB -->
+      <map code="0xac0c" name="1em"/><!-- HANGUL SYLLABLE GALS -->
+      <map code="0xac0d" name="1em"/><!-- HANGUL SYLLABLE GALT -->
+      <map code="0xac0e" name="1em"/><!-- HANGUL SYLLABLE GALP -->
+      <map code="0xac0f" name="1em"/><!-- HANGUL SYLLABLE GALH -->
+      <map code="0xac10" name="1em"/><!-- HANGUL SYLLABLE GAM -->
+      <map code="0xac11" name="1em"/><!-- HANGUL SYLLABLE GAB -->
+      <map code="0xac12" name="1em"/><!-- HANGUL SYLLABLE GABS -->
+      <map code="0xac13" name="1em"/><!-- HANGUL SYLLABLE GAS -->
+      <map code="0xac14" name="1em"/><!-- HANGUL SYLLABLE GASS -->
+      <map code="0xac15" name="1em"/><!-- HANGUL SYLLABLE GANG -->
+      <map code="0xac16" name="1em"/><!-- HANGUL SYLLABLE GAJ -->
+      <map code="0xac17" name="1em"/><!-- HANGUL SYLLABLE GAC -->
+      <map code="0xac18" name="1em"/><!-- HANGUL SYLLABLE GAK -->
+      <map code="0xac19" name="1em"/><!-- HANGUL SYLLABLE GAT -->
+      <map code="0xac1a" name="1em"/><!-- HANGUL SYLLABLE GAP -->
+      <map code="0xac1b" name="1em"/><!-- HANGUL SYLLABLE GAH -->
+      <map code="0xac1c" name="1em"/><!-- HANGUL SYLLABLE GAE -->
+      <map code="0xac1d" name="1em"/><!-- HANGUL SYLLABLE GAEG -->
+      <map code="0xac1e" name="1em"/><!-- HANGUL SYLLABLE GAEGG -->
+      <map code="0xac1f" name="1em"/><!-- HANGUL SYLLABLE GAEGS -->
+      <map code="0xac20" name="1em"/><!-- HANGUL SYLLABLE GAEN -->
+      <map code="0xac21" name="1em"/><!-- HANGUL SYLLABLE GAENJ -->
+      <map code="0xac22" name="1em"/><!-- HANGUL SYLLABLE GAENH -->
+      <map code="0xac23" name="1em"/><!-- HANGUL SYLLABLE GAED -->
+      <map code="0xac24" name="1em"/><!-- HANGUL SYLLABLE GAEL -->
+      <map code="0xac25" name="1em"/><!-- HANGUL SYLLABLE GAELG -->
+      <map code="0xac26" name="1em"/><!-- HANGUL SYLLABLE GAELM -->
+      <map code="0xac27" name="1em"/><!-- HANGUL SYLLABLE GAELB -->
+      <map code="0xac28" name="1em"/><!-- HANGUL SYLLABLE GAELS -->
+      <map code="0xac29" name="1em"/><!-- HANGUL SYLLABLE GAELT -->
+      <map code="0xac2a" name="1em"/><!-- HANGUL SYLLABLE GAELP -->
+      <map code="0xac2b" name="1em"/><!-- HANGUL SYLLABLE GAELH -->
+      <map code="0xac2c" name="1em"/><!-- HANGUL SYLLABLE GAEM -->
+      <map code="0xac2d" name="1em"/><!-- HANGUL SYLLABLE GAEB -->
+      <map code="0xac2e" name="1em"/><!-- HANGUL SYLLABLE GAEBS -->
+      <map code="0xac2f" name="1em"/><!-- HANGUL SYLLABLE GAES -->
+      <map code="0xac30" name="1em"/><!-- HANGUL SYLLABLE GAESS -->
+      <map code="0xac31" name="1em"/><!-- HANGUL SYLLABLE GAENG -->
+      <map code="0xac32" name="1em"/><!-- HANGUL SYLLABLE GAEJ -->
+      <map code="0xac33" name="1em"/><!-- HANGUL SYLLABLE GAEC -->
+      <map code="0xac34" name="1em"/><!-- HANGUL SYLLABLE GAEK -->
+      <map code="0xac35" name="1em"/><!-- HANGUL SYLLABLE GAET -->
+      <map code="0xac36" name="1em"/><!-- HANGUL SYLLABLE GAEP -->
+      <map code="0xac37" name="1em"/><!-- HANGUL SYLLABLE GAEH -->
+      <map code="0xac38" name="1em"/><!-- HANGUL SYLLABLE GYA -->
+      <map code="0xac39" name="1em"/><!-- HANGUL SYLLABLE GYAG -->
+      <map code="0xac3a" name="1em"/><!-- HANGUL SYLLABLE GYAGG -->
+      <map code="0xac3b" name="1em"/><!-- HANGUL SYLLABLE GYAGS -->
+      <map code="0xac3c" name="1em"/><!-- HANGUL SYLLABLE GYAN -->
+      <map code="0xac3d" name="1em"/><!-- HANGUL SYLLABLE GYANJ -->
+      <map code="0xac3e" name="1em"/><!-- HANGUL SYLLABLE GYANH -->
+      <map code="0xac3f" name="1em"/><!-- HANGUL SYLLABLE GYAD -->
+      <map code="0xac40" name="1em"/><!-- HANGUL SYLLABLE GYAL -->
+      <map code="0xac41" name="1em"/><!-- HANGUL SYLLABLE GYALG -->
+      <map code="0xac42" name="1em"/><!-- HANGUL SYLLABLE GYALM -->
+      <map code="0xac43" name="1em"/><!-- HANGUL SYLLABLE GYALB -->
+      <map code="0xac44" name="1em"/><!-- HANGUL SYLLABLE GYALS -->
+      <map code="0xac45" name="1em"/><!-- HANGUL SYLLABLE GYALT -->
+      <map code="0xac46" name="1em"/><!-- HANGUL SYLLABLE GYALP -->
+      <map code="0xac47" name="1em"/><!-- HANGUL SYLLABLE GYALH -->
+      <map code="0xac48" name="1em"/><!-- HANGUL SYLLABLE GYAM -->
+      <map code="0xac49" name="1em"/><!-- HANGUL SYLLABLE GYAB -->
+      <map code="0xac4a" name="1em"/><!-- HANGUL SYLLABLE GYABS -->
+      <map code="0xac4b" name="1em"/><!-- HANGUL SYLLABLE GYAS -->
+      <map code="0xac4c" name="1em"/><!-- HANGUL SYLLABLE GYASS -->
+      <map code="0xac4d" name="1em"/><!-- HANGUL SYLLABLE GYANG -->
+      <map code="0xac4e" name="1em"/><!-- HANGUL SYLLABLE GYAJ -->
+      <map code="0xac4f" name="1em"/><!-- HANGUL SYLLABLE GYAC -->
+      <map code="0xac50" name="1em"/><!-- HANGUL SYLLABLE GYAK -->
+      <map code="0xac51" name="1em"/><!-- HANGUL SYLLABLE GYAT -->
+      <map code="0xac52" name="1em"/><!-- HANGUL SYLLABLE GYAP -->
+      <map code="0xac53" name="1em"/><!-- HANGUL SYLLABLE GYAH -->
+      <map code="0xac54" name="1em"/><!-- HANGUL SYLLABLE GYAE -->
+      <map code="0xac55" name="1em"/><!-- HANGUL SYLLABLE GYAEG -->
+      <map code="0xac56" name="1em"/><!-- HANGUL SYLLABLE GYAEGG -->
+      <map code="0xac57" name="1em"/><!-- HANGUL SYLLABLE GYAEGS -->
+      <map code="0xac58" name="1em"/><!-- HANGUL SYLLABLE GYAEN -->
+      <map code="0xac59" name="1em"/><!-- HANGUL SYLLABLE GYAENJ -->
+      <map code="0xac5a" name="1em"/><!-- HANGUL SYLLABLE GYAENH -->
+      <map code="0xac5b" name="1em"/><!-- HANGUL SYLLABLE GYAED -->
+      <map code="0xac5c" name="1em"/><!-- HANGUL SYLLABLE GYAEL -->
+      <map code="0xac5d" name="1em"/><!-- HANGUL SYLLABLE GYAELG -->
+      <map code="0xac5e" name="1em"/><!-- HANGUL SYLLABLE GYAELM -->
+      <map code="0xac5f" name="1em"/><!-- HANGUL SYLLABLE GYAELB -->
+      <map code="0xac60" name="1em"/><!-- HANGUL SYLLABLE GYAELS -->
+      <map code="0xac61" name="1em"/><!-- HANGUL SYLLABLE GYAELT -->
+      <map code="0xac62" name="1em"/><!-- HANGUL SYLLABLE GYAELP -->
+      <map code="0xac63" name="1em"/><!-- HANGUL SYLLABLE GYAELH -->
+      <map code="0xac64" name="1em"/><!-- HANGUL SYLLABLE GYAEM -->
+      <map code="0xac65" name="1em"/><!-- HANGUL SYLLABLE GYAEB -->
+      <map code="0xac66" name="1em"/><!-- HANGUL SYLLABLE GYAEBS -->
+      <map code="0xac67" name="1em"/><!-- HANGUL SYLLABLE GYAES -->
+      <map code="0xac68" name="1em"/><!-- HANGUL SYLLABLE GYAESS -->
+      <map code="0xac69" name="1em"/><!-- HANGUL SYLLABLE GYAENG -->
+      <map code="0xac6a" name="1em"/><!-- HANGUL SYLLABLE GYAEJ -->
+      <map code="0xac6b" name="1em"/><!-- HANGUL SYLLABLE GYAEC -->
+      <map code="0xac6c" name="1em"/><!-- HANGUL SYLLABLE GYAEK -->
+      <map code="0xac6d" name="1em"/><!-- HANGUL SYLLABLE GYAET -->
+      <map code="0xac6e" name="1em"/><!-- HANGUL SYLLABLE GYAEP -->
+      <map code="0xac6f" name="1em"/><!-- HANGUL SYLLABLE GYAEH -->
+      <map code="0xac70" name="1em"/><!-- HANGUL SYLLABLE GEO -->
+      <map code="0xac71" name="1em"/><!-- HANGUL SYLLABLE GEOG -->
+      <map code="0xac72" name="1em"/><!-- HANGUL SYLLABLE GEOGG -->
+      <map code="0xac73" name="1em"/><!-- HANGUL SYLLABLE GEOGS -->
+      <map code="0xac74" name="1em"/><!-- HANGUL SYLLABLE GEON -->
+      <map code="0xac75" name="1em"/><!-- HANGUL SYLLABLE GEONJ -->
+      <map code="0xac76" name="1em"/><!-- HANGUL SYLLABLE GEONH -->
+      <map code="0xac77" name="1em"/><!-- HANGUL SYLLABLE GEOD -->
+      <map code="0xac78" name="1em"/><!-- HANGUL SYLLABLE GEOL -->
+      <map code="0xac79" name="1em"/><!-- HANGUL SYLLABLE GEOLG -->
+      <map code="0xac7a" name="1em"/><!-- HANGUL SYLLABLE GEOLM -->
+      <map code="0xac7b" name="1em"/><!-- HANGUL SYLLABLE GEOLB -->
+      <map code="0xac7c" name="1em"/><!-- HANGUL SYLLABLE GEOLS -->
+      <map code="0xac7d" name="1em"/><!-- HANGUL SYLLABLE GEOLT -->
+      <map code="0xac7e" name="1em"/><!-- HANGUL SYLLABLE GEOLP -->
+      <map code="0xac7f" name="1em"/><!-- HANGUL SYLLABLE GEOLH -->
+      <map code="0xac80" name="1em"/><!-- HANGUL SYLLABLE GEOM -->
+      <map code="0xac81" name="1em"/><!-- HANGUL SYLLABLE GEOB -->
+      <map code="0xac82" name="1em"/><!-- HANGUL SYLLABLE GEOBS -->
+      <map code="0xac83" name="1em"/><!-- HANGUL SYLLABLE GEOS -->
+      <map code="0xac84" name="1em"/><!-- HANGUL SYLLABLE GEOSS -->
+      <map code="0xac85" name="1em"/><!-- HANGUL SYLLABLE GEONG -->
+      <map code="0xac86" name="1em"/><!-- HANGUL SYLLABLE GEOJ -->
+      <map code="0xac87" name="1em"/><!-- HANGUL SYLLABLE GEOC -->
+      <map code="0xac88" name="1em"/><!-- HANGUL SYLLABLE GEOK -->
+      <map code="0xac89" name="1em"/><!-- HANGUL SYLLABLE GEOT -->
+      <map code="0xac8a" name="1em"/><!-- HANGUL SYLLABLE GEOP -->
+      <map code="0xac8b" name="1em"/><!-- HANGUL SYLLABLE GEOH -->
+      <map code="0xac8c" name="1em"/><!-- HANGUL SYLLABLE GE -->
+      <map code="0xac8d" name="1em"/><!-- HANGUL SYLLABLE GEG -->
+      <map code="0xac8e" name="1em"/><!-- HANGUL SYLLABLE GEGG -->
+      <map code="0xac8f" name="1em"/><!-- HANGUL SYLLABLE GEGS -->
+      <map code="0xac90" name="1em"/><!-- HANGUL SYLLABLE GEN -->
+      <map code="0xac91" name="1em"/><!-- HANGUL SYLLABLE GENJ -->
+      <map code="0xac92" name="1em"/><!-- HANGUL SYLLABLE GENH -->
+      <map code="0xac93" name="1em"/><!-- HANGUL SYLLABLE GED -->
+      <map code="0xac94" name="1em"/><!-- HANGUL SYLLABLE GEL -->
+      <map code="0xac95" name="1em"/><!-- HANGUL SYLLABLE GELG -->
+      <map code="0xac96" name="1em"/><!-- HANGUL SYLLABLE GELM -->
+      <map code="0xac97" name="1em"/><!-- HANGUL SYLLABLE GELB -->
+      <map code="0xac98" name="1em"/><!-- HANGUL SYLLABLE GELS -->
+      <map code="0xac99" name="1em"/><!-- HANGUL SYLLABLE GELT -->
+      <map code="0xac9a" name="1em"/><!-- HANGUL SYLLABLE GELP -->
+      <map code="0xac9b" name="1em"/><!-- HANGUL SYLLABLE GELH -->
+      <map code="0xac9c" name="1em"/><!-- HANGUL SYLLABLE GEM -->
+      <map code="0xac9d" name="1em"/><!-- HANGUL SYLLABLE GEB -->
+      <map code="0xac9e" name="1em"/><!-- HANGUL SYLLABLE GEBS -->
+      <map code="0xac9f" name="1em"/><!-- HANGUL SYLLABLE GES -->
+      <map code="0xaca0" name="1em"/><!-- HANGUL SYLLABLE GESS -->
+      <map code="0xaca1" name="1em"/><!-- HANGUL SYLLABLE GENG -->
+      <map code="0xaca2" name="1em"/><!-- HANGUL SYLLABLE GEJ -->
+      <map code="0xaca3" name="1em"/><!-- HANGUL SYLLABLE GEC -->
+      <map code="0xaca4" name="1em"/><!-- HANGUL SYLLABLE GEK -->
+      <map code="0xaca5" name="1em"/><!-- HANGUL SYLLABLE GET -->
+      <map code="0xaca6" name="1em"/><!-- HANGUL SYLLABLE GEP -->
+      <map code="0xaca7" name="1em"/><!-- HANGUL SYLLABLE GEH -->
+      <map code="0xaca8" name="1em"/><!-- HANGUL SYLLABLE GYEO -->
+      <map code="0xaca9" name="1em"/><!-- HANGUL SYLLABLE GYEOG -->
+      <map code="0xacaa" name="1em"/><!-- HANGUL SYLLABLE GYEOGG -->
+      <map code="0xacab" name="1em"/><!-- HANGUL SYLLABLE GYEOGS -->
+      <map code="0xacac" name="1em"/><!-- HANGUL SYLLABLE GYEON -->
+      <map code="0xacad" name="1em"/><!-- HANGUL SYLLABLE GYEONJ -->
+      <map code="0xacae" name="1em"/><!-- HANGUL SYLLABLE GYEONH -->
+      <map code="0xacaf" name="1em"/><!-- HANGUL SYLLABLE GYEOD -->
+      <map code="0xacb0" name="1em"/><!-- HANGUL SYLLABLE GYEOL -->
+      <map code="0xacb1" name="1em"/><!-- HANGUL SYLLABLE GYEOLG -->
+      <map code="0xacb2" name="1em"/><!-- HANGUL SYLLABLE GYEOLM -->
+      <map code="0xacb3" name="1em"/><!-- HANGUL SYLLABLE GYEOLB -->
+      <map code="0xacb4" name="1em"/><!-- HANGUL SYLLABLE GYEOLS -->
+      <map code="0xacb5" name="1em"/><!-- HANGUL SYLLABLE GYEOLT -->
+      <map code="0xacb6" name="1em"/><!-- HANGUL SYLLABLE GYEOLP -->
+      <map code="0xacb7" name="1em"/><!-- HANGUL SYLLABLE GYEOLH -->
+      <map code="0xacb8" name="1em"/><!-- HANGUL SYLLABLE GYEOM -->
+      <map code="0xacb9" name="1em"/><!-- HANGUL SYLLABLE GYEOB -->
+      <map code="0xacba" name="1em"/><!-- HANGUL SYLLABLE GYEOBS -->
+      <map code="0xacbb" name="1em"/><!-- HANGUL SYLLABLE GYEOS -->
+      <map code="0xacbc" name="1em"/><!-- HANGUL SYLLABLE GYEOSS -->
+      <map code="0xacbd" name="1em"/><!-- HANGUL SYLLABLE GYEONG -->
+      <map code="0xacbe" name="1em"/><!-- HANGUL SYLLABLE GYEOJ -->
+      <map code="0xacbf" name="1em"/><!-- HANGUL SYLLABLE GYEOC -->
+      <map code="0xacc0" name="1em"/><!-- HANGUL SYLLABLE GYEOK -->
+      <map code="0xacc1" name="1em"/><!-- HANGUL SYLLABLE GYEOT -->
+      <map code="0xacc2" name="1em"/><!-- HANGUL SYLLABLE GYEOP -->
+      <map code="0xacc3" name="1em"/><!-- HANGUL SYLLABLE GYEOH -->
+      <map code="0xacc4" name="1em"/><!-- HANGUL SYLLABLE GYE -->
+      <map code="0xacc5" name="1em"/><!-- HANGUL SYLLABLE GYEG -->
+      <map code="0xacc6" name="1em"/><!-- HANGUL SYLLABLE GYEGG -->
+      <map code="0xacc7" name="1em"/><!-- HANGUL SYLLABLE GYEGS -->
+      <map code="0xacc8" name="1em"/><!-- HANGUL SYLLABLE GYEN -->
+      <map code="0xacc9" name="1em"/><!-- HANGUL SYLLABLE GYENJ -->
+      <map code="0xacca" name="1em"/><!-- HANGUL SYLLABLE GYENH -->
+      <map code="0xaccb" name="1em"/><!-- HANGUL SYLLABLE GYED -->
+      <map code="0xaccc" name="1em"/><!-- HANGUL SYLLABLE GYEL -->
+      <map code="0xaccd" name="1em"/><!-- HANGUL SYLLABLE GYELG -->
+      <map code="0xacce" name="1em"/><!-- HANGUL SYLLABLE GYELM -->
+      <map code="0xaccf" name="1em"/><!-- HANGUL SYLLABLE GYELB -->
+      <map code="0xacd0" name="1em"/><!-- HANGUL SYLLABLE GYELS -->
+      <map code="0xacd1" name="1em"/><!-- HANGUL SYLLABLE GYELT -->
+      <map code="0xacd2" name="1em"/><!-- HANGUL SYLLABLE GYELP -->
+      <map code="0xacd3" name="1em"/><!-- HANGUL SYLLABLE GYELH -->
+      <map code="0xacd4" name="1em"/><!-- HANGUL SYLLABLE GYEM -->
+      <map code="0xacd5" name="1em"/><!-- HANGUL SYLLABLE GYEB -->
+      <map code="0xacd6" name="1em"/><!-- HANGUL SYLLABLE GYEBS -->
+      <map code="0xacd7" name="1em"/><!-- HANGUL SYLLABLE GYES -->
+      <map code="0xacd8" name="1em"/><!-- HANGUL SYLLABLE GYESS -->
+      <map code="0xacd9" name="1em"/><!-- HANGUL SYLLABLE GYENG -->
+      <map code="0xacda" name="1em"/><!-- HANGUL SYLLABLE GYEJ -->
+      <map code="0xacdb" name="1em"/><!-- HANGUL SYLLABLE GYEC -->
+      <map code="0xacdc" name="1em"/><!-- HANGUL SYLLABLE GYEK -->
+      <map code="0xacdd" name="1em"/><!-- HANGUL SYLLABLE GYET -->
+      <map code="0xacde" name="1em"/><!-- HANGUL SYLLABLE GYEP -->
+      <map code="0xacdf" name="1em"/><!-- HANGUL SYLLABLE GYEH -->
+      <map code="0xace0" name="1em"/><!-- HANGUL SYLLABLE GO -->
+      <map code="0xace1" name="1em"/><!-- HANGUL SYLLABLE GOG -->
+      <map code="0xace2" name="1em"/><!-- HANGUL SYLLABLE GOGG -->
+      <map code="0xace3" name="1em"/><!-- HANGUL SYLLABLE GOGS -->
+      <map code="0xace4" name="1em"/><!-- HANGUL SYLLABLE GON -->
+      <map code="0xace5" name="1em"/><!-- HANGUL SYLLABLE GONJ -->
+      <map code="0xace6" name="1em"/><!-- HANGUL SYLLABLE GONH -->
+      <map code="0xace7" name="1em"/><!-- HANGUL SYLLABLE GOD -->
+      <map code="0xace8" name="1em"/><!-- HANGUL SYLLABLE GOL -->
+      <map code="0xace9" name="1em"/><!-- HANGUL SYLLABLE GOLG -->
+      <map code="0xacea" name="1em"/><!-- HANGUL SYLLABLE GOLM -->
+      <map code="0xaceb" name="1em"/><!-- HANGUL SYLLABLE GOLB -->
+      <map code="0xacec" name="1em"/><!-- HANGUL SYLLABLE GOLS -->
+      <map code="0xaced" name="1em"/><!-- HANGUL SYLLABLE GOLT -->
+      <map code="0xacee" name="1em"/><!-- HANGUL SYLLABLE GOLP -->
+      <map code="0xacef" name="1em"/><!-- HANGUL SYLLABLE GOLH -->
+      <map code="0xacf0" name="1em"/><!-- HANGUL SYLLABLE GOM -->
+      <map code="0xacf1" name="1em"/><!-- HANGUL SYLLABLE GOB -->
+      <map code="0xacf2" name="1em"/><!-- HANGUL SYLLABLE GOBS -->
+      <map code="0xacf3" name="1em"/><!-- HANGUL SYLLABLE GOS -->
+      <map code="0xacf4" name="1em"/><!-- HANGUL SYLLABLE GOSS -->
+      <map code="0xacf5" name="1em"/><!-- HANGUL SYLLABLE GONG -->
+      <map code="0xacf6" name="1em"/><!-- HANGUL SYLLABLE GOJ -->
+      <map code="0xacf7" name="1em"/><!-- HANGUL SYLLABLE GOC -->
+      <map code="0xacf8" name="1em"/><!-- HANGUL SYLLABLE GOK -->
+      <map code="0xacf9" name="1em"/><!-- HANGUL SYLLABLE GOT -->
+      <map code="0xacfa" name="1em"/><!-- HANGUL SYLLABLE GOP -->
+      <map code="0xacfb" name="1em"/><!-- HANGUL SYLLABLE GOH -->
+      <map code="0xacfc" name="1em"/><!-- HANGUL SYLLABLE GWA -->
+      <map code="0xacfd" name="1em"/><!-- HANGUL SYLLABLE GWAG -->
+      <map code="0xacfe" name="1em"/><!-- HANGUL SYLLABLE GWAGG -->
+      <map code="0xacff" name="1em"/><!-- HANGUL SYLLABLE GWAGS -->
+      <map code="0xad00" name="1em"/><!-- HANGUL SYLLABLE GWAN -->
+      <map code="0xad01" name="1em"/><!-- HANGUL SYLLABLE GWANJ -->
+      <map code="0xad02" name="1em"/><!-- HANGUL SYLLABLE GWANH -->
+      <map code="0xad03" name="1em"/><!-- HANGUL SYLLABLE GWAD -->
+      <map code="0xad04" name="1em"/><!-- HANGUL SYLLABLE GWAL -->
+      <map code="0xad05" name="1em"/><!-- HANGUL SYLLABLE GWALG -->
+      <map code="0xad06" name="1em"/><!-- HANGUL SYLLABLE GWALM -->
+      <map code="0xad07" name="1em"/><!-- HANGUL SYLLABLE GWALB -->
+      <map code="0xad08" name="1em"/><!-- HANGUL SYLLABLE GWALS -->
+      <map code="0xad09" name="1em"/><!-- HANGUL SYLLABLE GWALT -->
+      <map code="0xad0a" name="1em"/><!-- HANGUL SYLLABLE GWALP -->
+      <map code="0xad0b" name="1em"/><!-- HANGUL SYLLABLE GWALH -->
+      <map code="0xad0c" name="1em"/><!-- HANGUL SYLLABLE GWAM -->
+      <map code="0xad0d" name="1em"/><!-- HANGUL SYLLABLE GWAB -->
+      <map code="0xad0e" name="1em"/><!-- HANGUL SYLLABLE GWABS -->
+      <map code="0xad0f" name="1em"/><!-- HANGUL SYLLABLE GWAS -->
+      <map code="0xad10" name="1em"/><!-- HANGUL SYLLABLE GWASS -->
+      <map code="0xad11" name="1em"/><!-- HANGUL SYLLABLE GWANG -->
+      <map code="0xad12" name="1em"/><!-- HANGUL SYLLABLE GWAJ -->
+      <map code="0xad13" name="1em"/><!-- HANGUL SYLLABLE GWAC -->
+      <map code="0xad14" name="1em"/><!-- HANGUL SYLLABLE GWAK -->
+      <map code="0xad15" name="1em"/><!-- HANGUL SYLLABLE GWAT -->
+      <map code="0xad16" name="1em"/><!-- HANGUL SYLLABLE GWAP -->
+      <map code="0xad17" name="1em"/><!-- HANGUL SYLLABLE GWAH -->
+      <map code="0xad18" name="1em"/><!-- HANGUL SYLLABLE GWAE -->
+      <map code="0xad19" name="1em"/><!-- HANGUL SYLLABLE GWAEG -->
+      <map code="0xad1a" name="1em"/><!-- HANGUL SYLLABLE GWAEGG -->
+      <map code="0xad1b" name="1em"/><!-- HANGUL SYLLABLE GWAEGS -->
+      <map code="0xad1c" name="1em"/><!-- HANGUL SYLLABLE GWAEN -->
+      <map code="0xad1d" name="1em"/><!-- HANGUL SYLLABLE GWAENJ -->
+      <map code="0xad1e" name="1em"/><!-- HANGUL SYLLABLE GWAENH -->
+      <map code="0xad1f" name="1em"/><!-- HANGUL SYLLABLE GWAED -->
+      <map code="0xad20" name="1em"/><!-- HANGUL SYLLABLE GWAEL -->
+      <map code="0xad21" name="1em"/><!-- HANGUL SYLLABLE GWAELG -->
+      <map code="0xad22" name="1em"/><!-- HANGUL SYLLABLE GWAELM -->
+      <map code="0xad23" name="1em"/><!-- HANGUL SYLLABLE GWAELB -->
+      <map code="0xad24" name="1em"/><!-- HANGUL SYLLABLE GWAELS -->
+      <map code="0xad25" name="1em"/><!-- HANGUL SYLLABLE GWAELT -->
+      <map code="0xad26" name="1em"/><!-- HANGUL SYLLABLE GWAELP -->
+      <map code="0xad27" name="1em"/><!-- HANGUL SYLLABLE GWAELH -->
+      <map code="0xad28" name="1em"/><!-- HANGUL SYLLABLE GWAEM -->
+      <map code="0xad29" name="1em"/><!-- HANGUL SYLLABLE GWAEB -->
+      <map code="0xad2a" name="1em"/><!-- HANGUL SYLLABLE GWAEBS -->
+      <map code="0xad2b" name="1em"/><!-- HANGUL SYLLABLE GWAES -->
+      <map code="0xad2c" name="1em"/><!-- HANGUL SYLLABLE GWAESS -->
+      <map code="0xad2d" name="1em"/><!-- HANGUL SYLLABLE GWAENG -->
+      <map code="0xad2e" name="1em"/><!-- HANGUL SYLLABLE GWAEJ -->
+      <map code="0xad2f" name="1em"/><!-- HANGUL SYLLABLE GWAEC -->
+      <map code="0xad30" name="1em"/><!-- HANGUL SYLLABLE GWAEK -->
+      <map code="0xad31" name="1em"/><!-- HANGUL SYLLABLE GWAET -->
+      <map code="0xad32" name="1em"/><!-- HANGUL SYLLABLE GWAEP -->
+      <map code="0xad33" name="1em"/><!-- HANGUL SYLLABLE GWAEH -->
+      <map code="0xad34" name="1em"/><!-- HANGUL SYLLABLE GOE -->
+      <map code="0xad35" name="1em"/><!-- HANGUL SYLLABLE GOEG -->
+      <map code="0xad36" name="1em"/><!-- HANGUL SYLLABLE GOEGG -->
+      <map code="0xad37" name="1em"/><!-- HANGUL SYLLABLE GOEGS -->
+      <map code="0xad38" name="1em"/><!-- HANGUL SYLLABLE GOEN -->
+      <map code="0xad39" name="1em"/><!-- HANGUL SYLLABLE GOENJ -->
+      <map code="0xad3a" name="1em"/><!-- HANGUL SYLLABLE GOENH -->
+      <map code="0xad3b" name="1em"/><!-- HANGUL SYLLABLE GOED -->
+      <map code="0xad3c" name="1em"/><!-- HANGUL SYLLABLE GOEL -->
+      <map code="0xad3d" name="1em"/><!-- HANGUL SYLLABLE GOELG -->
+      <map code="0xad3e" name="1em"/><!-- HANGUL SYLLABLE GOELM -->
+      <map code="0xad3f" name="1em"/><!-- HANGUL SYLLABLE GOELB -->
+      <map code="0xad40" name="1em"/><!-- HANGUL SYLLABLE GOELS -->
+      <map code="0xad41" name="1em"/><!-- HANGUL SYLLABLE GOELT -->
+      <map code="0xad42" name="1em"/><!-- HANGUL SYLLABLE GOELP -->
+      <map code="0xad43" name="1em"/><!-- HANGUL SYLLABLE GOELH -->
+      <map code="0xad44" name="1em"/><!-- HANGUL SYLLABLE GOEM -->
+      <map code="0xad45" name="1em"/><!-- HANGUL SYLLABLE GOEB -->
+      <map code="0xad46" name="1em"/><!-- HANGUL SYLLABLE GOEBS -->
+      <map code="0xad47" name="1em"/><!-- HANGUL SYLLABLE GOES -->
+      <map code="0xad48" name="1em"/><!-- HANGUL SYLLABLE GOESS -->
+      <map code="0xad49" name="1em"/><!-- HANGUL SYLLABLE GOENG -->
+      <map code="0xad4a" name="1em"/><!-- HANGUL SYLLABLE GOEJ -->
+      <map code="0xad4b" name="1em"/><!-- HANGUL SYLLABLE GOEC -->
+      <map code="0xad4c" name="1em"/><!-- HANGUL SYLLABLE GOEK -->
+      <map code="0xad4d" name="1em"/><!-- HANGUL SYLLABLE GOET -->
+      <map code="0xad4e" name="1em"/><!-- HANGUL SYLLABLE GOEP -->
+      <map code="0xad4f" name="1em"/><!-- HANGUL SYLLABLE GOEH -->
+      <map code="0xad50" name="1em"/><!-- HANGUL SYLLABLE GYO -->
+      <map code="0xad51" name="1em"/><!-- HANGUL SYLLABLE GYOG -->
+      <map code="0xad52" name="1em"/><!-- HANGUL SYLLABLE GYOGG -->
+      <map code="0xad53" name="1em"/><!-- HANGUL SYLLABLE GYOGS -->
+      <map code="0xad54" name="1em"/><!-- HANGUL SYLLABLE GYON -->
+      <map code="0xad55" name="1em"/><!-- HANGUL SYLLABLE GYONJ -->
+      <map code="0xad56" name="1em"/><!-- HANGUL SYLLABLE GYONH -->
+      <map code="0xad57" name="1em"/><!-- HANGUL SYLLABLE GYOD -->
+      <map code="0xad58" name="1em"/><!-- HANGUL SYLLABLE GYOL -->
+      <map code="0xad59" name="1em"/><!-- HANGUL SYLLABLE GYOLG -->
+      <map code="0xad5a" name="1em"/><!-- HANGUL SYLLABLE GYOLM -->
+      <map code="0xad5b" name="1em"/><!-- HANGUL SYLLABLE GYOLB -->
+      <map code="0xad5c" name="1em"/><!-- HANGUL SYLLABLE GYOLS -->
+      <map code="0xad5d" name="1em"/><!-- HANGUL SYLLABLE GYOLT -->
+      <map code="0xad5e" name="1em"/><!-- HANGUL SYLLABLE GYOLP -->
+      <map code="0xad5f" name="1em"/><!-- HANGUL SYLLABLE GYOLH -->
+      <map code="0xad60" name="1em"/><!-- HANGUL SYLLABLE GYOM -->
+      <map code="0xad61" name="1em"/><!-- HANGUL SYLLABLE GYOB -->
+      <map code="0xad62" name="1em"/><!-- HANGUL SYLLABLE GYOBS -->
+      <map code="0xad63" name="1em"/><!-- HANGUL SYLLABLE GYOS -->
+      <map code="0xad64" name="1em"/><!-- HANGUL SYLLABLE GYOSS -->
+      <map code="0xad65" name="1em"/><!-- HANGUL SYLLABLE GYONG -->
+      <map code="0xad66" name="1em"/><!-- HANGUL SYLLABLE GYOJ -->
+      <map code="0xad67" name="1em"/><!-- HANGUL SYLLABLE GYOC -->
+      <map code="0xad68" name="1em"/><!-- HANGUL SYLLABLE GYOK -->
+      <map code="0xad69" name="1em"/><!-- HANGUL SYLLABLE GYOT -->
+      <map code="0xad6a" name="1em"/><!-- HANGUL SYLLABLE GYOP -->
+      <map code="0xad6b" name="1em"/><!-- HANGUL SYLLABLE GYOH -->
+      <map code="0xad6c" name="1em"/><!-- HANGUL SYLLABLE GU -->
+      <map code="0xad6d" name="1em"/><!-- HANGUL SYLLABLE GUG -->
+      <map code="0xad6e" name="1em"/><!-- HANGUL SYLLABLE GUGG -->
+      <map code="0xad6f" name="1em"/><!-- HANGUL SYLLABLE GUGS -->
+      <map code="0xad70" name="1em"/><!-- HANGUL SYLLABLE GUN -->
+      <map code="0xad71" name="1em"/><!-- HANGUL SYLLABLE GUNJ -->
+      <map code="0xad72" name="1em"/><!-- HANGUL SYLLABLE GUNH -->
+      <map code="0xad73" name="1em"/><!-- HANGUL SYLLABLE GUD -->
+      <map code="0xad74" name="1em"/><!-- HANGUL SYLLABLE GUL -->
+      <map code="0xad75" name="1em"/><!-- HANGUL SYLLABLE GULG -->
+      <map code="0xad76" name="1em"/><!-- HANGUL SYLLABLE GULM -->
+      <map code="0xad77" name="1em"/><!-- HANGUL SYLLABLE GULB -->
+      <map code="0xad78" name="1em"/><!-- HANGUL SYLLABLE GULS -->
+      <map code="0xad79" name="1em"/><!-- HANGUL SYLLABLE GULT -->
+      <map code="0xad7a" name="1em"/><!-- HANGUL SYLLABLE GULP -->
+      <map code="0xad7b" name="1em"/><!-- HANGUL SYLLABLE GULH -->
+      <map code="0xad7c" name="1em"/><!-- HANGUL SYLLABLE GUM -->
+      <map code="0xad7d" name="1em"/><!-- HANGUL SYLLABLE GUB -->
+      <map code="0xad7e" name="1em"/><!-- HANGUL SYLLABLE GUBS -->
+      <map code="0xad7f" name="1em"/><!-- HANGUL SYLLABLE GUS -->
+      <map code="0xad80" name="1em"/><!-- HANGUL SYLLABLE GUSS -->
+      <map code="0xad81" name="1em"/><!-- HANGUL SYLLABLE GUNG -->
+      <map code="0xad82" name="1em"/><!-- HANGUL SYLLABLE GUJ -->
+      <map code="0xad83" name="1em"/><!-- HANGUL SYLLABLE GUC -->
+      <map code="0xad84" name="1em"/><!-- HANGUL SYLLABLE GUK -->
+      <map code="0xad85" name="1em"/><!-- HANGUL SYLLABLE GUT -->
+      <map code="0xad86" name="1em"/><!-- HANGUL SYLLABLE GUP -->
+      <map code="0xad87" name="1em"/><!-- HANGUL SYLLABLE GUH -->
+      <map code="0xad88" name="1em"/><!-- HANGUL SYLLABLE GWEO -->
+      <map code="0xad89" name="1em"/><!-- HANGUL SYLLABLE GWEOG -->
+      <map code="0xad8a" name="1em"/><!-- HANGUL SYLLABLE GWEOGG -->
+      <map code="0xad8b" name="1em"/><!-- HANGUL SYLLABLE GWEOGS -->
+      <map code="0xad8c" name="1em"/><!-- HANGUL SYLLABLE GWEON -->
+      <map code="0xad8d" name="1em"/><!-- HANGUL SYLLABLE GWEONJ -->
+      <map code="0xad8e" name="1em"/><!-- HANGUL SYLLABLE GWEONH -->
+      <map code="0xad8f" name="1em"/><!-- HANGUL SYLLABLE GWEOD -->
+      <map code="0xad90" name="1em"/><!-- HANGUL SYLLABLE GWEOL -->
+      <map code="0xad91" name="1em"/><!-- HANGUL SYLLABLE GWEOLG -->
+      <map code="0xad92" name="1em"/><!-- HANGUL SYLLABLE GWEOLM -->
+      <map code="0xad93" name="1em"/><!-- HANGUL SYLLABLE GWEOLB -->
+      <map code="0xad94" name="1em"/><!-- HANGUL SYLLABLE GWEOLS -->
+      <map code="0xad95" name="1em"/><!-- HANGUL SYLLABLE GWEOLT -->
+      <map code="0xad96" name="1em"/><!-- HANGUL SYLLABLE GWEOLP -->
+      <map code="0xad97" name="1em"/><!-- HANGUL SYLLABLE GWEOLH -->
+      <map code="0xad98" name="1em"/><!-- HANGUL SYLLABLE GWEOM -->
+      <map code="0xad99" name="1em"/><!-- HANGUL SYLLABLE GWEOB -->
+      <map code="0xad9a" name="1em"/><!-- HANGUL SYLLABLE GWEOBS -->
+      <map code="0xad9b" name="1em"/><!-- HANGUL SYLLABLE GWEOS -->
+      <map code="0xad9c" name="1em"/><!-- HANGUL SYLLABLE GWEOSS -->
+      <map code="0xad9d" name="1em"/><!-- HANGUL SYLLABLE GWEONG -->
+      <map code="0xad9e" name="1em"/><!-- HANGUL SYLLABLE GWEOJ -->
+      <map code="0xad9f" name="1em"/><!-- HANGUL SYLLABLE GWEOC -->
+      <map code="0xada0" name="1em"/><!-- HANGUL SYLLABLE GWEOK -->
+      <map code="0xada1" name="1em"/><!-- HANGUL SYLLABLE GWEOT -->
+      <map code="0xada2" name="1em"/><!-- HANGUL SYLLABLE GWEOP -->
+      <map code="0xada3" name="1em"/><!-- HANGUL SYLLABLE GWEOH -->
+      <map code="0xada4" name="1em"/><!-- HANGUL SYLLABLE GWE -->
+      <map code="0xada5" name="1em"/><!-- HANGUL SYLLABLE GWEG -->
+      <map code="0xada6" name="1em"/><!-- HANGUL SYLLABLE GWEGG -->
+      <map code="0xada7" name="1em"/><!-- HANGUL SYLLABLE GWEGS -->
+      <map code="0xada8" name="1em"/><!-- HANGUL SYLLABLE GWEN -->
+      <map code="0xada9" name="1em"/><!-- HANGUL SYLLABLE GWENJ -->
+      <map code="0xadaa" name="1em"/><!-- HANGUL SYLLABLE GWENH -->
+      <map code="0xadab" name="1em"/><!-- HANGUL SYLLABLE GWED -->
+      <map code="0xadac" name="1em"/><!-- HANGUL SYLLABLE GWEL -->
+      <map code="0xadad" name="1em"/><!-- HANGUL SYLLABLE GWELG -->
+      <map code="0xadae" name="1em"/><!-- HANGUL SYLLABLE GWELM -->
+      <map code="0xadaf" name="1em"/><!-- HANGUL SYLLABLE GWELB -->
+      <map code="0xadb0" name="1em"/><!-- HANGUL SYLLABLE GWELS -->
+      <map code="0xadb1" name="1em"/><!-- HANGUL SYLLABLE GWELT -->
+      <map code="0xadb2" name="1em"/><!-- HANGUL SYLLABLE GWELP -->
+      <map code="0xadb3" name="1em"/><!-- HANGUL SYLLABLE GWELH -->
+      <map code="0xadb4" name="1em"/><!-- HANGUL SYLLABLE GWEM -->
+      <map code="0xadb5" name="1em"/><!-- HANGUL SYLLABLE GWEB -->
+      <map code="0xadb6" name="1em"/><!-- HANGUL SYLLABLE GWEBS -->
+      <map code="0xadb7" name="1em"/><!-- HANGUL SYLLABLE GWES -->
+      <map code="0xadb8" name="1em"/><!-- HANGUL SYLLABLE GWESS -->
+      <map code="0xadb9" name="1em"/><!-- HANGUL SYLLABLE GWENG -->
+      <map code="0xadba" name="1em"/><!-- HANGUL SYLLABLE GWEJ -->
+      <map code="0xadbb" name="1em"/><!-- HANGUL SYLLABLE GWEC -->
+      <map code="0xadbc" name="1em"/><!-- HANGUL SYLLABLE GWEK -->
+      <map code="0xadbd" name="1em"/><!-- HANGUL SYLLABLE GWET -->
+      <map code="0xadbe" name="1em"/><!-- HANGUL SYLLABLE GWEP -->
+      <map code="0xadbf" name="1em"/><!-- HANGUL SYLLABLE GWEH -->
+      <map code="0xadc0" name="1em"/><!-- HANGUL SYLLABLE GWI -->
+      <map code="0xadc1" name="1em"/><!-- HANGUL SYLLABLE GWIG -->
+      <map code="0xadc2" name="1em"/><!-- HANGUL SYLLABLE GWIGG -->
+      <map code="0xadc3" name="1em"/><!-- HANGUL SYLLABLE GWIGS -->
+      <map code="0xadc4" name="1em"/><!-- HANGUL SYLLABLE GWIN -->
+      <map code="0xadc5" name="1em"/><!-- HANGUL SYLLABLE GWINJ -->
+      <map code="0xadc6" name="1em"/><!-- HANGUL SYLLABLE GWINH -->
+      <map code="0xadc7" name="1em"/><!-- HANGUL SYLLABLE GWID -->
+      <map code="0xadc8" name="1em"/><!-- HANGUL SYLLABLE GWIL -->
+      <map code="0xadc9" name="1em"/><!-- HANGUL SYLLABLE GWILG -->
+      <map code="0xadca" name="1em"/><!-- HANGUL SYLLABLE GWILM -->
+      <map code="0xadcb" name="1em"/><!-- HANGUL SYLLABLE GWILB -->
+      <map code="0xadcc" name="1em"/><!-- HANGUL SYLLABLE GWILS -->
+      <map code="0xadcd" name="1em"/><!-- HANGUL SYLLABLE GWILT -->
+      <map code="0xadce" name="1em"/><!-- HANGUL SYLLABLE GWILP -->
+      <map code="0xadcf" name="1em"/><!-- HANGUL SYLLABLE GWILH -->
+      <map code="0xadd0" name="1em"/><!-- HANGUL SYLLABLE GWIM -->
+      <map code="0xadd1" name="1em"/><!-- HANGUL SYLLABLE GWIB -->
+      <map code="0xadd2" name="1em"/><!-- HANGUL SYLLABLE GWIBS -->
+      <map code="0xadd3" name="1em"/><!-- HANGUL SYLLABLE GWIS -->
+      <map code="0xadd4" name="1em"/><!-- HANGUL SYLLABLE GWISS -->
+      <map code="0xadd5" name="1em"/><!-- HANGUL SYLLABLE GWING -->
+      <map code="0xadd6" name="1em"/><!-- HANGUL SYLLABLE GWIJ -->
+      <map code="0xadd7" name="1em"/><!-- HANGUL SYLLABLE GWIC -->
+      <map code="0xadd8" name="1em"/><!-- HANGUL SYLLABLE GWIK -->
+      <map code="0xadd9" name="1em"/><!-- HANGUL SYLLABLE GWIT -->
+      <map code="0xadda" name="1em"/><!-- HANGUL SYLLABLE GWIP -->
+      <map code="0xaddb" name="1em"/><!-- HANGUL SYLLABLE GWIH -->
+      <map code="0xaddc" name="1em"/><!-- HANGUL SYLLABLE GYU -->
+      <map code="0xaddd" name="1em"/><!-- HANGUL SYLLABLE GYUG -->
+      <map code="0xadde" name="1em"/><!-- HANGUL SYLLABLE GYUGG -->
+      <map code="0xaddf" name="1em"/><!-- HANGUL SYLLABLE GYUGS -->
+      <map code="0xade0" name="1em"/><!-- HANGUL SYLLABLE GYUN -->
+      <map code="0xade1" name="1em"/><!-- HANGUL SYLLABLE GYUNJ -->
+      <map code="0xade2" name="1em"/><!-- HANGUL SYLLABLE GYUNH -->
+      <map code="0xade3" name="1em"/><!-- HANGUL SYLLABLE GYUD -->
+      <map code="0xade4" name="1em"/><!-- HANGUL SYLLABLE GYUL -->
+      <map code="0xade5" name="1em"/><!-- HANGUL SYLLABLE GYULG -->
+      <map code="0xade6" name="1em"/><!-- HANGUL SYLLABLE GYULM -->
+      <map code="0xade7" name="1em"/><!-- HANGUL SYLLABLE GYULB -->
+      <map code="0xade8" name="1em"/><!-- HANGUL SYLLABLE GYULS -->
+      <map code="0xade9" name="1em"/><!-- HANGUL SYLLABLE GYULT -->
+      <map code="0xadea" name="1em"/><!-- HANGUL SYLLABLE GYULP -->
+      <map code="0xadeb" name="1em"/><!-- HANGUL SYLLABLE GYULH -->
+      <map code="0xadec" name="1em"/><!-- HANGUL SYLLABLE GYUM -->
+      <map code="0xaded" name="1em"/><!-- HANGUL SYLLABLE GYUB -->
+      <map code="0xadee" name="1em"/><!-- HANGUL SYLLABLE GYUBS -->
+      <map code="0xadef" name="1em"/><!-- HANGUL SYLLABLE GYUS -->
+      <map code="0xadf0" name="1em"/><!-- HANGUL SYLLABLE GYUSS -->
+      <map code="0xadf1" name="1em"/><!-- HANGUL SYLLABLE GYUNG -->
+      <map code="0xadf2" name="1em"/><!-- HANGUL SYLLABLE GYUJ -->
+      <map code="0xadf3" name="1em"/><!-- HANGUL SYLLABLE GYUC -->
+      <map code="0xadf4" name="1em"/><!-- HANGUL SYLLABLE GYUK -->
+      <map code="0xadf5" name="1em"/><!-- HANGUL SYLLABLE GYUT -->
+      <map code="0xadf6" name="1em"/><!-- HANGUL SYLLABLE GYUP -->
+      <map code="0xadf7" name="1em"/><!-- HANGUL SYLLABLE GYUH -->
+      <map code="0xadf8" name="1em"/><!-- HANGUL SYLLABLE GEU -->
+      <map code="0xadf9" name="1em"/><!-- HANGUL SYLLABLE GEUG -->
+      <map code="0xadfa" name="1em"/><!-- HANGUL SYLLABLE GEUGG -->
+      <map code="0xadfb" name="1em"/><!-- HANGUL SYLLABLE GEUGS -->
+      <map code="0xadfc" name="1em"/><!-- HANGUL SYLLABLE GEUN -->
+      <map code="0xadfd" name="1em"/><!-- HANGUL SYLLABLE GEUNJ -->
+      <map code="0xadfe" name="1em"/><!-- HANGUL SYLLABLE GEUNH -->
+      <map code="0xadff" name="1em"/><!-- HANGUL SYLLABLE GEUD -->
+      <map code="0xae00" name="1em"/><!-- HANGUL SYLLABLE GEUL -->
+      <map code="0xae01" name="1em"/><!-- HANGUL SYLLABLE GEULG -->
+      <map code="0xae02" name="1em"/><!-- HANGUL SYLLABLE GEULM -->
+      <map code="0xae03" name="1em"/><!-- HANGUL SYLLABLE GEULB -->
+      <map code="0xae04" name="1em"/><!-- HANGUL SYLLABLE GEULS -->
+      <map code="0xae05" name="1em"/><!-- HANGUL SYLLABLE GEULT -->
+      <map code="0xae06" name="1em"/><!-- HANGUL SYLLABLE GEULP -->
+      <map code="0xae07" name="1em"/><!-- HANGUL SYLLABLE GEULH -->
+      <map code="0xae08" name="1em"/><!-- HANGUL SYLLABLE GEUM -->
+      <map code="0xae09" name="1em"/><!-- HANGUL SYLLABLE GEUB -->
+      <map code="0xae0a" name="1em"/><!-- HANGUL SYLLABLE GEUBS -->
+      <map code="0xae0b" name="1em"/><!-- HANGUL SYLLABLE GEUS -->
+      <map code="0xae0c" name="1em"/><!-- HANGUL SYLLABLE GEUSS -->
+      <map code="0xae0d" name="1em"/><!-- HANGUL SYLLABLE GEUNG -->
+      <map code="0xae0e" name="1em"/><!-- HANGUL SYLLABLE GEUJ -->
+      <map code="0xae0f" name="1em"/><!-- HANGUL SYLLABLE GEUC -->
+      <map code="0xae10" name="1em"/><!-- HANGUL SYLLABLE GEUK -->
+      <map code="0xae11" name="1em"/><!-- HANGUL SYLLABLE GEUT -->
+      <map code="0xae12" name="1em"/><!-- HANGUL SYLLABLE GEUP -->
+      <map code="0xae13" name="1em"/><!-- HANGUL SYLLABLE GEUH -->
+      <map code="0xae14" name="1em"/><!-- HANGUL SYLLABLE GYI -->
+      <map code="0xae15" name="1em"/><!-- HANGUL SYLLABLE GYIG -->
+      <map code="0xae16" name="1em"/><!-- HANGUL SYLLABLE GYIGG -->
+      <map code="0xae17" name="1em"/><!-- HANGUL SYLLABLE GYIGS -->
+      <map code="0xae18" name="1em"/><!-- HANGUL SYLLABLE GYIN -->
+      <map code="0xae19" name="1em"/><!-- HANGUL SYLLABLE GYINJ -->
+      <map code="0xae1a" name="1em"/><!-- HANGUL SYLLABLE GYINH -->
+      <map code="0xae1b" name="1em"/><!-- HANGUL SYLLABLE GYID -->
+      <map code="0xae1c" name="1em"/><!-- HANGUL SYLLABLE GYIL -->
+      <map code="0xae1d" name="1em"/><!-- HANGUL SYLLABLE GYILG -->
+      <map code="0xae1e" name="1em"/><!-- HANGUL SYLLABLE GYILM -->
+      <map code="0xae1f" name="1em"/><!-- HANGUL SYLLABLE GYILB -->
+      <map code="0xae20" name="1em"/><!-- HANGUL SYLLABLE GYILS -->
+      <map code="0xae21" name="1em"/><!-- HANGUL SYLLABLE GYILT -->
+      <map code="0xae22" name="1em"/><!-- HANGUL SYLLABLE GYILP -->
+      <map code="0xae23" name="1em"/><!-- HANGUL SYLLABLE GYILH -->
+      <map code="0xae24" name="1em"/><!-- HANGUL SYLLABLE GYIM -->
+      <map code="0xae25" name="1em"/><!-- HANGUL SYLLABLE GYIB -->
+      <map code="0xae26" name="1em"/><!-- HANGUL SYLLABLE GYIBS -->
+      <map code="0xae27" name="1em"/><!-- HANGUL SYLLABLE GYIS -->
+      <map code="0xae28" name="1em"/><!-- HANGUL SYLLABLE GYISS -->
+      <map code="0xae29" name="1em"/><!-- HANGUL SYLLABLE GYING -->
+      <map code="0xae2a" name="1em"/><!-- HANGUL SYLLABLE GYIJ -->
+      <map code="0xae2b" name="1em"/><!-- HANGUL SYLLABLE GYIC -->
+      <map code="0xae2c" name="1em"/><!-- HANGUL SYLLABLE GYIK -->
+      <map code="0xae2d" name="1em"/><!-- HANGUL SYLLABLE GYIT -->
+      <map code="0xae2e" name="1em"/><!-- HANGUL SYLLABLE GYIP -->
+      <map code="0xae2f" name="1em"/><!-- HANGUL SYLLABLE GYIH -->
+      <map code="0xae30" name="1em"/><!-- HANGUL SYLLABLE GI -->
+      <map code="0xae31" name="1em"/><!-- HANGUL SYLLABLE GIG -->
+      <map code="0xae32" name="1em"/><!-- HANGUL SYLLABLE GIGG -->
+      <map code="0xae33" name="1em"/><!-- HANGUL SYLLABLE GIGS -->
+      <map code="0xae34" name="1em"/><!-- HANGUL SYLLABLE GIN -->
+      <map code="0xae35" name="1em"/><!-- HANGUL SYLLABLE GINJ -->
+      <map code="0xae36" name="1em"/><!-- HANGUL SYLLABLE GINH -->
+      <map code="0xae37" name="1em"/><!-- HANGUL SYLLABLE GID -->
+      <map code="0xae38" name="1em"/><!-- HANGUL SYLLABLE GIL -->
+      <map code="0xae39" name="1em"/><!-- HANGUL SYLLABLE GILG -->
+      <map code="0xae3a" name="1em"/><!-- HANGUL SYLLABLE GILM -->
+      <map code="0xae3b" name="1em"/><!-- HANGUL SYLLABLE GILB -->
+      <map code="0xae3c" name="1em"/><!-- HANGUL SYLLABLE GILS -->
+      <map code="0xae3d" name="1em"/><!-- HANGUL SYLLABLE GILT -->
+      <map code="0xae3e" name="1em"/><!-- HANGUL SYLLABLE GILP -->
+      <map code="0xae3f" name="1em"/><!-- HANGUL SYLLABLE GILH -->
+      <map code="0xae40" name="1em"/><!-- HANGUL SYLLABLE GIM -->
+      <map code="0xae41" name="1em"/><!-- HANGUL SYLLABLE GIB -->
+      <map code="0xae42" name="1em"/><!-- HANGUL SYLLABLE GIBS -->
+      <map code="0xae43" name="1em"/><!-- HANGUL SYLLABLE GIS -->
+      <map code="0xae44" name="1em"/><!-- HANGUL SYLLABLE GISS -->
+      <map code="0xae45" name="1em"/><!-- HANGUL SYLLABLE GING -->
+      <map code="0xae46" name="1em"/><!-- HANGUL SYLLABLE GIJ -->
+      <map code="0xae47" name="1em"/><!-- HANGUL SYLLABLE GIC -->
+      <map code="0xae48" name="1em"/><!-- HANGUL SYLLABLE GIK -->
+      <map code="0xae49" name="1em"/><!-- HANGUL SYLLABLE GIT -->
+      <map code="0xae4a" name="1em"/><!-- HANGUL SYLLABLE GIP -->
+      <map code="0xae4b" name="1em"/><!-- HANGUL SYLLABLE GIH -->
+      <map code="0xae4c" name="1em"/><!-- HANGUL SYLLABLE GGA -->
+      <map code="0xae4d" name="1em"/><!-- HANGUL SYLLABLE GGAG -->
+      <map code="0xae4e" name="1em"/><!-- HANGUL SYLLABLE GGAGG -->
+      <map code="0xae4f" name="1em"/><!-- HANGUL SYLLABLE GGAGS -->
+      <map code="0xae50" name="1em"/><!-- HANGUL SYLLABLE GGAN -->
+      <map code="0xae51" name="1em"/><!-- HANGUL SYLLABLE GGANJ -->
+      <map code="0xae52" name="1em"/><!-- HANGUL SYLLABLE GGANH -->
+      <map code="0xae53" name="1em"/><!-- HANGUL SYLLABLE GGAD -->
+      <map code="0xae54" name="1em"/><!-- HANGUL SYLLABLE GGAL -->
+      <map code="0xae55" name="1em"/><!-- HANGUL SYLLABLE GGALG -->
+      <map code="0xae56" name="1em"/><!-- HANGUL SYLLABLE GGALM -->
+      <map code="0xae57" name="1em"/><!-- HANGUL SYLLABLE GGALB -->
+      <map code="0xae58" name="1em"/><!-- HANGUL SYLLABLE GGALS -->
+      <map code="0xae59" name="1em"/><!-- HANGUL SYLLABLE GGALT -->
+      <map code="0xae5a" name="1em"/><!-- HANGUL SYLLABLE GGALP -->
+      <map code="0xae5b" name="1em"/><!-- HANGUL SYLLABLE GGALH -->
+      <map code="0xae5c" name="1em"/><!-- HANGUL SYLLABLE GGAM -->
+      <map code="0xae5d" name="1em"/><!-- HANGUL SYLLABLE GGAB -->
+      <map code="0xae5e" name="1em"/><!-- HANGUL SYLLABLE GGABS -->
+      <map code="0xae5f" name="1em"/><!-- HANGUL SYLLABLE GGAS -->
+      <map code="0xae60" name="1em"/><!-- HANGUL SYLLABLE GGASS -->
+      <map code="0xae61" name="1em"/><!-- HANGUL SYLLABLE GGANG -->
+      <map code="0xae62" name="1em"/><!-- HANGUL SYLLABLE GGAJ -->
+      <map code="0xae63" name="1em"/><!-- HANGUL SYLLABLE GGAC -->
+      <map code="0xae64" name="1em"/><!-- HANGUL SYLLABLE GGAK -->
+      <map code="0xae65" name="1em"/><!-- HANGUL SYLLABLE GGAT -->
+      <map code="0xae66" name="1em"/><!-- HANGUL SYLLABLE GGAP -->
+      <map code="0xae67" name="1em"/><!-- HANGUL SYLLABLE GGAH -->
+      <map code="0xae68" name="1em"/><!-- HANGUL SYLLABLE GGAE -->
+      <map code="0xae69" name="1em"/><!-- HANGUL SYLLABLE GGAEG -->
+      <map code="0xae6a" name="1em"/><!-- HANGUL SYLLABLE GGAEGG -->
+      <map code="0xae6b" name="1em"/><!-- HANGUL SYLLABLE GGAEGS -->
+      <map code="0xae6c" name="1em"/><!-- HANGUL SYLLABLE GGAEN -->
+      <map code="0xae6d" name="1em"/><!-- HANGUL SYLLABLE GGAENJ -->
+      <map code="0xae6e" name="1em"/><!-- HANGUL SYLLABLE GGAENH -->
+      <map code="0xae6f" name="1em"/><!-- HANGUL SYLLABLE GGAED -->
+      <map code="0xae70" name="1em"/><!-- HANGUL SYLLABLE GGAEL -->
+      <map code="0xae71" name="1em"/><!-- HANGUL SYLLABLE GGAELG -->
+      <map code="0xae72" name="1em"/><!-- HANGUL SYLLABLE GGAELM -->
+      <map code="0xae73" name="1em"/><!-- HANGUL SYLLABLE GGAELB -->
+      <map code="0xae74" name="1em"/><!-- HANGUL SYLLABLE GGAELS -->
+      <map code="0xae75" name="1em"/><!-- HANGUL SYLLABLE GGAELT -->
+      <map code="0xae76" name="1em"/><!-- HANGUL SYLLABLE GGAELP -->
+      <map code="0xae77" name="1em"/><!-- HANGUL SYLLABLE GGAELH -->
+      <map code="0xae78" name="1em"/><!-- HANGUL SYLLABLE GGAEM -->
+      <map code="0xae79" name="1em"/><!-- HANGUL SYLLABLE GGAEB -->
+      <map code="0xae7a" name="1em"/><!-- HANGUL SYLLABLE GGAEBS -->
+      <map code="0xae7b" name="1em"/><!-- HANGUL SYLLABLE GGAES -->
+      <map code="0xae7c" name="1em"/><!-- HANGUL SYLLABLE GGAESS -->
+      <map code="0xae7d" name="1em"/><!-- HANGUL SYLLABLE GGAENG -->
+      <map code="0xae7e" name="1em"/><!-- HANGUL SYLLABLE GGAEJ -->
+      <map code="0xae7f" name="1em"/><!-- HANGUL SYLLABLE GGAEC -->
+      <map code="0xae80" name="1em"/><!-- HANGUL SYLLABLE GGAEK -->
+      <map code="0xae81" name="1em"/><!-- HANGUL SYLLABLE GGAET -->
+      <map code="0xae82" name="1em"/><!-- HANGUL SYLLABLE GGAEP -->
+      <map code="0xae83" name="1em"/><!-- HANGUL SYLLABLE GGAEH -->
+      <map code="0xae84" name="1em"/><!-- HANGUL SYLLABLE GGYA -->
+      <map code="0xae85" name="1em"/><!-- HANGUL SYLLABLE GGYAG -->
+      <map code="0xae86" name="1em"/><!-- HANGUL SYLLABLE GGYAGG -->
+      <map code="0xae87" name="1em"/><!-- HANGUL SYLLABLE GGYAGS -->
+      <map code="0xae88" name="1em"/><!-- HANGUL SYLLABLE GGYAN -->
+      <map code="0xae89" name="1em"/><!-- HANGUL SYLLABLE GGYANJ -->
+      <map code="0xae8a" name="1em"/><!-- HANGUL SYLLABLE GGYANH -->
+      <map code="0xae8b" name="1em"/><!-- HANGUL SYLLABLE GGYAD -->
+      <map code="0xae8c" name="1em"/><!-- HANGUL SYLLABLE GGYAL -->
+      <map code="0xae8d" name="1em"/><!-- HANGUL SYLLABLE GGYALG -->
+      <map code="0xae8e" name="1em"/><!-- HANGUL SYLLABLE GGYALM -->
+      <map code="0xae8f" name="1em"/><!-- HANGUL SYLLABLE GGYALB -->
+      <map code="0xae90" name="1em"/><!-- HANGUL SYLLABLE GGYALS -->
+      <map code="0xae91" name="1em"/><!-- HANGUL SYLLABLE GGYALT -->
+      <map code="0xae92" name="1em"/><!-- HANGUL SYLLABLE GGYALP -->
+      <map code="0xae93" name="1em"/><!-- HANGUL SYLLABLE GGYALH -->
+      <map code="0xae94" name="1em"/><!-- HANGUL SYLLABLE GGYAM -->
+      <map code="0xae95" name="1em"/><!-- HANGUL SYLLABLE GGYAB -->
+      <map code="0xae96" name="1em"/><!-- HANGUL SYLLABLE GGYABS -->
+      <map code="0xae97" name="1em"/><!-- HANGUL SYLLABLE GGYAS -->
+      <map code="0xae98" name="1em"/><!-- HANGUL SYLLABLE GGYASS -->
+      <map code="0xae99" name="1em"/><!-- HANGUL SYLLABLE GGYANG -->
+      <map code="0xae9a" name="1em"/><!-- HANGUL SYLLABLE GGYAJ -->
+      <map code="0xae9b" name="1em"/><!-- HANGUL SYLLABLE GGYAC -->
+      <map code="0xae9c" name="1em"/><!-- HANGUL SYLLABLE GGYAK -->
+      <map code="0xae9d" name="1em"/><!-- HANGUL SYLLABLE GGYAT -->
+      <map code="0xae9e" name="1em"/><!-- HANGUL SYLLABLE GGYAP -->
+      <map code="0xae9f" name="1em"/><!-- HANGUL SYLLABLE GGYAH -->
+      <map code="0xaea0" name="1em"/><!-- HANGUL SYLLABLE GGYAE -->
+      <map code="0xaea1" name="1em"/><!-- HANGUL SYLLABLE GGYAEG -->
+      <map code="0xaea2" name="1em"/><!-- HANGUL SYLLABLE GGYAEGG -->
+      <map code="0xaea3" name="1em"/><!-- HANGUL SYLLABLE GGYAEGS -->
+      <map code="0xaea4" name="1em"/><!-- HANGUL SYLLABLE GGYAEN -->
+      <map code="0xaea5" name="1em"/><!-- HANGUL SYLLABLE GGYAENJ -->
+      <map code="0xaea6" name="1em"/><!-- HANGUL SYLLABLE GGYAENH -->
+      <map code="0xaea7" name="1em"/><!-- HANGUL SYLLABLE GGYAED -->
+      <map code="0xaea8" name="1em"/><!-- HANGUL SYLLABLE GGYAEL -->
+      <map code="0xaea9" name="1em"/><!-- HANGUL SYLLABLE GGYAELG -->
+      <map code="0xaeaa" name="1em"/><!-- HANGUL SYLLABLE GGYAELM -->
+      <map code="0xaeab" name="1em"/><!-- HANGUL SYLLABLE GGYAELB -->
+      <map code="0xaeac" name="1em"/><!-- HANGUL SYLLABLE GGYAELS -->
+      <map code="0xaead" name="1em"/><!-- HANGUL SYLLABLE GGYAELT -->
+      <map code="0xaeae" name="1em"/><!-- HANGUL SYLLABLE GGYAELP -->
+      <map code="0xaeaf" name="1em"/><!-- HANGUL SYLLABLE GGYAELH -->
+      <map code="0xaeb0" name="1em"/><!-- HANGUL SYLLABLE GGYAEM -->
+      <map code="0xaeb1" name="1em"/><!-- HANGUL SYLLABLE GGYAEB -->
+      <map code="0xaeb2" name="1em"/><!-- HANGUL SYLLABLE GGYAEBS -->
+      <map code="0xaeb3" name="1em"/><!-- HANGUL SYLLABLE GGYAES -->
+      <map code="0xaeb4" name="1em"/><!-- HANGUL SYLLABLE GGYAESS -->
+      <map code="0xaeb5" name="1em"/><!-- HANGUL SYLLABLE GGYAENG -->
+      <map code="0xaeb6" name="1em"/><!-- HANGUL SYLLABLE GGYAEJ -->
+      <map code="0xaeb7" name="1em"/><!-- HANGUL SYLLABLE GGYAEC -->
+      <map code="0xaeb8" name="1em"/><!-- HANGUL SYLLABLE GGYAEK -->
+      <map code="0xaeb9" name="1em"/><!-- HANGUL SYLLABLE GGYAET -->
+      <map code="0xaeba" name="1em"/><!-- HANGUL SYLLABLE GGYAEP -->
+      <map code="0xaebb" name="1em"/><!-- HANGUL SYLLABLE GGYAEH -->
+      <map code="0xaebc" name="1em"/><!-- HANGUL SYLLABLE GGEO -->
+      <map code="0xaebd" name="1em"/><!-- HANGUL SYLLABLE GGEOG -->
+      <map code="0xaebe" name="1em"/><!-- HANGUL SYLLABLE GGEOGG -->
+      <map code="0xaebf" name="1em"/><!-- HANGUL SYLLABLE GGEOGS -->
+      <map code="0xaec0" name="1em"/><!-- HANGUL SYLLABLE GGEON -->
+      <map code="0xaec1" name="1em"/><!-- HANGUL SYLLABLE GGEONJ -->
+      <map code="0xaec2" name="1em"/><!-- HANGUL SYLLABLE GGEONH -->
+      <map code="0xaec3" name="1em"/><!-- HANGUL SYLLABLE GGEOD -->
+      <map code="0xaec4" name="1em"/><!-- HANGUL SYLLABLE GGEOL -->
+      <map code="0xaec5" name="1em"/><!-- HANGUL SYLLABLE GGEOLG -->
+      <map code="0xaec6" name="1em"/><!-- HANGUL SYLLABLE GGEOLM -->
+      <map code="0xaec7" name="1em"/><!-- HANGUL SYLLABLE GGEOLB -->
+      <map code="0xaec8" name="1em"/><!-- HANGUL SYLLABLE GGEOLS -->
+      <map code="0xaec9" name="1em"/><!-- HANGUL SYLLABLE GGEOLT -->
+      <map code="0xaeca" name="1em"/><!-- HANGUL SYLLABLE GGEOLP -->
+      <map code="0xaecb" name="1em"/><!-- HANGUL SYLLABLE GGEOLH -->
+      <map code="0xaecc" name="1em"/><!-- HANGUL SYLLABLE GGEOM -->
+      <map code="0xaecd" name="1em"/><!-- HANGUL SYLLABLE GGEOB -->
+      <map code="0xaece" name="1em"/><!-- HANGUL SYLLABLE GGEOBS -->
+      <map code="0xaecf" name="1em"/><!-- HANGUL SYLLABLE GGEOS -->
+      <map code="0xaed0" name="1em"/><!-- HANGUL SYLLABLE GGEOSS -->
+      <map code="0xaed1" name="1em"/><!-- HANGUL SYLLABLE GGEONG -->
+      <map code="0xaed2" name="1em"/><!-- HANGUL SYLLABLE GGEOJ -->
+      <map code="0xaed3" name="1em"/><!-- HANGUL SYLLABLE GGEOC -->
+      <map code="0xaed4" name="1em"/><!-- HANGUL SYLLABLE GGEOK -->
+      <map code="0xaed5" name="1em"/><!-- HANGUL SYLLABLE GGEOT -->
+      <map code="0xaed6" name="1em"/><!-- HANGUL SYLLABLE GGEOP -->
+      <map code="0xaed7" name="1em"/><!-- HANGUL SYLLABLE GGEOH -->
+      <map code="0xaed8" name="1em"/><!-- HANGUL SYLLABLE GGE -->
+      <map code="0xaed9" name="1em"/><!-- HANGUL SYLLABLE GGEG -->
+      <map code="0xaeda" name="1em"/><!-- HANGUL SYLLABLE GGEGG -->
+      <map code="0xaedb" name="1em"/><!-- HANGUL SYLLABLE GGEGS -->
+      <map code="0xaedc" name="1em"/><!-- HANGUL SYLLABLE GGEN -->
+      <map code="0xaedd" name="1em"/><!-- HANGUL SYLLABLE GGENJ -->
+      <map code="0xaede" name="1em"/><!-- HANGUL SYLLABLE GGENH -->
+      <map code="0xaedf" name="1em"/><!-- HANGUL SYLLABLE GGED -->
+      <map code="0xaee0" name="1em"/><!-- HANGUL SYLLABLE GGEL -->
+      <map code="0xaee1" name="1em"/><!-- HANGUL SYLLABLE GGELG -->
+      <map code="0xaee2" name="1em"/><!-- HANGUL SYLLABLE GGELM -->
+      <map code="0xaee3" name="1em"/><!-- HANGUL SYLLABLE GGELB -->
+      <map code="0xaee4" name="1em"/><!-- HANGUL SYLLABLE GGELS -->
+      <map code="0xaee5" name="1em"/><!-- HANGUL SYLLABLE GGELT -->
+      <map code="0xaee6" name="1em"/><!-- HANGUL SYLLABLE GGELP -->
+      <map code="0xaee7" name="1em"/><!-- HANGUL SYLLABLE GGELH -->
+      <map code="0xaee8" name="1em"/><!-- HANGUL SYLLABLE GGEM -->
+      <map code="0xaee9" name="1em"/><!-- HANGUL SYLLABLE GGEB -->
+      <map code="0xaeea" name="1em"/><!-- HANGUL SYLLABLE GGEBS -->
+      <map code="0xaeeb" name="1em"/><!-- HANGUL SYLLABLE GGES -->
+      <map code="0xaeec" name="1em"/><!-- HANGUL SYLLABLE GGESS -->
+      <map code="0xaeed" name="1em"/><!-- HANGUL SYLLABLE GGENG -->
+      <map code="0xaeee" name="1em"/><!-- HANGUL SYLLABLE GGEJ -->
+      <map code="0xaeef" name="1em"/><!-- HANGUL SYLLABLE GGEC -->
+      <map code="0xaef0" name="1em"/><!-- HANGUL SYLLABLE GGEK -->
+      <map code="0xaef1" name="1em"/><!-- HANGUL SYLLABLE GGET -->
+      <map code="0xaef2" name="1em"/><!-- HANGUL SYLLABLE GGEP -->
+      <map code="0xaef3" name="1em"/><!-- HANGUL SYLLABLE GGEH -->
+      <map code="0xaef4" name="1em"/><!-- HANGUL SYLLABLE GGYEO -->
+      <map code="0xaef5" name="1em"/><!-- HANGUL SYLLABLE GGYEOG -->
+      <map code="0xaef6" name="1em"/><!-- HANGUL SYLLABLE GGYEOGG -->
+      <map code="0xaef7" name="1em"/><!-- HANGUL SYLLABLE GGYEOGS -->
+      <map code="0xaef8" name="1em"/><!-- HANGUL SYLLABLE GGYEON -->
+      <map code="0xaef9" name="1em"/><!-- HANGUL SYLLABLE GGYEONJ -->
+      <map code="0xaefa" name="1em"/><!-- HANGUL SYLLABLE GGYEONH -->
+      <map code="0xaefb" name="1em"/><!-- HANGUL SYLLABLE GGYEOD -->
+      <map code="0xaefc" name="1em"/><!-- HANGUL SYLLABLE GGYEOL -->
+      <map code="0xaefd" name="1em"/><!-- HANGUL SYLLABLE GGYEOLG -->
+      <map code="0xaefe" name="1em"/><!-- HANGUL SYLLABLE GGYEOLM -->
+      <map code="0xaeff" name="1em"/><!-- HANGUL SYLLABLE GGYEOLB -->
+      <map code="0xaf00" name="1em"/><!-- HANGUL SYLLABLE GGYEOLS -->
+      <map code="0xaf01" name="1em"/><!-- HANGUL SYLLABLE GGYEOLT -->
+      <map code="0xaf02" name="1em"/><!-- HANGUL SYLLABLE GGYEOLP -->
+      <map code="0xaf03" name="1em"/><!-- HANGUL SYLLABLE GGYEOLH -->
+      <map code="0xaf04" name="1em"/><!-- HANGUL SYLLABLE GGYEOM -->
+      <map code="0xaf05" name="1em"/><!-- HANGUL SYLLABLE GGYEOB -->
+      <map code="0xaf06" name="1em"/><!-- HANGUL SYLLABLE GGYEOBS -->
+      <map code="0xaf07" name="1em"/><!-- HANGUL SYLLABLE GGYEOS -->
+      <map code="0xaf08" name="1em"/><!-- HANGUL SYLLABLE GGYEOSS -->
+      <map code="0xaf09" name="1em"/><!-- HANGUL SYLLABLE GGYEONG -->
+      <map code="0xaf0a" name="1em"/><!-- HANGUL SYLLABLE GGYEOJ -->
+      <map code="0xaf0b" name="1em"/><!-- HANGUL SYLLABLE GGYEOC -->
+      <map code="0xaf0c" name="1em"/><!-- HANGUL SYLLABLE GGYEOK -->
+      <map code="0xaf0d" name="1em"/><!-- HANGUL SYLLABLE GGYEOT -->
+      <map code="0xaf0e" name="1em"/><!-- HANGUL SYLLABLE GGYEOP -->
+      <map code="0xaf0f" name="1em"/><!-- HANGUL SYLLABLE GGYEOH -->
+      <map code="0xaf10" name="1em"/><!-- HANGUL SYLLABLE GGYE -->
+      <map code="0xaf11" name="1em"/><!-- HANGUL SYLLABLE GGYEG -->
+      <map code="0xaf12" name="1em"/><!-- HANGUL SYLLABLE GGYEGG -->
+      <map code="0xaf13" name="1em"/><!-- HANGUL SYLLABLE GGYEGS -->
+      <map code="0xaf14" name="1em"/><!-- HANGUL SYLLABLE GGYEN -->
+      <map code="0xaf15" name="1em"/><!-- HANGUL SYLLABLE GGYENJ -->
+      <map code="0xaf16" name="1em"/><!-- HANGUL SYLLABLE GGYENH -->
+      <map code="0xaf17" name="1em"/><!-- HANGUL SYLLABLE GGYED -->
+      <map code="0xaf18" name="1em"/><!-- HANGUL SYLLABLE GGYEL -->
+      <map code="0xaf19" name="1em"/><!-- HANGUL SYLLABLE GGYELG -->
+      <map code="0xaf1a" name="1em"/><!-- HANGUL SYLLABLE GGYELM -->
+      <map code="0xaf1b" name="1em"/><!-- HANGUL SYLLABLE GGYELB -->
+      <map code="0xaf1c" name="1em"/><!-- HANGUL SYLLABLE GGYELS -->
+      <map code="0xaf1d" name="1em"/><!-- HANGUL SYLLABLE GGYELT -->
+      <map code="0xaf1e" name="1em"/><!-- HANGUL SYLLABLE GGYELP -->
+      <map code="0xaf1f" name="1em"/><!-- HANGUL SYLLABLE GGYELH -->
+      <map code="0xaf20" name="1em"/><!-- HANGUL SYLLABLE GGYEM -->
+      <map code="0xaf21" name="1em"/><!-- HANGUL SYLLABLE GGYEB -->
+      <map code="0xaf22" name="1em"/><!-- HANGUL SYLLABLE GGYEBS -->
+      <map code="0xaf23" name="1em"/><!-- HANGUL SYLLABLE GGYES -->
+      <map code="0xaf24" name="1em"/><!-- HANGUL SYLLABLE GGYESS -->
+      <map code="0xaf25" name="1em"/><!-- HANGUL SYLLABLE GGYENG -->
+      <map code="0xaf26" name="1em"/><!-- HANGUL SYLLABLE GGYEJ -->
+      <map code="0xaf27" name="1em"/><!-- HANGUL SYLLABLE GGYEC -->
+      <map code="0xaf28" name="1em"/><!-- HANGUL SYLLABLE GGYEK -->
+      <map code="0xaf29" name="1em"/><!-- HANGUL SYLLABLE GGYET -->
+      <map code="0xaf2a" name="1em"/><!-- HANGUL SYLLABLE GGYEP -->
+      <map code="0xaf2b" name="1em"/><!-- HANGUL SYLLABLE GGYEH -->
+      <map code="0xaf2c" name="1em"/><!-- HANGUL SYLLABLE GGO -->
+      <map code="0xaf2d" name="1em"/><!-- HANGUL SYLLABLE GGOG -->
+      <map code="0xaf2e" name="1em"/><!-- HANGUL SYLLABLE GGOGG -->
+      <map code="0xaf2f" name="1em"/><!-- HANGUL SYLLABLE GGOGS -->
+      <map code="0xaf30" name="1em"/><!-- HANGUL SYLLABLE GGON -->
+      <map code="0xaf31" name="1em"/><!-- HANGUL SYLLABLE GGONJ -->
+      <map code="0xaf32" name="1em"/><!-- HANGUL SYLLABLE GGONH -->
+      <map code="0xaf33" name="1em"/><!-- HANGUL SYLLABLE GGOD -->
+      <map code="0xaf34" name="1em"/><!-- HANGUL SYLLABLE GGOL -->
+      <map code="0xaf35" name="1em"/><!-- HANGUL SYLLABLE GGOLG -->
+      <map code="0xaf36" name="1em"/><!-- HANGUL SYLLABLE GGOLM -->
+      <map code="0xaf37" name="1em"/><!-- HANGUL SYLLABLE GGOLB -->
+      <map code="0xaf38" name="1em"/><!-- HANGUL SYLLABLE GGOLS -->
+      <map code="0xaf39" name="1em"/><!-- HANGUL SYLLABLE GGOLT -->
+      <map code="0xaf3a" name="1em"/><!-- HANGUL SYLLABLE GGOLP -->
+      <map code="0xaf3b" name="1em"/><!-- HANGUL SYLLABLE GGOLH -->
+      <map code="0xaf3c" name="1em"/><!-- HANGUL SYLLABLE GGOM -->
+      <map code="0xaf3d" name="1em"/><!-- HANGUL SYLLABLE GGOB -->
+      <map code="0xaf3e" name="1em"/><!-- HANGUL SYLLABLE GGOBS -->
+      <map code="0xaf3f" name="1em"/><!-- HANGUL SYLLABLE GGOS -->
+      <map code="0xaf40" name="1em"/><!-- HANGUL SYLLABLE GGOSS -->
+      <map code="0xaf41" name="1em"/><!-- HANGUL SYLLABLE GGONG -->
+      <map code="0xaf42" name="1em"/><!-- HANGUL SYLLABLE GGOJ -->
+      <map code="0xaf43" name="1em"/><!-- HANGUL SYLLABLE GGOC -->
+      <map code="0xaf44" name="1em"/><!-- HANGUL SYLLABLE GGOK -->
+      <map code="0xaf45" name="1em"/><!-- HANGUL SYLLABLE GGOT -->
+      <map code="0xaf46" name="1em"/><!-- HANGUL SYLLABLE GGOP -->
+      <map code="0xaf47" name="1em"/><!-- HANGUL SYLLABLE GGOH -->
+      <map code="0xaf48" name="1em"/><!-- HANGUL SYLLABLE GGWA -->
+      <map code="0xaf49" name="1em"/><!-- HANGUL SYLLABLE GGWAG -->
+      <map code="0xaf4a" name="1em"/><!-- HANGUL SYLLABLE GGWAGG -->
+      <map code="0xaf4b" name="1em"/><!-- HANGUL SYLLABLE GGWAGS -->
+      <map code="0xaf4c" name="1em"/><!-- HANGUL SYLLABLE GGWAN -->
+      <map code="0xaf4d" name="1em"/><!-- HANGUL SYLLABLE GGWANJ -->
+      <map code="0xaf4e" name="1em"/><!-- HANGUL SYLLABLE GGWANH -->
+      <map code="0xaf4f" name="1em"/><!-- HANGUL SYLLABLE GGWAD -->
+      <map code="0xaf50" name="1em"/><!-- HANGUL SYLLABLE GGWAL -->
+      <map code="0xaf51" name="1em"/><!-- HANGUL SYLLABLE GGWALG -->
+      <map code="0xaf52" name="1em"/><!-- HANGUL SYLLABLE GGWALM -->
+      <map code="0xaf53" name="1em"/><!-- HANGUL SYLLABLE GGWALB -->
+      <map code="0xaf54" name="1em"/><!-- HANGUL SYLLABLE GGWALS -->
+      <map code="0xaf55" name="1em"/><!-- HANGUL SYLLABLE GGWALT -->
+      <map code="0xaf56" name="1em"/><!-- HANGUL SYLLABLE GGWALP -->
+      <map code="0xaf57" name="1em"/><!-- HANGUL SYLLABLE GGWALH -->
+      <map code="0xaf58" name="1em"/><!-- HANGUL SYLLABLE GGWAM -->
+      <map code="0xaf59" name="1em"/><!-- HANGUL SYLLABLE GGWAB -->
+      <map code="0xaf5a" name="1em"/><!-- HANGUL SYLLABLE GGWABS -->
+      <map code="0xaf5b" name="1em"/><!-- HANGUL SYLLABLE GGWAS -->
+      <map code="0xaf5c" name="1em"/><!-- HANGUL SYLLABLE GGWASS -->
+      <map code="0xaf5d" name="1em"/><!-- HANGUL SYLLABLE GGWANG -->
+      <map code="0xaf5e" name="1em"/><!-- HANGUL SYLLABLE GGWAJ -->
+      <map code="0xaf5f" name="1em"/><!-- HANGUL SYLLABLE GGWAC -->
+      <map code="0xaf60" name="1em"/><!-- HANGUL SYLLABLE GGWAK -->
+      <map code="0xaf61" name="1em"/><!-- HANGUL SYLLABLE GGWAT -->
+      <map code="0xaf62" name="1em"/><!-- HANGUL SYLLABLE GGWAP -->
+      <map code="0xaf63" name="1em"/><!-- HANGUL SYLLABLE GGWAH -->
+      <map code="0xaf64" name="1em"/><!-- HANGUL SYLLABLE GGWAE -->
+      <map code="0xaf65" name="1em"/><!-- HANGUL SYLLABLE GGWAEG -->
+      <map code="0xaf66" name="1em"/><!-- HANGUL SYLLABLE GGWAEGG -->
+      <map code="0xaf67" name="1em"/><!-- HANGUL SYLLABLE GGWAEGS -->
+      <map code="0xaf68" name="1em"/><!-- HANGUL SYLLABLE GGWAEN -->
+      <map code="0xaf69" name="1em"/><!-- HANGUL SYLLABLE GGWAENJ -->
+      <map code="0xaf6a" name="1em"/><!-- HANGUL SYLLABLE GGWAENH -->
+      <map code="0xaf6b" name="1em"/><!-- HANGUL SYLLABLE GGWAED -->
+      <map code="0xaf6c" name="1em"/><!-- HANGUL SYLLABLE GGWAEL -->
+      <map code="0xaf6d" name="1em"/><!-- HANGUL SYLLABLE GGWAELG -->
+      <map code="0xaf6e" name="1em"/><!-- HANGUL SYLLABLE GGWAELM -->
+      <map code="0xaf6f" name="1em"/><!-- HANGUL SYLLABLE GGWAELB -->
+      <map code="0xaf70" name="1em"/><!-- HANGUL SYLLABLE GGWAELS -->
+      <map code="0xaf71" name="1em"/><!-- HANGUL SYLLABLE GGWAELT -->
+      <map code="0xaf72" name="1em"/><!-- HANGUL SYLLABLE GGWAELP -->
+      <map code="0xaf73" name="1em"/><!-- HANGUL SYLLABLE GGWAELH -->
+      <map code="0xaf74" name="1em"/><!-- HANGUL SYLLABLE GGWAEM -->
+      <map code="0xaf75" name="1em"/><!-- HANGUL SYLLABLE GGWAEB -->
+      <map code="0xaf76" name="1em"/><!-- HANGUL SYLLABLE GGWAEBS -->
+      <map code="0xaf77" name="1em"/><!-- HANGUL SYLLABLE GGWAES -->
+      <map code="0xaf78" name="1em"/><!-- HANGUL SYLLABLE GGWAESS -->
+      <map code="0xaf79" name="1em"/><!-- HANGUL SYLLABLE GGWAENG -->
+      <map code="0xaf7a" name="1em"/><!-- HANGUL SYLLABLE GGWAEJ -->
+      <map code="0xaf7b" name="1em"/><!-- HANGUL SYLLABLE GGWAEC -->
+      <map code="0xaf7c" name="1em"/><!-- HANGUL SYLLABLE GGWAEK -->
+      <map code="0xaf7d" name="1em"/><!-- HANGUL SYLLABLE GGWAET -->
+      <map code="0xaf7e" name="1em"/><!-- HANGUL SYLLABLE GGWAEP -->
+      <map code="0xaf7f" name="1em"/><!-- HANGUL SYLLABLE GGWAEH -->
+      <map code="0xaf80" name="1em"/><!-- HANGUL SYLLABLE GGOE -->
+      <map code="0xaf81" name="1em"/><!-- HANGUL SYLLABLE GGOEG -->
+      <map code="0xaf82" name="1em"/><!-- HANGUL SYLLABLE GGOEGG -->
+      <map code="0xaf83" name="1em"/><!-- HANGUL SYLLABLE GGOEGS -->
+      <map code="0xaf84" name="1em"/><!-- HANGUL SYLLABLE GGOEN -->
+      <map code="0xaf85" name="1em"/><!-- HANGUL SYLLABLE GGOENJ -->
+      <map code="0xaf86" name="1em"/><!-- HANGUL SYLLABLE GGOENH -->
+      <map code="0xaf87" name="1em"/><!-- HANGUL SYLLABLE GGOED -->
+      <map code="0xaf88" name="1em"/><!-- HANGUL SYLLABLE GGOEL -->
+      <map code="0xaf89" name="1em"/><!-- HANGUL SYLLABLE GGOELG -->
+      <map code="0xaf8a" name="1em"/><!-- HANGUL SYLLABLE GGOELM -->
+      <map code="0xaf8b" name="1em"/><!-- HANGUL SYLLABLE GGOELB -->
+      <map code="0xaf8c" name="1em"/><!-- HANGUL SYLLABLE GGOELS -->
+      <map code="0xaf8d" name="1em"/><!-- HANGUL SYLLABLE GGOELT -->
+      <map code="0xaf8e" name="1em"/><!-- HANGUL SYLLABLE GGOELP -->
+      <map code="0xaf8f" name="1em"/><!-- HANGUL SYLLABLE GGOELH -->
+      <map code="0xaf90" name="1em"/><!-- HANGUL SYLLABLE GGOEM -->
+      <map code="0xaf91" name="1em"/><!-- HANGUL SYLLABLE GGOEB -->
+      <map code="0xaf92" name="1em"/><!-- HANGUL SYLLABLE GGOEBS -->
+      <map code="0xaf93" name="1em"/><!-- HANGUL SYLLABLE GGOES -->
+      <map code="0xaf94" name="1em"/><!-- HANGUL SYLLABLE GGOESS -->
+      <map code="0xaf95" name="1em"/><!-- HANGUL SYLLABLE GGOENG -->
+      <map code="0xaf96" name="1em"/><!-- HANGUL SYLLABLE GGOEJ -->
+      <map code="0xaf97" name="1em"/><!-- HANGUL SYLLABLE GGOEC -->
+      <map code="0xaf98" name="1em"/><!-- HANGUL SYLLABLE GGOEK -->
+      <map code="0xaf99" name="1em"/><!-- HANGUL SYLLABLE GGOET -->
+      <map code="0xaf9a" name="1em"/><!-- HANGUL SYLLABLE GGOEP -->
+      <map code="0xaf9b" name="1em"/><!-- HANGUL SYLLABLE GGOEH -->
+      <map code="0xaf9c" name="1em"/><!-- HANGUL SYLLABLE GGYO -->
+      <map code="0xaf9d" name="1em"/><!-- HANGUL SYLLABLE GGYOG -->
+      <map code="0xaf9e" name="1em"/><!-- HANGUL SYLLABLE GGYOGG -->
+      <map code="0xaf9f" name="1em"/><!-- HANGUL SYLLABLE GGYOGS -->
+      <map code="0xafa0" name="1em"/><!-- HANGUL SYLLABLE GGYON -->
+      <map code="0xafa1" name="1em"/><!-- HANGUL SYLLABLE GGYONJ -->
+      <map code="0xafa2" name="1em"/><!-- HANGUL SYLLABLE GGYONH -->
+      <map code="0xafa3" name="1em"/><!-- HANGUL SYLLABLE GGYOD -->
+      <map code="0xafa4" name="1em"/><!-- HANGUL SYLLABLE GGYOL -->
+      <map code="0xafa5" name="1em"/><!-- HANGUL SYLLABLE GGYOLG -->
+      <map code="0xafa6" name="1em"/><!-- HANGUL SYLLABLE GGYOLM -->
+      <map code="0xafa7" name="1em"/><!-- HANGUL SYLLABLE GGYOLB -->
+      <map code="0xafa8" name="1em"/><!-- HANGUL SYLLABLE GGYOLS -->
+      <map code="0xafa9" name="1em"/><!-- HANGUL SYLLABLE GGYOLT -->
+      <map code="0xafaa" name="1em"/><!-- HANGUL SYLLABLE GGYOLP -->
+      <map code="0xafab" name="1em"/><!-- HANGUL SYLLABLE GGYOLH -->
+      <map code="0xafac" name="1em"/><!-- HANGUL SYLLABLE GGYOM -->
+      <map code="0xafad" name="1em"/><!-- HANGUL SYLLABLE GGYOB -->
+      <map code="0xafae" name="1em"/><!-- HANGUL SYLLABLE GGYOBS -->
+      <map code="0xafaf" name="1em"/><!-- HANGUL SYLLABLE GGYOS -->
+      <map code="0xafb0" name="1em"/><!-- HANGUL SYLLABLE GGYOSS -->
+      <map code="0xafb1" name="1em"/><!-- HANGUL SYLLABLE GGYONG -->
+      <map code="0xafb2" name="1em"/><!-- HANGUL SYLLABLE GGYOJ -->
+      <map code="0xafb3" name="1em"/><!-- HANGUL SYLLABLE GGYOC -->
+      <map code="0xafb4" name="1em"/><!-- HANGUL SYLLABLE GGYOK -->
+      <map code="0xafb5" name="1em"/><!-- HANGUL SYLLABLE GGYOT -->
+      <map code="0xafb6" name="1em"/><!-- HANGUL SYLLABLE GGYOP -->
+      <map code="0xafb7" name="1em"/><!-- HANGUL SYLLABLE GGYOH -->
+      <map code="0xafb8" name="1em"/><!-- HANGUL SYLLABLE GGU -->
+      <map code="0xafb9" name="1em"/><!-- HANGUL SYLLABLE GGUG -->
+      <map code="0xafba" name="1em"/><!-- HANGUL SYLLABLE GGUGG -->
+      <map code="0xafbb" name="1em"/><!-- HANGUL SYLLABLE GGUGS -->
+      <map code="0xafbc" name="1em"/><!-- HANGUL SYLLABLE GGUN -->
+      <map code="0xafbd" name="1em"/><!-- HANGUL SYLLABLE GGUNJ -->
+      <map code="0xafbe" name="1em"/><!-- HANGUL SYLLABLE GGUNH -->
+      <map code="0xafbf" name="1em"/><!-- HANGUL SYLLABLE GGUD -->
+      <map code="0xafc0" name="1em"/><!-- HANGUL SYLLABLE GGUL -->
+      <map code="0xafc1" name="1em"/><!-- HANGUL SYLLABLE GGULG -->
+      <map code="0xafc2" name="1em"/><!-- HANGUL SYLLABLE GGULM -->
+      <map code="0xafc3" name="1em"/><!-- HANGUL SYLLABLE GGULB -->
+      <map code="0xafc4" name="1em"/><!-- HANGUL SYLLABLE GGULS -->
+      <map code="0xafc5" name="1em"/><!-- HANGUL SYLLABLE GGULT -->
+      <map code="0xafc6" name="1em"/><!-- HANGUL SYLLABLE GGULP -->
+      <map code="0xafc7" name="1em"/><!-- HANGUL SYLLABLE GGULH -->
+      <map code="0xafc8" name="1em"/><!-- HANGUL SYLLABLE GGUM -->
+      <map code="0xafc9" name="1em"/><!-- HANGUL SYLLABLE GGUB -->
+      <map code="0xafca" name="1em"/><!-- HANGUL SYLLABLE GGUBS -->
+      <map code="0xafcb" name="1em"/><!-- HANGUL SYLLABLE GGUS -->
+      <map code="0xafcc" name="1em"/><!-- HANGUL SYLLABLE GGUSS -->
+      <map code="0xafcd" name="1em"/><!-- HANGUL SYLLABLE GGUNG -->
+      <map code="0xafce" name="1em"/><!-- HANGUL SYLLABLE GGUJ -->
+      <map code="0xafcf" name="1em"/><!-- HANGUL SYLLABLE GGUC -->
+      <map code="0xafd0" name="1em"/><!-- HANGUL SYLLABLE GGUK -->
+      <map code="0xafd1" name="1em"/><!-- HANGUL SYLLABLE GGUT -->
+      <map code="0xafd2" name="1em"/><!-- HANGUL SYLLABLE GGUP -->
+      <map code="0xafd3" name="1em"/><!-- HANGUL SYLLABLE GGUH -->
+      <map code="0xafd4" name="1em"/><!-- HANGUL SYLLABLE GGWEO -->
+      <map code="0xafd5" name="1em"/><!-- HANGUL SYLLABLE GGWEOG -->
+      <map code="0xafd6" name="1em"/><!-- HANGUL SYLLABLE GGWEOGG -->
+      <map code="0xafd7" name="1em"/><!-- HANGUL SYLLABLE GGWEOGS -->
+      <map code="0xafd8" name="1em"/><!-- HANGUL SYLLABLE GGWEON -->
+      <map code="0xafd9" name="1em"/><!-- HANGUL SYLLABLE GGWEONJ -->
+      <map code="0xafda" name="1em"/><!-- HANGUL SYLLABLE GGWEONH -->
+      <map code="0xafdb" name="1em"/><!-- HANGUL SYLLABLE GGWEOD -->
+      <map code="0xafdc" name="1em"/><!-- HANGUL SYLLABLE GGWEOL -->
+      <map code="0xafdd" name="1em"/><!-- HANGUL SYLLABLE GGWEOLG -->
+      <map code="0xafde" name="1em"/><!-- HANGUL SYLLABLE GGWEOLM -->
+      <map code="0xafdf" name="1em"/><!-- HANGUL SYLLABLE GGWEOLB -->
+      <map code="0xafe0" name="1em"/><!-- HANGUL SYLLABLE GGWEOLS -->
+      <map code="0xafe1" name="1em"/><!-- HANGUL SYLLABLE GGWEOLT -->
+      <map code="0xafe2" name="1em"/><!-- HANGUL SYLLABLE GGWEOLP -->
+      <map code="0xafe3" name="1em"/><!-- HANGUL SYLLABLE GGWEOLH -->
+      <map code="0xafe4" name="1em"/><!-- HANGUL SYLLABLE GGWEOM -->
+      <map code="0xafe5" name="1em"/><!-- HANGUL SYLLABLE GGWEOB -->
+      <map code="0xafe6" name="1em"/><!-- HANGUL SYLLABLE GGWEOBS -->
+      <map code="0xafe7" name="1em"/><!-- HANGUL SYLLABLE GGWEOS -->
+      <map code="0xafe8" name="1em"/><!-- HANGUL SYLLABLE GGWEOSS -->
+      <map code="0xafe9" name="1em"/><!-- HANGUL SYLLABLE GGWEONG -->
+      <map code="0xafea" name="1em"/><!-- HANGUL SYLLABLE GGWEOJ -->
+      <map code="0xafeb" name="1em"/><!-- HANGUL SYLLABLE GGWEOC -->
+      <map code="0xafec" name="1em"/><!-- HANGUL SYLLABLE GGWEOK -->
+      <map code="0xafed" name="1em"/><!-- HANGUL SYLLABLE GGWEOT -->
+      <map code="0xafee" name="1em"/><!-- HANGUL SYLLABLE GGWEOP -->
+      <map code="0xafef" name="1em"/><!-- HANGUL SYLLABLE GGWEOH -->
+      <map code="0xaff0" name="1em"/><!-- HANGUL SYLLABLE GGWE -->
+      <map code="0xaff1" name="1em"/><!-- HANGUL SYLLABLE GGWEG -->
+      <map code="0xaff2" name="1em"/><!-- HANGUL SYLLABLE GGWEGG -->
+      <map code="0xaff3" name="1em"/><!-- HANGUL SYLLABLE GGWEGS -->
+      <map code="0xaff4" name="1em"/><!-- HANGUL SYLLABLE GGWEN -->
+      <map code="0xaff5" name="1em"/><!-- HANGUL SYLLABLE GGWENJ -->
+      <map code="0xaff6" name="1em"/><!-- HANGUL SYLLABLE GGWENH -->
+      <map code="0xaff7" name="1em"/><!-- HANGUL SYLLABLE GGWED -->
+      <map code="0xaff8" name="1em"/><!-- HANGUL SYLLABLE GGWEL -->
+      <map code="0xaff9" name="1em"/><!-- HANGUL SYLLABLE GGWELG -->
+      <map code="0xaffa" name="1em"/><!-- HANGUL SYLLABLE GGWELM -->
+      <map code="0xaffb" name="1em"/><!-- HANGUL SYLLABLE GGWELB -->
+      <map code="0xaffc" name="1em"/><!-- HANGUL SYLLABLE GGWELS -->
+      <map code="0xaffd" name="1em"/><!-- HANGUL SYLLABLE GGWELT -->
+      <map code="0xaffe" name="1em"/><!-- HANGUL SYLLABLE GGWELP -->
+      <map code="0xafff" name="1em"/><!-- HANGUL SYLLABLE GGWELH -->
+      <map code="0xb000" name="1em"/><!-- HANGUL SYLLABLE GGWEM -->
+      <map code="0xb001" name="1em"/><!-- HANGUL SYLLABLE GGWEB -->
+      <map code="0xb002" name="1em"/><!-- HANGUL SYLLABLE GGWEBS -->
+      <map code="0xb003" name="1em"/><!-- HANGUL SYLLABLE GGWES -->
+      <map code="0xb004" name="1em"/><!-- HANGUL SYLLABLE GGWESS -->
+      <map code="0xb005" name="1em"/><!-- HANGUL SYLLABLE GGWENG -->
+      <map code="0xb006" name="1em"/><!-- HANGUL SYLLABLE GGWEJ -->
+      <map code="0xb007" name="1em"/><!-- HANGUL SYLLABLE GGWEC -->
+      <map code="0xb008" name="1em"/><!-- HANGUL SYLLABLE GGWEK -->
+      <map code="0xb009" name="1em"/><!-- HANGUL SYLLABLE GGWET -->
+      <map code="0xb00a" name="1em"/><!-- HANGUL SYLLABLE GGWEP -->
+      <map code="0xb00b" name="1em"/><!-- HANGUL SYLLABLE GGWEH -->
+      <map code="0xb00c" name="1em"/><!-- HANGUL SYLLABLE GGWI -->
+      <map code="0xb00d" name="1em"/><!-- HANGUL SYLLABLE GGWIG -->
+      <map code="0xb00e" name="1em"/><!-- HANGUL SYLLABLE GGWIGG -->
+      <map code="0xb00f" name="1em"/><!-- HANGUL SYLLABLE GGWIGS -->
+      <map code="0xb010" name="1em"/><!-- HANGUL SYLLABLE GGWIN -->
+      <map code="0xb011" name="1em"/><!-- HANGUL SYLLABLE GGWINJ -->
+      <map code="0xb012" name="1em"/><!-- HANGUL SYLLABLE GGWINH -->
+      <map code="0xb013" name="1em"/><!-- HANGUL SYLLABLE GGWID -->
+      <map code="0xb014" name="1em"/><!-- HANGUL SYLLABLE GGWIL -->
+      <map code="0xb015" name="1em"/><!-- HANGUL SYLLABLE GGWILG -->
+      <map code="0xb016" name="1em"/><!-- HANGUL SYLLABLE GGWILM -->
+      <map code="0xb017" name="1em"/><!-- HANGUL SYLLABLE GGWILB -->
+      <map code="0xb018" name="1em"/><!-- HANGUL SYLLABLE GGWILS -->
+      <map code="0xb019" name="1em"/><!-- HANGUL SYLLABLE GGWILT -->
+      <map code="0xb01a" name="1em"/><!-- HANGUL SYLLABLE GGWILP -->
+      <map code="0xb01b" name="1em"/><!-- HANGUL SYLLABLE GGWILH -->
+      <map code="0xb01c" name="1em"/><!-- HANGUL SYLLABLE GGWIM -->
+      <map code="0xb01d" name="1em"/><!-- HANGUL SYLLABLE GGWIB -->
+      <map code="0xb01e" name="1em"/><!-- HANGUL SYLLABLE GGWIBS -->
+      <map code="0xb01f" name="1em"/><!-- HANGUL SYLLABLE GGWIS -->
+      <map code="0xb020" name="1em"/><!-- HANGUL SYLLABLE GGWISS -->
+      <map code="0xb021" name="1em"/><!-- HANGUL SYLLABLE GGWING -->
+      <map code="0xb022" name="1em"/><!-- HANGUL SYLLABLE GGWIJ -->
+      <map code="0xb023" name="1em"/><!-- HANGUL SYLLABLE GGWIC -->
+      <map code="0xb024" name="1em"/><!-- HANGUL SYLLABLE GGWIK -->
+      <map code="0xb025" name="1em"/><!-- HANGUL SYLLABLE GGWIT -->
+      <map code="0xb026" name="1em"/><!-- HANGUL SYLLABLE GGWIP -->
+      <map code="0xb027" name="1em"/><!-- HANGUL SYLLABLE GGWIH -->
+      <map code="0xb028" name="1em"/><!-- HANGUL SYLLABLE GGYU -->
+      <map code="0xb029" name="1em"/><!-- HANGUL SYLLABLE GGYUG -->
+      <map code="0xb02a" name="1em"/><!-- HANGUL SYLLABLE GGYUGG -->
+      <map code="0xb02b" name="1em"/><!-- HANGUL SYLLABLE GGYUGS -->
+      <map code="0xb02c" name="1em"/><!-- HANGUL SYLLABLE GGYUN -->
+      <map code="0xb02d" name="1em"/><!-- HANGUL SYLLABLE GGYUNJ -->
+      <map code="0xb02e" name="1em"/><!-- HANGUL SYLLABLE GGYUNH -->
+      <map code="0xb02f" name="1em"/><!-- HANGUL SYLLABLE GGYUD -->
+      <map code="0xb030" name="1em"/><!-- HANGUL SYLLABLE GGYUL -->
+      <map code="0xb031" name="1em"/><!-- HANGUL SYLLABLE GGYULG -->
+      <map code="0xb032" name="1em"/><!-- HANGUL SYLLABLE GGYULM -->
+      <map code="0xb033" name="1em"/><!-- HANGUL SYLLABLE GGYULB -->
+      <map code="0xb034" name="1em"/><!-- HANGUL SYLLABLE GGYULS -->
+      <map code="0xb035" name="1em"/><!-- HANGUL SYLLABLE GGYULT -->
+      <map code="0xb036" name="1em"/><!-- HANGUL SYLLABLE GGYULP -->
+      <map code="0xb037" name="1em"/><!-- HANGUL SYLLABLE GGYULH -->
+      <map code="0xb038" name="1em"/><!-- HANGUL SYLLABLE GGYUM -->
+      <map code="0xb039" name="1em"/><!-- HANGUL SYLLABLE GGYUB -->
+      <map code="0xb03a" name="1em"/><!-- HANGUL SYLLABLE GGYUBS -->
+      <map code="0xb03b" name="1em"/><!-- HANGUL SYLLABLE GGYUS -->
+      <map code="0xb03c" name="1em"/><!-- HANGUL SYLLABLE GGYUSS -->
+      <map code="0xb03d" name="1em"/><!-- HANGUL SYLLABLE GGYUNG -->
+      <map code="0xb03e" name="1em"/><!-- HANGUL SYLLABLE GGYUJ -->
+      <map code="0xb03f" name="1em"/><!-- HANGUL SYLLABLE GGYUC -->
+      <map code="0xb040" name="1em"/><!-- HANGUL SYLLABLE GGYUK -->
+      <map code="0xb041" name="1em"/><!-- HANGUL SYLLABLE GGYUT -->
+      <map code="0xb042" name="1em"/><!-- HANGUL SYLLABLE GGYUP -->
+      <map code="0xb043" name="1em"/><!-- HANGUL SYLLABLE GGYUH -->
+      <map code="0xb044" name="1em"/><!-- HANGUL SYLLABLE GGEU -->
+      <map code="0xb045" name="1em"/><!-- HANGUL SYLLABLE GGEUG -->
+      <map code="0xb046" name="1em"/><!-- HANGUL SYLLABLE GGEUGG -->
+      <map code="0xb047" name="1em"/><!-- HANGUL SYLLABLE GGEUGS -->
+      <map code="0xb048" name="1em"/><!-- HANGUL SYLLABLE GGEUN -->
+      <map code="0xb049" name="1em"/><!-- HANGUL SYLLABLE GGEUNJ -->
+      <map code="0xb04a" name="1em"/><!-- HANGUL SYLLABLE GGEUNH -->
+      <map code="0xb04b" name="1em"/><!-- HANGUL SYLLABLE GGEUD -->
+      <map code="0xb04c" name="1em"/><!-- HANGUL SYLLABLE GGEUL -->
+      <map code="0xb04d" name="1em"/><!-- HANGUL SYLLABLE GGEULG -->
+      <map code="0xb04e" name="1em"/><!-- HANGUL SYLLABLE GGEULM -->
+      <map code="0xb04f" name="1em"/><!-- HANGUL SYLLABLE GGEULB -->
+      <map code="0xb050" name="1em"/><!-- HANGUL SYLLABLE GGEULS -->
+      <map code="0xb051" name="1em"/><!-- HANGUL SYLLABLE GGEULT -->
+      <map code="0xb052" name="1em"/><!-- HANGUL SYLLABLE GGEULP -->
+      <map code="0xb053" name="1em"/><!-- HANGUL SYLLABLE GGEULH -->
+      <map code="0xb054" name="1em"/><!-- HANGUL SYLLABLE GGEUM -->
+      <map code="0xb055" name="1em"/><!-- HANGUL SYLLABLE GGEUB -->
+      <map code="0xb056" name="1em"/><!-- HANGUL SYLLABLE GGEUBS -->
+      <map code="0xb057" name="1em"/><!-- HANGUL SYLLABLE GGEUS -->
+      <map code="0xb058" name="1em"/><!-- HANGUL SYLLABLE GGEUSS -->
+      <map code="0xb059" name="1em"/><!-- HANGUL SYLLABLE GGEUNG -->
+      <map code="0xb05a" name="1em"/><!-- HANGUL SYLLABLE GGEUJ -->
+      <map code="0xb05b" name="1em"/><!-- HANGUL SYLLABLE GGEUC -->
+      <map code="0xb05c" name="1em"/><!-- HANGUL SYLLABLE GGEUK -->
+      <map code="0xb05d" name="1em"/><!-- HANGUL SYLLABLE GGEUT -->
+      <map code="0xb05e" name="1em"/><!-- HANGUL SYLLABLE GGEUP -->
+      <map code="0xb05f" name="1em"/><!-- HANGUL SYLLABLE GGEUH -->
+      <map code="0xb060" name="1em"/><!-- HANGUL SYLLABLE GGYI -->
+      <map code="0xb061" name="1em"/><!-- HANGUL SYLLABLE GGYIG -->
+      <map code="0xb062" name="1em"/><!-- HANGUL SYLLABLE GGYIGG -->
+      <map code="0xb063" name="1em"/><!-- HANGUL SYLLABLE GGYIGS -->
+      <map code="0xb064" name="1em"/><!-- HANGUL SYLLABLE GGYIN -->
+      <map code="0xb065" name="1em"/><!-- HANGUL SYLLABLE GGYINJ -->
+      <map code="0xb066" name="1em"/><!-- HANGUL SYLLABLE GGYINH -->
+      <map code="0xb067" name="1em"/><!-- HANGUL SYLLABLE GGYID -->
+      <map code="0xb068" name="1em"/><!-- HANGUL SYLLABLE GGYIL -->
+      <map code="0xb069" name="1em"/><!-- HANGUL SYLLABLE GGYILG -->
+      <map code="0xb06a" name="1em"/><!-- HANGUL SYLLABLE GGYILM -->
+      <map code="0xb06b" name="1em"/><!-- HANGUL SYLLABLE GGYILB -->
+      <map code="0xb06c" name="1em"/><!-- HANGUL SYLLABLE GGYILS -->
+      <map code="0xb06d" name="1em"/><!-- HANGUL SYLLABLE GGYILT -->
+      <map code="0xb06e" name="1em"/><!-- HANGUL SYLLABLE GGYILP -->
+      <map code="0xb06f" name="1em"/><!-- HANGUL SYLLABLE GGYILH -->
+      <map code="0xb070" name="1em"/><!-- HANGUL SYLLABLE GGYIM -->
+      <map code="0xb071" name="1em"/><!-- HANGUL SYLLABLE GGYIB -->
+      <map code="0xb072" name="1em"/><!-- HANGUL SYLLABLE GGYIBS -->
+      <map code="0xb073" name="1em"/><!-- HANGUL SYLLABLE GGYIS -->
+      <map code="0xb074" name="1em"/><!-- HANGUL SYLLABLE GGYISS -->
+      <map code="0xb075" name="1em"/><!-- HANGUL SYLLABLE GGYING -->
+      <map code="0xb076" name="1em"/><!-- HANGUL SYLLABLE GGYIJ -->
+      <map code="0xb077" name="1em"/><!-- HANGUL SYLLABLE GGYIC -->
+      <map code="0xb078" name="1em"/><!-- HANGUL SYLLABLE GGYIK -->
+      <map code="0xb079" name="1em"/><!-- HANGUL SYLLABLE GGYIT -->
+      <map code="0xb07a" name="1em"/><!-- HANGUL SYLLABLE GGYIP -->
+      <map code="0xb07b" name="1em"/><!-- HANGUL SYLLABLE GGYIH -->
+      <map code="0xb07c" name="1em"/><!-- HANGUL SYLLABLE GGI -->
+      <map code="0xb07d" name="1em"/><!-- HANGUL SYLLABLE GGIG -->
+      <map code="0xb07e" name="1em"/><!-- HANGUL SYLLABLE GGIGG -->
+      <map code="0xb07f" name="1em"/><!-- HANGUL SYLLABLE GGIGS -->
+      <map code="0xb080" name="1em"/><!-- HANGUL SYLLABLE GGIN -->
+      <map code="0xb081" name="1em"/><!-- HANGUL SYLLABLE GGINJ -->
+      <map code="0xb082" name="1em"/><!-- HANGUL SYLLABLE GGINH -->
+      <map code="0xb083" name="1em"/><!-- HANGUL SYLLABLE GGID -->
+      <map code="0xb084" name="1em"/><!-- HANGUL SYLLABLE GGIL -->
+      <map code="0xb085" name="1em"/><!-- HANGUL SYLLABLE GGILG -->
+      <map code="0xb086" name="1em"/><!-- HANGUL SYLLABLE GGILM -->
+      <map code="0xb087" name="1em"/><!-- HANGUL SYLLABLE GGILB -->
+      <map code="0xb088" name="1em"/><!-- HANGUL SYLLABLE GGILS -->
+      <map code="0xb089" name="1em"/><!-- HANGUL SYLLABLE GGILT -->
+      <map code="0xb08a" name="1em"/><!-- HANGUL SYLLABLE GGILP -->
+      <map code="0xb08b" name="1em"/><!-- HANGUL SYLLABLE GGILH -->
+      <map code="0xb08c" name="1em"/><!-- HANGUL SYLLABLE GGIM -->
+      <map code="0xb08d" name="1em"/><!-- HANGUL SYLLABLE GGIB -->
+      <map code="0xb08e" name="1em"/><!-- HANGUL SYLLABLE GGIBS -->
+      <map code="0xb08f" name="1em"/><!-- HANGUL SYLLABLE GGIS -->
+      <map code="0xb090" name="1em"/><!-- HANGUL SYLLABLE GGISS -->
+      <map code="0xb091" name="1em"/><!-- HANGUL SYLLABLE GGING -->
+      <map code="0xb092" name="1em"/><!-- HANGUL SYLLABLE GGIJ -->
+      <map code="0xb093" name="1em"/><!-- HANGUL SYLLABLE GGIC -->
+      <map code="0xb094" name="1em"/><!-- HANGUL SYLLABLE GGIK -->
+      <map code="0xb095" name="1em"/><!-- HANGUL SYLLABLE GGIT -->
+      <map code="0xb096" name="1em"/><!-- HANGUL SYLLABLE GGIP -->
+      <map code="0xb097" name="1em"/><!-- HANGUL SYLLABLE GGIH -->
+      <map code="0xb098" name="1em"/><!-- HANGUL SYLLABLE NA -->
+      <map code="0xb099" name="1em"/><!-- HANGUL SYLLABLE NAG -->
+      <map code="0xb09a" name="1em"/><!-- HANGUL SYLLABLE NAGG -->
+      <map code="0xb09b" name="1em"/><!-- HANGUL SYLLABLE NAGS -->
+      <map code="0xb09c" name="1em"/><!-- HANGUL SYLLABLE NAN -->
+      <map code="0xb09d" name="1em"/><!-- HANGUL SYLLABLE NANJ -->
+      <map code="0xb09e" name="1em"/><!-- HANGUL SYLLABLE NANH -->
+      <map code="0xb09f" name="1em"/><!-- HANGUL SYLLABLE NAD -->
+      <map code="0xb0a0" name="1em"/><!-- HANGUL SYLLABLE NAL -->
+      <map code="0xb0a1" name="1em"/><!-- HANGUL SYLLABLE NALG -->
+      <map code="0xb0a2" name="1em"/><!-- HANGUL SYLLABLE NALM -->
+      <map code="0xb0a3" name="1em"/><!-- HANGUL SYLLABLE NALB -->
+      <map code="0xb0a4" name="1em"/><!-- HANGUL SYLLABLE NALS -->
+      <map code="0xb0a5" name="1em"/><!-- HANGUL SYLLABLE NALT -->
+      <map code="0xb0a6" name="1em"/><!-- HANGUL SYLLABLE NALP -->
+      <map code="0xb0a7" name="1em"/><!-- HANGUL SYLLABLE NALH -->
+      <map code="0xb0a8" name="1em"/><!-- HANGUL SYLLABLE NAM -->
+      <map code="0xb0a9" name="1em"/><!-- HANGUL SYLLABLE NAB -->
+      <map code="0xb0aa" name="1em"/><!-- HANGUL SYLLABLE NABS -->
+      <map code="0xb0ab" name="1em"/><!-- HANGUL SYLLABLE NAS -->
+      <map code="0xb0ac" name="1em"/><!-- HANGUL SYLLABLE NASS -->
+      <map code="0xb0ad" name="1em"/><!-- HANGUL SYLLABLE NANG -->
+      <map code="0xb0ae" name="1em"/><!-- HANGUL SYLLABLE NAJ -->
+      <map code="0xb0af" name="1em"/><!-- HANGUL SYLLABLE NAC -->
+      <map code="0xb0b0" name="1em"/><!-- HANGUL SYLLABLE NAK -->
+      <map code="0xb0b1" name="1em"/><!-- HANGUL SYLLABLE NAT -->
+      <map code="0xb0b2" name="1em"/><!-- HANGUL SYLLABLE NAP -->
+      <map code="0xb0b3" name="1em"/><!-- HANGUL SYLLABLE NAH -->
+      <map code="0xb0b4" name="1em"/><!-- HANGUL SYLLABLE NAE -->
+      <map code="0xb0b5" name="1em"/><!-- HANGUL SYLLABLE NAEG -->
+      <map code="0xb0b6" name="1em"/><!-- HANGUL SYLLABLE NAEGG -->
+      <map code="0xb0b7" name="1em"/><!-- HANGUL SYLLABLE NAEGS -->
+      <map code="0xb0b8" name="1em"/><!-- HANGUL SYLLABLE NAEN -->
+      <map code="0xb0b9" name="1em"/><!-- HANGUL SYLLABLE NAENJ -->
+      <map code="0xb0ba" name="1em"/><!-- HANGUL SYLLABLE NAENH -->
+      <map code="0xb0bb" name="1em"/><!-- HANGUL SYLLABLE NAED -->
+      <map code="0xb0bc" name="1em"/><!-- HANGUL SYLLABLE NAEL -->
+      <map code="0xb0bd" name="1em"/><!-- HANGUL SYLLABLE NAELG -->
+      <map code="0xb0be" name="1em"/><!-- HANGUL SYLLABLE NAELM -->
+      <map code="0xb0bf" name="1em"/><!-- HANGUL SYLLABLE NAELB -->
+      <map code="0xb0c0" name="1em"/><!-- HANGUL SYLLABLE NAELS -->
+      <map code="0xb0c1" name="1em"/><!-- HANGUL SYLLABLE NAELT -->
+      <map code="0xb0c2" name="1em"/><!-- HANGUL SYLLABLE NAELP -->
+      <map code="0xb0c3" name="1em"/><!-- HANGUL SYLLABLE NAELH -->
+      <map code="0xb0c4" name="1em"/><!-- HANGUL SYLLABLE NAEM -->
+      <map code="0xb0c5" name="1em"/><!-- HANGUL SYLLABLE NAEB -->
+      <map code="0xb0c6" name="1em"/><!-- HANGUL SYLLABLE NAEBS -->
+      <map code="0xb0c7" name="1em"/><!-- HANGUL SYLLABLE NAES -->
+      <map code="0xb0c8" name="1em"/><!-- HANGUL SYLLABLE NAESS -->
+      <map code="0xb0c9" name="1em"/><!-- HANGUL SYLLABLE NAENG -->
+      <map code="0xb0ca" name="1em"/><!-- HANGUL SYLLABLE NAEJ -->
+      <map code="0xb0cb" name="1em"/><!-- HANGUL SYLLABLE NAEC -->
+      <map code="0xb0cc" name="1em"/><!-- HANGUL SYLLABLE NAEK -->
+      <map code="0xb0cd" name="1em"/><!-- HANGUL SYLLABLE NAET -->
+      <map code="0xb0ce" name="1em"/><!-- HANGUL SYLLABLE NAEP -->
+      <map code="0xb0cf" name="1em"/><!-- HANGUL SYLLABLE NAEH -->
+      <map code="0xb0d0" name="1em"/><!-- HANGUL SYLLABLE NYA -->
+      <map code="0xb0d1" name="1em"/><!-- HANGUL SYLLABLE NYAG -->
+      <map code="0xb0d2" name="1em"/><!-- HANGUL SYLLABLE NYAGG -->
+      <map code="0xb0d3" name="1em"/><!-- HANGUL SYLLABLE NYAGS -->
+      <map code="0xb0d4" name="1em"/><!-- HANGUL SYLLABLE NYAN -->
+      <map code="0xb0d5" name="1em"/><!-- HANGUL SYLLABLE NYANJ -->
+      <map code="0xb0d6" name="1em"/><!-- HANGUL SYLLABLE NYANH -->
+      <map code="0xb0d7" name="1em"/><!-- HANGUL SYLLABLE NYAD -->
+      <map code="0xb0d8" name="1em"/><!-- HANGUL SYLLABLE NYAL -->
+      <map code="0xb0d9" name="1em"/><!-- HANGUL SYLLABLE NYALG -->
+      <map code="0xb0da" name="1em"/><!-- HANGUL SYLLABLE NYALM -->
+      <map code="0xb0db" name="1em"/><!-- HANGUL SYLLABLE NYALB -->
+      <map code="0xb0dc" name="1em"/><!-- HANGUL SYLLABLE NYALS -->
+      <map code="0xb0dd" name="1em"/><!-- HANGUL SYLLABLE NYALT -->
+      <map code="0xb0de" name="1em"/><!-- HANGUL SYLLABLE NYALP -->
+      <map code="0xb0df" name="1em"/><!-- HANGUL SYLLABLE NYALH -->
+      <map code="0xb0e0" name="1em"/><!-- HANGUL SYLLABLE NYAM -->
+      <map code="0xb0e1" name="1em"/><!-- HANGUL SYLLABLE NYAB -->
+      <map code="0xb0e2" name="1em"/><!-- HANGUL SYLLABLE NYABS -->
+      <map code="0xb0e3" name="1em"/><!-- HANGUL SYLLABLE NYAS -->
+      <map code="0xb0e4" name="1em"/><!-- HANGUL SYLLABLE NYASS -->
+      <map code="0xb0e5" name="1em"/><!-- HANGUL SYLLABLE NYANG -->
+      <map code="0xb0e6" name="1em"/><!-- HANGUL SYLLABLE NYAJ -->
+      <map code="0xb0e7" name="1em"/><!-- HANGUL SYLLABLE NYAC -->
+      <map code="0xb0e8" name="1em"/><!-- HANGUL SYLLABLE NYAK -->
+      <map code="0xb0e9" name="1em"/><!-- HANGUL SYLLABLE NYAT -->
+      <map code="0xb0ea" name="1em"/><!-- HANGUL SYLLABLE NYAP -->
+      <map code="0xb0eb" name="1em"/><!-- HANGUL SYLLABLE NYAH -->
+      <map code="0xb0ec" name="1em"/><!-- HANGUL SYLLABLE NYAE -->
+      <map code="0xb0ed" name="1em"/><!-- HANGUL SYLLABLE NYAEG -->
+      <map code="0xb0ee" name="1em"/><!-- HANGUL SYLLABLE NYAEGG -->
+      <map code="0xb0ef" name="1em"/><!-- HANGUL SYLLABLE NYAEGS -->
+      <map code="0xb0f0" name="1em"/><!-- HANGUL SYLLABLE NYAEN -->
+      <map code="0xb0f1" name="1em"/><!-- HANGUL SYLLABLE NYAENJ -->
+      <map code="0xb0f2" name="1em"/><!-- HANGUL SYLLABLE NYAENH -->
+      <map code="0xb0f3" name="1em"/><!-- HANGUL SYLLABLE NYAED -->
+      <map code="0xb0f4" name="1em"/><!-- HANGUL SYLLABLE NYAEL -->
+      <map code="0xb0f5" name="1em"/><!-- HANGUL SYLLABLE NYAELG -->
+      <map code="0xb0f6" name="1em"/><!-- HANGUL SYLLABLE NYAELM -->
+      <map code="0xb0f7" name="1em"/><!-- HANGUL SYLLABLE NYAELB -->
+      <map code="0xb0f8" name="1em"/><!-- HANGUL SYLLABLE NYAELS -->
+      <map code="0xb0f9" name="1em"/><!-- HANGUL SYLLABLE NYAELT -->
+      <map code="0xb0fa" name="1em"/><!-- HANGUL SYLLABLE NYAELP -->
+      <map code="0xb0fb" name="1em"/><!-- HANGUL SYLLABLE NYAELH -->
+      <map code="0xb0fc" name="1em"/><!-- HANGUL SYLLABLE NYAEM -->
+      <map code="0xb0fd" name="1em"/><!-- HANGUL SYLLABLE NYAEB -->
+      <map code="0xb0fe" name="1em"/><!-- HANGUL SYLLABLE NYAEBS -->
+      <map code="0xb0ff" name="1em"/><!-- HANGUL SYLLABLE NYAES -->
+      <map code="0xb100" name="1em"/><!-- HANGUL SYLLABLE NYAESS -->
+      <map code="0xb101" name="1em"/><!-- HANGUL SYLLABLE NYAENG -->
+      <map code="0xb102" name="1em"/><!-- HANGUL SYLLABLE NYAEJ -->
+      <map code="0xb103" name="1em"/><!-- HANGUL SYLLABLE NYAEC -->
+      <map code="0xb104" name="1em"/><!-- HANGUL SYLLABLE NYAEK -->
+      <map code="0xb105" name="1em"/><!-- HANGUL SYLLABLE NYAET -->
+      <map code="0xb106" name="1em"/><!-- HANGUL SYLLABLE NYAEP -->
+      <map code="0xb107" name="1em"/><!-- HANGUL SYLLABLE NYAEH -->
+      <map code="0xb108" name="1em"/><!-- HANGUL SYLLABLE NEO -->
+      <map code="0xb109" name="1em"/><!-- HANGUL SYLLABLE NEOG -->
+      <map code="0xb10a" name="1em"/><!-- HANGUL SYLLABLE NEOGG -->
+      <map code="0xb10b" name="1em"/><!-- HANGUL SYLLABLE NEOGS -->
+      <map code="0xb10c" name="1em"/><!-- HANGUL SYLLABLE NEON -->
+      <map code="0xb10d" name="1em"/><!-- HANGUL SYLLABLE NEONJ -->
+      <map code="0xb10e" name="1em"/><!-- HANGUL SYLLABLE NEONH -->
+      <map code="0xb10f" name="1em"/><!-- HANGUL SYLLABLE NEOD -->
+      <map code="0xb110" name="1em"/><!-- HANGUL SYLLABLE NEOL -->
+      <map code="0xb111" name="1em"/><!-- HANGUL SYLLABLE NEOLG -->
+      <map code="0xb112" name="1em"/><!-- HANGUL SYLLABLE NEOLM -->
+      <map code="0xb113" name="1em"/><!-- HANGUL SYLLABLE NEOLB -->
+      <map code="0xb114" name="1em"/><!-- HANGUL SYLLABLE NEOLS -->
+      <map code="0xb115" name="1em"/><!-- HANGUL SYLLABLE NEOLT -->
+      <map code="0xb116" name="1em"/><!-- HANGUL SYLLABLE NEOLP -->
+      <map code="0xb117" name="1em"/><!-- HANGUL SYLLABLE NEOLH -->
+      <map code="0xb118" name="1em"/><!-- HANGUL SYLLABLE NEOM -->
+      <map code="0xb119" name="1em"/><!-- HANGUL SYLLABLE NEOB -->
+      <map code="0xb11a" name="1em"/><!-- HANGUL SYLLABLE NEOBS -->
+      <map code="0xb11b" name="1em"/><!-- HANGUL SYLLABLE NEOS -->
+      <map code="0xb11c" name="1em"/><!-- HANGUL SYLLABLE NEOSS -->
+      <map code="0xb11d" name="1em"/><!-- HANGUL SYLLABLE NEONG -->
+      <map code="0xb11e" name="1em"/><!-- HANGUL SYLLABLE NEOJ -->
+      <map code="0xb11f" name="1em"/><!-- HANGUL SYLLABLE NEOC -->
+      <map code="0xb120" name="1em"/><!-- HANGUL SYLLABLE NEOK -->
+      <map code="0xb121" name="1em"/><!-- HANGUL SYLLABLE NEOT -->
+      <map code="0xb122" name="1em"/><!-- HANGUL SYLLABLE NEOP -->
+      <map code="0xb123" name="1em"/><!-- HANGUL SYLLABLE NEOH -->
+      <map code="0xb124" name="1em"/><!-- HANGUL SYLLABLE NE -->
+      <map code="0xb125" name="1em"/><!-- HANGUL SYLLABLE NEG -->
+      <map code="0xb126" name="1em"/><!-- HANGUL SYLLABLE NEGG -->
+      <map code="0xb127" name="1em"/><!-- HANGUL SYLLABLE NEGS -->
+      <map code="0xb128" name="1em"/><!-- HANGUL SYLLABLE NEN -->
+      <map code="0xb129" name="1em"/><!-- HANGUL SYLLABLE NENJ -->
+      <map code="0xb12a" name="1em"/><!-- HANGUL SYLLABLE NENH -->
+      <map code="0xb12b" name="1em"/><!-- HANGUL SYLLABLE NED -->
+      <map code="0xb12c" name="1em"/><!-- HANGUL SYLLABLE NEL -->
+      <map code="0xb12d" name="1em"/><!-- HANGUL SYLLABLE NELG -->
+      <map code="0xb12e" name="1em"/><!-- HANGUL SYLLABLE NELM -->
+      <map code="0xb12f" name="1em"/><!-- HANGUL SYLLABLE NELB -->
+      <map code="0xb130" name="1em"/><!-- HANGUL SYLLABLE NELS -->
+      <map code="0xb131" name="1em"/><!-- HANGUL SYLLABLE NELT -->
+      <map code="0xb132" name="1em"/><!-- HANGUL SYLLABLE NELP -->
+      <map code="0xb133" name="1em"/><!-- HANGUL SYLLABLE NELH -->
+      <map code="0xb134" name="1em"/><!-- HANGUL SYLLABLE NEM -->
+      <map code="0xb135" name="1em"/><!-- HANGUL SYLLABLE NEB -->
+      <map code="0xb136" name="1em"/><!-- HANGUL SYLLABLE NEBS -->
+      <map code="0xb137" name="1em"/><!-- HANGUL SYLLABLE NES -->
+      <map code="0xb138" name="1em"/><!-- HANGUL SYLLABLE NESS -->
+      <map code="0xb139" name="1em"/><!-- HANGUL SYLLABLE NENG -->
+      <map code="0xb13a" name="1em"/><!-- HANGUL SYLLABLE NEJ -->
+      <map code="0xb13b" name="1em"/><!-- HANGUL SYLLABLE NEC -->
+      <map code="0xb13c" name="1em"/><!-- HANGUL SYLLABLE NEK -->
+      <map code="0xb13d" name="1em"/><!-- HANGUL SYLLABLE NET -->
+      <map code="0xb13e" name="1em"/><!-- HANGUL SYLLABLE NEP -->
+      <map code="0xb13f" name="1em"/><!-- HANGUL SYLLABLE NEH -->
+      <map code="0xb140" name="1em"/><!-- HANGUL SYLLABLE NYEO -->
+      <map code="0xb141" name="1em"/><!-- HANGUL SYLLABLE NYEOG -->
+      <map code="0xb142" name="1em"/><!-- HANGUL SYLLABLE NYEOGG -->
+      <map code="0xb143" name="1em"/><!-- HANGUL SYLLABLE NYEOGS -->
+      <map code="0xb144" name="1em"/><!-- HANGUL SYLLABLE NYEON -->
+      <map code="0xb145" name="1em"/><!-- HANGUL SYLLABLE NYEONJ -->
+      <map code="0xb146" name="1em"/><!-- HANGUL SYLLABLE NYEONH -->
+      <map code="0xb147" name="1em"/><!-- HANGUL SYLLABLE NYEOD -->
+      <map code="0xb148" name="1em"/><!-- HANGUL SYLLABLE NYEOL -->
+      <map code="0xb149" name="1em"/><!-- HANGUL SYLLABLE NYEOLG -->
+      <map code="0xb14a" name="1em"/><!-- HANGUL SYLLABLE NYEOLM -->
+      <map code="0xb14b" name="1em"/><!-- HANGUL SYLLABLE NYEOLB -->
+      <map code="0xb14c" name="1em"/><!-- HANGUL SYLLABLE NYEOLS -->
+      <map code="0xb14d" name="1em"/><!-- HANGUL SYLLABLE NYEOLT -->
+      <map code="0xb14e" name="1em"/><!-- HANGUL SYLLABLE NYEOLP -->
+      <map code="0xb14f" name="1em"/><!-- HANGUL SYLLABLE NYEOLH -->
+      <map code="0xb150" name="1em"/><!-- HANGUL SYLLABLE NYEOM -->
+      <map code="0xb151" name="1em"/><!-- HANGUL SYLLABLE NYEOB -->
+      <map code="0xb152" name="1em"/><!-- HANGUL SYLLABLE NYEOBS -->
+      <map code="0xb153" name="1em"/><!-- HANGUL SYLLABLE NYEOS -->
+      <map code="0xb154" name="1em"/><!-- HANGUL SYLLABLE NYEOSS -->
+      <map code="0xb155" name="1em"/><!-- HANGUL SYLLABLE NYEONG -->
+      <map code="0xb156" name="1em"/><!-- HANGUL SYLLABLE NYEOJ -->
+      <map code="0xb157" name="1em"/><!-- HANGUL SYLLABLE NYEOC -->
+      <map code="0xb158" name="1em"/><!-- HANGUL SYLLABLE NYEOK -->
+      <map code="0xb159" name="1em"/><!-- HANGUL SYLLABLE NYEOT -->
+      <map code="0xb15a" name="1em"/><!-- HANGUL SYLLABLE NYEOP -->
+      <map code="0xb15b" name="1em"/><!-- HANGUL SYLLABLE NYEOH -->
+      <map code="0xb15c" name="1em"/><!-- HANGUL SYLLABLE NYE -->
+      <map code="0xb15d" name="1em"/><!-- HANGUL SYLLABLE NYEG -->
+      <map code="0xb15e" name="1em"/><!-- HANGUL SYLLABLE NYEGG -->
+      <map code="0xb15f" name="1em"/><!-- HANGUL SYLLABLE NYEGS -->
+      <map code="0xb160" name="1em"/><!-- HANGUL SYLLABLE NYEN -->
+      <map code="0xb161" name="1em"/><!-- HANGUL SYLLABLE NYENJ -->
+      <map code="0xb162" name="1em"/><!-- HANGUL SYLLABLE NYENH -->
+      <map code="0xb163" name="1em"/><!-- HANGUL SYLLABLE NYED -->
+      <map code="0xb164" name="1em"/><!-- HANGUL SYLLABLE NYEL -->
+      <map code="0xb165" name="1em"/><!-- HANGUL SYLLABLE NYELG -->
+      <map code="0xb166" name="1em"/><!-- HANGUL SYLLABLE NYELM -->
+      <map code="0xb167" name="1em"/><!-- HANGUL SYLLABLE NYELB -->
+      <map code="0xb168" name="1em"/><!-- HANGUL SYLLABLE NYELS -->
+      <map code="0xb169" name="1em"/><!-- HANGUL SYLLABLE NYELT -->
+      <map code="0xb16a" name="1em"/><!-- HANGUL SYLLABLE NYELP -->
+      <map code="0xb16b" name="1em"/><!-- HANGUL SYLLABLE NYELH -->
+      <map code="0xb16c" name="1em"/><!-- HANGUL SYLLABLE NYEM -->
+      <map code="0xb16d" name="1em"/><!-- HANGUL SYLLABLE NYEB -->
+      <map code="0xb16e" name="1em"/><!-- HANGUL SYLLABLE NYEBS -->
+      <map code="0xb16f" name="1em"/><!-- HANGUL SYLLABLE NYES -->
+      <map code="0xb170" name="1em"/><!-- HANGUL SYLLABLE NYESS -->
+      <map code="0xb171" name="1em"/><!-- HANGUL SYLLABLE NYENG -->
+      <map code="0xb172" name="1em"/><!-- HANGUL SYLLABLE NYEJ -->
+      <map code="0xb173" name="1em"/><!-- HANGUL SYLLABLE NYEC -->
+      <map code="0xb174" name="1em"/><!-- HANGUL SYLLABLE NYEK -->
+      <map code="0xb175" name="1em"/><!-- HANGUL SYLLABLE NYET -->
+      <map code="0xb176" name="1em"/><!-- HANGUL SYLLABLE NYEP -->
+      <map code="0xb177" name="1em"/><!-- HANGUL SYLLABLE NYEH -->
+      <map code="0xb178" name="1em"/><!-- HANGUL SYLLABLE NO -->
+      <map code="0xb179" name="1em"/><!-- HANGUL SYLLABLE NOG -->
+      <map code="0xb17a" name="1em"/><!-- HANGUL SYLLABLE NOGG -->
+      <map code="0xb17b" name="1em"/><!-- HANGUL SYLLABLE NOGS -->
+      <map code="0xb17c" name="1em"/><!-- HANGUL SYLLABLE NON -->
+      <map code="0xb17d" name="1em"/><!-- HANGUL SYLLABLE NONJ -->
+      <map code="0xb17e" name="1em"/><!-- HANGUL SYLLABLE NONH -->
+      <map code="0xb17f" name="1em"/><!-- HANGUL SYLLABLE NOD -->
+      <map code="0xb180" name="1em"/><!-- HANGUL SYLLABLE NOL -->
+      <map code="0xb181" name="1em"/><!-- HANGUL SYLLABLE NOLG -->
+      <map code="0xb182" name="1em"/><!-- HANGUL SYLLABLE NOLM -->
+      <map code="0xb183" name="1em"/><!-- HANGUL SYLLABLE NOLB -->
+      <map code="0xb184" name="1em"/><!-- HANGUL SYLLABLE NOLS -->
+      <map code="0xb185" name="1em"/><!-- HANGUL SYLLABLE NOLT -->
+      <map code="0xb186" name="1em"/><!-- HANGUL SYLLABLE NOLP -->
+      <map code="0xb187" name="1em"/><!-- HANGUL SYLLABLE NOLH -->
+      <map code="0xb188" name="1em"/><!-- HANGUL SYLLABLE NOM -->
+      <map code="0xb189" name="1em"/><!-- HANGUL SYLLABLE NOB -->
+      <map code="0xb18a" name="1em"/><!-- HANGUL SYLLABLE NOBS -->
+      <map code="0xb18b" name="1em"/><!-- HANGUL SYLLABLE NOS -->
+      <map code="0xb18c" name="1em"/><!-- HANGUL SYLLABLE NOSS -->
+      <map code="0xb18d" name="1em"/><!-- HANGUL SYLLABLE NONG -->
+      <map code="0xb18e" name="1em"/><!-- HANGUL SYLLABLE NOJ -->
+      <map code="0xb18f" name="1em"/><!-- HANGUL SYLLABLE NOC -->
+      <map code="0xb190" name="1em"/><!-- HANGUL SYLLABLE NOK -->
+      <map code="0xb191" name="1em"/><!-- HANGUL SYLLABLE NOT -->
+      <map code="0xb192" name="1em"/><!-- HANGUL SYLLABLE NOP -->
+      <map code="0xb193" name="1em"/><!-- HANGUL SYLLABLE NOH -->
+      <map code="0xb194" name="1em"/><!-- HANGUL SYLLABLE NWA -->
+      <map code="0xb195" name="1em"/><!-- HANGUL SYLLABLE NWAG -->
+      <map code="0xb196" name="1em"/><!-- HANGUL SYLLABLE NWAGG -->
+      <map code="0xb197" name="1em"/><!-- HANGUL SYLLABLE NWAGS -->
+      <map code="0xb198" name="1em"/><!-- HANGUL SYLLABLE NWAN -->
+      <map code="0xb199" name="1em"/><!-- HANGUL SYLLABLE NWANJ -->
+      <map code="0xb19a" name="1em"/><!-- HANGUL SYLLABLE NWANH -->
+      <map code="0xb19b" name="1em"/><!-- HANGUL SYLLABLE NWAD -->
+      <map code="0xb19c" name="1em"/><!-- HANGUL SYLLABLE NWAL -->
+      <map code="0xb19d" name="1em"/><!-- HANGUL SYLLABLE NWALG -->
+      <map code="0xb19e" name="1em"/><!-- HANGUL SYLLABLE NWALM -->
+      <map code="0xb19f" name="1em"/><!-- HANGUL SYLLABLE NWALB -->
+      <map code="0xb1a0" name="1em"/><!-- HANGUL SYLLABLE NWALS -->
+      <map code="0xb1a1" name="1em"/><!-- HANGUL SYLLABLE NWALT -->
+      <map code="0xb1a2" name="1em"/><!-- HANGUL SYLLABLE NWALP -->
+      <map code="0xb1a3" name="1em"/><!-- HANGUL SYLLABLE NWALH -->
+      <map code="0xb1a4" name="1em"/><!-- HANGUL SYLLABLE NWAM -->
+      <map code="0xb1a5" name="1em"/><!-- HANGUL SYLLABLE NWAB -->
+      <map code="0xb1a6" name="1em"/><!-- HANGUL SYLLABLE NWABS -->
+      <map code="0xb1a7" name="1em"/><!-- HANGUL SYLLABLE NWAS -->
+      <map code="0xb1a8" name="1em"/><!-- HANGUL SYLLABLE NWASS -->
+      <map code="0xb1a9" name="1em"/><!-- HANGUL SYLLABLE NWANG -->
+      <map code="0xb1aa" name="1em"/><!-- HANGUL SYLLABLE NWAJ -->
+      <map code="0xb1ab" name="1em"/><!-- HANGUL SYLLABLE NWAC -->
+      <map code="0xb1ac" name="1em"/><!-- HANGUL SYLLABLE NWAK -->
+      <map code="0xb1ad" name="1em"/><!-- HANGUL SYLLABLE NWAT -->
+      <map code="0xb1ae" name="1em"/><!-- HANGUL SYLLABLE NWAP -->
+      <map code="0xb1af" name="1em"/><!-- HANGUL SYLLABLE NWAH -->
+      <map code="0xb1b0" name="1em"/><!-- HANGUL SYLLABLE NWAE -->
+      <map code="0xb1b1" name="1em"/><!-- HANGUL SYLLABLE NWAEG -->
+      <map code="0xb1b2" name="1em"/><!-- HANGUL SYLLABLE NWAEGG -->
+      <map code="0xb1b3" name="1em"/><!-- HANGUL SYLLABLE NWAEGS -->
+      <map code="0xb1b4" name="1em"/><!-- HANGUL SYLLABLE NWAEN -->
+      <map code="0xb1b5" name="1em"/><!-- HANGUL SYLLABLE NWAENJ -->
+      <map code="0xb1b6" name="1em"/><!-- HANGUL SYLLABLE NWAENH -->
+      <map code="0xb1b7" name="1em"/><!-- HANGUL SYLLABLE NWAED -->
+      <map code="0xb1b8" name="1em"/><!-- HANGUL SYLLABLE NWAEL -->
+      <map code="0xb1b9" name="1em"/><!-- HANGUL SYLLABLE NWAELG -->
+      <map code="0xb1ba" name="1em"/><!-- HANGUL SYLLABLE NWAELM -->
+      <map code="0xb1bb" name="1em"/><!-- HANGUL SYLLABLE NWAELB -->
+      <map code="0xb1bc" name="1em"/><!-- HANGUL SYLLABLE NWAELS -->
+      <map code="0xb1bd" name="1em"/><!-- HANGUL SYLLABLE NWAELT -->
+      <map code="0xb1be" name="1em"/><!-- HANGUL SYLLABLE NWAELP -->
+      <map code="0xb1bf" name="1em"/><!-- HANGUL SYLLABLE NWAELH -->
+      <map code="0xb1c0" name="1em"/><!-- HANGUL SYLLABLE NWAEM -->
+      <map code="0xb1c1" name="1em"/><!-- HANGUL SYLLABLE NWAEB -->
+      <map code="0xb1c2" name="1em"/><!-- HANGUL SYLLABLE NWAEBS -->
+      <map code="0xb1c3" name="1em"/><!-- HANGUL SYLLABLE NWAES -->
+      <map code="0xb1c4" name="1em"/><!-- HANGUL SYLLABLE NWAESS -->
+      <map code="0xb1c5" name="1em"/><!-- HANGUL SYLLABLE NWAENG -->
+      <map code="0xb1c6" name="1em"/><!-- HANGUL SYLLABLE NWAEJ -->
+      <map code="0xb1c7" name="1em"/><!-- HANGUL SYLLABLE NWAEC -->
+      <map code="0xb1c8" name="1em"/><!-- HANGUL SYLLABLE NWAEK -->
+      <map code="0xb1c9" name="1em"/><!-- HANGUL SYLLABLE NWAET -->
+      <map code="0xb1ca" name="1em"/><!-- HANGUL SYLLABLE NWAEP -->
+      <map code="0xb1cb" name="1em"/><!-- HANGUL SYLLABLE NWAEH -->
+      <map code="0xb1cc" name="1em"/><!-- HANGUL SYLLABLE NOE -->
+      <map code="0xb1cd" name="1em"/><!-- HANGUL SYLLABLE NOEG -->
+      <map code="0xb1ce" name="1em"/><!-- HANGUL SYLLABLE NOEGG -->
+      <map code="0xb1cf" name="1em"/><!-- HANGUL SYLLABLE NOEGS -->
+      <map code="0xb1d0" name="1em"/><!-- HANGUL SYLLABLE NOEN -->
+      <map code="0xb1d1" name="1em"/><!-- HANGUL SYLLABLE NOENJ -->
+      <map code="0xb1d2" name="1em"/><!-- HANGUL SYLLABLE NOENH -->
+      <map code="0xb1d3" name="1em"/><!-- HANGUL SYLLABLE NOED -->
+      <map code="0xb1d4" name="1em"/><!-- HANGUL SYLLABLE NOEL -->
+      <map code="0xb1d5" name="1em"/><!-- HANGUL SYLLABLE NOELG -->
+      <map code="0xb1d6" name="1em"/><!-- HANGUL SYLLABLE NOELM -->
+      <map code="0xb1d7" name="1em"/><!-- HANGUL SYLLABLE NOELB -->
+      <map code="0xb1d8" name="1em"/><!-- HANGUL SYLLABLE NOELS -->
+      <map code="0xb1d9" name="1em"/><!-- HANGUL SYLLABLE NOELT -->
+      <map code="0xb1da" name="1em"/><!-- HANGUL SYLLABLE NOELP -->
+      <map code="0xb1db" name="1em"/><!-- HANGUL SYLLABLE NOELH -->
+      <map code="0xb1dc" name="1em"/><!-- HANGUL SYLLABLE NOEM -->
+      <map code="0xb1dd" name="1em"/><!-- HANGUL SYLLABLE NOEB -->
+      <map code="0xb1de" name="1em"/><!-- HANGUL SYLLABLE NOEBS -->
+      <map code="0xb1df" name="1em"/><!-- HANGUL SYLLABLE NOES -->
+      <map code="0xb1e0" name="1em"/><!-- HANGUL SYLLABLE NOESS -->
+      <map code="0xb1e1" name="1em"/><!-- HANGUL SYLLABLE NOENG -->
+      <map code="0xb1e2" name="1em"/><!-- HANGUL SYLLABLE NOEJ -->
+      <map code="0xb1e3" name="1em"/><!-- HANGUL SYLLABLE NOEC -->
+      <map code="0xb1e4" name="1em"/><!-- HANGUL SYLLABLE NOEK -->
+      <map code="0xb1e5" name="1em"/><!-- HANGUL SYLLABLE NOET -->
+      <map code="0xb1e6" name="1em"/><!-- HANGUL SYLLABLE NOEP -->
+      <map code="0xb1e7" name="1em"/><!-- HANGUL SYLLABLE NOEH -->
+      <map code="0xb1e8" name="1em"/><!-- HANGUL SYLLABLE NYO -->
+      <map code="0xb1e9" name="1em"/><!-- HANGUL SYLLABLE NYOG -->
+      <map code="0xb1ea" name="1em"/><!-- HANGUL SYLLABLE NYOGG -->
+      <map code="0xb1eb" name="1em"/><!-- HANGUL SYLLABLE NYOGS -->
+      <map code="0xb1ec" name="1em"/><!-- HANGUL SYLLABLE NYON -->
+      <map code="0xb1ed" name="1em"/><!-- HANGUL SYLLABLE NYONJ -->
+      <map code="0xb1ee" name="1em"/><!-- HANGUL SYLLABLE NYONH -->
+      <map code="0xb1ef" name="1em"/><!-- HANGUL SYLLABLE NYOD -->
+      <map code="0xb1f0" name="1em"/><!-- HANGUL SYLLABLE NYOL -->
+      <map code="0xb1f1" name="1em"/><!-- HANGUL SYLLABLE NYOLG -->
+      <map code="0xb1f2" name="1em"/><!-- HANGUL SYLLABLE NYOLM -->
+      <map code="0xb1f3" name="1em"/><!-- HANGUL SYLLABLE NYOLB -->
+      <map code="0xb1f4" name="1em"/><!-- HANGUL SYLLABLE NYOLS -->
+      <map code="0xb1f5" name="1em"/><!-- HANGUL SYLLABLE NYOLT -->
+      <map code="0xb1f6" name="1em"/><!-- HANGUL SYLLABLE NYOLP -->
+      <map code="0xb1f7" name="1em"/><!-- HANGUL SYLLABLE NYOLH -->
+      <map code="0xb1f8" name="1em"/><!-- HANGUL SYLLABLE NYOM -->
+      <map code="0xb1f9" name="1em"/><!-- HANGUL SYLLABLE NYOB -->
+      <map code="0xb1fa" name="1em"/><!-- HANGUL SYLLABLE NYOBS -->
+      <map code="0xb1fb" name="1em"/><!-- HANGUL SYLLABLE NYOS -->
+      <map code="0xb1fc" name="1em"/><!-- HANGUL SYLLABLE NYOSS -->
+      <map code="0xb1fd" name="1em"/><!-- HANGUL SYLLABLE NYONG -->
+      <map code="0xb1fe" name="1em"/><!-- HANGUL SYLLABLE NYOJ -->
+      <map code="0xb1ff" name="1em"/><!-- HANGUL SYLLABLE NYOC -->
+      <map code="0xb200" name="1em"/><!-- HANGUL SYLLABLE NYOK -->
+      <map code="0xb201" name="1em"/><!-- HANGUL SYLLABLE NYOT -->
+      <map code="0xb202" name="1em"/><!-- HANGUL SYLLABLE NYOP -->
+      <map code="0xb203" name="1em"/><!-- HANGUL SYLLABLE NYOH -->
+      <map code="0xb204" name="1em"/><!-- HANGUL SYLLABLE NU -->
+      <map code="0xb205" name="1em"/><!-- HANGUL SYLLABLE NUG -->
+      <map code="0xb206" name="1em"/><!-- HANGUL SYLLABLE NUGG -->
+      <map code="0xb207" name="1em"/><!-- HANGUL SYLLABLE NUGS -->
+      <map code="0xb208" name="1em"/><!-- HANGUL SYLLABLE NUN -->
+      <map code="0xb209" name="1em"/><!-- HANGUL SYLLABLE NUNJ -->
+      <map code="0xb20a" name="1em"/><!-- HANGUL SYLLABLE NUNH -->
+      <map code="0xb20b" name="1em"/><!-- HANGUL SYLLABLE NUD -->
+      <map code="0xb20c" name="1em"/><!-- HANGUL SYLLABLE NUL -->
+      <map code="0xb20d" name="1em"/><!-- HANGUL SYLLABLE NULG -->
+      <map code="0xb20e" name="1em"/><!-- HANGUL SYLLABLE NULM -->
+      <map code="0xb20f" name="1em"/><!-- HANGUL SYLLABLE NULB -->
+      <map code="0xb210" name="1em"/><!-- HANGUL SYLLABLE NULS -->
+      <map code="0xb211" name="1em"/><!-- HANGUL SYLLABLE NULT -->
+      <map code="0xb212" name="1em"/><!-- HANGUL SYLLABLE NULP -->
+      <map code="0xb213" name="1em"/><!-- HANGUL SYLLABLE NULH -->
+      <map code="0xb214" name="1em"/><!-- HANGUL SYLLABLE NUM -->
+      <map code="0xb215" name="1em"/><!-- HANGUL SYLLABLE NUB -->
+      <map code="0xb216" name="1em"/><!-- HANGUL SYLLABLE NUBS -->
+      <map code="0xb217" name="1em"/><!-- HANGUL SYLLABLE NUS -->
+      <map code="0xb218" name="1em"/><!-- HANGUL SYLLABLE NUSS -->
+      <map code="0xb219" name="1em"/><!-- HANGUL SYLLABLE NUNG -->
+      <map code="0xb21a" name="1em"/><!-- HANGUL SYLLABLE NUJ -->
+      <map code="0xb21b" name="1em"/><!-- HANGUL SYLLABLE NUC -->
+      <map code="0xb21c" name="1em"/><!-- HANGUL SYLLABLE NUK -->
+      <map code="0xb21d" name="1em"/><!-- HANGUL SYLLABLE NUT -->
+      <map code="0xb21e" name="1em"/><!-- HANGUL SYLLABLE NUP -->
+      <map code="0xb21f" name="1em"/><!-- HANGUL SYLLABLE NUH -->
+      <map code="0xb220" name="1em"/><!-- HANGUL SYLLABLE NWEO -->
+      <map code="0xb221" name="1em"/><!-- HANGUL SYLLABLE NWEOG -->
+      <map code="0xb222" name="1em"/><!-- HANGUL SYLLABLE NWEOGG -->
+      <map code="0xb223" name="1em"/><!-- HANGUL SYLLABLE NWEOGS -->
+      <map code="0xb224" name="1em"/><!-- HANGUL SYLLABLE NWEON -->
+      <map code="0xb225" name="1em"/><!-- HANGUL SYLLABLE NWEONJ -->
+      <map code="0xb226" name="1em"/><!-- HANGUL SYLLABLE NWEONH -->
+      <map code="0xb227" name="1em"/><!-- HANGUL SYLLABLE NWEOD -->
+      <map code="0xb228" name="1em"/><!-- HANGUL SYLLABLE NWEOL -->
+      <map code="0xb229" name="1em"/><!-- HANGUL SYLLABLE NWEOLG -->
+      <map code="0xb22a" name="1em"/><!-- HANGUL SYLLABLE NWEOLM -->
+      <map code="0xb22b" name="1em"/><!-- HANGUL SYLLABLE NWEOLB -->
+      <map code="0xb22c" name="1em"/><!-- HANGUL SYLLABLE NWEOLS -->
+      <map code="0xb22d" name="1em"/><!-- HANGUL SYLLABLE NWEOLT -->
+      <map code="0xb22e" name="1em"/><!-- HANGUL SYLLABLE NWEOLP -->
+      <map code="0xb22f" name="1em"/><!-- HANGUL SYLLABLE NWEOLH -->
+      <map code="0xb230" name="1em"/><!-- HANGUL SYLLABLE NWEOM -->
+      <map code="0xb231" name="1em"/><!-- HANGUL SYLLABLE NWEOB -->
+      <map code="0xb232" name="1em"/><!-- HANGUL SYLLABLE NWEOBS -->
+      <map code="0xb233" name="1em"/><!-- HANGUL SYLLABLE NWEOS -->
+      <map code="0xb234" name="1em"/><!-- HANGUL SYLLABLE NWEOSS -->
+      <map code="0xb235" name="1em"/><!-- HANGUL SYLLABLE NWEONG -->
+      <map code="0xb236" name="1em"/><!-- HANGUL SYLLABLE NWEOJ -->
+      <map code="0xb237" name="1em"/><!-- HANGUL SYLLABLE NWEOC -->
+      <map code="0xb238" name="1em"/><!-- HANGUL SYLLABLE NWEOK -->
+      <map code="0xb239" name="1em"/><!-- HANGUL SYLLABLE NWEOT -->
+      <map code="0xb23a" name="1em"/><!-- HANGUL SYLLABLE NWEOP -->
+      <map code="0xb23b" name="1em"/><!-- HANGUL SYLLABLE NWEOH -->
+      <map code="0xb23c" name="1em"/><!-- HANGUL SYLLABLE NWE -->
+      <map code="0xb23d" name="1em"/><!-- HANGUL SYLLABLE NWEG -->
+      <map code="0xb23e" name="1em"/><!-- HANGUL SYLLABLE NWEGG -->
+      <map code="0xb23f" name="1em"/><!-- HANGUL SYLLABLE NWEGS -->
+      <map code="0xb240" name="1em"/><!-- HANGUL SYLLABLE NWEN -->
+      <map code="0xb241" name="1em"/><!-- HANGUL SYLLABLE NWENJ -->
+      <map code="0xb242" name="1em"/><!-- HANGUL SYLLABLE NWENH -->
+      <map code="0xb243" name="1em"/><!-- HANGUL SYLLABLE NWED -->
+      <map code="0xb244" name="1em"/><!-- HANGUL SYLLABLE NWEL -->
+      <map code="0xb245" name="1em"/><!-- HANGUL SYLLABLE NWELG -->
+      <map code="0xb246" name="1em"/><!-- HANGUL SYLLABLE NWELM -->
+      <map code="0xb247" name="1em"/><!-- HANGUL SYLLABLE NWELB -->
+      <map code="0xb248" name="1em"/><!-- HANGUL SYLLABLE NWELS -->
+      <map code="0xb249" name="1em"/><!-- HANGUL SYLLABLE NWELT -->
+      <map code="0xb24a" name="1em"/><!-- HANGUL SYLLABLE NWELP -->
+      <map code="0xb24b" name="1em"/><!-- HANGUL SYLLABLE NWELH -->
+      <map code="0xb24c" name="1em"/><!-- HANGUL SYLLABLE NWEM -->
+      <map code="0xb24d" name="1em"/><!-- HANGUL SYLLABLE NWEB -->
+      <map code="0xb24e" name="1em"/><!-- HANGUL SYLLABLE NWEBS -->
+      <map code="0xb24f" name="1em"/><!-- HANGUL SYLLABLE NWES -->
+      <map code="0xb250" name="1em"/><!-- HANGUL SYLLABLE NWESS -->
+      <map code="0xb251" name="1em"/><!-- HANGUL SYLLABLE NWENG -->
+      <map code="0xb252" name="1em"/><!-- HANGUL SYLLABLE NWEJ -->
+      <map code="0xb253" name="1em"/><!-- HANGUL SYLLABLE NWEC -->
+      <map code="0xb254" name="1em"/><!-- HANGUL SYLLABLE NWEK -->
+      <map code="0xb255" name="1em"/><!-- HANGUL SYLLABLE NWET -->
+      <map code="0xb256" name="1em"/><!-- HANGUL SYLLABLE NWEP -->
+      <map code="0xb257" name="1em"/><!-- HANGUL SYLLABLE NWEH -->
+      <map code="0xb258" name="1em"/><!-- HANGUL SYLLABLE NWI -->
+      <map code="0xb259" name="1em"/><!-- HANGUL SYLLABLE NWIG -->
+      <map code="0xb25a" name="1em"/><!-- HANGUL SYLLABLE NWIGG -->
+      <map code="0xb25b" name="1em"/><!-- HANGUL SYLLABLE NWIGS -->
+      <map code="0xb25c" name="1em"/><!-- HANGUL SYLLABLE NWIN -->
+      <map code="0xb25d" name="1em"/><!-- HANGUL SYLLABLE NWINJ -->
+      <map code="0xb25e" name="1em"/><!-- HANGUL SYLLABLE NWINH -->
+      <map code="0xb25f" name="1em"/><!-- HANGUL SYLLABLE NWID -->
+      <map code="0xb260" name="1em"/><!-- HANGUL SYLLABLE NWIL -->
+      <map code="0xb261" name="1em"/><!-- HANGUL SYLLABLE NWILG -->
+      <map code="0xb262" name="1em"/><!-- HANGUL SYLLABLE NWILM -->
+      <map code="0xb263" name="1em"/><!-- HANGUL SYLLABLE NWILB -->
+      <map code="0xb264" name="1em"/><!-- HANGUL SYLLABLE NWILS -->
+      <map code="0xb265" name="1em"/><!-- HANGUL SYLLABLE NWILT -->
+      <map code="0xb266" name="1em"/><!-- HANGUL SYLLABLE NWILP -->
+      <map code="0xb267" name="1em"/><!-- HANGUL SYLLABLE NWILH -->
+      <map code="0xb268" name="1em"/><!-- HANGUL SYLLABLE NWIM -->
+      <map code="0xb269" name="1em"/><!-- HANGUL SYLLABLE NWIB -->
+      <map code="0xb26a" name="1em"/><!-- HANGUL SYLLABLE NWIBS -->
+      <map code="0xb26b" name="1em"/><!-- HANGUL SYLLABLE NWIS -->
+      <map code="0xb26c" name="1em"/><!-- HANGUL SYLLABLE NWISS -->
+      <map code="0xb26d" name="1em"/><!-- HANGUL SYLLABLE NWING -->
+      <map code="0xb26e" name="1em"/><!-- HANGUL SYLLABLE NWIJ -->
+      <map code="0xb26f" name="1em"/><!-- HANGUL SYLLABLE NWIC -->
+      <map code="0xb270" name="1em"/><!-- HANGUL SYLLABLE NWIK -->
+      <map code="0xb271" name="1em"/><!-- HANGUL SYLLABLE NWIT -->
+      <map code="0xb272" name="1em"/><!-- HANGUL SYLLABLE NWIP -->
+      <map code="0xb273" name="1em"/><!-- HANGUL SYLLABLE NWIH -->
+      <map code="0xb274" name="1em"/><!-- HANGUL SYLLABLE NYU -->
+      <map code="0xb275" name="1em"/><!-- HANGUL SYLLABLE NYUG -->
+      <map code="0xb276" name="1em"/><!-- HANGUL SYLLABLE NYUGG -->
+      <map code="0xb277" name="1em"/><!-- HANGUL SYLLABLE NYUGS -->
+      <map code="0xb278" name="1em"/><!-- HANGUL SYLLABLE NYUN -->
+      <map code="0xb279" name="1em"/><!-- HANGUL SYLLABLE NYUNJ -->
+      <map code="0xb27a" name="1em"/><!-- HANGUL SYLLABLE NYUNH -->
+      <map code="0xb27b" name="1em"/><!-- HANGUL SYLLABLE NYUD -->
+      <map code="0xb27c" name="1em"/><!-- HANGUL SYLLABLE NYUL -->
+      <map code="0xb27d" name="1em"/><!-- HANGUL SYLLABLE NYULG -->
+      <map code="0xb27e" name="1em"/><!-- HANGUL SYLLABLE NYULM -->
+      <map code="0xb27f" name="1em"/><!-- HANGUL SYLLABLE NYULB -->
+      <map code="0xb280" name="1em"/><!-- HANGUL SYLLABLE NYULS -->
+      <map code="0xb281" name="1em"/><!-- HANGUL SYLLABLE NYULT -->
+      <map code="0xb282" name="1em"/><!-- HANGUL SYLLABLE NYULP -->
+      <map code="0xb283" name="1em"/><!-- HANGUL SYLLABLE NYULH -->
+      <map code="0xb284" name="1em"/><!-- HANGUL SYLLABLE NYUM -->
+      <map code="0xb285" name="1em"/><!-- HANGUL SYLLABLE NYUB -->
+      <map code="0xb286" name="1em"/><!-- HANGUL SYLLABLE NYUBS -->
+      <map code="0xb287" name="1em"/><!-- HANGUL SYLLABLE NYUS -->
+      <map code="0xb288" name="1em"/><!-- HANGUL SYLLABLE NYUSS -->
+      <map code="0xb289" name="1em"/><!-- HANGUL SYLLABLE NYUNG -->
+      <map code="0xb28a" name="1em"/><!-- HANGUL SYLLABLE NYUJ -->
+      <map code="0xb28b" name="1em"/><!-- HANGUL SYLLABLE NYUC -->
+      <map code="0xb28c" name="1em"/><!-- HANGUL SYLLABLE NYUK -->
+      <map code="0xb28d" name="1em"/><!-- HANGUL SYLLABLE NYUT -->
+      <map code="0xb28e" name="1em"/><!-- HANGUL SYLLABLE NYUP -->
+      <map code="0xb28f" name="1em"/><!-- HANGUL SYLLABLE NYUH -->
+      <map code="0xb290" name="1em"/><!-- HANGUL SYLLABLE NEU -->
+      <map code="0xb291" name="1em"/><!-- HANGUL SYLLABLE NEUG -->
+      <map code="0xb292" name="1em"/><!-- HANGUL SYLLABLE NEUGG -->
+      <map code="0xb293" name="1em"/><!-- HANGUL SYLLABLE NEUGS -->
+      <map code="0xb294" name="1em"/><!-- HANGUL SYLLABLE NEUN -->
+      <map code="0xb295" name="1em"/><!-- HANGUL SYLLABLE NEUNJ -->
+      <map code="0xb296" name="1em"/><!-- HANGUL SYLLABLE NEUNH -->
+      <map code="0xb297" name="1em"/><!-- HANGUL SYLLABLE NEUD -->
+      <map code="0xb298" name="1em"/><!-- HANGUL SYLLABLE NEUL -->
+      <map code="0xb299" name="1em"/><!-- HANGUL SYLLABLE NEULG -->
+      <map code="0xb29a" name="1em"/><!-- HANGUL SYLLABLE NEULM -->
+      <map code="0xb29b" name="1em"/><!-- HANGUL SYLLABLE NEULB -->
+      <map code="0xb29c" name="1em"/><!-- HANGUL SYLLABLE NEULS -->
+      <map code="0xb29d" name="1em"/><!-- HANGUL SYLLABLE NEULT -->
+      <map code="0xb29e" name="1em"/><!-- HANGUL SYLLABLE NEULP -->
+      <map code="0xb29f" name="1em"/><!-- HANGUL SYLLABLE NEULH -->
+      <map code="0xb2a0" name="1em"/><!-- HANGUL SYLLABLE NEUM -->
+      <map code="0xb2a1" name="1em"/><!-- HANGUL SYLLABLE NEUB -->
+      <map code="0xb2a2" name="1em"/><!-- HANGUL SYLLABLE NEUBS -->
+      <map code="0xb2a3" name="1em"/><!-- HANGUL SYLLABLE NEUS -->
+      <map code="0xb2a4" name="1em"/><!-- HANGUL SYLLABLE NEUSS -->
+      <map code="0xb2a5" name="1em"/><!-- HANGUL SYLLABLE NEUNG -->
+      <map code="0xb2a6" name="1em"/><!-- HANGUL SYLLABLE NEUJ -->
+      <map code="0xb2a7" name="1em"/><!-- HANGUL SYLLABLE NEUC -->
+      <map code="0xb2a8" name="1em"/><!-- HANGUL SYLLABLE NEUK -->
+      <map code="0xb2a9" name="1em"/><!-- HANGUL SYLLABLE NEUT -->
+      <map code="0xb2aa" name="1em"/><!-- HANGUL SYLLABLE NEUP -->
+      <map code="0xb2ab" name="1em"/><!-- HANGUL SYLLABLE NEUH -->
+      <map code="0xb2ac" name="1em"/><!-- HANGUL SYLLABLE NYI -->
+      <map code="0xb2ad" name="1em"/><!-- HANGUL SYLLABLE NYIG -->
+      <map code="0xb2ae" name="1em"/><!-- HANGUL SYLLABLE NYIGG -->
+      <map code="0xb2af" name="1em"/><!-- HANGUL SYLLABLE NYIGS -->
+      <map code="0xb2b0" name="1em"/><!-- HANGUL SYLLABLE NYIN -->
+      <map code="0xb2b1" name="1em"/><!-- HANGUL SYLLABLE NYINJ -->
+      <map code="0xb2b2" name="1em"/><!-- HANGUL SYLLABLE NYINH -->
+      <map code="0xb2b3" name="1em"/><!-- HANGUL SYLLABLE NYID -->
+      <map code="0xb2b4" name="1em"/><!-- HANGUL SYLLABLE NYIL -->
+      <map code="0xb2b5" name="1em"/><!-- HANGUL SYLLABLE NYILG -->
+      <map code="0xb2b6" name="1em"/><!-- HANGUL SYLLABLE NYILM -->
+      <map code="0xb2b7" name="1em"/><!-- HANGUL SYLLABLE NYILB -->
+      <map code="0xb2b8" name="1em"/><!-- HANGUL SYLLABLE NYILS -->
+      <map code="0xb2b9" name="1em"/><!-- HANGUL SYLLABLE NYILT -->
+      <map code="0xb2ba" name="1em"/><!-- HANGUL SYLLABLE NYILP -->
+      <map code="0xb2bb" name="1em"/><!-- HANGUL SYLLABLE NYILH -->
+      <map code="0xb2bc" name="1em"/><!-- HANGUL SYLLABLE NYIM -->
+      <map code="0xb2bd" name="1em"/><!-- HANGUL SYLLABLE NYIB -->
+      <map code="0xb2be" name="1em"/><!-- HANGUL SYLLABLE NYIBS -->
+      <map code="0xb2bf" name="1em"/><!-- HANGUL SYLLABLE NYIS -->
+      <map code="0xb2c0" name="1em"/><!-- HANGUL SYLLABLE NYISS -->
+      <map code="0xb2c1" name="1em"/><!-- HANGUL SYLLABLE NYING -->
+      <map code="0xb2c2" name="1em"/><!-- HANGUL SYLLABLE NYIJ -->
+      <map code="0xb2c3" name="1em"/><!-- HANGUL SYLLABLE NYIC -->
+      <map code="0xb2c4" name="1em"/><!-- HANGUL SYLLABLE NYIK -->
+      <map code="0xb2c5" name="1em"/><!-- HANGUL SYLLABLE NYIT -->
+      <map code="0xb2c6" name="1em"/><!-- HANGUL SYLLABLE NYIP -->
+      <map code="0xb2c7" name="1em"/><!-- HANGUL SYLLABLE NYIH -->
+      <map code="0xb2c8" name="1em"/><!-- HANGUL SYLLABLE NI -->
+      <map code="0xb2c9" name="1em"/><!-- HANGUL SYLLABLE NIG -->
+      <map code="0xb2ca" name="1em"/><!-- HANGUL SYLLABLE NIGG -->
+      <map code="0xb2cb" name="1em"/><!-- HANGUL SYLLABLE NIGS -->
+      <map code="0xb2cc" name="1em"/><!-- HANGUL SYLLABLE NIN -->
+      <map code="0xb2cd" name="1em"/><!-- HANGUL SYLLABLE NINJ -->
+      <map code="0xb2ce" name="1em"/><!-- HANGUL SYLLABLE NINH -->
+      <map code="0xb2cf" name="1em"/><!-- HANGUL SYLLABLE NID -->
+      <map code="0xb2d0" name="1em"/><!-- HANGUL SYLLABLE NIL -->
+      <map code="0xb2d1" name="1em"/><!-- HANGUL SYLLABLE NILG -->
+      <map code="0xb2d2" name="1em"/><!-- HANGUL SYLLABLE NILM -->
+      <map code="0xb2d3" name="1em"/><!-- HANGUL SYLLABLE NILB -->
+      <map code="0xb2d4" name="1em"/><!-- HANGUL SYLLABLE NILS -->
+      <map code="0xb2d5" name="1em"/><!-- HANGUL SYLLABLE NILT -->
+      <map code="0xb2d6" name="1em"/><!-- HANGUL SYLLABLE NILP -->
+      <map code="0xb2d7" name="1em"/><!-- HANGUL SYLLABLE NILH -->
+      <map code="0xb2d8" name="1em"/><!-- HANGUL SYLLABLE NIM -->
+      <map code="0xb2d9" name="1em"/><!-- HANGUL SYLLABLE NIB -->
+      <map code="0xb2da" name="1em"/><!-- HANGUL SYLLABLE NIBS -->
+      <map code="0xb2db" name="1em"/><!-- HANGUL SYLLABLE NIS -->
+      <map code="0xb2dc" name="1em"/><!-- HANGUL SYLLABLE NISS -->
+      <map code="0xb2dd" name="1em"/><!-- HANGUL SYLLABLE NING -->
+      <map code="0xb2de" name="1em"/><!-- HANGUL SYLLABLE NIJ -->
+      <map code="0xb2df" name="1em"/><!-- HANGUL SYLLABLE NIC -->
+      <map code="0xb2e0" name="1em"/><!-- HANGUL SYLLABLE NIK -->
+      <map code="0xb2e1" name="1em"/><!-- HANGUL SYLLABLE NIT -->
+      <map code="0xb2e2" name="1em"/><!-- HANGUL SYLLABLE NIP -->
+      <map code="0xb2e3" name="1em"/><!-- HANGUL SYLLABLE NIH -->
+      <map code="0xb2e4" name="1em"/><!-- HANGUL SYLLABLE DA -->
+      <map code="0xb2e5" name="1em"/><!-- HANGUL SYLLABLE DAG -->
+      <map code="0xb2e6" name="1em"/><!-- HANGUL SYLLABLE DAGG -->
+      <map code="0xb2e7" name="1em"/><!-- HANGUL SYLLABLE DAGS -->
+      <map code="0xb2e8" name="1em"/><!-- HANGUL SYLLABLE DAN -->
+      <map code="0xb2e9" name="1em"/><!-- HANGUL SYLLABLE DANJ -->
+      <map code="0xb2ea" name="1em"/><!-- HANGUL SYLLABLE DANH -->
+      <map code="0xb2eb" name="1em"/><!-- HANGUL SYLLABLE DAD -->
+      <map code="0xb2ec" name="1em"/><!-- HANGUL SYLLABLE DAL -->
+      <map code="0xb2ed" name="1em"/><!-- HANGUL SYLLABLE DALG -->
+      <map code="0xb2ee" name="1em"/><!-- HANGUL SYLLABLE DALM -->
+      <map code="0xb2ef" name="1em"/><!-- HANGUL SYLLABLE DALB -->
+      <map code="0xb2f0" name="1em"/><!-- HANGUL SYLLABLE DALS -->
+      <map code="0xb2f1" name="1em"/><!-- HANGUL SYLLABLE DALT -->
+      <map code="0xb2f2" name="1em"/><!-- HANGUL SYLLABLE DALP -->
+      <map code="0xb2f3" name="1em"/><!-- HANGUL SYLLABLE DALH -->
+      <map code="0xb2f4" name="1em"/><!-- HANGUL SYLLABLE DAM -->
+      <map code="0xb2f5" name="1em"/><!-- HANGUL SYLLABLE DAB -->
+      <map code="0xb2f6" name="1em"/><!-- HANGUL SYLLABLE DABS -->
+      <map code="0xb2f7" name="1em"/><!-- HANGUL SYLLABLE DAS -->
+      <map code="0xb2f8" name="1em"/><!-- HANGUL SYLLABLE DASS -->
+      <map code="0xb2f9" name="1em"/><!-- HANGUL SYLLABLE DANG -->
+      <map code="0xb2fa" name="1em"/><!-- HANGUL SYLLABLE DAJ -->
+      <map code="0xb2fb" name="1em"/><!-- HANGUL SYLLABLE DAC -->
+      <map code="0xb2fc" name="1em"/><!-- HANGUL SYLLABLE DAK -->
+      <map code="0xb2fd" name="1em"/><!-- HANGUL SYLLABLE DAT -->
+      <map code="0xb2fe" name="1em"/><!-- HANGUL SYLLABLE DAP -->
+      <map code="0xb2ff" name="1em"/><!-- HANGUL SYLLABLE DAH -->
+      <map code="0xb300" name="1em"/><!-- HANGUL SYLLABLE DAE -->
+      <map code="0xb301" name="1em"/><!-- HANGUL SYLLABLE DAEG -->
+      <map code="0xb302" name="1em"/><!-- HANGUL SYLLABLE DAEGG -->
+      <map code="0xb303" name="1em"/><!-- HANGUL SYLLABLE DAEGS -->
+      <map code="0xb304" name="1em"/><!-- HANGUL SYLLABLE DAEN -->
+      <map code="0xb305" name="1em"/><!-- HANGUL SYLLABLE DAENJ -->
+      <map code="0xb306" name="1em"/><!-- HANGUL SYLLABLE DAENH -->
+      <map code="0xb307" name="1em"/><!-- HANGUL SYLLABLE DAED -->
+      <map code="0xb308" name="1em"/><!-- HANGUL SYLLABLE DAEL -->
+      <map code="0xb309" name="1em"/><!-- HANGUL SYLLABLE DAELG -->
+      <map code="0xb30a" name="1em"/><!-- HANGUL SYLLABLE DAELM -->
+      <map code="0xb30b" name="1em"/><!-- HANGUL SYLLABLE DAELB -->
+      <map code="0xb30c" name="1em"/><!-- HANGUL SYLLABLE DAELS -->
+      <map code="0xb30d" name="1em"/><!-- HANGUL SYLLABLE DAELT -->
+      <map code="0xb30e" name="1em"/><!-- HANGUL SYLLABLE DAELP -->
+      <map code="0xb30f" name="1em"/><!-- HANGUL SYLLABLE DAELH -->
+      <map code="0xb310" name="1em"/><!-- HANGUL SYLLABLE DAEM -->
+      <map code="0xb311" name="1em"/><!-- HANGUL SYLLABLE DAEB -->
+      <map code="0xb312" name="1em"/><!-- HANGUL SYLLABLE DAEBS -->
+      <map code="0xb313" name="1em"/><!-- HANGUL SYLLABLE DAES -->
+      <map code="0xb314" name="1em"/><!-- HANGUL SYLLABLE DAESS -->
+      <map code="0xb315" name="1em"/><!-- HANGUL SYLLABLE DAENG -->
+      <map code="0xb316" name="1em"/><!-- HANGUL SYLLABLE DAEJ -->
+      <map code="0xb317" name="1em"/><!-- HANGUL SYLLABLE DAEC -->
+      <map code="0xb318" name="1em"/><!-- HANGUL SYLLABLE DAEK -->
+      <map code="0xb319" name="1em"/><!-- HANGUL SYLLABLE DAET -->
+      <map code="0xb31a" name="1em"/><!-- HANGUL SYLLABLE DAEP -->
+      <map code="0xb31b" name="1em"/><!-- HANGUL SYLLABLE DAEH -->
+      <map code="0xb31c" name="1em"/><!-- HANGUL SYLLABLE DYA -->
+      <map code="0xb31d" name="1em"/><!-- HANGUL SYLLABLE DYAG -->
+      <map code="0xb31e" name="1em"/><!-- HANGUL SYLLABLE DYAGG -->
+      <map code="0xb31f" name="1em"/><!-- HANGUL SYLLABLE DYAGS -->
+      <map code="0xb320" name="1em"/><!-- HANGUL SYLLABLE DYAN -->
+      <map code="0xb321" name="1em"/><!-- HANGUL SYLLABLE DYANJ -->
+      <map code="0xb322" name="1em"/><!-- HANGUL SYLLABLE DYANH -->
+      <map code="0xb323" name="1em"/><!-- HANGUL SYLLABLE DYAD -->
+      <map code="0xb324" name="1em"/><!-- HANGUL SYLLABLE DYAL -->
+      <map code="0xb325" name="1em"/><!-- HANGUL SYLLABLE DYALG -->
+      <map code="0xb326" name="1em"/><!-- HANGUL SYLLABLE DYALM -->
+      <map code="0xb327" name="1em"/><!-- HANGUL SYLLABLE DYALB -->
+      <map code="0xb328" name="1em"/><!-- HANGUL SYLLABLE DYALS -->
+      <map code="0xb329" name="1em"/><!-- HANGUL SYLLABLE DYALT -->
+      <map code="0xb32a" name="1em"/><!-- HANGUL SYLLABLE DYALP -->
+      <map code="0xb32b" name="1em"/><!-- HANGUL SYLLABLE DYALH -->
+      <map code="0xb32c" name="1em"/><!-- HANGUL SYLLABLE DYAM -->
+      <map code="0xb32d" name="1em"/><!-- HANGUL SYLLABLE DYAB -->
+      <map code="0xb32e" name="1em"/><!-- HANGUL SYLLABLE DYABS -->
+      <map code="0xb32f" name="1em"/><!-- HANGUL SYLLABLE DYAS -->
+      <map code="0xb330" name="1em"/><!-- HANGUL SYLLABLE DYASS -->
+      <map code="0xb331" name="1em"/><!-- HANGUL SYLLABLE DYANG -->
+      <map code="0xb332" name="1em"/><!-- HANGUL SYLLABLE DYAJ -->
+      <map code="0xb333" name="1em"/><!-- HANGUL SYLLABLE DYAC -->
+      <map code="0xb334" name="1em"/><!-- HANGUL SYLLABLE DYAK -->
+      <map code="0xb335" name="1em"/><!-- HANGUL SYLLABLE DYAT -->
+      <map code="0xb336" name="1em"/><!-- HANGUL SYLLABLE DYAP -->
+      <map code="0xb337" name="1em"/><!-- HANGUL SYLLABLE DYAH -->
+      <map code="0xb338" name="1em"/><!-- HANGUL SYLLABLE DYAE -->
+      <map code="0xb339" name="1em"/><!-- HANGUL SYLLABLE DYAEG -->
+      <map code="0xb33a" name="1em"/><!-- HANGUL SYLLABLE DYAEGG -->
+      <map code="0xb33b" name="1em"/><!-- HANGUL SYLLABLE DYAEGS -->
+      <map code="0xb33c" name="1em"/><!-- HANGUL SYLLABLE DYAEN -->
+      <map code="0xb33d" name="1em"/><!-- HANGUL SYLLABLE DYAENJ -->
+      <map code="0xb33e" name="1em"/><!-- HANGUL SYLLABLE DYAENH -->
+      <map code="0xb33f" name="1em"/><!-- HANGUL SYLLABLE DYAED -->
+      <map code="0xb340" name="1em"/><!-- HANGUL SYLLABLE DYAEL -->
+      <map code="0xb341" name="1em"/><!-- HANGUL SYLLABLE DYAELG -->
+      <map code="0xb342" name="1em"/><!-- HANGUL SYLLABLE DYAELM -->
+      <map code="0xb343" name="1em"/><!-- HANGUL SYLLABLE DYAELB -->
+      <map code="0xb344" name="1em"/><!-- HANGUL SYLLABLE DYAELS -->
+      <map code="0xb345" name="1em"/><!-- HANGUL SYLLABLE DYAELT -->
+      <map code="0xb346" name="1em"/><!-- HANGUL SYLLABLE DYAELP -->
+      <map code="0xb347" name="1em"/><!-- HANGUL SYLLABLE DYAELH -->
+      <map code="0xb348" name="1em"/><!-- HANGUL SYLLABLE DYAEM -->
+      <map code="0xb349" name="1em"/><!-- HANGUL SYLLABLE DYAEB -->
+      <map code="0xb34a" name="1em"/><!-- HANGUL SYLLABLE DYAEBS -->
+      <map code="0xb34b" name="1em"/><!-- HANGUL SYLLABLE DYAES -->
+      <map code="0xb34c" name="1em"/><!-- HANGUL SYLLABLE DYAESS -->
+      <map code="0xb34d" name="1em"/><!-- HANGUL SYLLABLE DYAENG -->
+      <map code="0xb34e" name="1em"/><!-- HANGUL SYLLABLE DYAEJ -->
+      <map code="0xb34f" name="1em"/><!-- HANGUL SYLLABLE DYAEC -->
+      <map code="0xb350" name="1em"/><!-- HANGUL SYLLABLE DYAEK -->
+      <map code="0xb351" name="1em"/><!-- HANGUL SYLLABLE DYAET -->
+      <map code="0xb352" name="1em"/><!-- HANGUL SYLLABLE DYAEP -->
+      <map code="0xb353" name="1em"/><!-- HANGUL SYLLABLE DYAEH -->
+      <map code="0xb354" name="1em"/><!-- HANGUL SYLLABLE DEO -->
+      <map code="0xb355" name="1em"/><!-- HANGUL SYLLABLE DEOG -->
+      <map code="0xb356" name="1em"/><!-- HANGUL SYLLABLE DEOGG -->
+      <map code="0xb357" name="1em"/><!-- HANGUL SYLLABLE DEOGS -->
+      <map code="0xb358" name="1em"/><!-- HANGUL SYLLABLE DEON -->
+      <map code="0xb359" name="1em"/><!-- HANGUL SYLLABLE DEONJ -->
+      <map code="0xb35a" name="1em"/><!-- HANGUL SYLLABLE DEONH -->
+      <map code="0xb35b" name="1em"/><!-- HANGUL SYLLABLE DEOD -->
+      <map code="0xb35c" name="1em"/><!-- HANGUL SYLLABLE DEOL -->
+      <map code="0xb35d" name="1em"/><!-- HANGUL SYLLABLE DEOLG -->
+      <map code="0xb35e" name="1em"/><!-- HANGUL SYLLABLE DEOLM -->
+      <map code="0xb35f" name="1em"/><!-- HANGUL SYLLABLE DEOLB -->
+      <map code="0xb360" name="1em"/><!-- HANGUL SYLLABLE DEOLS -->
+      <map code="0xb361" name="1em"/><!-- HANGUL SYLLABLE DEOLT -->
+      <map code="0xb362" name="1em"/><!-- HANGUL SYLLABLE DEOLP -->
+      <map code="0xb363" name="1em"/><!-- HANGUL SYLLABLE DEOLH -->
+      <map code="0xb364" name="1em"/><!-- HANGUL SYLLABLE DEOM -->
+      <map code="0xb365" name="1em"/><!-- HANGUL SYLLABLE DEOB -->
+      <map code="0xb366" name="1em"/><!-- HANGUL SYLLABLE DEOBS -->
+      <map code="0xb367" name="1em"/><!-- HANGUL SYLLABLE DEOS -->
+      <map code="0xb368" name="1em"/><!-- HANGUL SYLLABLE DEOSS -->
+      <map code="0xb369" name="1em"/><!-- HANGUL SYLLABLE DEONG -->
+      <map code="0xb36a" name="1em"/><!-- HANGUL SYLLABLE DEOJ -->
+      <map code="0xb36b" name="1em"/><!-- HANGUL SYLLABLE DEOC -->
+      <map code="0xb36c" name="1em"/><!-- HANGUL SYLLABLE DEOK -->
+      <map code="0xb36d" name="1em"/><!-- HANGUL SYLLABLE DEOT -->
+      <map code="0xb36e" name="1em"/><!-- HANGUL SYLLABLE DEOP -->
+      <map code="0xb36f" name="1em"/><!-- HANGUL SYLLABLE DEOH -->
+      <map code="0xb370" name="1em"/><!-- HANGUL SYLLABLE DE -->
+      <map code="0xb371" name="1em"/><!-- HANGUL SYLLABLE DEG -->
+      <map code="0xb372" name="1em"/><!-- HANGUL SYLLABLE DEGG -->
+      <map code="0xb373" name="1em"/><!-- HANGUL SYLLABLE DEGS -->
+      <map code="0xb374" name="1em"/><!-- HANGUL SYLLABLE DEN -->
+      <map code="0xb375" name="1em"/><!-- HANGUL SYLLABLE DENJ -->
+      <map code="0xb376" name="1em"/><!-- HANGUL SYLLABLE DENH -->
+      <map code="0xb377" name="1em"/><!-- HANGUL SYLLABLE DED -->
+      <map code="0xb378" name="1em"/><!-- HANGUL SYLLABLE DEL -->
+      <map code="0xb379" name="1em"/><!-- HANGUL SYLLABLE DELG -->
+      <map code="0xb37a" name="1em"/><!-- HANGUL SYLLABLE DELM -->
+      <map code="0xb37b" name="1em"/><!-- HANGUL SYLLABLE DELB -->
+      <map code="0xb37c" name="1em"/><!-- HANGUL SYLLABLE DELS -->
+      <map code="0xb37d" name="1em"/><!-- HANGUL SYLLABLE DELT -->
+      <map code="0xb37e" name="1em"/><!-- HANGUL SYLLABLE DELP -->
+      <map code="0xb37f" name="1em"/><!-- HANGUL SYLLABLE DELH -->
+      <map code="0xb380" name="1em"/><!-- HANGUL SYLLABLE DEM -->
+      <map code="0xb381" name="1em"/><!-- HANGUL SYLLABLE DEB -->
+      <map code="0xb382" name="1em"/><!-- HANGUL SYLLABLE DEBS -->
+      <map code="0xb383" name="1em"/><!-- HANGUL SYLLABLE DES -->
+      <map code="0xb384" name="1em"/><!-- HANGUL SYLLABLE DESS -->
+      <map code="0xb385" name="1em"/><!-- HANGUL SYLLABLE DENG -->
+      <map code="0xb386" name="1em"/><!-- HANGUL SYLLABLE DEJ -->
+      <map code="0xb387" name="1em"/><!-- HANGUL SYLLABLE DEC -->
+      <map code="0xb388" name="1em"/><!-- HANGUL SYLLABLE DEK -->
+      <map code="0xb389" name="1em"/><!-- HANGUL SYLLABLE DET -->
+      <map code="0xb38a" name="1em"/><!-- HANGUL SYLLABLE DEP -->
+      <map code="0xb38b" name="1em"/><!-- HANGUL SYLLABLE DEH -->
+      <map code="0xb38c" name="1em"/><!-- HANGUL SYLLABLE DYEO -->
+      <map code="0xb38d" name="1em"/><!-- HANGUL SYLLABLE DYEOG -->
+      <map code="0xb38e" name="1em"/><!-- HANGUL SYLLABLE DYEOGG -->
+      <map code="0xb38f" name="1em"/><!-- HANGUL SYLLABLE DYEOGS -->
+      <map code="0xb390" name="1em"/><!-- HANGUL SYLLABLE DYEON -->
+      <map code="0xb391" name="1em"/><!-- HANGUL SYLLABLE DYEONJ -->
+      <map code="0xb392" name="1em"/><!-- HANGUL SYLLABLE DYEONH -->
+      <map code="0xb393" name="1em"/><!-- HANGUL SYLLABLE DYEOD -->
+      <map code="0xb394" name="1em"/><!-- HANGUL SYLLABLE DYEOL -->
+      <map code="0xb395" name="1em"/><!-- HANGUL SYLLABLE DYEOLG -->
+      <map code="0xb396" name="1em"/><!-- HANGUL SYLLABLE DYEOLM -->
+      <map code="0xb397" name="1em"/><!-- HANGUL SYLLABLE DYEOLB -->
+      <map code="0xb398" name="1em"/><!-- HANGUL SYLLABLE DYEOLS -->
+      <map code="0xb399" name="1em"/><!-- HANGUL SYLLABLE DYEOLT -->
+      <map code="0xb39a" name="1em"/><!-- HANGUL SYLLABLE DYEOLP -->
+      <map code="0xb39b" name="1em"/><!-- HANGUL SYLLABLE DYEOLH -->
+      <map code="0xb39c" name="1em"/><!-- HANGUL SYLLABLE DYEOM -->
+      <map code="0xb39d" name="1em"/><!-- HANGUL SYLLABLE DYEOB -->
+      <map code="0xb39e" name="1em"/><!-- HANGUL SYLLABLE DYEOBS -->
+      <map code="0xb39f" name="1em"/><!-- HANGUL SYLLABLE DYEOS -->
+      <map code="0xb3a0" name="1em"/><!-- HANGUL SYLLABLE DYEOSS -->
+      <map code="0xb3a1" name="1em"/><!-- HANGUL SYLLABLE DYEONG -->
+      <map code="0xb3a2" name="1em"/><!-- HANGUL SYLLABLE DYEOJ -->
+      <map code="0xb3a3" name="1em"/><!-- HANGUL SYLLABLE DYEOC -->
+      <map code="0xb3a4" name="1em"/><!-- HANGUL SYLLABLE DYEOK -->
+      <map code="0xb3a5" name="1em"/><!-- HANGUL SYLLABLE DYEOT -->
+      <map code="0xb3a6" name="1em"/><!-- HANGUL SYLLABLE DYEOP -->
+      <map code="0xb3a7" name="1em"/><!-- HANGUL SYLLABLE DYEOH -->
+      <map code="0xb3a8" name="1em"/><!-- HANGUL SYLLABLE DYE -->
+      <map code="0xb3a9" name="1em"/><!-- HANGUL SYLLABLE DYEG -->
+      <map code="0xb3aa" name="1em"/><!-- HANGUL SYLLABLE DYEGG -->
+      <map code="0xb3ab" name="1em"/><!-- HANGUL SYLLABLE DYEGS -->
+      <map code="0xb3ac" name="1em"/><!-- HANGUL SYLLABLE DYEN -->
+      <map code="0xb3ad" name="1em"/><!-- HANGUL SYLLABLE DYENJ -->
+      <map code="0xb3ae" name="1em"/><!-- HANGUL SYLLABLE DYENH -->
+      <map code="0xb3af" name="1em"/><!-- HANGUL SYLLABLE DYED -->
+      <map code="0xb3b0" name="1em"/><!-- HANGUL SYLLABLE DYEL -->
+      <map code="0xb3b1" name="1em"/><!-- HANGUL SYLLABLE DYELG -->
+      <map code="0xb3b2" name="1em"/><!-- HANGUL SYLLABLE DYELM -->
+      <map code="0xb3b3" name="1em"/><!-- HANGUL SYLLABLE DYELB -->
+      <map code="0xb3b4" name="1em"/><!-- HANGUL SYLLABLE DYELS -->
+      <map code="0xb3b5" name="1em"/><!-- HANGUL SYLLABLE DYELT -->
+      <map code="0xb3b6" name="1em"/><!-- HANGUL SYLLABLE DYELP -->
+      <map code="0xb3b7" name="1em"/><!-- HANGUL SYLLABLE DYELH -->
+      <map code="0xb3b8" name="1em"/><!-- HANGUL SYLLABLE DYEM -->
+      <map code="0xb3b9" name="1em"/><!-- HANGUL SYLLABLE DYEB -->
+      <map code="0xb3ba" name="1em"/><!-- HANGUL SYLLABLE DYEBS -->
+      <map code="0xb3bb" name="1em"/><!-- HANGUL SYLLABLE DYES -->
+      <map code="0xb3bc" name="1em"/><!-- HANGUL SYLLABLE DYESS -->
+      <map code="0xb3bd" name="1em"/><!-- HANGUL SYLLABLE DYENG -->
+      <map code="0xb3be" name="1em"/><!-- HANGUL SYLLABLE DYEJ -->
+      <map code="0xb3bf" name="1em"/><!-- HANGUL SYLLABLE DYEC -->
+      <map code="0xb3c0" name="1em"/><!-- HANGUL SYLLABLE DYEK -->
+      <map code="0xb3c1" name="1em"/><!-- HANGUL SYLLABLE DYET -->
+      <map code="0xb3c2" name="1em"/><!-- HANGUL SYLLABLE DYEP -->
+      <map code="0xb3c3" name="1em"/><!-- HANGUL SYLLABLE DYEH -->
+      <map code="0xb3c4" name="1em"/><!-- HANGUL SYLLABLE DO -->
+      <map code="0xb3c5" name="1em"/><!-- HANGUL SYLLABLE DOG -->
+      <map code="0xb3c6" name="1em"/><!-- HANGUL SYLLABLE DOGG -->
+      <map code="0xb3c7" name="1em"/><!-- HANGUL SYLLABLE DOGS -->
+      <map code="0xb3c8" name="1em"/><!-- HANGUL SYLLABLE DON -->
+      <map code="0xb3c9" name="1em"/><!-- HANGUL SYLLABLE DONJ -->
+      <map code="0xb3ca" name="1em"/><!-- HANGUL SYLLABLE DONH -->
+      <map code="0xb3cb" name="1em"/><!-- HANGUL SYLLABLE DOD -->
+      <map code="0xb3cc" name="1em"/><!-- HANGUL SYLLABLE DOL -->
+      <map code="0xb3cd" name="1em"/><!-- HANGUL SYLLABLE DOLG -->
+      <map code="0xb3ce" name="1em"/><!-- HANGUL SYLLABLE DOLM -->
+      <map code="0xb3cf" name="1em"/><!-- HANGUL SYLLABLE DOLB -->
+      <map code="0xb3d0" name="1em"/><!-- HANGUL SYLLABLE DOLS -->
+      <map code="0xb3d1" name="1em"/><!-- HANGUL SYLLABLE DOLT -->
+      <map code="0xb3d2" name="1em"/><!-- HANGUL SYLLABLE DOLP -->
+      <map code="0xb3d3" name="1em"/><!-- HANGUL SYLLABLE DOLH -->
+      <map code="0xb3d4" name="1em"/><!-- HANGUL SYLLABLE DOM -->
+      <map code="0xb3d5" name="1em"/><!-- HANGUL SYLLABLE DOB -->
+      <map code="0xb3d6" name="1em"/><!-- HANGUL SYLLABLE DOBS -->
+      <map code="0xb3d7" name="1em"/><!-- HANGUL SYLLABLE DOS -->
+      <map code="0xb3d8" name="1em"/><!-- HANGUL SYLLABLE DOSS -->
+      <map code="0xb3d9" name="1em"/><!-- HANGUL SYLLABLE DONG -->
+      <map code="0xb3da" name="1em"/><!-- HANGUL SYLLABLE DOJ -->
+      <map code="0xb3db" name="1em"/><!-- HANGUL SYLLABLE DOC -->
+      <map code="0xb3dc" name="1em"/><!-- HANGUL SYLLABLE DOK -->
+      <map code="0xb3dd" name="1em"/><!-- HANGUL SYLLABLE DOT -->
+      <map code="0xb3de" name="1em"/><!-- HANGUL SYLLABLE DOP -->
+      <map code="0xb3df" name="1em"/><!-- HANGUL SYLLABLE DOH -->
+      <map code="0xb3e0" name="1em"/><!-- HANGUL SYLLABLE DWA -->
+      <map code="0xb3e1" name="1em"/><!-- HANGUL SYLLABLE DWAG -->
+      <map code="0xb3e2" name="1em"/><!-- HANGUL SYLLABLE DWAGG -->
+      <map code="0xb3e3" name="1em"/><!-- HANGUL SYLLABLE DWAGS -->
+      <map code="0xb3e4" name="1em"/><!-- HANGUL SYLLABLE DWAN -->
+      <map code="0xb3e5" name="1em"/><!-- HANGUL SYLLABLE DWANJ -->
+      <map code="0xb3e6" name="1em"/><!-- HANGUL SYLLABLE DWANH -->
+      <map code="0xb3e7" name="1em"/><!-- HANGUL SYLLABLE DWAD -->
+      <map code="0xb3e8" name="1em"/><!-- HANGUL SYLLABLE DWAL -->
+      <map code="0xb3e9" name="1em"/><!-- HANGUL SYLLABLE DWALG -->
+      <map code="0xb3ea" name="1em"/><!-- HANGUL SYLLABLE DWALM -->
+      <map code="0xb3eb" name="1em"/><!-- HANGUL SYLLABLE DWALB -->
+      <map code="0xb3ec" name="1em"/><!-- HANGUL SYLLABLE DWALS -->
+      <map code="0xb3ed" name="1em"/><!-- HANGUL SYLLABLE DWALT -->
+      <map code="0xb3ee" name="1em"/><!-- HANGUL SYLLABLE DWALP -->
+      <map code="0xb3ef" name="1em"/><!-- HANGUL SYLLABLE DWALH -->
+      <map code="0xb3f0" name="1em"/><!-- HANGUL SYLLABLE DWAM -->
+      <map code="0xb3f1" name="1em"/><!-- HANGUL SYLLABLE DWAB -->
+      <map code="0xb3f2" name="1em"/><!-- HANGUL SYLLABLE DWABS -->
+      <map code="0xb3f3" name="1em"/><!-- HANGUL SYLLABLE DWAS -->
+      <map code="0xb3f4" name="1em"/><!-- HANGUL SYLLABLE DWASS -->
+      <map code="0xb3f5" name="1em"/><!-- HANGUL SYLLABLE DWANG -->
+      <map code="0xb3f6" name="1em"/><!-- HANGUL SYLLABLE DWAJ -->
+      <map code="0xb3f7" name="1em"/><!-- HANGUL SYLLABLE DWAC -->
+      <map code="0xb3f8" name="1em"/><!-- HANGUL SYLLABLE DWAK -->
+      <map code="0xb3f9" name="1em"/><!-- HANGUL SYLLABLE DWAT -->
+      <map code="0xb3fa" name="1em"/><!-- HANGUL SYLLABLE DWAP -->
+      <map code="0xb3fb" name="1em"/><!-- HANGUL SYLLABLE DWAH -->
+      <map code="0xb3fc" name="1em"/><!-- HANGUL SYLLABLE DWAE -->
+      <map code="0xb3fd" name="1em"/><!-- HANGUL SYLLABLE DWAEG -->
+      <map code="0xb3fe" name="1em"/><!-- HANGUL SYLLABLE DWAEGG -->
+      <map code="0xb3ff" name="1em"/><!-- HANGUL SYLLABLE DWAEGS -->
+      <map code="0xb400" name="1em"/><!-- HANGUL SYLLABLE DWAEN -->
+      <map code="0xb401" name="1em"/><!-- HANGUL SYLLABLE DWAENJ -->
+      <map code="0xb402" name="1em"/><!-- HANGUL SYLLABLE DWAENH -->
+      <map code="0xb403" name="1em"/><!-- HANGUL SYLLABLE DWAED -->
+      <map code="0xb404" name="1em"/><!-- HANGUL SYLLABLE DWAEL -->
+      <map code="0xb405" name="1em"/><!-- HANGUL SYLLABLE DWAELG -->
+      <map code="0xb406" name="1em"/><!-- HANGUL SYLLABLE DWAELM -->
+      <map code="0xb407" name="1em"/><!-- HANGUL SYLLABLE DWAELB -->
+      <map code="0xb408" name="1em"/><!-- HANGUL SYLLABLE DWAELS -->
+      <map code="0xb409" name="1em"/><!-- HANGUL SYLLABLE DWAELT -->
+      <map code="0xb40a" name="1em"/><!-- HANGUL SYLLABLE DWAELP -->
+      <map code="0xb40b" name="1em"/><!-- HANGUL SYLLABLE DWAELH -->
+      <map code="0xb40c" name="1em"/><!-- HANGUL SYLLABLE DWAEM -->
+      <map code="0xb40d" name="1em"/><!-- HANGUL SYLLABLE DWAEB -->
+      <map code="0xb40e" name="1em"/><!-- HANGUL SYLLABLE DWAEBS -->
+      <map code="0xb40f" name="1em"/><!-- HANGUL SYLLABLE DWAES -->
+      <map code="0xb410" name="1em"/><!-- HANGUL SYLLABLE DWAESS -->
+      <map code="0xb411" name="1em"/><!-- HANGUL SYLLABLE DWAENG -->
+      <map code="0xb412" name="1em"/><!-- HANGUL SYLLABLE DWAEJ -->
+      <map code="0xb413" name="1em"/><!-- HANGUL SYLLABLE DWAEC -->
+      <map code="0xb414" name="1em"/><!-- HANGUL SYLLABLE DWAEK -->
+      <map code="0xb415" name="1em"/><!-- HANGUL SYLLABLE DWAET -->
+      <map code="0xb416" name="1em"/><!-- HANGUL SYLLABLE DWAEP -->
+      <map code="0xb417" name="1em"/><!-- HANGUL SYLLABLE DWAEH -->
+      <map code="0xb418" name="1em"/><!-- HANGUL SYLLABLE DOE -->
+      <map code="0xb419" name="1em"/><!-- HANGUL SYLLABLE DOEG -->
+      <map code="0xb41a" name="1em"/><!-- HANGUL SYLLABLE DOEGG -->
+      <map code="0xb41b" name="1em"/><!-- HANGUL SYLLABLE DOEGS -->
+      <map code="0xb41c" name="1em"/><!-- HANGUL SYLLABLE DOEN -->
+      <map code="0xb41d" name="1em"/><!-- HANGUL SYLLABLE DOENJ -->
+      <map code="0xb41e" name="1em"/><!-- HANGUL SYLLABLE DOENH -->
+      <map code="0xb41f" name="1em"/><!-- HANGUL SYLLABLE DOED -->
+      <map code="0xb420" name="1em"/><!-- HANGUL SYLLABLE DOEL -->
+      <map code="0xb421" name="1em"/><!-- HANGUL SYLLABLE DOELG -->
+      <map code="0xb422" name="1em"/><!-- HANGUL SYLLABLE DOELM -->
+      <map code="0xb423" name="1em"/><!-- HANGUL SYLLABLE DOELB -->
+      <map code="0xb424" name="1em"/><!-- HANGUL SYLLABLE DOELS -->
+      <map code="0xb425" name="1em"/><!-- HANGUL SYLLABLE DOELT -->
+      <map code="0xb426" name="1em"/><!-- HANGUL SYLLABLE DOELP -->
+      <map code="0xb427" name="1em"/><!-- HANGUL SYLLABLE DOELH -->
+      <map code="0xb428" name="1em"/><!-- HANGUL SYLLABLE DOEM -->
+      <map code="0xb429" name="1em"/><!-- HANGUL SYLLABLE DOEB -->
+      <map code="0xb42a" name="1em"/><!-- HANGUL SYLLABLE DOEBS -->
+      <map code="0xb42b" name="1em"/><!-- HANGUL SYLLABLE DOES -->
+      <map code="0xb42c" name="1em"/><!-- HANGUL SYLLABLE DOESS -->
+      <map code="0xb42d" name="1em"/><!-- HANGUL SYLLABLE DOENG -->
+      <map code="0xb42e" name="1em"/><!-- HANGUL SYLLABLE DOEJ -->
+      <map code="0xb42f" name="1em"/><!-- HANGUL SYLLABLE DOEC -->
+      <map code="0xb430" name="1em"/><!-- HANGUL SYLLABLE DOEK -->
+      <map code="0xb431" name="1em"/><!-- HANGUL SYLLABLE DOET -->
+      <map code="0xb432" name="1em"/><!-- HANGUL SYLLABLE DOEP -->
+      <map code="0xb433" name="1em"/><!-- HANGUL SYLLABLE DOEH -->
+      <map code="0xb434" name="1em"/><!-- HANGUL SYLLABLE DYO -->
+      <map code="0xb435" name="1em"/><!-- HANGUL SYLLABLE DYOG -->
+      <map code="0xb436" name="1em"/><!-- HANGUL SYLLABLE DYOGG -->
+      <map code="0xb437" name="1em"/><!-- HANGUL SYLLABLE DYOGS -->
+      <map code="0xb438" name="1em"/><!-- HANGUL SYLLABLE DYON -->
+      <map code="0xb439" name="1em"/><!-- HANGUL SYLLABLE DYONJ -->
+      <map code="0xb43a" name="1em"/><!-- HANGUL SYLLABLE DYONH -->
+      <map code="0xb43b" name="1em"/><!-- HANGUL SYLLABLE DYOD -->
+      <map code="0xb43c" name="1em"/><!-- HANGUL SYLLABLE DYOL -->
+      <map code="0xb43d" name="1em"/><!-- HANGUL SYLLABLE DYOLG -->
+      <map code="0xb43e" name="1em"/><!-- HANGUL SYLLABLE DYOLM -->
+      <map code="0xb43f" name="1em"/><!-- HANGUL SYLLABLE DYOLB -->
+      <map code="0xb440" name="1em"/><!-- HANGUL SYLLABLE DYOLS -->
+      <map code="0xb441" name="1em"/><!-- HANGUL SYLLABLE DYOLT -->
+      <map code="0xb442" name="1em"/><!-- HANGUL SYLLABLE DYOLP -->
+      <map code="0xb443" name="1em"/><!-- HANGUL SYLLABLE DYOLH -->
+      <map code="0xb444" name="1em"/><!-- HANGUL SYLLABLE DYOM -->
+      <map code="0xb445" name="1em"/><!-- HANGUL SYLLABLE DYOB -->
+      <map code="0xb446" name="1em"/><!-- HANGUL SYLLABLE DYOBS -->
+      <map code="0xb447" name="1em"/><!-- HANGUL SYLLABLE DYOS -->
+      <map code="0xb448" name="1em"/><!-- HANGUL SYLLABLE DYOSS -->
+      <map code="0xb449" name="1em"/><!-- HANGUL SYLLABLE DYONG -->
+      <map code="0xb44a" name="1em"/><!-- HANGUL SYLLABLE DYOJ -->
+      <map code="0xb44b" name="1em"/><!-- HANGUL SYLLABLE DYOC -->
+      <map code="0xb44c" name="1em"/><!-- HANGUL SYLLABLE DYOK -->
+      <map code="0xb44d" name="1em"/><!-- HANGUL SYLLABLE DYOT -->
+      <map code="0xb44e" name="1em"/><!-- HANGUL SYLLABLE DYOP -->
+      <map code="0xb44f" name="1em"/><!-- HANGUL SYLLABLE DYOH -->
+      <map code="0xb450" name="1em"/><!-- HANGUL SYLLABLE DU -->
+      <map code="0xb451" name="1em"/><!-- HANGUL SYLLABLE DUG -->
+      <map code="0xb452" name="1em"/><!-- HANGUL SYLLABLE DUGG -->
+      <map code="0xb453" name="1em"/><!-- HANGUL SYLLABLE DUGS -->
+      <map code="0xb454" name="1em"/><!-- HANGUL SYLLABLE DUN -->
+      <map code="0xb455" name="1em"/><!-- HANGUL SYLLABLE DUNJ -->
+      <map code="0xb456" name="1em"/><!-- HANGUL SYLLABLE DUNH -->
+      <map code="0xb457" name="1em"/><!-- HANGUL SYLLABLE DUD -->
+      <map code="0xb458" name="1em"/><!-- HANGUL SYLLABLE DUL -->
+      <map code="0xb459" name="1em"/><!-- HANGUL SYLLABLE DULG -->
+      <map code="0xb45a" name="1em"/><!-- HANGUL SYLLABLE DULM -->
+      <map code="0xb45b" name="1em"/><!-- HANGUL SYLLABLE DULB -->
+      <map code="0xb45c" name="1em"/><!-- HANGUL SYLLABLE DULS -->
+      <map code="0xb45d" name="1em"/><!-- HANGUL SYLLABLE DULT -->
+      <map code="0xb45e" name="1em"/><!-- HANGUL SYLLABLE DULP -->
+      <map code="0xb45f" name="1em"/><!-- HANGUL SYLLABLE DULH -->
+      <map code="0xb460" name="1em"/><!-- HANGUL SYLLABLE DUM -->
+      <map code="0xb461" name="1em"/><!-- HANGUL SYLLABLE DUB -->
+      <map code="0xb462" name="1em"/><!-- HANGUL SYLLABLE DUBS -->
+      <map code="0xb463" name="1em"/><!-- HANGUL SYLLABLE DUS -->
+      <map code="0xb464" name="1em"/><!-- HANGUL SYLLABLE DUSS -->
+      <map code="0xb465" name="1em"/><!-- HANGUL SYLLABLE DUNG -->
+      <map code="0xb466" name="1em"/><!-- HANGUL SYLLABLE DUJ -->
+      <map code="0xb467" name="1em"/><!-- HANGUL SYLLABLE DUC -->
+      <map code="0xb468" name="1em"/><!-- HANGUL SYLLABLE DUK -->
+      <map code="0xb469" name="1em"/><!-- HANGUL SYLLABLE DUT -->
+      <map code="0xb46a" name="1em"/><!-- HANGUL SYLLABLE DUP -->
+      <map code="0xb46b" name="1em"/><!-- HANGUL SYLLABLE DUH -->
+      <map code="0xb46c" name="1em"/><!-- HANGUL SYLLABLE DWEO -->
+      <map code="0xb46d" name="1em"/><!-- HANGUL SYLLABLE DWEOG -->
+      <map code="0xb46e" name="1em"/><!-- HANGUL SYLLABLE DWEOGG -->
+      <map code="0xb46f" name="1em"/><!-- HANGUL SYLLABLE DWEOGS -->
+      <map code="0xb470" name="1em"/><!-- HANGUL SYLLABLE DWEON -->
+      <map code="0xb471" name="1em"/><!-- HANGUL SYLLABLE DWEONJ -->
+      <map code="0xb472" name="1em"/><!-- HANGUL SYLLABLE DWEONH -->
+      <map code="0xb473" name="1em"/><!-- HANGUL SYLLABLE DWEOD -->
+      <map code="0xb474" name="1em"/><!-- HANGUL SYLLABLE DWEOL -->
+      <map code="0xb475" name="1em"/><!-- HANGUL SYLLABLE DWEOLG -->
+      <map code="0xb476" name="1em"/><!-- HANGUL SYLLABLE DWEOLM -->
+      <map code="0xb477" name="1em"/><!-- HANGUL SYLLABLE DWEOLB -->
+      <map code="0xb478" name="1em"/><!-- HANGUL SYLLABLE DWEOLS -->
+      <map code="0xb479" name="1em"/><!-- HANGUL SYLLABLE DWEOLT -->
+      <map code="0xb47a" name="1em"/><!-- HANGUL SYLLABLE DWEOLP -->
+      <map code="0xb47b" name="1em"/><!-- HANGUL SYLLABLE DWEOLH -->
+      <map code="0xb47c" name="1em"/><!-- HANGUL SYLLABLE DWEOM -->
+      <map code="0xb47d" name="1em"/><!-- HANGUL SYLLABLE DWEOB -->
+      <map code="0xb47e" name="1em"/><!-- HANGUL SYLLABLE DWEOBS -->
+      <map code="0xb47f" name="1em"/><!-- HANGUL SYLLABLE DWEOS -->
+      <map code="0xb480" name="1em"/><!-- HANGUL SYLLABLE DWEOSS -->
+      <map code="0xb481" name="1em"/><!-- HANGUL SYLLABLE DWEONG -->
+      <map code="0xb482" name="1em"/><!-- HANGUL SYLLABLE DWEOJ -->
+      <map code="0xb483" name="1em"/><!-- HANGUL SYLLABLE DWEOC -->
+      <map code="0xb484" name="1em"/><!-- HANGUL SYLLABLE DWEOK -->
+      <map code="0xb485" name="1em"/><!-- HANGUL SYLLABLE DWEOT -->
+      <map code="0xb486" name="1em"/><!-- HANGUL SYLLABLE DWEOP -->
+      <map code="0xb487" name="1em"/><!-- HANGUL SYLLABLE DWEOH -->
+      <map code="0xb488" name="1em"/><!-- HANGUL SYLLABLE DWE -->
+      <map code="0xb489" name="1em"/><!-- HANGUL SYLLABLE DWEG -->
+      <map code="0xb48a" name="1em"/><!-- HANGUL SYLLABLE DWEGG -->
+      <map code="0xb48b" name="1em"/><!-- HANGUL SYLLABLE DWEGS -->
+      <map code="0xb48c" name="1em"/><!-- HANGUL SYLLABLE DWEN -->
+      <map code="0xb48d" name="1em"/><!-- HANGUL SYLLABLE DWENJ -->
+      <map code="0xb48e" name="1em"/><!-- HANGUL SYLLABLE DWENH -->
+      <map code="0xb48f" name="1em"/><!-- HANGUL SYLLABLE DWED -->
+      <map code="0xb490" name="1em"/><!-- HANGUL SYLLABLE DWEL -->
+      <map code="0xb491" name="1em"/><!-- HANGUL SYLLABLE DWELG -->
+      <map code="0xb492" name="1em"/><!-- HANGUL SYLLABLE DWELM -->
+      <map code="0xb493" name="1em"/><!-- HANGUL SYLLABLE DWELB -->
+      <map code="0xb494" name="1em"/><!-- HANGUL SYLLABLE DWELS -->
+      <map code="0xb495" name="1em"/><!-- HANGUL SYLLABLE DWELT -->
+      <map code="0xb496" name="1em"/><!-- HANGUL SYLLABLE DWELP -->
+      <map code="0xb497" name="1em"/><!-- HANGUL SYLLABLE DWELH -->
+      <map code="0xb498" name="1em"/><!-- HANGUL SYLLABLE DWEM -->
+      <map code="0xb499" name="1em"/><!-- HANGUL SYLLABLE DWEB -->
+      <map code="0xb49a" name="1em"/><!-- HANGUL SYLLABLE DWEBS -->
+      <map code="0xb49b" name="1em"/><!-- HANGUL SYLLABLE DWES -->
+      <map code="0xb49c" name="1em"/><!-- HANGUL SYLLABLE DWESS -->
+      <map code="0xb49d" name="1em"/><!-- HANGUL SYLLABLE DWENG -->
+      <map code="0xb49e" name="1em"/><!-- HANGUL SYLLABLE DWEJ -->
+      <map code="0xb49f" name="1em"/><!-- HANGUL SYLLABLE DWEC -->
+      <map code="0xb4a0" name="1em"/><!-- HANGUL SYLLABLE DWEK -->
+      <map code="0xb4a1" name="1em"/><!-- HANGUL SYLLABLE DWET -->
+      <map code="0xb4a2" name="1em"/><!-- HANGUL SYLLABLE DWEP -->
+      <map code="0xb4a3" name="1em"/><!-- HANGUL SYLLABLE DWEH -->
+      <map code="0xb4a4" name="1em"/><!-- HANGUL SYLLABLE DWI -->
+      <map code="0xb4a5" name="1em"/><!-- HANGUL SYLLABLE DWIG -->
+      <map code="0xb4a6" name="1em"/><!-- HANGUL SYLLABLE DWIGG -->
+      <map code="0xb4a7" name="1em"/><!-- HANGUL SYLLABLE DWIGS -->
+      <map code="0xb4a8" name="1em"/><!-- HANGUL SYLLABLE DWIN -->
+      <map code="0xb4a9" name="1em"/><!-- HANGUL SYLLABLE DWINJ -->
+      <map code="0xb4aa" name="1em"/><!-- HANGUL SYLLABLE DWINH -->
+      <map code="0xb4ab" name="1em"/><!-- HANGUL SYLLABLE DWID -->
+      <map code="0xb4ac" name="1em"/><!-- HANGUL SYLLABLE DWIL -->
+      <map code="0xb4ad" name="1em"/><!-- HANGUL SYLLABLE DWILG -->
+      <map code="0xb4ae" name="1em"/><!-- HANGUL SYLLABLE DWILM -->
+      <map code="0xb4af" name="1em"/><!-- HANGUL SYLLABLE DWILB -->
+      <map code="0xb4b0" name="1em"/><!-- HANGUL SYLLABLE DWILS -->
+      <map code="0xb4b1" name="1em"/><!-- HANGUL SYLLABLE DWILT -->
+      <map code="0xb4b2" name="1em"/><!-- HANGUL SYLLABLE DWILP -->
+      <map code="0xb4b3" name="1em"/><!-- HANGUL SYLLABLE DWILH -->
+      <map code="0xb4b4" name="1em"/><!-- HANGUL SYLLABLE DWIM -->
+      <map code="0xb4b5" name="1em"/><!-- HANGUL SYLLABLE DWIB -->
+      <map code="0xb4b6" name="1em"/><!-- HANGUL SYLLABLE DWIBS -->
+      <map code="0xb4b7" name="1em"/><!-- HANGUL SYLLABLE DWIS -->
+      <map code="0xb4b8" name="1em"/><!-- HANGUL SYLLABLE DWISS -->
+      <map code="0xb4b9" name="1em"/><!-- HANGUL SYLLABLE DWING -->
+      <map code="0xb4ba" name="1em"/><!-- HANGUL SYLLABLE DWIJ -->
+      <map code="0xb4bb" name="1em"/><!-- HANGUL SYLLABLE DWIC -->
+      <map code="0xb4bc" name="1em"/><!-- HANGUL SYLLABLE DWIK -->
+      <map code="0xb4bd" name="1em"/><!-- HANGUL SYLLABLE DWIT -->
+      <map code="0xb4be" name="1em"/><!-- HANGUL SYLLABLE DWIP -->
+      <map code="0xb4bf" name="1em"/><!-- HANGUL SYLLABLE DWIH -->
+      <map code="0xb4c0" name="1em"/><!-- HANGUL SYLLABLE DYU -->
+      <map code="0xb4c1" name="1em"/><!-- HANGUL SYLLABLE DYUG -->
+      <map code="0xb4c2" name="1em"/><!-- HANGUL SYLLABLE DYUGG -->
+      <map code="0xb4c3" name="1em"/><!-- HANGUL SYLLABLE DYUGS -->
+      <map code="0xb4c4" name="1em"/><!-- HANGUL SYLLABLE DYUN -->
+      <map code="0xb4c5" name="1em"/><!-- HANGUL SYLLABLE DYUNJ -->
+      <map code="0xb4c6" name="1em"/><!-- HANGUL SYLLABLE DYUNH -->
+      <map code="0xb4c7" name="1em"/><!-- HANGUL SYLLABLE DYUD -->
+      <map code="0xb4c8" name="1em"/><!-- HANGUL SYLLABLE DYUL -->
+      <map code="0xb4c9" name="1em"/><!-- HANGUL SYLLABLE DYULG -->
+      <map code="0xb4ca" name="1em"/><!-- HANGUL SYLLABLE DYULM -->
+      <map code="0xb4cb" name="1em"/><!-- HANGUL SYLLABLE DYULB -->
+      <map code="0xb4cc" name="1em"/><!-- HANGUL SYLLABLE DYULS -->
+      <map code="0xb4cd" name="1em"/><!-- HANGUL SYLLABLE DYULT -->
+      <map code="0xb4ce" name="1em"/><!-- HANGUL SYLLABLE DYULP -->
+      <map code="0xb4cf" name="1em"/><!-- HANGUL SYLLABLE DYULH -->
+      <map code="0xb4d0" name="1em"/><!-- HANGUL SYLLABLE DYUM -->
+      <map code="0xb4d1" name="1em"/><!-- HANGUL SYLLABLE DYUB -->
+      <map code="0xb4d2" name="1em"/><!-- HANGUL SYLLABLE DYUBS -->
+      <map code="0xb4d3" name="1em"/><!-- HANGUL SYLLABLE DYUS -->
+      <map code="0xb4d4" name="1em"/><!-- HANGUL SYLLABLE DYUSS -->
+      <map code="0xb4d5" name="1em"/><!-- HANGUL SYLLABLE DYUNG -->
+      <map code="0xb4d6" name="1em"/><!-- HANGUL SYLLABLE DYUJ -->
+      <map code="0xb4d7" name="1em"/><!-- HANGUL SYLLABLE DYUC -->
+      <map code="0xb4d8" name="1em"/><!-- HANGUL SYLLABLE DYUK -->
+      <map code="0xb4d9" name="1em"/><!-- HANGUL SYLLABLE DYUT -->
+      <map code="0xb4da" name="1em"/><!-- HANGUL SYLLABLE DYUP -->
+      <map code="0xb4db" name="1em"/><!-- HANGUL SYLLABLE DYUH -->
+      <map code="0xb4dc" name="1em"/><!-- HANGUL SYLLABLE DEU -->
+      <map code="0xb4dd" name="1em"/><!-- HANGUL SYLLABLE DEUG -->
+      <map code="0xb4de" name="1em"/><!-- HANGUL SYLLABLE DEUGG -->
+      <map code="0xb4df" name="1em"/><!-- HANGUL SYLLABLE DEUGS -->
+      <map code="0xb4e0" name="1em"/><!-- HANGUL SYLLABLE DEUN -->
+      <map code="0xb4e1" name="1em"/><!-- HANGUL SYLLABLE DEUNJ -->
+      <map code="0xb4e2" name="1em"/><!-- HANGUL SYLLABLE DEUNH -->
+      <map code="0xb4e3" name="1em"/><!-- HANGUL SYLLABLE DEUD -->
+      <map code="0xb4e4" name="1em"/><!-- HANGUL SYLLABLE DEUL -->
+      <map code="0xb4e5" name="1em"/><!-- HANGUL SYLLABLE DEULG -->
+      <map code="0xb4e6" name="1em"/><!-- HANGUL SYLLABLE DEULM -->
+      <map code="0xb4e7" name="1em"/><!-- HANGUL SYLLABLE DEULB -->
+      <map code="0xb4e8" name="1em"/><!-- HANGUL SYLLABLE DEULS -->
+      <map code="0xb4e9" name="1em"/><!-- HANGUL SYLLABLE DEULT -->
+      <map code="0xb4ea" name="1em"/><!-- HANGUL SYLLABLE DEULP -->
+      <map code="0xb4eb" name="1em"/><!-- HANGUL SYLLABLE DEULH -->
+      <map code="0xb4ec" name="1em"/><!-- HANGUL SYLLABLE DEUM -->
+      <map code="0xb4ed" name="1em"/><!-- HANGUL SYLLABLE DEUB -->
+      <map code="0xb4ee" name="1em"/><!-- HANGUL SYLLABLE DEUBS -->
+      <map code="0xb4ef" name="1em"/><!-- HANGUL SYLLABLE DEUS -->
+      <map code="0xb4f0" name="1em"/><!-- HANGUL SYLLABLE DEUSS -->
+      <map code="0xb4f1" name="1em"/><!-- HANGUL SYLLABLE DEUNG -->
+      <map code="0xb4f2" name="1em"/><!-- HANGUL SYLLABLE DEUJ -->
+      <map code="0xb4f3" name="1em"/><!-- HANGUL SYLLABLE DEUC -->
+      <map code="0xb4f4" name="1em"/><!-- HANGUL SYLLABLE DEUK -->
+      <map code="0xb4f5" name="1em"/><!-- HANGUL SYLLABLE DEUT -->
+      <map code="0xb4f6" name="1em"/><!-- HANGUL SYLLABLE DEUP -->
+      <map code="0xb4f7" name="1em"/><!-- HANGUL SYLLABLE DEUH -->
+      <map code="0xb4f8" name="1em"/><!-- HANGUL SYLLABLE DYI -->
+      <map code="0xb4f9" name="1em"/><!-- HANGUL SYLLABLE DYIG -->
+      <map code="0xb4fa" name="1em"/><!-- HANGUL SYLLABLE DYIGG -->
+      <map code="0xb4fb" name="1em"/><!-- HANGUL SYLLABLE DYIGS -->
+      <map code="0xb4fc" name="1em"/><!-- HANGUL SYLLABLE DYIN -->
+      <map code="0xb4fd" name="1em"/><!-- HANGUL SYLLABLE DYINJ -->
+      <map code="0xb4fe" name="1em"/><!-- HANGUL SYLLABLE DYINH -->
+      <map code="0xb4ff" name="1em"/><!-- HANGUL SYLLABLE DYID -->
+      <map code="0xb500" name="1em"/><!-- HANGUL SYLLABLE DYIL -->
+      <map code="0xb501" name="1em"/><!-- HANGUL SYLLABLE DYILG -->
+      <map code="0xb502" name="1em"/><!-- HANGUL SYLLABLE DYILM -->
+      <map code="0xb503" name="1em"/><!-- HANGUL SYLLABLE DYILB -->
+      <map code="0xb504" name="1em"/><!-- HANGUL SYLLABLE DYILS -->
+      <map code="0xb505" name="1em"/><!-- HANGUL SYLLABLE DYILT -->
+      <map code="0xb506" name="1em"/><!-- HANGUL SYLLABLE DYILP -->
+      <map code="0xb507" name="1em"/><!-- HANGUL SYLLABLE DYILH -->
+      <map code="0xb508" name="1em"/><!-- HANGUL SYLLABLE DYIM -->
+      <map code="0xb509" name="1em"/><!-- HANGUL SYLLABLE DYIB -->
+      <map code="0xb50a" name="1em"/><!-- HANGUL SYLLABLE DYIBS -->
+      <map code="0xb50b" name="1em"/><!-- HANGUL SYLLABLE DYIS -->
+      <map code="0xb50c" name="1em"/><!-- HANGUL SYLLABLE DYISS -->
+      <map code="0xb50d" name="1em"/><!-- HANGUL SYLLABLE DYING -->
+      <map code="0xb50e" name="1em"/><!-- HANGUL SYLLABLE DYIJ -->
+      <map code="0xb50f" name="1em"/><!-- HANGUL SYLLABLE DYIC -->
+      <map code="0xb510" name="1em"/><!-- HANGUL SYLLABLE DYIK -->
+      <map code="0xb511" name="1em"/><!-- HANGUL SYLLABLE DYIT -->
+      <map code="0xb512" name="1em"/><!-- HANGUL SYLLABLE DYIP -->
+      <map code="0xb513" name="1em"/><!-- HANGUL SYLLABLE DYIH -->
+      <map code="0xb514" name="1em"/><!-- HANGUL SYLLABLE DI -->
+      <map code="0xb515" name="1em"/><!-- HANGUL SYLLABLE DIG -->
+      <map code="0xb516" name="1em"/><!-- HANGUL SYLLABLE DIGG -->
+      <map code="0xb517" name="1em"/><!-- HANGUL SYLLABLE DIGS -->
+      <map code="0xb518" name="1em"/><!-- HANGUL SYLLABLE DIN -->
+      <map code="0xb519" name="1em"/><!-- HANGUL SYLLABLE DINJ -->
+      <map code="0xb51a" name="1em"/><!-- HANGUL SYLLABLE DINH -->
+      <map code="0xb51b" name="1em"/><!-- HANGUL SYLLABLE DID -->
+      <map code="0xb51c" name="1em"/><!-- HANGUL SYLLABLE DIL -->
+      <map code="0xb51d" name="1em"/><!-- HANGUL SYLLABLE DILG -->
+      <map code="0xb51e" name="1em"/><!-- HANGUL SYLLABLE DILM -->
+      <map code="0xb51f" name="1em"/><!-- HANGUL SYLLABLE DILB -->
+      <map code="0xb520" name="1em"/><!-- HANGUL SYLLABLE DILS -->
+      <map code="0xb521" name="1em"/><!-- HANGUL SYLLABLE DILT -->
+      <map code="0xb522" name="1em"/><!-- HANGUL SYLLABLE DILP -->
+      <map code="0xb523" name="1em"/><!-- HANGUL SYLLABLE DILH -->
+      <map code="0xb524" name="1em"/><!-- HANGUL SYLLABLE DIM -->
+      <map code="0xb525" name="1em"/><!-- HANGUL SYLLABLE DIB -->
+      <map code="0xb526" name="1em"/><!-- HANGUL SYLLABLE DIBS -->
+      <map code="0xb527" name="1em"/><!-- HANGUL SYLLABLE DIS -->
+      <map code="0xb528" name="1em"/><!-- HANGUL SYLLABLE DISS -->
+      <map code="0xb529" name="1em"/><!-- HANGUL SYLLABLE DING -->
+      <map code="0xb52a" name="1em"/><!-- HANGUL SYLLABLE DIJ -->
+      <map code="0xb52b" name="1em"/><!-- HANGUL SYLLABLE DIC -->
+      <map code="0xb52c" name="1em"/><!-- HANGUL SYLLABLE DIK -->
+      <map code="0xb52d" name="1em"/><!-- HANGUL SYLLABLE DIT -->
+      <map code="0xb52e" name="1em"/><!-- HANGUL SYLLABLE DIP -->
+      <map code="0xb52f" name="1em"/><!-- HANGUL SYLLABLE DIH -->
+      <map code="0xb530" name="1em"/><!-- HANGUL SYLLABLE DDA -->
+      <map code="0xb531" name="1em"/><!-- HANGUL SYLLABLE DDAG -->
+      <map code="0xb532" name="1em"/><!-- HANGUL SYLLABLE DDAGG -->
+      <map code="0xb533" name="1em"/><!-- HANGUL SYLLABLE DDAGS -->
+      <map code="0xb534" name="1em"/><!-- HANGUL SYLLABLE DDAN -->
+      <map code="0xb535" name="1em"/><!-- HANGUL SYLLABLE DDANJ -->
+      <map code="0xb536" name="1em"/><!-- HANGUL SYLLABLE DDANH -->
+      <map code="0xb537" name="1em"/><!-- HANGUL SYLLABLE DDAD -->
+      <map code="0xb538" name="1em"/><!-- HANGUL SYLLABLE DDAL -->
+      <map code="0xb539" name="1em"/><!-- HANGUL SYLLABLE DDALG -->
+      <map code="0xb53a" name="1em"/><!-- HANGUL SYLLABLE DDALM -->
+      <map code="0xb53b" name="1em"/><!-- HANGUL SYLLABLE DDALB -->
+      <map code="0xb53c" name="1em"/><!-- HANGUL SYLLABLE DDALS -->
+      <map code="0xb53d" name="1em"/><!-- HANGUL SYLLABLE DDALT -->
+      <map code="0xb53e" name="1em"/><!-- HANGUL SYLLABLE DDALP -->
+      <map code="0xb53f" name="1em"/><!-- HANGUL SYLLABLE DDALH -->
+      <map code="0xb540" name="1em"/><!-- HANGUL SYLLABLE DDAM -->
+      <map code="0xb541" name="1em"/><!-- HANGUL SYLLABLE DDAB -->
+      <map code="0xb542" name="1em"/><!-- HANGUL SYLLABLE DDABS -->
+      <map code="0xb543" name="1em"/><!-- HANGUL SYLLABLE DDAS -->
+      <map code="0xb544" name="1em"/><!-- HANGUL SYLLABLE DDASS -->
+      <map code="0xb545" name="1em"/><!-- HANGUL SYLLABLE DDANG -->
+      <map code="0xb546" name="1em"/><!-- HANGUL SYLLABLE DDAJ -->
+      <map code="0xb547" name="1em"/><!-- HANGUL SYLLABLE DDAC -->
+      <map code="0xb548" name="1em"/><!-- HANGUL SYLLABLE DDAK -->
+      <map code="0xb549" name="1em"/><!-- HANGUL SYLLABLE DDAT -->
+      <map code="0xb54a" name="1em"/><!-- HANGUL SYLLABLE DDAP -->
+      <map code="0xb54b" name="1em"/><!-- HANGUL SYLLABLE DDAH -->
+      <map code="0xb54c" name="1em"/><!-- HANGUL SYLLABLE DDAE -->
+      <map code="0xb54d" name="1em"/><!-- HANGUL SYLLABLE DDAEG -->
+      <map code="0xb54e" name="1em"/><!-- HANGUL SYLLABLE DDAEGG -->
+      <map code="0xb54f" name="1em"/><!-- HANGUL SYLLABLE DDAEGS -->
+      <map code="0xb550" name="1em"/><!-- HANGUL SYLLABLE DDAEN -->
+      <map code="0xb551" name="1em"/><!-- HANGUL SYLLABLE DDAENJ -->
+      <map code="0xb552" name="1em"/><!-- HANGUL SYLLABLE DDAENH -->
+      <map code="0xb553" name="1em"/><!-- HANGUL SYLLABLE DDAED -->
+      <map code="0xb554" name="1em"/><!-- HANGUL SYLLABLE DDAEL -->
+      <map code="0xb555" name="1em"/><!-- HANGUL SYLLABLE DDAELG -->
+      <map code="0xb556" name="1em"/><!-- HANGUL SYLLABLE DDAELM -->
+      <map code="0xb557" name="1em"/><!-- HANGUL SYLLABLE DDAELB -->
+      <map code="0xb558" name="1em"/><!-- HANGUL SYLLABLE DDAELS -->
+      <map code="0xb559" name="1em"/><!-- HANGUL SYLLABLE DDAELT -->
+      <map code="0xb55a" name="1em"/><!-- HANGUL SYLLABLE DDAELP -->
+      <map code="0xb55b" name="1em"/><!-- HANGUL SYLLABLE DDAELH -->
+      <map code="0xb55c" name="1em"/><!-- HANGUL SYLLABLE DDAEM -->
+      <map code="0xb55d" name="1em"/><!-- HANGUL SYLLABLE DDAEB -->
+      <map code="0xb55e" name="1em"/><!-- HANGUL SYLLABLE DDAEBS -->
+      <map code="0xb55f" name="1em"/><!-- HANGUL SYLLABLE DDAES -->
+      <map code="0xb560" name="1em"/><!-- HANGUL SYLLABLE DDAESS -->
+      <map code="0xb561" name="1em"/><!-- HANGUL SYLLABLE DDAENG -->
+      <map code="0xb562" name="1em"/><!-- HANGUL SYLLABLE DDAEJ -->
+      <map code="0xb563" name="1em"/><!-- HANGUL SYLLABLE DDAEC -->
+      <map code="0xb564" name="1em"/><!-- HANGUL SYLLABLE DDAEK -->
+      <map code="0xb565" name="1em"/><!-- HANGUL SYLLABLE DDAET -->
+      <map code="0xb566" name="1em"/><!-- HANGUL SYLLABLE DDAEP -->
+      <map code="0xb567" name="1em"/><!-- HANGUL SYLLABLE DDAEH -->
+      <map code="0xb568" name="1em"/><!-- HANGUL SYLLABLE DDYA -->
+      <map code="0xb569" name="1em"/><!-- HANGUL SYLLABLE DDYAG -->
+      <map code="0xb56a" name="1em"/><!-- HANGUL SYLLABLE DDYAGG -->
+      <map code="0xb56b" name="1em"/><!-- HANGUL SYLLABLE DDYAGS -->
+      <map code="0xb56c" name="1em"/><!-- HANGUL SYLLABLE DDYAN -->
+      <map code="0xb56d" name="1em"/><!-- HANGUL SYLLABLE DDYANJ -->
+      <map code="0xb56e" name="1em"/><!-- HANGUL SYLLABLE DDYANH -->
+      <map code="0xb56f" name="1em"/><!-- HANGUL SYLLABLE DDYAD -->
+      <map code="0xb570" name="1em"/><!-- HANGUL SYLLABLE DDYAL -->
+      <map code="0xb571" name="1em"/><!-- HANGUL SYLLABLE DDYALG -->
+      <map code="0xb572" name="1em"/><!-- HANGUL SYLLABLE DDYALM -->
+      <map code="0xb573" name="1em"/><!-- HANGUL SYLLABLE DDYALB -->
+      <map code="0xb574" name="1em"/><!-- HANGUL SYLLABLE DDYALS -->
+      <map code="0xb575" name="1em"/><!-- HANGUL SYLLABLE DDYALT -->
+      <map code="0xb576" name="1em"/><!-- HANGUL SYLLABLE DDYALP -->
+      <map code="0xb577" name="1em"/><!-- HANGUL SYLLABLE DDYALH -->
+      <map code="0xb578" name="1em"/><!-- HANGUL SYLLABLE DDYAM -->
+      <map code="0xb579" name="1em"/><!-- HANGUL SYLLABLE DDYAB -->
+      <map code="0xb57a" name="1em"/><!-- HANGUL SYLLABLE DDYABS -->
+      <map code="0xb57b" name="1em"/><!-- HANGUL SYLLABLE DDYAS -->
+      <map code="0xb57c" name="1em"/><!-- HANGUL SYLLABLE DDYASS -->
+      <map code="0xb57d" name="1em"/><!-- HANGUL SYLLABLE DDYANG -->
+      <map code="0xb57e" name="1em"/><!-- HANGUL SYLLABLE DDYAJ -->
+      <map code="0xb57f" name="1em"/><!-- HANGUL SYLLABLE DDYAC -->
+      <map code="0xb580" name="1em"/><!-- HANGUL SYLLABLE DDYAK -->
+      <map code="0xb581" name="1em"/><!-- HANGUL SYLLABLE DDYAT -->
+      <map code="0xb582" name="1em"/><!-- HANGUL SYLLABLE DDYAP -->
+      <map code="0xb583" name="1em"/><!-- HANGUL SYLLABLE DDYAH -->
+      <map code="0xb584" name="1em"/><!-- HANGUL SYLLABLE DDYAE -->
+      <map code="0xb585" name="1em"/><!-- HANGUL SYLLABLE DDYAEG -->
+      <map code="0xb586" name="1em"/><!-- HANGUL SYLLABLE DDYAEGG -->
+      <map code="0xb587" name="1em"/><!-- HANGUL SYLLABLE DDYAEGS -->
+      <map code="0xb588" name="1em"/><!-- HANGUL SYLLABLE DDYAEN -->
+      <map code="0xb589" name="1em"/><!-- HANGUL SYLLABLE DDYAENJ -->
+      <map code="0xb58a" name="1em"/><!-- HANGUL SYLLABLE DDYAENH -->
+      <map code="0xb58b" name="1em"/><!-- HANGUL SYLLABLE DDYAED -->
+      <map code="0xb58c" name="1em"/><!-- HANGUL SYLLABLE DDYAEL -->
+      <map code="0xb58d" name="1em"/><!-- HANGUL SYLLABLE DDYAELG -->
+      <map code="0xb58e" name="1em"/><!-- HANGUL SYLLABLE DDYAELM -->
+      <map code="0xb58f" name="1em"/><!-- HANGUL SYLLABLE DDYAELB -->
+      <map code="0xb590" name="1em"/><!-- HANGUL SYLLABLE DDYAELS -->
+      <map code="0xb591" name="1em"/><!-- HANGUL SYLLABLE DDYAELT -->
+      <map code="0xb592" name="1em"/><!-- HANGUL SYLLABLE DDYAELP -->
+      <map code="0xb593" name="1em"/><!-- HANGUL SYLLABLE DDYAELH -->
+      <map code="0xb594" name="1em"/><!-- HANGUL SYLLABLE DDYAEM -->
+      <map code="0xb595" name="1em"/><!-- HANGUL SYLLABLE DDYAEB -->
+      <map code="0xb596" name="1em"/><!-- HANGUL SYLLABLE DDYAEBS -->
+      <map code="0xb597" name="1em"/><!-- HANGUL SYLLABLE DDYAES -->
+      <map code="0xb598" name="1em"/><!-- HANGUL SYLLABLE DDYAESS -->
+      <map code="0xb599" name="1em"/><!-- HANGUL SYLLABLE DDYAENG -->
+      <map code="0xb59a" name="1em"/><!-- HANGUL SYLLABLE DDYAEJ -->
+      <map code="0xb59b" name="1em"/><!-- HANGUL SYLLABLE DDYAEC -->
+      <map code="0xb59c" name="1em"/><!-- HANGUL SYLLABLE DDYAEK -->
+      <map code="0xb59d" name="1em"/><!-- HANGUL SYLLABLE DDYAET -->
+      <map code="0xb59e" name="1em"/><!-- HANGUL SYLLABLE DDYAEP -->
+      <map code="0xb59f" name="1em"/><!-- HANGUL SYLLABLE DDYAEH -->
+      <map code="0xb5a0" name="1em"/><!-- HANGUL SYLLABLE DDEO -->
+      <map code="0xb5a1" name="1em"/><!-- HANGUL SYLLABLE DDEOG -->
+      <map code="0xb5a2" name="1em"/><!-- HANGUL SYLLABLE DDEOGG -->
+      <map code="0xb5a3" name="1em"/><!-- HANGUL SYLLABLE DDEOGS -->
+      <map code="0xb5a4" name="1em"/><!-- HANGUL SYLLABLE DDEON -->
+      <map code="0xb5a5" name="1em"/><!-- HANGUL SYLLABLE DDEONJ -->
+      <map code="0xb5a6" name="1em"/><!-- HANGUL SYLLABLE DDEONH -->
+      <map code="0xb5a7" name="1em"/><!-- HANGUL SYLLABLE DDEOD -->
+      <map code="0xb5a8" name="1em"/><!-- HANGUL SYLLABLE DDEOL -->
+      <map code="0xb5a9" name="1em"/><!-- HANGUL SYLLABLE DDEOLG -->
+      <map code="0xb5aa" name="1em"/><!-- HANGUL SYLLABLE DDEOLM -->
+      <map code="0xb5ab" name="1em"/><!-- HANGUL SYLLABLE DDEOLB -->
+      <map code="0xb5ac" name="1em"/><!-- HANGUL SYLLABLE DDEOLS -->
+      <map code="0xb5ad" name="1em"/><!-- HANGUL SYLLABLE DDEOLT -->
+      <map code="0xb5ae" name="1em"/><!-- HANGUL SYLLABLE DDEOLP -->
+      <map code="0xb5af" name="1em"/><!-- HANGUL SYLLABLE DDEOLH -->
+      <map code="0xb5b0" name="1em"/><!-- HANGUL SYLLABLE DDEOM -->
+      <map code="0xb5b1" name="1em"/><!-- HANGUL SYLLABLE DDEOB -->
+      <map code="0xb5b2" name="1em"/><!-- HANGUL SYLLABLE DDEOBS -->
+      <map code="0xb5b3" name="1em"/><!-- HANGUL SYLLABLE DDEOS -->
+      <map code="0xb5b4" name="1em"/><!-- HANGUL SYLLABLE DDEOSS -->
+      <map code="0xb5b5" name="1em"/><!-- HANGUL SYLLABLE DDEONG -->
+      <map code="0xb5b6" name="1em"/><!-- HANGUL SYLLABLE DDEOJ -->
+      <map code="0xb5b7" name="1em"/><!-- HANGUL SYLLABLE DDEOC -->
+      <map code="0xb5b8" name="1em"/><!-- HANGUL SYLLABLE DDEOK -->
+      <map code="0xb5b9" name="1em"/><!-- HANGUL SYLLABLE DDEOT -->
+      <map code="0xb5ba" name="1em"/><!-- HANGUL SYLLABLE DDEOP -->
+      <map code="0xb5bb" name="1em"/><!-- HANGUL SYLLABLE DDEOH -->
+      <map code="0xb5bc" name="1em"/><!-- HANGUL SYLLABLE DDE -->
+      <map code="0xb5bd" name="1em"/><!-- HANGUL SYLLABLE DDEG -->
+      <map code="0xb5be" name="1em"/><!-- HANGUL SYLLABLE DDEGG -->
+      <map code="0xb5bf" name="1em"/><!-- HANGUL SYLLABLE DDEGS -->
+      <map code="0xb5c0" name="1em"/><!-- HANGUL SYLLABLE DDEN -->
+      <map code="0xb5c1" name="1em"/><!-- HANGUL SYLLABLE DDENJ -->
+      <map code="0xb5c2" name="1em"/><!-- HANGUL SYLLABLE DDENH -->
+      <map code="0xb5c3" name="1em"/><!-- HANGUL SYLLABLE DDED -->
+      <map code="0xb5c4" name="1em"/><!-- HANGUL SYLLABLE DDEL -->
+      <map code="0xb5c5" name="1em"/><!-- HANGUL SYLLABLE DDELG -->
+      <map code="0xb5c6" name="1em"/><!-- HANGUL SYLLABLE DDELM -->
+      <map code="0xb5c7" name="1em"/><!-- HANGUL SYLLABLE DDELB -->
+      <map code="0xb5c8" name="1em"/><!-- HANGUL SYLLABLE DDELS -->
+      <map code="0xb5c9" name="1em"/><!-- HANGUL SYLLABLE DDELT -->
+      <map code="0xb5ca" name="1em"/><!-- HANGUL SYLLABLE DDELP -->
+      <map code="0xb5cb" name="1em"/><!-- HANGUL SYLLABLE DDELH -->
+      <map code="0xb5cc" name="1em"/><!-- HANGUL SYLLABLE DDEM -->
+      <map code="0xb5cd" name="1em"/><!-- HANGUL SYLLABLE DDEB -->
+      <map code="0xb5ce" name="1em"/><!-- HANGUL SYLLABLE DDEBS -->
+      <map code="0xb5cf" name="1em"/><!-- HANGUL SYLLABLE DDES -->
+      <map code="0xb5d0" name="1em"/><!-- HANGUL SYLLABLE DDESS -->
+      <map code="0xb5d1" name="1em"/><!-- HANGUL SYLLABLE DDENG -->
+      <map code="0xb5d2" name="1em"/><!-- HANGUL SYLLABLE DDEJ -->
+      <map code="0xb5d3" name="1em"/><!-- HANGUL SYLLABLE DDEC -->
+      <map code="0xb5d4" name="1em"/><!-- HANGUL SYLLABLE DDEK -->
+      <map code="0xb5d5" name="1em"/><!-- HANGUL SYLLABLE DDET -->
+      <map code="0xb5d6" name="1em"/><!-- HANGUL SYLLABLE DDEP -->
+      <map code="0xb5d7" name="1em"/><!-- HANGUL SYLLABLE DDEH -->
+      <map code="0xb5d8" name="1em"/><!-- HANGUL SYLLABLE DDYEO -->
+      <map code="0xb5d9" name="1em"/><!-- HANGUL SYLLABLE DDYEOG -->
+      <map code="0xb5da" name="1em"/><!-- HANGUL SYLLABLE DDYEOGG -->
+      <map code="0xb5db" name="1em"/><!-- HANGUL SYLLABLE DDYEOGS -->
+      <map code="0xb5dc" name="1em"/><!-- HANGUL SYLLABLE DDYEON -->
+      <map code="0xb5dd" name="1em"/><!-- HANGUL SYLLABLE DDYEONJ -->
+      <map code="0xb5de" name="1em"/><!-- HANGUL SYLLABLE DDYEONH -->
+      <map code="0xb5df" name="1em"/><!-- HANGUL SYLLABLE DDYEOD -->
+      <map code="0xb5e0" name="1em"/><!-- HANGUL SYLLABLE DDYEOL -->
+      <map code="0xb5e1" name="1em"/><!-- HANGUL SYLLABLE DDYEOLG -->
+      <map code="0xb5e2" name="1em"/><!-- HANGUL SYLLABLE DDYEOLM -->
+      <map code="0xb5e3" name="1em"/><!-- HANGUL SYLLABLE DDYEOLB -->
+      <map code="0xb5e4" name="1em"/><!-- HANGUL SYLLABLE DDYEOLS -->
+      <map code="0xb5e5" name="1em"/><!-- HANGUL SYLLABLE DDYEOLT -->
+      <map code="0xb5e6" name="1em"/><!-- HANGUL SYLLABLE DDYEOLP -->
+      <map code="0xb5e7" name="1em"/><!-- HANGUL SYLLABLE DDYEOLH -->
+      <map code="0xb5e8" name="1em"/><!-- HANGUL SYLLABLE DDYEOM -->
+      <map code="0xb5e9" name="1em"/><!-- HANGUL SYLLABLE DDYEOB -->
+      <map code="0xb5ea" name="1em"/><!-- HANGUL SYLLABLE DDYEOBS -->
+      <map code="0xb5eb" name="1em"/><!-- HANGUL SYLLABLE DDYEOS -->
+      <map code="0xb5ec" name="1em"/><!-- HANGUL SYLLABLE DDYEOSS -->
+      <map code="0xb5ed" name="1em"/><!-- HANGUL SYLLABLE DDYEONG -->
+      <map code="0xb5ee" name="1em"/><!-- HANGUL SYLLABLE DDYEOJ -->
+      <map code="0xb5ef" name="1em"/><!-- HANGUL SYLLABLE DDYEOC -->
+      <map code="0xb5f0" name="1em"/><!-- HANGUL SYLLABLE DDYEOK -->
+      <map code="0xb5f1" name="1em"/><!-- HANGUL SYLLABLE DDYEOT -->
+      <map code="0xb5f2" name="1em"/><!-- HANGUL SYLLABLE DDYEOP -->
+      <map code="0xb5f3" name="1em"/><!-- HANGUL SYLLABLE DDYEOH -->
+      <map code="0xb5f4" name="1em"/><!-- HANGUL SYLLABLE DDYE -->
+      <map code="0xb5f5" name="1em"/><!-- HANGUL SYLLABLE DDYEG -->
+      <map code="0xb5f6" name="1em"/><!-- HANGUL SYLLABLE DDYEGG -->
+      <map code="0xb5f7" name="1em"/><!-- HANGUL SYLLABLE DDYEGS -->
+      <map code="0xb5f8" name="1em"/><!-- HANGUL SYLLABLE DDYEN -->
+      <map code="0xb5f9" name="1em"/><!-- HANGUL SYLLABLE DDYENJ -->
+      <map code="0xb5fa" name="1em"/><!-- HANGUL SYLLABLE DDYENH -->
+      <map code="0xb5fb" name="1em"/><!-- HANGUL SYLLABLE DDYED -->
+      <map code="0xb5fc" name="1em"/><!-- HANGUL SYLLABLE DDYEL -->
+      <map code="0xb5fd" name="1em"/><!-- HANGUL SYLLABLE DDYELG -->
+      <map code="0xb5fe" name="1em"/><!-- HANGUL SYLLABLE DDYELM -->
+      <map code="0xb5ff" name="1em"/><!-- HANGUL SYLLABLE DDYELB -->
+      <map code="0xb600" name="1em"/><!-- HANGUL SYLLABLE DDYELS -->
+      <map code="0xb601" name="1em"/><!-- HANGUL SYLLABLE DDYELT -->
+      <map code="0xb602" name="1em"/><!-- HANGUL SYLLABLE DDYELP -->
+      <map code="0xb603" name="1em"/><!-- HANGUL SYLLABLE DDYELH -->
+      <map code="0xb604" name="1em"/><!-- HANGUL SYLLABLE DDYEM -->
+      <map code="0xb605" name="1em"/><!-- HANGUL SYLLABLE DDYEB -->
+      <map code="0xb606" name="1em"/><!-- HANGUL SYLLABLE DDYEBS -->
+      <map code="0xb607" name="1em"/><!-- HANGUL SYLLABLE DDYES -->
+      <map code="0xb608" name="1em"/><!-- HANGUL SYLLABLE DDYESS -->
+      <map code="0xb609" name="1em"/><!-- HANGUL SYLLABLE DDYENG -->
+      <map code="0xb60a" name="1em"/><!-- HANGUL SYLLABLE DDYEJ -->
+      <map code="0xb60b" name="1em"/><!-- HANGUL SYLLABLE DDYEC -->
+      <map code="0xb60c" name="1em"/><!-- HANGUL SYLLABLE DDYEK -->
+      <map code="0xb60d" name="1em"/><!-- HANGUL SYLLABLE DDYET -->
+      <map code="0xb60e" name="1em"/><!-- HANGUL SYLLABLE DDYEP -->
+      <map code="0xb60f" name="1em"/><!-- HANGUL SYLLABLE DDYEH -->
+      <map code="0xb610" name="1em"/><!-- HANGUL SYLLABLE DDO -->
+      <map code="0xb611" name="1em"/><!-- HANGUL SYLLABLE DDOG -->
+      <map code="0xb612" name="1em"/><!-- HANGUL SYLLABLE DDOGG -->
+      <map code="0xb613" name="1em"/><!-- HANGUL SYLLABLE DDOGS -->
+      <map code="0xb614" name="1em"/><!-- HANGUL SYLLABLE DDON -->
+      <map code="0xb615" name="1em"/><!-- HANGUL SYLLABLE DDONJ -->
+      <map code="0xb616" name="1em"/><!-- HANGUL SYLLABLE DDONH -->
+      <map code="0xb617" name="1em"/><!-- HANGUL SYLLABLE DDOD -->
+      <map code="0xb618" name="1em"/><!-- HANGUL SYLLABLE DDOL -->
+      <map code="0xb619" name="1em"/><!-- HANGUL SYLLABLE DDOLG -->
+      <map code="0xb61a" name="1em"/><!-- HANGUL SYLLABLE DDOLM -->
+      <map code="0xb61b" name="1em"/><!-- HANGUL SYLLABLE DDOLB -->
+      <map code="0xb61c" name="1em"/><!-- HANGUL SYLLABLE DDOLS -->
+      <map code="0xb61d" name="1em"/><!-- HANGUL SYLLABLE DDOLT -->
+      <map code="0xb61e" name="1em"/><!-- HANGUL SYLLABLE DDOLP -->
+      <map code="0xb61f" name="1em"/><!-- HANGUL SYLLABLE DDOLH -->
+      <map code="0xb620" name="1em"/><!-- HANGUL SYLLABLE DDOM -->
+      <map code="0xb621" name="1em"/><!-- HANGUL SYLLABLE DDOB -->
+      <map code="0xb622" name="1em"/><!-- HANGUL SYLLABLE DDOBS -->
+      <map code="0xb623" name="1em"/><!-- HANGUL SYLLABLE DDOS -->
+      <map code="0xb624" name="1em"/><!-- HANGUL SYLLABLE DDOSS -->
+      <map code="0xb625" name="1em"/><!-- HANGUL SYLLABLE DDONG -->
+      <map code="0xb626" name="1em"/><!-- HANGUL SYLLABLE DDOJ -->
+      <map code="0xb627" name="1em"/><!-- HANGUL SYLLABLE DDOC -->
+      <map code="0xb628" name="1em"/><!-- HANGUL SYLLABLE DDOK -->
+      <map code="0xb629" name="1em"/><!-- HANGUL SYLLABLE DDOT -->
+      <map code="0xb62a" name="1em"/><!-- HANGUL SYLLABLE DDOP -->
+      <map code="0xb62b" name="1em"/><!-- HANGUL SYLLABLE DDOH -->
+      <map code="0xb62c" name="1em"/><!-- HANGUL SYLLABLE DDWA -->
+      <map code="0xb62d" name="1em"/><!-- HANGUL SYLLABLE DDWAG -->
+      <map code="0xb62e" name="1em"/><!-- HANGUL SYLLABLE DDWAGG -->
+      <map code="0xb62f" name="1em"/><!-- HANGUL SYLLABLE DDWAGS -->
+      <map code="0xb630" name="1em"/><!-- HANGUL SYLLABLE DDWAN -->
+      <map code="0xb631" name="1em"/><!-- HANGUL SYLLABLE DDWANJ -->
+      <map code="0xb632" name="1em"/><!-- HANGUL SYLLABLE DDWANH -->
+      <map code="0xb633" name="1em"/><!-- HANGUL SYLLABLE DDWAD -->
+      <map code="0xb634" name="1em"/><!-- HANGUL SYLLABLE DDWAL -->
+      <map code="0xb635" name="1em"/><!-- HANGUL SYLLABLE DDWALG -->
+      <map code="0xb636" name="1em"/><!-- HANGUL SYLLABLE DDWALM -->
+      <map code="0xb637" name="1em"/><!-- HANGUL SYLLABLE DDWALB -->
+      <map code="0xb638" name="1em"/><!-- HANGUL SYLLABLE DDWALS -->
+      <map code="0xb639" name="1em"/><!-- HANGUL SYLLABLE DDWALT -->
+      <map code="0xb63a" name="1em"/><!-- HANGUL SYLLABLE DDWALP -->
+      <map code="0xb63b" name="1em"/><!-- HANGUL SYLLABLE DDWALH -->
+      <map code="0xb63c" name="1em"/><!-- HANGUL SYLLABLE DDWAM -->
+      <map code="0xb63d" name="1em"/><!-- HANGUL SYLLABLE DDWAB -->
+      <map code="0xb63e" name="1em"/><!-- HANGUL SYLLABLE DDWABS -->
+      <map code="0xb63f" name="1em"/><!-- HANGUL SYLLABLE DDWAS -->
+      <map code="0xb640" name="1em"/><!-- HANGUL SYLLABLE DDWASS -->
+      <map code="0xb641" name="1em"/><!-- HANGUL SYLLABLE DDWANG -->
+      <map code="0xb642" name="1em"/><!-- HANGUL SYLLABLE DDWAJ -->
+      <map code="0xb643" name="1em"/><!-- HANGUL SYLLABLE DDWAC -->
+      <map code="0xb644" name="1em"/><!-- HANGUL SYLLABLE DDWAK -->
+      <map code="0xb645" name="1em"/><!-- HANGUL SYLLABLE DDWAT -->
+      <map code="0xb646" name="1em"/><!-- HANGUL SYLLABLE DDWAP -->
+      <map code="0xb647" name="1em"/><!-- HANGUL SYLLABLE DDWAH -->
+      <map code="0xb648" name="1em"/><!-- HANGUL SYLLABLE DDWAE -->
+      <map code="0xb649" name="1em"/><!-- HANGUL SYLLABLE DDWAEG -->
+      <map code="0xb64a" name="1em"/><!-- HANGUL SYLLABLE DDWAEGG -->
+      <map code="0xb64b" name="1em"/><!-- HANGUL SYLLABLE DDWAEGS -->
+      <map code="0xb64c" name="1em"/><!-- HANGUL SYLLABLE DDWAEN -->
+      <map code="0xb64d" name="1em"/><!-- HANGUL SYLLABLE DDWAENJ -->
+      <map code="0xb64e" name="1em"/><!-- HANGUL SYLLABLE DDWAENH -->
+      <map code="0xb64f" name="1em"/><!-- HANGUL SYLLABLE DDWAED -->
+      <map code="0xb650" name="1em"/><!-- HANGUL SYLLABLE DDWAEL -->
+      <map code="0xb651" name="1em"/><!-- HANGUL SYLLABLE DDWAELG -->
+      <map code="0xb652" name="1em"/><!-- HANGUL SYLLABLE DDWAELM -->
+      <map code="0xb653" name="1em"/><!-- HANGUL SYLLABLE DDWAELB -->
+      <map code="0xb654" name="1em"/><!-- HANGUL SYLLABLE DDWAELS -->
+      <map code="0xb655" name="1em"/><!-- HANGUL SYLLABLE DDWAELT -->
+      <map code="0xb656" name="1em"/><!-- HANGUL SYLLABLE DDWAELP -->
+      <map code="0xb657" name="1em"/><!-- HANGUL SYLLABLE DDWAELH -->
+      <map code="0xb658" name="1em"/><!-- HANGUL SYLLABLE DDWAEM -->
+      <map code="0xb659" name="1em"/><!-- HANGUL SYLLABLE DDWAEB -->
+      <map code="0xb65a" name="1em"/><!-- HANGUL SYLLABLE DDWAEBS -->
+      <map code="0xb65b" name="1em"/><!-- HANGUL SYLLABLE DDWAES -->
+      <map code="0xb65c" name="1em"/><!-- HANGUL SYLLABLE DDWAESS -->
+      <map code="0xb65d" name="1em"/><!-- HANGUL SYLLABLE DDWAENG -->
+      <map code="0xb65e" name="1em"/><!-- HANGUL SYLLABLE DDWAEJ -->
+      <map code="0xb65f" name="1em"/><!-- HANGUL SYLLABLE DDWAEC -->
+      <map code="0xb660" name="1em"/><!-- HANGUL SYLLABLE DDWAEK -->
+      <map code="0xb661" name="1em"/><!-- HANGUL SYLLABLE DDWAET -->
+      <map code="0xb662" name="1em"/><!-- HANGUL SYLLABLE DDWAEP -->
+      <map code="0xb663" name="1em"/><!-- HANGUL SYLLABLE DDWAEH -->
+      <map code="0xb664" name="1em"/><!-- HANGUL SYLLABLE DDOE -->
+      <map code="0xb665" name="1em"/><!-- HANGUL SYLLABLE DDOEG -->
+      <map code="0xb666" name="1em"/><!-- HANGUL SYLLABLE DDOEGG -->
+      <map code="0xb667" name="1em"/><!-- HANGUL SYLLABLE DDOEGS -->
+      <map code="0xb668" name="1em"/><!-- HANGUL SYLLABLE DDOEN -->
+      <map code="0xb669" name="1em"/><!-- HANGUL SYLLABLE DDOENJ -->
+      <map code="0xb66a" name="1em"/><!-- HANGUL SYLLABLE DDOENH -->
+      <map code="0xb66b" name="1em"/><!-- HANGUL SYLLABLE DDOED -->
+      <map code="0xb66c" name="1em"/><!-- HANGUL SYLLABLE DDOEL -->
+      <map code="0xb66d" name="1em"/><!-- HANGUL SYLLABLE DDOELG -->
+      <map code="0xb66e" name="1em"/><!-- HANGUL SYLLABLE DDOELM -->
+      <map code="0xb66f" name="1em"/><!-- HANGUL SYLLABLE DDOELB -->
+      <map code="0xb670" name="1em"/><!-- HANGUL SYLLABLE DDOELS -->
+      <map code="0xb671" name="1em"/><!-- HANGUL SYLLABLE DDOELT -->
+      <map code="0xb672" name="1em"/><!-- HANGUL SYLLABLE DDOELP -->
+      <map code="0xb673" name="1em"/><!-- HANGUL SYLLABLE DDOELH -->
+      <map code="0xb674" name="1em"/><!-- HANGUL SYLLABLE DDOEM -->
+      <map code="0xb675" name="1em"/><!-- HANGUL SYLLABLE DDOEB -->
+      <map code="0xb676" name="1em"/><!-- HANGUL SYLLABLE DDOEBS -->
+      <map code="0xb677" name="1em"/><!-- HANGUL SYLLABLE DDOES -->
+      <map code="0xb678" name="1em"/><!-- HANGUL SYLLABLE DDOESS -->
+      <map code="0xb679" name="1em"/><!-- HANGUL SYLLABLE DDOENG -->
+      <map code="0xb67a" name="1em"/><!-- HANGUL SYLLABLE DDOEJ -->
+      <map code="0xb67b" name="1em"/><!-- HANGUL SYLLABLE DDOEC -->
+      <map code="0xb67c" name="1em"/><!-- HANGUL SYLLABLE DDOEK -->
+      <map code="0xb67d" name="1em"/><!-- HANGUL SYLLABLE DDOET -->
+      <map code="0xb67e" name="1em"/><!-- HANGUL SYLLABLE DDOEP -->
+      <map code="0xb67f" name="1em"/><!-- HANGUL SYLLABLE DDOEH -->
+      <map code="0xb680" name="1em"/><!-- HANGUL SYLLABLE DDYO -->
+      <map code="0xb681" name="1em"/><!-- HANGUL SYLLABLE DDYOG -->
+      <map code="0xb682" name="1em"/><!-- HANGUL SYLLABLE DDYOGG -->
+      <map code="0xb683" name="1em"/><!-- HANGUL SYLLABLE DDYOGS -->
+      <map code="0xb684" name="1em"/><!-- HANGUL SYLLABLE DDYON -->
+      <map code="0xb685" name="1em"/><!-- HANGUL SYLLABLE DDYONJ -->
+      <map code="0xb686" name="1em"/><!-- HANGUL SYLLABLE DDYONH -->
+      <map code="0xb687" name="1em"/><!-- HANGUL SYLLABLE DDYOD -->
+      <map code="0xb688" name="1em"/><!-- HANGUL SYLLABLE DDYOL -->
+      <map code="0xb689" name="1em"/><!-- HANGUL SYLLABLE DDYOLG -->
+      <map code="0xb68a" name="1em"/><!-- HANGUL SYLLABLE DDYOLM -->
+      <map code="0xb68b" name="1em"/><!-- HANGUL SYLLABLE DDYOLB -->
+      <map code="0xb68c" name="1em"/><!-- HANGUL SYLLABLE DDYOLS -->
+      <map code="0xb68d" name="1em"/><!-- HANGUL SYLLABLE DDYOLT -->
+      <map code="0xb68e" name="1em"/><!-- HANGUL SYLLABLE DDYOLP -->
+      <map code="0xb68f" name="1em"/><!-- HANGUL SYLLABLE DDYOLH -->
+      <map code="0xb690" name="1em"/><!-- HANGUL SYLLABLE DDYOM -->
+      <map code="0xb691" name="1em"/><!-- HANGUL SYLLABLE DDYOB -->
+      <map code="0xb692" name="1em"/><!-- HANGUL SYLLABLE DDYOBS -->
+      <map code="0xb693" name="1em"/><!-- HANGUL SYLLABLE DDYOS -->
+      <map code="0xb694" name="1em"/><!-- HANGUL SYLLABLE DDYOSS -->
+      <map code="0xb695" name="1em"/><!-- HANGUL SYLLABLE DDYONG -->
+      <map code="0xb696" name="1em"/><!-- HANGUL SYLLABLE DDYOJ -->
+      <map code="0xb697" name="1em"/><!-- HANGUL SYLLABLE DDYOC -->
+      <map code="0xb698" name="1em"/><!-- HANGUL SYLLABLE DDYOK -->
+      <map code="0xb699" name="1em"/><!-- HANGUL SYLLABLE DDYOT -->
+      <map code="0xb69a" name="1em"/><!-- HANGUL SYLLABLE DDYOP -->
+      <map code="0xb69b" name="1em"/><!-- HANGUL SYLLABLE DDYOH -->
+      <map code="0xb69c" name="1em"/><!-- HANGUL SYLLABLE DDU -->
+      <map code="0xb69d" name="1em"/><!-- HANGUL SYLLABLE DDUG -->
+      <map code="0xb69e" name="1em"/><!-- HANGUL SYLLABLE DDUGG -->
+      <map code="0xb69f" name="1em"/><!-- HANGUL SYLLABLE DDUGS -->
+      <map code="0xb6a0" name="1em"/><!-- HANGUL SYLLABLE DDUN -->
+      <map code="0xb6a1" name="1em"/><!-- HANGUL SYLLABLE DDUNJ -->
+      <map code="0xb6a2" name="1em"/><!-- HANGUL SYLLABLE DDUNH -->
+      <map code="0xb6a3" name="1em"/><!-- HANGUL SYLLABLE DDUD -->
+      <map code="0xb6a4" name="1em"/><!-- HANGUL SYLLABLE DDUL -->
+      <map code="0xb6a5" name="1em"/><!-- HANGUL SYLLABLE DDULG -->
+      <map code="0xb6a6" name="1em"/><!-- HANGUL SYLLABLE DDULM -->
+      <map code="0xb6a7" name="1em"/><!-- HANGUL SYLLABLE DDULB -->
+      <map code="0xb6a8" name="1em"/><!-- HANGUL SYLLABLE DDULS -->
+      <map code="0xb6a9" name="1em"/><!-- HANGUL SYLLABLE DDULT -->
+      <map code="0xb6aa" name="1em"/><!-- HANGUL SYLLABLE DDULP -->
+      <map code="0xb6ab" name="1em"/><!-- HANGUL SYLLABLE DDULH -->
+      <map code="0xb6ac" name="1em"/><!-- HANGUL SYLLABLE DDUM -->
+      <map code="0xb6ad" name="1em"/><!-- HANGUL SYLLABLE DDUB -->
+      <map code="0xb6ae" name="1em"/><!-- HANGUL SYLLABLE DDUBS -->
+      <map code="0xb6af" name="1em"/><!-- HANGUL SYLLABLE DDUS -->
+      <map code="0xb6b0" name="1em"/><!-- HANGUL SYLLABLE DDUSS -->
+      <map code="0xb6b1" name="1em"/><!-- HANGUL SYLLABLE DDUNG -->
+      <map code="0xb6b2" name="1em"/><!-- HANGUL SYLLABLE DDUJ -->
+      <map code="0xb6b3" name="1em"/><!-- HANGUL SYLLABLE DDUC -->
+      <map code="0xb6b4" name="1em"/><!-- HANGUL SYLLABLE DDUK -->
+      <map code="0xb6b5" name="1em"/><!-- HANGUL SYLLABLE DDUT -->
+      <map code="0xb6b6" name="1em"/><!-- HANGUL SYLLABLE DDUP -->
+      <map code="0xb6b7" name="1em"/><!-- HANGUL SYLLABLE DDUH -->
+      <map code="0xb6b8" name="1em"/><!-- HANGUL SYLLABLE DDWEO -->
+      <map code="0xb6b9" name="1em"/><!-- HANGUL SYLLABLE DDWEOG -->
+      <map code="0xb6ba" name="1em"/><!-- HANGUL SYLLABLE DDWEOGG -->
+      <map code="0xb6bb" name="1em"/><!-- HANGUL SYLLABLE DDWEOGS -->
+      <map code="0xb6bc" name="1em"/><!-- HANGUL SYLLABLE DDWEON -->
+      <map code="0xb6bd" name="1em"/><!-- HANGUL SYLLABLE DDWEONJ -->
+      <map code="0xb6be" name="1em"/><!-- HANGUL SYLLABLE DDWEONH -->
+      <map code="0xb6bf" name="1em"/><!-- HANGUL SYLLABLE DDWEOD -->
+      <map code="0xb6c0" name="1em"/><!-- HANGUL SYLLABLE DDWEOL -->
+      <map code="0xb6c1" name="1em"/><!-- HANGUL SYLLABLE DDWEOLG -->
+      <map code="0xb6c2" name="1em"/><!-- HANGUL SYLLABLE DDWEOLM -->
+      <map code="0xb6c3" name="1em"/><!-- HANGUL SYLLABLE DDWEOLB -->
+      <map code="0xb6c4" name="1em"/><!-- HANGUL SYLLABLE DDWEOLS -->
+      <map code="0xb6c5" name="1em"/><!-- HANGUL SYLLABLE DDWEOLT -->
+      <map code="0xb6c6" name="1em"/><!-- HANGUL SYLLABLE DDWEOLP -->
+      <map code="0xb6c7" name="1em"/><!-- HANGUL SYLLABLE DDWEOLH -->
+      <map code="0xb6c8" name="1em"/><!-- HANGUL SYLLABLE DDWEOM -->
+      <map code="0xb6c9" name="1em"/><!-- HANGUL SYLLABLE DDWEOB -->
+      <map code="0xb6ca" name="1em"/><!-- HANGUL SYLLABLE DDWEOBS -->
+      <map code="0xb6cb" name="1em"/><!-- HANGUL SYLLABLE DDWEOS -->
+      <map code="0xb6cc" name="1em"/><!-- HANGUL SYLLABLE DDWEOSS -->
+      <map code="0xb6cd" name="1em"/><!-- HANGUL SYLLABLE DDWEONG -->
+      <map code="0xb6ce" name="1em"/><!-- HANGUL SYLLABLE DDWEOJ -->
+      <map code="0xb6cf" name="1em"/><!-- HANGUL SYLLABLE DDWEOC -->
+      <map code="0xb6d0" name="1em"/><!-- HANGUL SYLLABLE DDWEOK -->
+      <map code="0xb6d1" name="1em"/><!-- HANGUL SYLLABLE DDWEOT -->
+      <map code="0xb6d2" name="1em"/><!-- HANGUL SYLLABLE DDWEOP -->
+      <map code="0xb6d3" name="1em"/><!-- HANGUL SYLLABLE DDWEOH -->
+      <map code="0xb6d4" name="1em"/><!-- HANGUL SYLLABLE DDWE -->
+      <map code="0xb6d5" name="1em"/><!-- HANGUL SYLLABLE DDWEG -->
+      <map code="0xb6d6" name="1em"/><!-- HANGUL SYLLABLE DDWEGG -->
+      <map code="0xb6d7" name="1em"/><!-- HANGUL SYLLABLE DDWEGS -->
+      <map code="0xb6d8" name="1em"/><!-- HANGUL SYLLABLE DDWEN -->
+      <map code="0xb6d9" name="1em"/><!-- HANGUL SYLLABLE DDWENJ -->
+      <map code="0xb6da" name="1em"/><!-- HANGUL SYLLABLE DDWENH -->
+      <map code="0xb6db" name="1em"/><!-- HANGUL SYLLABLE DDWED -->
+      <map code="0xb6dc" name="1em"/><!-- HANGUL SYLLABLE DDWEL -->
+      <map code="0xb6dd" name="1em"/><!-- HANGUL SYLLABLE DDWELG -->
+      <map code="0xb6de" name="1em"/><!-- HANGUL SYLLABLE DDWELM -->
+      <map code="0xb6df" name="1em"/><!-- HANGUL SYLLABLE DDWELB -->
+      <map code="0xb6e0" name="1em"/><!-- HANGUL SYLLABLE DDWELS -->
+      <map code="0xb6e1" name="1em"/><!-- HANGUL SYLLABLE DDWELT -->
+      <map code="0xb6e2" name="1em"/><!-- HANGUL SYLLABLE DDWELP -->
+      <map code="0xb6e3" name="1em"/><!-- HANGUL SYLLABLE DDWELH -->
+      <map code="0xb6e4" name="1em"/><!-- HANGUL SYLLABLE DDWEM -->
+      <map code="0xb6e5" name="1em"/><!-- HANGUL SYLLABLE DDWEB -->
+      <map code="0xb6e6" name="1em"/><!-- HANGUL SYLLABLE DDWEBS -->
+      <map code="0xb6e7" name="1em"/><!-- HANGUL SYLLABLE DDWES -->
+      <map code="0xb6e8" name="1em"/><!-- HANGUL SYLLABLE DDWESS -->
+      <map code="0xb6e9" name="1em"/><!-- HANGUL SYLLABLE DDWENG -->
+      <map code="0xb6ea" name="1em"/><!-- HANGUL SYLLABLE DDWEJ -->
+      <map code="0xb6eb" name="1em"/><!-- HANGUL SYLLABLE DDWEC -->
+      <map code="0xb6ec" name="1em"/><!-- HANGUL SYLLABLE DDWEK -->
+      <map code="0xb6ed" name="1em"/><!-- HANGUL SYLLABLE DDWET -->
+      <map code="0xb6ee" name="1em"/><!-- HANGUL SYLLABLE DDWEP -->
+      <map code="0xb6ef" name="1em"/><!-- HANGUL SYLLABLE DDWEH -->
+      <map code="0xb6f0" name="1em"/><!-- HANGUL SYLLABLE DDWI -->
+      <map code="0xb6f1" name="1em"/><!-- HANGUL SYLLABLE DDWIG -->
+      <map code="0xb6f2" name="1em"/><!-- HANGUL SYLLABLE DDWIGG -->
+      <map code="0xb6f3" name="1em"/><!-- HANGUL SYLLABLE DDWIGS -->
+      <map code="0xb6f4" name="1em"/><!-- HANGUL SYLLABLE DDWIN -->
+      <map code="0xb6f5" name="1em"/><!-- HANGUL SYLLABLE DDWINJ -->
+      <map code="0xb6f6" name="1em"/><!-- HANGUL SYLLABLE DDWINH -->
+      <map code="0xb6f7" name="1em"/><!-- HANGUL SYLLABLE DDWID -->
+      <map code="0xb6f8" name="1em"/><!-- HANGUL SYLLABLE DDWIL -->
+      <map code="0xb6f9" name="1em"/><!-- HANGUL SYLLABLE DDWILG -->
+      <map code="0xb6fa" name="1em"/><!-- HANGUL SYLLABLE DDWILM -->
+      <map code="0xb6fb" name="1em"/><!-- HANGUL SYLLABLE DDWILB -->
+      <map code="0xb6fc" name="1em"/><!-- HANGUL SYLLABLE DDWILS -->
+      <map code="0xb6fd" name="1em"/><!-- HANGUL SYLLABLE DDWILT -->
+      <map code="0xb6fe" name="1em"/><!-- HANGUL SYLLABLE DDWILP -->
+      <map code="0xb6ff" name="1em"/><!-- HANGUL SYLLABLE DDWILH -->
+      <map code="0xb700" name="1em"/><!-- HANGUL SYLLABLE DDWIM -->
+      <map code="0xb701" name="1em"/><!-- HANGUL SYLLABLE DDWIB -->
+      <map code="0xb702" name="1em"/><!-- HANGUL SYLLABLE DDWIBS -->
+      <map code="0xb703" name="1em"/><!-- HANGUL SYLLABLE DDWIS -->
+      <map code="0xb704" name="1em"/><!-- HANGUL SYLLABLE DDWISS -->
+      <map code="0xb705" name="1em"/><!-- HANGUL SYLLABLE DDWING -->
+      <map code="0xb706" name="1em"/><!-- HANGUL SYLLABLE DDWIJ -->
+      <map code="0xb707" name="1em"/><!-- HANGUL SYLLABLE DDWIC -->
+      <map code="0xb708" name="1em"/><!-- HANGUL SYLLABLE DDWIK -->
+      <map code="0xb709" name="1em"/><!-- HANGUL SYLLABLE DDWIT -->
+      <map code="0xb70a" name="1em"/><!-- HANGUL SYLLABLE DDWIP -->
+      <map code="0xb70b" name="1em"/><!-- HANGUL SYLLABLE DDWIH -->
+      <map code="0xb70c" name="1em"/><!-- HANGUL SYLLABLE DDYU -->
+      <map code="0xb70d" name="1em"/><!-- HANGUL SYLLABLE DDYUG -->
+      <map code="0xb70e" name="1em"/><!-- HANGUL SYLLABLE DDYUGG -->
+      <map code="0xb70f" name="1em"/><!-- HANGUL SYLLABLE DDYUGS -->
+      <map code="0xb710" name="1em"/><!-- HANGUL SYLLABLE DDYUN -->
+      <map code="0xb711" name="1em"/><!-- HANGUL SYLLABLE DDYUNJ -->
+      <map code="0xb712" name="1em"/><!-- HANGUL SYLLABLE DDYUNH -->
+      <map code="0xb713" name="1em"/><!-- HANGUL SYLLABLE DDYUD -->
+      <map code="0xb714" name="1em"/><!-- HANGUL SYLLABLE DDYUL -->
+      <map code="0xb715" name="1em"/><!-- HANGUL SYLLABLE DDYULG -->
+      <map code="0xb716" name="1em"/><!-- HANGUL SYLLABLE DDYULM -->
+      <map code="0xb717" name="1em"/><!-- HANGUL SYLLABLE DDYULB -->
+      <map code="0xb718" name="1em"/><!-- HANGUL SYLLABLE DDYULS -->
+      <map code="0xb719" name="1em"/><!-- HANGUL SYLLABLE DDYULT -->
+      <map code="0xb71a" name="1em"/><!-- HANGUL SYLLABLE DDYULP -->
+      <map code="0xb71b" name="1em"/><!-- HANGUL SYLLABLE DDYULH -->
+      <map code="0xb71c" name="1em"/><!-- HANGUL SYLLABLE DDYUM -->
+      <map code="0xb71d" name="1em"/><!-- HANGUL SYLLABLE DDYUB -->
+      <map code="0xb71e" name="1em"/><!-- HANGUL SYLLABLE DDYUBS -->
+      <map code="0xb71f" name="1em"/><!-- HANGUL SYLLABLE DDYUS -->
+      <map code="0xb720" name="1em"/><!-- HANGUL SYLLABLE DDYUSS -->
+      <map code="0xb721" name="1em"/><!-- HANGUL SYLLABLE DDYUNG -->
+      <map code="0xb722" name="1em"/><!-- HANGUL SYLLABLE DDYUJ -->
+      <map code="0xb723" name="1em"/><!-- HANGUL SYLLABLE DDYUC -->
+      <map code="0xb724" name="1em"/><!-- HANGUL SYLLABLE DDYUK -->
+      <map code="0xb725" name="1em"/><!-- HANGUL SYLLABLE DDYUT -->
+      <map code="0xb726" name="1em"/><!-- HANGUL SYLLABLE DDYUP -->
+      <map code="0xb727" name="1em"/><!-- HANGUL SYLLABLE DDYUH -->
+      <map code="0xb728" name="1em"/><!-- HANGUL SYLLABLE DDEU -->
+      <map code="0xb729" name="1em"/><!-- HANGUL SYLLABLE DDEUG -->
+      <map code="0xb72a" name="1em"/><!-- HANGUL SYLLABLE DDEUGG -->
+      <map code="0xb72b" name="1em"/><!-- HANGUL SYLLABLE DDEUGS -->
+      <map code="0xb72c" name="1em"/><!-- HANGUL SYLLABLE DDEUN -->
+      <map code="0xb72d" name="1em"/><!-- HANGUL SYLLABLE DDEUNJ -->
+      <map code="0xb72e" name="1em"/><!-- HANGUL SYLLABLE DDEUNH -->
+      <map code="0xb72f" name="1em"/><!-- HANGUL SYLLABLE DDEUD -->
+      <map code="0xb730" name="1em"/><!-- HANGUL SYLLABLE DDEUL -->
+      <map code="0xb731" name="1em"/><!-- HANGUL SYLLABLE DDEULG -->
+      <map code="0xb732" name="1em"/><!-- HANGUL SYLLABLE DDEULM -->
+      <map code="0xb733" name="1em"/><!-- HANGUL SYLLABLE DDEULB -->
+      <map code="0xb734" name="1em"/><!-- HANGUL SYLLABLE DDEULS -->
+      <map code="0xb735" name="1em"/><!-- HANGUL SYLLABLE DDEULT -->
+      <map code="0xb736" name="1em"/><!-- HANGUL SYLLABLE DDEULP -->
+      <map code="0xb737" name="1em"/><!-- HANGUL SYLLABLE DDEULH -->
+      <map code="0xb738" name="1em"/><!-- HANGUL SYLLABLE DDEUM -->
+      <map code="0xb739" name="1em"/><!-- HANGUL SYLLABLE DDEUB -->
+      <map code="0xb73a" name="1em"/><!-- HANGUL SYLLABLE DDEUBS -->
+      <map code="0xb73b" name="1em"/><!-- HANGUL SYLLABLE DDEUS -->
+      <map code="0xb73c" name="1em"/><!-- HANGUL SYLLABLE DDEUSS -->
+      <map code="0xb73d" name="1em"/><!-- HANGUL SYLLABLE DDEUNG -->
+      <map code="0xb73e" name="1em"/><!-- HANGUL SYLLABLE DDEUJ -->
+      <map code="0xb73f" name="1em"/><!-- HANGUL SYLLABLE DDEUC -->
+      <map code="0xb740" name="1em"/><!-- HANGUL SYLLABLE DDEUK -->
+      <map code="0xb741" name="1em"/><!-- HANGUL SYLLABLE DDEUT -->
+      <map code="0xb742" name="1em"/><!-- HANGUL SYLLABLE DDEUP -->
+      <map code="0xb743" name="1em"/><!-- HANGUL SYLLABLE DDEUH -->
+      <map code="0xb744" name="1em"/><!-- HANGUL SYLLABLE DDYI -->
+      <map code="0xb745" name="1em"/><!-- HANGUL SYLLABLE DDYIG -->
+      <map code="0xb746" name="1em"/><!-- HANGUL SYLLABLE DDYIGG -->
+      <map code="0xb747" name="1em"/><!-- HANGUL SYLLABLE DDYIGS -->
+      <map code="0xb748" name="1em"/><!-- HANGUL SYLLABLE DDYIN -->
+      <map code="0xb749" name="1em"/><!-- HANGUL SYLLABLE DDYINJ -->
+      <map code="0xb74a" name="1em"/><!-- HANGUL SYLLABLE DDYINH -->
+      <map code="0xb74b" name="1em"/><!-- HANGUL SYLLABLE DDYID -->
+      <map code="0xb74c" name="1em"/><!-- HANGUL SYLLABLE DDYIL -->
+      <map code="0xb74d" name="1em"/><!-- HANGUL SYLLABLE DDYILG -->
+      <map code="0xb74e" name="1em"/><!-- HANGUL SYLLABLE DDYILM -->
+      <map code="0xb74f" name="1em"/><!-- HANGUL SYLLABLE DDYILB -->
+      <map code="0xb750" name="1em"/><!-- HANGUL SYLLABLE DDYILS -->
+      <map code="0xb751" name="1em"/><!-- HANGUL SYLLABLE DDYILT -->
+      <map code="0xb752" name="1em"/><!-- HANGUL SYLLABLE DDYILP -->
+      <map code="0xb753" name="1em"/><!-- HANGUL SYLLABLE DDYILH -->
+      <map code="0xb754" name="1em"/><!-- HANGUL SYLLABLE DDYIM -->
+      <map code="0xb755" name="1em"/><!-- HANGUL SYLLABLE DDYIB -->
+      <map code="0xb756" name="1em"/><!-- HANGUL SYLLABLE DDYIBS -->
+      <map code="0xb757" name="1em"/><!-- HANGUL SYLLABLE DDYIS -->
+      <map code="0xb758" name="1em"/><!-- HANGUL SYLLABLE DDYISS -->
+      <map code="0xb759" name="1em"/><!-- HANGUL SYLLABLE DDYING -->
+      <map code="0xb75a" name="1em"/><!-- HANGUL SYLLABLE DDYIJ -->
+      <map code="0xb75b" name="1em"/><!-- HANGUL SYLLABLE DDYIC -->
+      <map code="0xb75c" name="1em"/><!-- HANGUL SYLLABLE DDYIK -->
+      <map code="0xb75d" name="1em"/><!-- HANGUL SYLLABLE DDYIT -->
+      <map code="0xb75e" name="1em"/><!-- HANGUL SYLLABLE DDYIP -->
+      <map code="0xb75f" name="1em"/><!-- HANGUL SYLLABLE DDYIH -->
+      <map code="0xb760" name="1em"/><!-- HANGUL SYLLABLE DDI -->
+      <map code="0xb761" name="1em"/><!-- HANGUL SYLLABLE DDIG -->
+      <map code="0xb762" name="1em"/><!-- HANGUL SYLLABLE DDIGG -->
+      <map code="0xb763" name="1em"/><!-- HANGUL SYLLABLE DDIGS -->
+      <map code="0xb764" name="1em"/><!-- HANGUL SYLLABLE DDIN -->
+      <map code="0xb765" name="1em"/><!-- HANGUL SYLLABLE DDINJ -->
+      <map code="0xb766" name="1em"/><!-- HANGUL SYLLABLE DDINH -->
+      <map code="0xb767" name="1em"/><!-- HANGUL SYLLABLE DDID -->
+      <map code="0xb768" name="1em"/><!-- HANGUL SYLLABLE DDIL -->
+      <map code="0xb769" name="1em"/><!-- HANGUL SYLLABLE DDILG -->
+      <map code="0xb76a" name="1em"/><!-- HANGUL SYLLABLE DDILM -->
+      <map code="0xb76b" name="1em"/><!-- HANGUL SYLLABLE DDILB -->
+      <map code="0xb76c" name="1em"/><!-- HANGUL SYLLABLE DDILS -->
+      <map code="0xb76d" name="1em"/><!-- HANGUL SYLLABLE DDILT -->
+      <map code="0xb76e" name="1em"/><!-- HANGUL SYLLABLE DDILP -->
+      <map code="0xb76f" name="1em"/><!-- HANGUL SYLLABLE DDILH -->
+      <map code="0xb770" name="1em"/><!-- HANGUL SYLLABLE DDIM -->
+      <map code="0xb771" name="1em"/><!-- HANGUL SYLLABLE DDIB -->
+      <map code="0xb772" name="1em"/><!-- HANGUL SYLLABLE DDIBS -->
+      <map code="0xb773" name="1em"/><!-- HANGUL SYLLABLE DDIS -->
+      <map code="0xb774" name="1em"/><!-- HANGUL SYLLABLE DDISS -->
+      <map code="0xb775" name="1em"/><!-- HANGUL SYLLABLE DDING -->
+      <map code="0xb776" name="1em"/><!-- HANGUL SYLLABLE DDIJ -->
+      <map code="0xb777" name="1em"/><!-- HANGUL SYLLABLE DDIC -->
+      <map code="0xb778" name="1em"/><!-- HANGUL SYLLABLE DDIK -->
+      <map code="0xb779" name="1em"/><!-- HANGUL SYLLABLE DDIT -->
+      <map code="0xb77a" name="1em"/><!-- HANGUL SYLLABLE DDIP -->
+      <map code="0xb77b" name="1em"/><!-- HANGUL SYLLABLE DDIH -->
+      <map code="0xb77c" name="1em"/><!-- HANGUL SYLLABLE RA -->
+      <map code="0xb77d" name="1em"/><!-- HANGUL SYLLABLE RAG -->
+      <map code="0xb77e" name="1em"/><!-- HANGUL SYLLABLE RAGG -->
+      <map code="0xb77f" name="1em"/><!-- HANGUL SYLLABLE RAGS -->
+      <map code="0xb780" name="1em"/><!-- HANGUL SYLLABLE RAN -->
+      <map code="0xb781" name="1em"/><!-- HANGUL SYLLABLE RANJ -->
+      <map code="0xb782" name="1em"/><!-- HANGUL SYLLABLE RANH -->
+      <map code="0xb783" name="1em"/><!-- HANGUL SYLLABLE RAD -->
+      <map code="0xb784" name="1em"/><!-- HANGUL SYLLABLE RAL -->
+      <map code="0xb785" name="1em"/><!-- HANGUL SYLLABLE RALG -->
+      <map code="0xb786" name="1em"/><!-- HANGUL SYLLABLE RALM -->
+      <map code="0xb787" name="1em"/><!-- HANGUL SYLLABLE RALB -->
+      <map code="0xb788" name="1em"/><!-- HANGUL SYLLABLE RALS -->
+      <map code="0xb789" name="1em"/><!-- HANGUL SYLLABLE RALT -->
+      <map code="0xb78a" name="1em"/><!-- HANGUL SYLLABLE RALP -->
+      <map code="0xb78b" name="1em"/><!-- HANGUL SYLLABLE RALH -->
+      <map code="0xb78c" name="1em"/><!-- HANGUL SYLLABLE RAM -->
+      <map code="0xb78d" name="1em"/><!-- HANGUL SYLLABLE RAB -->
+      <map code="0xb78e" name="1em"/><!-- HANGUL SYLLABLE RABS -->
+      <map code="0xb78f" name="1em"/><!-- HANGUL SYLLABLE RAS -->
+      <map code="0xb790" name="1em"/><!-- HANGUL SYLLABLE RASS -->
+      <map code="0xb791" name="1em"/><!-- HANGUL SYLLABLE RANG -->
+      <map code="0xb792" name="1em"/><!-- HANGUL SYLLABLE RAJ -->
+      <map code="0xb793" name="1em"/><!-- HANGUL SYLLABLE RAC -->
+      <map code="0xb794" name="1em"/><!-- HANGUL SYLLABLE RAK -->
+      <map code="0xb795" name="1em"/><!-- HANGUL SYLLABLE RAT -->
+      <map code="0xb796" name="1em"/><!-- HANGUL SYLLABLE RAP -->
+      <map code="0xb797" name="1em"/><!-- HANGUL SYLLABLE RAH -->
+      <map code="0xb798" name="1em"/><!-- HANGUL SYLLABLE RAE -->
+      <map code="0xb799" name="1em"/><!-- HANGUL SYLLABLE RAEG -->
+      <map code="0xb79a" name="1em"/><!-- HANGUL SYLLABLE RAEGG -->
+      <map code="0xb79b" name="1em"/><!-- HANGUL SYLLABLE RAEGS -->
+      <map code="0xb79c" name="1em"/><!-- HANGUL SYLLABLE RAEN -->
+      <map code="0xb79d" name="1em"/><!-- HANGUL SYLLABLE RAENJ -->
+      <map code="0xb79e" name="1em"/><!-- HANGUL SYLLABLE RAENH -->
+      <map code="0xb79f" name="1em"/><!-- HANGUL SYLLABLE RAED -->
+      <map code="0xb7a0" name="1em"/><!-- HANGUL SYLLABLE RAEL -->
+      <map code="0xb7a1" name="1em"/><!-- HANGUL SYLLABLE RAELG -->
+      <map code="0xb7a2" name="1em"/><!-- HANGUL SYLLABLE RAELM -->
+      <map code="0xb7a3" name="1em"/><!-- HANGUL SYLLABLE RAELB -->
+      <map code="0xb7a4" name="1em"/><!-- HANGUL SYLLABLE RAELS -->
+      <map code="0xb7a5" name="1em"/><!-- HANGUL SYLLABLE RAELT -->
+      <map code="0xb7a6" name="1em"/><!-- HANGUL SYLLABLE RAELP -->
+      <map code="0xb7a7" name="1em"/><!-- HANGUL SYLLABLE RAELH -->
+      <map code="0xb7a8" name="1em"/><!-- HANGUL SYLLABLE RAEM -->
+      <map code="0xb7a9" name="1em"/><!-- HANGUL SYLLABLE RAEB -->
+      <map code="0xb7aa" name="1em"/><!-- HANGUL SYLLABLE RAEBS -->
+      <map code="0xb7ab" name="1em"/><!-- HANGUL SYLLABLE RAES -->
+      <map code="0xb7ac" name="1em"/><!-- HANGUL SYLLABLE RAESS -->
+      <map code="0xb7ad" name="1em"/><!-- HANGUL SYLLABLE RAENG -->
+      <map code="0xb7ae" name="1em"/><!-- HANGUL SYLLABLE RAEJ -->
+      <map code="0xb7af" name="1em"/><!-- HANGUL SYLLABLE RAEC -->
+      <map code="0xb7b0" name="1em"/><!-- HANGUL SYLLABLE RAEK -->
+      <map code="0xb7b1" name="1em"/><!-- HANGUL SYLLABLE RAET -->
+      <map code="0xb7b2" name="1em"/><!-- HANGUL SYLLABLE RAEP -->
+      <map code="0xb7b3" name="1em"/><!-- HANGUL SYLLABLE RAEH -->
+      <map code="0xb7b4" name="1em"/><!-- HANGUL SYLLABLE RYA -->
+      <map code="0xb7b5" name="1em"/><!-- HANGUL SYLLABLE RYAG -->
+      <map code="0xb7b6" name="1em"/><!-- HANGUL SYLLABLE RYAGG -->
+      <map code="0xb7b7" name="1em"/><!-- HANGUL SYLLABLE RYAGS -->
+      <map code="0xb7b8" name="1em"/><!-- HANGUL SYLLABLE RYAN -->
+      <map code="0xb7b9" name="1em"/><!-- HANGUL SYLLABLE RYANJ -->
+      <map code="0xb7ba" name="1em"/><!-- HANGUL SYLLABLE RYANH -->
+      <map code="0xb7bb" name="1em"/><!-- HANGUL SYLLABLE RYAD -->
+      <map code="0xb7bc" name="1em"/><!-- HANGUL SYLLABLE RYAL -->
+      <map code="0xb7bd" name="1em"/><!-- HANGUL SYLLABLE RYALG -->
+      <map code="0xb7be" name="1em"/><!-- HANGUL SYLLABLE RYALM -->
+      <map code="0xb7bf" name="1em"/><!-- HANGUL SYLLABLE RYALB -->
+      <map code="0xb7c0" name="1em"/><!-- HANGUL SYLLABLE RYALS -->
+      <map code="0xb7c1" name="1em"/><!-- HANGUL SYLLABLE RYALT -->
+      <map code="0xb7c2" name="1em"/><!-- HANGUL SYLLABLE RYALP -->
+      <map code="0xb7c3" name="1em"/><!-- HANGUL SYLLABLE RYALH -->
+      <map code="0xb7c4" name="1em"/><!-- HANGUL SYLLABLE RYAM -->
+      <map code="0xb7c5" name="1em"/><!-- HANGUL SYLLABLE RYAB -->
+      <map code="0xb7c6" name="1em"/><!-- HANGUL SYLLABLE RYABS -->
+      <map code="0xb7c7" name="1em"/><!-- HANGUL SYLLABLE RYAS -->
+      <map code="0xb7c8" name="1em"/><!-- HANGUL SYLLABLE RYASS -->
+      <map code="0xb7c9" name="1em"/><!-- HANGUL SYLLABLE RYANG -->
+      <map code="0xb7ca" name="1em"/><!-- HANGUL SYLLABLE RYAJ -->
+      <map code="0xb7cb" name="1em"/><!-- HANGUL SYLLABLE RYAC -->
+      <map code="0xb7cc" name="1em"/><!-- HANGUL SYLLABLE RYAK -->
+      <map code="0xb7cd" name="1em"/><!-- HANGUL SYLLABLE RYAT -->
+      <map code="0xb7ce" name="1em"/><!-- HANGUL SYLLABLE RYAP -->
+      <map code="0xb7cf" name="1em"/><!-- HANGUL SYLLABLE RYAH -->
+      <map code="0xb7d0" name="1em"/><!-- HANGUL SYLLABLE RYAE -->
+      <map code="0xb7d1" name="1em"/><!-- HANGUL SYLLABLE RYAEG -->
+      <map code="0xb7d2" name="1em"/><!-- HANGUL SYLLABLE RYAEGG -->
+      <map code="0xb7d3" name="1em"/><!-- HANGUL SYLLABLE RYAEGS -->
+      <map code="0xb7d4" name="1em"/><!-- HANGUL SYLLABLE RYAEN -->
+      <map code="0xb7d5" name="1em"/><!-- HANGUL SYLLABLE RYAENJ -->
+      <map code="0xb7d6" name="1em"/><!-- HANGUL SYLLABLE RYAENH -->
+      <map code="0xb7d7" name="1em"/><!-- HANGUL SYLLABLE RYAED -->
+      <map code="0xb7d8" name="1em"/><!-- HANGUL SYLLABLE RYAEL -->
+      <map code="0xb7d9" name="1em"/><!-- HANGUL SYLLABLE RYAELG -->
+      <map code="0xb7da" name="1em"/><!-- HANGUL SYLLABLE RYAELM -->
+      <map code="0xb7db" name="1em"/><!-- HANGUL SYLLABLE RYAELB -->
+      <map code="0xb7dc" name="1em"/><!-- HANGUL SYLLABLE RYAELS -->
+      <map code="0xb7dd" name="1em"/><!-- HANGUL SYLLABLE RYAELT -->
+      <map code="0xb7de" name="1em"/><!-- HANGUL SYLLABLE RYAELP -->
+      <map code="0xb7df" name="1em"/><!-- HANGUL SYLLABLE RYAELH -->
+      <map code="0xb7e0" name="1em"/><!-- HANGUL SYLLABLE RYAEM -->
+      <map code="0xb7e1" name="1em"/><!-- HANGUL SYLLABLE RYAEB -->
+      <map code="0xb7e2" name="1em"/><!-- HANGUL SYLLABLE RYAEBS -->
+      <map code="0xb7e3" name="1em"/><!-- HANGUL SYLLABLE RYAES -->
+      <map code="0xb7e4" name="1em"/><!-- HANGUL SYLLABLE RYAESS -->
+      <map code="0xb7e5" name="1em"/><!-- HANGUL SYLLABLE RYAENG -->
+      <map code="0xb7e6" name="1em"/><!-- HANGUL SYLLABLE RYAEJ -->
+      <map code="0xb7e7" name="1em"/><!-- HANGUL SYLLABLE RYAEC -->
+      <map code="0xb7e8" name="1em"/><!-- HANGUL SYLLABLE RYAEK -->
+      <map code="0xb7e9" name="1em"/><!-- HANGUL SYLLABLE RYAET -->
+      <map code="0xb7ea" name="1em"/><!-- HANGUL SYLLABLE RYAEP -->
+      <map code="0xb7eb" name="1em"/><!-- HANGUL SYLLABLE RYAEH -->
+      <map code="0xb7ec" name="1em"/><!-- HANGUL SYLLABLE REO -->
+      <map code="0xb7ed" name="1em"/><!-- HANGUL SYLLABLE REOG -->
+      <map code="0xb7ee" name="1em"/><!-- HANGUL SYLLABLE REOGG -->
+      <map code="0xb7ef" name="1em"/><!-- HANGUL SYLLABLE REOGS -->
+      <map code="0xb7f0" name="1em"/><!-- HANGUL SYLLABLE REON -->
+      <map code="0xb7f1" name="1em"/><!-- HANGUL SYLLABLE REONJ -->
+      <map code="0xb7f2" name="1em"/><!-- HANGUL SYLLABLE REONH -->
+      <map code="0xb7f3" name="1em"/><!-- HANGUL SYLLABLE REOD -->
+      <map code="0xb7f4" name="1em"/><!-- HANGUL SYLLABLE REOL -->
+      <map code="0xb7f5" name="1em"/><!-- HANGUL SYLLABLE REOLG -->
+      <map code="0xb7f6" name="1em"/><!-- HANGUL SYLLABLE REOLM -->
+      <map code="0xb7f7" name="1em"/><!-- HANGUL SYLLABLE REOLB -->
+      <map code="0xb7f8" name="1em"/><!-- HANGUL SYLLABLE REOLS -->
+      <map code="0xb7f9" name="1em"/><!-- HANGUL SYLLABLE REOLT -->
+      <map code="0xb7fa" name="1em"/><!-- HANGUL SYLLABLE REOLP -->
+      <map code="0xb7fb" name="1em"/><!-- HANGUL SYLLABLE REOLH -->
+      <map code="0xb7fc" name="1em"/><!-- HANGUL SYLLABLE REOM -->
+      <map code="0xb7fd" name="1em"/><!-- HANGUL SYLLABLE REOB -->
+      <map code="0xb7fe" name="1em"/><!-- HANGUL SYLLABLE REOBS -->
+      <map code="0xb7ff" name="1em"/><!-- HANGUL SYLLABLE REOS -->
+      <map code="0xb800" name="1em"/><!-- HANGUL SYLLABLE REOSS -->
+      <map code="0xb801" name="1em"/><!-- HANGUL SYLLABLE REONG -->
+      <map code="0xb802" name="1em"/><!-- HANGUL SYLLABLE REOJ -->
+      <map code="0xb803" name="1em"/><!-- HANGUL SYLLABLE REOC -->
+      <map code="0xb804" name="1em"/><!-- HANGUL SYLLABLE REOK -->
+      <map code="0xb805" name="1em"/><!-- HANGUL SYLLABLE REOT -->
+      <map code="0xb806" name="1em"/><!-- HANGUL SYLLABLE REOP -->
+      <map code="0xb807" name="1em"/><!-- HANGUL SYLLABLE REOH -->
+      <map code="0xb808" name="1em"/><!-- HANGUL SYLLABLE RE -->
+      <map code="0xb809" name="1em"/><!-- HANGUL SYLLABLE REG -->
+      <map code="0xb80a" name="1em"/><!-- HANGUL SYLLABLE REGG -->
+      <map code="0xb80b" name="1em"/><!-- HANGUL SYLLABLE REGS -->
+      <map code="0xb80c" name="1em"/><!-- HANGUL SYLLABLE REN -->
+      <map code="0xb80d" name="1em"/><!-- HANGUL SYLLABLE RENJ -->
+      <map code="0xb80e" name="1em"/><!-- HANGUL SYLLABLE RENH -->
+      <map code="0xb80f" name="1em"/><!-- HANGUL SYLLABLE RED -->
+      <map code="0xb810" name="1em"/><!-- HANGUL SYLLABLE REL -->
+      <map code="0xb811" name="1em"/><!-- HANGUL SYLLABLE RELG -->
+      <map code="0xb812" name="1em"/><!-- HANGUL SYLLABLE RELM -->
+      <map code="0xb813" name="1em"/><!-- HANGUL SYLLABLE RELB -->
+      <map code="0xb814" name="1em"/><!-- HANGUL SYLLABLE RELS -->
+      <map code="0xb815" name="1em"/><!-- HANGUL SYLLABLE RELT -->
+      <map code="0xb816" name="1em"/><!-- HANGUL SYLLABLE RELP -->
+      <map code="0xb817" name="1em"/><!-- HANGUL SYLLABLE RELH -->
+      <map code="0xb818" name="1em"/><!-- HANGUL SYLLABLE REM -->
+      <map code="0xb819" name="1em"/><!-- HANGUL SYLLABLE REB -->
+      <map code="0xb81a" name="1em"/><!-- HANGUL SYLLABLE REBS -->
+      <map code="0xb81b" name="1em"/><!-- HANGUL SYLLABLE RES -->
+      <map code="0xb81c" name="1em"/><!-- HANGUL SYLLABLE RESS -->
+      <map code="0xb81d" name="1em"/><!-- HANGUL SYLLABLE RENG -->
+      <map code="0xb81e" name="1em"/><!-- HANGUL SYLLABLE REJ -->
+      <map code="0xb81f" name="1em"/><!-- HANGUL SYLLABLE REC -->
+      <map code="0xb820" name="1em"/><!-- HANGUL SYLLABLE REK -->
+      <map code="0xb821" name="1em"/><!-- HANGUL SYLLABLE RET -->
+      <map code="0xb822" name="1em"/><!-- HANGUL SYLLABLE REP -->
+      <map code="0xb823" name="1em"/><!-- HANGUL SYLLABLE REH -->
+      <map code="0xb824" name="1em"/><!-- HANGUL SYLLABLE RYEO -->
+      <map code="0xb825" name="1em"/><!-- HANGUL SYLLABLE RYEOG -->
+      <map code="0xb826" name="1em"/><!-- HANGUL SYLLABLE RYEOGG -->
+      <map code="0xb827" name="1em"/><!-- HANGUL SYLLABLE RYEOGS -->
+      <map code="0xb828" name="1em"/><!-- HANGUL SYLLABLE RYEON -->
+      <map code="0xb829" name="1em"/><!-- HANGUL SYLLABLE RYEONJ -->
+      <map code="0xb82a" name="1em"/><!-- HANGUL SYLLABLE RYEONH -->
+      <map code="0xb82b" name="1em"/><!-- HANGUL SYLLABLE RYEOD -->
+      <map code="0xb82c" name="1em"/><!-- HANGUL SYLLABLE RYEOL -->
+      <map code="0xb82d" name="1em"/><!-- HANGUL SYLLABLE RYEOLG -->
+      <map code="0xb82e" name="1em"/><!-- HANGUL SYLLABLE RYEOLM -->
+      <map code="0xb82f" name="1em"/><!-- HANGUL SYLLABLE RYEOLB -->
+      <map code="0xb830" name="1em"/><!-- HANGUL SYLLABLE RYEOLS -->
+      <map code="0xb831" name="1em"/><!-- HANGUL SYLLABLE RYEOLT -->
+      <map code="0xb832" name="1em"/><!-- HANGUL SYLLABLE RYEOLP -->
+      <map code="0xb833" name="1em"/><!-- HANGUL SYLLABLE RYEOLH -->
+      <map code="0xb834" name="1em"/><!-- HANGUL SYLLABLE RYEOM -->
+      <map code="0xb835" name="1em"/><!-- HANGUL SYLLABLE RYEOB -->
+      <map code="0xb836" name="1em"/><!-- HANGUL SYLLABLE RYEOBS -->
+      <map code="0xb837" name="1em"/><!-- HANGUL SYLLABLE RYEOS -->
+      <map code="0xb838" name="1em"/><!-- HANGUL SYLLABLE RYEOSS -->
+      <map code="0xb839" name="1em"/><!-- HANGUL SYLLABLE RYEONG -->
+      <map code="0xb83a" name="1em"/><!-- HANGUL SYLLABLE RYEOJ -->
+      <map code="0xb83b" name="1em"/><!-- HANGUL SYLLABLE RYEOC -->
+      <map code="0xb83c" name="1em"/><!-- HANGUL SYLLABLE RYEOK -->
+      <map code="0xb83d" name="1em"/><!-- HANGUL SYLLABLE RYEOT -->
+      <map code="0xb83e" name="1em"/><!-- HANGUL SYLLABLE RYEOP -->
+      <map code="0xb83f" name="1em"/><!-- HANGUL SYLLABLE RYEOH -->
+      <map code="0xb840" name="1em"/><!-- HANGUL SYLLABLE RYE -->
+      <map code="0xb841" name="1em"/><!-- HANGUL SYLLABLE RYEG -->
+      <map code="0xb842" name="1em"/><!-- HANGUL SYLLABLE RYEGG -->
+      <map code="0xb843" name="1em"/><!-- HANGUL SYLLABLE RYEGS -->
+      <map code="0xb844" name="1em"/><!-- HANGUL SYLLABLE RYEN -->
+      <map code="0xb845" name="1em"/><!-- HANGUL SYLLABLE RYENJ -->
+      <map code="0xb846" name="1em"/><!-- HANGUL SYLLABLE RYENH -->
+      <map code="0xb847" name="1em"/><!-- HANGUL SYLLABLE RYED -->
+      <map code="0xb848" name="1em"/><!-- HANGUL SYLLABLE RYEL -->
+      <map code="0xb849" name="1em"/><!-- HANGUL SYLLABLE RYELG -->
+      <map code="0xb84a" name="1em"/><!-- HANGUL SYLLABLE RYELM -->
+      <map code="0xb84b" name="1em"/><!-- HANGUL SYLLABLE RYELB -->
+      <map code="0xb84c" name="1em"/><!-- HANGUL SYLLABLE RYELS -->
+      <map code="0xb84d" name="1em"/><!-- HANGUL SYLLABLE RYELT -->
+      <map code="0xb84e" name="1em"/><!-- HANGUL SYLLABLE RYELP -->
+      <map code="0xb84f" name="1em"/><!-- HANGUL SYLLABLE RYELH -->
+      <map code="0xb850" name="1em"/><!-- HANGUL SYLLABLE RYEM -->
+      <map code="0xb851" name="1em"/><!-- HANGUL SYLLABLE RYEB -->
+      <map code="0xb852" name="1em"/><!-- HANGUL SYLLABLE RYEBS -->
+      <map code="0xb853" name="1em"/><!-- HANGUL SYLLABLE RYES -->
+      <map code="0xb854" name="1em"/><!-- HANGUL SYLLABLE RYESS -->
+      <map code="0xb855" name="1em"/><!-- HANGUL SYLLABLE RYENG -->
+      <map code="0xb856" name="1em"/><!-- HANGUL SYLLABLE RYEJ -->
+      <map code="0xb857" name="1em"/><!-- HANGUL SYLLABLE RYEC -->
+      <map code="0xb858" name="1em"/><!-- HANGUL SYLLABLE RYEK -->
+      <map code="0xb859" name="1em"/><!-- HANGUL SYLLABLE RYET -->
+      <map code="0xb85a" name="1em"/><!-- HANGUL SYLLABLE RYEP -->
+      <map code="0xb85b" name="1em"/><!-- HANGUL SYLLABLE RYEH -->
+      <map code="0xb85c" name="1em"/><!-- HANGUL SYLLABLE RO -->
+      <map code="0xb85d" name="1em"/><!-- HANGUL SYLLABLE ROG -->
+      <map code="0xb85e" name="1em"/><!-- HANGUL SYLLABLE ROGG -->
+      <map code="0xb85f" name="1em"/><!-- HANGUL SYLLABLE ROGS -->
+      <map code="0xb860" name="1em"/><!-- HANGUL SYLLABLE RON -->
+      <map code="0xb861" name="1em"/><!-- HANGUL SYLLABLE RONJ -->
+      <map code="0xb862" name="1em"/><!-- HANGUL SYLLABLE RONH -->
+      <map code="0xb863" name="1em"/><!-- HANGUL SYLLABLE ROD -->
+      <map code="0xb864" name="1em"/><!-- HANGUL SYLLABLE ROL -->
+      <map code="0xb865" name="1em"/><!-- HANGUL SYLLABLE ROLG -->
+      <map code="0xb866" name="1em"/><!-- HANGUL SYLLABLE ROLM -->
+      <map code="0xb867" name="1em"/><!-- HANGUL SYLLABLE ROLB -->
+      <map code="0xb868" name="1em"/><!-- HANGUL SYLLABLE ROLS -->
+      <map code="0xb869" name="1em"/><!-- HANGUL SYLLABLE ROLT -->
+      <map code="0xb86a" name="1em"/><!-- HANGUL SYLLABLE ROLP -->
+      <map code="0xb86b" name="1em"/><!-- HANGUL SYLLABLE ROLH -->
+      <map code="0xb86c" name="1em"/><!-- HANGUL SYLLABLE ROM -->
+      <map code="0xb86d" name="1em"/><!-- HANGUL SYLLABLE ROB -->
+      <map code="0xb86e" name="1em"/><!-- HANGUL SYLLABLE ROBS -->
+      <map code="0xb86f" name="1em"/><!-- HANGUL SYLLABLE ROS -->
+      <map code="0xb870" name="1em"/><!-- HANGUL SYLLABLE ROSS -->
+      <map code="0xb871" name="1em"/><!-- HANGUL SYLLABLE RONG -->
+      <map code="0xb872" name="1em"/><!-- HANGUL SYLLABLE ROJ -->
+      <map code="0xb873" name="1em"/><!-- HANGUL SYLLABLE ROC -->
+      <map code="0xb874" name="1em"/><!-- HANGUL SYLLABLE ROK -->
+      <map code="0xb875" name="1em"/><!-- HANGUL SYLLABLE ROT -->
+      <map code="0xb876" name="1em"/><!-- HANGUL SYLLABLE ROP -->
+      <map code="0xb877" name="1em"/><!-- HANGUL SYLLABLE ROH -->
+      <map code="0xb878" name="1em"/><!-- HANGUL SYLLABLE RWA -->
+      <map code="0xb879" name="1em"/><!-- HANGUL SYLLABLE RWAG -->
+      <map code="0xb87a" name="1em"/><!-- HANGUL SYLLABLE RWAGG -->
+      <map code="0xb87b" name="1em"/><!-- HANGUL SYLLABLE RWAGS -->
+      <map code="0xb87c" name="1em"/><!-- HANGUL SYLLABLE RWAN -->
+      <map code="0xb87d" name="1em"/><!-- HANGUL SYLLABLE RWANJ -->
+      <map code="0xb87e" name="1em"/><!-- HANGUL SYLLABLE RWANH -->
+      <map code="0xb87f" name="1em"/><!-- HANGUL SYLLABLE RWAD -->
+      <map code="0xb880" name="1em"/><!-- HANGUL SYLLABLE RWAL -->
+      <map code="0xb881" name="1em"/><!-- HANGUL SYLLABLE RWALG -->
+      <map code="0xb882" name="1em"/><!-- HANGUL SYLLABLE RWALM -->
+      <map code="0xb883" name="1em"/><!-- HANGUL SYLLABLE RWALB -->
+      <map code="0xb884" name="1em"/><!-- HANGUL SYLLABLE RWALS -->
+      <map code="0xb885" name="1em"/><!-- HANGUL SYLLABLE RWALT -->
+      <map code="0xb886" name="1em"/><!-- HANGUL SYLLABLE RWALP -->
+      <map code="0xb887" name="1em"/><!-- HANGUL SYLLABLE RWALH -->
+      <map code="0xb888" name="1em"/><!-- HANGUL SYLLABLE RWAM -->
+      <map code="0xb889" name="1em"/><!-- HANGUL SYLLABLE RWAB -->
+      <map code="0xb88a" name="1em"/><!-- HANGUL SYLLABLE RWABS -->
+      <map code="0xb88b" name="1em"/><!-- HANGUL SYLLABLE RWAS -->
+      <map code="0xb88c" name="1em"/><!-- HANGUL SYLLABLE RWASS -->
+      <map code="0xb88d" name="1em"/><!-- HANGUL SYLLABLE RWANG -->
+      <map code="0xb88e" name="1em"/><!-- HANGUL SYLLABLE RWAJ -->
+      <map code="0xb88f" name="1em"/><!-- HANGUL SYLLABLE RWAC -->
+      <map code="0xb890" name="1em"/><!-- HANGUL SYLLABLE RWAK -->
+      <map code="0xb891" name="1em"/><!-- HANGUL SYLLABLE RWAT -->
+      <map code="0xb892" name="1em"/><!-- HANGUL SYLLABLE RWAP -->
+      <map code="0xb893" name="1em"/><!-- HANGUL SYLLABLE RWAH -->
+      <map code="0xb894" name="1em"/><!-- HANGUL SYLLABLE RWAE -->
+      <map code="0xb895" name="1em"/><!-- HANGUL SYLLABLE RWAEG -->
+      <map code="0xb896" name="1em"/><!-- HANGUL SYLLABLE RWAEGG -->
+      <map code="0xb897" name="1em"/><!-- HANGUL SYLLABLE RWAEGS -->
+      <map code="0xb898" name="1em"/><!-- HANGUL SYLLABLE RWAEN -->
+      <map code="0xb899" name="1em"/><!-- HANGUL SYLLABLE RWAENJ -->
+      <map code="0xb89a" name="1em"/><!-- HANGUL SYLLABLE RWAENH -->
+      <map code="0xb89b" name="1em"/><!-- HANGUL SYLLABLE RWAED -->
+      <map code="0xb89c" name="1em"/><!-- HANGUL SYLLABLE RWAEL -->
+      <map code="0xb89d" name="1em"/><!-- HANGUL SYLLABLE RWAELG -->
+      <map code="0xb89e" name="1em"/><!-- HANGUL SYLLABLE RWAELM -->
+      <map code="0xb89f" name="1em"/><!-- HANGUL SYLLABLE RWAELB -->
+      <map code="0xb8a0" name="1em"/><!-- HANGUL SYLLABLE RWAELS -->
+      <map code="0xb8a1" name="1em"/><!-- HANGUL SYLLABLE RWAELT -->
+      <map code="0xb8a2" name="1em"/><!-- HANGUL SYLLABLE RWAELP -->
+      <map code="0xb8a3" name="1em"/><!-- HANGUL SYLLABLE RWAELH -->
+      <map code="0xb8a4" name="1em"/><!-- HANGUL SYLLABLE RWAEM -->
+      <map code="0xb8a5" name="1em"/><!-- HANGUL SYLLABLE RWAEB -->
+      <map code="0xb8a6" name="1em"/><!-- HANGUL SYLLABLE RWAEBS -->
+      <map code="0xb8a7" name="1em"/><!-- HANGUL SYLLABLE RWAES -->
+      <map code="0xb8a8" name="1em"/><!-- HANGUL SYLLABLE RWAESS -->
+      <map code="0xb8a9" name="1em"/><!-- HANGUL SYLLABLE RWAENG -->
+      <map code="0xb8aa" name="1em"/><!-- HANGUL SYLLABLE RWAEJ -->
+      <map code="0xb8ab" name="1em"/><!-- HANGUL SYLLABLE RWAEC -->
+      <map code="0xb8ac" name="1em"/><!-- HANGUL SYLLABLE RWAEK -->
+      <map code="0xb8ad" name="1em"/><!-- HANGUL SYLLABLE RWAET -->
+      <map code="0xb8ae" name="1em"/><!-- HANGUL SYLLABLE RWAEP -->
+      <map code="0xb8af" name="1em"/><!-- HANGUL SYLLABLE RWAEH -->
+      <map code="0xb8b0" name="1em"/><!-- HANGUL SYLLABLE ROE -->
+      <map code="0xb8b1" name="1em"/><!-- HANGUL SYLLABLE ROEG -->
+      <map code="0xb8b2" name="1em"/><!-- HANGUL SYLLABLE ROEGG -->
+      <map code="0xb8b3" name="1em"/><!-- HANGUL SYLLABLE ROEGS -->
+      <map code="0xb8b4" name="1em"/><!-- HANGUL SYLLABLE ROEN -->
+      <map code="0xb8b5" name="1em"/><!-- HANGUL SYLLABLE ROENJ -->
+      <map code="0xb8b6" name="1em"/><!-- HANGUL SYLLABLE ROENH -->
+      <map code="0xb8b7" name="1em"/><!-- HANGUL SYLLABLE ROED -->
+      <map code="0xb8b8" name="1em"/><!-- HANGUL SYLLABLE ROEL -->
+      <map code="0xb8b9" name="1em"/><!-- HANGUL SYLLABLE ROELG -->
+      <map code="0xb8ba" name="1em"/><!-- HANGUL SYLLABLE ROELM -->
+      <map code="0xb8bb" name="1em"/><!-- HANGUL SYLLABLE ROELB -->
+      <map code="0xb8bc" name="1em"/><!-- HANGUL SYLLABLE ROELS -->
+      <map code="0xb8bd" name="1em"/><!-- HANGUL SYLLABLE ROELT -->
+      <map code="0xb8be" name="1em"/><!-- HANGUL SYLLABLE ROELP -->
+      <map code="0xb8bf" name="1em"/><!-- HANGUL SYLLABLE ROELH -->
+      <map code="0xb8c0" name="1em"/><!-- HANGUL SYLLABLE ROEM -->
+      <map code="0xb8c1" name="1em"/><!-- HANGUL SYLLABLE ROEB -->
+      <map code="0xb8c2" name="1em"/><!-- HANGUL SYLLABLE ROEBS -->
+      <map code="0xb8c3" name="1em"/><!-- HANGUL SYLLABLE ROES -->
+      <map code="0xb8c4" name="1em"/><!-- HANGUL SYLLABLE ROESS -->
+      <map code="0xb8c5" name="1em"/><!-- HANGUL SYLLABLE ROENG -->
+      <map code="0xb8c6" name="1em"/><!-- HANGUL SYLLABLE ROEJ -->
+      <map code="0xb8c7" name="1em"/><!-- HANGUL SYLLABLE ROEC -->
+      <map code="0xb8c8" name="1em"/><!-- HANGUL SYLLABLE ROEK -->
+      <map code="0xb8c9" name="1em"/><!-- HANGUL SYLLABLE ROET -->
+      <map code="0xb8ca" name="1em"/><!-- HANGUL SYLLABLE ROEP -->
+      <map code="0xb8cb" name="1em"/><!-- HANGUL SYLLABLE ROEH -->
+      <map code="0xb8cc" name="1em"/><!-- HANGUL SYLLABLE RYO -->
+      <map code="0xb8cd" name="1em"/><!-- HANGUL SYLLABLE RYOG -->
+      <map code="0xb8ce" name="1em"/><!-- HANGUL SYLLABLE RYOGG -->
+      <map code="0xb8cf" name="1em"/><!-- HANGUL SYLLABLE RYOGS -->
+      <map code="0xb8d0" name="1em"/><!-- HANGUL SYLLABLE RYON -->
+      <map code="0xb8d1" name="1em"/><!-- HANGUL SYLLABLE RYONJ -->
+      <map code="0xb8d2" name="1em"/><!-- HANGUL SYLLABLE RYONH -->
+      <map code="0xb8d3" name="1em"/><!-- HANGUL SYLLABLE RYOD -->
+      <map code="0xb8d4" name="1em"/><!-- HANGUL SYLLABLE RYOL -->
+      <map code="0xb8d5" name="1em"/><!-- HANGUL SYLLABLE RYOLG -->
+      <map code="0xb8d6" name="1em"/><!-- HANGUL SYLLABLE RYOLM -->
+      <map code="0xb8d7" name="1em"/><!-- HANGUL SYLLABLE RYOLB -->
+      <map code="0xb8d8" name="1em"/><!-- HANGUL SYLLABLE RYOLS -->
+      <map code="0xb8d9" name="1em"/><!-- HANGUL SYLLABLE RYOLT -->
+      <map code="0xb8da" name="1em"/><!-- HANGUL SYLLABLE RYOLP -->
+      <map code="0xb8db" name="1em"/><!-- HANGUL SYLLABLE RYOLH -->
+      <map code="0xb8dc" name="1em"/><!-- HANGUL SYLLABLE RYOM -->
+      <map code="0xb8dd" name="1em"/><!-- HANGUL SYLLABLE RYOB -->
+      <map code="0xb8de" name="1em"/><!-- HANGUL SYLLABLE RYOBS -->
+      <map code="0xb8df" name="1em"/><!-- HANGUL SYLLABLE RYOS -->
+      <map code="0xb8e0" name="1em"/><!-- HANGUL SYLLABLE RYOSS -->
+      <map code="0xb8e1" name="1em"/><!-- HANGUL SYLLABLE RYONG -->
+      <map code="0xb8e2" name="1em"/><!-- HANGUL SYLLABLE RYOJ -->
+      <map code="0xb8e3" name="1em"/><!-- HANGUL SYLLABLE RYOC -->
+      <map code="0xb8e4" name="1em"/><!-- HANGUL SYLLABLE RYOK -->
+      <map code="0xb8e5" name="1em"/><!-- HANGUL SYLLABLE RYOT -->
+      <map code="0xb8e6" name="1em"/><!-- HANGUL SYLLABLE RYOP -->
+      <map code="0xb8e7" name="1em"/><!-- HANGUL SYLLABLE RYOH -->
+      <map code="0xb8e8" name="1em"/><!-- HANGUL SYLLABLE RU -->
+      <map code="0xb8e9" name="1em"/><!-- HANGUL SYLLABLE RUG -->
+      <map code="0xb8ea" name="1em"/><!-- HANGUL SYLLABLE RUGG -->
+      <map code="0xb8eb" name="1em"/><!-- HANGUL SYLLABLE RUGS -->
+      <map code="0xb8ec" name="1em"/><!-- HANGUL SYLLABLE RUN -->
+      <map code="0xb8ed" name="1em"/><!-- HANGUL SYLLABLE RUNJ -->
+      <map code="0xb8ee" name="1em"/><!-- HANGUL SYLLABLE RUNH -->
+      <map code="0xb8ef" name="1em"/><!-- HANGUL SYLLABLE RUD -->
+      <map code="0xb8f0" name="1em"/><!-- HANGUL SYLLABLE RUL -->
+      <map code="0xb8f1" name="1em"/><!-- HANGUL SYLLABLE RULG -->
+      <map code="0xb8f2" name="1em"/><!-- HANGUL SYLLABLE RULM -->
+      <map code="0xb8f3" name="1em"/><!-- HANGUL SYLLABLE RULB -->
+      <map code="0xb8f4" name="1em"/><!-- HANGUL SYLLABLE RULS -->
+      <map code="0xb8f5" name="1em"/><!-- HANGUL SYLLABLE RULT -->
+      <map code="0xb8f6" name="1em"/><!-- HANGUL SYLLABLE RULP -->
+      <map code="0xb8f7" name="1em"/><!-- HANGUL SYLLABLE RULH -->
+      <map code="0xb8f8" name="1em"/><!-- HANGUL SYLLABLE RUM -->
+      <map code="0xb8f9" name="1em"/><!-- HANGUL SYLLABLE RUB -->
+      <map code="0xb8fa" name="1em"/><!-- HANGUL SYLLABLE RUBS -->
+      <map code="0xb8fb" name="1em"/><!-- HANGUL SYLLABLE RUS -->
+      <map code="0xb8fc" name="1em"/><!-- HANGUL SYLLABLE RUSS -->
+      <map code="0xb8fd" name="1em"/><!-- HANGUL SYLLABLE RUNG -->
+      <map code="0xb8fe" name="1em"/><!-- HANGUL SYLLABLE RUJ -->
+      <map code="0xb8ff" name="1em"/><!-- HANGUL SYLLABLE RUC -->
+      <map code="0xb900" name="1em"/><!-- HANGUL SYLLABLE RUK -->
+      <map code="0xb901" name="1em"/><!-- HANGUL SYLLABLE RUT -->
+      <map code="0xb902" name="1em"/><!-- HANGUL SYLLABLE RUP -->
+      <map code="0xb903" name="1em"/><!-- HANGUL SYLLABLE RUH -->
+      <map code="0xb904" name="1em"/><!-- HANGUL SYLLABLE RWEO -->
+      <map code="0xb905" name="1em"/><!-- HANGUL SYLLABLE RWEOG -->
+      <map code="0xb906" name="1em"/><!-- HANGUL SYLLABLE RWEOGG -->
+      <map code="0xb907" name="1em"/><!-- HANGUL SYLLABLE RWEOGS -->
+      <map code="0xb908" name="1em"/><!-- HANGUL SYLLABLE RWEON -->
+      <map code="0xb909" name="1em"/><!-- HANGUL SYLLABLE RWEONJ -->
+      <map code="0xb90a" name="1em"/><!-- HANGUL SYLLABLE RWEONH -->
+      <map code="0xb90b" name="1em"/><!-- HANGUL SYLLABLE RWEOD -->
+      <map code="0xb90c" name="1em"/><!-- HANGUL SYLLABLE RWEOL -->
+      <map code="0xb90d" name="1em"/><!-- HANGUL SYLLABLE RWEOLG -->
+      <map code="0xb90e" name="1em"/><!-- HANGUL SYLLABLE RWEOLM -->
+      <map code="0xb90f" name="1em"/><!-- HANGUL SYLLABLE RWEOLB -->
+      <map code="0xb910" name="1em"/><!-- HANGUL SYLLABLE RWEOLS -->
+      <map code="0xb911" name="1em"/><!-- HANGUL SYLLABLE RWEOLT -->
+      <map code="0xb912" name="1em"/><!-- HANGUL SYLLABLE RWEOLP -->
+      <map code="0xb913" name="1em"/><!-- HANGUL SYLLABLE RWEOLH -->
+      <map code="0xb914" name="1em"/><!-- HANGUL SYLLABLE RWEOM -->
+      <map code="0xb915" name="1em"/><!-- HANGUL SYLLABLE RWEOB -->
+      <map code="0xb916" name="1em"/><!-- HANGUL SYLLABLE RWEOBS -->
+      <map code="0xb917" name="1em"/><!-- HANGUL SYLLABLE RWEOS -->
+      <map code="0xb918" name="1em"/><!-- HANGUL SYLLABLE RWEOSS -->
+      <map code="0xb919" name="1em"/><!-- HANGUL SYLLABLE RWEONG -->
+      <map code="0xb91a" name="1em"/><!-- HANGUL SYLLABLE RWEOJ -->
+      <map code="0xb91b" name="1em"/><!-- HANGUL SYLLABLE RWEOC -->
+      <map code="0xb91c" name="1em"/><!-- HANGUL SYLLABLE RWEOK -->
+      <map code="0xb91d" name="1em"/><!-- HANGUL SYLLABLE RWEOT -->
+      <map code="0xb91e" name="1em"/><!-- HANGUL SYLLABLE RWEOP -->
+      <map code="0xb91f" name="1em"/><!-- HANGUL SYLLABLE RWEOH -->
+      <map code="0xb920" name="1em"/><!-- HANGUL SYLLABLE RWE -->
+      <map code="0xb921" name="1em"/><!-- HANGUL SYLLABLE RWEG -->
+      <map code="0xb922" name="1em"/><!-- HANGUL SYLLABLE RWEGG -->
+      <map code="0xb923" name="1em"/><!-- HANGUL SYLLABLE RWEGS -->
+      <map code="0xb924" name="1em"/><!-- HANGUL SYLLABLE RWEN -->
+      <map code="0xb925" name="1em"/><!-- HANGUL SYLLABLE RWENJ -->
+      <map code="0xb926" name="1em"/><!-- HANGUL SYLLABLE RWENH -->
+      <map code="0xb927" name="1em"/><!-- HANGUL SYLLABLE RWED -->
+      <map code="0xb928" name="1em"/><!-- HANGUL SYLLABLE RWEL -->
+      <map code="0xb929" name="1em"/><!-- HANGUL SYLLABLE RWELG -->
+      <map code="0xb92a" name="1em"/><!-- HANGUL SYLLABLE RWELM -->
+      <map code="0xb92b" name="1em"/><!-- HANGUL SYLLABLE RWELB -->
+      <map code="0xb92c" name="1em"/><!-- HANGUL SYLLABLE RWELS -->
+      <map code="0xb92d" name="1em"/><!-- HANGUL SYLLABLE RWELT -->
+      <map code="0xb92e" name="1em"/><!-- HANGUL SYLLABLE RWELP -->
+      <map code="0xb92f" name="1em"/><!-- HANGUL SYLLABLE RWELH -->
+      <map code="0xb930" name="1em"/><!-- HANGUL SYLLABLE RWEM -->
+      <map code="0xb931" name="1em"/><!-- HANGUL SYLLABLE RWEB -->
+      <map code="0xb932" name="1em"/><!-- HANGUL SYLLABLE RWEBS -->
+      <map code="0xb933" name="1em"/><!-- HANGUL SYLLABLE RWES -->
+      <map code="0xb934" name="1em"/><!-- HANGUL SYLLABLE RWESS -->
+      <map code="0xb935" name="1em"/><!-- HANGUL SYLLABLE RWENG -->
+      <map code="0xb936" name="1em"/><!-- HANGUL SYLLABLE RWEJ -->
+      <map code="0xb937" name="1em"/><!-- HANGUL SYLLABLE RWEC -->
+      <map code="0xb938" name="1em"/><!-- HANGUL SYLLABLE RWEK -->
+      <map code="0xb939" name="1em"/><!-- HANGUL SYLLABLE RWET -->
+      <map code="0xb93a" name="1em"/><!-- HANGUL SYLLABLE RWEP -->
+      <map code="0xb93b" name="1em"/><!-- HANGUL SYLLABLE RWEH -->
+      <map code="0xb93c" name="1em"/><!-- HANGUL SYLLABLE RWI -->
+      <map code="0xb93d" name="1em"/><!-- HANGUL SYLLABLE RWIG -->
+      <map code="0xb93e" name="1em"/><!-- HANGUL SYLLABLE RWIGG -->
+      <map code="0xb93f" name="1em"/><!-- HANGUL SYLLABLE RWIGS -->
+      <map code="0xb940" name="1em"/><!-- HANGUL SYLLABLE RWIN -->
+      <map code="0xb941" name="1em"/><!-- HANGUL SYLLABLE RWINJ -->
+      <map code="0xb942" name="1em"/><!-- HANGUL SYLLABLE RWINH -->
+      <map code="0xb943" name="1em"/><!-- HANGUL SYLLABLE RWID -->
+      <map code="0xb944" name="1em"/><!-- HANGUL SYLLABLE RWIL -->
+      <map code="0xb945" name="1em"/><!-- HANGUL SYLLABLE RWILG -->
+      <map code="0xb946" name="1em"/><!-- HANGUL SYLLABLE RWILM -->
+      <map code="0xb947" name="1em"/><!-- HANGUL SYLLABLE RWILB -->
+      <map code="0xb948" name="1em"/><!-- HANGUL SYLLABLE RWILS -->
+      <map code="0xb949" name="1em"/><!-- HANGUL SYLLABLE RWILT -->
+      <map code="0xb94a" name="1em"/><!-- HANGUL SYLLABLE RWILP -->
+      <map code="0xb94b" name="1em"/><!-- HANGUL SYLLABLE RWILH -->
+      <map code="0xb94c" name="1em"/><!-- HANGUL SYLLABLE RWIM -->
+      <map code="0xb94d" name="1em"/><!-- HANGUL SYLLABLE RWIB -->
+      <map code="0xb94e" name="1em"/><!-- HANGUL SYLLABLE RWIBS -->
+      <map code="0xb94f" name="1em"/><!-- HANGUL SYLLABLE RWIS -->
+      <map code="0xb950" name="1em"/><!-- HANGUL SYLLABLE RWISS -->
+      <map code="0xb951" name="1em"/><!-- HANGUL SYLLABLE RWING -->
+      <map code="0xb952" name="1em"/><!-- HANGUL SYLLABLE RWIJ -->
+      <map code="0xb953" name="1em"/><!-- HANGUL SYLLABLE RWIC -->
+      <map code="0xb954" name="1em"/><!-- HANGUL SYLLABLE RWIK -->
+      <map code="0xb955" name="1em"/><!-- HANGUL SYLLABLE RWIT -->
+      <map code="0xb956" name="1em"/><!-- HANGUL SYLLABLE RWIP -->
+      <map code="0xb957" name="1em"/><!-- HANGUL SYLLABLE RWIH -->
+      <map code="0xb958" name="1em"/><!-- HANGUL SYLLABLE RYU -->
+      <map code="0xb959" name="1em"/><!-- HANGUL SYLLABLE RYUG -->
+      <map code="0xb95a" name="1em"/><!-- HANGUL SYLLABLE RYUGG -->
+      <map code="0xb95b" name="1em"/><!-- HANGUL SYLLABLE RYUGS -->
+      <map code="0xb95c" name="1em"/><!-- HANGUL SYLLABLE RYUN -->
+      <map code="0xb95d" name="1em"/><!-- HANGUL SYLLABLE RYUNJ -->
+      <map code="0xb95e" name="1em"/><!-- HANGUL SYLLABLE RYUNH -->
+      <map code="0xb95f" name="1em"/><!-- HANGUL SYLLABLE RYUD -->
+      <map code="0xb960" name="1em"/><!-- HANGUL SYLLABLE RYUL -->
+      <map code="0xb961" name="1em"/><!-- HANGUL SYLLABLE RYULG -->
+      <map code="0xb962" name="1em"/><!-- HANGUL SYLLABLE RYULM -->
+      <map code="0xb963" name="1em"/><!-- HANGUL SYLLABLE RYULB -->
+      <map code="0xb964" name="1em"/><!-- HANGUL SYLLABLE RYULS -->
+      <map code="0xb965" name="1em"/><!-- HANGUL SYLLABLE RYULT -->
+      <map code="0xb966" name="1em"/><!-- HANGUL SYLLABLE RYULP -->
+      <map code="0xb967" name="1em"/><!-- HANGUL SYLLABLE RYULH -->
+      <map code="0xb968" name="1em"/><!-- HANGUL SYLLABLE RYUM -->
+      <map code="0xb969" name="1em"/><!-- HANGUL SYLLABLE RYUB -->
+      <map code="0xb96a" name="1em"/><!-- HANGUL SYLLABLE RYUBS -->
+      <map code="0xb96b" name="1em"/><!-- HANGUL SYLLABLE RYUS -->
+      <map code="0xb96c" name="1em"/><!-- HANGUL SYLLABLE RYUSS -->
+      <map code="0xb96d" name="1em"/><!-- HANGUL SYLLABLE RYUNG -->
+      <map code="0xb96e" name="1em"/><!-- HANGUL SYLLABLE RYUJ -->
+      <map code="0xb96f" name="1em"/><!-- HANGUL SYLLABLE RYUC -->
+      <map code="0xb970" name="1em"/><!-- HANGUL SYLLABLE RYUK -->
+      <map code="0xb971" name="1em"/><!-- HANGUL SYLLABLE RYUT -->
+      <map code="0xb972" name="1em"/><!-- HANGUL SYLLABLE RYUP -->
+      <map code="0xb973" name="1em"/><!-- HANGUL SYLLABLE RYUH -->
+      <map code="0xb974" name="1em"/><!-- HANGUL SYLLABLE REU -->
+      <map code="0xb975" name="1em"/><!-- HANGUL SYLLABLE REUG -->
+      <map code="0xb976" name="1em"/><!-- HANGUL SYLLABLE REUGG -->
+      <map code="0xb977" name="1em"/><!-- HANGUL SYLLABLE REUGS -->
+      <map code="0xb978" name="1em"/><!-- HANGUL SYLLABLE REUN -->
+      <map code="0xb979" name="1em"/><!-- HANGUL SYLLABLE REUNJ -->
+      <map code="0xb97a" name="1em"/><!-- HANGUL SYLLABLE REUNH -->
+      <map code="0xb97b" name="1em"/><!-- HANGUL SYLLABLE REUD -->
+      <map code="0xb97c" name="1em"/><!-- HANGUL SYLLABLE REUL -->
+      <map code="0xb97d" name="1em"/><!-- HANGUL SYLLABLE REULG -->
+      <map code="0xb97e" name="1em"/><!-- HANGUL SYLLABLE REULM -->
+      <map code="0xb97f" name="1em"/><!-- HANGUL SYLLABLE REULB -->
+      <map code="0xb980" name="1em"/><!-- HANGUL SYLLABLE REULS -->
+      <map code="0xb981" name="1em"/><!-- HANGUL SYLLABLE REULT -->
+      <map code="0xb982" name="1em"/><!-- HANGUL SYLLABLE REULP -->
+      <map code="0xb983" name="1em"/><!-- HANGUL SYLLABLE REULH -->
+      <map code="0xb984" name="1em"/><!-- HANGUL SYLLABLE REUM -->
+      <map code="0xb985" name="1em"/><!-- HANGUL SYLLABLE REUB -->
+      <map code="0xb986" name="1em"/><!-- HANGUL SYLLABLE REUBS -->
+      <map code="0xb987" name="1em"/><!-- HANGUL SYLLABLE REUS -->
+      <map code="0xb988" name="1em"/><!-- HANGUL SYLLABLE REUSS -->
+      <map code="0xb989" name="1em"/><!-- HANGUL SYLLABLE REUNG -->
+      <map code="0xb98a" name="1em"/><!-- HANGUL SYLLABLE REUJ -->
+      <map code="0xb98b" name="1em"/><!-- HANGUL SYLLABLE REUC -->
+      <map code="0xb98c" name="1em"/><!-- HANGUL SYLLABLE REUK -->
+      <map code="0xb98d" name="1em"/><!-- HANGUL SYLLABLE REUT -->
+      <map code="0xb98e" name="1em"/><!-- HANGUL SYLLABLE REUP -->
+      <map code="0xb98f" name="1em"/><!-- HANGUL SYLLABLE REUH -->
+      <map code="0xb990" name="1em"/><!-- HANGUL SYLLABLE RYI -->
+      <map code="0xb991" name="1em"/><!-- HANGUL SYLLABLE RYIG -->
+      <map code="0xb992" name="1em"/><!-- HANGUL SYLLABLE RYIGG -->
+      <map code="0xb993" name="1em"/><!-- HANGUL SYLLABLE RYIGS -->
+      <map code="0xb994" name="1em"/><!-- HANGUL SYLLABLE RYIN -->
+      <map code="0xb995" name="1em"/><!-- HANGUL SYLLABLE RYINJ -->
+      <map code="0xb996" name="1em"/><!-- HANGUL SYLLABLE RYINH -->
+      <map code="0xb997" name="1em"/><!-- HANGUL SYLLABLE RYID -->
+      <map code="0xb998" name="1em"/><!-- HANGUL SYLLABLE RYIL -->
+      <map code="0xb999" name="1em"/><!-- HANGUL SYLLABLE RYILG -->
+      <map code="0xb99a" name="1em"/><!-- HANGUL SYLLABLE RYILM -->
+      <map code="0xb99b" name="1em"/><!-- HANGUL SYLLABLE RYILB -->
+      <map code="0xb99c" name="1em"/><!-- HANGUL SYLLABLE RYILS -->
+      <map code="0xb99d" name="1em"/><!-- HANGUL SYLLABLE RYILT -->
+      <map code="0xb99e" name="1em"/><!-- HANGUL SYLLABLE RYILP -->
+      <map code="0xb99f" name="1em"/><!-- HANGUL SYLLABLE RYILH -->
+      <map code="0xb9a0" name="1em"/><!-- HANGUL SYLLABLE RYIM -->
+      <map code="0xb9a1" name="1em"/><!-- HANGUL SYLLABLE RYIB -->
+      <map code="0xb9a2" name="1em"/><!-- HANGUL SYLLABLE RYIBS -->
+      <map code="0xb9a3" name="1em"/><!-- HANGUL SYLLABLE RYIS -->
+      <map code="0xb9a4" name="1em"/><!-- HANGUL SYLLABLE RYISS -->
+      <map code="0xb9a5" name="1em"/><!-- HANGUL SYLLABLE RYING -->
+      <map code="0xb9a6" name="1em"/><!-- HANGUL SYLLABLE RYIJ -->
+      <map code="0xb9a7" name="1em"/><!-- HANGUL SYLLABLE RYIC -->
+      <map code="0xb9a8" name="1em"/><!-- HANGUL SYLLABLE RYIK -->
+      <map code="0xb9a9" name="1em"/><!-- HANGUL SYLLABLE RYIT -->
+      <map code="0xb9aa" name="1em"/><!-- HANGUL SYLLABLE RYIP -->
+      <map code="0xb9ab" name="1em"/><!-- HANGUL SYLLABLE RYIH -->
+      <map code="0xb9ac" name="1em"/><!-- HANGUL SYLLABLE RI -->
+      <map code="0xb9ad" name="1em"/><!-- HANGUL SYLLABLE RIG -->
+      <map code="0xb9ae" name="1em"/><!-- HANGUL SYLLABLE RIGG -->
+      <map code="0xb9af" name="1em"/><!-- HANGUL SYLLABLE RIGS -->
+      <map code="0xb9b0" name="1em"/><!-- HANGUL SYLLABLE RIN -->
+      <map code="0xb9b1" name="1em"/><!-- HANGUL SYLLABLE RINJ -->
+      <map code="0xb9b2" name="1em"/><!-- HANGUL SYLLABLE RINH -->
+      <map code="0xb9b3" name="1em"/><!-- HANGUL SYLLABLE RID -->
+      <map code="0xb9b4" name="1em"/><!-- HANGUL SYLLABLE RIL -->
+      <map code="0xb9b5" name="1em"/><!-- HANGUL SYLLABLE RILG -->
+      <map code="0xb9b6" name="1em"/><!-- HANGUL SYLLABLE RILM -->
+      <map code="0xb9b7" name="1em"/><!-- HANGUL SYLLABLE RILB -->
+      <map code="0xb9b8" name="1em"/><!-- HANGUL SYLLABLE RILS -->
+      <map code="0xb9b9" name="1em"/><!-- HANGUL SYLLABLE RILT -->
+      <map code="0xb9ba" name="1em"/><!-- HANGUL SYLLABLE RILP -->
+      <map code="0xb9bb" name="1em"/><!-- HANGUL SYLLABLE RILH -->
+      <map code="0xb9bc" name="1em"/><!-- HANGUL SYLLABLE RIM -->
+      <map code="0xb9bd" name="1em"/><!-- HANGUL SYLLABLE RIB -->
+      <map code="0xb9be" name="1em"/><!-- HANGUL SYLLABLE RIBS -->
+      <map code="0xb9bf" name="1em"/><!-- HANGUL SYLLABLE RIS -->
+      <map code="0xb9c0" name="1em"/><!-- HANGUL SYLLABLE RISS -->
+      <map code="0xb9c1" name="1em"/><!-- HANGUL SYLLABLE RING -->
+      <map code="0xb9c2" name="1em"/><!-- HANGUL SYLLABLE RIJ -->
+      <map code="0xb9c3" name="1em"/><!-- HANGUL SYLLABLE RIC -->
+      <map code="0xb9c4" name="1em"/><!-- HANGUL SYLLABLE RIK -->
+      <map code="0xb9c5" name="1em"/><!-- HANGUL SYLLABLE RIT -->
+      <map code="0xb9c6" name="1em"/><!-- HANGUL SYLLABLE RIP -->
+      <map code="0xb9c7" name="1em"/><!-- HANGUL SYLLABLE RIH -->
+      <map code="0xb9c8" name="1em"/><!-- HANGUL SYLLABLE MA -->
+      <map code="0xb9c9" name="1em"/><!-- HANGUL SYLLABLE MAG -->
+      <map code="0xb9ca" name="1em"/><!-- HANGUL SYLLABLE MAGG -->
+      <map code="0xb9cb" name="1em"/><!-- HANGUL SYLLABLE MAGS -->
+      <map code="0xb9cc" name="1em"/><!-- HANGUL SYLLABLE MAN -->
+      <map code="0xb9cd" name="1em"/><!-- HANGUL SYLLABLE MANJ -->
+      <map code="0xb9ce" name="1em"/><!-- HANGUL SYLLABLE MANH -->
+      <map code="0xb9cf" name="1em"/><!-- HANGUL SYLLABLE MAD -->
+      <map code="0xb9d0" name="1em"/><!-- HANGUL SYLLABLE MAL -->
+      <map code="0xb9d1" name="1em"/><!-- HANGUL SYLLABLE MALG -->
+      <map code="0xb9d2" name="1em"/><!-- HANGUL SYLLABLE MALM -->
+      <map code="0xb9d3" name="1em"/><!-- HANGUL SYLLABLE MALB -->
+      <map code="0xb9d4" name="1em"/><!-- HANGUL SYLLABLE MALS -->
+      <map code="0xb9d5" name="1em"/><!-- HANGUL SYLLABLE MALT -->
+      <map code="0xb9d6" name="1em"/><!-- HANGUL SYLLABLE MALP -->
+      <map code="0xb9d7" name="1em"/><!-- HANGUL SYLLABLE MALH -->
+      <map code="0xb9d8" name="1em"/><!-- HANGUL SYLLABLE MAM -->
+      <map code="0xb9d9" name="1em"/><!-- HANGUL SYLLABLE MAB -->
+      <map code="0xb9da" name="1em"/><!-- HANGUL SYLLABLE MABS -->
+      <map code="0xb9db" name="1em"/><!-- HANGUL SYLLABLE MAS -->
+      <map code="0xb9dc" name="1em"/><!-- HANGUL SYLLABLE MASS -->
+      <map code="0xb9dd" name="1em"/><!-- HANGUL SYLLABLE MANG -->
+      <map code="0xb9de" name="1em"/><!-- HANGUL SYLLABLE MAJ -->
+      <map code="0xb9df" name="1em"/><!-- HANGUL SYLLABLE MAC -->
+      <map code="0xb9e0" name="1em"/><!-- HANGUL SYLLABLE MAK -->
+      <map code="0xb9e1" name="1em"/><!-- HANGUL SYLLABLE MAT -->
+      <map code="0xb9e2" name="1em"/><!-- HANGUL SYLLABLE MAP -->
+      <map code="0xb9e3" name="1em"/><!-- HANGUL SYLLABLE MAH -->
+      <map code="0xb9e4" name="1em"/><!-- HANGUL SYLLABLE MAE -->
+      <map code="0xb9e5" name="1em"/><!-- HANGUL SYLLABLE MAEG -->
+      <map code="0xb9e6" name="1em"/><!-- HANGUL SYLLABLE MAEGG -->
+      <map code="0xb9e7" name="1em"/><!-- HANGUL SYLLABLE MAEGS -->
+      <map code="0xb9e8" name="1em"/><!-- HANGUL SYLLABLE MAEN -->
+      <map code="0xb9e9" name="1em"/><!-- HANGUL SYLLABLE MAENJ -->
+      <map code="0xb9ea" name="1em"/><!-- HANGUL SYLLABLE MAENH -->
+      <map code="0xb9eb" name="1em"/><!-- HANGUL SYLLABLE MAED -->
+      <map code="0xb9ec" name="1em"/><!-- HANGUL SYLLABLE MAEL -->
+      <map code="0xb9ed" name="1em"/><!-- HANGUL SYLLABLE MAELG -->
+      <map code="0xb9ee" name="1em"/><!-- HANGUL SYLLABLE MAELM -->
+      <map code="0xb9ef" name="1em"/><!-- HANGUL SYLLABLE MAELB -->
+      <map code="0xb9f0" name="1em"/><!-- HANGUL SYLLABLE MAELS -->
+      <map code="0xb9f1" name="1em"/><!-- HANGUL SYLLABLE MAELT -->
+      <map code="0xb9f2" name="1em"/><!-- HANGUL SYLLABLE MAELP -->
+      <map code="0xb9f3" name="1em"/><!-- HANGUL SYLLABLE MAELH -->
+      <map code="0xb9f4" name="1em"/><!-- HANGUL SYLLABLE MAEM -->
+      <map code="0xb9f5" name="1em"/><!-- HANGUL SYLLABLE MAEB -->
+      <map code="0xb9f6" name="1em"/><!-- HANGUL SYLLABLE MAEBS -->
+      <map code="0xb9f7" name="1em"/><!-- HANGUL SYLLABLE MAES -->
+      <map code="0xb9f8" name="1em"/><!-- HANGUL SYLLABLE MAESS -->
+      <map code="0xb9f9" name="1em"/><!-- HANGUL SYLLABLE MAENG -->
+      <map code="0xb9fa" name="1em"/><!-- HANGUL SYLLABLE MAEJ -->
+      <map code="0xb9fb" name="1em"/><!-- HANGUL SYLLABLE MAEC -->
+      <map code="0xb9fc" name="1em"/><!-- HANGUL SYLLABLE MAEK -->
+      <map code="0xb9fd" name="1em"/><!-- HANGUL SYLLABLE MAET -->
+      <map code="0xb9fe" name="1em"/><!-- HANGUL SYLLABLE MAEP -->
+      <map code="0xb9ff" name="1em"/><!-- HANGUL SYLLABLE MAEH -->
+      <map code="0xba00" name="1em"/><!-- HANGUL SYLLABLE MYA -->
+      <map code="0xba01" name="1em"/><!-- HANGUL SYLLABLE MYAG -->
+      <map code="0xba02" name="1em"/><!-- HANGUL SYLLABLE MYAGG -->
+      <map code="0xba03" name="1em"/><!-- HANGUL SYLLABLE MYAGS -->
+      <map code="0xba04" name="1em"/><!-- HANGUL SYLLABLE MYAN -->
+      <map code="0xba05" name="1em"/><!-- HANGUL SYLLABLE MYANJ -->
+      <map code="0xba06" name="1em"/><!-- HANGUL SYLLABLE MYANH -->
+      <map code="0xba07" name="1em"/><!-- HANGUL SYLLABLE MYAD -->
+      <map code="0xba08" name="1em"/><!-- HANGUL SYLLABLE MYAL -->
+      <map code="0xba09" name="1em"/><!-- HANGUL SYLLABLE MYALG -->
+      <map code="0xba0a" name="1em"/><!-- HANGUL SYLLABLE MYALM -->
+      <map code="0xba0b" name="1em"/><!-- HANGUL SYLLABLE MYALB -->
+      <map code="0xba0c" name="1em"/><!-- HANGUL SYLLABLE MYALS -->
+      <map code="0xba0d" name="1em"/><!-- HANGUL SYLLABLE MYALT -->
+      <map code="0xba0e" name="1em"/><!-- HANGUL SYLLABLE MYALP -->
+      <map code="0xba0f" name="1em"/><!-- HANGUL SYLLABLE MYALH -->
+      <map code="0xba10" name="1em"/><!-- HANGUL SYLLABLE MYAM -->
+      <map code="0xba11" name="1em"/><!-- HANGUL SYLLABLE MYAB -->
+      <map code="0xba12" name="1em"/><!-- HANGUL SYLLABLE MYABS -->
+      <map code="0xba13" name="1em"/><!-- HANGUL SYLLABLE MYAS -->
+      <map code="0xba14" name="1em"/><!-- HANGUL SYLLABLE MYASS -->
+      <map code="0xba15" name="1em"/><!-- HANGUL SYLLABLE MYANG -->
+      <map code="0xba16" name="1em"/><!-- HANGUL SYLLABLE MYAJ -->
+      <map code="0xba17" name="1em"/><!-- HANGUL SYLLABLE MYAC -->
+      <map code="0xba18" name="1em"/><!-- HANGUL SYLLABLE MYAK -->
+      <map code="0xba19" name="1em"/><!-- HANGUL SYLLABLE MYAT -->
+      <map code="0xba1a" name="1em"/><!-- HANGUL SYLLABLE MYAP -->
+      <map code="0xba1b" name="1em"/><!-- HANGUL SYLLABLE MYAH -->
+      <map code="0xba1c" name="1em"/><!-- HANGUL SYLLABLE MYAE -->
+      <map code="0xba1d" name="1em"/><!-- HANGUL SYLLABLE MYAEG -->
+      <map code="0xba1e" name="1em"/><!-- HANGUL SYLLABLE MYAEGG -->
+      <map code="0xba1f" name="1em"/><!-- HANGUL SYLLABLE MYAEGS -->
+      <map code="0xba20" name="1em"/><!-- HANGUL SYLLABLE MYAEN -->
+      <map code="0xba21" name="1em"/><!-- HANGUL SYLLABLE MYAENJ -->
+      <map code="0xba22" name="1em"/><!-- HANGUL SYLLABLE MYAENH -->
+      <map code="0xba23" name="1em"/><!-- HANGUL SYLLABLE MYAED -->
+      <map code="0xba24" name="1em"/><!-- HANGUL SYLLABLE MYAEL -->
+      <map code="0xba25" name="1em"/><!-- HANGUL SYLLABLE MYAELG -->
+      <map code="0xba26" name="1em"/><!-- HANGUL SYLLABLE MYAELM -->
+      <map code="0xba27" name="1em"/><!-- HANGUL SYLLABLE MYAELB -->
+      <map code="0xba28" name="1em"/><!-- HANGUL SYLLABLE MYAELS -->
+      <map code="0xba29" name="1em"/><!-- HANGUL SYLLABLE MYAELT -->
+      <map code="0xba2a" name="1em"/><!-- HANGUL SYLLABLE MYAELP -->
+      <map code="0xba2b" name="1em"/><!-- HANGUL SYLLABLE MYAELH -->
+      <map code="0xba2c" name="1em"/><!-- HANGUL SYLLABLE MYAEM -->
+      <map code="0xba2d" name="1em"/><!-- HANGUL SYLLABLE MYAEB -->
+      <map code="0xba2e" name="1em"/><!-- HANGUL SYLLABLE MYAEBS -->
+      <map code="0xba2f" name="1em"/><!-- HANGUL SYLLABLE MYAES -->
+      <map code="0xba30" name="1em"/><!-- HANGUL SYLLABLE MYAESS -->
+      <map code="0xba31" name="1em"/><!-- HANGUL SYLLABLE MYAENG -->
+      <map code="0xba32" name="1em"/><!-- HANGUL SYLLABLE MYAEJ -->
+      <map code="0xba33" name="1em"/><!-- HANGUL SYLLABLE MYAEC -->
+      <map code="0xba34" name="1em"/><!-- HANGUL SYLLABLE MYAEK -->
+      <map code="0xba35" name="1em"/><!-- HANGUL SYLLABLE MYAET -->
+      <map code="0xba36" name="1em"/><!-- HANGUL SYLLABLE MYAEP -->
+      <map code="0xba37" name="1em"/><!-- HANGUL SYLLABLE MYAEH -->
+      <map code="0xba38" name="1em"/><!-- HANGUL SYLLABLE MEO -->
+      <map code="0xba39" name="1em"/><!-- HANGUL SYLLABLE MEOG -->
+      <map code="0xba3a" name="1em"/><!-- HANGUL SYLLABLE MEOGG -->
+      <map code="0xba3b" name="1em"/><!-- HANGUL SYLLABLE MEOGS -->
+      <map code="0xba3c" name="1em"/><!-- HANGUL SYLLABLE MEON -->
+      <map code="0xba3d" name="1em"/><!-- HANGUL SYLLABLE MEONJ -->
+      <map code="0xba3e" name="1em"/><!-- HANGUL SYLLABLE MEONH -->
+      <map code="0xba3f" name="1em"/><!-- HANGUL SYLLABLE MEOD -->
+      <map code="0xba40" name="1em"/><!-- HANGUL SYLLABLE MEOL -->
+      <map code="0xba41" name="1em"/><!-- HANGUL SYLLABLE MEOLG -->
+      <map code="0xba42" name="1em"/><!-- HANGUL SYLLABLE MEOLM -->
+      <map code="0xba43" name="1em"/><!-- HANGUL SYLLABLE MEOLB -->
+      <map code="0xba44" name="1em"/><!-- HANGUL SYLLABLE MEOLS -->
+      <map code="0xba45" name="1em"/><!-- HANGUL SYLLABLE MEOLT -->
+      <map code="0xba46" name="1em"/><!-- HANGUL SYLLABLE MEOLP -->
+      <map code="0xba47" name="1em"/><!-- HANGUL SYLLABLE MEOLH -->
+      <map code="0xba48" name="1em"/><!-- HANGUL SYLLABLE MEOM -->
+      <map code="0xba49" name="1em"/><!-- HANGUL SYLLABLE MEOB -->
+      <map code="0xba4a" name="1em"/><!-- HANGUL SYLLABLE MEOBS -->
+      <map code="0xba4b" name="1em"/><!-- HANGUL SYLLABLE MEOS -->
+      <map code="0xba4c" name="1em"/><!-- HANGUL SYLLABLE MEOSS -->
+      <map code="0xba4d" name="1em"/><!-- HANGUL SYLLABLE MEONG -->
+      <map code="0xba4e" name="1em"/><!-- HANGUL SYLLABLE MEOJ -->
+      <map code="0xba4f" name="1em"/><!-- HANGUL SYLLABLE MEOC -->
+      <map code="0xba50" name="1em"/><!-- HANGUL SYLLABLE MEOK -->
+      <map code="0xba51" name="1em"/><!-- HANGUL SYLLABLE MEOT -->
+      <map code="0xba52" name="1em"/><!-- HANGUL SYLLABLE MEOP -->
+      <map code="0xba53" name="1em"/><!-- HANGUL SYLLABLE MEOH -->
+      <map code="0xba54" name="1em"/><!-- HANGUL SYLLABLE ME -->
+      <map code="0xba55" name="1em"/><!-- HANGUL SYLLABLE MEG -->
+      <map code="0xba56" name="1em"/><!-- HANGUL SYLLABLE MEGG -->
+      <map code="0xba57" name="1em"/><!-- HANGUL SYLLABLE MEGS -->
+      <map code="0xba58" name="1em"/><!-- HANGUL SYLLABLE MEN -->
+      <map code="0xba59" name="1em"/><!-- HANGUL SYLLABLE MENJ -->
+      <map code="0xba5a" name="1em"/><!-- HANGUL SYLLABLE MENH -->
+      <map code="0xba5b" name="1em"/><!-- HANGUL SYLLABLE MED -->
+      <map code="0xba5c" name="1em"/><!-- HANGUL SYLLABLE MEL -->
+      <map code="0xba5d" name="1em"/><!-- HANGUL SYLLABLE MELG -->
+      <map code="0xba5e" name="1em"/><!-- HANGUL SYLLABLE MELM -->
+      <map code="0xba5f" name="1em"/><!-- HANGUL SYLLABLE MELB -->
+      <map code="0xba60" name="1em"/><!-- HANGUL SYLLABLE MELS -->
+      <map code="0xba61" name="1em"/><!-- HANGUL SYLLABLE MELT -->
+      <map code="0xba62" name="1em"/><!-- HANGUL SYLLABLE MELP -->
+      <map code="0xba63" name="1em"/><!-- HANGUL SYLLABLE MELH -->
+      <map code="0xba64" name="1em"/><!-- HANGUL SYLLABLE MEM -->
+      <map code="0xba65" name="1em"/><!-- HANGUL SYLLABLE MEB -->
+      <map code="0xba66" name="1em"/><!-- HANGUL SYLLABLE MEBS -->
+      <map code="0xba67" name="1em"/><!-- HANGUL SYLLABLE MES -->
+      <map code="0xba68" name="1em"/><!-- HANGUL SYLLABLE MESS -->
+      <map code="0xba69" name="1em"/><!-- HANGUL SYLLABLE MENG -->
+      <map code="0xba6a" name="1em"/><!-- HANGUL SYLLABLE MEJ -->
+      <map code="0xba6b" name="1em"/><!-- HANGUL SYLLABLE MEC -->
+      <map code="0xba6c" name="1em"/><!-- HANGUL SYLLABLE MEK -->
+      <map code="0xba6d" name="1em"/><!-- HANGUL SYLLABLE MET -->
+      <map code="0xba6e" name="1em"/><!-- HANGUL SYLLABLE MEP -->
+      <map code="0xba6f" name="1em"/><!-- HANGUL SYLLABLE MEH -->
+      <map code="0xba70" name="1em"/><!-- HANGUL SYLLABLE MYEO -->
+      <map code="0xba71" name="1em"/><!-- HANGUL SYLLABLE MYEOG -->
+      <map code="0xba72" name="1em"/><!-- HANGUL SYLLABLE MYEOGG -->
+      <map code="0xba73" name="1em"/><!-- HANGUL SYLLABLE MYEOGS -->
+      <map code="0xba74" name="1em"/><!-- HANGUL SYLLABLE MYEON -->
+      <map code="0xba75" name="1em"/><!-- HANGUL SYLLABLE MYEONJ -->
+      <map code="0xba76" name="1em"/><!-- HANGUL SYLLABLE MYEONH -->
+      <map code="0xba77" name="1em"/><!-- HANGUL SYLLABLE MYEOD -->
+      <map code="0xba78" name="1em"/><!-- HANGUL SYLLABLE MYEOL -->
+      <map code="0xba79" name="1em"/><!-- HANGUL SYLLABLE MYEOLG -->
+      <map code="0xba7a" name="1em"/><!-- HANGUL SYLLABLE MYEOLM -->
+      <map code="0xba7b" name="1em"/><!-- HANGUL SYLLABLE MYEOLB -->
+      <map code="0xba7c" name="1em"/><!-- HANGUL SYLLABLE MYEOLS -->
+      <map code="0xba7d" name="1em"/><!-- HANGUL SYLLABLE MYEOLT -->
+      <map code="0xba7e" name="1em"/><!-- HANGUL SYLLABLE MYEOLP -->
+      <map code="0xba7f" name="1em"/><!-- HANGUL SYLLABLE MYEOLH -->
+      <map code="0xba80" name="1em"/><!-- HANGUL SYLLABLE MYEOM -->
+      <map code="0xba81" name="1em"/><!-- HANGUL SYLLABLE MYEOB -->
+      <map code="0xba82" name="1em"/><!-- HANGUL SYLLABLE MYEOBS -->
+      <map code="0xba83" name="1em"/><!-- HANGUL SYLLABLE MYEOS -->
+      <map code="0xba84" name="1em"/><!-- HANGUL SYLLABLE MYEOSS -->
+      <map code="0xba85" name="1em"/><!-- HANGUL SYLLABLE MYEONG -->
+      <map code="0xba86" name="1em"/><!-- HANGUL SYLLABLE MYEOJ -->
+      <map code="0xba87" name="1em"/><!-- HANGUL SYLLABLE MYEOC -->
+      <map code="0xba88" name="1em"/><!-- HANGUL SYLLABLE MYEOK -->
+      <map code="0xba89" name="1em"/><!-- HANGUL SYLLABLE MYEOT -->
+      <map code="0xba8a" name="1em"/><!-- HANGUL SYLLABLE MYEOP -->
+      <map code="0xba8b" name="1em"/><!-- HANGUL SYLLABLE MYEOH -->
+      <map code="0xba8c" name="1em"/><!-- HANGUL SYLLABLE MYE -->
+      <map code="0xba8d" name="1em"/><!-- HANGUL SYLLABLE MYEG -->
+      <map code="0xba8e" name="1em"/><!-- HANGUL SYLLABLE MYEGG -->
+      <map code="0xba8f" name="1em"/><!-- HANGUL SYLLABLE MYEGS -->
+      <map code="0xba90" name="1em"/><!-- HANGUL SYLLABLE MYEN -->
+      <map code="0xba91" name="1em"/><!-- HANGUL SYLLABLE MYENJ -->
+      <map code="0xba92" name="1em"/><!-- HANGUL SYLLABLE MYENH -->
+      <map code="0xba93" name="1em"/><!-- HANGUL SYLLABLE MYED -->
+      <map code="0xba94" name="1em"/><!-- HANGUL SYLLABLE MYEL -->
+      <map code="0xba95" name="1em"/><!-- HANGUL SYLLABLE MYELG -->
+      <map code="0xba96" name="1em"/><!-- HANGUL SYLLABLE MYELM -->
+      <map code="0xba97" name="1em"/><!-- HANGUL SYLLABLE MYELB -->
+      <map code="0xba98" name="1em"/><!-- HANGUL SYLLABLE MYELS -->
+      <map code="0xba99" name="1em"/><!-- HANGUL SYLLABLE MYELT -->
+      <map code="0xba9a" name="1em"/><!-- HANGUL SYLLABLE MYELP -->
+      <map code="0xba9b" name="1em"/><!-- HANGUL SYLLABLE MYELH -->
+      <map code="0xba9c" name="1em"/><!-- HANGUL SYLLABLE MYEM -->
+      <map code="0xba9d" name="1em"/><!-- HANGUL SYLLABLE MYEB -->
+      <map code="0xba9e" name="1em"/><!-- HANGUL SYLLABLE MYEBS -->
+      <map code="0xba9f" name="1em"/><!-- HANGUL SYLLABLE MYES -->
+      <map code="0xbaa0" name="1em"/><!-- HANGUL SYLLABLE MYESS -->
+      <map code="0xbaa1" name="1em"/><!-- HANGUL SYLLABLE MYENG -->
+      <map code="0xbaa2" name="1em"/><!-- HANGUL SYLLABLE MYEJ -->
+      <map code="0xbaa3" name="1em"/><!-- HANGUL SYLLABLE MYEC -->
+      <map code="0xbaa4" name="1em"/><!-- HANGUL SYLLABLE MYEK -->
+      <map code="0xbaa5" name="1em"/><!-- HANGUL SYLLABLE MYET -->
+      <map code="0xbaa6" name="1em"/><!-- HANGUL SYLLABLE MYEP -->
+      <map code="0xbaa7" name="1em"/><!-- HANGUL SYLLABLE MYEH -->
+      <map code="0xbaa8" name="1em"/><!-- HANGUL SYLLABLE MO -->
+      <map code="0xbaa9" name="1em"/><!-- HANGUL SYLLABLE MOG -->
+      <map code="0xbaaa" name="1em"/><!-- HANGUL SYLLABLE MOGG -->
+      <map code="0xbaab" name="1em"/><!-- HANGUL SYLLABLE MOGS -->
+      <map code="0xbaac" name="1em"/><!-- HANGUL SYLLABLE MON -->
+      <map code="0xbaad" name="1em"/><!-- HANGUL SYLLABLE MONJ -->
+      <map code="0xbaae" name="1em"/><!-- HANGUL SYLLABLE MONH -->
+      <map code="0xbaaf" name="1em"/><!-- HANGUL SYLLABLE MOD -->
+      <map code="0xbab0" name="1em"/><!-- HANGUL SYLLABLE MOL -->
+      <map code="0xbab1" name="1em"/><!-- HANGUL SYLLABLE MOLG -->
+      <map code="0xbab2" name="1em"/><!-- HANGUL SYLLABLE MOLM -->
+      <map code="0xbab3" name="1em"/><!-- HANGUL SYLLABLE MOLB -->
+      <map code="0xbab4" name="1em"/><!-- HANGUL SYLLABLE MOLS -->
+      <map code="0xbab5" name="1em"/><!-- HANGUL SYLLABLE MOLT -->
+      <map code="0xbab6" name="1em"/><!-- HANGUL SYLLABLE MOLP -->
+      <map code="0xbab7" name="1em"/><!-- HANGUL SYLLABLE MOLH -->
+      <map code="0xbab8" name="1em"/><!-- HANGUL SYLLABLE MOM -->
+      <map code="0xbab9" name="1em"/><!-- HANGUL SYLLABLE MOB -->
+      <map code="0xbaba" name="1em"/><!-- HANGUL SYLLABLE MOBS -->
+      <map code="0xbabb" name="1em"/><!-- HANGUL SYLLABLE MOS -->
+      <map code="0xbabc" name="1em"/><!-- HANGUL SYLLABLE MOSS -->
+      <map code="0xbabd" name="1em"/><!-- HANGUL SYLLABLE MONG -->
+      <map code="0xbabe" name="1em"/><!-- HANGUL SYLLABLE MOJ -->
+      <map code="0xbabf" name="1em"/><!-- HANGUL SYLLABLE MOC -->
+      <map code="0xbac0" name="1em"/><!-- HANGUL SYLLABLE MOK -->
+      <map code="0xbac1" name="1em"/><!-- HANGUL SYLLABLE MOT -->
+      <map code="0xbac2" name="1em"/><!-- HANGUL SYLLABLE MOP -->
+      <map code="0xbac3" name="1em"/><!-- HANGUL SYLLABLE MOH -->
+      <map code="0xbac4" name="1em"/><!-- HANGUL SYLLABLE MWA -->
+      <map code="0xbac5" name="1em"/><!-- HANGUL SYLLABLE MWAG -->
+      <map code="0xbac6" name="1em"/><!-- HANGUL SYLLABLE MWAGG -->
+      <map code="0xbac7" name="1em"/><!-- HANGUL SYLLABLE MWAGS -->
+      <map code="0xbac8" name="1em"/><!-- HANGUL SYLLABLE MWAN -->
+      <map code="0xbac9" name="1em"/><!-- HANGUL SYLLABLE MWANJ -->
+      <map code="0xbaca" name="1em"/><!-- HANGUL SYLLABLE MWANH -->
+      <map code="0xbacb" name="1em"/><!-- HANGUL SYLLABLE MWAD -->
+      <map code="0xbacc" name="1em"/><!-- HANGUL SYLLABLE MWAL -->
+      <map code="0xbacd" name="1em"/><!-- HANGUL SYLLABLE MWALG -->
+      <map code="0xbace" name="1em"/><!-- HANGUL SYLLABLE MWALM -->
+      <map code="0xbacf" name="1em"/><!-- HANGUL SYLLABLE MWALB -->
+      <map code="0xbad0" name="1em"/><!-- HANGUL SYLLABLE MWALS -->
+      <map code="0xbad1" name="1em"/><!-- HANGUL SYLLABLE MWALT -->
+      <map code="0xbad2" name="1em"/><!-- HANGUL SYLLABLE MWALP -->
+      <map code="0xbad3" name="1em"/><!-- HANGUL SYLLABLE MWALH -->
+      <map code="0xbad4" name="1em"/><!-- HANGUL SYLLABLE MWAM -->
+      <map code="0xbad5" name="1em"/><!-- HANGUL SYLLABLE MWAB -->
+      <map code="0xbad6" name="1em"/><!-- HANGUL SYLLABLE MWABS -->
+      <map code="0xbad7" name="1em"/><!-- HANGUL SYLLABLE MWAS -->
+      <map code="0xbad8" name="1em"/><!-- HANGUL SYLLABLE MWASS -->
+      <map code="0xbad9" name="1em"/><!-- HANGUL SYLLABLE MWANG -->
+      <map code="0xbada" name="1em"/><!-- HANGUL SYLLABLE MWAJ -->
+      <map code="0xbadb" name="1em"/><!-- HANGUL SYLLABLE MWAC -->
+      <map code="0xbadc" name="1em"/><!-- HANGUL SYLLABLE MWAK -->
+      <map code="0xbadd" name="1em"/><!-- HANGUL SYLLABLE MWAT -->
+      <map code="0xbade" name="1em"/><!-- HANGUL SYLLABLE MWAP -->
+      <map code="0xbadf" name="1em"/><!-- HANGUL SYLLABLE MWAH -->
+      <map code="0xbae0" name="1em"/><!-- HANGUL SYLLABLE MWAE -->
+      <map code="0xbae1" name="1em"/><!-- HANGUL SYLLABLE MWAEG -->
+      <map code="0xbae2" name="1em"/><!-- HANGUL SYLLABLE MWAEGG -->
+      <map code="0xbae3" name="1em"/><!-- HANGUL SYLLABLE MWAEGS -->
+      <map code="0xbae4" name="1em"/><!-- HANGUL SYLLABLE MWAEN -->
+      <map code="0xbae5" name="1em"/><!-- HANGUL SYLLABLE MWAENJ -->
+      <map code="0xbae6" name="1em"/><!-- HANGUL SYLLABLE MWAENH -->
+      <map code="0xbae7" name="1em"/><!-- HANGUL SYLLABLE MWAED -->
+      <map code="0xbae8" name="1em"/><!-- HANGUL SYLLABLE MWAEL -->
+      <map code="0xbae9" name="1em"/><!-- HANGUL SYLLABLE MWAELG -->
+      <map code="0xbaea" name="1em"/><!-- HANGUL SYLLABLE MWAELM -->
+      <map code="0xbaeb" name="1em"/><!-- HANGUL SYLLABLE MWAELB -->
+      <map code="0xbaec" name="1em"/><!-- HANGUL SYLLABLE MWAELS -->
+      <map code="0xbaed" name="1em"/><!-- HANGUL SYLLABLE MWAELT -->
+      <map code="0xbaee" name="1em"/><!-- HANGUL SYLLABLE MWAELP -->
+      <map code="0xbaef" name="1em"/><!-- HANGUL SYLLABLE MWAELH -->
+      <map code="0xbaf0" name="1em"/><!-- HANGUL SYLLABLE MWAEM -->
+      <map code="0xbaf1" name="1em"/><!-- HANGUL SYLLABLE MWAEB -->
+      <map code="0xbaf2" name="1em"/><!-- HANGUL SYLLABLE MWAEBS -->
+      <map code="0xbaf3" name="1em"/><!-- HANGUL SYLLABLE MWAES -->
+      <map code="0xbaf4" name="1em"/><!-- HANGUL SYLLABLE MWAESS -->
+      <map code="0xbaf5" name="1em"/><!-- HANGUL SYLLABLE MWAENG -->
+      <map code="0xbaf6" name="1em"/><!-- HANGUL SYLLABLE MWAEJ -->
+      <map code="0xbaf7" name="1em"/><!-- HANGUL SYLLABLE MWAEC -->
+      <map code="0xbaf8" name="1em"/><!-- HANGUL SYLLABLE MWAEK -->
+      <map code="0xbaf9" name="1em"/><!-- HANGUL SYLLABLE MWAET -->
+      <map code="0xbafa" name="1em"/><!-- HANGUL SYLLABLE MWAEP -->
+      <map code="0xbafb" name="1em"/><!-- HANGUL SYLLABLE MWAEH -->
+      <map code="0xbafc" name="1em"/><!-- HANGUL SYLLABLE MOE -->
+      <map code="0xbafd" name="1em"/><!-- HANGUL SYLLABLE MOEG -->
+      <map code="0xbafe" name="1em"/><!-- HANGUL SYLLABLE MOEGG -->
+      <map code="0xbaff" name="1em"/><!-- HANGUL SYLLABLE MOEGS -->
+      <map code="0xbb00" name="1em"/><!-- HANGUL SYLLABLE MOEN -->
+      <map code="0xbb01" name="1em"/><!-- HANGUL SYLLABLE MOENJ -->
+      <map code="0xbb02" name="1em"/><!-- HANGUL SYLLABLE MOENH -->
+      <map code="0xbb03" name="1em"/><!-- HANGUL SYLLABLE MOED -->
+      <map code="0xbb04" name="1em"/><!-- HANGUL SYLLABLE MOEL -->
+      <map code="0xbb05" name="1em"/><!-- HANGUL SYLLABLE MOELG -->
+      <map code="0xbb06" name="1em"/><!-- HANGUL SYLLABLE MOELM -->
+      <map code="0xbb07" name="1em"/><!-- HANGUL SYLLABLE MOELB -->
+      <map code="0xbb08" name="1em"/><!-- HANGUL SYLLABLE MOELS -->
+      <map code="0xbb09" name="1em"/><!-- HANGUL SYLLABLE MOELT -->
+      <map code="0xbb0a" name="1em"/><!-- HANGUL SYLLABLE MOELP -->
+      <map code="0xbb0b" name="1em"/><!-- HANGUL SYLLABLE MOELH -->
+      <map code="0xbb0c" name="1em"/><!-- HANGUL SYLLABLE MOEM -->
+      <map code="0xbb0d" name="1em"/><!-- HANGUL SYLLABLE MOEB -->
+      <map code="0xbb0e" name="1em"/><!-- HANGUL SYLLABLE MOEBS -->
+      <map code="0xbb0f" name="1em"/><!-- HANGUL SYLLABLE MOES -->
+      <map code="0xbb10" name="1em"/><!-- HANGUL SYLLABLE MOESS -->
+      <map code="0xbb11" name="1em"/><!-- HANGUL SYLLABLE MOENG -->
+      <map code="0xbb12" name="1em"/><!-- HANGUL SYLLABLE MOEJ -->
+      <map code="0xbb13" name="1em"/><!-- HANGUL SYLLABLE MOEC -->
+      <map code="0xbb14" name="1em"/><!-- HANGUL SYLLABLE MOEK -->
+      <map code="0xbb15" name="1em"/><!-- HANGUL SYLLABLE MOET -->
+      <map code="0xbb16" name="1em"/><!-- HANGUL SYLLABLE MOEP -->
+      <map code="0xbb17" name="1em"/><!-- HANGUL SYLLABLE MOEH -->
+      <map code="0xbb18" name="1em"/><!-- HANGUL SYLLABLE MYO -->
+      <map code="0xbb19" name="1em"/><!-- HANGUL SYLLABLE MYOG -->
+      <map code="0xbb1a" name="1em"/><!-- HANGUL SYLLABLE MYOGG -->
+      <map code="0xbb1b" name="1em"/><!-- HANGUL SYLLABLE MYOGS -->
+      <map code="0xbb1c" name="1em"/><!-- HANGUL SYLLABLE MYON -->
+      <map code="0xbb1d" name="1em"/><!-- HANGUL SYLLABLE MYONJ -->
+      <map code="0xbb1e" name="1em"/><!-- HANGUL SYLLABLE MYONH -->
+      <map code="0xbb1f" name="1em"/><!-- HANGUL SYLLABLE MYOD -->
+      <map code="0xbb20" name="1em"/><!-- HANGUL SYLLABLE MYOL -->
+      <map code="0xbb21" name="1em"/><!-- HANGUL SYLLABLE MYOLG -->
+      <map code="0xbb22" name="1em"/><!-- HANGUL SYLLABLE MYOLM -->
+      <map code="0xbb23" name="1em"/><!-- HANGUL SYLLABLE MYOLB -->
+      <map code="0xbb24" name="1em"/><!-- HANGUL SYLLABLE MYOLS -->
+      <map code="0xbb25" name="1em"/><!-- HANGUL SYLLABLE MYOLT -->
+      <map code="0xbb26" name="1em"/><!-- HANGUL SYLLABLE MYOLP -->
+      <map code="0xbb27" name="1em"/><!-- HANGUL SYLLABLE MYOLH -->
+      <map code="0xbb28" name="1em"/><!-- HANGUL SYLLABLE MYOM -->
+      <map code="0xbb29" name="1em"/><!-- HANGUL SYLLABLE MYOB -->
+      <map code="0xbb2a" name="1em"/><!-- HANGUL SYLLABLE MYOBS -->
+      <map code="0xbb2b" name="1em"/><!-- HANGUL SYLLABLE MYOS -->
+      <map code="0xbb2c" name="1em"/><!-- HANGUL SYLLABLE MYOSS -->
+      <map code="0xbb2d" name="1em"/><!-- HANGUL SYLLABLE MYONG -->
+      <map code="0xbb2e" name="1em"/><!-- HANGUL SYLLABLE MYOJ -->
+      <map code="0xbb2f" name="1em"/><!-- HANGUL SYLLABLE MYOC -->
+      <map code="0xbb30" name="1em"/><!-- HANGUL SYLLABLE MYOK -->
+      <map code="0xbb31" name="1em"/><!-- HANGUL SYLLABLE MYOT -->
+      <map code="0xbb32" name="1em"/><!-- HANGUL SYLLABLE MYOP -->
+      <map code="0xbb33" name="1em"/><!-- HANGUL SYLLABLE MYOH -->
+      <map code="0xbb34" name="1em"/><!-- HANGUL SYLLABLE MU -->
+      <map code="0xbb35" name="1em"/><!-- HANGUL SYLLABLE MUG -->
+      <map code="0xbb36" name="1em"/><!-- HANGUL SYLLABLE MUGG -->
+      <map code="0xbb37" name="1em"/><!-- HANGUL SYLLABLE MUGS -->
+      <map code="0xbb38" name="1em"/><!-- HANGUL SYLLABLE MUN -->
+      <map code="0xbb39" name="1em"/><!-- HANGUL SYLLABLE MUNJ -->
+      <map code="0xbb3a" name="1em"/><!-- HANGUL SYLLABLE MUNH -->
+      <map code="0xbb3b" name="1em"/><!-- HANGUL SYLLABLE MUD -->
+      <map code="0xbb3c" name="1em"/><!-- HANGUL SYLLABLE MUL -->
+      <map code="0xbb3d" name="1em"/><!-- HANGUL SYLLABLE MULG -->
+      <map code="0xbb3e" name="1em"/><!-- HANGUL SYLLABLE MULM -->
+      <map code="0xbb3f" name="1em"/><!-- HANGUL SYLLABLE MULB -->
+      <map code="0xbb40" name="1em"/><!-- HANGUL SYLLABLE MULS -->
+      <map code="0xbb41" name="1em"/><!-- HANGUL SYLLABLE MULT -->
+      <map code="0xbb42" name="1em"/><!-- HANGUL SYLLABLE MULP -->
+      <map code="0xbb43" name="1em"/><!-- HANGUL SYLLABLE MULH -->
+      <map code="0xbb44" name="1em"/><!-- HANGUL SYLLABLE MUM -->
+      <map code="0xbb45" name="1em"/><!-- HANGUL SYLLABLE MUB -->
+      <map code="0xbb46" name="1em"/><!-- HANGUL SYLLABLE MUBS -->
+      <map code="0xbb47" name="1em"/><!-- HANGUL SYLLABLE MUS -->
+      <map code="0xbb48" name="1em"/><!-- HANGUL SYLLABLE MUSS -->
+      <map code="0xbb49" name="1em"/><!-- HANGUL SYLLABLE MUNG -->
+      <map code="0xbb4a" name="1em"/><!-- HANGUL SYLLABLE MUJ -->
+      <map code="0xbb4b" name="1em"/><!-- HANGUL SYLLABLE MUC -->
+      <map code="0xbb4c" name="1em"/><!-- HANGUL SYLLABLE MUK -->
+      <map code="0xbb4d" name="1em"/><!-- HANGUL SYLLABLE MUT -->
+      <map code="0xbb4e" name="1em"/><!-- HANGUL SYLLABLE MUP -->
+      <map code="0xbb4f" name="1em"/><!-- HANGUL SYLLABLE MUH -->
+      <map code="0xbb50" name="1em"/><!-- HANGUL SYLLABLE MWEO -->
+      <map code="0xbb51" name="1em"/><!-- HANGUL SYLLABLE MWEOG -->
+      <map code="0xbb52" name="1em"/><!-- HANGUL SYLLABLE MWEOGG -->
+      <map code="0xbb53" name="1em"/><!-- HANGUL SYLLABLE MWEOGS -->
+      <map code="0xbb54" name="1em"/><!-- HANGUL SYLLABLE MWEON -->
+      <map code="0xbb55" name="1em"/><!-- HANGUL SYLLABLE MWEONJ -->
+      <map code="0xbb56" name="1em"/><!-- HANGUL SYLLABLE MWEONH -->
+      <map code="0xbb57" name="1em"/><!-- HANGUL SYLLABLE MWEOD -->
+      <map code="0xbb58" name="1em"/><!-- HANGUL SYLLABLE MWEOL -->
+      <map code="0xbb59" name="1em"/><!-- HANGUL SYLLABLE MWEOLG -->
+      <map code="0xbb5a" name="1em"/><!-- HANGUL SYLLABLE MWEOLM -->
+      <map code="0xbb5b" name="1em"/><!-- HANGUL SYLLABLE MWEOLB -->
+      <map code="0xbb5c" name="1em"/><!-- HANGUL SYLLABLE MWEOLS -->
+      <map code="0xbb5d" name="1em"/><!-- HANGUL SYLLABLE MWEOLT -->
+      <map code="0xbb5e" name="1em"/><!-- HANGUL SYLLABLE MWEOLP -->
+      <map code="0xbb5f" name="1em"/><!-- HANGUL SYLLABLE MWEOLH -->
+      <map code="0xbb60" name="1em"/><!-- HANGUL SYLLABLE MWEOM -->
+      <map code="0xbb61" name="1em"/><!-- HANGUL SYLLABLE MWEOB -->
+      <map code="0xbb62" name="1em"/><!-- HANGUL SYLLABLE MWEOBS -->
+      <map code="0xbb63" name="1em"/><!-- HANGUL SYLLABLE MWEOS -->
+      <map code="0xbb64" name="1em"/><!-- HANGUL SYLLABLE MWEOSS -->
+      <map code="0xbb65" name="1em"/><!-- HANGUL SYLLABLE MWEONG -->
+      <map code="0xbb66" name="1em"/><!-- HANGUL SYLLABLE MWEOJ -->
+      <map code="0xbb67" name="1em"/><!-- HANGUL SYLLABLE MWEOC -->
+      <map code="0xbb68" name="1em"/><!-- HANGUL SYLLABLE MWEOK -->
+      <map code="0xbb69" name="1em"/><!-- HANGUL SYLLABLE MWEOT -->
+      <map code="0xbb6a" name="1em"/><!-- HANGUL SYLLABLE MWEOP -->
+      <map code="0xbb6b" name="1em"/><!-- HANGUL SYLLABLE MWEOH -->
+      <map code="0xbb6c" name="1em"/><!-- HANGUL SYLLABLE MWE -->
+      <map code="0xbb6d" name="1em"/><!-- HANGUL SYLLABLE MWEG -->
+      <map code="0xbb6e" name="1em"/><!-- HANGUL SYLLABLE MWEGG -->
+      <map code="0xbb6f" name="1em"/><!-- HANGUL SYLLABLE MWEGS -->
+      <map code="0xbb70" name="1em"/><!-- HANGUL SYLLABLE MWEN -->
+      <map code="0xbb71" name="1em"/><!-- HANGUL SYLLABLE MWENJ -->
+      <map code="0xbb72" name="1em"/><!-- HANGUL SYLLABLE MWENH -->
+      <map code="0xbb73" name="1em"/><!-- HANGUL SYLLABLE MWED -->
+      <map code="0xbb74" name="1em"/><!-- HANGUL SYLLABLE MWEL -->
+      <map code="0xbb75" name="1em"/><!-- HANGUL SYLLABLE MWELG -->
+      <map code="0xbb76" name="1em"/><!-- HANGUL SYLLABLE MWELM -->
+      <map code="0xbb77" name="1em"/><!-- HANGUL SYLLABLE MWELB -->
+      <map code="0xbb78" name="1em"/><!-- HANGUL SYLLABLE MWELS -->
+      <map code="0xbb79" name="1em"/><!-- HANGUL SYLLABLE MWELT -->
+      <map code="0xbb7a" name="1em"/><!-- HANGUL SYLLABLE MWELP -->
+      <map code="0xbb7b" name="1em"/><!-- HANGUL SYLLABLE MWELH -->
+      <map code="0xbb7c" name="1em"/><!-- HANGUL SYLLABLE MWEM -->
+      <map code="0xbb7d" name="1em"/><!-- HANGUL SYLLABLE MWEB -->
+      <map code="0xbb7e" name="1em"/><!-- HANGUL SYLLABLE MWEBS -->
+      <map code="0xbb7f" name="1em"/><!-- HANGUL SYLLABLE MWES -->
+      <map code="0xbb80" name="1em"/><!-- HANGUL SYLLABLE MWESS -->
+      <map code="0xbb81" name="1em"/><!-- HANGUL SYLLABLE MWENG -->
+      <map code="0xbb82" name="1em"/><!-- HANGUL SYLLABLE MWEJ -->
+      <map code="0xbb83" name="1em"/><!-- HANGUL SYLLABLE MWEC -->
+      <map code="0xbb84" name="1em"/><!-- HANGUL SYLLABLE MWEK -->
+      <map code="0xbb85" name="1em"/><!-- HANGUL SYLLABLE MWET -->
+      <map code="0xbb86" name="1em"/><!-- HANGUL SYLLABLE MWEP -->
+      <map code="0xbb87" name="1em"/><!-- HANGUL SYLLABLE MWEH -->
+      <map code="0xbb88" name="1em"/><!-- HANGUL SYLLABLE MWI -->
+      <map code="0xbb89" name="1em"/><!-- HANGUL SYLLABLE MWIG -->
+      <map code="0xbb8a" name="1em"/><!-- HANGUL SYLLABLE MWIGG -->
+      <map code="0xbb8b" name="1em"/><!-- HANGUL SYLLABLE MWIGS -->
+      <map code="0xbb8c" name="1em"/><!-- HANGUL SYLLABLE MWIN -->
+      <map code="0xbb8d" name="1em"/><!-- HANGUL SYLLABLE MWINJ -->
+      <map code="0xbb8e" name="1em"/><!-- HANGUL SYLLABLE MWINH -->
+      <map code="0xbb8f" name="1em"/><!-- HANGUL SYLLABLE MWID -->
+      <map code="0xbb90" name="1em"/><!-- HANGUL SYLLABLE MWIL -->
+      <map code="0xbb91" name="1em"/><!-- HANGUL SYLLABLE MWILG -->
+      <map code="0xbb92" name="1em"/><!-- HANGUL SYLLABLE MWILM -->
+      <map code="0xbb93" name="1em"/><!-- HANGUL SYLLABLE MWILB -->
+      <map code="0xbb94" name="1em"/><!-- HANGUL SYLLABLE MWILS -->
+      <map code="0xbb95" name="1em"/><!-- HANGUL SYLLABLE MWILT -->
+      <map code="0xbb96" name="1em"/><!-- HANGUL SYLLABLE MWILP -->
+      <map code="0xbb97" name="1em"/><!-- HANGUL SYLLABLE MWILH -->
+      <map code="0xbb98" name="1em"/><!-- HANGUL SYLLABLE MWIM -->
+      <map code="0xbb99" name="1em"/><!-- HANGUL SYLLABLE MWIB -->
+      <map code="0xbb9a" name="1em"/><!-- HANGUL SYLLABLE MWIBS -->
+      <map code="0xbb9b" name="1em"/><!-- HANGUL SYLLABLE MWIS -->
+      <map code="0xbb9c" name="1em"/><!-- HANGUL SYLLABLE MWISS -->
+      <map code="0xbb9d" name="1em"/><!-- HANGUL SYLLABLE MWING -->
+      <map code="0xbb9e" name="1em"/><!-- HANGUL SYLLABLE MWIJ -->
+      <map code="0xbb9f" name="1em"/><!-- HANGUL SYLLABLE MWIC -->
+      <map code="0xbba0" name="1em"/><!-- HANGUL SYLLABLE MWIK -->
+      <map code="0xbba1" name="1em"/><!-- HANGUL SYLLABLE MWIT -->
+      <map code="0xbba2" name="1em"/><!-- HANGUL SYLLABLE MWIP -->
+      <map code="0xbba3" name="1em"/><!-- HANGUL SYLLABLE MWIH -->
+      <map code="0xbba4" name="1em"/><!-- HANGUL SYLLABLE MYU -->
+      <map code="0xbba5" name="1em"/><!-- HANGUL SYLLABLE MYUG -->
+      <map code="0xbba6" name="1em"/><!-- HANGUL SYLLABLE MYUGG -->
+      <map code="0xbba7" name="1em"/><!-- HANGUL SYLLABLE MYUGS -->
+      <map code="0xbba8" name="1em"/><!-- HANGUL SYLLABLE MYUN -->
+      <map code="0xbba9" name="1em"/><!-- HANGUL SYLLABLE MYUNJ -->
+      <map code="0xbbaa" name="1em"/><!-- HANGUL SYLLABLE MYUNH -->
+      <map code="0xbbab" name="1em"/><!-- HANGUL SYLLABLE MYUD -->
+      <map code="0xbbac" name="1em"/><!-- HANGUL SYLLABLE MYUL -->
+      <map code="0xbbad" name="1em"/><!-- HANGUL SYLLABLE MYULG -->
+      <map code="0xbbae" name="1em"/><!-- HANGUL SYLLABLE MYULM -->
+      <map code="0xbbaf" name="1em"/><!-- HANGUL SYLLABLE MYULB -->
+      <map code="0xbbb0" name="1em"/><!-- HANGUL SYLLABLE MYULS -->
+      <map code="0xbbb1" name="1em"/><!-- HANGUL SYLLABLE MYULT -->
+      <map code="0xbbb2" name="1em"/><!-- HANGUL SYLLABLE MYULP -->
+      <map code="0xbbb3" name="1em"/><!-- HANGUL SYLLABLE MYULH -->
+      <map code="0xbbb4" name="1em"/><!-- HANGUL SYLLABLE MYUM -->
+      <map code="0xbbb5" name="1em"/><!-- HANGUL SYLLABLE MYUB -->
+      <map code="0xbbb6" name="1em"/><!-- HANGUL SYLLABLE MYUBS -->
+      <map code="0xbbb7" name="1em"/><!-- HANGUL SYLLABLE MYUS -->
+      <map code="0xbbb8" name="1em"/><!-- HANGUL SYLLABLE MYUSS -->
+      <map code="0xbbb9" name="1em"/><!-- HANGUL SYLLABLE MYUNG -->
+      <map code="0xbbba" name="1em"/><!-- HANGUL SYLLABLE MYUJ -->
+      <map code="0xbbbb" name="1em"/><!-- HANGUL SYLLABLE MYUC -->
+      <map code="0xbbbc" name="1em"/><!-- HANGUL SYLLABLE MYUK -->
+      <map code="0xbbbd" name="1em"/><!-- HANGUL SYLLABLE MYUT -->
+      <map code="0xbbbe" name="1em"/><!-- HANGUL SYLLABLE MYUP -->
+      <map code="0xbbbf" name="1em"/><!-- HANGUL SYLLABLE MYUH -->
+      <map code="0xbbc0" name="1em"/><!-- HANGUL SYLLABLE MEU -->
+      <map code="0xbbc1" name="1em"/><!-- HANGUL SYLLABLE MEUG -->
+      <map code="0xbbc2" name="1em"/><!-- HANGUL SYLLABLE MEUGG -->
+      <map code="0xbbc3" name="1em"/><!-- HANGUL SYLLABLE MEUGS -->
+      <map code="0xbbc4" name="1em"/><!-- HANGUL SYLLABLE MEUN -->
+      <map code="0xbbc5" name="1em"/><!-- HANGUL SYLLABLE MEUNJ -->
+      <map code="0xbbc6" name="1em"/><!-- HANGUL SYLLABLE MEUNH -->
+      <map code="0xbbc7" name="1em"/><!-- HANGUL SYLLABLE MEUD -->
+      <map code="0xbbc8" name="1em"/><!-- HANGUL SYLLABLE MEUL -->
+      <map code="0xbbc9" name="1em"/><!-- HANGUL SYLLABLE MEULG -->
+      <map code="0xbbca" name="1em"/><!-- HANGUL SYLLABLE MEULM -->
+      <map code="0xbbcb" name="1em"/><!-- HANGUL SYLLABLE MEULB -->
+      <map code="0xbbcc" name="1em"/><!-- HANGUL SYLLABLE MEULS -->
+      <map code="0xbbcd" name="1em"/><!-- HANGUL SYLLABLE MEULT -->
+      <map code="0xbbce" name="1em"/><!-- HANGUL SYLLABLE MEULP -->
+      <map code="0xbbcf" name="1em"/><!-- HANGUL SYLLABLE MEULH -->
+      <map code="0xbbd0" name="1em"/><!-- HANGUL SYLLABLE MEUM -->
+      <map code="0xbbd1" name="1em"/><!-- HANGUL SYLLABLE MEUB -->
+      <map code="0xbbd2" name="1em"/><!-- HANGUL SYLLABLE MEUBS -->
+      <map code="0xbbd3" name="1em"/><!-- HANGUL SYLLABLE MEUS -->
+      <map code="0xbbd4" name="1em"/><!-- HANGUL SYLLABLE MEUSS -->
+      <map code="0xbbd5" name="1em"/><!-- HANGUL SYLLABLE MEUNG -->
+      <map code="0xbbd6" name="1em"/><!-- HANGUL SYLLABLE MEUJ -->
+      <map code="0xbbd7" name="1em"/><!-- HANGUL SYLLABLE MEUC -->
+      <map code="0xbbd8" name="1em"/><!-- HANGUL SYLLABLE MEUK -->
+      <map code="0xbbd9" name="1em"/><!-- HANGUL SYLLABLE MEUT -->
+      <map code="0xbbda" name="1em"/><!-- HANGUL SYLLABLE MEUP -->
+      <map code="0xbbdb" name="1em"/><!-- HANGUL SYLLABLE MEUH -->
+      <map code="0xbbdc" name="1em"/><!-- HANGUL SYLLABLE MYI -->
+      <map code="0xbbdd" name="1em"/><!-- HANGUL SYLLABLE MYIG -->
+      <map code="0xbbde" name="1em"/><!-- HANGUL SYLLABLE MYIGG -->
+      <map code="0xbbdf" name="1em"/><!-- HANGUL SYLLABLE MYIGS -->
+      <map code="0xbbe0" name="1em"/><!-- HANGUL SYLLABLE MYIN -->
+      <map code="0xbbe1" name="1em"/><!-- HANGUL SYLLABLE MYINJ -->
+      <map code="0xbbe2" name="1em"/><!-- HANGUL SYLLABLE MYINH -->
+      <map code="0xbbe3" name="1em"/><!-- HANGUL SYLLABLE MYID -->
+      <map code="0xbbe4" name="1em"/><!-- HANGUL SYLLABLE MYIL -->
+      <map code="0xbbe5" name="1em"/><!-- HANGUL SYLLABLE MYILG -->
+      <map code="0xbbe6" name="1em"/><!-- HANGUL SYLLABLE MYILM -->
+      <map code="0xbbe7" name="1em"/><!-- HANGUL SYLLABLE MYILB -->
+      <map code="0xbbe8" name="1em"/><!-- HANGUL SYLLABLE MYILS -->
+      <map code="0xbbe9" name="1em"/><!-- HANGUL SYLLABLE MYILT -->
+      <map code="0xbbea" name="1em"/><!-- HANGUL SYLLABLE MYILP -->
+      <map code="0xbbeb" name="1em"/><!-- HANGUL SYLLABLE MYILH -->
+      <map code="0xbbec" name="1em"/><!-- HANGUL SYLLABLE MYIM -->
+      <map code="0xbbed" name="1em"/><!-- HANGUL SYLLABLE MYIB -->
+      <map code="0xbbee" name="1em"/><!-- HANGUL SYLLABLE MYIBS -->
+      <map code="0xbbef" name="1em"/><!-- HANGUL SYLLABLE MYIS -->
+      <map code="0xbbf0" name="1em"/><!-- HANGUL SYLLABLE MYISS -->
+      <map code="0xbbf1" name="1em"/><!-- HANGUL SYLLABLE MYING -->
+      <map code="0xbbf2" name="1em"/><!-- HANGUL SYLLABLE MYIJ -->
+      <map code="0xbbf3" name="1em"/><!-- HANGUL SYLLABLE MYIC -->
+      <map code="0xbbf4" name="1em"/><!-- HANGUL SYLLABLE MYIK -->
+      <map code="0xbbf5" name="1em"/><!-- HANGUL SYLLABLE MYIT -->
+      <map code="0xbbf6" name="1em"/><!-- HANGUL SYLLABLE MYIP -->
+      <map code="0xbbf7" name="1em"/><!-- HANGUL SYLLABLE MYIH -->
+      <map code="0xbbf8" name="1em"/><!-- HANGUL SYLLABLE MI -->
+      <map code="0xbbf9" name="1em"/><!-- HANGUL SYLLABLE MIG -->
+      <map code="0xbbfa" name="1em"/><!-- HANGUL SYLLABLE MIGG -->
+      <map code="0xbbfb" name="1em"/><!-- HANGUL SYLLABLE MIGS -->
+      <map code="0xbbfc" name="1em"/><!-- HANGUL SYLLABLE MIN -->
+      <map code="0xbbfd" name="1em"/><!-- HANGUL SYLLABLE MINJ -->
+      <map code="0xbbfe" name="1em"/><!-- HANGUL SYLLABLE MINH -->
+      <map code="0xbbff" name="1em"/><!-- HANGUL SYLLABLE MID -->
+      <map code="0xbc00" name="1em"/><!-- HANGUL SYLLABLE MIL -->
+      <map code="0xbc01" name="1em"/><!-- HANGUL SYLLABLE MILG -->
+      <map code="0xbc02" name="1em"/><!-- HANGUL SYLLABLE MILM -->
+      <map code="0xbc03" name="1em"/><!-- HANGUL SYLLABLE MILB -->
+      <map code="0xbc04" name="1em"/><!-- HANGUL SYLLABLE MILS -->
+      <map code="0xbc05" name="1em"/><!-- HANGUL SYLLABLE MILT -->
+      <map code="0xbc06" name="1em"/><!-- HANGUL SYLLABLE MILP -->
+      <map code="0xbc07" name="1em"/><!-- HANGUL SYLLABLE MILH -->
+      <map code="0xbc08" name="1em"/><!-- HANGUL SYLLABLE MIM -->
+      <map code="0xbc09" name="1em"/><!-- HANGUL SYLLABLE MIB -->
+      <map code="0xbc0a" name="1em"/><!-- HANGUL SYLLABLE MIBS -->
+      <map code="0xbc0b" name="1em"/><!-- HANGUL SYLLABLE MIS -->
+      <map code="0xbc0c" name="1em"/><!-- HANGUL SYLLABLE MISS -->
+      <map code="0xbc0d" name="1em"/><!-- HANGUL SYLLABLE MING -->
+      <map code="0xbc0e" name="1em"/><!-- HANGUL SYLLABLE MIJ -->
+      <map code="0xbc0f" name="1em"/><!-- HANGUL SYLLABLE MIC -->
+      <map code="0xbc10" name="1em"/><!-- HANGUL SYLLABLE MIK -->
+      <map code="0xbc11" name="1em"/><!-- HANGUL SYLLABLE MIT -->
+      <map code="0xbc12" name="1em"/><!-- HANGUL SYLLABLE MIP -->
+      <map code="0xbc13" name="1em"/><!-- HANGUL SYLLABLE MIH -->
+      <map code="0xbc14" name="1em"/><!-- HANGUL SYLLABLE BA -->
+      <map code="0xbc15" name="1em"/><!-- HANGUL SYLLABLE BAG -->
+      <map code="0xbc16" name="1em"/><!-- HANGUL SYLLABLE BAGG -->
+      <map code="0xbc17" name="1em"/><!-- HANGUL SYLLABLE BAGS -->
+      <map code="0xbc18" name="1em"/><!-- HANGUL SYLLABLE BAN -->
+      <map code="0xbc19" name="1em"/><!-- HANGUL SYLLABLE BANJ -->
+      <map code="0xbc1a" name="1em"/><!-- HANGUL SYLLABLE BANH -->
+      <map code="0xbc1b" name="1em"/><!-- HANGUL SYLLABLE BAD -->
+      <map code="0xbc1c" name="1em"/><!-- HANGUL SYLLABLE BAL -->
+      <map code="0xbc1d" name="1em"/><!-- HANGUL SYLLABLE BALG -->
+      <map code="0xbc1e" name="1em"/><!-- HANGUL SYLLABLE BALM -->
+      <map code="0xbc1f" name="1em"/><!-- HANGUL SYLLABLE BALB -->
+      <map code="0xbc20" name="1em"/><!-- HANGUL SYLLABLE BALS -->
+      <map code="0xbc21" name="1em"/><!-- HANGUL SYLLABLE BALT -->
+      <map code="0xbc22" name="1em"/><!-- HANGUL SYLLABLE BALP -->
+      <map code="0xbc23" name="1em"/><!-- HANGUL SYLLABLE BALH -->
+      <map code="0xbc24" name="1em"/><!-- HANGUL SYLLABLE BAM -->
+      <map code="0xbc25" name="1em"/><!-- HANGUL SYLLABLE BAB -->
+      <map code="0xbc26" name="1em"/><!-- HANGUL SYLLABLE BABS -->
+      <map code="0xbc27" name="1em"/><!-- HANGUL SYLLABLE BAS -->
+      <map code="0xbc28" name="1em"/><!-- HANGUL SYLLABLE BASS -->
+      <map code="0xbc29" name="1em"/><!-- HANGUL SYLLABLE BANG -->
+      <map code="0xbc2a" name="1em"/><!-- HANGUL SYLLABLE BAJ -->
+      <map code="0xbc2b" name="1em"/><!-- HANGUL SYLLABLE BAC -->
+      <map code="0xbc2c" name="1em"/><!-- HANGUL SYLLABLE BAK -->
+      <map code="0xbc2d" name="1em"/><!-- HANGUL SYLLABLE BAT -->
+      <map code="0xbc2e" name="1em"/><!-- HANGUL SYLLABLE BAP -->
+      <map code="0xbc2f" name="1em"/><!-- HANGUL SYLLABLE BAH -->
+      <map code="0xbc30" name="1em"/><!-- HANGUL SYLLABLE BAE -->
+      <map code="0xbc31" name="1em"/><!-- HANGUL SYLLABLE BAEG -->
+      <map code="0xbc32" name="1em"/><!-- HANGUL SYLLABLE BAEGG -->
+      <map code="0xbc33" name="1em"/><!-- HANGUL SYLLABLE BAEGS -->
+      <map code="0xbc34" name="1em"/><!-- HANGUL SYLLABLE BAEN -->
+      <map code="0xbc35" name="1em"/><!-- HANGUL SYLLABLE BAENJ -->
+      <map code="0xbc36" name="1em"/><!-- HANGUL SYLLABLE BAENH -->
+      <map code="0xbc37" name="1em"/><!-- HANGUL SYLLABLE BAED -->
+      <map code="0xbc38" name="1em"/><!-- HANGUL SYLLABLE BAEL -->
+      <map code="0xbc39" name="1em"/><!-- HANGUL SYLLABLE BAELG -->
+      <map code="0xbc3a" name="1em"/><!-- HANGUL SYLLABLE BAELM -->
+      <map code="0xbc3b" name="1em"/><!-- HANGUL SYLLABLE BAELB -->
+      <map code="0xbc3c" name="1em"/><!-- HANGUL SYLLABLE BAELS -->
+      <map code="0xbc3d" name="1em"/><!-- HANGUL SYLLABLE BAELT -->
+      <map code="0xbc3e" name="1em"/><!-- HANGUL SYLLABLE BAELP -->
+      <map code="0xbc3f" name="1em"/><!-- HANGUL SYLLABLE BAELH -->
+      <map code="0xbc40" name="1em"/><!-- HANGUL SYLLABLE BAEM -->
+      <map code="0xbc41" name="1em"/><!-- HANGUL SYLLABLE BAEB -->
+      <map code="0xbc42" name="1em"/><!-- HANGUL SYLLABLE BAEBS -->
+      <map code="0xbc43" name="1em"/><!-- HANGUL SYLLABLE BAES -->
+      <map code="0xbc44" name="1em"/><!-- HANGUL SYLLABLE BAESS -->
+      <map code="0xbc45" name="1em"/><!-- HANGUL SYLLABLE BAENG -->
+      <map code="0xbc46" name="1em"/><!-- HANGUL SYLLABLE BAEJ -->
+      <map code="0xbc47" name="1em"/><!-- HANGUL SYLLABLE BAEC -->
+      <map code="0xbc48" name="1em"/><!-- HANGUL SYLLABLE BAEK -->
+      <map code="0xbc49" name="1em"/><!-- HANGUL SYLLABLE BAET -->
+      <map code="0xbc4a" name="1em"/><!-- HANGUL SYLLABLE BAEP -->
+      <map code="0xbc4b" name="1em"/><!-- HANGUL SYLLABLE BAEH -->
+      <map code="0xbc4c" name="1em"/><!-- HANGUL SYLLABLE BYA -->
+      <map code="0xbc4d" name="1em"/><!-- HANGUL SYLLABLE BYAG -->
+      <map code="0xbc4e" name="1em"/><!-- HANGUL SYLLABLE BYAGG -->
+      <map code="0xbc4f" name="1em"/><!-- HANGUL SYLLABLE BYAGS -->
+      <map code="0xbc50" name="1em"/><!-- HANGUL SYLLABLE BYAN -->
+      <map code="0xbc51" name="1em"/><!-- HANGUL SYLLABLE BYANJ -->
+      <map code="0xbc52" name="1em"/><!-- HANGUL SYLLABLE BYANH -->
+      <map code="0xbc53" name="1em"/><!-- HANGUL SYLLABLE BYAD -->
+      <map code="0xbc54" name="1em"/><!-- HANGUL SYLLABLE BYAL -->
+      <map code="0xbc55" name="1em"/><!-- HANGUL SYLLABLE BYALG -->
+      <map code="0xbc56" name="1em"/><!-- HANGUL SYLLABLE BYALM -->
+      <map code="0xbc57" name="1em"/><!-- HANGUL SYLLABLE BYALB -->
+      <map code="0xbc58" name="1em"/><!-- HANGUL SYLLABLE BYALS -->
+      <map code="0xbc59" name="1em"/><!-- HANGUL SYLLABLE BYALT -->
+      <map code="0xbc5a" name="1em"/><!-- HANGUL SYLLABLE BYALP -->
+      <map code="0xbc5b" name="1em"/><!-- HANGUL SYLLABLE BYALH -->
+      <map code="0xbc5c" name="1em"/><!-- HANGUL SYLLABLE BYAM -->
+      <map code="0xbc5d" name="1em"/><!-- HANGUL SYLLABLE BYAB -->
+      <map code="0xbc5e" name="1em"/><!-- HANGUL SYLLABLE BYABS -->
+      <map code="0xbc5f" name="1em"/><!-- HANGUL SYLLABLE BYAS -->
+      <map code="0xbc60" name="1em"/><!-- HANGUL SYLLABLE BYASS -->
+      <map code="0xbc61" name="1em"/><!-- HANGUL SYLLABLE BYANG -->
+      <map code="0xbc62" name="1em"/><!-- HANGUL SYLLABLE BYAJ -->
+      <map code="0xbc63" name="1em"/><!-- HANGUL SYLLABLE BYAC -->
+      <map code="0xbc64" name="1em"/><!-- HANGUL SYLLABLE BYAK -->
+      <map code="0xbc65" name="1em"/><!-- HANGUL SYLLABLE BYAT -->
+      <map code="0xbc66" name="1em"/><!-- HANGUL SYLLABLE BYAP -->
+      <map code="0xbc67" name="1em"/><!-- HANGUL SYLLABLE BYAH -->
+      <map code="0xbc68" name="1em"/><!-- HANGUL SYLLABLE BYAE -->
+      <map code="0xbc69" name="1em"/><!-- HANGUL SYLLABLE BYAEG -->
+      <map code="0xbc6a" name="1em"/><!-- HANGUL SYLLABLE BYAEGG -->
+      <map code="0xbc6b" name="1em"/><!-- HANGUL SYLLABLE BYAEGS -->
+      <map code="0xbc6c" name="1em"/><!-- HANGUL SYLLABLE BYAEN -->
+      <map code="0xbc6d" name="1em"/><!-- HANGUL SYLLABLE BYAENJ -->
+      <map code="0xbc6e" name="1em"/><!-- HANGUL SYLLABLE BYAENH -->
+      <map code="0xbc6f" name="1em"/><!-- HANGUL SYLLABLE BYAED -->
+      <map code="0xbc70" name="1em"/><!-- HANGUL SYLLABLE BYAEL -->
+      <map code="0xbc71" name="1em"/><!-- HANGUL SYLLABLE BYAELG -->
+      <map code="0xbc72" name="1em"/><!-- HANGUL SYLLABLE BYAELM -->
+      <map code="0xbc73" name="1em"/><!-- HANGUL SYLLABLE BYAELB -->
+      <map code="0xbc74" name="1em"/><!-- HANGUL SYLLABLE BYAELS -->
+      <map code="0xbc75" name="1em"/><!-- HANGUL SYLLABLE BYAELT -->
+      <map code="0xbc76" name="1em"/><!-- HANGUL SYLLABLE BYAELP -->
+      <map code="0xbc77" name="1em"/><!-- HANGUL SYLLABLE BYAELH -->
+      <map code="0xbc78" name="1em"/><!-- HANGUL SYLLABLE BYAEM -->
+      <map code="0xbc79" name="1em"/><!-- HANGUL SYLLABLE BYAEB -->
+      <map code="0xbc7a" name="1em"/><!-- HANGUL SYLLABLE BYAEBS -->
+      <map code="0xbc7b" name="1em"/><!-- HANGUL SYLLABLE BYAES -->
+      <map code="0xbc7c" name="1em"/><!-- HANGUL SYLLABLE BYAESS -->
+      <map code="0xbc7d" name="1em"/><!-- HANGUL SYLLABLE BYAENG -->
+      <map code="0xbc7e" name="1em"/><!-- HANGUL SYLLABLE BYAEJ -->
+      <map code="0xbc7f" name="1em"/><!-- HANGUL SYLLABLE BYAEC -->
+      <map code="0xbc80" name="1em"/><!-- HANGUL SYLLABLE BYAEK -->
+      <map code="0xbc81" name="1em"/><!-- HANGUL SYLLABLE BYAET -->
+      <map code="0xbc82" name="1em"/><!-- HANGUL SYLLABLE BYAEP -->
+      <map code="0xbc83" name="1em"/><!-- HANGUL SYLLABLE BYAEH -->
+      <map code="0xbc84" name="1em"/><!-- HANGUL SYLLABLE BEO -->
+      <map code="0xbc85" name="1em"/><!-- HANGUL SYLLABLE BEOG -->
+      <map code="0xbc86" name="1em"/><!-- HANGUL SYLLABLE BEOGG -->
+      <map code="0xbc87" name="1em"/><!-- HANGUL SYLLABLE BEOGS -->
+      <map code="0xbc88" name="1em"/><!-- HANGUL SYLLABLE BEON -->
+      <map code="0xbc89" name="1em"/><!-- HANGUL SYLLABLE BEONJ -->
+      <map code="0xbc8a" name="1em"/><!-- HANGUL SYLLABLE BEONH -->
+      <map code="0xbc8b" name="1em"/><!-- HANGUL SYLLABLE BEOD -->
+      <map code="0xbc8c" name="1em"/><!-- HANGUL SYLLABLE BEOL -->
+      <map code="0xbc8d" name="1em"/><!-- HANGUL SYLLABLE BEOLG -->
+      <map code="0xbc8e" name="1em"/><!-- HANGUL SYLLABLE BEOLM -->
+      <map code="0xbc8f" name="1em"/><!-- HANGUL SYLLABLE BEOLB -->
+      <map code="0xbc90" name="1em"/><!-- HANGUL SYLLABLE BEOLS -->
+      <map code="0xbc91" name="1em"/><!-- HANGUL SYLLABLE BEOLT -->
+      <map code="0xbc92" name="1em"/><!-- HANGUL SYLLABLE BEOLP -->
+      <map code="0xbc93" name="1em"/><!-- HANGUL SYLLABLE BEOLH -->
+      <map code="0xbc94" name="1em"/><!-- HANGUL SYLLABLE BEOM -->
+      <map code="0xbc95" name="1em"/><!-- HANGUL SYLLABLE BEOB -->
+      <map code="0xbc96" name="1em"/><!-- HANGUL SYLLABLE BEOBS -->
+      <map code="0xbc97" name="1em"/><!-- HANGUL SYLLABLE BEOS -->
+      <map code="0xbc98" name="1em"/><!-- HANGUL SYLLABLE BEOSS -->
+      <map code="0xbc99" name="1em"/><!-- HANGUL SYLLABLE BEONG -->
+      <map code="0xbc9a" name="1em"/><!-- HANGUL SYLLABLE BEOJ -->
+      <map code="0xbc9b" name="1em"/><!-- HANGUL SYLLABLE BEOC -->
+      <map code="0xbc9c" name="1em"/><!-- HANGUL SYLLABLE BEOK -->
+      <map code="0xbc9d" name="1em"/><!-- HANGUL SYLLABLE BEOT -->
+      <map code="0xbc9e" name="1em"/><!-- HANGUL SYLLABLE BEOP -->
+      <map code="0xbc9f" name="1em"/><!-- HANGUL SYLLABLE BEOH -->
+      <map code="0xbca0" name="1em"/><!-- HANGUL SYLLABLE BE -->
+      <map code="0xbca1" name="1em"/><!-- HANGUL SYLLABLE BEG -->
+      <map code="0xbca2" name="1em"/><!-- HANGUL SYLLABLE BEGG -->
+      <map code="0xbca3" name="1em"/><!-- HANGUL SYLLABLE BEGS -->
+      <map code="0xbca4" name="1em"/><!-- HANGUL SYLLABLE BEN -->
+      <map code="0xbca5" name="1em"/><!-- HANGUL SYLLABLE BENJ -->
+      <map code="0xbca6" name="1em"/><!-- HANGUL SYLLABLE BENH -->
+      <map code="0xbca7" name="1em"/><!-- HANGUL SYLLABLE BED -->
+      <map code="0xbca8" name="1em"/><!-- HANGUL SYLLABLE BEL -->
+      <map code="0xbca9" name="1em"/><!-- HANGUL SYLLABLE BELG -->
+      <map code="0xbcaa" name="1em"/><!-- HANGUL SYLLABLE BELM -->
+      <map code="0xbcab" name="1em"/><!-- HANGUL SYLLABLE BELB -->
+      <map code="0xbcac" name="1em"/><!-- HANGUL SYLLABLE BELS -->
+      <map code="0xbcad" name="1em"/><!-- HANGUL SYLLABLE BELT -->
+      <map code="0xbcae" name="1em"/><!-- HANGUL SYLLABLE BELP -->
+      <map code="0xbcaf" name="1em"/><!-- HANGUL SYLLABLE BELH -->
+      <map code="0xbcb0" name="1em"/><!-- HANGUL SYLLABLE BEM -->
+      <map code="0xbcb1" name="1em"/><!-- HANGUL SYLLABLE BEB -->
+      <map code="0xbcb2" name="1em"/><!-- HANGUL SYLLABLE BEBS -->
+      <map code="0xbcb3" name="1em"/><!-- HANGUL SYLLABLE BES -->
+      <map code="0xbcb4" name="1em"/><!-- HANGUL SYLLABLE BESS -->
+      <map code="0xbcb5" name="1em"/><!-- HANGUL SYLLABLE BENG -->
+      <map code="0xbcb6" name="1em"/><!-- HANGUL SYLLABLE BEJ -->
+      <map code="0xbcb7" name="1em"/><!-- HANGUL SYLLABLE BEC -->
+      <map code="0xbcb8" name="1em"/><!-- HANGUL SYLLABLE BEK -->
+      <map code="0xbcb9" name="1em"/><!-- HANGUL SYLLABLE BET -->
+      <map code="0xbcba" name="1em"/><!-- HANGUL SYLLABLE BEP -->
+      <map code="0xbcbb" name="1em"/><!-- HANGUL SYLLABLE BEH -->
+      <map code="0xbcbc" name="1em"/><!-- HANGUL SYLLABLE BYEO -->
+      <map code="0xbcbd" name="1em"/><!-- HANGUL SYLLABLE BYEOG -->
+      <map code="0xbcbe" name="1em"/><!-- HANGUL SYLLABLE BYEOGG -->
+      <map code="0xbcbf" name="1em"/><!-- HANGUL SYLLABLE BYEOGS -->
+      <map code="0xbcc0" name="1em"/><!-- HANGUL SYLLABLE BYEON -->
+      <map code="0xbcc1" name="1em"/><!-- HANGUL SYLLABLE BYEONJ -->
+      <map code="0xbcc2" name="1em"/><!-- HANGUL SYLLABLE BYEONH -->
+      <map code="0xbcc3" name="1em"/><!-- HANGUL SYLLABLE BYEOD -->
+      <map code="0xbcc4" name="1em"/><!-- HANGUL SYLLABLE BYEOL -->
+      <map code="0xbcc5" name="1em"/><!-- HANGUL SYLLABLE BYEOLG -->
+      <map code="0xbcc6" name="1em"/><!-- HANGUL SYLLABLE BYEOLM -->
+      <map code="0xbcc7" name="1em"/><!-- HANGUL SYLLABLE BYEOLB -->
+      <map code="0xbcc8" name="1em"/><!-- HANGUL SYLLABLE BYEOLS -->
+      <map code="0xbcc9" name="1em"/><!-- HANGUL SYLLABLE BYEOLT -->
+      <map code="0xbcca" name="1em"/><!-- HANGUL SYLLABLE BYEOLP -->
+      <map code="0xbccb" name="1em"/><!-- HANGUL SYLLABLE BYEOLH -->
+      <map code="0xbccc" name="1em"/><!-- HANGUL SYLLABLE BYEOM -->
+      <map code="0xbccd" name="1em"/><!-- HANGUL SYLLABLE BYEOB -->
+      <map code="0xbcce" name="1em"/><!-- HANGUL SYLLABLE BYEOBS -->
+      <map code="0xbccf" name="1em"/><!-- HANGUL SYLLABLE BYEOS -->
+      <map code="0xbcd0" name="1em"/><!-- HANGUL SYLLABLE BYEOSS -->
+      <map code="0xbcd1" name="1em"/><!-- HANGUL SYLLABLE BYEONG -->
+      <map code="0xbcd2" name="1em"/><!-- HANGUL SYLLABLE BYEOJ -->
+      <map code="0xbcd3" name="1em"/><!-- HANGUL SYLLABLE BYEOC -->
+      <map code="0xbcd4" name="1em"/><!-- HANGUL SYLLABLE BYEOK -->
+      <map code="0xbcd5" name="1em"/><!-- HANGUL SYLLABLE BYEOT -->
+      <map code="0xbcd6" name="1em"/><!-- HANGUL SYLLABLE BYEOP -->
+      <map code="0xbcd7" name="1em"/><!-- HANGUL SYLLABLE BYEOH -->
+      <map code="0xbcd8" name="1em"/><!-- HANGUL SYLLABLE BYE -->
+      <map code="0xbcd9" name="1em"/><!-- HANGUL SYLLABLE BYEG -->
+      <map code="0xbcda" name="1em"/><!-- HANGUL SYLLABLE BYEGG -->
+      <map code="0xbcdb" name="1em"/><!-- HANGUL SYLLABLE BYEGS -->
+      <map code="0xbcdc" name="1em"/><!-- HANGUL SYLLABLE BYEN -->
+      <map code="0xbcdd" name="1em"/><!-- HANGUL SYLLABLE BYENJ -->
+      <map code="0xbcde" name="1em"/><!-- HANGUL SYLLABLE BYENH -->
+      <map code="0xbcdf" name="1em"/><!-- HANGUL SYLLABLE BYED -->
+      <map code="0xbce0" name="1em"/><!-- HANGUL SYLLABLE BYEL -->
+      <map code="0xbce1" name="1em"/><!-- HANGUL SYLLABLE BYELG -->
+      <map code="0xbce2" name="1em"/><!-- HANGUL SYLLABLE BYELM -->
+      <map code="0xbce3" name="1em"/><!-- HANGUL SYLLABLE BYELB -->
+      <map code="0xbce4" name="1em"/><!-- HANGUL SYLLABLE BYELS -->
+      <map code="0xbce5" name="1em"/><!-- HANGUL SYLLABLE BYELT -->
+      <map code="0xbce6" name="1em"/><!-- HANGUL SYLLABLE BYELP -->
+      <map code="0xbce7" name="1em"/><!-- HANGUL SYLLABLE BYELH -->
+      <map code="0xbce8" name="1em"/><!-- HANGUL SYLLABLE BYEM -->
+      <map code="0xbce9" name="1em"/><!-- HANGUL SYLLABLE BYEB -->
+      <map code="0xbcea" name="1em"/><!-- HANGUL SYLLABLE BYEBS -->
+      <map code="0xbceb" name="1em"/><!-- HANGUL SYLLABLE BYES -->
+      <map code="0xbcec" name="1em"/><!-- HANGUL SYLLABLE BYESS -->
+      <map code="0xbced" name="1em"/><!-- HANGUL SYLLABLE BYENG -->
+      <map code="0xbcee" name="1em"/><!-- HANGUL SYLLABLE BYEJ -->
+      <map code="0xbcef" name="1em"/><!-- HANGUL SYLLABLE BYEC -->
+      <map code="0xbcf0" name="1em"/><!-- HANGUL SYLLABLE BYEK -->
+      <map code="0xbcf1" name="1em"/><!-- HANGUL SYLLABLE BYET -->
+      <map code="0xbcf2" name="1em"/><!-- HANGUL SYLLABLE BYEP -->
+      <map code="0xbcf3" name="1em"/><!-- HANGUL SYLLABLE BYEH -->
+      <map code="0xbcf4" name="1em"/><!-- HANGUL SYLLABLE BO -->
+      <map code="0xbcf5" name="1em"/><!-- HANGUL SYLLABLE BOG -->
+      <map code="0xbcf6" name="1em"/><!-- HANGUL SYLLABLE BOGG -->
+      <map code="0xbcf7" name="1em"/><!-- HANGUL SYLLABLE BOGS -->
+      <map code="0xbcf8" name="1em"/><!-- HANGUL SYLLABLE BON -->
+      <map code="0xbcf9" name="1em"/><!-- HANGUL SYLLABLE BONJ -->
+      <map code="0xbcfa" name="1em"/><!-- HANGUL SYLLABLE BONH -->
+      <map code="0xbcfb" name="1em"/><!-- HANGUL SYLLABLE BOD -->
+      <map code="0xbcfc" name="1em"/><!-- HANGUL SYLLABLE BOL -->
+      <map code="0xbcfd" name="1em"/><!-- HANGUL SYLLABLE BOLG -->
+      <map code="0xbcfe" name="1em"/><!-- HANGUL SYLLABLE BOLM -->
+      <map code="0xbcff" name="1em"/><!-- HANGUL SYLLABLE BOLB -->
+      <map code="0xbd00" name="1em"/><!-- HANGUL SYLLABLE BOLS -->
+      <map code="0xbd01" name="1em"/><!-- HANGUL SYLLABLE BOLT -->
+      <map code="0xbd02" name="1em"/><!-- HANGUL SYLLABLE BOLP -->
+      <map code="0xbd03" name="1em"/><!-- HANGUL SYLLABLE BOLH -->
+      <map code="0xbd04" name="1em"/><!-- HANGUL SYLLABLE BOM -->
+      <map code="0xbd05" name="1em"/><!-- HANGUL SYLLABLE BOB -->
+      <map code="0xbd06" name="1em"/><!-- HANGUL SYLLABLE BOBS -->
+      <map code="0xbd07" name="1em"/><!-- HANGUL SYLLABLE BOS -->
+      <map code="0xbd08" name="1em"/><!-- HANGUL SYLLABLE BOSS -->
+      <map code="0xbd09" name="1em"/><!-- HANGUL SYLLABLE BONG -->
+      <map code="0xbd0a" name="1em"/><!-- HANGUL SYLLABLE BOJ -->
+      <map code="0xbd0b" name="1em"/><!-- HANGUL SYLLABLE BOC -->
+      <map code="0xbd0c" name="1em"/><!-- HANGUL SYLLABLE BOK -->
+      <map code="0xbd0d" name="1em"/><!-- HANGUL SYLLABLE BOT -->
+      <map code="0xbd0e" name="1em"/><!-- HANGUL SYLLABLE BOP -->
+      <map code="0xbd0f" name="1em"/><!-- HANGUL SYLLABLE BOH -->
+      <map code="0xbd10" name="1em"/><!-- HANGUL SYLLABLE BWA -->
+      <map code="0xbd11" name="1em"/><!-- HANGUL SYLLABLE BWAG -->
+      <map code="0xbd12" name="1em"/><!-- HANGUL SYLLABLE BWAGG -->
+      <map code="0xbd13" name="1em"/><!-- HANGUL SYLLABLE BWAGS -->
+      <map code="0xbd14" name="1em"/><!-- HANGUL SYLLABLE BWAN -->
+      <map code="0xbd15" name="1em"/><!-- HANGUL SYLLABLE BWANJ -->
+      <map code="0xbd16" name="1em"/><!-- HANGUL SYLLABLE BWANH -->
+      <map code="0xbd17" name="1em"/><!-- HANGUL SYLLABLE BWAD -->
+      <map code="0xbd18" name="1em"/><!-- HANGUL SYLLABLE BWAL -->
+      <map code="0xbd19" name="1em"/><!-- HANGUL SYLLABLE BWALG -->
+      <map code="0xbd1a" name="1em"/><!-- HANGUL SYLLABLE BWALM -->
+      <map code="0xbd1b" name="1em"/><!-- HANGUL SYLLABLE BWALB -->
+      <map code="0xbd1c" name="1em"/><!-- HANGUL SYLLABLE BWALS -->
+      <map code="0xbd1d" name="1em"/><!-- HANGUL SYLLABLE BWALT -->
+      <map code="0xbd1e" name="1em"/><!-- HANGUL SYLLABLE BWALP -->
+      <map code="0xbd1f" name="1em"/><!-- HANGUL SYLLABLE BWALH -->
+      <map code="0xbd20" name="1em"/><!-- HANGUL SYLLABLE BWAM -->
+      <map code="0xbd21" name="1em"/><!-- HANGUL SYLLABLE BWAB -->
+      <map code="0xbd22" name="1em"/><!-- HANGUL SYLLABLE BWABS -->
+      <map code="0xbd23" name="1em"/><!-- HANGUL SYLLABLE BWAS -->
+      <map code="0xbd24" name="1em"/><!-- HANGUL SYLLABLE BWASS -->
+      <map code="0xbd25" name="1em"/><!-- HANGUL SYLLABLE BWANG -->
+      <map code="0xbd26" name="1em"/><!-- HANGUL SYLLABLE BWAJ -->
+      <map code="0xbd27" name="1em"/><!-- HANGUL SYLLABLE BWAC -->
+      <map code="0xbd28" name="1em"/><!-- HANGUL SYLLABLE BWAK -->
+      <map code="0xbd29" name="1em"/><!-- HANGUL SYLLABLE BWAT -->
+      <map code="0xbd2a" name="1em"/><!-- HANGUL SYLLABLE BWAP -->
+      <map code="0xbd2b" name="1em"/><!-- HANGUL SYLLABLE BWAH -->
+      <map code="0xbd2c" name="1em"/><!-- HANGUL SYLLABLE BWAE -->
+      <map code="0xbd2d" name="1em"/><!-- HANGUL SYLLABLE BWAEG -->
+      <map code="0xbd2e" name="1em"/><!-- HANGUL SYLLABLE BWAEGG -->
+      <map code="0xbd2f" name="1em"/><!-- HANGUL SYLLABLE BWAEGS -->
+      <map code="0xbd30" name="1em"/><!-- HANGUL SYLLABLE BWAEN -->
+      <map code="0xbd31" name="1em"/><!-- HANGUL SYLLABLE BWAENJ -->
+      <map code="0xbd32" name="1em"/><!-- HANGUL SYLLABLE BWAENH -->
+      <map code="0xbd33" name="1em"/><!-- HANGUL SYLLABLE BWAED -->
+      <map code="0xbd34" name="1em"/><!-- HANGUL SYLLABLE BWAEL -->
+      <map code="0xbd35" name="1em"/><!-- HANGUL SYLLABLE BWAELG -->
+      <map code="0xbd36" name="1em"/><!-- HANGUL SYLLABLE BWAELM -->
+      <map code="0xbd37" name="1em"/><!-- HANGUL SYLLABLE BWAELB -->
+      <map code="0xbd38" name="1em"/><!-- HANGUL SYLLABLE BWAELS -->
+      <map code="0xbd39" name="1em"/><!-- HANGUL SYLLABLE BWAELT -->
+      <map code="0xbd3a" name="1em"/><!-- HANGUL SYLLABLE BWAELP -->
+      <map code="0xbd3b" name="1em"/><!-- HANGUL SYLLABLE BWAELH -->
+      <map code="0xbd3c" name="1em"/><!-- HANGUL SYLLABLE BWAEM -->
+      <map code="0xbd3d" name="1em"/><!-- HANGUL SYLLABLE BWAEB -->
+      <map code="0xbd3e" name="1em"/><!-- HANGUL SYLLABLE BWAEBS -->
+      <map code="0xbd3f" name="1em"/><!-- HANGUL SYLLABLE BWAES -->
+      <map code="0xbd40" name="1em"/><!-- HANGUL SYLLABLE BWAESS -->
+      <map code="0xbd41" name="1em"/><!-- HANGUL SYLLABLE BWAENG -->
+      <map code="0xbd42" name="1em"/><!-- HANGUL SYLLABLE BWAEJ -->
+      <map code="0xbd43" name="1em"/><!-- HANGUL SYLLABLE BWAEC -->
+      <map code="0xbd44" name="1em"/><!-- HANGUL SYLLABLE BWAEK -->
+      <map code="0xbd45" name="1em"/><!-- HANGUL SYLLABLE BWAET -->
+      <map code="0xbd46" name="1em"/><!-- HANGUL SYLLABLE BWAEP -->
+      <map code="0xbd47" name="1em"/><!-- HANGUL SYLLABLE BWAEH -->
+      <map code="0xbd48" name="1em"/><!-- HANGUL SYLLABLE BOE -->
+      <map code="0xbd49" name="1em"/><!-- HANGUL SYLLABLE BOEG -->
+      <map code="0xbd4a" name="1em"/><!-- HANGUL SYLLABLE BOEGG -->
+      <map code="0xbd4b" name="1em"/><!-- HANGUL SYLLABLE BOEGS -->
+      <map code="0xbd4c" name="1em"/><!-- HANGUL SYLLABLE BOEN -->
+      <map code="0xbd4d" name="1em"/><!-- HANGUL SYLLABLE BOENJ -->
+      <map code="0xbd4e" name="1em"/><!-- HANGUL SYLLABLE BOENH -->
+      <map code="0xbd4f" name="1em"/><!-- HANGUL SYLLABLE BOED -->
+      <map code="0xbd50" name="1em"/><!-- HANGUL SYLLABLE BOEL -->
+      <map code="0xbd51" name="1em"/><!-- HANGUL SYLLABLE BOELG -->
+      <map code="0xbd52" name="1em"/><!-- HANGUL SYLLABLE BOELM -->
+      <map code="0xbd53" name="1em"/><!-- HANGUL SYLLABLE BOELB -->
+      <map code="0xbd54" name="1em"/><!-- HANGUL SYLLABLE BOELS -->
+      <map code="0xbd55" name="1em"/><!-- HANGUL SYLLABLE BOELT -->
+      <map code="0xbd56" name="1em"/><!-- HANGUL SYLLABLE BOELP -->
+      <map code="0xbd57" name="1em"/><!-- HANGUL SYLLABLE BOELH -->
+      <map code="0xbd58" name="1em"/><!-- HANGUL SYLLABLE BOEM -->
+      <map code="0xbd59" name="1em"/><!-- HANGUL SYLLABLE BOEB -->
+      <map code="0xbd5a" name="1em"/><!-- HANGUL SYLLABLE BOEBS -->
+      <map code="0xbd5b" name="1em"/><!-- HANGUL SYLLABLE BOES -->
+      <map code="0xbd5c" name="1em"/><!-- HANGUL SYLLABLE BOESS -->
+      <map code="0xbd5d" name="1em"/><!-- HANGUL SYLLABLE BOENG -->
+      <map code="0xbd5e" name="1em"/><!-- HANGUL SYLLABLE BOEJ -->
+      <map code="0xbd5f" name="1em"/><!-- HANGUL SYLLABLE BOEC -->
+      <map code="0xbd60" name="1em"/><!-- HANGUL SYLLABLE BOEK -->
+      <map code="0xbd61" name="1em"/><!-- HANGUL SYLLABLE BOET -->
+      <map code="0xbd62" name="1em"/><!-- HANGUL SYLLABLE BOEP -->
+      <map code="0xbd63" name="1em"/><!-- HANGUL SYLLABLE BOEH -->
+      <map code="0xbd64" name="1em"/><!-- HANGUL SYLLABLE BYO -->
+      <map code="0xbd65" name="1em"/><!-- HANGUL SYLLABLE BYOG -->
+      <map code="0xbd66" name="1em"/><!-- HANGUL SYLLABLE BYOGG -->
+      <map code="0xbd67" name="1em"/><!-- HANGUL SYLLABLE BYOGS -->
+      <map code="0xbd68" name="1em"/><!-- HANGUL SYLLABLE BYON -->
+      <map code="0xbd69" name="1em"/><!-- HANGUL SYLLABLE BYONJ -->
+      <map code="0xbd6a" name="1em"/><!-- HANGUL SYLLABLE BYONH -->
+      <map code="0xbd6b" name="1em"/><!-- HANGUL SYLLABLE BYOD -->
+      <map code="0xbd6c" name="1em"/><!-- HANGUL SYLLABLE BYOL -->
+      <map code="0xbd6d" name="1em"/><!-- HANGUL SYLLABLE BYOLG -->
+      <map code="0xbd6e" name="1em"/><!-- HANGUL SYLLABLE BYOLM -->
+      <map code="0xbd6f" name="1em"/><!-- HANGUL SYLLABLE BYOLB -->
+      <map code="0xbd70" name="1em"/><!-- HANGUL SYLLABLE BYOLS -->
+      <map code="0xbd71" name="1em"/><!-- HANGUL SYLLABLE BYOLT -->
+      <map code="0xbd72" name="1em"/><!-- HANGUL SYLLABLE BYOLP -->
+      <map code="0xbd73" name="1em"/><!-- HANGUL SYLLABLE BYOLH -->
+      <map code="0xbd74" name="1em"/><!-- HANGUL SYLLABLE BYOM -->
+      <map code="0xbd75" name="1em"/><!-- HANGUL SYLLABLE BYOB -->
+      <map code="0xbd76" name="1em"/><!-- HANGUL SYLLABLE BYOBS -->
+      <map code="0xbd77" name="1em"/><!-- HANGUL SYLLABLE BYOS -->
+      <map code="0xbd78" name="1em"/><!-- HANGUL SYLLABLE BYOSS -->
+      <map code="0xbd79" name="1em"/><!-- HANGUL SYLLABLE BYONG -->
+      <map code="0xbd7a" name="1em"/><!-- HANGUL SYLLABLE BYOJ -->
+      <map code="0xbd7b" name="1em"/><!-- HANGUL SYLLABLE BYOC -->
+      <map code="0xbd7c" name="1em"/><!-- HANGUL SYLLABLE BYOK -->
+      <map code="0xbd7d" name="1em"/><!-- HANGUL SYLLABLE BYOT -->
+      <map code="0xbd7e" name="1em"/><!-- HANGUL SYLLABLE BYOP -->
+      <map code="0xbd7f" name="1em"/><!-- HANGUL SYLLABLE BYOH -->
+      <map code="0xbd80" name="1em"/><!-- HANGUL SYLLABLE BU -->
+      <map code="0xbd81" name="1em"/><!-- HANGUL SYLLABLE BUG -->
+      <map code="0xbd82" name="1em"/><!-- HANGUL SYLLABLE BUGG -->
+      <map code="0xbd83" name="1em"/><!-- HANGUL SYLLABLE BUGS -->
+      <map code="0xbd84" name="1em"/><!-- HANGUL SYLLABLE BUN -->
+      <map code="0xbd85" name="1em"/><!-- HANGUL SYLLABLE BUNJ -->
+      <map code="0xbd86" name="1em"/><!-- HANGUL SYLLABLE BUNH -->
+      <map code="0xbd87" name="1em"/><!-- HANGUL SYLLABLE BUD -->
+      <map code="0xbd88" name="1em"/><!-- HANGUL SYLLABLE BUL -->
+      <map code="0xbd89" name="1em"/><!-- HANGUL SYLLABLE BULG -->
+      <map code="0xbd8a" name="1em"/><!-- HANGUL SYLLABLE BULM -->
+      <map code="0xbd8b" name="1em"/><!-- HANGUL SYLLABLE BULB -->
+      <map code="0xbd8c" name="1em"/><!-- HANGUL SYLLABLE BULS -->
+      <map code="0xbd8d" name="1em"/><!-- HANGUL SYLLABLE BULT -->
+      <map code="0xbd8e" name="1em"/><!-- HANGUL SYLLABLE BULP -->
+      <map code="0xbd8f" name="1em"/><!-- HANGUL SYLLABLE BULH -->
+      <map code="0xbd90" name="1em"/><!-- HANGUL SYLLABLE BUM -->
+      <map code="0xbd91" name="1em"/><!-- HANGUL SYLLABLE BUB -->
+      <map code="0xbd92" name="1em"/><!-- HANGUL SYLLABLE BUBS -->
+      <map code="0xbd93" name="1em"/><!-- HANGUL SYLLABLE BUS -->
+      <map code="0xbd94" name="1em"/><!-- HANGUL SYLLABLE BUSS -->
+      <map code="0xbd95" name="1em"/><!-- HANGUL SYLLABLE BUNG -->
+      <map code="0xbd96" name="1em"/><!-- HANGUL SYLLABLE BUJ -->
+      <map code="0xbd97" name="1em"/><!-- HANGUL SYLLABLE BUC -->
+      <map code="0xbd98" name="1em"/><!-- HANGUL SYLLABLE BUK -->
+      <map code="0xbd99" name="1em"/><!-- HANGUL SYLLABLE BUT -->
+      <map code="0xbd9a" name="1em"/><!-- HANGUL SYLLABLE BUP -->
+      <map code="0xbd9b" name="1em"/><!-- HANGUL SYLLABLE BUH -->
+      <map code="0xbd9c" name="1em"/><!-- HANGUL SYLLABLE BWEO -->
+      <map code="0xbd9d" name="1em"/><!-- HANGUL SYLLABLE BWEOG -->
+      <map code="0xbd9e" name="1em"/><!-- HANGUL SYLLABLE BWEOGG -->
+      <map code="0xbd9f" name="1em"/><!-- HANGUL SYLLABLE BWEOGS -->
+      <map code="0xbda0" name="1em"/><!-- HANGUL SYLLABLE BWEON -->
+      <map code="0xbda1" name="1em"/><!-- HANGUL SYLLABLE BWEONJ -->
+      <map code="0xbda2" name="1em"/><!-- HANGUL SYLLABLE BWEONH -->
+      <map code="0xbda3" name="1em"/><!-- HANGUL SYLLABLE BWEOD -->
+      <map code="0xbda4" name="1em"/><!-- HANGUL SYLLABLE BWEOL -->
+      <map code="0xbda5" name="1em"/><!-- HANGUL SYLLABLE BWEOLG -->
+      <map code="0xbda6" name="1em"/><!-- HANGUL SYLLABLE BWEOLM -->
+      <map code="0xbda7" name="1em"/><!-- HANGUL SYLLABLE BWEOLB -->
+      <map code="0xbda8" name="1em"/><!-- HANGUL SYLLABLE BWEOLS -->
+      <map code="0xbda9" name="1em"/><!-- HANGUL SYLLABLE BWEOLT -->
+      <map code="0xbdaa" name="1em"/><!-- HANGUL SYLLABLE BWEOLP -->
+      <map code="0xbdab" name="1em"/><!-- HANGUL SYLLABLE BWEOLH -->
+      <map code="0xbdac" name="1em"/><!-- HANGUL SYLLABLE BWEOM -->
+      <map code="0xbdad" name="1em"/><!-- HANGUL SYLLABLE BWEOB -->
+      <map code="0xbdae" name="1em"/><!-- HANGUL SYLLABLE BWEOBS -->
+      <map code="0xbdaf" name="1em"/><!-- HANGUL SYLLABLE BWEOS -->
+      <map code="0xbdb0" name="1em"/><!-- HANGUL SYLLABLE BWEOSS -->
+      <map code="0xbdb1" name="1em"/><!-- HANGUL SYLLABLE BWEONG -->
+      <map code="0xbdb2" name="1em"/><!-- HANGUL SYLLABLE BWEOJ -->
+      <map code="0xbdb3" name="1em"/><!-- HANGUL SYLLABLE BWEOC -->
+      <map code="0xbdb4" name="1em"/><!-- HANGUL SYLLABLE BWEOK -->
+      <map code="0xbdb5" name="1em"/><!-- HANGUL SYLLABLE BWEOT -->
+      <map code="0xbdb6" name="1em"/><!-- HANGUL SYLLABLE BWEOP -->
+      <map code="0xbdb7" name="1em"/><!-- HANGUL SYLLABLE BWEOH -->
+      <map code="0xbdb8" name="1em"/><!-- HANGUL SYLLABLE BWE -->
+      <map code="0xbdb9" name="1em"/><!-- HANGUL SYLLABLE BWEG -->
+      <map code="0xbdba" name="1em"/><!-- HANGUL SYLLABLE BWEGG -->
+      <map code="0xbdbb" name="1em"/><!-- HANGUL SYLLABLE BWEGS -->
+      <map code="0xbdbc" name="1em"/><!-- HANGUL SYLLABLE BWEN -->
+      <map code="0xbdbd" name="1em"/><!-- HANGUL SYLLABLE BWENJ -->
+      <map code="0xbdbe" name="1em"/><!-- HANGUL SYLLABLE BWENH -->
+      <map code="0xbdbf" name="1em"/><!-- HANGUL SYLLABLE BWED -->
+      <map code="0xbdc0" name="1em"/><!-- HANGUL SYLLABLE BWEL -->
+      <map code="0xbdc1" name="1em"/><!-- HANGUL SYLLABLE BWELG -->
+      <map code="0xbdc2" name="1em"/><!-- HANGUL SYLLABLE BWELM -->
+      <map code="0xbdc3" name="1em"/><!-- HANGUL SYLLABLE BWELB -->
+      <map code="0xbdc4" name="1em"/><!-- HANGUL SYLLABLE BWELS -->
+      <map code="0xbdc5" name="1em"/><!-- HANGUL SYLLABLE BWELT -->
+      <map code="0xbdc6" name="1em"/><!-- HANGUL SYLLABLE BWELP -->
+      <map code="0xbdc7" name="1em"/><!-- HANGUL SYLLABLE BWELH -->
+      <map code="0xbdc8" name="1em"/><!-- HANGUL SYLLABLE BWEM -->
+      <map code="0xbdc9" name="1em"/><!-- HANGUL SYLLABLE BWEB -->
+      <map code="0xbdca" name="1em"/><!-- HANGUL SYLLABLE BWEBS -->
+      <map code="0xbdcb" name="1em"/><!-- HANGUL SYLLABLE BWES -->
+      <map code="0xbdcc" name="1em"/><!-- HANGUL SYLLABLE BWESS -->
+      <map code="0xbdcd" name="1em"/><!-- HANGUL SYLLABLE BWENG -->
+      <map code="0xbdce" name="1em"/><!-- HANGUL SYLLABLE BWEJ -->
+      <map code="0xbdcf" name="1em"/><!-- HANGUL SYLLABLE BWEC -->
+      <map code="0xbdd0" name="1em"/><!-- HANGUL SYLLABLE BWEK -->
+      <map code="0xbdd1" name="1em"/><!-- HANGUL SYLLABLE BWET -->
+      <map code="0xbdd2" name="1em"/><!-- HANGUL SYLLABLE BWEP -->
+      <map code="0xbdd3" name="1em"/><!-- HANGUL SYLLABLE BWEH -->
+      <map code="0xbdd4" name="1em"/><!-- HANGUL SYLLABLE BWI -->
+      <map code="0xbdd5" name="1em"/><!-- HANGUL SYLLABLE BWIG -->
+      <map code="0xbdd6" name="1em"/><!-- HANGUL SYLLABLE BWIGG -->
+      <map code="0xbdd7" name="1em"/><!-- HANGUL SYLLABLE BWIGS -->
+      <map code="0xbdd8" name="1em"/><!-- HANGUL SYLLABLE BWIN -->
+      <map code="0xbdd9" name="1em"/><!-- HANGUL SYLLABLE BWINJ -->
+      <map code="0xbdda" name="1em"/><!-- HANGUL SYLLABLE BWINH -->
+      <map code="0xbddb" name="1em"/><!-- HANGUL SYLLABLE BWID -->
+      <map code="0xbddc" name="1em"/><!-- HANGUL SYLLABLE BWIL -->
+      <map code="0xbddd" name="1em"/><!-- HANGUL SYLLABLE BWILG -->
+      <map code="0xbdde" name="1em"/><!-- HANGUL SYLLABLE BWILM -->
+      <map code="0xbddf" name="1em"/><!-- HANGUL SYLLABLE BWILB -->
+      <map code="0xbde0" name="1em"/><!-- HANGUL SYLLABLE BWILS -->
+      <map code="0xbde1" name="1em"/><!-- HANGUL SYLLABLE BWILT -->
+      <map code="0xbde2" name="1em"/><!-- HANGUL SYLLABLE BWILP -->
+      <map code="0xbde3" name="1em"/><!-- HANGUL SYLLABLE BWILH -->
+      <map code="0xbde4" name="1em"/><!-- HANGUL SYLLABLE BWIM -->
+      <map code="0xbde5" name="1em"/><!-- HANGUL SYLLABLE BWIB -->
+      <map code="0xbde6" name="1em"/><!-- HANGUL SYLLABLE BWIBS -->
+      <map code="0xbde7" name="1em"/><!-- HANGUL SYLLABLE BWIS -->
+      <map code="0xbde8" name="1em"/><!-- HANGUL SYLLABLE BWISS -->
+      <map code="0xbde9" name="1em"/><!-- HANGUL SYLLABLE BWING -->
+      <map code="0xbdea" name="1em"/><!-- HANGUL SYLLABLE BWIJ -->
+      <map code="0xbdeb" name="1em"/><!-- HANGUL SYLLABLE BWIC -->
+      <map code="0xbdec" name="1em"/><!-- HANGUL SYLLABLE BWIK -->
+      <map code="0xbded" name="1em"/><!-- HANGUL SYLLABLE BWIT -->
+      <map code="0xbdee" name="1em"/><!-- HANGUL SYLLABLE BWIP -->
+      <map code="0xbdef" name="1em"/><!-- HANGUL SYLLABLE BWIH -->
+      <map code="0xbdf0" name="1em"/><!-- HANGUL SYLLABLE BYU -->
+      <map code="0xbdf1" name="1em"/><!-- HANGUL SYLLABLE BYUG -->
+      <map code="0xbdf2" name="1em"/><!-- HANGUL SYLLABLE BYUGG -->
+      <map code="0xbdf3" name="1em"/><!-- HANGUL SYLLABLE BYUGS -->
+      <map code="0xbdf4" name="1em"/><!-- HANGUL SYLLABLE BYUN -->
+      <map code="0xbdf5" name="1em"/><!-- HANGUL SYLLABLE BYUNJ -->
+      <map code="0xbdf6" name="1em"/><!-- HANGUL SYLLABLE BYUNH -->
+      <map code="0xbdf7" name="1em"/><!-- HANGUL SYLLABLE BYUD -->
+      <map code="0xbdf8" name="1em"/><!-- HANGUL SYLLABLE BYUL -->
+      <map code="0xbdf9" name="1em"/><!-- HANGUL SYLLABLE BYULG -->
+      <map code="0xbdfa" name="1em"/><!-- HANGUL SYLLABLE BYULM -->
+      <map code="0xbdfb" name="1em"/><!-- HANGUL SYLLABLE BYULB -->
+      <map code="0xbdfc" name="1em"/><!-- HANGUL SYLLABLE BYULS -->
+      <map code="0xbdfd" name="1em"/><!-- HANGUL SYLLABLE BYULT -->
+      <map code="0xbdfe" name="1em"/><!-- HANGUL SYLLABLE BYULP -->
+      <map code="0xbdff" name="1em"/><!-- HANGUL SYLLABLE BYULH -->
+      <map code="0xbe00" name="1em"/><!-- HANGUL SYLLABLE BYUM -->
+      <map code="0xbe01" name="1em"/><!-- HANGUL SYLLABLE BYUB -->
+      <map code="0xbe02" name="1em"/><!-- HANGUL SYLLABLE BYUBS -->
+      <map code="0xbe03" name="1em"/><!-- HANGUL SYLLABLE BYUS -->
+      <map code="0xbe04" name="1em"/><!-- HANGUL SYLLABLE BYUSS -->
+      <map code="0xbe05" name="1em"/><!-- HANGUL SYLLABLE BYUNG -->
+      <map code="0xbe06" name="1em"/><!-- HANGUL SYLLABLE BYUJ -->
+      <map code="0xbe07" name="1em"/><!-- HANGUL SYLLABLE BYUC -->
+      <map code="0xbe08" name="1em"/><!-- HANGUL SYLLABLE BYUK -->
+      <map code="0xbe09" name="1em"/><!-- HANGUL SYLLABLE BYUT -->
+      <map code="0xbe0a" name="1em"/><!-- HANGUL SYLLABLE BYUP -->
+      <map code="0xbe0b" name="1em"/><!-- HANGUL SYLLABLE BYUH -->
+      <map code="0xbe0c" name="1em"/><!-- HANGUL SYLLABLE BEU -->
+      <map code="0xbe0d" name="1em"/><!-- HANGUL SYLLABLE BEUG -->
+      <map code="0xbe0e" name="1em"/><!-- HANGUL SYLLABLE BEUGG -->
+      <map code="0xbe0f" name="1em"/><!-- HANGUL SYLLABLE BEUGS -->
+      <map code="0xbe10" name="1em"/><!-- HANGUL SYLLABLE BEUN -->
+      <map code="0xbe11" name="1em"/><!-- HANGUL SYLLABLE BEUNJ -->
+      <map code="0xbe12" name="1em"/><!-- HANGUL SYLLABLE BEUNH -->
+      <map code="0xbe13" name="1em"/><!-- HANGUL SYLLABLE BEUD -->
+      <map code="0xbe14" name="1em"/><!-- HANGUL SYLLABLE BEUL -->
+      <map code="0xbe15" name="1em"/><!-- HANGUL SYLLABLE BEULG -->
+      <map code="0xbe16" name="1em"/><!-- HANGUL SYLLABLE BEULM -->
+      <map code="0xbe17" name="1em"/><!-- HANGUL SYLLABLE BEULB -->
+      <map code="0xbe18" name="1em"/><!-- HANGUL SYLLABLE BEULS -->
+      <map code="0xbe19" name="1em"/><!-- HANGUL SYLLABLE BEULT -->
+      <map code="0xbe1a" name="1em"/><!-- HANGUL SYLLABLE BEULP -->
+      <map code="0xbe1b" name="1em"/><!-- HANGUL SYLLABLE BEULH -->
+      <map code="0xbe1c" name="1em"/><!-- HANGUL SYLLABLE BEUM -->
+      <map code="0xbe1d" name="1em"/><!-- HANGUL SYLLABLE BEUB -->
+      <map code="0xbe1e" name="1em"/><!-- HANGUL SYLLABLE BEUBS -->
+      <map code="0xbe1f" name="1em"/><!-- HANGUL SYLLABLE BEUS -->
+      <map code="0xbe20" name="1em"/><!-- HANGUL SYLLABLE BEUSS -->
+      <map code="0xbe21" name="1em"/><!-- HANGUL SYLLABLE BEUNG -->
+      <map code="0xbe22" name="1em"/><!-- HANGUL SYLLABLE BEUJ -->
+      <map code="0xbe23" name="1em"/><!-- HANGUL SYLLABLE BEUC -->
+      <map code="0xbe24" name="1em"/><!-- HANGUL SYLLABLE BEUK -->
+      <map code="0xbe25" name="1em"/><!-- HANGUL SYLLABLE BEUT -->
+      <map code="0xbe26" name="1em"/><!-- HANGUL SYLLABLE BEUP -->
+      <map code="0xbe27" name="1em"/><!-- HANGUL SYLLABLE BEUH -->
+      <map code="0xbe28" name="1em"/><!-- HANGUL SYLLABLE BYI -->
+      <map code="0xbe29" name="1em"/><!-- HANGUL SYLLABLE BYIG -->
+      <map code="0xbe2a" name="1em"/><!-- HANGUL SYLLABLE BYIGG -->
+      <map code="0xbe2b" name="1em"/><!-- HANGUL SYLLABLE BYIGS -->
+      <map code="0xbe2c" name="1em"/><!-- HANGUL SYLLABLE BYIN -->
+      <map code="0xbe2d" name="1em"/><!-- HANGUL SYLLABLE BYINJ -->
+      <map code="0xbe2e" name="1em"/><!-- HANGUL SYLLABLE BYINH -->
+      <map code="0xbe2f" name="1em"/><!-- HANGUL SYLLABLE BYID -->
+      <map code="0xbe30" name="1em"/><!-- HANGUL SYLLABLE BYIL -->
+      <map code="0xbe31" name="1em"/><!-- HANGUL SYLLABLE BYILG -->
+      <map code="0xbe32" name="1em"/><!-- HANGUL SYLLABLE BYILM -->
+      <map code="0xbe33" name="1em"/><!-- HANGUL SYLLABLE BYILB -->
+      <map code="0xbe34" name="1em"/><!-- HANGUL SYLLABLE BYILS -->
+      <map code="0xbe35" name="1em"/><!-- HANGUL SYLLABLE BYILT -->
+      <map code="0xbe36" name="1em"/><!-- HANGUL SYLLABLE BYILP -->
+      <map code="0xbe37" name="1em"/><!-- HANGUL SYLLABLE BYILH -->
+      <map code="0xbe38" name="1em"/><!-- HANGUL SYLLABLE BYIM -->
+      <map code="0xbe39" name="1em"/><!-- HANGUL SYLLABLE BYIB -->
+      <map code="0xbe3a" name="1em"/><!-- HANGUL SYLLABLE BYIBS -->
+      <map code="0xbe3b" name="1em"/><!-- HANGUL SYLLABLE BYIS -->
+      <map code="0xbe3c" name="1em"/><!-- HANGUL SYLLABLE BYISS -->
+      <map code="0xbe3d" name="1em"/><!-- HANGUL SYLLABLE BYING -->
+      <map code="0xbe3e" name="1em"/><!-- HANGUL SYLLABLE BYIJ -->
+      <map code="0xbe3f" name="1em"/><!-- HANGUL SYLLABLE BYIC -->
+      <map code="0xbe40" name="1em"/><!-- HANGUL SYLLABLE BYIK -->
+      <map code="0xbe41" name="1em"/><!-- HANGUL SYLLABLE BYIT -->
+      <map code="0xbe42" name="1em"/><!-- HANGUL SYLLABLE BYIP -->
+      <map code="0xbe43" name="1em"/><!-- HANGUL SYLLABLE BYIH -->
+      <map code="0xbe44" name="1em"/><!-- HANGUL SYLLABLE BI -->
+      <map code="0xbe45" name="1em"/><!-- HANGUL SYLLABLE BIG -->
+      <map code="0xbe46" name="1em"/><!-- HANGUL SYLLABLE BIGG -->
+      <map code="0xbe47" name="1em"/><!-- HANGUL SYLLABLE BIGS -->
+      <map code="0xbe48" name="1em"/><!-- HANGUL SYLLABLE BIN -->
+      <map code="0xbe49" name="1em"/><!-- HANGUL SYLLABLE BINJ -->
+      <map code="0xbe4a" name="1em"/><!-- HANGUL SYLLABLE BINH -->
+      <map code="0xbe4b" name="1em"/><!-- HANGUL SYLLABLE BID -->
+      <map code="0xbe4c" name="1em"/><!-- HANGUL SYLLABLE BIL -->
+      <map code="0xbe4d" name="1em"/><!-- HANGUL SYLLABLE BILG -->
+      <map code="0xbe4e" name="1em"/><!-- HANGUL SYLLABLE BILM -->
+      <map code="0xbe4f" name="1em"/><!-- HANGUL SYLLABLE BILB -->
+      <map code="0xbe50" name="1em"/><!-- HANGUL SYLLABLE BILS -->
+      <map code="0xbe51" name="1em"/><!-- HANGUL SYLLABLE BILT -->
+      <map code="0xbe52" name="1em"/><!-- HANGUL SYLLABLE BILP -->
+      <map code="0xbe53" name="1em"/><!-- HANGUL SYLLABLE BILH -->
+      <map code="0xbe54" name="1em"/><!-- HANGUL SYLLABLE BIM -->
+      <map code="0xbe55" name="1em"/><!-- HANGUL SYLLABLE BIB -->
+      <map code="0xbe56" name="1em"/><!-- HANGUL SYLLABLE BIBS -->
+      <map code="0xbe57" name="1em"/><!-- HANGUL SYLLABLE BIS -->
+      <map code="0xbe58" name="1em"/><!-- HANGUL SYLLABLE BISS -->
+      <map code="0xbe59" name="1em"/><!-- HANGUL SYLLABLE BING -->
+      <map code="0xbe5a" name="1em"/><!-- HANGUL SYLLABLE BIJ -->
+      <map code="0xbe5b" name="1em"/><!-- HANGUL SYLLABLE BIC -->
+      <map code="0xbe5c" name="1em"/><!-- HANGUL SYLLABLE BIK -->
+      <map code="0xbe5d" name="1em"/><!-- HANGUL SYLLABLE BIT -->
+      <map code="0xbe5e" name="1em"/><!-- HANGUL SYLLABLE BIP -->
+      <map code="0xbe5f" name="1em"/><!-- HANGUL SYLLABLE BIH -->
+      <map code="0xbe60" name="1em"/><!-- HANGUL SYLLABLE BBA -->
+      <map code="0xbe61" name="1em"/><!-- HANGUL SYLLABLE BBAG -->
+      <map code="0xbe62" name="1em"/><!-- HANGUL SYLLABLE BBAGG -->
+      <map code="0xbe63" name="1em"/><!-- HANGUL SYLLABLE BBAGS -->
+      <map code="0xbe64" name="1em"/><!-- HANGUL SYLLABLE BBAN -->
+      <map code="0xbe65" name="1em"/><!-- HANGUL SYLLABLE BBANJ -->
+      <map code="0xbe66" name="1em"/><!-- HANGUL SYLLABLE BBANH -->
+      <map code="0xbe67" name="1em"/><!-- HANGUL SYLLABLE BBAD -->
+      <map code="0xbe68" name="1em"/><!-- HANGUL SYLLABLE BBAL -->
+      <map code="0xbe69" name="1em"/><!-- HANGUL SYLLABLE BBALG -->
+      <map code="0xbe6a" name="1em"/><!-- HANGUL SYLLABLE BBALM -->
+      <map code="0xbe6b" name="1em"/><!-- HANGUL SYLLABLE BBALB -->
+      <map code="0xbe6c" name="1em"/><!-- HANGUL SYLLABLE BBALS -->
+      <map code="0xbe6d" name="1em"/><!-- HANGUL SYLLABLE BBALT -->
+      <map code="0xbe6e" name="1em"/><!-- HANGUL SYLLABLE BBALP -->
+      <map code="0xbe6f" name="1em"/><!-- HANGUL SYLLABLE BBALH -->
+      <map code="0xbe70" name="1em"/><!-- HANGUL SYLLABLE BBAM -->
+      <map code="0xbe71" name="1em"/><!-- HANGUL SYLLABLE BBAB -->
+      <map code="0xbe72" name="1em"/><!-- HANGUL SYLLABLE BBABS -->
+      <map code="0xbe73" name="1em"/><!-- HANGUL SYLLABLE BBAS -->
+      <map code="0xbe74" name="1em"/><!-- HANGUL SYLLABLE BBASS -->
+      <map code="0xbe75" name="1em"/><!-- HANGUL SYLLABLE BBANG -->
+      <map code="0xbe76" name="1em"/><!-- HANGUL SYLLABLE BBAJ -->
+      <map code="0xbe77" name="1em"/><!-- HANGUL SYLLABLE BBAC -->
+      <map code="0xbe78" name="1em"/><!-- HANGUL SYLLABLE BBAK -->
+      <map code="0xbe79" name="1em"/><!-- HANGUL SYLLABLE BBAT -->
+      <map code="0xbe7a" name="1em"/><!-- HANGUL SYLLABLE BBAP -->
+      <map code="0xbe7b" name="1em"/><!-- HANGUL SYLLABLE BBAH -->
+      <map code="0xbe7c" name="1em"/><!-- HANGUL SYLLABLE BBAE -->
+      <map code="0xbe7d" name="1em"/><!-- HANGUL SYLLABLE BBAEG -->
+      <map code="0xbe7e" name="1em"/><!-- HANGUL SYLLABLE BBAEGG -->
+      <map code="0xbe7f" name="1em"/><!-- HANGUL SYLLABLE BBAEGS -->
+      <map code="0xbe80" name="1em"/><!-- HANGUL SYLLABLE BBAEN -->
+      <map code="0xbe81" name="1em"/><!-- HANGUL SYLLABLE BBAENJ -->
+      <map code="0xbe82" name="1em"/><!-- HANGUL SYLLABLE BBAENH -->
+      <map code="0xbe83" name="1em"/><!-- HANGUL SYLLABLE BBAED -->
+      <map code="0xbe84" name="1em"/><!-- HANGUL SYLLABLE BBAEL -->
+      <map code="0xbe85" name="1em"/><!-- HANGUL SYLLABLE BBAELG -->
+      <map code="0xbe86" name="1em"/><!-- HANGUL SYLLABLE BBAELM -->
+      <map code="0xbe87" name="1em"/><!-- HANGUL SYLLABLE BBAELB -->
+      <map code="0xbe88" name="1em"/><!-- HANGUL SYLLABLE BBAELS -->
+      <map code="0xbe89" name="1em"/><!-- HANGUL SYLLABLE BBAELT -->
+      <map code="0xbe8a" name="1em"/><!-- HANGUL SYLLABLE BBAELP -->
+      <map code="0xbe8b" name="1em"/><!-- HANGUL SYLLABLE BBAELH -->
+      <map code="0xbe8c" name="1em"/><!-- HANGUL SYLLABLE BBAEM -->
+      <map code="0xbe8d" name="1em"/><!-- HANGUL SYLLABLE BBAEB -->
+      <map code="0xbe8e" name="1em"/><!-- HANGUL SYLLABLE BBAEBS -->
+      <map code="0xbe8f" name="1em"/><!-- HANGUL SYLLABLE BBAES -->
+      <map code="0xbe90" name="1em"/><!-- HANGUL SYLLABLE BBAESS -->
+      <map code="0xbe91" name="1em"/><!-- HANGUL SYLLABLE BBAENG -->
+      <map code="0xbe92" name="1em"/><!-- HANGUL SYLLABLE BBAEJ -->
+      <map code="0xbe93" name="1em"/><!-- HANGUL SYLLABLE BBAEC -->
+      <map code="0xbe94" name="1em"/><!-- HANGUL SYLLABLE BBAEK -->
+      <map code="0xbe95" name="1em"/><!-- HANGUL SYLLABLE BBAET -->
+      <map code="0xbe96" name="1em"/><!-- HANGUL SYLLABLE BBAEP -->
+      <map code="0xbe97" name="1em"/><!-- HANGUL SYLLABLE BBAEH -->
+      <map code="0xbe98" name="1em"/><!-- HANGUL SYLLABLE BBYA -->
+      <map code="0xbe99" name="1em"/><!-- HANGUL SYLLABLE BBYAG -->
+      <map code="0xbe9a" name="1em"/><!-- HANGUL SYLLABLE BBYAGG -->
+      <map code="0xbe9b" name="1em"/><!-- HANGUL SYLLABLE BBYAGS -->
+      <map code="0xbe9c" name="1em"/><!-- HANGUL SYLLABLE BBYAN -->
+      <map code="0xbe9d" name="1em"/><!-- HANGUL SYLLABLE BBYANJ -->
+      <map code="0xbe9e" name="1em"/><!-- HANGUL SYLLABLE BBYANH -->
+      <map code="0xbe9f" name="1em"/><!-- HANGUL SYLLABLE BBYAD -->
+      <map code="0xbea0" name="1em"/><!-- HANGUL SYLLABLE BBYAL -->
+      <map code="0xbea1" name="1em"/><!-- HANGUL SYLLABLE BBYALG -->
+      <map code="0xbea2" name="1em"/><!-- HANGUL SYLLABLE BBYALM -->
+      <map code="0xbea3" name="1em"/><!-- HANGUL SYLLABLE BBYALB -->
+      <map code="0xbea4" name="1em"/><!-- HANGUL SYLLABLE BBYALS -->
+      <map code="0xbea5" name="1em"/><!-- HANGUL SYLLABLE BBYALT -->
+      <map code="0xbea6" name="1em"/><!-- HANGUL SYLLABLE BBYALP -->
+      <map code="0xbea7" name="1em"/><!-- HANGUL SYLLABLE BBYALH -->
+      <map code="0xbea8" name="1em"/><!-- HANGUL SYLLABLE BBYAM -->
+      <map code="0xbea9" name="1em"/><!-- HANGUL SYLLABLE BBYAB -->
+      <map code="0xbeaa" name="1em"/><!-- HANGUL SYLLABLE BBYABS -->
+      <map code="0xbeab" name="1em"/><!-- HANGUL SYLLABLE BBYAS -->
+      <map code="0xbeac" name="1em"/><!-- HANGUL SYLLABLE BBYASS -->
+      <map code="0xbead" name="1em"/><!-- HANGUL SYLLABLE BBYANG -->
+      <map code="0xbeae" name="1em"/><!-- HANGUL SYLLABLE BBYAJ -->
+      <map code="0xbeaf" name="1em"/><!-- HANGUL SYLLABLE BBYAC -->
+      <map code="0xbeb0" name="1em"/><!-- HANGUL SYLLABLE BBYAK -->
+      <map code="0xbeb1" name="1em"/><!-- HANGUL SYLLABLE BBYAT -->
+      <map code="0xbeb2" name="1em"/><!-- HANGUL SYLLABLE BBYAP -->
+      <map code="0xbeb3" name="1em"/><!-- HANGUL SYLLABLE BBYAH -->
+      <map code="0xbeb4" name="1em"/><!-- HANGUL SYLLABLE BBYAE -->
+      <map code="0xbeb5" name="1em"/><!-- HANGUL SYLLABLE BBYAEG -->
+      <map code="0xbeb6" name="1em"/><!-- HANGUL SYLLABLE BBYAEGG -->
+      <map code="0xbeb7" name="1em"/><!-- HANGUL SYLLABLE BBYAEGS -->
+      <map code="0xbeb8" name="1em"/><!-- HANGUL SYLLABLE BBYAEN -->
+      <map code="0xbeb9" name="1em"/><!-- HANGUL SYLLABLE BBYAENJ -->
+      <map code="0xbeba" name="1em"/><!-- HANGUL SYLLABLE BBYAENH -->
+      <map code="0xbebb" name="1em"/><!-- HANGUL SYLLABLE BBYAED -->
+      <map code="0xbebc" name="1em"/><!-- HANGUL SYLLABLE BBYAEL -->
+      <map code="0xbebd" name="1em"/><!-- HANGUL SYLLABLE BBYAELG -->
+      <map code="0xbebe" name="1em"/><!-- HANGUL SYLLABLE BBYAELM -->
+      <map code="0xbebf" name="1em"/><!-- HANGUL SYLLABLE BBYAELB -->
+      <map code="0xbec0" name="1em"/><!-- HANGUL SYLLABLE BBYAELS -->
+      <map code="0xbec1" name="1em"/><!-- HANGUL SYLLABLE BBYAELT -->
+      <map code="0xbec2" name="1em"/><!-- HANGUL SYLLABLE BBYAELP -->
+      <map code="0xbec3" name="1em"/><!-- HANGUL SYLLABLE BBYAELH -->
+      <map code="0xbec4" name="1em"/><!-- HANGUL SYLLABLE BBYAEM -->
+      <map code="0xbec5" name="1em"/><!-- HANGUL SYLLABLE BBYAEB -->
+      <map code="0xbec6" name="1em"/><!-- HANGUL SYLLABLE BBYAEBS -->
+      <map code="0xbec7" name="1em"/><!-- HANGUL SYLLABLE BBYAES -->
+      <map code="0xbec8" name="1em"/><!-- HANGUL SYLLABLE BBYAESS -->
+      <map code="0xbec9" name="1em"/><!-- HANGUL SYLLABLE BBYAENG -->
+      <map code="0xbeca" name="1em"/><!-- HANGUL SYLLABLE BBYAEJ -->
+      <map code="0xbecb" name="1em"/><!-- HANGUL SYLLABLE BBYAEC -->
+      <map code="0xbecc" name="1em"/><!-- HANGUL SYLLABLE BBYAEK -->
+      <map code="0xbecd" name="1em"/><!-- HANGUL SYLLABLE BBYAET -->
+      <map code="0xbece" name="1em"/><!-- HANGUL SYLLABLE BBYAEP -->
+      <map code="0xbecf" name="1em"/><!-- HANGUL SYLLABLE BBYAEH -->
+      <map code="0xbed0" name="1em"/><!-- HANGUL SYLLABLE BBEO -->
+      <map code="0xbed1" name="1em"/><!-- HANGUL SYLLABLE BBEOG -->
+      <map code="0xbed2" name="1em"/><!-- HANGUL SYLLABLE BBEOGG -->
+      <map code="0xbed3" name="1em"/><!-- HANGUL SYLLABLE BBEOGS -->
+      <map code="0xbed4" name="1em"/><!-- HANGUL SYLLABLE BBEON -->
+      <map code="0xbed5" name="1em"/><!-- HANGUL SYLLABLE BBEONJ -->
+      <map code="0xbed6" name="1em"/><!-- HANGUL SYLLABLE BBEONH -->
+      <map code="0xbed7" name="1em"/><!-- HANGUL SYLLABLE BBEOD -->
+      <map code="0xbed8" name="1em"/><!-- HANGUL SYLLABLE BBEOL -->
+      <map code="0xbed9" name="1em"/><!-- HANGUL SYLLABLE BBEOLG -->
+      <map code="0xbeda" name="1em"/><!-- HANGUL SYLLABLE BBEOLM -->
+      <map code="0xbedb" name="1em"/><!-- HANGUL SYLLABLE BBEOLB -->
+      <map code="0xbedc" name="1em"/><!-- HANGUL SYLLABLE BBEOLS -->
+      <map code="0xbedd" name="1em"/><!-- HANGUL SYLLABLE BBEOLT -->
+      <map code="0xbede" name="1em"/><!-- HANGUL SYLLABLE BBEOLP -->
+      <map code="0xbedf" name="1em"/><!-- HANGUL SYLLABLE BBEOLH -->
+      <map code="0xbee0" name="1em"/><!-- HANGUL SYLLABLE BBEOM -->
+      <map code="0xbee1" name="1em"/><!-- HANGUL SYLLABLE BBEOB -->
+      <map code="0xbee2" name="1em"/><!-- HANGUL SYLLABLE BBEOBS -->
+      <map code="0xbee3" name="1em"/><!-- HANGUL SYLLABLE BBEOS -->
+      <map code="0xbee4" name="1em"/><!-- HANGUL SYLLABLE BBEOSS -->
+      <map code="0xbee5" name="1em"/><!-- HANGUL SYLLABLE BBEONG -->
+      <map code="0xbee6" name="1em"/><!-- HANGUL SYLLABLE BBEOJ -->
+      <map code="0xbee7" name="1em"/><!-- HANGUL SYLLABLE BBEOC -->
+      <map code="0xbee8" name="1em"/><!-- HANGUL SYLLABLE BBEOK -->
+      <map code="0xbee9" name="1em"/><!-- HANGUL SYLLABLE BBEOT -->
+      <map code="0xbeea" name="1em"/><!-- HANGUL SYLLABLE BBEOP -->
+      <map code="0xbeeb" name="1em"/><!-- HANGUL SYLLABLE BBEOH -->
+      <map code="0xbeec" name="1em"/><!-- HANGUL SYLLABLE BBE -->
+      <map code="0xbeed" name="1em"/><!-- HANGUL SYLLABLE BBEG -->
+      <map code="0xbeee" name="1em"/><!-- HANGUL SYLLABLE BBEGG -->
+      <map code="0xbeef" name="1em"/><!-- HANGUL SYLLABLE BBEGS -->
+      <map code="0xbef0" name="1em"/><!-- HANGUL SYLLABLE BBEN -->
+      <map code="0xbef1" name="1em"/><!-- HANGUL SYLLABLE BBENJ -->
+      <map code="0xbef2" name="1em"/><!-- HANGUL SYLLABLE BBENH -->
+      <map code="0xbef3" name="1em"/><!-- HANGUL SYLLABLE BBED -->
+      <map code="0xbef4" name="1em"/><!-- HANGUL SYLLABLE BBEL -->
+      <map code="0xbef5" name="1em"/><!-- HANGUL SYLLABLE BBELG -->
+      <map code="0xbef6" name="1em"/><!-- HANGUL SYLLABLE BBELM -->
+      <map code="0xbef7" name="1em"/><!-- HANGUL SYLLABLE BBELB -->
+      <map code="0xbef8" name="1em"/><!-- HANGUL SYLLABLE BBELS -->
+      <map code="0xbef9" name="1em"/><!-- HANGUL SYLLABLE BBELT -->
+      <map code="0xbefa" name="1em"/><!-- HANGUL SYLLABLE BBELP -->
+      <map code="0xbefb" name="1em"/><!-- HANGUL SYLLABLE BBELH -->
+      <map code="0xbefc" name="1em"/><!-- HANGUL SYLLABLE BBEM -->
+      <map code="0xbefd" name="1em"/><!-- HANGUL SYLLABLE BBEB -->
+      <map code="0xbefe" name="1em"/><!-- HANGUL SYLLABLE BBEBS -->
+      <map code="0xbeff" name="1em"/><!-- HANGUL SYLLABLE BBES -->
+      <map code="0xbf00" name="1em"/><!-- HANGUL SYLLABLE BBESS -->
+      <map code="0xbf01" name="1em"/><!-- HANGUL SYLLABLE BBENG -->
+      <map code="0xbf02" name="1em"/><!-- HANGUL SYLLABLE BBEJ -->
+      <map code="0xbf03" name="1em"/><!-- HANGUL SYLLABLE BBEC -->
+      <map code="0xbf04" name="1em"/><!-- HANGUL SYLLABLE BBEK -->
+      <map code="0xbf05" name="1em"/><!-- HANGUL SYLLABLE BBET -->
+      <map code="0xbf06" name="1em"/><!-- HANGUL SYLLABLE BBEP -->
+      <map code="0xbf07" name="1em"/><!-- HANGUL SYLLABLE BBEH -->
+      <map code="0xbf08" name="1em"/><!-- HANGUL SYLLABLE BBYEO -->
+      <map code="0xbf09" name="1em"/><!-- HANGUL SYLLABLE BBYEOG -->
+      <map code="0xbf0a" name="1em"/><!-- HANGUL SYLLABLE BBYEOGG -->
+      <map code="0xbf0b" name="1em"/><!-- HANGUL SYLLABLE BBYEOGS -->
+      <map code="0xbf0c" name="1em"/><!-- HANGUL SYLLABLE BBYEON -->
+      <map code="0xbf0d" name="1em"/><!-- HANGUL SYLLABLE BBYEONJ -->
+      <map code="0xbf0e" name="1em"/><!-- HANGUL SYLLABLE BBYEONH -->
+      <map code="0xbf0f" name="1em"/><!-- HANGUL SYLLABLE BBYEOD -->
+      <map code="0xbf10" name="1em"/><!-- HANGUL SYLLABLE BBYEOL -->
+      <map code="0xbf11" name="1em"/><!-- HANGUL SYLLABLE BBYEOLG -->
+      <map code="0xbf12" name="1em"/><!-- HANGUL SYLLABLE BBYEOLM -->
+      <map code="0xbf13" name="1em"/><!-- HANGUL SYLLABLE BBYEOLB -->
+      <map code="0xbf14" name="1em"/><!-- HANGUL SYLLABLE BBYEOLS -->
+      <map code="0xbf15" name="1em"/><!-- HANGUL SYLLABLE BBYEOLT -->
+      <map code="0xbf16" name="1em"/><!-- HANGUL SYLLABLE BBYEOLP -->
+      <map code="0xbf17" name="1em"/><!-- HANGUL SYLLABLE BBYEOLH -->
+      <map code="0xbf18" name="1em"/><!-- HANGUL SYLLABLE BBYEOM -->
+      <map code="0xbf19" name="1em"/><!-- HANGUL SYLLABLE BBYEOB -->
+      <map code="0xbf1a" name="1em"/><!-- HANGUL SYLLABLE BBYEOBS -->
+      <map code="0xbf1b" name="1em"/><!-- HANGUL SYLLABLE BBYEOS -->
+      <map code="0xbf1c" name="1em"/><!-- HANGUL SYLLABLE BBYEOSS -->
+      <map code="0xbf1d" name="1em"/><!-- HANGUL SYLLABLE BBYEONG -->
+      <map code="0xbf1e" name="1em"/><!-- HANGUL SYLLABLE BBYEOJ -->
+      <map code="0xbf1f" name="1em"/><!-- HANGUL SYLLABLE BBYEOC -->
+      <map code="0xbf20" name="1em"/><!-- HANGUL SYLLABLE BBYEOK -->
+      <map code="0xbf21" name="1em"/><!-- HANGUL SYLLABLE BBYEOT -->
+      <map code="0xbf22" name="1em"/><!-- HANGUL SYLLABLE BBYEOP -->
+      <map code="0xbf23" name="1em"/><!-- HANGUL SYLLABLE BBYEOH -->
+      <map code="0xbf24" name="1em"/><!-- HANGUL SYLLABLE BBYE -->
+      <map code="0xbf25" name="1em"/><!-- HANGUL SYLLABLE BBYEG -->
+      <map code="0xbf26" name="1em"/><!-- HANGUL SYLLABLE BBYEGG -->
+      <map code="0xbf27" name="1em"/><!-- HANGUL SYLLABLE BBYEGS -->
+      <map code="0xbf28" name="1em"/><!-- HANGUL SYLLABLE BBYEN -->
+      <map code="0xbf29" name="1em"/><!-- HANGUL SYLLABLE BBYENJ -->
+      <map code="0xbf2a" name="1em"/><!-- HANGUL SYLLABLE BBYENH -->
+      <map code="0xbf2b" name="1em"/><!-- HANGUL SYLLABLE BBYED -->
+      <map code="0xbf2c" name="1em"/><!-- HANGUL SYLLABLE BBYEL -->
+      <map code="0xbf2d" name="1em"/><!-- HANGUL SYLLABLE BBYELG -->
+      <map code="0xbf2e" name="1em"/><!-- HANGUL SYLLABLE BBYELM -->
+      <map code="0xbf2f" name="1em"/><!-- HANGUL SYLLABLE BBYELB -->
+      <map code="0xbf30" name="1em"/><!-- HANGUL SYLLABLE BBYELS -->
+      <map code="0xbf31" name="1em"/><!-- HANGUL SYLLABLE BBYELT -->
+      <map code="0xbf32" name="1em"/><!-- HANGUL SYLLABLE BBYELP -->
+      <map code="0xbf33" name="1em"/><!-- HANGUL SYLLABLE BBYELH -->
+      <map code="0xbf34" name="1em"/><!-- HANGUL SYLLABLE BBYEM -->
+      <map code="0xbf35" name="1em"/><!-- HANGUL SYLLABLE BBYEB -->
+      <map code="0xbf36" name="1em"/><!-- HANGUL SYLLABLE BBYEBS -->
+      <map code="0xbf37" name="1em"/><!-- HANGUL SYLLABLE BBYES -->
+      <map code="0xbf38" name="1em"/><!-- HANGUL SYLLABLE BBYESS -->
+      <map code="0xbf39" name="1em"/><!-- HANGUL SYLLABLE BBYENG -->
+      <map code="0xbf3a" name="1em"/><!-- HANGUL SYLLABLE BBYEJ -->
+      <map code="0xbf3b" name="1em"/><!-- HANGUL SYLLABLE BBYEC -->
+      <map code="0xbf3c" name="1em"/><!-- HANGUL SYLLABLE BBYEK -->
+      <map code="0xbf3d" name="1em"/><!-- HANGUL SYLLABLE BBYET -->
+      <map code="0xbf3e" name="1em"/><!-- HANGUL SYLLABLE BBYEP -->
+      <map code="0xbf3f" name="1em"/><!-- HANGUL SYLLABLE BBYEH -->
+      <map code="0xbf40" name="1em"/><!-- HANGUL SYLLABLE BBO -->
+      <map code="0xbf41" name="1em"/><!-- HANGUL SYLLABLE BBOG -->
+      <map code="0xbf42" name="1em"/><!-- HANGUL SYLLABLE BBOGG -->
+      <map code="0xbf43" name="1em"/><!-- HANGUL SYLLABLE BBOGS -->
+      <map code="0xbf44" name="1em"/><!-- HANGUL SYLLABLE BBON -->
+      <map code="0xbf45" name="1em"/><!-- HANGUL SYLLABLE BBONJ -->
+      <map code="0xbf46" name="1em"/><!-- HANGUL SYLLABLE BBONH -->
+      <map code="0xbf47" name="1em"/><!-- HANGUL SYLLABLE BBOD -->
+      <map code="0xbf48" name="1em"/><!-- HANGUL SYLLABLE BBOL -->
+      <map code="0xbf49" name="1em"/><!-- HANGUL SYLLABLE BBOLG -->
+      <map code="0xbf4a" name="1em"/><!-- HANGUL SYLLABLE BBOLM -->
+      <map code="0xbf4b" name="1em"/><!-- HANGUL SYLLABLE BBOLB -->
+      <map code="0xbf4c" name="1em"/><!-- HANGUL SYLLABLE BBOLS -->
+      <map code="0xbf4d" name="1em"/><!-- HANGUL SYLLABLE BBOLT -->
+      <map code="0xbf4e" name="1em"/><!-- HANGUL SYLLABLE BBOLP -->
+      <map code="0xbf4f" name="1em"/><!-- HANGUL SYLLABLE BBOLH -->
+      <map code="0xbf50" name="1em"/><!-- HANGUL SYLLABLE BBOM -->
+      <map code="0xbf51" name="1em"/><!-- HANGUL SYLLABLE BBOB -->
+      <map code="0xbf52" name="1em"/><!-- HANGUL SYLLABLE BBOBS -->
+      <map code="0xbf53" name="1em"/><!-- HANGUL SYLLABLE BBOS -->
+      <map code="0xbf54" name="1em"/><!-- HANGUL SYLLABLE BBOSS -->
+      <map code="0xbf55" name="1em"/><!-- HANGUL SYLLABLE BBONG -->
+      <map code="0xbf56" name="1em"/><!-- HANGUL SYLLABLE BBOJ -->
+      <map code="0xbf57" name="1em"/><!-- HANGUL SYLLABLE BBOC -->
+      <map code="0xbf58" name="1em"/><!-- HANGUL SYLLABLE BBOK -->
+      <map code="0xbf59" name="1em"/><!-- HANGUL SYLLABLE BBOT -->
+      <map code="0xbf5a" name="1em"/><!-- HANGUL SYLLABLE BBOP -->
+      <map code="0xbf5b" name="1em"/><!-- HANGUL SYLLABLE BBOH -->
+      <map code="0xbf5c" name="1em"/><!-- HANGUL SYLLABLE BBWA -->
+      <map code="0xbf5d" name="1em"/><!-- HANGUL SYLLABLE BBWAG -->
+      <map code="0xbf5e" name="1em"/><!-- HANGUL SYLLABLE BBWAGG -->
+      <map code="0xbf5f" name="1em"/><!-- HANGUL SYLLABLE BBWAGS -->
+      <map code="0xbf60" name="1em"/><!-- HANGUL SYLLABLE BBWAN -->
+      <map code="0xbf61" name="1em"/><!-- HANGUL SYLLABLE BBWANJ -->
+      <map code="0xbf62" name="1em"/><!-- HANGUL SYLLABLE BBWANH -->
+      <map code="0xbf63" name="1em"/><!-- HANGUL SYLLABLE BBWAD -->
+      <map code="0xbf64" name="1em"/><!-- HANGUL SYLLABLE BBWAL -->
+      <map code="0xbf65" name="1em"/><!-- HANGUL SYLLABLE BBWALG -->
+      <map code="0xbf66" name="1em"/><!-- HANGUL SYLLABLE BBWALM -->
+      <map code="0xbf67" name="1em"/><!-- HANGUL SYLLABLE BBWALB -->
+      <map code="0xbf68" name="1em"/><!-- HANGUL SYLLABLE BBWALS -->
+      <map code="0xbf69" name="1em"/><!-- HANGUL SYLLABLE BBWALT -->
+      <map code="0xbf6a" name="1em"/><!-- HANGUL SYLLABLE BBWALP -->
+      <map code="0xbf6b" name="1em"/><!-- HANGUL SYLLABLE BBWALH -->
+      <map code="0xbf6c" name="1em"/><!-- HANGUL SYLLABLE BBWAM -->
+      <map code="0xbf6d" name="1em"/><!-- HANGUL SYLLABLE BBWAB -->
+      <map code="0xbf6e" name="1em"/><!-- HANGUL SYLLABLE BBWABS -->
+      <map code="0xbf6f" name="1em"/><!-- HANGUL SYLLABLE BBWAS -->
+      <map code="0xbf70" name="1em"/><!-- HANGUL SYLLABLE BBWASS -->
+      <map code="0xbf71" name="1em"/><!-- HANGUL SYLLABLE BBWANG -->
+      <map code="0xbf72" name="1em"/><!-- HANGUL SYLLABLE BBWAJ -->
+      <map code="0xbf73" name="1em"/><!-- HANGUL SYLLABLE BBWAC -->
+      <map code="0xbf74" name="1em"/><!-- HANGUL SYLLABLE BBWAK -->
+      <map code="0xbf75" name="1em"/><!-- HANGUL SYLLABLE BBWAT -->
+      <map code="0xbf76" name="1em"/><!-- HANGUL SYLLABLE BBWAP -->
+      <map code="0xbf77" name="1em"/><!-- HANGUL SYLLABLE BBWAH -->
+      <map code="0xbf78" name="1em"/><!-- HANGUL SYLLABLE BBWAE -->
+      <map code="0xbf79" name="1em"/><!-- HANGUL SYLLABLE BBWAEG -->
+      <map code="0xbf7a" name="1em"/><!-- HANGUL SYLLABLE BBWAEGG -->
+      <map code="0xbf7b" name="1em"/><!-- HANGUL SYLLABLE BBWAEGS -->
+      <map code="0xbf7c" name="1em"/><!-- HANGUL SYLLABLE BBWAEN -->
+      <map code="0xbf7d" name="1em"/><!-- HANGUL SYLLABLE BBWAENJ -->
+      <map code="0xbf7e" name="1em"/><!-- HANGUL SYLLABLE BBWAENH -->
+      <map code="0xbf7f" name="1em"/><!-- HANGUL SYLLABLE BBWAED -->
+      <map code="0xbf80" name="1em"/><!-- HANGUL SYLLABLE BBWAEL -->
+      <map code="0xbf81" name="1em"/><!-- HANGUL SYLLABLE BBWAELG -->
+      <map code="0xbf82" name="1em"/><!-- HANGUL SYLLABLE BBWAELM -->
+      <map code="0xbf83" name="1em"/><!-- HANGUL SYLLABLE BBWAELB -->
+      <map code="0xbf84" name="1em"/><!-- HANGUL SYLLABLE BBWAELS -->
+      <map code="0xbf85" name="1em"/><!-- HANGUL SYLLABLE BBWAELT -->
+      <map code="0xbf86" name="1em"/><!-- HANGUL SYLLABLE BBWAELP -->
+      <map code="0xbf87" name="1em"/><!-- HANGUL SYLLABLE BBWAELH -->
+      <map code="0xbf88" name="1em"/><!-- HANGUL SYLLABLE BBWAEM -->
+      <map code="0xbf89" name="1em"/><!-- HANGUL SYLLABLE BBWAEB -->
+      <map code="0xbf8a" name="1em"/><!-- HANGUL SYLLABLE BBWAEBS -->
+      <map code="0xbf8b" name="1em"/><!-- HANGUL SYLLABLE BBWAES -->
+      <map code="0xbf8c" name="1em"/><!-- HANGUL SYLLABLE BBWAESS -->
+      <map code="0xbf8d" name="1em"/><!-- HANGUL SYLLABLE BBWAENG -->
+      <map code="0xbf8e" name="1em"/><!-- HANGUL SYLLABLE BBWAEJ -->
+      <map code="0xbf8f" name="1em"/><!-- HANGUL SYLLABLE BBWAEC -->
+      <map code="0xbf90" name="1em"/><!-- HANGUL SYLLABLE BBWAEK -->
+      <map code="0xbf91" name="1em"/><!-- HANGUL SYLLABLE BBWAET -->
+      <map code="0xbf92" name="1em"/><!-- HANGUL SYLLABLE BBWAEP -->
+      <map code="0xbf93" name="1em"/><!-- HANGUL SYLLABLE BBWAEH -->
+      <map code="0xbf94" name="1em"/><!-- HANGUL SYLLABLE BBOE -->
+      <map code="0xbf95" name="1em"/><!-- HANGUL SYLLABLE BBOEG -->
+      <map code="0xbf96" name="1em"/><!-- HANGUL SYLLABLE BBOEGG -->
+      <map code="0xbf97" name="1em"/><!-- HANGUL SYLLABLE BBOEGS -->
+      <map code="0xbf98" name="1em"/><!-- HANGUL SYLLABLE BBOEN -->
+      <map code="0xbf99" name="1em"/><!-- HANGUL SYLLABLE BBOENJ -->
+      <map code="0xbf9a" name="1em"/><!-- HANGUL SYLLABLE BBOENH -->
+      <map code="0xbf9b" name="1em"/><!-- HANGUL SYLLABLE BBOED -->
+      <map code="0xbf9c" name="1em"/><!-- HANGUL SYLLABLE BBOEL -->
+      <map code="0xbf9d" name="1em"/><!-- HANGUL SYLLABLE BBOELG -->
+      <map code="0xbf9e" name="1em"/><!-- HANGUL SYLLABLE BBOELM -->
+      <map code="0xbf9f" name="1em"/><!-- HANGUL SYLLABLE BBOELB -->
+      <map code="0xbfa0" name="1em"/><!-- HANGUL SYLLABLE BBOELS -->
+      <map code="0xbfa1" name="1em"/><!-- HANGUL SYLLABLE BBOELT -->
+      <map code="0xbfa2" name="1em"/><!-- HANGUL SYLLABLE BBOELP -->
+      <map code="0xbfa3" name="1em"/><!-- HANGUL SYLLABLE BBOELH -->
+      <map code="0xbfa4" name="1em"/><!-- HANGUL SYLLABLE BBOEM -->
+      <map code="0xbfa5" name="1em"/><!-- HANGUL SYLLABLE BBOEB -->
+      <map code="0xbfa6" name="1em"/><!-- HANGUL SYLLABLE BBOEBS -->
+      <map code="0xbfa7" name="1em"/><!-- HANGUL SYLLABLE BBOES -->
+      <map code="0xbfa8" name="1em"/><!-- HANGUL SYLLABLE BBOESS -->
+      <map code="0xbfa9" name="1em"/><!-- HANGUL SYLLABLE BBOENG -->
+      <map code="0xbfaa" name="1em"/><!-- HANGUL SYLLABLE BBOEJ -->
+      <map code="0xbfab" name="1em"/><!-- HANGUL SYLLABLE BBOEC -->
+      <map code="0xbfac" name="1em"/><!-- HANGUL SYLLABLE BBOEK -->
+      <map code="0xbfad" name="1em"/><!-- HANGUL SYLLABLE BBOET -->
+      <map code="0xbfae" name="1em"/><!-- HANGUL SYLLABLE BBOEP -->
+      <map code="0xbfaf" name="1em"/><!-- HANGUL SYLLABLE BBOEH -->
+      <map code="0xbfb0" name="1em"/><!-- HANGUL SYLLABLE BBYO -->
+      <map code="0xbfb1" name="1em"/><!-- HANGUL SYLLABLE BBYOG -->
+      <map code="0xbfb2" name="1em"/><!-- HANGUL SYLLABLE BBYOGG -->
+      <map code="0xbfb3" name="1em"/><!-- HANGUL SYLLABLE BBYOGS -->
+      <map code="0xbfb4" name="1em"/><!-- HANGUL SYLLABLE BBYON -->
+      <map code="0xbfb5" name="1em"/><!-- HANGUL SYLLABLE BBYONJ -->
+      <map code="0xbfb6" name="1em"/><!-- HANGUL SYLLABLE BBYONH -->
+      <map code="0xbfb7" name="1em"/><!-- HANGUL SYLLABLE BBYOD -->
+      <map code="0xbfb8" name="1em"/><!-- HANGUL SYLLABLE BBYOL -->
+      <map code="0xbfb9" name="1em"/><!-- HANGUL SYLLABLE BBYOLG -->
+      <map code="0xbfba" name="1em"/><!-- HANGUL SYLLABLE BBYOLM -->
+      <map code="0xbfbb" name="1em"/><!-- HANGUL SYLLABLE BBYOLB -->
+      <map code="0xbfbc" name="1em"/><!-- HANGUL SYLLABLE BBYOLS -->
+      <map code="0xbfbd" name="1em"/><!-- HANGUL SYLLABLE BBYOLT -->
+      <map code="0xbfbe" name="1em"/><!-- HANGUL SYLLABLE BBYOLP -->
+      <map code="0xbfbf" name="1em"/><!-- HANGUL SYLLABLE BBYOLH -->
+      <map code="0xbfc0" name="1em"/><!-- HANGUL SYLLABLE BBYOM -->
+      <map code="0xbfc1" name="1em"/><!-- HANGUL SYLLABLE BBYOB -->
+      <map code="0xbfc2" name="1em"/><!-- HANGUL SYLLABLE BBYOBS -->
+      <map code="0xbfc3" name="1em"/><!-- HANGUL SYLLABLE BBYOS -->
+      <map code="0xbfc4" name="1em"/><!-- HANGUL SYLLABLE BBYOSS -->
+      <map code="0xbfc5" name="1em"/><!-- HANGUL SYLLABLE BBYONG -->
+      <map code="0xbfc6" name="1em"/><!-- HANGUL SYLLABLE BBYOJ -->
+      <map code="0xbfc7" name="1em"/><!-- HANGUL SYLLABLE BBYOC -->
+      <map code="0xbfc8" name="1em"/><!-- HANGUL SYLLABLE BBYOK -->
+      <map code="0xbfc9" name="1em"/><!-- HANGUL SYLLABLE BBYOT -->
+      <map code="0xbfca" name="1em"/><!-- HANGUL SYLLABLE BBYOP -->
+      <map code="0xbfcb" name="1em"/><!-- HANGUL SYLLABLE BBYOH -->
+      <map code="0xbfcc" name="1em"/><!-- HANGUL SYLLABLE BBU -->
+      <map code="0xbfcd" name="1em"/><!-- HANGUL SYLLABLE BBUG -->
+      <map code="0xbfce" name="1em"/><!-- HANGUL SYLLABLE BBUGG -->
+      <map code="0xbfcf" name="1em"/><!-- HANGUL SYLLABLE BBUGS -->
+      <map code="0xbfd0" name="1em"/><!-- HANGUL SYLLABLE BBUN -->
+      <map code="0xbfd1" name="1em"/><!-- HANGUL SYLLABLE BBUNJ -->
+      <map code="0xbfd2" name="1em"/><!-- HANGUL SYLLABLE BBUNH -->
+      <map code="0xbfd3" name="1em"/><!-- HANGUL SYLLABLE BBUD -->
+      <map code="0xbfd4" name="1em"/><!-- HANGUL SYLLABLE BBUL -->
+      <map code="0xbfd5" name="1em"/><!-- HANGUL SYLLABLE BBULG -->
+      <map code="0xbfd6" name="1em"/><!-- HANGUL SYLLABLE BBULM -->
+      <map code="0xbfd7" name="1em"/><!-- HANGUL SYLLABLE BBULB -->
+      <map code="0xbfd8" name="1em"/><!-- HANGUL SYLLABLE BBULS -->
+      <map code="0xbfd9" name="1em"/><!-- HANGUL SYLLABLE BBULT -->
+      <map code="0xbfda" name="1em"/><!-- HANGUL SYLLABLE BBULP -->
+      <map code="0xbfdb" name="1em"/><!-- HANGUL SYLLABLE BBULH -->
+      <map code="0xbfdc" name="1em"/><!-- HANGUL SYLLABLE BBUM -->
+      <map code="0xbfdd" name="1em"/><!-- HANGUL SYLLABLE BBUB -->
+      <map code="0xbfde" name="1em"/><!-- HANGUL SYLLABLE BBUBS -->
+      <map code="0xbfdf" name="1em"/><!-- HANGUL SYLLABLE BBUS -->
+      <map code="0xbfe0" name="1em"/><!-- HANGUL SYLLABLE BBUSS -->
+      <map code="0xbfe1" name="1em"/><!-- HANGUL SYLLABLE BBUNG -->
+      <map code="0xbfe2" name="1em"/><!-- HANGUL SYLLABLE BBUJ -->
+      <map code="0xbfe3" name="1em"/><!-- HANGUL SYLLABLE BBUC -->
+      <map code="0xbfe4" name="1em"/><!-- HANGUL SYLLABLE BBUK -->
+      <map code="0xbfe5" name="1em"/><!-- HANGUL SYLLABLE BBUT -->
+      <map code="0xbfe6" name="1em"/><!-- HANGUL SYLLABLE BBUP -->
+      <map code="0xbfe7" name="1em"/><!-- HANGUL SYLLABLE BBUH -->
+      <map code="0xbfe8" name="1em"/><!-- HANGUL SYLLABLE BBWEO -->
+      <map code="0xbfe9" name="1em"/><!-- HANGUL SYLLABLE BBWEOG -->
+      <map code="0xbfea" name="1em"/><!-- HANGUL SYLLABLE BBWEOGG -->
+      <map code="0xbfeb" name="1em"/><!-- HANGUL SYLLABLE BBWEOGS -->
+      <map code="0xbfec" name="1em"/><!-- HANGUL SYLLABLE BBWEON -->
+      <map code="0xbfed" name="1em"/><!-- HANGUL SYLLABLE BBWEONJ -->
+      <map code="0xbfee" name="1em"/><!-- HANGUL SYLLABLE BBWEONH -->
+      <map code="0xbfef" name="1em"/><!-- HANGUL SYLLABLE BBWEOD -->
+      <map code="0xbff0" name="1em"/><!-- HANGUL SYLLABLE BBWEOL -->
+      <map code="0xbff1" name="1em"/><!-- HANGUL SYLLABLE BBWEOLG -->
+      <map code="0xbff2" name="1em"/><!-- HANGUL SYLLABLE BBWEOLM -->
+      <map code="0xbff3" name="1em"/><!-- HANGUL SYLLABLE BBWEOLB -->
+      <map code="0xbff4" name="1em"/><!-- HANGUL SYLLABLE BBWEOLS -->
+      <map code="0xbff5" name="1em"/><!-- HANGUL SYLLABLE BBWEOLT -->
+      <map code="0xbff6" name="1em"/><!-- HANGUL SYLLABLE BBWEOLP -->
+      <map code="0xbff7" name="1em"/><!-- HANGUL SYLLABLE BBWEOLH -->
+      <map code="0xbff8" name="1em"/><!-- HANGUL SYLLABLE BBWEOM -->
+      <map code="0xbff9" name="1em"/><!-- HANGUL SYLLABLE BBWEOB -->
+      <map code="0xbffa" name="1em"/><!-- HANGUL SYLLABLE BBWEOBS -->
+      <map code="0xbffb" name="1em"/><!-- HANGUL SYLLABLE BBWEOS -->
+      <map code="0xbffc" name="1em"/><!-- HANGUL SYLLABLE BBWEOSS -->
+      <map code="0xbffd" name="1em"/><!-- HANGUL SYLLABLE BBWEONG -->
+      <map code="0xbffe" name="1em"/><!-- HANGUL SYLLABLE BBWEOJ -->
+      <map code="0xbfff" name="1em"/><!-- HANGUL SYLLABLE BBWEOC -->
+      <map code="0xc000" name="1em"/><!-- HANGUL SYLLABLE BBWEOK -->
+      <map code="0xc001" name="1em"/><!-- HANGUL SYLLABLE BBWEOT -->
+      <map code="0xc002" name="1em"/><!-- HANGUL SYLLABLE BBWEOP -->
+      <map code="0xc003" name="1em"/><!-- HANGUL SYLLABLE BBWEOH -->
+      <map code="0xc004" name="1em"/><!-- HANGUL SYLLABLE BBWE -->
+      <map code="0xc005" name="1em"/><!-- HANGUL SYLLABLE BBWEG -->
+      <map code="0xc006" name="1em"/><!-- HANGUL SYLLABLE BBWEGG -->
+      <map code="0xc007" name="1em"/><!-- HANGUL SYLLABLE BBWEGS -->
+      <map code="0xc008" name="1em"/><!-- HANGUL SYLLABLE BBWEN -->
+      <map code="0xc009" name="1em"/><!-- HANGUL SYLLABLE BBWENJ -->
+      <map code="0xc00a" name="1em"/><!-- HANGUL SYLLABLE BBWENH -->
+      <map code="0xc00b" name="1em"/><!-- HANGUL SYLLABLE BBWED -->
+      <map code="0xc00c" name="1em"/><!-- HANGUL SYLLABLE BBWEL -->
+      <map code="0xc00d" name="1em"/><!-- HANGUL SYLLABLE BBWELG -->
+      <map code="0xc00e" name="1em"/><!-- HANGUL SYLLABLE BBWELM -->
+      <map code="0xc00f" name="1em"/><!-- HANGUL SYLLABLE BBWELB -->
+      <map code="0xc010" name="1em"/><!-- HANGUL SYLLABLE BBWELS -->
+      <map code="0xc011" name="1em"/><!-- HANGUL SYLLABLE BBWELT -->
+      <map code="0xc012" name="1em"/><!-- HANGUL SYLLABLE BBWELP -->
+      <map code="0xc013" name="1em"/><!-- HANGUL SYLLABLE BBWELH -->
+      <map code="0xc014" name="1em"/><!-- HANGUL SYLLABLE BBWEM -->
+      <map code="0xc015" name="1em"/><!-- HANGUL SYLLABLE BBWEB -->
+      <map code="0xc016" name="1em"/><!-- HANGUL SYLLABLE BBWEBS -->
+      <map code="0xc017" name="1em"/><!-- HANGUL SYLLABLE BBWES -->
+      <map code="0xc018" name="1em"/><!-- HANGUL SYLLABLE BBWESS -->
+      <map code="0xc019" name="1em"/><!-- HANGUL SYLLABLE BBWENG -->
+      <map code="0xc01a" name="1em"/><!-- HANGUL SYLLABLE BBWEJ -->
+      <map code="0xc01b" name="1em"/><!-- HANGUL SYLLABLE BBWEC -->
+      <map code="0xc01c" name="1em"/><!-- HANGUL SYLLABLE BBWEK -->
+      <map code="0xc01d" name="1em"/><!-- HANGUL SYLLABLE BBWET -->
+      <map code="0xc01e" name="1em"/><!-- HANGUL SYLLABLE BBWEP -->
+      <map code="0xc01f" name="1em"/><!-- HANGUL SYLLABLE BBWEH -->
+      <map code="0xc020" name="1em"/><!-- HANGUL SYLLABLE BBWI -->
+      <map code="0xc021" name="1em"/><!-- HANGUL SYLLABLE BBWIG -->
+      <map code="0xc022" name="1em"/><!-- HANGUL SYLLABLE BBWIGG -->
+      <map code="0xc023" name="1em"/><!-- HANGUL SYLLABLE BBWIGS -->
+      <map code="0xc024" name="1em"/><!-- HANGUL SYLLABLE BBWIN -->
+      <map code="0xc025" name="1em"/><!-- HANGUL SYLLABLE BBWINJ -->
+      <map code="0xc026" name="1em"/><!-- HANGUL SYLLABLE BBWINH -->
+      <map code="0xc027" name="1em"/><!-- HANGUL SYLLABLE BBWID -->
+      <map code="0xc028" name="1em"/><!-- HANGUL SYLLABLE BBWIL -->
+      <map code="0xc029" name="1em"/><!-- HANGUL SYLLABLE BBWILG -->
+      <map code="0xc02a" name="1em"/><!-- HANGUL SYLLABLE BBWILM -->
+      <map code="0xc02b" name="1em"/><!-- HANGUL SYLLABLE BBWILB -->
+      <map code="0xc02c" name="1em"/><!-- HANGUL SYLLABLE BBWILS -->
+      <map code="0xc02d" name="1em"/><!-- HANGUL SYLLABLE BBWILT -->
+      <map code="0xc02e" name="1em"/><!-- HANGUL SYLLABLE BBWILP -->
+      <map code="0xc02f" name="1em"/><!-- HANGUL SYLLABLE BBWILH -->
+      <map code="0xc030" name="1em"/><!-- HANGUL SYLLABLE BBWIM -->
+      <map code="0xc031" name="1em"/><!-- HANGUL SYLLABLE BBWIB -->
+      <map code="0xc032" name="1em"/><!-- HANGUL SYLLABLE BBWIBS -->
+      <map code="0xc033" name="1em"/><!-- HANGUL SYLLABLE BBWIS -->
+      <map code="0xc034" name="1em"/><!-- HANGUL SYLLABLE BBWISS -->
+      <map code="0xc035" name="1em"/><!-- HANGUL SYLLABLE BBWING -->
+      <map code="0xc036" name="1em"/><!-- HANGUL SYLLABLE BBWIJ -->
+      <map code="0xc037" name="1em"/><!-- HANGUL SYLLABLE BBWIC -->
+      <map code="0xc038" name="1em"/><!-- HANGUL SYLLABLE BBWIK -->
+      <map code="0xc039" name="1em"/><!-- HANGUL SYLLABLE BBWIT -->
+      <map code="0xc03a" name="1em"/><!-- HANGUL SYLLABLE BBWIP -->
+      <map code="0xc03b" name="1em"/><!-- HANGUL SYLLABLE BBWIH -->
+      <map code="0xc03c" name="1em"/><!-- HANGUL SYLLABLE BBYU -->
+      <map code="0xc03d" name="1em"/><!-- HANGUL SYLLABLE BBYUG -->
+      <map code="0xc03e" name="1em"/><!-- HANGUL SYLLABLE BBYUGG -->
+      <map code="0xc03f" name="1em"/><!-- HANGUL SYLLABLE BBYUGS -->
+      <map code="0xc040" name="1em"/><!-- HANGUL SYLLABLE BBYUN -->
+      <map code="0xc041" name="1em"/><!-- HANGUL SYLLABLE BBYUNJ -->
+      <map code="0xc042" name="1em"/><!-- HANGUL SYLLABLE BBYUNH -->
+      <map code="0xc043" name="1em"/><!-- HANGUL SYLLABLE BBYUD -->
+      <map code="0xc044" name="1em"/><!-- HANGUL SYLLABLE BBYUL -->
+      <map code="0xc045" name="1em"/><!-- HANGUL SYLLABLE BBYULG -->
+      <map code="0xc046" name="1em"/><!-- HANGUL SYLLABLE BBYULM -->
+      <map code="0xc047" name="1em"/><!-- HANGUL SYLLABLE BBYULB -->
+      <map code="0xc048" name="1em"/><!-- HANGUL SYLLABLE BBYULS -->
+      <map code="0xc049" name="1em"/><!-- HANGUL SYLLABLE BBYULT -->
+      <map code="0xc04a" name="1em"/><!-- HANGUL SYLLABLE BBYULP -->
+      <map code="0xc04b" name="1em"/><!-- HANGUL SYLLABLE BBYULH -->
+      <map code="0xc04c" name="1em"/><!-- HANGUL SYLLABLE BBYUM -->
+      <map code="0xc04d" name="1em"/><!-- HANGUL SYLLABLE BBYUB -->
+      <map code="0xc04e" name="1em"/><!-- HANGUL SYLLABLE BBYUBS -->
+      <map code="0xc04f" name="1em"/><!-- HANGUL SYLLABLE BBYUS -->
+      <map code="0xc050" name="1em"/><!-- HANGUL SYLLABLE BBYUSS -->
+      <map code="0xc051" name="1em"/><!-- HANGUL SYLLABLE BBYUNG -->
+      <map code="0xc052" name="1em"/><!-- HANGUL SYLLABLE BBYUJ -->
+      <map code="0xc053" name="1em"/><!-- HANGUL SYLLABLE BBYUC -->
+      <map code="0xc054" name="1em"/><!-- HANGUL SYLLABLE BBYUK -->
+      <map code="0xc055" name="1em"/><!-- HANGUL SYLLABLE BBYUT -->
+      <map code="0xc056" name="1em"/><!-- HANGUL SYLLABLE BBYUP -->
+      <map code="0xc057" name="1em"/><!-- HANGUL SYLLABLE BBYUH -->
+      <map code="0xc058" name="1em"/><!-- HANGUL SYLLABLE BBEU -->
+      <map code="0xc059" name="1em"/><!-- HANGUL SYLLABLE BBEUG -->
+      <map code="0xc05a" name="1em"/><!-- HANGUL SYLLABLE BBEUGG -->
+      <map code="0xc05b" name="1em"/><!-- HANGUL SYLLABLE BBEUGS -->
+      <map code="0xc05c" name="1em"/><!-- HANGUL SYLLABLE BBEUN -->
+      <map code="0xc05d" name="1em"/><!-- HANGUL SYLLABLE BBEUNJ -->
+      <map code="0xc05e" name="1em"/><!-- HANGUL SYLLABLE BBEUNH -->
+      <map code="0xc05f" name="1em"/><!-- HANGUL SYLLABLE BBEUD -->
+      <map code="0xc060" name="1em"/><!-- HANGUL SYLLABLE BBEUL -->
+      <map code="0xc061" name="1em"/><!-- HANGUL SYLLABLE BBEULG -->
+      <map code="0xc062" name="1em"/><!-- HANGUL SYLLABLE BBEULM -->
+      <map code="0xc063" name="1em"/><!-- HANGUL SYLLABLE BBEULB -->
+      <map code="0xc064" name="1em"/><!-- HANGUL SYLLABLE BBEULS -->
+      <map code="0xc065" name="1em"/><!-- HANGUL SYLLABLE BBEULT -->
+      <map code="0xc066" name="1em"/><!-- HANGUL SYLLABLE BBEULP -->
+      <map code="0xc067" name="1em"/><!-- HANGUL SYLLABLE BBEULH -->
+      <map code="0xc068" name="1em"/><!-- HANGUL SYLLABLE BBEUM -->
+      <map code="0xc069" name="1em"/><!-- HANGUL SYLLABLE BBEUB -->
+      <map code="0xc06a" name="1em"/><!-- HANGUL SYLLABLE BBEUBS -->
+      <map code="0xc06b" name="1em"/><!-- HANGUL SYLLABLE BBEUS -->
+      <map code="0xc06c" name="1em"/><!-- HANGUL SYLLABLE BBEUSS -->
+      <map code="0xc06d" name="1em"/><!-- HANGUL SYLLABLE BBEUNG -->
+      <map code="0xc06e" name="1em"/><!-- HANGUL SYLLABLE BBEUJ -->
+      <map code="0xc06f" name="1em"/><!-- HANGUL SYLLABLE BBEUC -->
+      <map code="0xc070" name="1em"/><!-- HANGUL SYLLABLE BBEUK -->
+      <map code="0xc071" name="1em"/><!-- HANGUL SYLLABLE BBEUT -->
+      <map code="0xc072" name="1em"/><!-- HANGUL SYLLABLE BBEUP -->
+      <map code="0xc073" name="1em"/><!-- HANGUL SYLLABLE BBEUH -->
+      <map code="0xc074" name="1em"/><!-- HANGUL SYLLABLE BBYI -->
+      <map code="0xc075" name="1em"/><!-- HANGUL SYLLABLE BBYIG -->
+      <map code="0xc076" name="1em"/><!-- HANGUL SYLLABLE BBYIGG -->
+      <map code="0xc077" name="1em"/><!-- HANGUL SYLLABLE BBYIGS -->
+      <map code="0xc078" name="1em"/><!-- HANGUL SYLLABLE BBYIN -->
+      <map code="0xc079" name="1em"/><!-- HANGUL SYLLABLE BBYINJ -->
+      <map code="0xc07a" name="1em"/><!-- HANGUL SYLLABLE BBYINH -->
+      <map code="0xc07b" name="1em"/><!-- HANGUL SYLLABLE BBYID -->
+      <map code="0xc07c" name="1em"/><!-- HANGUL SYLLABLE BBYIL -->
+      <map code="0xc07d" name="1em"/><!-- HANGUL SYLLABLE BBYILG -->
+      <map code="0xc07e" name="1em"/><!-- HANGUL SYLLABLE BBYILM -->
+      <map code="0xc07f" name="1em"/><!-- HANGUL SYLLABLE BBYILB -->
+      <map code="0xc080" name="1em"/><!-- HANGUL SYLLABLE BBYILS -->
+      <map code="0xc081" name="1em"/><!-- HANGUL SYLLABLE BBYILT -->
+      <map code="0xc082" name="1em"/><!-- HANGUL SYLLABLE BBYILP -->
+      <map code="0xc083" name="1em"/><!-- HANGUL SYLLABLE BBYILH -->
+      <map code="0xc084" name="1em"/><!-- HANGUL SYLLABLE BBYIM -->
+      <map code="0xc085" name="1em"/><!-- HANGUL SYLLABLE BBYIB -->
+      <map code="0xc086" name="1em"/><!-- HANGUL SYLLABLE BBYIBS -->
+      <map code="0xc087" name="1em"/><!-- HANGUL SYLLABLE BBYIS -->
+      <map code="0xc088" name="1em"/><!-- HANGUL SYLLABLE BBYISS -->
+      <map code="0xc089" name="1em"/><!-- HANGUL SYLLABLE BBYING -->
+      <map code="0xc08a" name="1em"/><!-- HANGUL SYLLABLE BBYIJ -->
+      <map code="0xc08b" name="1em"/><!-- HANGUL SYLLABLE BBYIC -->
+      <map code="0xc08c" name="1em"/><!-- HANGUL SYLLABLE BBYIK -->
+      <map code="0xc08d" name="1em"/><!-- HANGUL SYLLABLE BBYIT -->
+      <map code="0xc08e" name="1em"/><!-- HANGUL SYLLABLE BBYIP -->
+      <map code="0xc08f" name="1em"/><!-- HANGUL SYLLABLE BBYIH -->
+      <map code="0xc090" name="1em"/><!-- HANGUL SYLLABLE BBI -->
+      <map code="0xc091" name="1em"/><!-- HANGUL SYLLABLE BBIG -->
+      <map code="0xc092" name="1em"/><!-- HANGUL SYLLABLE BBIGG -->
+      <map code="0xc093" name="1em"/><!-- HANGUL SYLLABLE BBIGS -->
+      <map code="0xc094" name="1em"/><!-- HANGUL SYLLABLE BBIN -->
+      <map code="0xc095" name="1em"/><!-- HANGUL SYLLABLE BBINJ -->
+      <map code="0xc096" name="1em"/><!-- HANGUL SYLLABLE BBINH -->
+      <map code="0xc097" name="1em"/><!-- HANGUL SYLLABLE BBID -->
+      <map code="0xc098" name="1em"/><!-- HANGUL SYLLABLE BBIL -->
+      <map code="0xc099" name="1em"/><!-- HANGUL SYLLABLE BBILG -->
+      <map code="0xc09a" name="1em"/><!-- HANGUL SYLLABLE BBILM -->
+      <map code="0xc09b" name="1em"/><!-- HANGUL SYLLABLE BBILB -->
+      <map code="0xc09c" name="1em"/><!-- HANGUL SYLLABLE BBILS -->
+      <map code="0xc09d" name="1em"/><!-- HANGUL SYLLABLE BBILT -->
+      <map code="0xc09e" name="1em"/><!-- HANGUL SYLLABLE BBILP -->
+      <map code="0xc09f" name="1em"/><!-- HANGUL SYLLABLE BBILH -->
+      <map code="0xc0a0" name="1em"/><!-- HANGUL SYLLABLE BBIM -->
+      <map code="0xc0a1" name="1em"/><!-- HANGUL SYLLABLE BBIB -->
+      <map code="0xc0a2" name="1em"/><!-- HANGUL SYLLABLE BBIBS -->
+      <map code="0xc0a3" name="1em"/><!-- HANGUL SYLLABLE BBIS -->
+      <map code="0xc0a4" name="1em"/><!-- HANGUL SYLLABLE BBISS -->
+      <map code="0xc0a5" name="1em"/><!-- HANGUL SYLLABLE BBING -->
+      <map code="0xc0a6" name="1em"/><!-- HANGUL SYLLABLE BBIJ -->
+      <map code="0xc0a7" name="1em"/><!-- HANGUL SYLLABLE BBIC -->
+      <map code="0xc0a8" name="1em"/><!-- HANGUL SYLLABLE BBIK -->
+      <map code="0xc0a9" name="1em"/><!-- HANGUL SYLLABLE BBIT -->
+      <map code="0xc0aa" name="1em"/><!-- HANGUL SYLLABLE BBIP -->
+      <map code="0xc0ab" name="1em"/><!-- HANGUL SYLLABLE BBIH -->
+      <map code="0xc0ac" name="1em"/><!-- HANGUL SYLLABLE SA -->
+      <map code="0xc0ad" name="1em"/><!-- HANGUL SYLLABLE SAG -->
+      <map code="0xc0ae" name="1em"/><!-- HANGUL SYLLABLE SAGG -->
+      <map code="0xc0af" name="1em"/><!-- HANGUL SYLLABLE SAGS -->
+      <map code="0xc0b0" name="1em"/><!-- HANGUL SYLLABLE SAN -->
+      <map code="0xc0b1" name="1em"/><!-- HANGUL SYLLABLE SANJ -->
+      <map code="0xc0b2" name="1em"/><!-- HANGUL SYLLABLE SANH -->
+      <map code="0xc0b3" name="1em"/><!-- HANGUL SYLLABLE SAD -->
+      <map code="0xc0b4" name="1em"/><!-- HANGUL SYLLABLE SAL -->
+      <map code="0xc0b5" name="1em"/><!-- HANGUL SYLLABLE SALG -->
+      <map code="0xc0b6" name="1em"/><!-- HANGUL SYLLABLE SALM -->
+      <map code="0xc0b7" name="1em"/><!-- HANGUL SYLLABLE SALB -->
+      <map code="0xc0b8" name="1em"/><!-- HANGUL SYLLABLE SALS -->
+      <map code="0xc0b9" name="1em"/><!-- HANGUL SYLLABLE SALT -->
+      <map code="0xc0ba" name="1em"/><!-- HANGUL SYLLABLE SALP -->
+      <map code="0xc0bb" name="1em"/><!-- HANGUL SYLLABLE SALH -->
+      <map code="0xc0bc" name="1em"/><!-- HANGUL SYLLABLE SAM -->
+      <map code="0xc0bd" name="1em"/><!-- HANGUL SYLLABLE SAB -->
+      <map code="0xc0be" name="1em"/><!-- HANGUL SYLLABLE SABS -->
+      <map code="0xc0bf" name="1em"/><!-- HANGUL SYLLABLE SAS -->
+      <map code="0xc0c0" name="1em"/><!-- HANGUL SYLLABLE SASS -->
+      <map code="0xc0c1" name="1em"/><!-- HANGUL SYLLABLE SANG -->
+      <map code="0xc0c2" name="1em"/><!-- HANGUL SYLLABLE SAJ -->
+      <map code="0xc0c3" name="1em"/><!-- HANGUL SYLLABLE SAC -->
+      <map code="0xc0c4" name="1em"/><!-- HANGUL SYLLABLE SAK -->
+      <map code="0xc0c5" name="1em"/><!-- HANGUL SYLLABLE SAT -->
+      <map code="0xc0c6" name="1em"/><!-- HANGUL SYLLABLE SAP -->
+      <map code="0xc0c7" name="1em"/><!-- HANGUL SYLLABLE SAH -->
+      <map code="0xc0c8" name="1em"/><!-- HANGUL SYLLABLE SAE -->
+      <map code="0xc0c9" name="1em"/><!-- HANGUL SYLLABLE SAEG -->
+      <map code="0xc0ca" name="1em"/><!-- HANGUL SYLLABLE SAEGG -->
+      <map code="0xc0cb" name="1em"/><!-- HANGUL SYLLABLE SAEGS -->
+      <map code="0xc0cc" name="1em"/><!-- HANGUL SYLLABLE SAEN -->
+      <map code="0xc0cd" name="1em"/><!-- HANGUL SYLLABLE SAENJ -->
+      <map code="0xc0ce" name="1em"/><!-- HANGUL SYLLABLE SAENH -->
+      <map code="0xc0cf" name="1em"/><!-- HANGUL SYLLABLE SAED -->
+      <map code="0xc0d0" name="1em"/><!-- HANGUL SYLLABLE SAEL -->
+      <map code="0xc0d1" name="1em"/><!-- HANGUL SYLLABLE SAELG -->
+      <map code="0xc0d2" name="1em"/><!-- HANGUL SYLLABLE SAELM -->
+      <map code="0xc0d3" name="1em"/><!-- HANGUL SYLLABLE SAELB -->
+      <map code="0xc0d4" name="1em"/><!-- HANGUL SYLLABLE SAELS -->
+      <map code="0xc0d5" name="1em"/><!-- HANGUL SYLLABLE SAELT -->
+      <map code="0xc0d6" name="1em"/><!-- HANGUL SYLLABLE SAELP -->
+      <map code="0xc0d7" name="1em"/><!-- HANGUL SYLLABLE SAELH -->
+      <map code="0xc0d8" name="1em"/><!-- HANGUL SYLLABLE SAEM -->
+      <map code="0xc0d9" name="1em"/><!-- HANGUL SYLLABLE SAEB -->
+      <map code="0xc0da" name="1em"/><!-- HANGUL SYLLABLE SAEBS -->
+      <map code="0xc0db" name="1em"/><!-- HANGUL SYLLABLE SAES -->
+      <map code="0xc0dc" name="1em"/><!-- HANGUL SYLLABLE SAESS -->
+      <map code="0xc0dd" name="1em"/><!-- HANGUL SYLLABLE SAENG -->
+      <map code="0xc0de" name="1em"/><!-- HANGUL SYLLABLE SAEJ -->
+      <map code="0xc0df" name="1em"/><!-- HANGUL SYLLABLE SAEC -->
+      <map code="0xc0e0" name="1em"/><!-- HANGUL SYLLABLE SAEK -->
+      <map code="0xc0e1" name="1em"/><!-- HANGUL SYLLABLE SAET -->
+      <map code="0xc0e2" name="1em"/><!-- HANGUL SYLLABLE SAEP -->
+      <map code="0xc0e3" name="1em"/><!-- HANGUL SYLLABLE SAEH -->
+      <map code="0xc0e4" name="1em"/><!-- HANGUL SYLLABLE SYA -->
+      <map code="0xc0e5" name="1em"/><!-- HANGUL SYLLABLE SYAG -->
+      <map code="0xc0e6" name="1em"/><!-- HANGUL SYLLABLE SYAGG -->
+      <map code="0xc0e7" name="1em"/><!-- HANGUL SYLLABLE SYAGS -->
+      <map code="0xc0e8" name="1em"/><!-- HANGUL SYLLABLE SYAN -->
+      <map code="0xc0e9" name="1em"/><!-- HANGUL SYLLABLE SYANJ -->
+      <map code="0xc0ea" name="1em"/><!-- HANGUL SYLLABLE SYANH -->
+      <map code="0xc0eb" name="1em"/><!-- HANGUL SYLLABLE SYAD -->
+      <map code="0xc0ec" name="1em"/><!-- HANGUL SYLLABLE SYAL -->
+      <map code="0xc0ed" name="1em"/><!-- HANGUL SYLLABLE SYALG -->
+      <map code="0xc0ee" name="1em"/><!-- HANGUL SYLLABLE SYALM -->
+      <map code="0xc0ef" name="1em"/><!-- HANGUL SYLLABLE SYALB -->
+      <map code="0xc0f0" name="1em"/><!-- HANGUL SYLLABLE SYALS -->
+      <map code="0xc0f1" name="1em"/><!-- HANGUL SYLLABLE SYALT -->
+      <map code="0xc0f2" name="1em"/><!-- HANGUL SYLLABLE SYALP -->
+      <map code="0xc0f3" name="1em"/><!-- HANGUL SYLLABLE SYALH -->
+      <map code="0xc0f4" name="1em"/><!-- HANGUL SYLLABLE SYAM -->
+      <map code="0xc0f5" name="1em"/><!-- HANGUL SYLLABLE SYAB -->
+      <map code="0xc0f6" name="1em"/><!-- HANGUL SYLLABLE SYABS -->
+      <map code="0xc0f7" name="1em"/><!-- HANGUL SYLLABLE SYAS -->
+      <map code="0xc0f8" name="1em"/><!-- HANGUL SYLLABLE SYASS -->
+      <map code="0xc0f9" name="1em"/><!-- HANGUL SYLLABLE SYANG -->
+      <map code="0xc0fa" name="1em"/><!-- HANGUL SYLLABLE SYAJ -->
+      <map code="0xc0fb" name="1em"/><!-- HANGUL SYLLABLE SYAC -->
+      <map code="0xc0fc" name="1em"/><!-- HANGUL SYLLABLE SYAK -->
+      <map code="0xc0fd" name="1em"/><!-- HANGUL SYLLABLE SYAT -->
+      <map code="0xc0fe" name="1em"/><!-- HANGUL SYLLABLE SYAP -->
+      <map code="0xc0ff" name="1em"/><!-- HANGUL SYLLABLE SYAH -->
+      <map code="0xc100" name="1em"/><!-- HANGUL SYLLABLE SYAE -->
+      <map code="0xc101" name="1em"/><!-- HANGUL SYLLABLE SYAEG -->
+      <map code="0xc102" name="1em"/><!-- HANGUL SYLLABLE SYAEGG -->
+      <map code="0xc103" name="1em"/><!-- HANGUL SYLLABLE SYAEGS -->
+      <map code="0xc104" name="1em"/><!-- HANGUL SYLLABLE SYAEN -->
+      <map code="0xc105" name="1em"/><!-- HANGUL SYLLABLE SYAENJ -->
+      <map code="0xc106" name="1em"/><!-- HANGUL SYLLABLE SYAENH -->
+      <map code="0xc107" name="1em"/><!-- HANGUL SYLLABLE SYAED -->
+      <map code="0xc108" name="1em"/><!-- HANGUL SYLLABLE SYAEL -->
+      <map code="0xc109" name="1em"/><!-- HANGUL SYLLABLE SYAELG -->
+      <map code="0xc10a" name="1em"/><!-- HANGUL SYLLABLE SYAELM -->
+      <map code="0xc10b" name="1em"/><!-- HANGUL SYLLABLE SYAELB -->
+      <map code="0xc10c" name="1em"/><!-- HANGUL SYLLABLE SYAELS -->
+      <map code="0xc10d" name="1em"/><!-- HANGUL SYLLABLE SYAELT -->
+      <map code="0xc10e" name="1em"/><!-- HANGUL SYLLABLE SYAELP -->
+      <map code="0xc10f" name="1em"/><!-- HANGUL SYLLABLE SYAELH -->
+      <map code="0xc110" name="1em"/><!-- HANGUL SYLLABLE SYAEM -->
+      <map code="0xc111" name="1em"/><!-- HANGUL SYLLABLE SYAEB -->
+      <map code="0xc112" name="1em"/><!-- HANGUL SYLLABLE SYAEBS -->
+      <map code="0xc113" name="1em"/><!-- HANGUL SYLLABLE SYAES -->
+      <map code="0xc114" name="1em"/><!-- HANGUL SYLLABLE SYAESS -->
+      <map code="0xc115" name="1em"/><!-- HANGUL SYLLABLE SYAENG -->
+      <map code="0xc116" name="1em"/><!-- HANGUL SYLLABLE SYAEJ -->
+      <map code="0xc117" name="1em"/><!-- HANGUL SYLLABLE SYAEC -->
+      <map code="0xc118" name="1em"/><!-- HANGUL SYLLABLE SYAEK -->
+      <map code="0xc119" name="1em"/><!-- HANGUL SYLLABLE SYAET -->
+      <map code="0xc11a" name="1em"/><!-- HANGUL SYLLABLE SYAEP -->
+      <map code="0xc11b" name="1em"/><!-- HANGUL SYLLABLE SYAEH -->
+      <map code="0xc11c" name="1em"/><!-- HANGUL SYLLABLE SEO -->
+      <map code="0xc11d" name="1em"/><!-- HANGUL SYLLABLE SEOG -->
+      <map code="0xc11e" name="1em"/><!-- HANGUL SYLLABLE SEOGG -->
+      <map code="0xc11f" name="1em"/><!-- HANGUL SYLLABLE SEOGS -->
+      <map code="0xc120" name="1em"/><!-- HANGUL SYLLABLE SEON -->
+      <map code="0xc121" name="1em"/><!-- HANGUL SYLLABLE SEONJ -->
+      <map code="0xc122" name="1em"/><!-- HANGUL SYLLABLE SEONH -->
+      <map code="0xc123" name="1em"/><!-- HANGUL SYLLABLE SEOD -->
+      <map code="0xc124" name="1em"/><!-- HANGUL SYLLABLE SEOL -->
+      <map code="0xc125" name="1em"/><!-- HANGUL SYLLABLE SEOLG -->
+      <map code="0xc126" name="1em"/><!-- HANGUL SYLLABLE SEOLM -->
+      <map code="0xc127" name="1em"/><!-- HANGUL SYLLABLE SEOLB -->
+      <map code="0xc128" name="1em"/><!-- HANGUL SYLLABLE SEOLS -->
+      <map code="0xc129" name="1em"/><!-- HANGUL SYLLABLE SEOLT -->
+      <map code="0xc12a" name="1em"/><!-- HANGUL SYLLABLE SEOLP -->
+      <map code="0xc12b" name="1em"/><!-- HANGUL SYLLABLE SEOLH -->
+      <map code="0xc12c" name="1em"/><!-- HANGUL SYLLABLE SEOM -->
+      <map code="0xc12d" name="1em"/><!-- HANGUL SYLLABLE SEOB -->
+      <map code="0xc12e" name="1em"/><!-- HANGUL SYLLABLE SEOBS -->
+      <map code="0xc12f" name="1em"/><!-- HANGUL SYLLABLE SEOS -->
+      <map code="0xc130" name="1em"/><!-- HANGUL SYLLABLE SEOSS -->
+      <map code="0xc131" name="1em"/><!-- HANGUL SYLLABLE SEONG -->
+      <map code="0xc132" name="1em"/><!-- HANGUL SYLLABLE SEOJ -->
+      <map code="0xc133" name="1em"/><!-- HANGUL SYLLABLE SEOC -->
+      <map code="0xc134" name="1em"/><!-- HANGUL SYLLABLE SEOK -->
+      <map code="0xc135" name="1em"/><!-- HANGUL SYLLABLE SEOT -->
+      <map code="0xc136" name="1em"/><!-- HANGUL SYLLABLE SEOP -->
+      <map code="0xc137" name="1em"/><!-- HANGUL SYLLABLE SEOH -->
+      <map code="0xc138" name="1em"/><!-- HANGUL SYLLABLE SE -->
+      <map code="0xc139" name="1em"/><!-- HANGUL SYLLABLE SEG -->
+      <map code="0xc13a" name="1em"/><!-- HANGUL SYLLABLE SEGG -->
+      <map code="0xc13b" name="1em"/><!-- HANGUL SYLLABLE SEGS -->
+      <map code="0xc13c" name="1em"/><!-- HANGUL SYLLABLE SEN -->
+      <map code="0xc13d" name="1em"/><!-- HANGUL SYLLABLE SENJ -->
+      <map code="0xc13e" name="1em"/><!-- HANGUL SYLLABLE SENH -->
+      <map code="0xc13f" name="1em"/><!-- HANGUL SYLLABLE SED -->
+      <map code="0xc140" name="1em"/><!-- HANGUL SYLLABLE SEL -->
+      <map code="0xc141" name="1em"/><!-- HANGUL SYLLABLE SELG -->
+      <map code="0xc142" name="1em"/><!-- HANGUL SYLLABLE SELM -->
+      <map code="0xc143" name="1em"/><!-- HANGUL SYLLABLE SELB -->
+      <map code="0xc144" name="1em"/><!-- HANGUL SYLLABLE SELS -->
+      <map code="0xc145" name="1em"/><!-- HANGUL SYLLABLE SELT -->
+      <map code="0xc146" name="1em"/><!-- HANGUL SYLLABLE SELP -->
+      <map code="0xc147" name="1em"/><!-- HANGUL SYLLABLE SELH -->
+      <map code="0xc148" name="1em"/><!-- HANGUL SYLLABLE SEM -->
+      <map code="0xc149" name="1em"/><!-- HANGUL SYLLABLE SEB -->
+      <map code="0xc14a" name="1em"/><!-- HANGUL SYLLABLE SEBS -->
+      <map code="0xc14b" name="1em"/><!-- HANGUL SYLLABLE SES -->
+      <map code="0xc14c" name="1em"/><!-- HANGUL SYLLABLE SESS -->
+      <map code="0xc14d" name="1em"/><!-- HANGUL SYLLABLE SENG -->
+      <map code="0xc14e" name="1em"/><!-- HANGUL SYLLABLE SEJ -->
+      <map code="0xc14f" name="1em"/><!-- HANGUL SYLLABLE SEC -->
+      <map code="0xc150" name="1em"/><!-- HANGUL SYLLABLE SEK -->
+      <map code="0xc151" name="1em"/><!-- HANGUL SYLLABLE SET -->
+      <map code="0xc152" name="1em"/><!-- HANGUL SYLLABLE SEP -->
+      <map code="0xc153" name="1em"/><!-- HANGUL SYLLABLE SEH -->
+      <map code="0xc154" name="1em"/><!-- HANGUL SYLLABLE SYEO -->
+      <map code="0xc155" name="1em"/><!-- HANGUL SYLLABLE SYEOG -->
+      <map code="0xc156" name="1em"/><!-- HANGUL SYLLABLE SYEOGG -->
+      <map code="0xc157" name="1em"/><!-- HANGUL SYLLABLE SYEOGS -->
+      <map code="0xc158" name="1em"/><!-- HANGUL SYLLABLE SYEON -->
+      <map code="0xc159" name="1em"/><!-- HANGUL SYLLABLE SYEONJ -->
+      <map code="0xc15a" name="1em"/><!-- HANGUL SYLLABLE SYEONH -->
+      <map code="0xc15b" name="1em"/><!-- HANGUL SYLLABLE SYEOD -->
+      <map code="0xc15c" name="1em"/><!-- HANGUL SYLLABLE SYEOL -->
+      <map code="0xc15d" name="1em"/><!-- HANGUL SYLLABLE SYEOLG -->
+      <map code="0xc15e" name="1em"/><!-- HANGUL SYLLABLE SYEOLM -->
+      <map code="0xc15f" name="1em"/><!-- HANGUL SYLLABLE SYEOLB -->
+      <map code="0xc160" name="1em"/><!-- HANGUL SYLLABLE SYEOLS -->
+      <map code="0xc161" name="1em"/><!-- HANGUL SYLLABLE SYEOLT -->
+      <map code="0xc162" name="1em"/><!-- HANGUL SYLLABLE SYEOLP -->
+      <map code="0xc163" name="1em"/><!-- HANGUL SYLLABLE SYEOLH -->
+      <map code="0xc164" name="1em"/><!-- HANGUL SYLLABLE SYEOM -->
+      <map code="0xc165" name="1em"/><!-- HANGUL SYLLABLE SYEOB -->
+      <map code="0xc166" name="1em"/><!-- HANGUL SYLLABLE SYEOBS -->
+      <map code="0xc167" name="1em"/><!-- HANGUL SYLLABLE SYEOS -->
+      <map code="0xc168" name="1em"/><!-- HANGUL SYLLABLE SYEOSS -->
+      <map code="0xc169" name="1em"/><!-- HANGUL SYLLABLE SYEONG -->
+      <map code="0xc16a" name="1em"/><!-- HANGUL SYLLABLE SYEOJ -->
+      <map code="0xc16b" name="1em"/><!-- HANGUL SYLLABLE SYEOC -->
+      <map code="0xc16c" name="1em"/><!-- HANGUL SYLLABLE SYEOK -->
+      <map code="0xc16d" name="1em"/><!-- HANGUL SYLLABLE SYEOT -->
+      <map code="0xc16e" name="1em"/><!-- HANGUL SYLLABLE SYEOP -->
+      <map code="0xc16f" name="1em"/><!-- HANGUL SYLLABLE SYEOH -->
+      <map code="0xc170" name="1em"/><!-- HANGUL SYLLABLE SYE -->
+      <map code="0xc171" name="1em"/><!-- HANGUL SYLLABLE SYEG -->
+      <map code="0xc172" name="1em"/><!-- HANGUL SYLLABLE SYEGG -->
+      <map code="0xc173" name="1em"/><!-- HANGUL SYLLABLE SYEGS -->
+      <map code="0xc174" name="1em"/><!-- HANGUL SYLLABLE SYEN -->
+      <map code="0xc175" name="1em"/><!-- HANGUL SYLLABLE SYENJ -->
+      <map code="0xc176" name="1em"/><!-- HANGUL SYLLABLE SYENH -->
+      <map code="0xc177" name="1em"/><!-- HANGUL SYLLABLE SYED -->
+      <map code="0xc178" name="1em"/><!-- HANGUL SYLLABLE SYEL -->
+      <map code="0xc179" name="1em"/><!-- HANGUL SYLLABLE SYELG -->
+      <map code="0xc17a" name="1em"/><!-- HANGUL SYLLABLE SYELM -->
+      <map code="0xc17b" name="1em"/><!-- HANGUL SYLLABLE SYELB -->
+      <map code="0xc17c" name="1em"/><!-- HANGUL SYLLABLE SYELS -->
+      <map code="0xc17d" name="1em"/><!-- HANGUL SYLLABLE SYELT -->
+      <map code="0xc17e" name="1em"/><!-- HANGUL SYLLABLE SYELP -->
+      <map code="0xc17f" name="1em"/><!-- HANGUL SYLLABLE SYELH -->
+      <map code="0xc180" name="1em"/><!-- HANGUL SYLLABLE SYEM -->
+      <map code="0xc181" name="1em"/><!-- HANGUL SYLLABLE SYEB -->
+      <map code="0xc182" name="1em"/><!-- HANGUL SYLLABLE SYEBS -->
+      <map code="0xc183" name="1em"/><!-- HANGUL SYLLABLE SYES -->
+      <map code="0xc184" name="1em"/><!-- HANGUL SYLLABLE SYESS -->
+      <map code="0xc185" name="1em"/><!-- HANGUL SYLLABLE SYENG -->
+      <map code="0xc186" name="1em"/><!-- HANGUL SYLLABLE SYEJ -->
+      <map code="0xc187" name="1em"/><!-- HANGUL SYLLABLE SYEC -->
+      <map code="0xc188" name="1em"/><!-- HANGUL SYLLABLE SYEK -->
+      <map code="0xc189" name="1em"/><!-- HANGUL SYLLABLE SYET -->
+      <map code="0xc18a" name="1em"/><!-- HANGUL SYLLABLE SYEP -->
+      <map code="0xc18b" name="1em"/><!-- HANGUL SYLLABLE SYEH -->
+      <map code="0xc18c" name="1em"/><!-- HANGUL SYLLABLE SO -->
+      <map code="0xc18d" name="1em"/><!-- HANGUL SYLLABLE SOG -->
+      <map code="0xc18e" name="1em"/><!-- HANGUL SYLLABLE SOGG -->
+      <map code="0xc18f" name="1em"/><!-- HANGUL SYLLABLE SOGS -->
+      <map code="0xc190" name="1em"/><!-- HANGUL SYLLABLE SON -->
+      <map code="0xc191" name="1em"/><!-- HANGUL SYLLABLE SONJ -->
+      <map code="0xc192" name="1em"/><!-- HANGUL SYLLABLE SONH -->
+      <map code="0xc193" name="1em"/><!-- HANGUL SYLLABLE SOD -->
+      <map code="0xc194" name="1em"/><!-- HANGUL SYLLABLE SOL -->
+      <map code="0xc195" name="1em"/><!-- HANGUL SYLLABLE SOLG -->
+      <map code="0xc196" name="1em"/><!-- HANGUL SYLLABLE SOLM -->
+      <map code="0xc197" name="1em"/><!-- HANGUL SYLLABLE SOLB -->
+      <map code="0xc198" name="1em"/><!-- HANGUL SYLLABLE SOLS -->
+      <map code="0xc199" name="1em"/><!-- HANGUL SYLLABLE SOLT -->
+      <map code="0xc19a" name="1em"/><!-- HANGUL SYLLABLE SOLP -->
+      <map code="0xc19b" name="1em"/><!-- HANGUL SYLLABLE SOLH -->
+      <map code="0xc19c" name="1em"/><!-- HANGUL SYLLABLE SOM -->
+      <map code="0xc19d" name="1em"/><!-- HANGUL SYLLABLE SOB -->
+      <map code="0xc19e" name="1em"/><!-- HANGUL SYLLABLE SOBS -->
+      <map code="0xc19f" name="1em"/><!-- HANGUL SYLLABLE SOS -->
+      <map code="0xc1a0" name="1em"/><!-- HANGUL SYLLABLE SOSS -->
+      <map code="0xc1a1" name="1em"/><!-- HANGUL SYLLABLE SONG -->
+      <map code="0xc1a2" name="1em"/><!-- HANGUL SYLLABLE SOJ -->
+      <map code="0xc1a3" name="1em"/><!-- HANGUL SYLLABLE SOC -->
+      <map code="0xc1a4" name="1em"/><!-- HANGUL SYLLABLE SOK -->
+      <map code="0xc1a5" name="1em"/><!-- HANGUL SYLLABLE SOT -->
+      <map code="0xc1a6" name="1em"/><!-- HANGUL SYLLABLE SOP -->
+      <map code="0xc1a7" name="1em"/><!-- HANGUL SYLLABLE SOH -->
+      <map code="0xc1a8" name="1em"/><!-- HANGUL SYLLABLE SWA -->
+      <map code="0xc1a9" name="1em"/><!-- HANGUL SYLLABLE SWAG -->
+      <map code="0xc1aa" name="1em"/><!-- HANGUL SYLLABLE SWAGG -->
+      <map code="0xc1ab" name="1em"/><!-- HANGUL SYLLABLE SWAGS -->
+      <map code="0xc1ac" name="1em"/><!-- HANGUL SYLLABLE SWAN -->
+      <map code="0xc1ad" name="1em"/><!-- HANGUL SYLLABLE SWANJ -->
+      <map code="0xc1ae" name="1em"/><!-- HANGUL SYLLABLE SWANH -->
+      <map code="0xc1af" name="1em"/><!-- HANGUL SYLLABLE SWAD -->
+      <map code="0xc1b0" name="1em"/><!-- HANGUL SYLLABLE SWAL -->
+      <map code="0xc1b1" name="1em"/><!-- HANGUL SYLLABLE SWALG -->
+      <map code="0xc1b2" name="1em"/><!-- HANGUL SYLLABLE SWALM -->
+      <map code="0xc1b3" name="1em"/><!-- HANGUL SYLLABLE SWALB -->
+      <map code="0xc1b4" name="1em"/><!-- HANGUL SYLLABLE SWALS -->
+      <map code="0xc1b5" name="1em"/><!-- HANGUL SYLLABLE SWALT -->
+      <map code="0xc1b6" name="1em"/><!-- HANGUL SYLLABLE SWALP -->
+      <map code="0xc1b7" name="1em"/><!-- HANGUL SYLLABLE SWALH -->
+      <map code="0xc1b8" name="1em"/><!-- HANGUL SYLLABLE SWAM -->
+      <map code="0xc1b9" name="1em"/><!-- HANGUL SYLLABLE SWAB -->
+      <map code="0xc1ba" name="1em"/><!-- HANGUL SYLLABLE SWABS -->
+      <map code="0xc1bb" name="1em"/><!-- HANGUL SYLLABLE SWAS -->
+      <map code="0xc1bc" name="1em"/><!-- HANGUL SYLLABLE SWASS -->
+      <map code="0xc1bd" name="1em"/><!-- HANGUL SYLLABLE SWANG -->
+      <map code="0xc1be" name="1em"/><!-- HANGUL SYLLABLE SWAJ -->
+      <map code="0xc1bf" name="1em"/><!-- HANGUL SYLLABLE SWAC -->
+      <map code="0xc1c0" name="1em"/><!-- HANGUL SYLLABLE SWAK -->
+      <map code="0xc1c1" name="1em"/><!-- HANGUL SYLLABLE SWAT -->
+      <map code="0xc1c2" name="1em"/><!-- HANGUL SYLLABLE SWAP -->
+      <map code="0xc1c3" name="1em"/><!-- HANGUL SYLLABLE SWAH -->
+      <map code="0xc1c4" name="1em"/><!-- HANGUL SYLLABLE SWAE -->
+      <map code="0xc1c5" name="1em"/><!-- HANGUL SYLLABLE SWAEG -->
+      <map code="0xc1c6" name="1em"/><!-- HANGUL SYLLABLE SWAEGG -->
+      <map code="0xc1c7" name="1em"/><!-- HANGUL SYLLABLE SWAEGS -->
+      <map code="0xc1c8" name="1em"/><!-- HANGUL SYLLABLE SWAEN -->
+      <map code="0xc1c9" name="1em"/><!-- HANGUL SYLLABLE SWAENJ -->
+      <map code="0xc1ca" name="1em"/><!-- HANGUL SYLLABLE SWAENH -->
+      <map code="0xc1cb" name="1em"/><!-- HANGUL SYLLABLE SWAED -->
+      <map code="0xc1cc" name="1em"/><!-- HANGUL SYLLABLE SWAEL -->
+      <map code="0xc1cd" name="1em"/><!-- HANGUL SYLLABLE SWAELG -->
+      <map code="0xc1ce" name="1em"/><!-- HANGUL SYLLABLE SWAELM -->
+      <map code="0xc1cf" name="1em"/><!-- HANGUL SYLLABLE SWAELB -->
+      <map code="0xc1d0" name="1em"/><!-- HANGUL SYLLABLE SWAELS -->
+      <map code="0xc1d1" name="1em"/><!-- HANGUL SYLLABLE SWAELT -->
+      <map code="0xc1d2" name="1em"/><!-- HANGUL SYLLABLE SWAELP -->
+      <map code="0xc1d3" name="1em"/><!-- HANGUL SYLLABLE SWAELH -->
+      <map code="0xc1d4" name="1em"/><!-- HANGUL SYLLABLE SWAEM -->
+      <map code="0xc1d5" name="1em"/><!-- HANGUL SYLLABLE SWAEB -->
+      <map code="0xc1d6" name="1em"/><!-- HANGUL SYLLABLE SWAEBS -->
+      <map code="0xc1d7" name="1em"/><!-- HANGUL SYLLABLE SWAES -->
+      <map code="0xc1d8" name="1em"/><!-- HANGUL SYLLABLE SWAESS -->
+      <map code="0xc1d9" name="1em"/><!-- HANGUL SYLLABLE SWAENG -->
+      <map code="0xc1da" name="1em"/><!-- HANGUL SYLLABLE SWAEJ -->
+      <map code="0xc1db" name="1em"/><!-- HANGUL SYLLABLE SWAEC -->
+      <map code="0xc1dc" name="1em"/><!-- HANGUL SYLLABLE SWAEK -->
+      <map code="0xc1dd" name="1em"/><!-- HANGUL SYLLABLE SWAET -->
+      <map code="0xc1de" name="1em"/><!-- HANGUL SYLLABLE SWAEP -->
+      <map code="0xc1df" name="1em"/><!-- HANGUL SYLLABLE SWAEH -->
+      <map code="0xc1e0" name="1em"/><!-- HANGUL SYLLABLE SOE -->
+      <map code="0xc1e1" name="1em"/><!-- HANGUL SYLLABLE SOEG -->
+      <map code="0xc1e2" name="1em"/><!-- HANGUL SYLLABLE SOEGG -->
+      <map code="0xc1e3" name="1em"/><!-- HANGUL SYLLABLE SOEGS -->
+      <map code="0xc1e4" name="1em"/><!-- HANGUL SYLLABLE SOEN -->
+      <map code="0xc1e5" name="1em"/><!-- HANGUL SYLLABLE SOENJ -->
+      <map code="0xc1e6" name="1em"/><!-- HANGUL SYLLABLE SOENH -->
+      <map code="0xc1e7" name="1em"/><!-- HANGUL SYLLABLE SOED -->
+      <map code="0xc1e8" name="1em"/><!-- HANGUL SYLLABLE SOEL -->
+      <map code="0xc1e9" name="1em"/><!-- HANGUL SYLLABLE SOELG -->
+      <map code="0xc1ea" name="1em"/><!-- HANGUL SYLLABLE SOELM -->
+      <map code="0xc1eb" name="1em"/><!-- HANGUL SYLLABLE SOELB -->
+      <map code="0xc1ec" name="1em"/><!-- HANGUL SYLLABLE SOELS -->
+      <map code="0xc1ed" name="1em"/><!-- HANGUL SYLLABLE SOELT -->
+      <map code="0xc1ee" name="1em"/><!-- HANGUL SYLLABLE SOELP -->
+      <map code="0xc1ef" name="1em"/><!-- HANGUL SYLLABLE SOELH -->
+      <map code="0xc1f0" name="1em"/><!-- HANGUL SYLLABLE SOEM -->
+      <map code="0xc1f1" name="1em"/><!-- HANGUL SYLLABLE SOEB -->
+      <map code="0xc1f2" name="1em"/><!-- HANGUL SYLLABLE SOEBS -->
+      <map code="0xc1f3" name="1em"/><!-- HANGUL SYLLABLE SOES -->
+      <map code="0xc1f4" name="1em"/><!-- HANGUL SYLLABLE SOESS -->
+      <map code="0xc1f5" name="1em"/><!-- HANGUL SYLLABLE SOENG -->
+      <map code="0xc1f6" name="1em"/><!-- HANGUL SYLLABLE SOEJ -->
+      <map code="0xc1f7" name="1em"/><!-- HANGUL SYLLABLE SOEC -->
+      <map code="0xc1f8" name="1em"/><!-- HANGUL SYLLABLE SOEK -->
+      <map code="0xc1f9" name="1em"/><!-- HANGUL SYLLABLE SOET -->
+      <map code="0xc1fa" name="1em"/><!-- HANGUL SYLLABLE SOEP -->
+      <map code="0xc1fb" name="1em"/><!-- HANGUL SYLLABLE SOEH -->
+      <map code="0xc1fc" name="1em"/><!-- HANGUL SYLLABLE SYO -->
+      <map code="0xc1fd" name="1em"/><!-- HANGUL SYLLABLE SYOG -->
+      <map code="0xc1fe" name="1em"/><!-- HANGUL SYLLABLE SYOGG -->
+      <map code="0xc1ff" name="1em"/><!-- HANGUL SYLLABLE SYOGS -->
+      <map code="0xc200" name="1em"/><!-- HANGUL SYLLABLE SYON -->
+      <map code="0xc201" name="1em"/><!-- HANGUL SYLLABLE SYONJ -->
+      <map code="0xc202" name="1em"/><!-- HANGUL SYLLABLE SYONH -->
+      <map code="0xc203" name="1em"/><!-- HANGUL SYLLABLE SYOD -->
+      <map code="0xc204" name="1em"/><!-- HANGUL SYLLABLE SYOL -->
+      <map code="0xc205" name="1em"/><!-- HANGUL SYLLABLE SYOLG -->
+      <map code="0xc206" name="1em"/><!-- HANGUL SYLLABLE SYOLM -->
+      <map code="0xc207" name="1em"/><!-- HANGUL SYLLABLE SYOLB -->
+      <map code="0xc208" name="1em"/><!-- HANGUL SYLLABLE SYOLS -->
+      <map code="0xc209" name="1em"/><!-- HANGUL SYLLABLE SYOLT -->
+      <map code="0xc20a" name="1em"/><!-- HANGUL SYLLABLE SYOLP -->
+      <map code="0xc20b" name="1em"/><!-- HANGUL SYLLABLE SYOLH -->
+      <map code="0xc20c" name="1em"/><!-- HANGUL SYLLABLE SYOM -->
+      <map code="0xc20d" name="1em"/><!-- HANGUL SYLLABLE SYOB -->
+      <map code="0xc20e" name="1em"/><!-- HANGUL SYLLABLE SYOBS -->
+      <map code="0xc20f" name="1em"/><!-- HANGUL SYLLABLE SYOS -->
+      <map code="0xc210" name="1em"/><!-- HANGUL SYLLABLE SYOSS -->
+      <map code="0xc211" name="1em"/><!-- HANGUL SYLLABLE SYONG -->
+      <map code="0xc212" name="1em"/><!-- HANGUL SYLLABLE SYOJ -->
+      <map code="0xc213" name="1em"/><!-- HANGUL SYLLABLE SYOC -->
+      <map code="0xc214" name="1em"/><!-- HANGUL SYLLABLE SYOK -->
+      <map code="0xc215" name="1em"/><!-- HANGUL SYLLABLE SYOT -->
+      <map code="0xc216" name="1em"/><!-- HANGUL SYLLABLE SYOP -->
+      <map code="0xc217" name="1em"/><!-- HANGUL SYLLABLE SYOH -->
+      <map code="0xc218" name="1em"/><!-- HANGUL SYLLABLE SU -->
+      <map code="0xc219" name="1em"/><!-- HANGUL SYLLABLE SUG -->
+      <map code="0xc21a" name="1em"/><!-- HANGUL SYLLABLE SUGG -->
+      <map code="0xc21b" name="1em"/><!-- HANGUL SYLLABLE SUGS -->
+      <map code="0xc21c" name="1em"/><!-- HANGUL SYLLABLE SUN -->
+      <map code="0xc21d" name="1em"/><!-- HANGUL SYLLABLE SUNJ -->
+      <map code="0xc21e" name="1em"/><!-- HANGUL SYLLABLE SUNH -->
+      <map code="0xc21f" name="1em"/><!-- HANGUL SYLLABLE SUD -->
+      <map code="0xc220" name="1em"/><!-- HANGUL SYLLABLE SUL -->
+      <map code="0xc221" name="1em"/><!-- HANGUL SYLLABLE SULG -->
+      <map code="0xc222" name="1em"/><!-- HANGUL SYLLABLE SULM -->
+      <map code="0xc223" name="1em"/><!-- HANGUL SYLLABLE SULB -->
+      <map code="0xc224" name="1em"/><!-- HANGUL SYLLABLE SULS -->
+      <map code="0xc225" name="1em"/><!-- HANGUL SYLLABLE SULT -->
+      <map code="0xc226" name="1em"/><!-- HANGUL SYLLABLE SULP -->
+      <map code="0xc227" name="1em"/><!-- HANGUL SYLLABLE SULH -->
+      <map code="0xc228" name="1em"/><!-- HANGUL SYLLABLE SUM -->
+      <map code="0xc229" name="1em"/><!-- HANGUL SYLLABLE SUB -->
+      <map code="0xc22a" name="1em"/><!-- HANGUL SYLLABLE SUBS -->
+      <map code="0xc22b" name="1em"/><!-- HANGUL SYLLABLE SUS -->
+      <map code="0xc22c" name="1em"/><!-- HANGUL SYLLABLE SUSS -->
+      <map code="0xc22d" name="1em"/><!-- HANGUL SYLLABLE SUNG -->
+      <map code="0xc22e" name="1em"/><!-- HANGUL SYLLABLE SUJ -->
+      <map code="0xc22f" name="1em"/><!-- HANGUL SYLLABLE SUC -->
+      <map code="0xc230" name="1em"/><!-- HANGUL SYLLABLE SUK -->
+      <map code="0xc231" name="1em"/><!-- HANGUL SYLLABLE SUT -->
+      <map code="0xc232" name="1em"/><!-- HANGUL SYLLABLE SUP -->
+      <map code="0xc233" name="1em"/><!-- HANGUL SYLLABLE SUH -->
+      <map code="0xc234" name="1em"/><!-- HANGUL SYLLABLE SWEO -->
+      <map code="0xc235" name="1em"/><!-- HANGUL SYLLABLE SWEOG -->
+      <map code="0xc236" name="1em"/><!-- HANGUL SYLLABLE SWEOGG -->
+      <map code="0xc237" name="1em"/><!-- HANGUL SYLLABLE SWEOGS -->
+      <map code="0xc238" name="1em"/><!-- HANGUL SYLLABLE SWEON -->
+      <map code="0xc239" name="1em"/><!-- HANGUL SYLLABLE SWEONJ -->
+      <map code="0xc23a" name="1em"/><!-- HANGUL SYLLABLE SWEONH -->
+      <map code="0xc23b" name="1em"/><!-- HANGUL SYLLABLE SWEOD -->
+      <map code="0xc23c" name="1em"/><!-- HANGUL SYLLABLE SWEOL -->
+      <map code="0xc23d" name="1em"/><!-- HANGUL SYLLABLE SWEOLG -->
+      <map code="0xc23e" name="1em"/><!-- HANGUL SYLLABLE SWEOLM -->
+      <map code="0xc23f" name="1em"/><!-- HANGUL SYLLABLE SWEOLB -->
+      <map code="0xc240" name="1em"/><!-- HANGUL SYLLABLE SWEOLS -->
+      <map code="0xc241" name="1em"/><!-- HANGUL SYLLABLE SWEOLT -->
+      <map code="0xc242" name="1em"/><!-- HANGUL SYLLABLE SWEOLP -->
+      <map code="0xc243" name="1em"/><!-- HANGUL SYLLABLE SWEOLH -->
+      <map code="0xc244" name="1em"/><!-- HANGUL SYLLABLE SWEOM -->
+      <map code="0xc245" name="1em"/><!-- HANGUL SYLLABLE SWEOB -->
+      <map code="0xc246" name="1em"/><!-- HANGUL SYLLABLE SWEOBS -->
+      <map code="0xc247" name="1em"/><!-- HANGUL SYLLABLE SWEOS -->
+      <map code="0xc248" name="1em"/><!-- HANGUL SYLLABLE SWEOSS -->
+      <map code="0xc249" name="1em"/><!-- HANGUL SYLLABLE SWEONG -->
+      <map code="0xc24a" name="1em"/><!-- HANGUL SYLLABLE SWEOJ -->
+      <map code="0xc24b" name="1em"/><!-- HANGUL SYLLABLE SWEOC -->
+      <map code="0xc24c" name="1em"/><!-- HANGUL SYLLABLE SWEOK -->
+      <map code="0xc24d" name="1em"/><!-- HANGUL SYLLABLE SWEOT -->
+      <map code="0xc24e" name="1em"/><!-- HANGUL SYLLABLE SWEOP -->
+      <map code="0xc24f" name="1em"/><!-- HANGUL SYLLABLE SWEOH -->
+      <map code="0xc250" name="1em"/><!-- HANGUL SYLLABLE SWE -->
+      <map code="0xc251" name="1em"/><!-- HANGUL SYLLABLE SWEG -->
+      <map code="0xc252" name="1em"/><!-- HANGUL SYLLABLE SWEGG -->
+      <map code="0xc253" name="1em"/><!-- HANGUL SYLLABLE SWEGS -->
+      <map code="0xc254" name="1em"/><!-- HANGUL SYLLABLE SWEN -->
+      <map code="0xc255" name="1em"/><!-- HANGUL SYLLABLE SWENJ -->
+      <map code="0xc256" name="1em"/><!-- HANGUL SYLLABLE SWENH -->
+      <map code="0xc257" name="1em"/><!-- HANGUL SYLLABLE SWED -->
+      <map code="0xc258" name="1em"/><!-- HANGUL SYLLABLE SWEL -->
+      <map code="0xc259" name="1em"/><!-- HANGUL SYLLABLE SWELG -->
+      <map code="0xc25a" name="1em"/><!-- HANGUL SYLLABLE SWELM -->
+      <map code="0xc25b" name="1em"/><!-- HANGUL SYLLABLE SWELB -->
+      <map code="0xc25c" name="1em"/><!-- HANGUL SYLLABLE SWELS -->
+      <map code="0xc25d" name="1em"/><!-- HANGUL SYLLABLE SWELT -->
+      <map code="0xc25e" name="1em"/><!-- HANGUL SYLLABLE SWELP -->
+      <map code="0xc25f" name="1em"/><!-- HANGUL SYLLABLE SWELH -->
+      <map code="0xc260" name="1em"/><!-- HANGUL SYLLABLE SWEM -->
+      <map code="0xc261" name="1em"/><!-- HANGUL SYLLABLE SWEB -->
+      <map code="0xc262" name="1em"/><!-- HANGUL SYLLABLE SWEBS -->
+      <map code="0xc263" name="1em"/><!-- HANGUL SYLLABLE SWES -->
+      <map code="0xc264" name="1em"/><!-- HANGUL SYLLABLE SWESS -->
+      <map code="0xc265" name="1em"/><!-- HANGUL SYLLABLE SWENG -->
+      <map code="0xc266" name="1em"/><!-- HANGUL SYLLABLE SWEJ -->
+      <map code="0xc267" name="1em"/><!-- HANGUL SYLLABLE SWEC -->
+      <map code="0xc268" name="1em"/><!-- HANGUL SYLLABLE SWEK -->
+      <map code="0xc269" name="1em"/><!-- HANGUL SYLLABLE SWET -->
+      <map code="0xc26a" name="1em"/><!-- HANGUL SYLLABLE SWEP -->
+      <map code="0xc26b" name="1em"/><!-- HANGUL SYLLABLE SWEH -->
+      <map code="0xc26c" name="1em"/><!-- HANGUL SYLLABLE SWI -->
+      <map code="0xc26d" name="1em"/><!-- HANGUL SYLLABLE SWIG -->
+      <map code="0xc26e" name="1em"/><!-- HANGUL SYLLABLE SWIGG -->
+      <map code="0xc26f" name="1em"/><!-- HANGUL SYLLABLE SWIGS -->
+      <map code="0xc270" name="1em"/><!-- HANGUL SYLLABLE SWIN -->
+      <map code="0xc271" name="1em"/><!-- HANGUL SYLLABLE SWINJ -->
+      <map code="0xc272" name="1em"/><!-- HANGUL SYLLABLE SWINH -->
+      <map code="0xc273" name="1em"/><!-- HANGUL SYLLABLE SWID -->
+      <map code="0xc274" name="1em"/><!-- HANGUL SYLLABLE SWIL -->
+      <map code="0xc275" name="1em"/><!-- HANGUL SYLLABLE SWILG -->
+      <map code="0xc276" name="1em"/><!-- HANGUL SYLLABLE SWILM -->
+      <map code="0xc277" name="1em"/><!-- HANGUL SYLLABLE SWILB -->
+      <map code="0xc278" name="1em"/><!-- HANGUL SYLLABLE SWILS -->
+      <map code="0xc279" name="1em"/><!-- HANGUL SYLLABLE SWILT -->
+      <map code="0xc27a" name="1em"/><!-- HANGUL SYLLABLE SWILP -->
+      <map code="0xc27b" name="1em"/><!-- HANGUL SYLLABLE SWILH -->
+      <map code="0xc27c" name="1em"/><!-- HANGUL SYLLABLE SWIM -->
+      <map code="0xc27d" name="1em"/><!-- HANGUL SYLLABLE SWIB -->
+      <map code="0xc27e" name="1em"/><!-- HANGUL SYLLABLE SWIBS -->
+      <map code="0xc27f" name="1em"/><!-- HANGUL SYLLABLE SWIS -->
+      <map code="0xc280" name="1em"/><!-- HANGUL SYLLABLE SWISS -->
+      <map code="0xc281" name="1em"/><!-- HANGUL SYLLABLE SWING -->
+      <map code="0xc282" name="1em"/><!-- HANGUL SYLLABLE SWIJ -->
+      <map code="0xc283" name="1em"/><!-- HANGUL SYLLABLE SWIC -->
+      <map code="0xc284" name="1em"/><!-- HANGUL SYLLABLE SWIK -->
+      <map code="0xc285" name="1em"/><!-- HANGUL SYLLABLE SWIT -->
+      <map code="0xc286" name="1em"/><!-- HANGUL SYLLABLE SWIP -->
+      <map code="0xc287" name="1em"/><!-- HANGUL SYLLABLE SWIH -->
+      <map code="0xc288" name="1em"/><!-- HANGUL SYLLABLE SYU -->
+      <map code="0xc289" name="1em"/><!-- HANGUL SYLLABLE SYUG -->
+      <map code="0xc28a" name="1em"/><!-- HANGUL SYLLABLE SYUGG -->
+      <map code="0xc28b" name="1em"/><!-- HANGUL SYLLABLE SYUGS -->
+      <map code="0xc28c" name="1em"/><!-- HANGUL SYLLABLE SYUN -->
+      <map code="0xc28d" name="1em"/><!-- HANGUL SYLLABLE SYUNJ -->
+      <map code="0xc28e" name="1em"/><!-- HANGUL SYLLABLE SYUNH -->
+      <map code="0xc28f" name="1em"/><!-- HANGUL SYLLABLE SYUD -->
+      <map code="0xc290" name="1em"/><!-- HANGUL SYLLABLE SYUL -->
+      <map code="0xc291" name="1em"/><!-- HANGUL SYLLABLE SYULG -->
+      <map code="0xc292" name="1em"/><!-- HANGUL SYLLABLE SYULM -->
+      <map code="0xc293" name="1em"/><!-- HANGUL SYLLABLE SYULB -->
+      <map code="0xc294" name="1em"/><!-- HANGUL SYLLABLE SYULS -->
+      <map code="0xc295" name="1em"/><!-- HANGUL SYLLABLE SYULT -->
+      <map code="0xc296" name="1em"/><!-- HANGUL SYLLABLE SYULP -->
+      <map code="0xc297" name="1em"/><!-- HANGUL SYLLABLE SYULH -->
+      <map code="0xc298" name="1em"/><!-- HANGUL SYLLABLE SYUM -->
+      <map code="0xc299" name="1em"/><!-- HANGUL SYLLABLE SYUB -->
+      <map code="0xc29a" name="1em"/><!-- HANGUL SYLLABLE SYUBS -->
+      <map code="0xc29b" name="1em"/><!-- HANGUL SYLLABLE SYUS -->
+      <map code="0xc29c" name="1em"/><!-- HANGUL SYLLABLE SYUSS -->
+      <map code="0xc29d" name="1em"/><!-- HANGUL SYLLABLE SYUNG -->
+      <map code="0xc29e" name="1em"/><!-- HANGUL SYLLABLE SYUJ -->
+      <map code="0xc29f" name="1em"/><!-- HANGUL SYLLABLE SYUC -->
+      <map code="0xc2a0" name="1em"/><!-- HANGUL SYLLABLE SYUK -->
+      <map code="0xc2a1" name="1em"/><!-- HANGUL SYLLABLE SYUT -->
+      <map code="0xc2a2" name="1em"/><!-- HANGUL SYLLABLE SYUP -->
+      <map code="0xc2a3" name="1em"/><!-- HANGUL SYLLABLE SYUH -->
+      <map code="0xc2a4" name="1em"/><!-- HANGUL SYLLABLE SEU -->
+      <map code="0xc2a5" name="1em"/><!-- HANGUL SYLLABLE SEUG -->
+      <map code="0xc2a6" name="1em"/><!-- HANGUL SYLLABLE SEUGG -->
+      <map code="0xc2a7" name="1em"/><!-- HANGUL SYLLABLE SEUGS -->
+      <map code="0xc2a8" name="1em"/><!-- HANGUL SYLLABLE SEUN -->
+      <map code="0xc2a9" name="1em"/><!-- HANGUL SYLLABLE SEUNJ -->
+      <map code="0xc2aa" name="1em"/><!-- HANGUL SYLLABLE SEUNH -->
+      <map code="0xc2ab" name="1em"/><!-- HANGUL SYLLABLE SEUD -->
+      <map code="0xc2ac" name="1em"/><!-- HANGUL SYLLABLE SEUL -->
+      <map code="0xc2ad" name="1em"/><!-- HANGUL SYLLABLE SEULG -->
+      <map code="0xc2ae" name="1em"/><!-- HANGUL SYLLABLE SEULM -->
+      <map code="0xc2af" name="1em"/><!-- HANGUL SYLLABLE SEULB -->
+      <map code="0xc2b0" name="1em"/><!-- HANGUL SYLLABLE SEULS -->
+      <map code="0xc2b1" name="1em"/><!-- HANGUL SYLLABLE SEULT -->
+      <map code="0xc2b2" name="1em"/><!-- HANGUL SYLLABLE SEULP -->
+      <map code="0xc2b3" name="1em"/><!-- HANGUL SYLLABLE SEULH -->
+      <map code="0xc2b4" name="1em"/><!-- HANGUL SYLLABLE SEUM -->
+      <map code="0xc2b5" name="1em"/><!-- HANGUL SYLLABLE SEUB -->
+      <map code="0xc2b6" name="1em"/><!-- HANGUL SYLLABLE SEUBS -->
+      <map code="0xc2b7" name="1em"/><!-- HANGUL SYLLABLE SEUS -->
+      <map code="0xc2b8" name="1em"/><!-- HANGUL SYLLABLE SEUSS -->
+      <map code="0xc2b9" name="1em"/><!-- HANGUL SYLLABLE SEUNG -->
+      <map code="0xc2ba" name="1em"/><!-- HANGUL SYLLABLE SEUJ -->
+      <map code="0xc2bb" name="1em"/><!-- HANGUL SYLLABLE SEUC -->
+      <map code="0xc2bc" name="1em"/><!-- HANGUL SYLLABLE SEUK -->
+      <map code="0xc2bd" name="1em"/><!-- HANGUL SYLLABLE SEUT -->
+      <map code="0xc2be" name="1em"/><!-- HANGUL SYLLABLE SEUP -->
+      <map code="0xc2bf" name="1em"/><!-- HANGUL SYLLABLE SEUH -->
+      <map code="0xc2c0" name="1em"/><!-- HANGUL SYLLABLE SYI -->
+      <map code="0xc2c1" name="1em"/><!-- HANGUL SYLLABLE SYIG -->
+      <map code="0xc2c2" name="1em"/><!-- HANGUL SYLLABLE SYIGG -->
+      <map code="0xc2c3" name="1em"/><!-- HANGUL SYLLABLE SYIGS -->
+      <map code="0xc2c4" name="1em"/><!-- HANGUL SYLLABLE SYIN -->
+      <map code="0xc2c5" name="1em"/><!-- HANGUL SYLLABLE SYINJ -->
+      <map code="0xc2c6" name="1em"/><!-- HANGUL SYLLABLE SYINH -->
+      <map code="0xc2c7" name="1em"/><!-- HANGUL SYLLABLE SYID -->
+      <map code="0xc2c8" name="1em"/><!-- HANGUL SYLLABLE SYIL -->
+      <map code="0xc2c9" name="1em"/><!-- HANGUL SYLLABLE SYILG -->
+      <map code="0xc2ca" name="1em"/><!-- HANGUL SYLLABLE SYILM -->
+      <map code="0xc2cb" name="1em"/><!-- HANGUL SYLLABLE SYILB -->
+      <map code="0xc2cc" name="1em"/><!-- HANGUL SYLLABLE SYILS -->
+      <map code="0xc2cd" name="1em"/><!-- HANGUL SYLLABLE SYILT -->
+      <map code="0xc2ce" name="1em"/><!-- HANGUL SYLLABLE SYILP -->
+      <map code="0xc2cf" name="1em"/><!-- HANGUL SYLLABLE SYILH -->
+      <map code="0xc2d0" name="1em"/><!-- HANGUL SYLLABLE SYIM -->
+      <map code="0xc2d1" name="1em"/><!-- HANGUL SYLLABLE SYIB -->
+      <map code="0xc2d2" name="1em"/><!-- HANGUL SYLLABLE SYIBS -->
+      <map code="0xc2d3" name="1em"/><!-- HANGUL SYLLABLE SYIS -->
+      <map code="0xc2d4" name="1em"/><!-- HANGUL SYLLABLE SYISS -->
+      <map code="0xc2d5" name="1em"/><!-- HANGUL SYLLABLE SYING -->
+      <map code="0xc2d6" name="1em"/><!-- HANGUL SYLLABLE SYIJ -->
+      <map code="0xc2d7" name="1em"/><!-- HANGUL SYLLABLE SYIC -->
+      <map code="0xc2d8" name="1em"/><!-- HANGUL SYLLABLE SYIK -->
+      <map code="0xc2d9" name="1em"/><!-- HANGUL SYLLABLE SYIT -->
+      <map code="0xc2da" name="1em"/><!-- HANGUL SYLLABLE SYIP -->
+      <map code="0xc2db" name="1em"/><!-- HANGUL SYLLABLE SYIH -->
+      <map code="0xc2dc" name="1em"/><!-- HANGUL SYLLABLE SI -->
+      <map code="0xc2dd" name="1em"/><!-- HANGUL SYLLABLE SIG -->
+      <map code="0xc2de" name="1em"/><!-- HANGUL SYLLABLE SIGG -->
+      <map code="0xc2df" name="1em"/><!-- HANGUL SYLLABLE SIGS -->
+      <map code="0xc2e0" name="1em"/><!-- HANGUL SYLLABLE SIN -->
+      <map code="0xc2e1" name="1em"/><!-- HANGUL SYLLABLE SINJ -->
+      <map code="0xc2e2" name="1em"/><!-- HANGUL SYLLABLE SINH -->
+      <map code="0xc2e3" name="1em"/><!-- HANGUL SYLLABLE SID -->
+      <map code="0xc2e4" name="1em"/><!-- HANGUL SYLLABLE SIL -->
+      <map code="0xc2e5" name="1em"/><!-- HANGUL SYLLABLE SILG -->
+      <map code="0xc2e6" name="1em"/><!-- HANGUL SYLLABLE SILM -->
+      <map code="0xc2e7" name="1em"/><!-- HANGUL SYLLABLE SILB -->
+      <map code="0xc2e8" name="1em"/><!-- HANGUL SYLLABLE SILS -->
+      <map code="0xc2e9" name="1em"/><!-- HANGUL SYLLABLE SILT -->
+      <map code="0xc2ea" name="1em"/><!-- HANGUL SYLLABLE SILP -->
+      <map code="0xc2eb" name="1em"/><!-- HANGUL SYLLABLE SILH -->
+      <map code="0xc2ec" name="1em"/><!-- HANGUL SYLLABLE SIM -->
+      <map code="0xc2ed" name="1em"/><!-- HANGUL SYLLABLE SIB -->
+      <map code="0xc2ee" name="1em"/><!-- HANGUL SYLLABLE SIBS -->
+      <map code="0xc2ef" name="1em"/><!-- HANGUL SYLLABLE SIS -->
+      <map code="0xc2f0" name="1em"/><!-- HANGUL SYLLABLE SISS -->
+      <map code="0xc2f1" name="1em"/><!-- HANGUL SYLLABLE SING -->
+      <map code="0xc2f2" name="1em"/><!-- HANGUL SYLLABLE SIJ -->
+      <map code="0xc2f3" name="1em"/><!-- HANGUL SYLLABLE SIC -->
+      <map code="0xc2f4" name="1em"/><!-- HANGUL SYLLABLE SIK -->
+      <map code="0xc2f5" name="1em"/><!-- HANGUL SYLLABLE SIT -->
+      <map code="0xc2f6" name="1em"/><!-- HANGUL SYLLABLE SIP -->
+      <map code="0xc2f7" name="1em"/><!-- HANGUL SYLLABLE SIH -->
+      <map code="0xc2f8" name="1em"/><!-- HANGUL SYLLABLE SSA -->
+      <map code="0xc2f9" name="1em"/><!-- HANGUL SYLLABLE SSAG -->
+      <map code="0xc2fa" name="1em"/><!-- HANGUL SYLLABLE SSAGG -->
+      <map code="0xc2fb" name="1em"/><!-- HANGUL SYLLABLE SSAGS -->
+      <map code="0xc2fc" name="1em"/><!-- HANGUL SYLLABLE SSAN -->
+      <map code="0xc2fd" name="1em"/><!-- HANGUL SYLLABLE SSANJ -->
+      <map code="0xc2fe" name="1em"/><!-- HANGUL SYLLABLE SSANH -->
+      <map code="0xc2ff" name="1em"/><!-- HANGUL SYLLABLE SSAD -->
+      <map code="0xc300" name="1em"/><!-- HANGUL SYLLABLE SSAL -->
+      <map code="0xc301" name="1em"/><!-- HANGUL SYLLABLE SSALG -->
+      <map code="0xc302" name="1em"/><!-- HANGUL SYLLABLE SSALM -->
+      <map code="0xc303" name="1em"/><!-- HANGUL SYLLABLE SSALB -->
+      <map code="0xc304" name="1em"/><!-- HANGUL SYLLABLE SSALS -->
+      <map code="0xc305" name="1em"/><!-- HANGUL SYLLABLE SSALT -->
+      <map code="0xc306" name="1em"/><!-- HANGUL SYLLABLE SSALP -->
+      <map code="0xc307" name="1em"/><!-- HANGUL SYLLABLE SSALH -->
+      <map code="0xc308" name="1em"/><!-- HANGUL SYLLABLE SSAM -->
+      <map code="0xc309" name="1em"/><!-- HANGUL SYLLABLE SSAB -->
+      <map code="0xc30a" name="1em"/><!-- HANGUL SYLLABLE SSABS -->
+      <map code="0xc30b" name="1em"/><!-- HANGUL SYLLABLE SSAS -->
+      <map code="0xc30c" name="1em"/><!-- HANGUL SYLLABLE SSASS -->
+      <map code="0xc30d" name="1em"/><!-- HANGUL SYLLABLE SSANG -->
+      <map code="0xc30e" name="1em"/><!-- HANGUL SYLLABLE SSAJ -->
+      <map code="0xc30f" name="1em"/><!-- HANGUL SYLLABLE SSAC -->
+      <map code="0xc310" name="1em"/><!-- HANGUL SYLLABLE SSAK -->
+      <map code="0xc311" name="1em"/><!-- HANGUL SYLLABLE SSAT -->
+      <map code="0xc312" name="1em"/><!-- HANGUL SYLLABLE SSAP -->
+      <map code="0xc313" name="1em"/><!-- HANGUL SYLLABLE SSAH -->
+      <map code="0xc314" name="1em"/><!-- HANGUL SYLLABLE SSAE -->
+      <map code="0xc315" name="1em"/><!-- HANGUL SYLLABLE SSAEG -->
+      <map code="0xc316" name="1em"/><!-- HANGUL SYLLABLE SSAEGG -->
+      <map code="0xc317" name="1em"/><!-- HANGUL SYLLABLE SSAEGS -->
+      <map code="0xc318" name="1em"/><!-- HANGUL SYLLABLE SSAEN -->
+      <map code="0xc319" name="1em"/><!-- HANGUL SYLLABLE SSAENJ -->
+      <map code="0xc31a" name="1em"/><!-- HANGUL SYLLABLE SSAENH -->
+      <map code="0xc31b" name="1em"/><!-- HANGUL SYLLABLE SSAED -->
+      <map code="0xc31c" name="1em"/><!-- HANGUL SYLLABLE SSAEL -->
+      <map code="0xc31d" name="1em"/><!-- HANGUL SYLLABLE SSAELG -->
+      <map code="0xc31e" name="1em"/><!-- HANGUL SYLLABLE SSAELM -->
+      <map code="0xc31f" name="1em"/><!-- HANGUL SYLLABLE SSAELB -->
+      <map code="0xc320" name="1em"/><!-- HANGUL SYLLABLE SSAELS -->
+      <map code="0xc321" name="1em"/><!-- HANGUL SYLLABLE SSAELT -->
+      <map code="0xc322" name="1em"/><!-- HANGUL SYLLABLE SSAELP -->
+      <map code="0xc323" name="1em"/><!-- HANGUL SYLLABLE SSAELH -->
+      <map code="0xc324" name="1em"/><!-- HANGUL SYLLABLE SSAEM -->
+      <map code="0xc325" name="1em"/><!-- HANGUL SYLLABLE SSAEB -->
+      <map code="0xc326" name="1em"/><!-- HANGUL SYLLABLE SSAEBS -->
+      <map code="0xc327" name="1em"/><!-- HANGUL SYLLABLE SSAES -->
+      <map code="0xc328" name="1em"/><!-- HANGUL SYLLABLE SSAESS -->
+      <map code="0xc329" name="1em"/><!-- HANGUL SYLLABLE SSAENG -->
+      <map code="0xc32a" name="1em"/><!-- HANGUL SYLLABLE SSAEJ -->
+      <map code="0xc32b" name="1em"/><!-- HANGUL SYLLABLE SSAEC -->
+      <map code="0xc32c" name="1em"/><!-- HANGUL SYLLABLE SSAEK -->
+      <map code="0xc32d" name="1em"/><!-- HANGUL SYLLABLE SSAET -->
+      <map code="0xc32e" name="1em"/><!-- HANGUL SYLLABLE SSAEP -->
+      <map code="0xc32f" name="1em"/><!-- HANGUL SYLLABLE SSAEH -->
+      <map code="0xc330" name="1em"/><!-- HANGUL SYLLABLE SSYA -->
+      <map code="0xc331" name="1em"/><!-- HANGUL SYLLABLE SSYAG -->
+      <map code="0xc332" name="1em"/><!-- HANGUL SYLLABLE SSYAGG -->
+      <map code="0xc333" name="1em"/><!-- HANGUL SYLLABLE SSYAGS -->
+      <map code="0xc334" name="1em"/><!-- HANGUL SYLLABLE SSYAN -->
+      <map code="0xc335" name="1em"/><!-- HANGUL SYLLABLE SSYANJ -->
+      <map code="0xc336" name="1em"/><!-- HANGUL SYLLABLE SSYANH -->
+      <map code="0xc337" name="1em"/><!-- HANGUL SYLLABLE SSYAD -->
+      <map code="0xc338" name="1em"/><!-- HANGUL SYLLABLE SSYAL -->
+      <map code="0xc339" name="1em"/><!-- HANGUL SYLLABLE SSYALG -->
+      <map code="0xc33a" name="1em"/><!-- HANGUL SYLLABLE SSYALM -->
+      <map code="0xc33b" name="1em"/><!-- HANGUL SYLLABLE SSYALB -->
+      <map code="0xc33c" name="1em"/><!-- HANGUL SYLLABLE SSYALS -->
+      <map code="0xc33d" name="1em"/><!-- HANGUL SYLLABLE SSYALT -->
+      <map code="0xc33e" name="1em"/><!-- HANGUL SYLLABLE SSYALP -->
+      <map code="0xc33f" name="1em"/><!-- HANGUL SYLLABLE SSYALH -->
+      <map code="0xc340" name="1em"/><!-- HANGUL SYLLABLE SSYAM -->
+      <map code="0xc341" name="1em"/><!-- HANGUL SYLLABLE SSYAB -->
+      <map code="0xc342" name="1em"/><!-- HANGUL SYLLABLE SSYABS -->
+      <map code="0xc343" name="1em"/><!-- HANGUL SYLLABLE SSYAS -->
+      <map code="0xc344" name="1em"/><!-- HANGUL SYLLABLE SSYASS -->
+      <map code="0xc345" name="1em"/><!-- HANGUL SYLLABLE SSYANG -->
+      <map code="0xc346" name="1em"/><!-- HANGUL SYLLABLE SSYAJ -->
+      <map code="0xc347" name="1em"/><!-- HANGUL SYLLABLE SSYAC -->
+      <map code="0xc348" name="1em"/><!-- HANGUL SYLLABLE SSYAK -->
+      <map code="0xc349" name="1em"/><!-- HANGUL SYLLABLE SSYAT -->
+      <map code="0xc34a" name="1em"/><!-- HANGUL SYLLABLE SSYAP -->
+      <map code="0xc34b" name="1em"/><!-- HANGUL SYLLABLE SSYAH -->
+      <map code="0xc34c" name="1em"/><!-- HANGUL SYLLABLE SSYAE -->
+      <map code="0xc34d" name="1em"/><!-- HANGUL SYLLABLE SSYAEG -->
+      <map code="0xc34e" name="1em"/><!-- HANGUL SYLLABLE SSYAEGG -->
+      <map code="0xc34f" name="1em"/><!-- HANGUL SYLLABLE SSYAEGS -->
+      <map code="0xc350" name="1em"/><!-- HANGUL SYLLABLE SSYAEN -->
+      <map code="0xc351" name="1em"/><!-- HANGUL SYLLABLE SSYAENJ -->
+      <map code="0xc352" name="1em"/><!-- HANGUL SYLLABLE SSYAENH -->
+      <map code="0xc353" name="1em"/><!-- HANGUL SYLLABLE SSYAED -->
+      <map code="0xc354" name="1em"/><!-- HANGUL SYLLABLE SSYAEL -->
+      <map code="0xc355" name="1em"/><!-- HANGUL SYLLABLE SSYAELG -->
+      <map code="0xc356" name="1em"/><!-- HANGUL SYLLABLE SSYAELM -->
+      <map code="0xc357" name="1em"/><!-- HANGUL SYLLABLE SSYAELB -->
+      <map code="0xc358" name="1em"/><!-- HANGUL SYLLABLE SSYAELS -->
+      <map code="0xc359" name="1em"/><!-- HANGUL SYLLABLE SSYAELT -->
+      <map code="0xc35a" name="1em"/><!-- HANGUL SYLLABLE SSYAELP -->
+      <map code="0xc35b" name="1em"/><!-- HANGUL SYLLABLE SSYAELH -->
+      <map code="0xc35c" name="1em"/><!-- HANGUL SYLLABLE SSYAEM -->
+      <map code="0xc35d" name="1em"/><!-- HANGUL SYLLABLE SSYAEB -->
+      <map code="0xc35e" name="1em"/><!-- HANGUL SYLLABLE SSYAEBS -->
+      <map code="0xc35f" name="1em"/><!-- HANGUL SYLLABLE SSYAES -->
+      <map code="0xc360" name="1em"/><!-- HANGUL SYLLABLE SSYAESS -->
+      <map code="0xc361" name="1em"/><!-- HANGUL SYLLABLE SSYAENG -->
+      <map code="0xc362" name="1em"/><!-- HANGUL SYLLABLE SSYAEJ -->
+      <map code="0xc363" name="1em"/><!-- HANGUL SYLLABLE SSYAEC -->
+      <map code="0xc364" name="1em"/><!-- HANGUL SYLLABLE SSYAEK -->
+      <map code="0xc365" name="1em"/><!-- HANGUL SYLLABLE SSYAET -->
+      <map code="0xc366" name="1em"/><!-- HANGUL SYLLABLE SSYAEP -->
+      <map code="0xc367" name="1em"/><!-- HANGUL SYLLABLE SSYAEH -->
+      <map code="0xc368" name="1em"/><!-- HANGUL SYLLABLE SSEO -->
+      <map code="0xc369" name="1em"/><!-- HANGUL SYLLABLE SSEOG -->
+      <map code="0xc36a" name="1em"/><!-- HANGUL SYLLABLE SSEOGG -->
+      <map code="0xc36b" name="1em"/><!-- HANGUL SYLLABLE SSEOGS -->
+      <map code="0xc36c" name="1em"/><!-- HANGUL SYLLABLE SSEON -->
+      <map code="0xc36d" name="1em"/><!-- HANGUL SYLLABLE SSEONJ -->
+      <map code="0xc36e" name="1em"/><!-- HANGUL SYLLABLE SSEONH -->
+      <map code="0xc36f" name="1em"/><!-- HANGUL SYLLABLE SSEOD -->
+      <map code="0xc370" name="1em"/><!-- HANGUL SYLLABLE SSEOL -->
+      <map code="0xc371" name="1em"/><!-- HANGUL SYLLABLE SSEOLG -->
+      <map code="0xc372" name="1em"/><!-- HANGUL SYLLABLE SSEOLM -->
+      <map code="0xc373" name="1em"/><!-- HANGUL SYLLABLE SSEOLB -->
+      <map code="0xc374" name="1em"/><!-- HANGUL SYLLABLE SSEOLS -->
+      <map code="0xc375" name="1em"/><!-- HANGUL SYLLABLE SSEOLT -->
+      <map code="0xc376" name="1em"/><!-- HANGUL SYLLABLE SSEOLP -->
+      <map code="0xc377" name="1em"/><!-- HANGUL SYLLABLE SSEOLH -->
+      <map code="0xc378" name="1em"/><!-- HANGUL SYLLABLE SSEOM -->
+      <map code="0xc379" name="1em"/><!-- HANGUL SYLLABLE SSEOB -->
+      <map code="0xc37a" name="1em"/><!-- HANGUL SYLLABLE SSEOBS -->
+      <map code="0xc37b" name="1em"/><!-- HANGUL SYLLABLE SSEOS -->
+      <map code="0xc37c" name="1em"/><!-- HANGUL SYLLABLE SSEOSS -->
+      <map code="0xc37d" name="1em"/><!-- HANGUL SYLLABLE SSEONG -->
+      <map code="0xc37e" name="1em"/><!-- HANGUL SYLLABLE SSEOJ -->
+      <map code="0xc37f" name="1em"/><!-- HANGUL SYLLABLE SSEOC -->
+      <map code="0xc380" name="1em"/><!-- HANGUL SYLLABLE SSEOK -->
+      <map code="0xc381" name="1em"/><!-- HANGUL SYLLABLE SSEOT -->
+      <map code="0xc382" name="1em"/><!-- HANGUL SYLLABLE SSEOP -->
+      <map code="0xc383" name="1em"/><!-- HANGUL SYLLABLE SSEOH -->
+      <map code="0xc384" name="1em"/><!-- HANGUL SYLLABLE SSE -->
+      <map code="0xc385" name="1em"/><!-- HANGUL SYLLABLE SSEG -->
+      <map code="0xc386" name="1em"/><!-- HANGUL SYLLABLE SSEGG -->
+      <map code="0xc387" name="1em"/><!-- HANGUL SYLLABLE SSEGS -->
+      <map code="0xc388" name="1em"/><!-- HANGUL SYLLABLE SSEN -->
+      <map code="0xc389" name="1em"/><!-- HANGUL SYLLABLE SSENJ -->
+      <map code="0xc38a" name="1em"/><!-- HANGUL SYLLABLE SSENH -->
+      <map code="0xc38b" name="1em"/><!-- HANGUL SYLLABLE SSED -->
+      <map code="0xc38c" name="1em"/><!-- HANGUL SYLLABLE SSEL -->
+      <map code="0xc38d" name="1em"/><!-- HANGUL SYLLABLE SSELG -->
+      <map code="0xc38e" name="1em"/><!-- HANGUL SYLLABLE SSELM -->
+      <map code="0xc38f" name="1em"/><!-- HANGUL SYLLABLE SSELB -->
+      <map code="0xc390" name="1em"/><!-- HANGUL SYLLABLE SSELS -->
+      <map code="0xc391" name="1em"/><!-- HANGUL SYLLABLE SSELT -->
+      <map code="0xc392" name="1em"/><!-- HANGUL SYLLABLE SSELP -->
+      <map code="0xc393" name="1em"/><!-- HANGUL SYLLABLE SSELH -->
+      <map code="0xc394" name="1em"/><!-- HANGUL SYLLABLE SSEM -->
+      <map code="0xc395" name="1em"/><!-- HANGUL SYLLABLE SSEB -->
+      <map code="0xc396" name="1em"/><!-- HANGUL SYLLABLE SSEBS -->
+      <map code="0xc397" name="1em"/><!-- HANGUL SYLLABLE SSES -->
+      <map code="0xc398" name="1em"/><!-- HANGUL SYLLABLE SSESS -->
+      <map code="0xc399" name="1em"/><!-- HANGUL SYLLABLE SSENG -->
+      <map code="0xc39a" name="1em"/><!-- HANGUL SYLLABLE SSEJ -->
+      <map code="0xc39b" name="1em"/><!-- HANGUL SYLLABLE SSEC -->
+      <map code="0xc39c" name="1em"/><!-- HANGUL SYLLABLE SSEK -->
+      <map code="0xc39d" name="1em"/><!-- HANGUL SYLLABLE SSET -->
+      <map code="0xc39e" name="1em"/><!-- HANGUL SYLLABLE SSEP -->
+      <map code="0xc39f" name="1em"/><!-- HANGUL SYLLABLE SSEH -->
+      <map code="0xc3a0" name="1em"/><!-- HANGUL SYLLABLE SSYEO -->
+      <map code="0xc3a1" name="1em"/><!-- HANGUL SYLLABLE SSYEOG -->
+      <map code="0xc3a2" name="1em"/><!-- HANGUL SYLLABLE SSYEOGG -->
+      <map code="0xc3a3" name="1em"/><!-- HANGUL SYLLABLE SSYEOGS -->
+      <map code="0xc3a4" name="1em"/><!-- HANGUL SYLLABLE SSYEON -->
+      <map code="0xc3a5" name="1em"/><!-- HANGUL SYLLABLE SSYEONJ -->
+      <map code="0xc3a6" name="1em"/><!-- HANGUL SYLLABLE SSYEONH -->
+      <map code="0xc3a7" name="1em"/><!-- HANGUL SYLLABLE SSYEOD -->
+      <map code="0xc3a8" name="1em"/><!-- HANGUL SYLLABLE SSYEOL -->
+      <map code="0xc3a9" name="1em"/><!-- HANGUL SYLLABLE SSYEOLG -->
+      <map code="0xc3aa" name="1em"/><!-- HANGUL SYLLABLE SSYEOLM -->
+      <map code="0xc3ab" name="1em"/><!-- HANGUL SYLLABLE SSYEOLB -->
+      <map code="0xc3ac" name="1em"/><!-- HANGUL SYLLABLE SSYEOLS -->
+      <map code="0xc3ad" name="1em"/><!-- HANGUL SYLLABLE SSYEOLT -->
+      <map code="0xc3ae" name="1em"/><!-- HANGUL SYLLABLE SSYEOLP -->
+      <map code="0xc3af" name="1em"/><!-- HANGUL SYLLABLE SSYEOLH -->
+      <map code="0xc3b0" name="1em"/><!-- HANGUL SYLLABLE SSYEOM -->
+      <map code="0xc3b1" name="1em"/><!-- HANGUL SYLLABLE SSYEOB -->
+      <map code="0xc3b2" name="1em"/><!-- HANGUL SYLLABLE SSYEOBS -->
+      <map code="0xc3b3" name="1em"/><!-- HANGUL SYLLABLE SSYEOS -->
+      <map code="0xc3b4" name="1em"/><!-- HANGUL SYLLABLE SSYEOSS -->
+      <map code="0xc3b5" name="1em"/><!-- HANGUL SYLLABLE SSYEONG -->
+      <map code="0xc3b6" name="1em"/><!-- HANGUL SYLLABLE SSYEOJ -->
+      <map code="0xc3b7" name="1em"/><!-- HANGUL SYLLABLE SSYEOC -->
+      <map code="0xc3b8" name="1em"/><!-- HANGUL SYLLABLE SSYEOK -->
+      <map code="0xc3b9" name="1em"/><!-- HANGUL SYLLABLE SSYEOT -->
+      <map code="0xc3ba" name="1em"/><!-- HANGUL SYLLABLE SSYEOP -->
+      <map code="0xc3bb" name="1em"/><!-- HANGUL SYLLABLE SSYEOH -->
+      <map code="0xc3bc" name="1em"/><!-- HANGUL SYLLABLE SSYE -->
+      <map code="0xc3bd" name="1em"/><!-- HANGUL SYLLABLE SSYEG -->
+      <map code="0xc3be" name="1em"/><!-- HANGUL SYLLABLE SSYEGG -->
+      <map code="0xc3bf" name="1em"/><!-- HANGUL SYLLABLE SSYEGS -->
+      <map code="0xc3c0" name="1em"/><!-- HANGUL SYLLABLE SSYEN -->
+      <map code="0xc3c1" name="1em"/><!-- HANGUL SYLLABLE SSYENJ -->
+      <map code="0xc3c2" name="1em"/><!-- HANGUL SYLLABLE SSYENH -->
+      <map code="0xc3c3" name="1em"/><!-- HANGUL SYLLABLE SSYED -->
+      <map code="0xc3c4" name="1em"/><!-- HANGUL SYLLABLE SSYEL -->
+      <map code="0xc3c5" name="1em"/><!-- HANGUL SYLLABLE SSYELG -->
+      <map code="0xc3c6" name="1em"/><!-- HANGUL SYLLABLE SSYELM -->
+      <map code="0xc3c7" name="1em"/><!-- HANGUL SYLLABLE SSYELB -->
+      <map code="0xc3c8" name="1em"/><!-- HANGUL SYLLABLE SSYELS -->
+      <map code="0xc3c9" name="1em"/><!-- HANGUL SYLLABLE SSYELT -->
+      <map code="0xc3ca" name="1em"/><!-- HANGUL SYLLABLE SSYELP -->
+      <map code="0xc3cb" name="1em"/><!-- HANGUL SYLLABLE SSYELH -->
+      <map code="0xc3cc" name="1em"/><!-- HANGUL SYLLABLE SSYEM -->
+      <map code="0xc3cd" name="1em"/><!-- HANGUL SYLLABLE SSYEB -->
+      <map code="0xc3ce" name="1em"/><!-- HANGUL SYLLABLE SSYEBS -->
+      <map code="0xc3cf" name="1em"/><!-- HANGUL SYLLABLE SSYES -->
+      <map code="0xc3d0" name="1em"/><!-- HANGUL SYLLABLE SSYESS -->
+      <map code="0xc3d1" name="1em"/><!-- HANGUL SYLLABLE SSYENG -->
+      <map code="0xc3d2" name="1em"/><!-- HANGUL SYLLABLE SSYEJ -->
+      <map code="0xc3d3" name="1em"/><!-- HANGUL SYLLABLE SSYEC -->
+      <map code="0xc3d4" name="1em"/><!-- HANGUL SYLLABLE SSYEK -->
+      <map code="0xc3d5" name="1em"/><!-- HANGUL SYLLABLE SSYET -->
+      <map code="0xc3d6" name="1em"/><!-- HANGUL SYLLABLE SSYEP -->
+      <map code="0xc3d7" name="1em"/><!-- HANGUL SYLLABLE SSYEH -->
+      <map code="0xc3d8" name="1em"/><!-- HANGUL SYLLABLE SSO -->
+      <map code="0xc3d9" name="1em"/><!-- HANGUL SYLLABLE SSOG -->
+      <map code="0xc3da" name="1em"/><!-- HANGUL SYLLABLE SSOGG -->
+      <map code="0xc3db" name="1em"/><!-- HANGUL SYLLABLE SSOGS -->
+      <map code="0xc3dc" name="1em"/><!-- HANGUL SYLLABLE SSON -->
+      <map code="0xc3dd" name="1em"/><!-- HANGUL SYLLABLE SSONJ -->
+      <map code="0xc3de" name="1em"/><!-- HANGUL SYLLABLE SSONH -->
+      <map code="0xc3df" name="1em"/><!-- HANGUL SYLLABLE SSOD -->
+      <map code="0xc3e0" name="1em"/><!-- HANGUL SYLLABLE SSOL -->
+      <map code="0xc3e1" name="1em"/><!-- HANGUL SYLLABLE SSOLG -->
+      <map code="0xc3e2" name="1em"/><!-- HANGUL SYLLABLE SSOLM -->
+      <map code="0xc3e3" name="1em"/><!-- HANGUL SYLLABLE SSOLB -->
+      <map code="0xc3e4" name="1em"/><!-- HANGUL SYLLABLE SSOLS -->
+      <map code="0xc3e5" name="1em"/><!-- HANGUL SYLLABLE SSOLT -->
+      <map code="0xc3e6" name="1em"/><!-- HANGUL SYLLABLE SSOLP -->
+      <map code="0xc3e7" name="1em"/><!-- HANGUL SYLLABLE SSOLH -->
+      <map code="0xc3e8" name="1em"/><!-- HANGUL SYLLABLE SSOM -->
+      <map code="0xc3e9" name="1em"/><!-- HANGUL SYLLABLE SSOB -->
+      <map code="0xc3ea" name="1em"/><!-- HANGUL SYLLABLE SSOBS -->
+      <map code="0xc3eb" name="1em"/><!-- HANGUL SYLLABLE SSOS -->
+      <map code="0xc3ec" name="1em"/><!-- HANGUL SYLLABLE SSOSS -->
+      <map code="0xc3ed" name="1em"/><!-- HANGUL SYLLABLE SSONG -->
+      <map code="0xc3ee" name="1em"/><!-- HANGUL SYLLABLE SSOJ -->
+      <map code="0xc3ef" name="1em"/><!-- HANGUL SYLLABLE SSOC -->
+      <map code="0xc3f0" name="1em"/><!-- HANGUL SYLLABLE SSOK -->
+      <map code="0xc3f1" name="1em"/><!-- HANGUL SYLLABLE SSOT -->
+      <map code="0xc3f2" name="1em"/><!-- HANGUL SYLLABLE SSOP -->
+      <map code="0xc3f3" name="1em"/><!-- HANGUL SYLLABLE SSOH -->
+      <map code="0xc3f4" name="1em"/><!-- HANGUL SYLLABLE SSWA -->
+      <map code="0xc3f5" name="1em"/><!-- HANGUL SYLLABLE SSWAG -->
+      <map code="0xc3f6" name="1em"/><!-- HANGUL SYLLABLE SSWAGG -->
+      <map code="0xc3f7" name="1em"/><!-- HANGUL SYLLABLE SSWAGS -->
+      <map code="0xc3f8" name="1em"/><!-- HANGUL SYLLABLE SSWAN -->
+      <map code="0xc3f9" name="1em"/><!-- HANGUL SYLLABLE SSWANJ -->
+      <map code="0xc3fa" name="1em"/><!-- HANGUL SYLLABLE SSWANH -->
+      <map code="0xc3fb" name="1em"/><!-- HANGUL SYLLABLE SSWAD -->
+      <map code="0xc3fc" name="1em"/><!-- HANGUL SYLLABLE SSWAL -->
+      <map code="0xc3fd" name="1em"/><!-- HANGUL SYLLABLE SSWALG -->
+      <map code="0xc3fe" name="1em"/><!-- HANGUL SYLLABLE SSWALM -->
+      <map code="0xc3ff" name="1em"/><!-- HANGUL SYLLABLE SSWALB -->
+      <map code="0xc400" name="1em"/><!-- HANGUL SYLLABLE SSWALS -->
+      <map code="0xc401" name="1em"/><!-- HANGUL SYLLABLE SSWALT -->
+      <map code="0xc402" name="1em"/><!-- HANGUL SYLLABLE SSWALP -->
+      <map code="0xc403" name="1em"/><!-- HANGUL SYLLABLE SSWALH -->
+      <map code="0xc404" name="1em"/><!-- HANGUL SYLLABLE SSWAM -->
+      <map code="0xc405" name="1em"/><!-- HANGUL SYLLABLE SSWAB -->
+      <map code="0xc406" name="1em"/><!-- HANGUL SYLLABLE SSWABS -->
+      <map code="0xc407" name="1em"/><!-- HANGUL SYLLABLE SSWAS -->
+      <map code="0xc408" name="1em"/><!-- HANGUL SYLLABLE SSWASS -->
+      <map code="0xc409" name="1em"/><!-- HANGUL SYLLABLE SSWANG -->
+      <map code="0xc40a" name="1em"/><!-- HANGUL SYLLABLE SSWAJ -->
+      <map code="0xc40b" name="1em"/><!-- HANGUL SYLLABLE SSWAC -->
+      <map code="0xc40c" name="1em"/><!-- HANGUL SYLLABLE SSWAK -->
+      <map code="0xc40d" name="1em"/><!-- HANGUL SYLLABLE SSWAT -->
+      <map code="0xc40e" name="1em"/><!-- HANGUL SYLLABLE SSWAP -->
+      <map code="0xc40f" name="1em"/><!-- HANGUL SYLLABLE SSWAH -->
+      <map code="0xc410" name="1em"/><!-- HANGUL SYLLABLE SSWAE -->
+      <map code="0xc411" name="1em"/><!-- HANGUL SYLLABLE SSWAEG -->
+      <map code="0xc412" name="1em"/><!-- HANGUL SYLLABLE SSWAEGG -->
+      <map code="0xc413" name="1em"/><!-- HANGUL SYLLABLE SSWAEGS -->
+      <map code="0xc414" name="1em"/><!-- HANGUL SYLLABLE SSWAEN -->
+      <map code="0xc415" name="1em"/><!-- HANGUL SYLLABLE SSWAENJ -->
+      <map code="0xc416" name="1em"/><!-- HANGUL SYLLABLE SSWAENH -->
+      <map code="0xc417" name="1em"/><!-- HANGUL SYLLABLE SSWAED -->
+      <map code="0xc418" name="1em"/><!-- HANGUL SYLLABLE SSWAEL -->
+      <map code="0xc419" name="1em"/><!-- HANGUL SYLLABLE SSWAELG -->
+      <map code="0xc41a" name="1em"/><!-- HANGUL SYLLABLE SSWAELM -->
+      <map code="0xc41b" name="1em"/><!-- HANGUL SYLLABLE SSWAELB -->
+      <map code="0xc41c" name="1em"/><!-- HANGUL SYLLABLE SSWAELS -->
+      <map code="0xc41d" name="1em"/><!-- HANGUL SYLLABLE SSWAELT -->
+      <map code="0xc41e" name="1em"/><!-- HANGUL SYLLABLE SSWAELP -->
+      <map code="0xc41f" name="1em"/><!-- HANGUL SYLLABLE SSWAELH -->
+      <map code="0xc420" name="1em"/><!-- HANGUL SYLLABLE SSWAEM -->
+      <map code="0xc421" name="1em"/><!-- HANGUL SYLLABLE SSWAEB -->
+      <map code="0xc422" name="1em"/><!-- HANGUL SYLLABLE SSWAEBS -->
+      <map code="0xc423" name="1em"/><!-- HANGUL SYLLABLE SSWAES -->
+      <map code="0xc424" name="1em"/><!-- HANGUL SYLLABLE SSWAESS -->
+      <map code="0xc425" name="1em"/><!-- HANGUL SYLLABLE SSWAENG -->
+      <map code="0xc426" name="1em"/><!-- HANGUL SYLLABLE SSWAEJ -->
+      <map code="0xc427" name="1em"/><!-- HANGUL SYLLABLE SSWAEC -->
+      <map code="0xc428" name="1em"/><!-- HANGUL SYLLABLE SSWAEK -->
+      <map code="0xc429" name="1em"/><!-- HANGUL SYLLABLE SSWAET -->
+      <map code="0xc42a" name="1em"/><!-- HANGUL SYLLABLE SSWAEP -->
+      <map code="0xc42b" name="1em"/><!-- HANGUL SYLLABLE SSWAEH -->
+      <map code="0xc42c" name="1em"/><!-- HANGUL SYLLABLE SSOE -->
+      <map code="0xc42d" name="1em"/><!-- HANGUL SYLLABLE SSOEG -->
+      <map code="0xc42e" name="1em"/><!-- HANGUL SYLLABLE SSOEGG -->
+      <map code="0xc42f" name="1em"/><!-- HANGUL SYLLABLE SSOEGS -->
+      <map code="0xc430" name="1em"/><!-- HANGUL SYLLABLE SSOEN -->
+      <map code="0xc431" name="1em"/><!-- HANGUL SYLLABLE SSOENJ -->
+      <map code="0xc432" name="1em"/><!-- HANGUL SYLLABLE SSOENH -->
+      <map code="0xc433" name="1em"/><!-- HANGUL SYLLABLE SSOED -->
+      <map code="0xc434" name="1em"/><!-- HANGUL SYLLABLE SSOEL -->
+      <map code="0xc435" name="1em"/><!-- HANGUL SYLLABLE SSOELG -->
+      <map code="0xc436" name="1em"/><!-- HANGUL SYLLABLE SSOELM -->
+      <map code="0xc437" name="1em"/><!-- HANGUL SYLLABLE SSOELB -->
+      <map code="0xc438" name="1em"/><!-- HANGUL SYLLABLE SSOELS -->
+      <map code="0xc439" name="1em"/><!-- HANGUL SYLLABLE SSOELT -->
+      <map code="0xc43a" name="1em"/><!-- HANGUL SYLLABLE SSOELP -->
+      <map code="0xc43b" name="1em"/><!-- HANGUL SYLLABLE SSOELH -->
+      <map code="0xc43c" name="1em"/><!-- HANGUL SYLLABLE SSOEM -->
+      <map code="0xc43d" name="1em"/><!-- HANGUL SYLLABLE SSOEB -->
+      <map code="0xc43e" name="1em"/><!-- HANGUL SYLLABLE SSOEBS -->
+      <map code="0xc43f" name="1em"/><!-- HANGUL SYLLABLE SSOES -->
+      <map code="0xc440" name="1em"/><!-- HANGUL SYLLABLE SSOESS -->
+      <map code="0xc441" name="1em"/><!-- HANGUL SYLLABLE SSOENG -->
+      <map code="0xc442" name="1em"/><!-- HANGUL SYLLABLE SSOEJ -->
+      <map code="0xc443" name="1em"/><!-- HANGUL SYLLABLE SSOEC -->
+      <map code="0xc444" name="1em"/><!-- HANGUL SYLLABLE SSOEK -->
+      <map code="0xc445" name="1em"/><!-- HANGUL SYLLABLE SSOET -->
+      <map code="0xc446" name="1em"/><!-- HANGUL SYLLABLE SSOEP -->
+      <map code="0xc447" name="1em"/><!-- HANGUL SYLLABLE SSOEH -->
+      <map code="0xc448" name="1em"/><!-- HANGUL SYLLABLE SSYO -->
+      <map code="0xc449" name="1em"/><!-- HANGUL SYLLABLE SSYOG -->
+      <map code="0xc44a" name="1em"/><!-- HANGUL SYLLABLE SSYOGG -->
+      <map code="0xc44b" name="1em"/><!-- HANGUL SYLLABLE SSYOGS -->
+      <map code="0xc44c" name="1em"/><!-- HANGUL SYLLABLE SSYON -->
+      <map code="0xc44d" name="1em"/><!-- HANGUL SYLLABLE SSYONJ -->
+      <map code="0xc44e" name="1em"/><!-- HANGUL SYLLABLE SSYONH -->
+      <map code="0xc44f" name="1em"/><!-- HANGUL SYLLABLE SSYOD -->
+      <map code="0xc450" name="1em"/><!-- HANGUL SYLLABLE SSYOL -->
+      <map code="0xc451" name="1em"/><!-- HANGUL SYLLABLE SSYOLG -->
+      <map code="0xc452" name="1em"/><!-- HANGUL SYLLABLE SSYOLM -->
+      <map code="0xc453" name="1em"/><!-- HANGUL SYLLABLE SSYOLB -->
+      <map code="0xc454" name="1em"/><!-- HANGUL SYLLABLE SSYOLS -->
+      <map code="0xc455" name="1em"/><!-- HANGUL SYLLABLE SSYOLT -->
+      <map code="0xc456" name="1em"/><!-- HANGUL SYLLABLE SSYOLP -->
+      <map code="0xc457" name="1em"/><!-- HANGUL SYLLABLE SSYOLH -->
+      <map code="0xc458" name="1em"/><!-- HANGUL SYLLABLE SSYOM -->
+      <map code="0xc459" name="1em"/><!-- HANGUL SYLLABLE SSYOB -->
+      <map code="0xc45a" name="1em"/><!-- HANGUL SYLLABLE SSYOBS -->
+      <map code="0xc45b" name="1em"/><!-- HANGUL SYLLABLE SSYOS -->
+      <map code="0xc45c" name="1em"/><!-- HANGUL SYLLABLE SSYOSS -->
+      <map code="0xc45d" name="1em"/><!-- HANGUL SYLLABLE SSYONG -->
+      <map code="0xc45e" name="1em"/><!-- HANGUL SYLLABLE SSYOJ -->
+      <map code="0xc45f" name="1em"/><!-- HANGUL SYLLABLE SSYOC -->
+      <map code="0xc460" name="1em"/><!-- HANGUL SYLLABLE SSYOK -->
+      <map code="0xc461" name="1em"/><!-- HANGUL SYLLABLE SSYOT -->
+      <map code="0xc462" name="1em"/><!-- HANGUL SYLLABLE SSYOP -->
+      <map code="0xc463" name="1em"/><!-- HANGUL SYLLABLE SSYOH -->
+      <map code="0xc464" name="1em"/><!-- HANGUL SYLLABLE SSU -->
+      <map code="0xc465" name="1em"/><!-- HANGUL SYLLABLE SSUG -->
+      <map code="0xc466" name="1em"/><!-- HANGUL SYLLABLE SSUGG -->
+      <map code="0xc467" name="1em"/><!-- HANGUL SYLLABLE SSUGS -->
+      <map code="0xc468" name="1em"/><!-- HANGUL SYLLABLE SSUN -->
+      <map code="0xc469" name="1em"/><!-- HANGUL SYLLABLE SSUNJ -->
+      <map code="0xc46a" name="1em"/><!-- HANGUL SYLLABLE SSUNH -->
+      <map code="0xc46b" name="1em"/><!-- HANGUL SYLLABLE SSUD -->
+      <map code="0xc46c" name="1em"/><!-- HANGUL SYLLABLE SSUL -->
+      <map code="0xc46d" name="1em"/><!-- HANGUL SYLLABLE SSULG -->
+      <map code="0xc46e" name="1em"/><!-- HANGUL SYLLABLE SSULM -->
+      <map code="0xc46f" name="1em"/><!-- HANGUL SYLLABLE SSULB -->
+      <map code="0xc470" name="1em"/><!-- HANGUL SYLLABLE SSULS -->
+      <map code="0xc471" name="1em"/><!-- HANGUL SYLLABLE SSULT -->
+      <map code="0xc472" name="1em"/><!-- HANGUL SYLLABLE SSULP -->
+      <map code="0xc473" name="1em"/><!-- HANGUL SYLLABLE SSULH -->
+      <map code="0xc474" name="1em"/><!-- HANGUL SYLLABLE SSUM -->
+      <map code="0xc475" name="1em"/><!-- HANGUL SYLLABLE SSUB -->
+      <map code="0xc476" name="1em"/><!-- HANGUL SYLLABLE SSUBS -->
+      <map code="0xc477" name="1em"/><!-- HANGUL SYLLABLE SSUS -->
+      <map code="0xc478" name="1em"/><!-- HANGUL SYLLABLE SSUSS -->
+      <map code="0xc479" name="1em"/><!-- HANGUL SYLLABLE SSUNG -->
+      <map code="0xc47a" name="1em"/><!-- HANGUL SYLLABLE SSUJ -->
+      <map code="0xc47b" name="1em"/><!-- HANGUL SYLLABLE SSUC -->
+      <map code="0xc47c" name="1em"/><!-- HANGUL SYLLABLE SSUK -->
+      <map code="0xc47d" name="1em"/><!-- HANGUL SYLLABLE SSUT -->
+      <map code="0xc47e" name="1em"/><!-- HANGUL SYLLABLE SSUP -->
+      <map code="0xc47f" name="1em"/><!-- HANGUL SYLLABLE SSUH -->
+      <map code="0xc480" name="1em"/><!-- HANGUL SYLLABLE SSWEO -->
+      <map code="0xc481" name="1em"/><!-- HANGUL SYLLABLE SSWEOG -->
+      <map code="0xc482" name="1em"/><!-- HANGUL SYLLABLE SSWEOGG -->
+      <map code="0xc483" name="1em"/><!-- HANGUL SYLLABLE SSWEOGS -->
+      <map code="0xc484" name="1em"/><!-- HANGUL SYLLABLE SSWEON -->
+      <map code="0xc485" name="1em"/><!-- HANGUL SYLLABLE SSWEONJ -->
+      <map code="0xc486" name="1em"/><!-- HANGUL SYLLABLE SSWEONH -->
+      <map code="0xc487" name="1em"/><!-- HANGUL SYLLABLE SSWEOD -->
+      <map code="0xc488" name="1em"/><!-- HANGUL SYLLABLE SSWEOL -->
+      <map code="0xc489" name="1em"/><!-- HANGUL SYLLABLE SSWEOLG -->
+      <map code="0xc48a" name="1em"/><!-- HANGUL SYLLABLE SSWEOLM -->
+      <map code="0xc48b" name="1em"/><!-- HANGUL SYLLABLE SSWEOLB -->
+      <map code="0xc48c" name="1em"/><!-- HANGUL SYLLABLE SSWEOLS -->
+      <map code="0xc48d" name="1em"/><!-- HANGUL SYLLABLE SSWEOLT -->
+      <map code="0xc48e" name="1em"/><!-- HANGUL SYLLABLE SSWEOLP -->
+      <map code="0xc48f" name="1em"/><!-- HANGUL SYLLABLE SSWEOLH -->
+      <map code="0xc490" name="1em"/><!-- HANGUL SYLLABLE SSWEOM -->
+      <map code="0xc491" name="1em"/><!-- HANGUL SYLLABLE SSWEOB -->
+      <map code="0xc492" name="1em"/><!-- HANGUL SYLLABLE SSWEOBS -->
+      <map code="0xc493" name="1em"/><!-- HANGUL SYLLABLE SSWEOS -->
+      <map code="0xc494" name="1em"/><!-- HANGUL SYLLABLE SSWEOSS -->
+      <map code="0xc495" name="1em"/><!-- HANGUL SYLLABLE SSWEONG -->
+      <map code="0xc496" name="1em"/><!-- HANGUL SYLLABLE SSWEOJ -->
+      <map code="0xc497" name="1em"/><!-- HANGUL SYLLABLE SSWEOC -->
+      <map code="0xc498" name="1em"/><!-- HANGUL SYLLABLE SSWEOK -->
+      <map code="0xc499" name="1em"/><!-- HANGUL SYLLABLE SSWEOT -->
+      <map code="0xc49a" name="1em"/><!-- HANGUL SYLLABLE SSWEOP -->
+      <map code="0xc49b" name="1em"/><!-- HANGUL SYLLABLE SSWEOH -->
+      <map code="0xc49c" name="1em"/><!-- HANGUL SYLLABLE SSWE -->
+      <map code="0xc49d" name="1em"/><!-- HANGUL SYLLABLE SSWEG -->
+      <map code="0xc49e" name="1em"/><!-- HANGUL SYLLABLE SSWEGG -->
+      <map code="0xc49f" name="1em"/><!-- HANGUL SYLLABLE SSWEGS -->
+      <map code="0xc4a0" name="1em"/><!-- HANGUL SYLLABLE SSWEN -->
+      <map code="0xc4a1" name="1em"/><!-- HANGUL SYLLABLE SSWENJ -->
+      <map code="0xc4a2" name="1em"/><!-- HANGUL SYLLABLE SSWENH -->
+      <map code="0xc4a3" name="1em"/><!-- HANGUL SYLLABLE SSWED -->
+      <map code="0xc4a4" name="1em"/><!-- HANGUL SYLLABLE SSWEL -->
+      <map code="0xc4a5" name="1em"/><!-- HANGUL SYLLABLE SSWELG -->
+      <map code="0xc4a6" name="1em"/><!-- HANGUL SYLLABLE SSWELM -->
+      <map code="0xc4a7" name="1em"/><!-- HANGUL SYLLABLE SSWELB -->
+      <map code="0xc4a8" name="1em"/><!-- HANGUL SYLLABLE SSWELS -->
+      <map code="0xc4a9" name="1em"/><!-- HANGUL SYLLABLE SSWELT -->
+      <map code="0xc4aa" name="1em"/><!-- HANGUL SYLLABLE SSWELP -->
+      <map code="0xc4ab" name="1em"/><!-- HANGUL SYLLABLE SSWELH -->
+      <map code="0xc4ac" name="1em"/><!-- HANGUL SYLLABLE SSWEM -->
+      <map code="0xc4ad" name="1em"/><!-- HANGUL SYLLABLE SSWEB -->
+      <map code="0xc4ae" name="1em"/><!-- HANGUL SYLLABLE SSWEBS -->
+      <map code="0xc4af" name="1em"/><!-- HANGUL SYLLABLE SSWES -->
+      <map code="0xc4b0" name="1em"/><!-- HANGUL SYLLABLE SSWESS -->
+      <map code="0xc4b1" name="1em"/><!-- HANGUL SYLLABLE SSWENG -->
+      <map code="0xc4b2" name="1em"/><!-- HANGUL SYLLABLE SSWEJ -->
+      <map code="0xc4b3" name="1em"/><!-- HANGUL SYLLABLE SSWEC -->
+      <map code="0xc4b4" name="1em"/><!-- HANGUL SYLLABLE SSWEK -->
+      <map code="0xc4b5" name="1em"/><!-- HANGUL SYLLABLE SSWET -->
+      <map code="0xc4b6" name="1em"/><!-- HANGUL SYLLABLE SSWEP -->
+      <map code="0xc4b7" name="1em"/><!-- HANGUL SYLLABLE SSWEH -->
+      <map code="0xc4b8" name="1em"/><!-- HANGUL SYLLABLE SSWI -->
+      <map code="0xc4b9" name="1em"/><!-- HANGUL SYLLABLE SSWIG -->
+      <map code="0xc4ba" name="1em"/><!-- HANGUL SYLLABLE SSWIGG -->
+      <map code="0xc4bb" name="1em"/><!-- HANGUL SYLLABLE SSWIGS -->
+      <map code="0xc4bc" name="1em"/><!-- HANGUL SYLLABLE SSWIN -->
+      <map code="0xc4bd" name="1em"/><!-- HANGUL SYLLABLE SSWINJ -->
+      <map code="0xc4be" name="1em"/><!-- HANGUL SYLLABLE SSWINH -->
+      <map code="0xc4bf" name="1em"/><!-- HANGUL SYLLABLE SSWID -->
+      <map code="0xc4c0" name="1em"/><!-- HANGUL SYLLABLE SSWIL -->
+      <map code="0xc4c1" name="1em"/><!-- HANGUL SYLLABLE SSWILG -->
+      <map code="0xc4c2" name="1em"/><!-- HANGUL SYLLABLE SSWILM -->
+      <map code="0xc4c3" name="1em"/><!-- HANGUL SYLLABLE SSWILB -->
+      <map code="0xc4c4" name="1em"/><!-- HANGUL SYLLABLE SSWILS -->
+      <map code="0xc4c5" name="1em"/><!-- HANGUL SYLLABLE SSWILT -->
+      <map code="0xc4c6" name="1em"/><!-- HANGUL SYLLABLE SSWILP -->
+      <map code="0xc4c7" name="1em"/><!-- HANGUL SYLLABLE SSWILH -->
+      <map code="0xc4c8" name="1em"/><!-- HANGUL SYLLABLE SSWIM -->
+      <map code="0xc4c9" name="1em"/><!-- HANGUL SYLLABLE SSWIB -->
+      <map code="0xc4ca" name="1em"/><!-- HANGUL SYLLABLE SSWIBS -->
+      <map code="0xc4cb" name="1em"/><!-- HANGUL SYLLABLE SSWIS -->
+      <map code="0xc4cc" name="1em"/><!-- HANGUL SYLLABLE SSWISS -->
+      <map code="0xc4cd" name="1em"/><!-- HANGUL SYLLABLE SSWING -->
+      <map code="0xc4ce" name="1em"/><!-- HANGUL SYLLABLE SSWIJ -->
+      <map code="0xc4cf" name="1em"/><!-- HANGUL SYLLABLE SSWIC -->
+      <map code="0xc4d0" name="1em"/><!-- HANGUL SYLLABLE SSWIK -->
+      <map code="0xc4d1" name="1em"/><!-- HANGUL SYLLABLE SSWIT -->
+      <map code="0xc4d2" name="1em"/><!-- HANGUL SYLLABLE SSWIP -->
+      <map code="0xc4d3" name="1em"/><!-- HANGUL SYLLABLE SSWIH -->
+      <map code="0xc4d4" name="1em"/><!-- HANGUL SYLLABLE SSYU -->
+      <map code="0xc4d5" name="1em"/><!-- HANGUL SYLLABLE SSYUG -->
+      <map code="0xc4d6" name="1em"/><!-- HANGUL SYLLABLE SSYUGG -->
+      <map code="0xc4d7" name="1em"/><!-- HANGUL SYLLABLE SSYUGS -->
+      <map code="0xc4d8" name="1em"/><!-- HANGUL SYLLABLE SSYUN -->
+      <map code="0xc4d9" name="1em"/><!-- HANGUL SYLLABLE SSYUNJ -->
+      <map code="0xc4da" name="1em"/><!-- HANGUL SYLLABLE SSYUNH -->
+      <map code="0xc4db" name="1em"/><!-- HANGUL SYLLABLE SSYUD -->
+      <map code="0xc4dc" name="1em"/><!-- HANGUL SYLLABLE SSYUL -->
+      <map code="0xc4dd" name="1em"/><!-- HANGUL SYLLABLE SSYULG -->
+      <map code="0xc4de" name="1em"/><!-- HANGUL SYLLABLE SSYULM -->
+      <map code="0xc4df" name="1em"/><!-- HANGUL SYLLABLE SSYULB -->
+      <map code="0xc4e0" name="1em"/><!-- HANGUL SYLLABLE SSYULS -->
+      <map code="0xc4e1" name="1em"/><!-- HANGUL SYLLABLE SSYULT -->
+      <map code="0xc4e2" name="1em"/><!-- HANGUL SYLLABLE SSYULP -->
+      <map code="0xc4e3" name="1em"/><!-- HANGUL SYLLABLE SSYULH -->
+      <map code="0xc4e4" name="1em"/><!-- HANGUL SYLLABLE SSYUM -->
+      <map code="0xc4e5" name="1em"/><!-- HANGUL SYLLABLE SSYUB -->
+      <map code="0xc4e6" name="1em"/><!-- HANGUL SYLLABLE SSYUBS -->
+      <map code="0xc4e7" name="1em"/><!-- HANGUL SYLLABLE SSYUS -->
+      <map code="0xc4e8" name="1em"/><!-- HANGUL SYLLABLE SSYUSS -->
+      <map code="0xc4e9" name="1em"/><!-- HANGUL SYLLABLE SSYUNG -->
+      <map code="0xc4ea" name="1em"/><!-- HANGUL SYLLABLE SSYUJ -->
+      <map code="0xc4eb" name="1em"/><!-- HANGUL SYLLABLE SSYUC -->
+      <map code="0xc4ec" name="1em"/><!-- HANGUL SYLLABLE SSYUK -->
+      <map code="0xc4ed" name="1em"/><!-- HANGUL SYLLABLE SSYUT -->
+      <map code="0xc4ee" name="1em"/><!-- HANGUL SYLLABLE SSYUP -->
+      <map code="0xc4ef" name="1em"/><!-- HANGUL SYLLABLE SSYUH -->
+      <map code="0xc4f0" name="1em"/><!-- HANGUL SYLLABLE SSEU -->
+      <map code="0xc4f1" name="1em"/><!-- HANGUL SYLLABLE SSEUG -->
+      <map code="0xc4f2" name="1em"/><!-- HANGUL SYLLABLE SSEUGG -->
+      <map code="0xc4f3" name="1em"/><!-- HANGUL SYLLABLE SSEUGS -->
+      <map code="0xc4f4" name="1em"/><!-- HANGUL SYLLABLE SSEUN -->
+      <map code="0xc4f5" name="1em"/><!-- HANGUL SYLLABLE SSEUNJ -->
+      <map code="0xc4f6" name="1em"/><!-- HANGUL SYLLABLE SSEUNH -->
+      <map code="0xc4f7" name="1em"/><!-- HANGUL SYLLABLE SSEUD -->
+      <map code="0xc4f8" name="1em"/><!-- HANGUL SYLLABLE SSEUL -->
+      <map code="0xc4f9" name="1em"/><!-- HANGUL SYLLABLE SSEULG -->
+      <map code="0xc4fa" name="1em"/><!-- HANGUL SYLLABLE SSEULM -->
+      <map code="0xc4fb" name="1em"/><!-- HANGUL SYLLABLE SSEULB -->
+      <map code="0xc4fc" name="1em"/><!-- HANGUL SYLLABLE SSEULS -->
+      <map code="0xc4fd" name="1em"/><!-- HANGUL SYLLABLE SSEULT -->
+      <map code="0xc4fe" name="1em"/><!-- HANGUL SYLLABLE SSEULP -->
+      <map code="0xc4ff" name="1em"/><!-- HANGUL SYLLABLE SSEULH -->
+      <map code="0xc500" name="1em"/><!-- HANGUL SYLLABLE SSEUM -->
+      <map code="0xc501" name="1em"/><!-- HANGUL SYLLABLE SSEUB -->
+      <map code="0xc502" name="1em"/><!-- HANGUL SYLLABLE SSEUBS -->
+      <map code="0xc503" name="1em"/><!-- HANGUL SYLLABLE SSEUS -->
+      <map code="0xc504" name="1em"/><!-- HANGUL SYLLABLE SSEUSS -->
+      <map code="0xc505" name="1em"/><!-- HANGUL SYLLABLE SSEUNG -->
+      <map code="0xc506" name="1em"/><!-- HANGUL SYLLABLE SSEUJ -->
+      <map code="0xc507" name="1em"/><!-- HANGUL SYLLABLE SSEUC -->
+      <map code="0xc508" name="1em"/><!-- HANGUL SYLLABLE SSEUK -->
+      <map code="0xc509" name="1em"/><!-- HANGUL SYLLABLE SSEUT -->
+      <map code="0xc50a" name="1em"/><!-- HANGUL SYLLABLE SSEUP -->
+      <map code="0xc50b" name="1em"/><!-- HANGUL SYLLABLE SSEUH -->
+      <map code="0xc50c" name="1em"/><!-- HANGUL SYLLABLE SSYI -->
+      <map code="0xc50d" name="1em"/><!-- HANGUL SYLLABLE SSYIG -->
+      <map code="0xc50e" name="1em"/><!-- HANGUL SYLLABLE SSYIGG -->
+      <map code="0xc50f" name="1em"/><!-- HANGUL SYLLABLE SSYIGS -->
+      <map code="0xc510" name="1em"/><!-- HANGUL SYLLABLE SSYIN -->
+      <map code="0xc511" name="1em"/><!-- HANGUL SYLLABLE SSYINJ -->
+      <map code="0xc512" name="1em"/><!-- HANGUL SYLLABLE SSYINH -->
+      <map code="0xc513" name="1em"/><!-- HANGUL SYLLABLE SSYID -->
+      <map code="0xc514" name="1em"/><!-- HANGUL SYLLABLE SSYIL -->
+      <map code="0xc515" name="1em"/><!-- HANGUL SYLLABLE SSYILG -->
+      <map code="0xc516" name="1em"/><!-- HANGUL SYLLABLE SSYILM -->
+      <map code="0xc517" name="1em"/><!-- HANGUL SYLLABLE SSYILB -->
+      <map code="0xc518" name="1em"/><!-- HANGUL SYLLABLE SSYILS -->
+      <map code="0xc519" name="1em"/><!-- HANGUL SYLLABLE SSYILT -->
+      <map code="0xc51a" name="1em"/><!-- HANGUL SYLLABLE SSYILP -->
+      <map code="0xc51b" name="1em"/><!-- HANGUL SYLLABLE SSYILH -->
+      <map code="0xc51c" name="1em"/><!-- HANGUL SYLLABLE SSYIM -->
+      <map code="0xc51d" name="1em"/><!-- HANGUL SYLLABLE SSYIB -->
+      <map code="0xc51e" name="1em"/><!-- HANGUL SYLLABLE SSYIBS -->
+      <map code="0xc51f" name="1em"/><!-- HANGUL SYLLABLE SSYIS -->
+      <map code="0xc520" name="1em"/><!-- HANGUL SYLLABLE SSYISS -->
+      <map code="0xc521" name="1em"/><!-- HANGUL SYLLABLE SSYING -->
+      <map code="0xc522" name="1em"/><!-- HANGUL SYLLABLE SSYIJ -->
+      <map code="0xc523" name="1em"/><!-- HANGUL SYLLABLE SSYIC -->
+      <map code="0xc524" name="1em"/><!-- HANGUL SYLLABLE SSYIK -->
+      <map code="0xc525" name="1em"/><!-- HANGUL SYLLABLE SSYIT -->
+      <map code="0xc526" name="1em"/><!-- HANGUL SYLLABLE SSYIP -->
+      <map code="0xc527" name="1em"/><!-- HANGUL SYLLABLE SSYIH -->
+      <map code="0xc528" name="1em"/><!-- HANGUL SYLLABLE SSI -->
+      <map code="0xc529" name="1em"/><!-- HANGUL SYLLABLE SSIG -->
+      <map code="0xc52a" name="1em"/><!-- HANGUL SYLLABLE SSIGG -->
+      <map code="0xc52b" name="1em"/><!-- HANGUL SYLLABLE SSIGS -->
+      <map code="0xc52c" name="1em"/><!-- HANGUL SYLLABLE SSIN -->
+      <map code="0xc52d" name="1em"/><!-- HANGUL SYLLABLE SSINJ -->
+      <map code="0xc52e" name="1em"/><!-- HANGUL SYLLABLE SSINH -->
+      <map code="0xc52f" name="1em"/><!-- HANGUL SYLLABLE SSID -->
+      <map code="0xc530" name="1em"/><!-- HANGUL SYLLABLE SSIL -->
+      <map code="0xc531" name="1em"/><!-- HANGUL SYLLABLE SSILG -->
+      <map code="0xc532" name="1em"/><!-- HANGUL SYLLABLE SSILM -->
+      <map code="0xc533" name="1em"/><!-- HANGUL SYLLABLE SSILB -->
+      <map code="0xc534" name="1em"/><!-- HANGUL SYLLABLE SSILS -->
+      <map code="0xc535" name="1em"/><!-- HANGUL SYLLABLE SSILT -->
+      <map code="0xc536" name="1em"/><!-- HANGUL SYLLABLE SSILP -->
+      <map code="0xc537" name="1em"/><!-- HANGUL SYLLABLE SSILH -->
+      <map code="0xc538" name="1em"/><!-- HANGUL SYLLABLE SSIM -->
+      <map code="0xc539" name="1em"/><!-- HANGUL SYLLABLE SSIB -->
+      <map code="0xc53a" name="1em"/><!-- HANGUL SYLLABLE SSIBS -->
+      <map code="0xc53b" name="1em"/><!-- HANGUL SYLLABLE SSIS -->
+      <map code="0xc53c" name="1em"/><!-- HANGUL SYLLABLE SSISS -->
+      <map code="0xc53d" name="1em"/><!-- HANGUL SYLLABLE SSING -->
+      <map code="0xc53e" name="1em"/><!-- HANGUL SYLLABLE SSIJ -->
+      <map code="0xc53f" name="1em"/><!-- HANGUL SYLLABLE SSIC -->
+      <map code="0xc540" name="1em"/><!-- HANGUL SYLLABLE SSIK -->
+      <map code="0xc541" name="1em"/><!-- HANGUL SYLLABLE SSIT -->
+      <map code="0xc542" name="1em"/><!-- HANGUL SYLLABLE SSIP -->
+      <map code="0xc543" name="1em"/><!-- HANGUL SYLLABLE SSIH -->
+      <map code="0xc544" name="1em"/><!-- HANGUL SYLLABLE A -->
+      <map code="0xc545" name="1em"/><!-- HANGUL SYLLABLE AG -->
+      <map code="0xc546" name="1em"/><!-- HANGUL SYLLABLE AGG -->
+      <map code="0xc547" name="1em"/><!-- HANGUL SYLLABLE AGS -->
+      <map code="0xc548" name="1em"/><!-- HANGUL SYLLABLE AN -->
+      <map code="0xc549" name="1em"/><!-- HANGUL SYLLABLE ANJ -->
+      <map code="0xc54a" name="1em"/><!-- HANGUL SYLLABLE ANH -->
+      <map code="0xc54b" name="1em"/><!-- HANGUL SYLLABLE AD -->
+      <map code="0xc54c" name="1em"/><!-- HANGUL SYLLABLE AL -->
+      <map code="0xc54d" name="1em"/><!-- HANGUL SYLLABLE ALG -->
+      <map code="0xc54e" name="1em"/><!-- HANGUL SYLLABLE ALM -->
+      <map code="0xc54f" name="1em"/><!-- HANGUL SYLLABLE ALB -->
+      <map code="0xc550" name="1em"/><!-- HANGUL SYLLABLE ALS -->
+      <map code="0xc551" name="1em"/><!-- HANGUL SYLLABLE ALT -->
+      <map code="0xc552" name="1em"/><!-- HANGUL SYLLABLE ALP -->
+      <map code="0xc553" name="1em"/><!-- HANGUL SYLLABLE ALH -->
+      <map code="0xc554" name="1em"/><!-- HANGUL SYLLABLE AM -->
+      <map code="0xc555" name="1em"/><!-- HANGUL SYLLABLE AB -->
+      <map code="0xc556" name="1em"/><!-- HANGUL SYLLABLE ABS -->
+      <map code="0xc557" name="1em"/><!-- HANGUL SYLLABLE AS -->
+      <map code="0xc558" name="1em"/><!-- HANGUL SYLLABLE ASS -->
+      <map code="0xc559" name="1em"/><!-- HANGUL SYLLABLE ANG -->
+      <map code="0xc55a" name="1em"/><!-- HANGUL SYLLABLE AJ -->
+      <map code="0xc55b" name="1em"/><!-- HANGUL SYLLABLE AC -->
+      <map code="0xc55c" name="1em"/><!-- HANGUL SYLLABLE AK -->
+      <map code="0xc55d" name="1em"/><!-- HANGUL SYLLABLE AT -->
+      <map code="0xc55e" name="1em"/><!-- HANGUL SYLLABLE AP -->
+      <map code="0xc55f" name="1em"/><!-- HANGUL SYLLABLE AH -->
+      <map code="0xc560" name="1em"/><!-- HANGUL SYLLABLE AE -->
+      <map code="0xc561" name="1em"/><!-- HANGUL SYLLABLE AEG -->
+      <map code="0xc562" name="1em"/><!-- HANGUL SYLLABLE AEGG -->
+      <map code="0xc563" name="1em"/><!-- HANGUL SYLLABLE AEGS -->
+      <map code="0xc564" name="1em"/><!-- HANGUL SYLLABLE AEN -->
+      <map code="0xc565" name="1em"/><!-- HANGUL SYLLABLE AENJ -->
+      <map code="0xc566" name="1em"/><!-- HANGUL SYLLABLE AENH -->
+      <map code="0xc567" name="1em"/><!-- HANGUL SYLLABLE AED -->
+      <map code="0xc568" name="1em"/><!-- HANGUL SYLLABLE AEL -->
+      <map code="0xc569" name="1em"/><!-- HANGUL SYLLABLE AELG -->
+      <map code="0xc56a" name="1em"/><!-- HANGUL SYLLABLE AELM -->
+      <map code="0xc56b" name="1em"/><!-- HANGUL SYLLABLE AELB -->
+      <map code="0xc56c" name="1em"/><!-- HANGUL SYLLABLE AELS -->
+      <map code="0xc56d" name="1em"/><!-- HANGUL SYLLABLE AELT -->
+      <map code="0xc56e" name="1em"/><!-- HANGUL SYLLABLE AELP -->
+      <map code="0xc56f" name="1em"/><!-- HANGUL SYLLABLE AELH -->
+      <map code="0xc570" name="1em"/><!-- HANGUL SYLLABLE AEM -->
+      <map code="0xc571" name="1em"/><!-- HANGUL SYLLABLE AEB -->
+      <map code="0xc572" name="1em"/><!-- HANGUL SYLLABLE AEBS -->
+      <map code="0xc573" name="1em"/><!-- HANGUL SYLLABLE AES -->
+      <map code="0xc574" name="1em"/><!-- HANGUL SYLLABLE AESS -->
+      <map code="0xc575" name="1em"/><!-- HANGUL SYLLABLE AENG -->
+      <map code="0xc576" name="1em"/><!-- HANGUL SYLLABLE AEJ -->
+      <map code="0xc577" name="1em"/><!-- HANGUL SYLLABLE AEC -->
+      <map code="0xc578" name="1em"/><!-- HANGUL SYLLABLE AEK -->
+      <map code="0xc579" name="1em"/><!-- HANGUL SYLLABLE AET -->
+      <map code="0xc57a" name="1em"/><!-- HANGUL SYLLABLE AEP -->
+      <map code="0xc57b" name="1em"/><!-- HANGUL SYLLABLE AEH -->
+      <map code="0xc57c" name="1em"/><!-- HANGUL SYLLABLE YA -->
+      <map code="0xc57d" name="1em"/><!-- HANGUL SYLLABLE YAG -->
+      <map code="0xc57e" name="1em"/><!-- HANGUL SYLLABLE YAGG -->
+      <map code="0xc57f" name="1em"/><!-- HANGUL SYLLABLE YAGS -->
+      <map code="0xc580" name="1em"/><!-- HANGUL SYLLABLE YAN -->
+      <map code="0xc581" name="1em"/><!-- HANGUL SYLLABLE YANJ -->
+      <map code="0xc582" name="1em"/><!-- HANGUL SYLLABLE YANH -->
+      <map code="0xc583" name="1em"/><!-- HANGUL SYLLABLE YAD -->
+      <map code="0xc584" name="1em"/><!-- HANGUL SYLLABLE YAL -->
+      <map code="0xc585" name="1em"/><!-- HANGUL SYLLABLE YALG -->
+      <map code="0xc586" name="1em"/><!-- HANGUL SYLLABLE YALM -->
+      <map code="0xc587" name="1em"/><!-- HANGUL SYLLABLE YALB -->
+      <map code="0xc588" name="1em"/><!-- HANGUL SYLLABLE YALS -->
+      <map code="0xc589" name="1em"/><!-- HANGUL SYLLABLE YALT -->
+      <map code="0xc58a" name="1em"/><!-- HANGUL SYLLABLE YALP -->
+      <map code="0xc58b" name="1em"/><!-- HANGUL SYLLABLE YALH -->
+      <map code="0xc58c" name="1em"/><!-- HANGUL SYLLABLE YAM -->
+      <map code="0xc58d" name="1em"/><!-- HANGUL SYLLABLE YAB -->
+      <map code="0xc58e" name="1em"/><!-- HANGUL SYLLABLE YABS -->
+      <map code="0xc58f" name="1em"/><!-- HANGUL SYLLABLE YAS -->
+      <map code="0xc590" name="1em"/><!-- HANGUL SYLLABLE YASS -->
+      <map code="0xc591" name="1em"/><!-- HANGUL SYLLABLE YANG -->
+      <map code="0xc592" name="1em"/><!-- HANGUL SYLLABLE YAJ -->
+      <map code="0xc593" name="1em"/><!-- HANGUL SYLLABLE YAC -->
+      <map code="0xc594" name="1em"/><!-- HANGUL SYLLABLE YAK -->
+      <map code="0xc595" name="1em"/><!-- HANGUL SYLLABLE YAT -->
+      <map code="0xc596" name="1em"/><!-- HANGUL SYLLABLE YAP -->
+      <map code="0xc597" name="1em"/><!-- HANGUL SYLLABLE YAH -->
+      <map code="0xc598" name="1em"/><!-- HANGUL SYLLABLE YAE -->
+      <map code="0xc599" name="1em"/><!-- HANGUL SYLLABLE YAEG -->
+      <map code="0xc59a" name="1em"/><!-- HANGUL SYLLABLE YAEGG -->
+      <map code="0xc59b" name="1em"/><!-- HANGUL SYLLABLE YAEGS -->
+      <map code="0xc59c" name="1em"/><!-- HANGUL SYLLABLE YAEN -->
+      <map code="0xc59d" name="1em"/><!-- HANGUL SYLLABLE YAENJ -->
+      <map code="0xc59e" name="1em"/><!-- HANGUL SYLLABLE YAENH -->
+      <map code="0xc59f" name="1em"/><!-- HANGUL SYLLABLE YAED -->
+      <map code="0xc5a0" name="1em"/><!-- HANGUL SYLLABLE YAEL -->
+      <map code="0xc5a1" name="1em"/><!-- HANGUL SYLLABLE YAELG -->
+      <map code="0xc5a2" name="1em"/><!-- HANGUL SYLLABLE YAELM -->
+      <map code="0xc5a3" name="1em"/><!-- HANGUL SYLLABLE YAELB -->
+      <map code="0xc5a4" name="1em"/><!-- HANGUL SYLLABLE YAELS -->
+      <map code="0xc5a5" name="1em"/><!-- HANGUL SYLLABLE YAELT -->
+      <map code="0xc5a6" name="1em"/><!-- HANGUL SYLLABLE YAELP -->
+      <map code="0xc5a7" name="1em"/><!-- HANGUL SYLLABLE YAELH -->
+      <map code="0xc5a8" name="1em"/><!-- HANGUL SYLLABLE YAEM -->
+      <map code="0xc5a9" name="1em"/><!-- HANGUL SYLLABLE YAEB -->
+      <map code="0xc5aa" name="1em"/><!-- HANGUL SYLLABLE YAEBS -->
+      <map code="0xc5ab" name="1em"/><!-- HANGUL SYLLABLE YAES -->
+      <map code="0xc5ac" name="1em"/><!-- HANGUL SYLLABLE YAESS -->
+      <map code="0xc5ad" name="1em"/><!-- HANGUL SYLLABLE YAENG -->
+      <map code="0xc5ae" name="1em"/><!-- HANGUL SYLLABLE YAEJ -->
+      <map code="0xc5af" name="1em"/><!-- HANGUL SYLLABLE YAEC -->
+      <map code="0xc5b0" name="1em"/><!-- HANGUL SYLLABLE YAEK -->
+      <map code="0xc5b1" name="1em"/><!-- HANGUL SYLLABLE YAET -->
+      <map code="0xc5b2" name="1em"/><!-- HANGUL SYLLABLE YAEP -->
+      <map code="0xc5b3" name="1em"/><!-- HANGUL SYLLABLE YAEH -->
+      <map code="0xc5b4" name="1em"/><!-- HANGUL SYLLABLE EO -->
+      <map code="0xc5b5" name="1em"/><!-- HANGUL SYLLABLE EOG -->
+      <map code="0xc5b6" name="1em"/><!-- HANGUL SYLLABLE EOGG -->
+      <map code="0xc5b7" name="1em"/><!-- HANGUL SYLLABLE EOGS -->
+      <map code="0xc5b8" name="1em"/><!-- HANGUL SYLLABLE EON -->
+      <map code="0xc5b9" name="1em"/><!-- HANGUL SYLLABLE EONJ -->
+      <map code="0xc5ba" name="1em"/><!-- HANGUL SYLLABLE EONH -->
+      <map code="0xc5bb" name="1em"/><!-- HANGUL SYLLABLE EOD -->
+      <map code="0xc5bc" name="1em"/><!-- HANGUL SYLLABLE EOL -->
+      <map code="0xc5bd" name="1em"/><!-- HANGUL SYLLABLE EOLG -->
+      <map code="0xc5be" name="1em"/><!-- HANGUL SYLLABLE EOLM -->
+      <map code="0xc5bf" name="1em"/><!-- HANGUL SYLLABLE EOLB -->
+      <map code="0xc5c0" name="1em"/><!-- HANGUL SYLLABLE EOLS -->
+      <map code="0xc5c1" name="1em"/><!-- HANGUL SYLLABLE EOLT -->
+      <map code="0xc5c2" name="1em"/><!-- HANGUL SYLLABLE EOLP -->
+      <map code="0xc5c3" name="1em"/><!-- HANGUL SYLLABLE EOLH -->
+      <map code="0xc5c4" name="1em"/><!-- HANGUL SYLLABLE EOM -->
+      <map code="0xc5c5" name="1em"/><!-- HANGUL SYLLABLE EOB -->
+      <map code="0xc5c6" name="1em"/><!-- HANGUL SYLLABLE EOBS -->
+      <map code="0xc5c7" name="1em"/><!-- HANGUL SYLLABLE EOS -->
+      <map code="0xc5c8" name="1em"/><!-- HANGUL SYLLABLE EOSS -->
+      <map code="0xc5c9" name="1em"/><!-- HANGUL SYLLABLE EONG -->
+      <map code="0xc5ca" name="1em"/><!-- HANGUL SYLLABLE EOJ -->
+      <map code="0xc5cb" name="1em"/><!-- HANGUL SYLLABLE EOC -->
+      <map code="0xc5cc" name="1em"/><!-- HANGUL SYLLABLE EOK -->
+      <map code="0xc5cd" name="1em"/><!-- HANGUL SYLLABLE EOT -->
+      <map code="0xc5ce" name="1em"/><!-- HANGUL SYLLABLE EOP -->
+      <map code="0xc5cf" name="1em"/><!-- HANGUL SYLLABLE EOH -->
+      <map code="0xc5d0" name="1em"/><!-- HANGUL SYLLABLE E -->
+      <map code="0xc5d1" name="1em"/><!-- HANGUL SYLLABLE EG -->
+      <map code="0xc5d2" name="1em"/><!-- HANGUL SYLLABLE EGG -->
+      <map code="0xc5d3" name="1em"/><!-- HANGUL SYLLABLE EGS -->
+      <map code="0xc5d4" name="1em"/><!-- HANGUL SYLLABLE EN -->
+      <map code="0xc5d5" name="1em"/><!-- HANGUL SYLLABLE ENJ -->
+      <map code="0xc5d6" name="1em"/><!-- HANGUL SYLLABLE ENH -->
+      <map code="0xc5d7" name="1em"/><!-- HANGUL SYLLABLE ED -->
+      <map code="0xc5d8" name="1em"/><!-- HANGUL SYLLABLE EL -->
+      <map code="0xc5d9" name="1em"/><!-- HANGUL SYLLABLE ELG -->
+      <map code="0xc5da" name="1em"/><!-- HANGUL SYLLABLE ELM -->
+      <map code="0xc5db" name="1em"/><!-- HANGUL SYLLABLE ELB -->
+      <map code="0xc5dc" name="1em"/><!-- HANGUL SYLLABLE ELS -->
+      <map code="0xc5dd" name="1em"/><!-- HANGUL SYLLABLE ELT -->
+      <map code="0xc5de" name="1em"/><!-- HANGUL SYLLABLE ELP -->
+      <map code="0xc5df" name="1em"/><!-- HANGUL SYLLABLE ELH -->
+      <map code="0xc5e0" name="1em"/><!-- HANGUL SYLLABLE EM -->
+      <map code="0xc5e1" name="1em"/><!-- HANGUL SYLLABLE EB -->
+      <map code="0xc5e2" name="1em"/><!-- HANGUL SYLLABLE EBS -->
+      <map code="0xc5e3" name="1em"/><!-- HANGUL SYLLABLE ES -->
+      <map code="0xc5e4" name="1em"/><!-- HANGUL SYLLABLE ESS -->
+      <map code="0xc5e5" name="1em"/><!-- HANGUL SYLLABLE ENG -->
+      <map code="0xc5e6" name="1em"/><!-- HANGUL SYLLABLE EJ -->
+      <map code="0xc5e7" name="1em"/><!-- HANGUL SYLLABLE EC -->
+      <map code="0xc5e8" name="1em"/><!-- HANGUL SYLLABLE EK -->
+      <map code="0xc5e9" name="1em"/><!-- HANGUL SYLLABLE ET -->
+      <map code="0xc5ea" name="1em"/><!-- HANGUL SYLLABLE EP -->
+      <map code="0xc5eb" name="1em"/><!-- HANGUL SYLLABLE EH -->
+      <map code="0xc5ec" name="1em"/><!-- HANGUL SYLLABLE YEO -->
+      <map code="0xc5ed" name="1em"/><!-- HANGUL SYLLABLE YEOG -->
+      <map code="0xc5ee" name="1em"/><!-- HANGUL SYLLABLE YEOGG -->
+      <map code="0xc5ef" name="1em"/><!-- HANGUL SYLLABLE YEOGS -->
+      <map code="0xc5f0" name="1em"/><!-- HANGUL SYLLABLE YEON -->
+      <map code="0xc5f1" name="1em"/><!-- HANGUL SYLLABLE YEONJ -->
+      <map code="0xc5f2" name="1em"/><!-- HANGUL SYLLABLE YEONH -->
+      <map code="0xc5f3" name="1em"/><!-- HANGUL SYLLABLE YEOD -->
+      <map code="0xc5f4" name="1em"/><!-- HANGUL SYLLABLE YEOL -->
+      <map code="0xc5f5" name="1em"/><!-- HANGUL SYLLABLE YEOLG -->
+      <map code="0xc5f6" name="1em"/><!-- HANGUL SYLLABLE YEOLM -->
+      <map code="0xc5f7" name="1em"/><!-- HANGUL SYLLABLE YEOLB -->
+      <map code="0xc5f8" name="1em"/><!-- HANGUL SYLLABLE YEOLS -->
+      <map code="0xc5f9" name="1em"/><!-- HANGUL SYLLABLE YEOLT -->
+      <map code="0xc5fa" name="1em"/><!-- HANGUL SYLLABLE YEOLP -->
+      <map code="0xc5fb" name="1em"/><!-- HANGUL SYLLABLE YEOLH -->
+      <map code="0xc5fc" name="1em"/><!-- HANGUL SYLLABLE YEOM -->
+      <map code="0xc5fd" name="1em"/><!-- HANGUL SYLLABLE YEOB -->
+      <map code="0xc5fe" name="1em"/><!-- HANGUL SYLLABLE YEOBS -->
+      <map code="0xc5ff" name="1em"/><!-- HANGUL SYLLABLE YEOS -->
+      <map code="0xc600" name="1em"/><!-- HANGUL SYLLABLE YEOSS -->
+      <map code="0xc601" name="1em"/><!-- HANGUL SYLLABLE YEONG -->
+      <map code="0xc602" name="1em"/><!-- HANGUL SYLLABLE YEOJ -->
+      <map code="0xc603" name="1em"/><!-- HANGUL SYLLABLE YEOC -->
+      <map code="0xc604" name="1em"/><!-- HANGUL SYLLABLE YEOK -->
+      <map code="0xc605" name="1em"/><!-- HANGUL SYLLABLE YEOT -->
+      <map code="0xc606" name="1em"/><!-- HANGUL SYLLABLE YEOP -->
+      <map code="0xc607" name="1em"/><!-- HANGUL SYLLABLE YEOH -->
+      <map code="0xc608" name="1em"/><!-- HANGUL SYLLABLE YE -->
+      <map code="0xc609" name="1em"/><!-- HANGUL SYLLABLE YEG -->
+      <map code="0xc60a" name="1em"/><!-- HANGUL SYLLABLE YEGG -->
+      <map code="0xc60b" name="1em"/><!-- HANGUL SYLLABLE YEGS -->
+      <map code="0xc60c" name="1em"/><!-- HANGUL SYLLABLE YEN -->
+      <map code="0xc60d" name="1em"/><!-- HANGUL SYLLABLE YENJ -->
+      <map code="0xc60e" name="1em"/><!-- HANGUL SYLLABLE YENH -->
+      <map code="0xc60f" name="1em"/><!-- HANGUL SYLLABLE YED -->
+      <map code="0xc610" name="1em"/><!-- HANGUL SYLLABLE YEL -->
+      <map code="0xc611" name="1em"/><!-- HANGUL SYLLABLE YELG -->
+      <map code="0xc612" name="1em"/><!-- HANGUL SYLLABLE YELM -->
+      <map code="0xc613" name="1em"/><!-- HANGUL SYLLABLE YELB -->
+      <map code="0xc614" name="1em"/><!-- HANGUL SYLLABLE YELS -->
+      <map code="0xc615" name="1em"/><!-- HANGUL SYLLABLE YELT -->
+      <map code="0xc616" name="1em"/><!-- HANGUL SYLLABLE YELP -->
+      <map code="0xc617" name="1em"/><!-- HANGUL SYLLABLE YELH -->
+      <map code="0xc618" name="1em"/><!-- HANGUL SYLLABLE YEM -->
+      <map code="0xc619" name="1em"/><!-- HANGUL SYLLABLE YEB -->
+      <map code="0xc61a" name="1em"/><!-- HANGUL SYLLABLE YEBS -->
+      <map code="0xc61b" name="1em"/><!-- HANGUL SYLLABLE YES -->
+      <map code="0xc61c" name="1em"/><!-- HANGUL SYLLABLE YESS -->
+      <map code="0xc61d" name="1em"/><!-- HANGUL SYLLABLE YENG -->
+      <map code="0xc61e" name="1em"/><!-- HANGUL SYLLABLE YEJ -->
+      <map code="0xc61f" name="1em"/><!-- HANGUL SYLLABLE YEC -->
+      <map code="0xc620" name="1em"/><!-- HANGUL SYLLABLE YEK -->
+      <map code="0xc621" name="1em"/><!-- HANGUL SYLLABLE YET -->
+      <map code="0xc622" name="1em"/><!-- HANGUL SYLLABLE YEP -->
+      <map code="0xc623" name="1em"/><!-- HANGUL SYLLABLE YEH -->
+      <map code="0xc624" name="1em"/><!-- HANGUL SYLLABLE O -->
+      <map code="0xc625" name="1em"/><!-- HANGUL SYLLABLE OG -->
+      <map code="0xc626" name="1em"/><!-- HANGUL SYLLABLE OGG -->
+      <map code="0xc627" name="1em"/><!-- HANGUL SYLLABLE OGS -->
+      <map code="0xc628" name="1em"/><!-- HANGUL SYLLABLE ON -->
+      <map code="0xc629" name="1em"/><!-- HANGUL SYLLABLE ONJ -->
+      <map code="0xc62a" name="1em"/><!-- HANGUL SYLLABLE ONH -->
+      <map code="0xc62b" name="1em"/><!-- HANGUL SYLLABLE OD -->
+      <map code="0xc62c" name="1em"/><!-- HANGUL SYLLABLE OL -->
+      <map code="0xc62d" name="1em"/><!-- HANGUL SYLLABLE OLG -->
+      <map code="0xc62e" name="1em"/><!-- HANGUL SYLLABLE OLM -->
+      <map code="0xc62f" name="1em"/><!-- HANGUL SYLLABLE OLB -->
+      <map code="0xc630" name="1em"/><!-- HANGUL SYLLABLE OLS -->
+      <map code="0xc631" name="1em"/><!-- HANGUL SYLLABLE OLT -->
+      <map code="0xc632" name="1em"/><!-- HANGUL SYLLABLE OLP -->
+      <map code="0xc633" name="1em"/><!-- HANGUL SYLLABLE OLH -->
+      <map code="0xc634" name="1em"/><!-- HANGUL SYLLABLE OM -->
+      <map code="0xc635" name="1em"/><!-- HANGUL SYLLABLE OB -->
+      <map code="0xc636" name="1em"/><!-- HANGUL SYLLABLE OBS -->
+      <map code="0xc637" name="1em"/><!-- HANGUL SYLLABLE OS -->
+      <map code="0xc638" name="1em"/><!-- HANGUL SYLLABLE OSS -->
+      <map code="0xc639" name="1em"/><!-- HANGUL SYLLABLE ONG -->
+      <map code="0xc63a" name="1em"/><!-- HANGUL SYLLABLE OJ -->
+      <map code="0xc63b" name="1em"/><!-- HANGUL SYLLABLE OC -->
+      <map code="0xc63c" name="1em"/><!-- HANGUL SYLLABLE OK -->
+      <map code="0xc63d" name="1em"/><!-- HANGUL SYLLABLE OT -->
+      <map code="0xc63e" name="1em"/><!-- HANGUL SYLLABLE OP -->
+      <map code="0xc63f" name="1em"/><!-- HANGUL SYLLABLE OH -->
+      <map code="0xc640" name="1em"/><!-- HANGUL SYLLABLE WA -->
+      <map code="0xc641" name="1em"/><!-- HANGUL SYLLABLE WAG -->
+      <map code="0xc642" name="1em"/><!-- HANGUL SYLLABLE WAGG -->
+      <map code="0xc643" name="1em"/><!-- HANGUL SYLLABLE WAGS -->
+      <map code="0xc644" name="1em"/><!-- HANGUL SYLLABLE WAN -->
+      <map code="0xc645" name="1em"/><!-- HANGUL SYLLABLE WANJ -->
+      <map code="0xc646" name="1em"/><!-- HANGUL SYLLABLE WANH -->
+      <map code="0xc647" name="1em"/><!-- HANGUL SYLLABLE WAD -->
+      <map code="0xc648" name="1em"/><!-- HANGUL SYLLABLE WAL -->
+      <map code="0xc649" name="1em"/><!-- HANGUL SYLLABLE WALG -->
+      <map code="0xc64a" name="1em"/><!-- HANGUL SYLLABLE WALM -->
+      <map code="0xc64b" name="1em"/><!-- HANGUL SYLLABLE WALB -->
+      <map code="0xc64c" name="1em"/><!-- HANGUL SYLLABLE WALS -->
+      <map code="0xc64d" name="1em"/><!-- HANGUL SYLLABLE WALT -->
+      <map code="0xc64e" name="1em"/><!-- HANGUL SYLLABLE WALP -->
+      <map code="0xc64f" name="1em"/><!-- HANGUL SYLLABLE WALH -->
+      <map code="0xc650" name="1em"/><!-- HANGUL SYLLABLE WAM -->
+      <map code="0xc651" name="1em"/><!-- HANGUL SYLLABLE WAB -->
+      <map code="0xc652" name="1em"/><!-- HANGUL SYLLABLE WABS -->
+      <map code="0xc653" name="1em"/><!-- HANGUL SYLLABLE WAS -->
+      <map code="0xc654" name="1em"/><!-- HANGUL SYLLABLE WASS -->
+      <map code="0xc655" name="1em"/><!-- HANGUL SYLLABLE WANG -->
+      <map code="0xc656" name="1em"/><!-- HANGUL SYLLABLE WAJ -->
+      <map code="0xc657" name="1em"/><!-- HANGUL SYLLABLE WAC -->
+      <map code="0xc658" name="1em"/><!-- HANGUL SYLLABLE WAK -->
+      <map code="0xc659" name="1em"/><!-- HANGUL SYLLABLE WAT -->
+      <map code="0xc65a" name="1em"/><!-- HANGUL SYLLABLE WAP -->
+      <map code="0xc65b" name="1em"/><!-- HANGUL SYLLABLE WAH -->
+      <map code="0xc65c" name="1em"/><!-- HANGUL SYLLABLE WAE -->
+      <map code="0xc65d" name="1em"/><!-- HANGUL SYLLABLE WAEG -->
+      <map code="0xc65e" name="1em"/><!-- HANGUL SYLLABLE WAEGG -->
+      <map code="0xc65f" name="1em"/><!-- HANGUL SYLLABLE WAEGS -->
+      <map code="0xc660" name="1em"/><!-- HANGUL SYLLABLE WAEN -->
+      <map code="0xc661" name="1em"/><!-- HANGUL SYLLABLE WAENJ -->
+      <map code="0xc662" name="1em"/><!-- HANGUL SYLLABLE WAENH -->
+      <map code="0xc663" name="1em"/><!-- HANGUL SYLLABLE WAED -->
+      <map code="0xc664" name="1em"/><!-- HANGUL SYLLABLE WAEL -->
+      <map code="0xc665" name="1em"/><!-- HANGUL SYLLABLE WAELG -->
+      <map code="0xc666" name="1em"/><!-- HANGUL SYLLABLE WAELM -->
+      <map code="0xc667" name="1em"/><!-- HANGUL SYLLABLE WAELB -->
+      <map code="0xc668" name="1em"/><!-- HANGUL SYLLABLE WAELS -->
+      <map code="0xc669" name="1em"/><!-- HANGUL SYLLABLE WAELT -->
+      <map code="0xc66a" name="1em"/><!-- HANGUL SYLLABLE WAELP -->
+      <map code="0xc66b" name="1em"/><!-- HANGUL SYLLABLE WAELH -->
+      <map code="0xc66c" name="1em"/><!-- HANGUL SYLLABLE WAEM -->
+      <map code="0xc66d" name="1em"/><!-- HANGUL SYLLABLE WAEB -->
+      <map code="0xc66e" name="1em"/><!-- HANGUL SYLLABLE WAEBS -->
+      <map code="0xc66f" name="1em"/><!-- HANGUL SYLLABLE WAES -->
+      <map code="0xc670" name="1em"/><!-- HANGUL SYLLABLE WAESS -->
+      <map code="0xc671" name="1em"/><!-- HANGUL SYLLABLE WAENG -->
+      <map code="0xc672" name="1em"/><!-- HANGUL SYLLABLE WAEJ -->
+      <map code="0xc673" name="1em"/><!-- HANGUL SYLLABLE WAEC -->
+      <map code="0xc674" name="1em"/><!-- HANGUL SYLLABLE WAEK -->
+      <map code="0xc675" name="1em"/><!-- HANGUL SYLLABLE WAET -->
+      <map code="0xc676" name="1em"/><!-- HANGUL SYLLABLE WAEP -->
+      <map code="0xc677" name="1em"/><!-- HANGUL SYLLABLE WAEH -->
+      <map code="0xc678" name="1em"/><!-- HANGUL SYLLABLE OE -->
+      <map code="0xc679" name="1em"/><!-- HANGUL SYLLABLE OEG -->
+      <map code="0xc67a" name="1em"/><!-- HANGUL SYLLABLE OEGG -->
+      <map code="0xc67b" name="1em"/><!-- HANGUL SYLLABLE OEGS -->
+      <map code="0xc67c" name="1em"/><!-- HANGUL SYLLABLE OEN -->
+      <map code="0xc67d" name="1em"/><!-- HANGUL SYLLABLE OENJ -->
+      <map code="0xc67e" name="1em"/><!-- HANGUL SYLLABLE OENH -->
+      <map code="0xc67f" name="1em"/><!-- HANGUL SYLLABLE OED -->
+      <map code="0xc680" name="1em"/><!-- HANGUL SYLLABLE OEL -->
+      <map code="0xc681" name="1em"/><!-- HANGUL SYLLABLE OELG -->
+      <map code="0xc682" name="1em"/><!-- HANGUL SYLLABLE OELM -->
+      <map code="0xc683" name="1em"/><!-- HANGUL SYLLABLE OELB -->
+      <map code="0xc684" name="1em"/><!-- HANGUL SYLLABLE OELS -->
+      <map code="0xc685" name="1em"/><!-- HANGUL SYLLABLE OELT -->
+      <map code="0xc686" name="1em"/><!-- HANGUL SYLLABLE OELP -->
+      <map code="0xc687" name="1em"/><!-- HANGUL SYLLABLE OELH -->
+      <map code="0xc688" name="1em"/><!-- HANGUL SYLLABLE OEM -->
+      <map code="0xc689" name="1em"/><!-- HANGUL SYLLABLE OEB -->
+      <map code="0xc68a" name="1em"/><!-- HANGUL SYLLABLE OEBS -->
+      <map code="0xc68b" name="1em"/><!-- HANGUL SYLLABLE OES -->
+      <map code="0xc68c" name="1em"/><!-- HANGUL SYLLABLE OESS -->
+      <map code="0xc68d" name="1em"/><!-- HANGUL SYLLABLE OENG -->
+      <map code="0xc68e" name="1em"/><!-- HANGUL SYLLABLE OEJ -->
+      <map code="0xc68f" name="1em"/><!-- HANGUL SYLLABLE OEC -->
+      <map code="0xc690" name="1em"/><!-- HANGUL SYLLABLE OEK -->
+      <map code="0xc691" name="1em"/><!-- HANGUL SYLLABLE OET -->
+      <map code="0xc692" name="1em"/><!-- HANGUL SYLLABLE OEP -->
+      <map code="0xc693" name="1em"/><!-- HANGUL SYLLABLE OEH -->
+      <map code="0xc694" name="1em"/><!-- HANGUL SYLLABLE YO -->
+      <map code="0xc695" name="1em"/><!-- HANGUL SYLLABLE YOG -->
+      <map code="0xc696" name="1em"/><!-- HANGUL SYLLABLE YOGG -->
+      <map code="0xc697" name="1em"/><!-- HANGUL SYLLABLE YOGS -->
+      <map code="0xc698" name="1em"/><!-- HANGUL SYLLABLE YON -->
+      <map code="0xc699" name="1em"/><!-- HANGUL SYLLABLE YONJ -->
+      <map code="0xc69a" name="1em"/><!-- HANGUL SYLLABLE YONH -->
+      <map code="0xc69b" name="1em"/><!-- HANGUL SYLLABLE YOD -->
+      <map code="0xc69c" name="1em"/><!-- HANGUL SYLLABLE YOL -->
+      <map code="0xc69d" name="1em"/><!-- HANGUL SYLLABLE YOLG -->
+      <map code="0xc69e" name="1em"/><!-- HANGUL SYLLABLE YOLM -->
+      <map code="0xc69f" name="1em"/><!-- HANGUL SYLLABLE YOLB -->
+      <map code="0xc6a0" name="1em"/><!-- HANGUL SYLLABLE YOLS -->
+      <map code="0xc6a1" name="1em"/><!-- HANGUL SYLLABLE YOLT -->
+      <map code="0xc6a2" name="1em"/><!-- HANGUL SYLLABLE YOLP -->
+      <map code="0xc6a3" name="1em"/><!-- HANGUL SYLLABLE YOLH -->
+      <map code="0xc6a4" name="1em"/><!-- HANGUL SYLLABLE YOM -->
+      <map code="0xc6a5" name="1em"/><!-- HANGUL SYLLABLE YOB -->
+      <map code="0xc6a6" name="1em"/><!-- HANGUL SYLLABLE YOBS -->
+      <map code="0xc6a7" name="1em"/><!-- HANGUL SYLLABLE YOS -->
+      <map code="0xc6a8" name="1em"/><!-- HANGUL SYLLABLE YOSS -->
+      <map code="0xc6a9" name="1em"/><!-- HANGUL SYLLABLE YONG -->
+      <map code="0xc6aa" name="1em"/><!-- HANGUL SYLLABLE YOJ -->
+      <map code="0xc6ab" name="1em"/><!-- HANGUL SYLLABLE YOC -->
+      <map code="0xc6ac" name="1em"/><!-- HANGUL SYLLABLE YOK -->
+      <map code="0xc6ad" name="1em"/><!-- HANGUL SYLLABLE YOT -->
+      <map code="0xc6ae" name="1em"/><!-- HANGUL SYLLABLE YOP -->
+      <map code="0xc6af" name="1em"/><!-- HANGUL SYLLABLE YOH -->
+      <map code="0xc6b0" name="1em"/><!-- HANGUL SYLLABLE U -->
+      <map code="0xc6b1" name="1em"/><!-- HANGUL SYLLABLE UG -->
+      <map code="0xc6b2" name="1em"/><!-- HANGUL SYLLABLE UGG -->
+      <map code="0xc6b3" name="1em"/><!-- HANGUL SYLLABLE UGS -->
+      <map code="0xc6b4" name="1em"/><!-- HANGUL SYLLABLE UN -->
+      <map code="0xc6b5" name="1em"/><!-- HANGUL SYLLABLE UNJ -->
+      <map code="0xc6b6" name="1em"/><!-- HANGUL SYLLABLE UNH -->
+      <map code="0xc6b7" name="1em"/><!-- HANGUL SYLLABLE UD -->
+      <map code="0xc6b8" name="1em"/><!-- HANGUL SYLLABLE UL -->
+      <map code="0xc6b9" name="1em"/><!-- HANGUL SYLLABLE ULG -->
+      <map code="0xc6ba" name="1em"/><!-- HANGUL SYLLABLE ULM -->
+      <map code="0xc6bb" name="1em"/><!-- HANGUL SYLLABLE ULB -->
+      <map code="0xc6bc" name="1em"/><!-- HANGUL SYLLABLE ULS -->
+      <map code="0xc6bd" name="1em"/><!-- HANGUL SYLLABLE ULT -->
+      <map code="0xc6be" name="1em"/><!-- HANGUL SYLLABLE ULP -->
+      <map code="0xc6bf" name="1em"/><!-- HANGUL SYLLABLE ULH -->
+      <map code="0xc6c0" name="1em"/><!-- HANGUL SYLLABLE UM -->
+      <map code="0xc6c1" name="1em"/><!-- HANGUL SYLLABLE UB -->
+      <map code="0xc6c2" name="1em"/><!-- HANGUL SYLLABLE UBS -->
+      <map code="0xc6c3" name="1em"/><!-- HANGUL SYLLABLE US -->
+      <map code="0xc6c4" name="1em"/><!-- HANGUL SYLLABLE USS -->
+      <map code="0xc6c5" name="1em"/><!-- HANGUL SYLLABLE UNG -->
+      <map code="0xc6c6" name="1em"/><!-- HANGUL SYLLABLE UJ -->
+      <map code="0xc6c7" name="1em"/><!-- HANGUL SYLLABLE UC -->
+      <map code="0xc6c8" name="1em"/><!-- HANGUL SYLLABLE UK -->
+      <map code="0xc6c9" name="1em"/><!-- HANGUL SYLLABLE UT -->
+      <map code="0xc6ca" name="1em"/><!-- HANGUL SYLLABLE UP -->
+      <map code="0xc6cb" name="1em"/><!-- HANGUL SYLLABLE UH -->
+      <map code="0xc6cc" name="1em"/><!-- HANGUL SYLLABLE WEO -->
+      <map code="0xc6cd" name="1em"/><!-- HANGUL SYLLABLE WEOG -->
+      <map code="0xc6ce" name="1em"/><!-- HANGUL SYLLABLE WEOGG -->
+      <map code="0xc6cf" name="1em"/><!-- HANGUL SYLLABLE WEOGS -->
+      <map code="0xc6d0" name="1em"/><!-- HANGUL SYLLABLE WEON -->
+      <map code="0xc6d1" name="1em"/><!-- HANGUL SYLLABLE WEONJ -->
+      <map code="0xc6d2" name="1em"/><!-- HANGUL SYLLABLE WEONH -->
+      <map code="0xc6d3" name="1em"/><!-- HANGUL SYLLABLE WEOD -->
+      <map code="0xc6d4" name="1em"/><!-- HANGUL SYLLABLE WEOL -->
+      <map code="0xc6d5" name="1em"/><!-- HANGUL SYLLABLE WEOLG -->
+      <map code="0xc6d6" name="1em"/><!-- HANGUL SYLLABLE WEOLM -->
+      <map code="0xc6d7" name="1em"/><!-- HANGUL SYLLABLE WEOLB -->
+      <map code="0xc6d8" name="1em"/><!-- HANGUL SYLLABLE WEOLS -->
+      <map code="0xc6d9" name="1em"/><!-- HANGUL SYLLABLE WEOLT -->
+      <map code="0xc6da" name="1em"/><!-- HANGUL SYLLABLE WEOLP -->
+      <map code="0xc6db" name="1em"/><!-- HANGUL SYLLABLE WEOLH -->
+      <map code="0xc6dc" name="1em"/><!-- HANGUL SYLLABLE WEOM -->
+      <map code="0xc6dd" name="1em"/><!-- HANGUL SYLLABLE WEOB -->
+      <map code="0xc6de" name="1em"/><!-- HANGUL SYLLABLE WEOBS -->
+      <map code="0xc6df" name="1em"/><!-- HANGUL SYLLABLE WEOS -->
+      <map code="0xc6e0" name="1em"/><!-- HANGUL SYLLABLE WEOSS -->
+      <map code="0xc6e1" name="1em"/><!-- HANGUL SYLLABLE WEONG -->
+      <map code="0xc6e2" name="1em"/><!-- HANGUL SYLLABLE WEOJ -->
+      <map code="0xc6e3" name="1em"/><!-- HANGUL SYLLABLE WEOC -->
+      <map code="0xc6e4" name="1em"/><!-- HANGUL SYLLABLE WEOK -->
+      <map code="0xc6e5" name="1em"/><!-- HANGUL SYLLABLE WEOT -->
+      <map code="0xc6e6" name="1em"/><!-- HANGUL SYLLABLE WEOP -->
+      <map code="0xc6e7" name="1em"/><!-- HANGUL SYLLABLE WEOH -->
+      <map code="0xc6e8" name="1em"/><!-- HANGUL SYLLABLE WE -->
+      <map code="0xc6e9" name="1em"/><!-- HANGUL SYLLABLE WEG -->
+      <map code="0xc6ea" name="1em"/><!-- HANGUL SYLLABLE WEGG -->
+      <map code="0xc6eb" name="1em"/><!-- HANGUL SYLLABLE WEGS -->
+      <map code="0xc6ec" name="1em"/><!-- HANGUL SYLLABLE WEN -->
+      <map code="0xc6ed" name="1em"/><!-- HANGUL SYLLABLE WENJ -->
+      <map code="0xc6ee" name="1em"/><!-- HANGUL SYLLABLE WENH -->
+      <map code="0xc6ef" name="1em"/><!-- HANGUL SYLLABLE WED -->
+      <map code="0xc6f0" name="1em"/><!-- HANGUL SYLLABLE WEL -->
+      <map code="0xc6f1" name="1em"/><!-- HANGUL SYLLABLE WELG -->
+      <map code="0xc6f2" name="1em"/><!-- HANGUL SYLLABLE WELM -->
+      <map code="0xc6f3" name="1em"/><!-- HANGUL SYLLABLE WELB -->
+      <map code="0xc6f4" name="1em"/><!-- HANGUL SYLLABLE WELS -->
+      <map code="0xc6f5" name="1em"/><!-- HANGUL SYLLABLE WELT -->
+      <map code="0xc6f6" name="1em"/><!-- HANGUL SYLLABLE WELP -->
+      <map code="0xc6f7" name="1em"/><!-- HANGUL SYLLABLE WELH -->
+      <map code="0xc6f8" name="1em"/><!-- HANGUL SYLLABLE WEM -->
+      <map code="0xc6f9" name="1em"/><!-- HANGUL SYLLABLE WEB -->
+      <map code="0xc6fa" name="1em"/><!-- HANGUL SYLLABLE WEBS -->
+      <map code="0xc6fb" name="1em"/><!-- HANGUL SYLLABLE WES -->
+      <map code="0xc6fc" name="1em"/><!-- HANGUL SYLLABLE WESS -->
+      <map code="0xc6fd" name="1em"/><!-- HANGUL SYLLABLE WENG -->
+      <map code="0xc6fe" name="1em"/><!-- HANGUL SYLLABLE WEJ -->
+      <map code="0xc6ff" name="1em"/><!-- HANGUL SYLLABLE WEC -->
+      <map code="0xc700" name="1em"/><!-- HANGUL SYLLABLE WEK -->
+      <map code="0xc701" name="1em"/><!-- HANGUL SYLLABLE WET -->
+      <map code="0xc702" name="1em"/><!-- HANGUL SYLLABLE WEP -->
+      <map code="0xc703" name="1em"/><!-- HANGUL SYLLABLE WEH -->
+      <map code="0xc704" name="1em"/><!-- HANGUL SYLLABLE WI -->
+      <map code="0xc705" name="1em"/><!-- HANGUL SYLLABLE WIG -->
+      <map code="0xc706" name="1em"/><!-- HANGUL SYLLABLE WIGG -->
+      <map code="0xc707" name="1em"/><!-- HANGUL SYLLABLE WIGS -->
+      <map code="0xc708" name="1em"/><!-- HANGUL SYLLABLE WIN -->
+      <map code="0xc709" name="1em"/><!-- HANGUL SYLLABLE WINJ -->
+      <map code="0xc70a" name="1em"/><!-- HANGUL SYLLABLE WINH -->
+      <map code="0xc70b" name="1em"/><!-- HANGUL SYLLABLE WID -->
+      <map code="0xc70c" name="1em"/><!-- HANGUL SYLLABLE WIL -->
+      <map code="0xc70d" name="1em"/><!-- HANGUL SYLLABLE WILG -->
+      <map code="0xc70e" name="1em"/><!-- HANGUL SYLLABLE WILM -->
+      <map code="0xc70f" name="1em"/><!-- HANGUL SYLLABLE WILB -->
+      <map code="0xc710" name="1em"/><!-- HANGUL SYLLABLE WILS -->
+      <map code="0xc711" name="1em"/><!-- HANGUL SYLLABLE WILT -->
+      <map code="0xc712" name="1em"/><!-- HANGUL SYLLABLE WILP -->
+      <map code="0xc713" name="1em"/><!-- HANGUL SYLLABLE WILH -->
+      <map code="0xc714" name="1em"/><!-- HANGUL SYLLABLE WIM -->
+      <map code="0xc715" name="1em"/><!-- HANGUL SYLLABLE WIB -->
+      <map code="0xc716" name="1em"/><!-- HANGUL SYLLABLE WIBS -->
+      <map code="0xc717" name="1em"/><!-- HANGUL SYLLABLE WIS -->
+      <map code="0xc718" name="1em"/><!-- HANGUL SYLLABLE WISS -->
+      <map code="0xc719" name="1em"/><!-- HANGUL SYLLABLE WING -->
+      <map code="0xc71a" name="1em"/><!-- HANGUL SYLLABLE WIJ -->
+      <map code="0xc71b" name="1em"/><!-- HANGUL SYLLABLE WIC -->
+      <map code="0xc71c" name="1em"/><!-- HANGUL SYLLABLE WIK -->
+      <map code="0xc71d" name="1em"/><!-- HANGUL SYLLABLE WIT -->
+      <map code="0xc71e" name="1em"/><!-- HANGUL SYLLABLE WIP -->
+      <map code="0xc71f" name="1em"/><!-- HANGUL SYLLABLE WIH -->
+      <map code="0xc720" name="1em"/><!-- HANGUL SYLLABLE YU -->
+      <map code="0xc721" name="1em"/><!-- HANGUL SYLLABLE YUG -->
+      <map code="0xc722" name="1em"/><!-- HANGUL SYLLABLE YUGG -->
+      <map code="0xc723" name="1em"/><!-- HANGUL SYLLABLE YUGS -->
+      <map code="0xc724" name="1em"/><!-- HANGUL SYLLABLE YUN -->
+      <map code="0xc725" name="1em"/><!-- HANGUL SYLLABLE YUNJ -->
+      <map code="0xc726" name="1em"/><!-- HANGUL SYLLABLE YUNH -->
+      <map code="0xc727" name="1em"/><!-- HANGUL SYLLABLE YUD -->
+      <map code="0xc728" name="1em"/><!-- HANGUL SYLLABLE YUL -->
+      <map code="0xc729" name="1em"/><!-- HANGUL SYLLABLE YULG -->
+      <map code="0xc72a" name="1em"/><!-- HANGUL SYLLABLE YULM -->
+      <map code="0xc72b" name="1em"/><!-- HANGUL SYLLABLE YULB -->
+      <map code="0xc72c" name="1em"/><!-- HANGUL SYLLABLE YULS -->
+      <map code="0xc72d" name="1em"/><!-- HANGUL SYLLABLE YULT -->
+      <map code="0xc72e" name="1em"/><!-- HANGUL SYLLABLE YULP -->
+      <map code="0xc72f" name="1em"/><!-- HANGUL SYLLABLE YULH -->
+      <map code="0xc730" name="1em"/><!-- HANGUL SYLLABLE YUM -->
+      <map code="0xc731" name="1em"/><!-- HANGUL SYLLABLE YUB -->
+      <map code="0xc732" name="1em"/><!-- HANGUL SYLLABLE YUBS -->
+      <map code="0xc733" name="1em"/><!-- HANGUL SYLLABLE YUS -->
+      <map code="0xc734" name="1em"/><!-- HANGUL SYLLABLE YUSS -->
+      <map code="0xc735" name="1em"/><!-- HANGUL SYLLABLE YUNG -->
+      <map code="0xc736" name="1em"/><!-- HANGUL SYLLABLE YUJ -->
+      <map code="0xc737" name="1em"/><!-- HANGUL SYLLABLE YUC -->
+      <map code="0xc738" name="1em"/><!-- HANGUL SYLLABLE YUK -->
+      <map code="0xc739" name="1em"/><!-- HANGUL SYLLABLE YUT -->
+      <map code="0xc73a" name="1em"/><!-- HANGUL SYLLABLE YUP -->
+      <map code="0xc73b" name="1em"/><!-- HANGUL SYLLABLE YUH -->
+      <map code="0xc73c" name="1em"/><!-- HANGUL SYLLABLE EU -->
+      <map code="0xc73d" name="1em"/><!-- HANGUL SYLLABLE EUG -->
+      <map code="0xc73e" name="1em"/><!-- HANGUL SYLLABLE EUGG -->
+      <map code="0xc73f" name="1em"/><!-- HANGUL SYLLABLE EUGS -->
+      <map code="0xc740" name="1em"/><!-- HANGUL SYLLABLE EUN -->
+      <map code="0xc741" name="1em"/><!-- HANGUL SYLLABLE EUNJ -->
+      <map code="0xc742" name="1em"/><!-- HANGUL SYLLABLE EUNH -->
+      <map code="0xc743" name="1em"/><!-- HANGUL SYLLABLE EUD -->
+      <map code="0xc744" name="1em"/><!-- HANGUL SYLLABLE EUL -->
+      <map code="0xc745" name="1em"/><!-- HANGUL SYLLABLE EULG -->
+      <map code="0xc746" name="1em"/><!-- HANGUL SYLLABLE EULM -->
+      <map code="0xc747" name="1em"/><!-- HANGUL SYLLABLE EULB -->
+      <map code="0xc748" name="1em"/><!-- HANGUL SYLLABLE EULS -->
+      <map code="0xc749" name="1em"/><!-- HANGUL SYLLABLE EULT -->
+      <map code="0xc74a" name="1em"/><!-- HANGUL SYLLABLE EULP -->
+      <map code="0xc74b" name="1em"/><!-- HANGUL SYLLABLE EULH -->
+      <map code="0xc74c" name="1em"/><!-- HANGUL SYLLABLE EUM -->
+      <map code="0xc74d" name="1em"/><!-- HANGUL SYLLABLE EUB -->
+      <map code="0xc74e" name="1em"/><!-- HANGUL SYLLABLE EUBS -->
+      <map code="0xc74f" name="1em"/><!-- HANGUL SYLLABLE EUS -->
+      <map code="0xc750" name="1em"/><!-- HANGUL SYLLABLE EUSS -->
+      <map code="0xc751" name="1em"/><!-- HANGUL SYLLABLE EUNG -->
+      <map code="0xc752" name="1em"/><!-- HANGUL SYLLABLE EUJ -->
+      <map code="0xc753" name="1em"/><!-- HANGUL SYLLABLE EUC -->
+      <map code="0xc754" name="1em"/><!-- HANGUL SYLLABLE EUK -->
+      <map code="0xc755" name="1em"/><!-- HANGUL SYLLABLE EUT -->
+      <map code="0xc756" name="1em"/><!-- HANGUL SYLLABLE EUP -->
+      <map code="0xc757" name="1em"/><!-- HANGUL SYLLABLE EUH -->
+      <map code="0xc758" name="1em"/><!-- HANGUL SYLLABLE YI -->
+      <map code="0xc759" name="1em"/><!-- HANGUL SYLLABLE YIG -->
+      <map code="0xc75a" name="1em"/><!-- HANGUL SYLLABLE YIGG -->
+      <map code="0xc75b" name="1em"/><!-- HANGUL SYLLABLE YIGS -->
+      <map code="0xc75c" name="1em"/><!-- HANGUL SYLLABLE YIN -->
+      <map code="0xc75d" name="1em"/><!-- HANGUL SYLLABLE YINJ -->
+      <map code="0xc75e" name="1em"/><!-- HANGUL SYLLABLE YINH -->
+      <map code="0xc75f" name="1em"/><!-- HANGUL SYLLABLE YID -->
+      <map code="0xc760" name="1em"/><!-- HANGUL SYLLABLE YIL -->
+      <map code="0xc761" name="1em"/><!-- HANGUL SYLLABLE YILG -->
+      <map code="0xc762" name="1em"/><!-- HANGUL SYLLABLE YILM -->
+      <map code="0xc763" name="1em"/><!-- HANGUL SYLLABLE YILB -->
+      <map code="0xc764" name="1em"/><!-- HANGUL SYLLABLE YILS -->
+      <map code="0xc765" name="1em"/><!-- HANGUL SYLLABLE YILT -->
+      <map code="0xc766" name="1em"/><!-- HANGUL SYLLABLE YILP -->
+      <map code="0xc767" name="1em"/><!-- HANGUL SYLLABLE YILH -->
+      <map code="0xc768" name="1em"/><!-- HANGUL SYLLABLE YIM -->
+      <map code="0xc769" name="1em"/><!-- HANGUL SYLLABLE YIB -->
+      <map code="0xc76a" name="1em"/><!-- HANGUL SYLLABLE YIBS -->
+      <map code="0xc76b" name="1em"/><!-- HANGUL SYLLABLE YIS -->
+      <map code="0xc76c" name="1em"/><!-- HANGUL SYLLABLE YISS -->
+      <map code="0xc76d" name="1em"/><!-- HANGUL SYLLABLE YING -->
+      <map code="0xc76e" name="1em"/><!-- HANGUL SYLLABLE YIJ -->
+      <map code="0xc76f" name="1em"/><!-- HANGUL SYLLABLE YIC -->
+      <map code="0xc770" name="1em"/><!-- HANGUL SYLLABLE YIK -->
+      <map code="0xc771" name="1em"/><!-- HANGUL SYLLABLE YIT -->
+      <map code="0xc772" name="1em"/><!-- HANGUL SYLLABLE YIP -->
+      <map code="0xc773" name="1em"/><!-- HANGUL SYLLABLE YIH -->
+      <map code="0xc774" name="1em"/><!-- HANGUL SYLLABLE I -->
+      <map code="0xc775" name="1em"/><!-- HANGUL SYLLABLE IG -->
+      <map code="0xc776" name="1em"/><!-- HANGUL SYLLABLE IGG -->
+      <map code="0xc777" name="1em"/><!-- HANGUL SYLLABLE IGS -->
+      <map code="0xc778" name="1em"/><!-- HANGUL SYLLABLE IN -->
+      <map code="0xc779" name="1em"/><!-- HANGUL SYLLABLE INJ -->
+      <map code="0xc77a" name="1em"/><!-- HANGUL SYLLABLE INH -->
+      <map code="0xc77b" name="1em"/><!-- HANGUL SYLLABLE ID -->
+      <map code="0xc77c" name="1em"/><!-- HANGUL SYLLABLE IL -->
+      <map code="0xc77d" name="1em"/><!-- HANGUL SYLLABLE ILG -->
+      <map code="0xc77e" name="1em"/><!-- HANGUL SYLLABLE ILM -->
+      <map code="0xc77f" name="1em"/><!-- HANGUL SYLLABLE ILB -->
+      <map code="0xc780" name="1em"/><!-- HANGUL SYLLABLE ILS -->
+      <map code="0xc781" name="1em"/><!-- HANGUL SYLLABLE ILT -->
+      <map code="0xc782" name="1em"/><!-- HANGUL SYLLABLE ILP -->
+      <map code="0xc783" name="1em"/><!-- HANGUL SYLLABLE ILH -->
+      <map code="0xc784" name="1em"/><!-- HANGUL SYLLABLE IM -->
+      <map code="0xc785" name="1em"/><!-- HANGUL SYLLABLE IB -->
+      <map code="0xc786" name="1em"/><!-- HANGUL SYLLABLE IBS -->
+      <map code="0xc787" name="1em"/><!-- HANGUL SYLLABLE IS -->
+      <map code="0xc788" name="1em"/><!-- HANGUL SYLLABLE ISS -->
+      <map code="0xc789" name="1em"/><!-- HANGUL SYLLABLE ING -->
+      <map code="0xc78a" name="1em"/><!-- HANGUL SYLLABLE IJ -->
+      <map code="0xc78b" name="1em"/><!-- HANGUL SYLLABLE IC -->
+      <map code="0xc78c" name="1em"/><!-- HANGUL SYLLABLE IK -->
+      <map code="0xc78d" name="1em"/><!-- HANGUL SYLLABLE IT -->
+      <map code="0xc78e" name="1em"/><!-- HANGUL SYLLABLE IP -->
+      <map code="0xc78f" name="1em"/><!-- HANGUL SYLLABLE IH -->
+      <map code="0xc790" name="1em"/><!-- HANGUL SYLLABLE JA -->
+      <map code="0xc791" name="1em"/><!-- HANGUL SYLLABLE JAG -->
+      <map code="0xc792" name="1em"/><!-- HANGUL SYLLABLE JAGG -->
+      <map code="0xc793" name="1em"/><!-- HANGUL SYLLABLE JAGS -->
+      <map code="0xc794" name="1em"/><!-- HANGUL SYLLABLE JAN -->
+      <map code="0xc795" name="1em"/><!-- HANGUL SYLLABLE JANJ -->
+      <map code="0xc796" name="1em"/><!-- HANGUL SYLLABLE JANH -->
+      <map code="0xc797" name="1em"/><!-- HANGUL SYLLABLE JAD -->
+      <map code="0xc798" name="1em"/><!-- HANGUL SYLLABLE JAL -->
+      <map code="0xc799" name="1em"/><!-- HANGUL SYLLABLE JALG -->
+      <map code="0xc79a" name="1em"/><!-- HANGUL SYLLABLE JALM -->
+      <map code="0xc79b" name="1em"/><!-- HANGUL SYLLABLE JALB -->
+      <map code="0xc79c" name="1em"/><!-- HANGUL SYLLABLE JALS -->
+      <map code="0xc79d" name="1em"/><!-- HANGUL SYLLABLE JALT -->
+      <map code="0xc79e" name="1em"/><!-- HANGUL SYLLABLE JALP -->
+      <map code="0xc79f" name="1em"/><!-- HANGUL SYLLABLE JALH -->
+      <map code="0xc7a0" name="1em"/><!-- HANGUL SYLLABLE JAM -->
+      <map code="0xc7a1" name="1em"/><!-- HANGUL SYLLABLE JAB -->
+      <map code="0xc7a2" name="1em"/><!-- HANGUL SYLLABLE JABS -->
+      <map code="0xc7a3" name="1em"/><!-- HANGUL SYLLABLE JAS -->
+      <map code="0xc7a4" name="1em"/><!-- HANGUL SYLLABLE JASS -->
+      <map code="0xc7a5" name="1em"/><!-- HANGUL SYLLABLE JANG -->
+      <map code="0xc7a6" name="1em"/><!-- HANGUL SYLLABLE JAJ -->
+      <map code="0xc7a7" name="1em"/><!-- HANGUL SYLLABLE JAC -->
+      <map code="0xc7a8" name="1em"/><!-- HANGUL SYLLABLE JAK -->
+      <map code="0xc7a9" name="1em"/><!-- HANGUL SYLLABLE JAT -->
+      <map code="0xc7aa" name="1em"/><!-- HANGUL SYLLABLE JAP -->
+      <map code="0xc7ab" name="1em"/><!-- HANGUL SYLLABLE JAH -->
+      <map code="0xc7ac" name="1em"/><!-- HANGUL SYLLABLE JAE -->
+      <map code="0xc7ad" name="1em"/><!-- HANGUL SYLLABLE JAEG -->
+      <map code="0xc7ae" name="1em"/><!-- HANGUL SYLLABLE JAEGG -->
+      <map code="0xc7af" name="1em"/><!-- HANGUL SYLLABLE JAEGS -->
+      <map code="0xc7b0" name="1em"/><!-- HANGUL SYLLABLE JAEN -->
+      <map code="0xc7b1" name="1em"/><!-- HANGUL SYLLABLE JAENJ -->
+      <map code="0xc7b2" name="1em"/><!-- HANGUL SYLLABLE JAENH -->
+      <map code="0xc7b3" name="1em"/><!-- HANGUL SYLLABLE JAED -->
+      <map code="0xc7b4" name="1em"/><!-- HANGUL SYLLABLE JAEL -->
+      <map code="0xc7b5" name="1em"/><!-- HANGUL SYLLABLE JAELG -->
+      <map code="0xc7b6" name="1em"/><!-- HANGUL SYLLABLE JAELM -->
+      <map code="0xc7b7" name="1em"/><!-- HANGUL SYLLABLE JAELB -->
+      <map code="0xc7b8" name="1em"/><!-- HANGUL SYLLABLE JAELS -->
+      <map code="0xc7b9" name="1em"/><!-- HANGUL SYLLABLE JAELT -->
+      <map code="0xc7ba" name="1em"/><!-- HANGUL SYLLABLE JAELP -->
+      <map code="0xc7bb" name="1em"/><!-- HANGUL SYLLABLE JAELH -->
+      <map code="0xc7bc" name="1em"/><!-- HANGUL SYLLABLE JAEM -->
+      <map code="0xc7bd" name="1em"/><!-- HANGUL SYLLABLE JAEB -->
+      <map code="0xc7be" name="1em"/><!-- HANGUL SYLLABLE JAEBS -->
+      <map code="0xc7bf" name="1em"/><!-- HANGUL SYLLABLE JAES -->
+      <map code="0xc7c0" name="1em"/><!-- HANGUL SYLLABLE JAESS -->
+      <map code="0xc7c1" name="1em"/><!-- HANGUL SYLLABLE JAENG -->
+      <map code="0xc7c2" name="1em"/><!-- HANGUL SYLLABLE JAEJ -->
+      <map code="0xc7c3" name="1em"/><!-- HANGUL SYLLABLE JAEC -->
+      <map code="0xc7c4" name="1em"/><!-- HANGUL SYLLABLE JAEK -->
+      <map code="0xc7c5" name="1em"/><!-- HANGUL SYLLABLE JAET -->
+      <map code="0xc7c6" name="1em"/><!-- HANGUL SYLLABLE JAEP -->
+      <map code="0xc7c7" name="1em"/><!-- HANGUL SYLLABLE JAEH -->
+      <map code="0xc7c8" name="1em"/><!-- HANGUL SYLLABLE JYA -->
+      <map code="0xc7c9" name="1em"/><!-- HANGUL SYLLABLE JYAG -->
+      <map code="0xc7ca" name="1em"/><!-- HANGUL SYLLABLE JYAGG -->
+      <map code="0xc7cb" name="1em"/><!-- HANGUL SYLLABLE JYAGS -->
+      <map code="0xc7cc" name="1em"/><!-- HANGUL SYLLABLE JYAN -->
+      <map code="0xc7cd" name="1em"/><!-- HANGUL SYLLABLE JYANJ -->
+      <map code="0xc7ce" name="1em"/><!-- HANGUL SYLLABLE JYANH -->
+      <map code="0xc7cf" name="1em"/><!-- HANGUL SYLLABLE JYAD -->
+      <map code="0xc7d0" name="1em"/><!-- HANGUL SYLLABLE JYAL -->
+      <map code="0xc7d1" name="1em"/><!-- HANGUL SYLLABLE JYALG -->
+      <map code="0xc7d2" name="1em"/><!-- HANGUL SYLLABLE JYALM -->
+      <map code="0xc7d3" name="1em"/><!-- HANGUL SYLLABLE JYALB -->
+      <map code="0xc7d4" name="1em"/><!-- HANGUL SYLLABLE JYALS -->
+      <map code="0xc7d5" name="1em"/><!-- HANGUL SYLLABLE JYALT -->
+      <map code="0xc7d6" name="1em"/><!-- HANGUL SYLLABLE JYALP -->
+      <map code="0xc7d7" name="1em"/><!-- HANGUL SYLLABLE JYALH -->
+      <map code="0xc7d8" name="1em"/><!-- HANGUL SYLLABLE JYAM -->
+      <map code="0xc7d9" name="1em"/><!-- HANGUL SYLLABLE JYAB -->
+      <map code="0xc7da" name="1em"/><!-- HANGUL SYLLABLE JYABS -->
+      <map code="0xc7db" name="1em"/><!-- HANGUL SYLLABLE JYAS -->
+      <map code="0xc7dc" name="1em"/><!-- HANGUL SYLLABLE JYASS -->
+      <map code="0xc7dd" name="1em"/><!-- HANGUL SYLLABLE JYANG -->
+      <map code="0xc7de" name="1em"/><!-- HANGUL SYLLABLE JYAJ -->
+      <map code="0xc7df" name="1em"/><!-- HANGUL SYLLABLE JYAC -->
+      <map code="0xc7e0" name="1em"/><!-- HANGUL SYLLABLE JYAK -->
+      <map code="0xc7e1" name="1em"/><!-- HANGUL SYLLABLE JYAT -->
+      <map code="0xc7e2" name="1em"/><!-- HANGUL SYLLABLE JYAP -->
+      <map code="0xc7e3" name="1em"/><!-- HANGUL SYLLABLE JYAH -->
+      <map code="0xc7e4" name="1em"/><!-- HANGUL SYLLABLE JYAE -->
+      <map code="0xc7e5" name="1em"/><!-- HANGUL SYLLABLE JYAEG -->
+      <map code="0xc7e6" name="1em"/><!-- HANGUL SYLLABLE JYAEGG -->
+      <map code="0xc7e7" name="1em"/><!-- HANGUL SYLLABLE JYAEGS -->
+      <map code="0xc7e8" name="1em"/><!-- HANGUL SYLLABLE JYAEN -->
+      <map code="0xc7e9" name="1em"/><!-- HANGUL SYLLABLE JYAENJ -->
+      <map code="0xc7ea" name="1em"/><!-- HANGUL SYLLABLE JYAENH -->
+      <map code="0xc7eb" name="1em"/><!-- HANGUL SYLLABLE JYAED -->
+      <map code="0xc7ec" name="1em"/><!-- HANGUL SYLLABLE JYAEL -->
+      <map code="0xc7ed" name="1em"/><!-- HANGUL SYLLABLE JYAELG -->
+      <map code="0xc7ee" name="1em"/><!-- HANGUL SYLLABLE JYAELM -->
+      <map code="0xc7ef" name="1em"/><!-- HANGUL SYLLABLE JYAELB -->
+      <map code="0xc7f0" name="1em"/><!-- HANGUL SYLLABLE JYAELS -->
+      <map code="0xc7f1" name="1em"/><!-- HANGUL SYLLABLE JYAELT -->
+      <map code="0xc7f2" name="1em"/><!-- HANGUL SYLLABLE JYAELP -->
+      <map code="0xc7f3" name="1em"/><!-- HANGUL SYLLABLE JYAELH -->
+      <map code="0xc7f4" name="1em"/><!-- HANGUL SYLLABLE JYAEM -->
+      <map code="0xc7f5" name="1em"/><!-- HANGUL SYLLABLE JYAEB -->
+      <map code="0xc7f6" name="1em"/><!-- HANGUL SYLLABLE JYAEBS -->
+      <map code="0xc7f7" name="1em"/><!-- HANGUL SYLLABLE JYAES -->
+      <map code="0xc7f8" name="1em"/><!-- HANGUL SYLLABLE JYAESS -->
+      <map code="0xc7f9" name="1em"/><!-- HANGUL SYLLABLE JYAENG -->
+      <map code="0xc7fa" name="1em"/><!-- HANGUL SYLLABLE JYAEJ -->
+      <map code="0xc7fb" name="1em"/><!-- HANGUL SYLLABLE JYAEC -->
+      <map code="0xc7fc" name="1em"/><!-- HANGUL SYLLABLE JYAEK -->
+      <map code="0xc7fd" name="1em"/><!-- HANGUL SYLLABLE JYAET -->
+      <map code="0xc7fe" name="1em"/><!-- HANGUL SYLLABLE JYAEP -->
+      <map code="0xc7ff" name="1em"/><!-- HANGUL SYLLABLE JYAEH -->
+      <map code="0xc800" name="1em"/><!-- HANGUL SYLLABLE JEO -->
+      <map code="0xc801" name="1em"/><!-- HANGUL SYLLABLE JEOG -->
+      <map code="0xc802" name="1em"/><!-- HANGUL SYLLABLE JEOGG -->
+      <map code="0xc803" name="1em"/><!-- HANGUL SYLLABLE JEOGS -->
+      <map code="0xc804" name="1em"/><!-- HANGUL SYLLABLE JEON -->
+      <map code="0xc805" name="1em"/><!-- HANGUL SYLLABLE JEONJ -->
+      <map code="0xc806" name="1em"/><!-- HANGUL SYLLABLE JEONH -->
+      <map code="0xc807" name="1em"/><!-- HANGUL SYLLABLE JEOD -->
+      <map code="0xc808" name="1em"/><!-- HANGUL SYLLABLE JEOL -->
+      <map code="0xc809" name="1em"/><!-- HANGUL SYLLABLE JEOLG -->
+      <map code="0xc80a" name="1em"/><!-- HANGUL SYLLABLE JEOLM -->
+      <map code="0xc80b" name="1em"/><!-- HANGUL SYLLABLE JEOLB -->
+      <map code="0xc80c" name="1em"/><!-- HANGUL SYLLABLE JEOLS -->
+      <map code="0xc80d" name="1em"/><!-- HANGUL SYLLABLE JEOLT -->
+      <map code="0xc80e" name="1em"/><!-- HANGUL SYLLABLE JEOLP -->
+      <map code="0xc80f" name="1em"/><!-- HANGUL SYLLABLE JEOLH -->
+      <map code="0xc810" name="1em"/><!-- HANGUL SYLLABLE JEOM -->
+      <map code="0xc811" name="1em"/><!-- HANGUL SYLLABLE JEOB -->
+      <map code="0xc812" name="1em"/><!-- HANGUL SYLLABLE JEOBS -->
+      <map code="0xc813" name="1em"/><!-- HANGUL SYLLABLE JEOS -->
+      <map code="0xc814" name="1em"/><!-- HANGUL SYLLABLE JEOSS -->
+      <map code="0xc815" name="1em"/><!-- HANGUL SYLLABLE JEONG -->
+      <map code="0xc816" name="1em"/><!-- HANGUL SYLLABLE JEOJ -->
+      <map code="0xc817" name="1em"/><!-- HANGUL SYLLABLE JEOC -->
+      <map code="0xc818" name="1em"/><!-- HANGUL SYLLABLE JEOK -->
+      <map code="0xc819" name="1em"/><!-- HANGUL SYLLABLE JEOT -->
+      <map code="0xc81a" name="1em"/><!-- HANGUL SYLLABLE JEOP -->
+      <map code="0xc81b" name="1em"/><!-- HANGUL SYLLABLE JEOH -->
+      <map code="0xc81c" name="1em"/><!-- HANGUL SYLLABLE JE -->
+      <map code="0xc81d" name="1em"/><!-- HANGUL SYLLABLE JEG -->
+      <map code="0xc81e" name="1em"/><!-- HANGUL SYLLABLE JEGG -->
+      <map code="0xc81f" name="1em"/><!-- HANGUL SYLLABLE JEGS -->
+      <map code="0xc820" name="1em"/><!-- HANGUL SYLLABLE JEN -->
+      <map code="0xc821" name="1em"/><!-- HANGUL SYLLABLE JENJ -->
+      <map code="0xc822" name="1em"/><!-- HANGUL SYLLABLE JENH -->
+      <map code="0xc823" name="1em"/><!-- HANGUL SYLLABLE JED -->
+      <map code="0xc824" name="1em"/><!-- HANGUL SYLLABLE JEL -->
+      <map code="0xc825" name="1em"/><!-- HANGUL SYLLABLE JELG -->
+      <map code="0xc826" name="1em"/><!-- HANGUL SYLLABLE JELM -->
+      <map code="0xc827" name="1em"/><!-- HANGUL SYLLABLE JELB -->
+      <map code="0xc828" name="1em"/><!-- HANGUL SYLLABLE JELS -->
+      <map code="0xc829" name="1em"/><!-- HANGUL SYLLABLE JELT -->
+      <map code="0xc82a" name="1em"/><!-- HANGUL SYLLABLE JELP -->
+      <map code="0xc82b" name="1em"/><!-- HANGUL SYLLABLE JELH -->
+      <map code="0xc82c" name="1em"/><!-- HANGUL SYLLABLE JEM -->
+      <map code="0xc82d" name="1em"/><!-- HANGUL SYLLABLE JEB -->
+      <map code="0xc82e" name="1em"/><!-- HANGUL SYLLABLE JEBS -->
+      <map code="0xc82f" name="1em"/><!-- HANGUL SYLLABLE JES -->
+      <map code="0xc830" name="1em"/><!-- HANGUL SYLLABLE JESS -->
+      <map code="0xc831" name="1em"/><!-- HANGUL SYLLABLE JENG -->
+      <map code="0xc832" name="1em"/><!-- HANGUL SYLLABLE JEJ -->
+      <map code="0xc833" name="1em"/><!-- HANGUL SYLLABLE JEC -->
+      <map code="0xc834" name="1em"/><!-- HANGUL SYLLABLE JEK -->
+      <map code="0xc835" name="1em"/><!-- HANGUL SYLLABLE JET -->
+      <map code="0xc836" name="1em"/><!-- HANGUL SYLLABLE JEP -->
+      <map code="0xc837" name="1em"/><!-- HANGUL SYLLABLE JEH -->
+      <map code="0xc838" name="1em"/><!-- HANGUL SYLLABLE JYEO -->
+      <map code="0xc839" name="1em"/><!-- HANGUL SYLLABLE JYEOG -->
+      <map code="0xc83a" name="1em"/><!-- HANGUL SYLLABLE JYEOGG -->
+      <map code="0xc83b" name="1em"/><!-- HANGUL SYLLABLE JYEOGS -->
+      <map code="0xc83c" name="1em"/><!-- HANGUL SYLLABLE JYEON -->
+      <map code="0xc83d" name="1em"/><!-- HANGUL SYLLABLE JYEONJ -->
+      <map code="0xc83e" name="1em"/><!-- HANGUL SYLLABLE JYEONH -->
+      <map code="0xc83f" name="1em"/><!-- HANGUL SYLLABLE JYEOD -->
+      <map code="0xc840" name="1em"/><!-- HANGUL SYLLABLE JYEOL -->
+      <map code="0xc841" name="1em"/><!-- HANGUL SYLLABLE JYEOLG -->
+      <map code="0xc842" name="1em"/><!-- HANGUL SYLLABLE JYEOLM -->
+      <map code="0xc843" name="1em"/><!-- HANGUL SYLLABLE JYEOLB -->
+      <map code="0xc844" name="1em"/><!-- HANGUL SYLLABLE JYEOLS -->
+      <map code="0xc845" name="1em"/><!-- HANGUL SYLLABLE JYEOLT -->
+      <map code="0xc846" name="1em"/><!-- HANGUL SYLLABLE JYEOLP -->
+      <map code="0xc847" name="1em"/><!-- HANGUL SYLLABLE JYEOLH -->
+      <map code="0xc848" name="1em"/><!-- HANGUL SYLLABLE JYEOM -->
+      <map code="0xc849" name="1em"/><!-- HANGUL SYLLABLE JYEOB -->
+      <map code="0xc84a" name="1em"/><!-- HANGUL SYLLABLE JYEOBS -->
+      <map code="0xc84b" name="1em"/><!-- HANGUL SYLLABLE JYEOS -->
+      <map code="0xc84c" name="1em"/><!-- HANGUL SYLLABLE JYEOSS -->
+      <map code="0xc84d" name="1em"/><!-- HANGUL SYLLABLE JYEONG -->
+      <map code="0xc84e" name="1em"/><!-- HANGUL SYLLABLE JYEOJ -->
+      <map code="0xc84f" name="1em"/><!-- HANGUL SYLLABLE JYEOC -->
+      <map code="0xc850" name="1em"/><!-- HANGUL SYLLABLE JYEOK -->
+      <map code="0xc851" name="1em"/><!-- HANGUL SYLLABLE JYEOT -->
+      <map code="0xc852" name="1em"/><!-- HANGUL SYLLABLE JYEOP -->
+      <map code="0xc853" name="1em"/><!-- HANGUL SYLLABLE JYEOH -->
+      <map code="0xc854" name="1em"/><!-- HANGUL SYLLABLE JYE -->
+      <map code="0xc855" name="1em"/><!-- HANGUL SYLLABLE JYEG -->
+      <map code="0xc856" name="1em"/><!-- HANGUL SYLLABLE JYEGG -->
+      <map code="0xc857" name="1em"/><!-- HANGUL SYLLABLE JYEGS -->
+      <map code="0xc858" name="1em"/><!-- HANGUL SYLLABLE JYEN -->
+      <map code="0xc859" name="1em"/><!-- HANGUL SYLLABLE JYENJ -->
+      <map code="0xc85a" name="1em"/><!-- HANGUL SYLLABLE JYENH -->
+      <map code="0xc85b" name="1em"/><!-- HANGUL SYLLABLE JYED -->
+      <map code="0xc85c" name="1em"/><!-- HANGUL SYLLABLE JYEL -->
+      <map code="0xc85d" name="1em"/><!-- HANGUL SYLLABLE JYELG -->
+      <map code="0xc85e" name="1em"/><!-- HANGUL SYLLABLE JYELM -->
+      <map code="0xc85f" name="1em"/><!-- HANGUL SYLLABLE JYELB -->
+      <map code="0xc860" name="1em"/><!-- HANGUL SYLLABLE JYELS -->
+      <map code="0xc861" name="1em"/><!-- HANGUL SYLLABLE JYELT -->
+      <map code="0xc862" name="1em"/><!-- HANGUL SYLLABLE JYELP -->
+      <map code="0xc863" name="1em"/><!-- HANGUL SYLLABLE JYELH -->
+      <map code="0xc864" name="1em"/><!-- HANGUL SYLLABLE JYEM -->
+      <map code="0xc865" name="1em"/><!-- HANGUL SYLLABLE JYEB -->
+      <map code="0xc866" name="1em"/><!-- HANGUL SYLLABLE JYEBS -->
+      <map code="0xc867" name="1em"/><!-- HANGUL SYLLABLE JYES -->
+      <map code="0xc868" name="1em"/><!-- HANGUL SYLLABLE JYESS -->
+      <map code="0xc869" name="1em"/><!-- HANGUL SYLLABLE JYENG -->
+      <map code="0xc86a" name="1em"/><!-- HANGUL SYLLABLE JYEJ -->
+      <map code="0xc86b" name="1em"/><!-- HANGUL SYLLABLE JYEC -->
+      <map code="0xc86c" name="1em"/><!-- HANGUL SYLLABLE JYEK -->
+      <map code="0xc86d" name="1em"/><!-- HANGUL SYLLABLE JYET -->
+      <map code="0xc86e" name="1em"/><!-- HANGUL SYLLABLE JYEP -->
+      <map code="0xc86f" name="1em"/><!-- HANGUL SYLLABLE JYEH -->
+      <map code="0xc870" name="1em"/><!-- HANGUL SYLLABLE JO -->
+      <map code="0xc871" name="1em"/><!-- HANGUL SYLLABLE JOG -->
+      <map code="0xc872" name="1em"/><!-- HANGUL SYLLABLE JOGG -->
+      <map code="0xc873" name="1em"/><!-- HANGUL SYLLABLE JOGS -->
+      <map code="0xc874" name="1em"/><!-- HANGUL SYLLABLE JON -->
+      <map code="0xc875" name="1em"/><!-- HANGUL SYLLABLE JONJ -->
+      <map code="0xc876" name="1em"/><!-- HANGUL SYLLABLE JONH -->
+      <map code="0xc877" name="1em"/><!-- HANGUL SYLLABLE JOD -->
+      <map code="0xc878" name="1em"/><!-- HANGUL SYLLABLE JOL -->
+      <map code="0xc879" name="1em"/><!-- HANGUL SYLLABLE JOLG -->
+      <map code="0xc87a" name="1em"/><!-- HANGUL SYLLABLE JOLM -->
+      <map code="0xc87b" name="1em"/><!-- HANGUL SYLLABLE JOLB -->
+      <map code="0xc87c" name="1em"/><!-- HANGUL SYLLABLE JOLS -->
+      <map code="0xc87d" name="1em"/><!-- HANGUL SYLLABLE JOLT -->
+      <map code="0xc87e" name="1em"/><!-- HANGUL SYLLABLE JOLP -->
+      <map code="0xc87f" name="1em"/><!-- HANGUL SYLLABLE JOLH -->
+      <map code="0xc880" name="1em"/><!-- HANGUL SYLLABLE JOM -->
+      <map code="0xc881" name="1em"/><!-- HANGUL SYLLABLE JOB -->
+      <map code="0xc882" name="1em"/><!-- HANGUL SYLLABLE JOBS -->
+      <map code="0xc883" name="1em"/><!-- HANGUL SYLLABLE JOS -->
+      <map code="0xc884" name="1em"/><!-- HANGUL SYLLABLE JOSS -->
+      <map code="0xc885" name="1em"/><!-- HANGUL SYLLABLE JONG -->
+      <map code="0xc886" name="1em"/><!-- HANGUL SYLLABLE JOJ -->
+      <map code="0xc887" name="1em"/><!-- HANGUL SYLLABLE JOC -->
+      <map code="0xc888" name="1em"/><!-- HANGUL SYLLABLE JOK -->
+      <map code="0xc889" name="1em"/><!-- HANGUL SYLLABLE JOT -->
+      <map code="0xc88a" name="1em"/><!-- HANGUL SYLLABLE JOP -->
+      <map code="0xc88b" name="1em"/><!-- HANGUL SYLLABLE JOH -->
+      <map code="0xc88c" name="1em"/><!-- HANGUL SYLLABLE JWA -->
+      <map code="0xc88d" name="1em"/><!-- HANGUL SYLLABLE JWAG -->
+      <map code="0xc88e" name="1em"/><!-- HANGUL SYLLABLE JWAGG -->
+      <map code="0xc88f" name="1em"/><!-- HANGUL SYLLABLE JWAGS -->
+      <map code="0xc890" name="1em"/><!-- HANGUL SYLLABLE JWAN -->
+      <map code="0xc891" name="1em"/><!-- HANGUL SYLLABLE JWANJ -->
+      <map code="0xc892" name="1em"/><!-- HANGUL SYLLABLE JWANH -->
+      <map code="0xc893" name="1em"/><!-- HANGUL SYLLABLE JWAD -->
+      <map code="0xc894" name="1em"/><!-- HANGUL SYLLABLE JWAL -->
+      <map code="0xc895" name="1em"/><!-- HANGUL SYLLABLE JWALG -->
+      <map code="0xc896" name="1em"/><!-- HANGUL SYLLABLE JWALM -->
+      <map code="0xc897" name="1em"/><!-- HANGUL SYLLABLE JWALB -->
+      <map code="0xc898" name="1em"/><!-- HANGUL SYLLABLE JWALS -->
+      <map code="0xc899" name="1em"/><!-- HANGUL SYLLABLE JWALT -->
+      <map code="0xc89a" name="1em"/><!-- HANGUL SYLLABLE JWALP -->
+      <map code="0xc89b" name="1em"/><!-- HANGUL SYLLABLE JWALH -->
+      <map code="0xc89c" name="1em"/><!-- HANGUL SYLLABLE JWAM -->
+      <map code="0xc89d" name="1em"/><!-- HANGUL SYLLABLE JWAB -->
+      <map code="0xc89e" name="1em"/><!-- HANGUL SYLLABLE JWABS -->
+      <map code="0xc89f" name="1em"/><!-- HANGUL SYLLABLE JWAS -->
+      <map code="0xc8a0" name="1em"/><!-- HANGUL SYLLABLE JWASS -->
+      <map code="0xc8a1" name="1em"/><!-- HANGUL SYLLABLE JWANG -->
+      <map code="0xc8a2" name="1em"/><!-- HANGUL SYLLABLE JWAJ -->
+      <map code="0xc8a3" name="1em"/><!-- HANGUL SYLLABLE JWAC -->
+      <map code="0xc8a4" name="1em"/><!-- HANGUL SYLLABLE JWAK -->
+      <map code="0xc8a5" name="1em"/><!-- HANGUL SYLLABLE JWAT -->
+      <map code="0xc8a6" name="1em"/><!-- HANGUL SYLLABLE JWAP -->
+      <map code="0xc8a7" name="1em"/><!-- HANGUL SYLLABLE JWAH -->
+      <map code="0xc8a8" name="1em"/><!-- HANGUL SYLLABLE JWAE -->
+      <map code="0xc8a9" name="1em"/><!-- HANGUL SYLLABLE JWAEG -->
+      <map code="0xc8aa" name="1em"/><!-- HANGUL SYLLABLE JWAEGG -->
+      <map code="0xc8ab" name="1em"/><!-- HANGUL SYLLABLE JWAEGS -->
+      <map code="0xc8ac" name="1em"/><!-- HANGUL SYLLABLE JWAEN -->
+      <map code="0xc8ad" name="1em"/><!-- HANGUL SYLLABLE JWAENJ -->
+      <map code="0xc8ae" name="1em"/><!-- HANGUL SYLLABLE JWAENH -->
+      <map code="0xc8af" name="1em"/><!-- HANGUL SYLLABLE JWAED -->
+      <map code="0xc8b0" name="1em"/><!-- HANGUL SYLLABLE JWAEL -->
+      <map code="0xc8b1" name="1em"/><!-- HANGUL SYLLABLE JWAELG -->
+      <map code="0xc8b2" name="1em"/><!-- HANGUL SYLLABLE JWAELM -->
+      <map code="0xc8b3" name="1em"/><!-- HANGUL SYLLABLE JWAELB -->
+      <map code="0xc8b4" name="1em"/><!-- HANGUL SYLLABLE JWAELS -->
+      <map code="0xc8b5" name="1em"/><!-- HANGUL SYLLABLE JWAELT -->
+      <map code="0xc8b6" name="1em"/><!-- HANGUL SYLLABLE JWAELP -->
+      <map code="0xc8b7" name="1em"/><!-- HANGUL SYLLABLE JWAELH -->
+      <map code="0xc8b8" name="1em"/><!-- HANGUL SYLLABLE JWAEM -->
+      <map code="0xc8b9" name="1em"/><!-- HANGUL SYLLABLE JWAEB -->
+      <map code="0xc8ba" name="1em"/><!-- HANGUL SYLLABLE JWAEBS -->
+      <map code="0xc8bb" name="1em"/><!-- HANGUL SYLLABLE JWAES -->
+      <map code="0xc8bc" name="1em"/><!-- HANGUL SYLLABLE JWAESS -->
+      <map code="0xc8bd" name="1em"/><!-- HANGUL SYLLABLE JWAENG -->
+      <map code="0xc8be" name="1em"/><!-- HANGUL SYLLABLE JWAEJ -->
+      <map code="0xc8bf" name="1em"/><!-- HANGUL SYLLABLE JWAEC -->
+      <map code="0xc8c0" name="1em"/><!-- HANGUL SYLLABLE JWAEK -->
+      <map code="0xc8c1" name="1em"/><!-- HANGUL SYLLABLE JWAET -->
+      <map code="0xc8c2" name="1em"/><!-- HANGUL SYLLABLE JWAEP -->
+      <map code="0xc8c3" name="1em"/><!-- HANGUL SYLLABLE JWAEH -->
+      <map code="0xc8c4" name="1em"/><!-- HANGUL SYLLABLE JOE -->
+      <map code="0xc8c5" name="1em"/><!-- HANGUL SYLLABLE JOEG -->
+      <map code="0xc8c6" name="1em"/><!-- HANGUL SYLLABLE JOEGG -->
+      <map code="0xc8c7" name="1em"/><!-- HANGUL SYLLABLE JOEGS -->
+      <map code="0xc8c8" name="1em"/><!-- HANGUL SYLLABLE JOEN -->
+      <map code="0xc8c9" name="1em"/><!-- HANGUL SYLLABLE JOENJ -->
+      <map code="0xc8ca" name="1em"/><!-- HANGUL SYLLABLE JOENH -->
+      <map code="0xc8cb" name="1em"/><!-- HANGUL SYLLABLE JOED -->
+      <map code="0xc8cc" name="1em"/><!-- HANGUL SYLLABLE JOEL -->
+      <map code="0xc8cd" name="1em"/><!-- HANGUL SYLLABLE JOELG -->
+      <map code="0xc8ce" name="1em"/><!-- HANGUL SYLLABLE JOELM -->
+      <map code="0xc8cf" name="1em"/><!-- HANGUL SYLLABLE JOELB -->
+      <map code="0xc8d0" name="1em"/><!-- HANGUL SYLLABLE JOELS -->
+      <map code="0xc8d1" name="1em"/><!-- HANGUL SYLLABLE JOELT -->
+      <map code="0xc8d2" name="1em"/><!-- HANGUL SYLLABLE JOELP -->
+      <map code="0xc8d3" name="1em"/><!-- HANGUL SYLLABLE JOELH -->
+      <map code="0xc8d4" name="1em"/><!-- HANGUL SYLLABLE JOEM -->
+      <map code="0xc8d5" name="1em"/><!-- HANGUL SYLLABLE JOEB -->
+      <map code="0xc8d6" name="1em"/><!-- HANGUL SYLLABLE JOEBS -->
+      <map code="0xc8d7" name="1em"/><!-- HANGUL SYLLABLE JOES -->
+      <map code="0xc8d8" name="1em"/><!-- HANGUL SYLLABLE JOESS -->
+      <map code="0xc8d9" name="1em"/><!-- HANGUL SYLLABLE JOENG -->
+      <map code="0xc8da" name="1em"/><!-- HANGUL SYLLABLE JOEJ -->
+      <map code="0xc8db" name="1em"/><!-- HANGUL SYLLABLE JOEC -->
+      <map code="0xc8dc" name="1em"/><!-- HANGUL SYLLABLE JOEK -->
+      <map code="0xc8dd" name="1em"/><!-- HANGUL SYLLABLE JOET -->
+      <map code="0xc8de" name="1em"/><!-- HANGUL SYLLABLE JOEP -->
+      <map code="0xc8df" name="1em"/><!-- HANGUL SYLLABLE JOEH -->
+      <map code="0xc8e0" name="1em"/><!-- HANGUL SYLLABLE JYO -->
+      <map code="0xc8e1" name="1em"/><!-- HANGUL SYLLABLE JYOG -->
+      <map code="0xc8e2" name="1em"/><!-- HANGUL SYLLABLE JYOGG -->
+      <map code="0xc8e3" name="1em"/><!-- HANGUL SYLLABLE JYOGS -->
+      <map code="0xc8e4" name="1em"/><!-- HANGUL SYLLABLE JYON -->
+      <map code="0xc8e5" name="1em"/><!-- HANGUL SYLLABLE JYONJ -->
+      <map code="0xc8e6" name="1em"/><!-- HANGUL SYLLABLE JYONH -->
+      <map code="0xc8e7" name="1em"/><!-- HANGUL SYLLABLE JYOD -->
+      <map code="0xc8e8" name="1em"/><!-- HANGUL SYLLABLE JYOL -->
+      <map code="0xc8e9" name="1em"/><!-- HANGUL SYLLABLE JYOLG -->
+      <map code="0xc8ea" name="1em"/><!-- HANGUL SYLLABLE JYOLM -->
+      <map code="0xc8eb" name="1em"/><!-- HANGUL SYLLABLE JYOLB -->
+      <map code="0xc8ec" name="1em"/><!-- HANGUL SYLLABLE JYOLS -->
+      <map code="0xc8ed" name="1em"/><!-- HANGUL SYLLABLE JYOLT -->
+      <map code="0xc8ee" name="1em"/><!-- HANGUL SYLLABLE JYOLP -->
+      <map code="0xc8ef" name="1em"/><!-- HANGUL SYLLABLE JYOLH -->
+      <map code="0xc8f0" name="1em"/><!-- HANGUL SYLLABLE JYOM -->
+      <map code="0xc8f1" name="1em"/><!-- HANGUL SYLLABLE JYOB -->
+      <map code="0xc8f2" name="1em"/><!-- HANGUL SYLLABLE JYOBS -->
+      <map code="0xc8f3" name="1em"/><!-- HANGUL SYLLABLE JYOS -->
+      <map code="0xc8f4" name="1em"/><!-- HANGUL SYLLABLE JYOSS -->
+      <map code="0xc8f5" name="1em"/><!-- HANGUL SYLLABLE JYONG -->
+      <map code="0xc8f6" name="1em"/><!-- HANGUL SYLLABLE JYOJ -->
+      <map code="0xc8f7" name="1em"/><!-- HANGUL SYLLABLE JYOC -->
+      <map code="0xc8f8" name="1em"/><!-- HANGUL SYLLABLE JYOK -->
+      <map code="0xc8f9" name="1em"/><!-- HANGUL SYLLABLE JYOT -->
+      <map code="0xc8fa" name="1em"/><!-- HANGUL SYLLABLE JYOP -->
+      <map code="0xc8fb" name="1em"/><!-- HANGUL SYLLABLE JYOH -->
+      <map code="0xc8fc" name="1em"/><!-- HANGUL SYLLABLE JU -->
+      <map code="0xc8fd" name="1em"/><!-- HANGUL SYLLABLE JUG -->
+      <map code="0xc8fe" name="1em"/><!-- HANGUL SYLLABLE JUGG -->
+      <map code="0xc8ff" name="1em"/><!-- HANGUL SYLLABLE JUGS -->
+      <map code="0xc900" name="1em"/><!-- HANGUL SYLLABLE JUN -->
+      <map code="0xc901" name="1em"/><!-- HANGUL SYLLABLE JUNJ -->
+      <map code="0xc902" name="1em"/><!-- HANGUL SYLLABLE JUNH -->
+      <map code="0xc903" name="1em"/><!-- HANGUL SYLLABLE JUD -->
+      <map code="0xc904" name="1em"/><!-- HANGUL SYLLABLE JUL -->
+      <map code="0xc905" name="1em"/><!-- HANGUL SYLLABLE JULG -->
+      <map code="0xc906" name="1em"/><!-- HANGUL SYLLABLE JULM -->
+      <map code="0xc907" name="1em"/><!-- HANGUL SYLLABLE JULB -->
+      <map code="0xc908" name="1em"/><!-- HANGUL SYLLABLE JULS -->
+      <map code="0xc909" name="1em"/><!-- HANGUL SYLLABLE JULT -->
+      <map code="0xc90a" name="1em"/><!-- HANGUL SYLLABLE JULP -->
+      <map code="0xc90b" name="1em"/><!-- HANGUL SYLLABLE JULH -->
+      <map code="0xc90c" name="1em"/><!-- HANGUL SYLLABLE JUM -->
+      <map code="0xc90d" name="1em"/><!-- HANGUL SYLLABLE JUB -->
+      <map code="0xc90e" name="1em"/><!-- HANGUL SYLLABLE JUBS -->
+      <map code="0xc90f" name="1em"/><!-- HANGUL SYLLABLE JUS -->
+      <map code="0xc910" name="1em"/><!-- HANGUL SYLLABLE JUSS -->
+      <map code="0xc911" name="1em"/><!-- HANGUL SYLLABLE JUNG -->
+      <map code="0xc912" name="1em"/><!-- HANGUL SYLLABLE JUJ -->
+      <map code="0xc913" name="1em"/><!-- HANGUL SYLLABLE JUC -->
+      <map code="0xc914" name="1em"/><!-- HANGUL SYLLABLE JUK -->
+      <map code="0xc915" name="1em"/><!-- HANGUL SYLLABLE JUT -->
+      <map code="0xc916" name="1em"/><!-- HANGUL SYLLABLE JUP -->
+      <map code="0xc917" name="1em"/><!-- HANGUL SYLLABLE JUH -->
+      <map code="0xc918" name="1em"/><!-- HANGUL SYLLABLE JWEO -->
+      <map code="0xc919" name="1em"/><!-- HANGUL SYLLABLE JWEOG -->
+      <map code="0xc91a" name="1em"/><!-- HANGUL SYLLABLE JWEOGG -->
+      <map code="0xc91b" name="1em"/><!-- HANGUL SYLLABLE JWEOGS -->
+      <map code="0xc91c" name="1em"/><!-- HANGUL SYLLABLE JWEON -->
+      <map code="0xc91d" name="1em"/><!-- HANGUL SYLLABLE JWEONJ -->
+      <map code="0xc91e" name="1em"/><!-- HANGUL SYLLABLE JWEONH -->
+      <map code="0xc91f" name="1em"/><!-- HANGUL SYLLABLE JWEOD -->
+      <map code="0xc920" name="1em"/><!-- HANGUL SYLLABLE JWEOL -->
+      <map code="0xc921" name="1em"/><!-- HANGUL SYLLABLE JWEOLG -->
+      <map code="0xc922" name="1em"/><!-- HANGUL SYLLABLE JWEOLM -->
+      <map code="0xc923" name="1em"/><!-- HANGUL SYLLABLE JWEOLB -->
+      <map code="0xc924" name="1em"/><!-- HANGUL SYLLABLE JWEOLS -->
+      <map code="0xc925" name="1em"/><!-- HANGUL SYLLABLE JWEOLT -->
+      <map code="0xc926" name="1em"/><!-- HANGUL SYLLABLE JWEOLP -->
+      <map code="0xc927" name="1em"/><!-- HANGUL SYLLABLE JWEOLH -->
+      <map code="0xc928" name="1em"/><!-- HANGUL SYLLABLE JWEOM -->
+      <map code="0xc929" name="1em"/><!-- HANGUL SYLLABLE JWEOB -->
+      <map code="0xc92a" name="1em"/><!-- HANGUL SYLLABLE JWEOBS -->
+      <map code="0xc92b" name="1em"/><!-- HANGUL SYLLABLE JWEOS -->
+      <map code="0xc92c" name="1em"/><!-- HANGUL SYLLABLE JWEOSS -->
+      <map code="0xc92d" name="1em"/><!-- HANGUL SYLLABLE JWEONG -->
+      <map code="0xc92e" name="1em"/><!-- HANGUL SYLLABLE JWEOJ -->
+      <map code="0xc92f" name="1em"/><!-- HANGUL SYLLABLE JWEOC -->
+      <map code="0xc930" name="1em"/><!-- HANGUL SYLLABLE JWEOK -->
+      <map code="0xc931" name="1em"/><!-- HANGUL SYLLABLE JWEOT -->
+      <map code="0xc932" name="1em"/><!-- HANGUL SYLLABLE JWEOP -->
+      <map code="0xc933" name="1em"/><!-- HANGUL SYLLABLE JWEOH -->
+      <map code="0xc934" name="1em"/><!-- HANGUL SYLLABLE JWE -->
+      <map code="0xc935" name="1em"/><!-- HANGUL SYLLABLE JWEG -->
+      <map code="0xc936" name="1em"/><!-- HANGUL SYLLABLE JWEGG -->
+      <map code="0xc937" name="1em"/><!-- HANGUL SYLLABLE JWEGS -->
+      <map code="0xc938" name="1em"/><!-- HANGUL SYLLABLE JWEN -->
+      <map code="0xc939" name="1em"/><!-- HANGUL SYLLABLE JWENJ -->
+      <map code="0xc93a" name="1em"/><!-- HANGUL SYLLABLE JWENH -->
+      <map code="0xc93b" name="1em"/><!-- HANGUL SYLLABLE JWED -->
+      <map code="0xc93c" name="1em"/><!-- HANGUL SYLLABLE JWEL -->
+      <map code="0xc93d" name="1em"/><!-- HANGUL SYLLABLE JWELG -->
+      <map code="0xc93e" name="1em"/><!-- HANGUL SYLLABLE JWELM -->
+      <map code="0xc93f" name="1em"/><!-- HANGUL SYLLABLE JWELB -->
+      <map code="0xc940" name="1em"/><!-- HANGUL SYLLABLE JWELS -->
+      <map code="0xc941" name="1em"/><!-- HANGUL SYLLABLE JWELT -->
+      <map code="0xc942" name="1em"/><!-- HANGUL SYLLABLE JWELP -->
+      <map code="0xc943" name="1em"/><!-- HANGUL SYLLABLE JWELH -->
+      <map code="0xc944" name="1em"/><!-- HANGUL SYLLABLE JWEM -->
+      <map code="0xc945" name="1em"/><!-- HANGUL SYLLABLE JWEB -->
+      <map code="0xc946" name="1em"/><!-- HANGUL SYLLABLE JWEBS -->
+      <map code="0xc947" name="1em"/><!-- HANGUL SYLLABLE JWES -->
+      <map code="0xc948" name="1em"/><!-- HANGUL SYLLABLE JWESS -->
+      <map code="0xc949" name="1em"/><!-- HANGUL SYLLABLE JWENG -->
+      <map code="0xc94a" name="1em"/><!-- HANGUL SYLLABLE JWEJ -->
+      <map code="0xc94b" name="1em"/><!-- HANGUL SYLLABLE JWEC -->
+      <map code="0xc94c" name="1em"/><!-- HANGUL SYLLABLE JWEK -->
+      <map code="0xc94d" name="1em"/><!-- HANGUL SYLLABLE JWET -->
+      <map code="0xc94e" name="1em"/><!-- HANGUL SYLLABLE JWEP -->
+      <map code="0xc94f" name="1em"/><!-- HANGUL SYLLABLE JWEH -->
+      <map code="0xc950" name="1em"/><!-- HANGUL SYLLABLE JWI -->
+      <map code="0xc951" name="1em"/><!-- HANGUL SYLLABLE JWIG -->
+      <map code="0xc952" name="1em"/><!-- HANGUL SYLLABLE JWIGG -->
+      <map code="0xc953" name="1em"/><!-- HANGUL SYLLABLE JWIGS -->
+      <map code="0xc954" name="1em"/><!-- HANGUL SYLLABLE JWIN -->
+      <map code="0xc955" name="1em"/><!-- HANGUL SYLLABLE JWINJ -->
+      <map code="0xc956" name="1em"/><!-- HANGUL SYLLABLE JWINH -->
+      <map code="0xc957" name="1em"/><!-- HANGUL SYLLABLE JWID -->
+      <map code="0xc958" name="1em"/><!-- HANGUL SYLLABLE JWIL -->
+      <map code="0xc959" name="1em"/><!-- HANGUL SYLLABLE JWILG -->
+      <map code="0xc95a" name="1em"/><!-- HANGUL SYLLABLE JWILM -->
+      <map code="0xc95b" name="1em"/><!-- HANGUL SYLLABLE JWILB -->
+      <map code="0xc95c" name="1em"/><!-- HANGUL SYLLABLE JWILS -->
+      <map code="0xc95d" name="1em"/><!-- HANGUL SYLLABLE JWILT -->
+      <map code="0xc95e" name="1em"/><!-- HANGUL SYLLABLE JWILP -->
+      <map code="0xc95f" name="1em"/><!-- HANGUL SYLLABLE JWILH -->
+      <map code="0xc960" name="1em"/><!-- HANGUL SYLLABLE JWIM -->
+      <map code="0xc961" name="1em"/><!-- HANGUL SYLLABLE JWIB -->
+      <map code="0xc962" name="1em"/><!-- HANGUL SYLLABLE JWIBS -->
+      <map code="0xc963" name="1em"/><!-- HANGUL SYLLABLE JWIS -->
+      <map code="0xc964" name="1em"/><!-- HANGUL SYLLABLE JWISS -->
+      <map code="0xc965" name="1em"/><!-- HANGUL SYLLABLE JWING -->
+      <map code="0xc966" name="1em"/><!-- HANGUL SYLLABLE JWIJ -->
+      <map code="0xc967" name="1em"/><!-- HANGUL SYLLABLE JWIC -->
+      <map code="0xc968" name="1em"/><!-- HANGUL SYLLABLE JWIK -->
+      <map code="0xc969" name="1em"/><!-- HANGUL SYLLABLE JWIT -->
+      <map code="0xc96a" name="1em"/><!-- HANGUL SYLLABLE JWIP -->
+      <map code="0xc96b" name="1em"/><!-- HANGUL SYLLABLE JWIH -->
+      <map code="0xc96c" name="1em"/><!-- HANGUL SYLLABLE JYU -->
+      <map code="0xc96d" name="1em"/><!-- HANGUL SYLLABLE JYUG -->
+      <map code="0xc96e" name="1em"/><!-- HANGUL SYLLABLE JYUGG -->
+      <map code="0xc96f" name="1em"/><!-- HANGUL SYLLABLE JYUGS -->
+      <map code="0xc970" name="1em"/><!-- HANGUL SYLLABLE JYUN -->
+      <map code="0xc971" name="1em"/><!-- HANGUL SYLLABLE JYUNJ -->
+      <map code="0xc972" name="1em"/><!-- HANGUL SYLLABLE JYUNH -->
+      <map code="0xc973" name="1em"/><!-- HANGUL SYLLABLE JYUD -->
+      <map code="0xc974" name="1em"/><!-- HANGUL SYLLABLE JYUL -->
+      <map code="0xc975" name="1em"/><!-- HANGUL SYLLABLE JYULG -->
+      <map code="0xc976" name="1em"/><!-- HANGUL SYLLABLE JYULM -->
+      <map code="0xc977" name="1em"/><!-- HANGUL SYLLABLE JYULB -->
+      <map code="0xc978" name="1em"/><!-- HANGUL SYLLABLE JYULS -->
+      <map code="0xc979" name="1em"/><!-- HANGUL SYLLABLE JYULT -->
+      <map code="0xc97a" name="1em"/><!-- HANGUL SYLLABLE JYULP -->
+      <map code="0xc97b" name="1em"/><!-- HANGUL SYLLABLE JYULH -->
+      <map code="0xc97c" name="1em"/><!-- HANGUL SYLLABLE JYUM -->
+      <map code="0xc97d" name="1em"/><!-- HANGUL SYLLABLE JYUB -->
+      <map code="0xc97e" name="1em"/><!-- HANGUL SYLLABLE JYUBS -->
+      <map code="0xc97f" name="1em"/><!-- HANGUL SYLLABLE JYUS -->
+      <map code="0xc980" name="1em"/><!-- HANGUL SYLLABLE JYUSS -->
+      <map code="0xc981" name="1em"/><!-- HANGUL SYLLABLE JYUNG -->
+      <map code="0xc982" name="1em"/><!-- HANGUL SYLLABLE JYUJ -->
+      <map code="0xc983" name="1em"/><!-- HANGUL SYLLABLE JYUC -->
+      <map code="0xc984" name="1em"/><!-- HANGUL SYLLABLE JYUK -->
+      <map code="0xc985" name="1em"/><!-- HANGUL SYLLABLE JYUT -->
+      <map code="0xc986" name="1em"/><!-- HANGUL SYLLABLE JYUP -->
+      <map code="0xc987" name="1em"/><!-- HANGUL SYLLABLE JYUH -->
+      <map code="0xc988" name="1em"/><!-- HANGUL SYLLABLE JEU -->
+      <map code="0xc989" name="1em"/><!-- HANGUL SYLLABLE JEUG -->
+      <map code="0xc98a" name="1em"/><!-- HANGUL SYLLABLE JEUGG -->
+      <map code="0xc98b" name="1em"/><!-- HANGUL SYLLABLE JEUGS -->
+      <map code="0xc98c" name="1em"/><!-- HANGUL SYLLABLE JEUN -->
+      <map code="0xc98d" name="1em"/><!-- HANGUL SYLLABLE JEUNJ -->
+      <map code="0xc98e" name="1em"/><!-- HANGUL SYLLABLE JEUNH -->
+      <map code="0xc98f" name="1em"/><!-- HANGUL SYLLABLE JEUD -->
+      <map code="0xc990" name="1em"/><!-- HANGUL SYLLABLE JEUL -->
+      <map code="0xc991" name="1em"/><!-- HANGUL SYLLABLE JEULG -->
+      <map code="0xc992" name="1em"/><!-- HANGUL SYLLABLE JEULM -->
+      <map code="0xc993" name="1em"/><!-- HANGUL SYLLABLE JEULB -->
+      <map code="0xc994" name="1em"/><!-- HANGUL SYLLABLE JEULS -->
+      <map code="0xc995" name="1em"/><!-- HANGUL SYLLABLE JEULT -->
+      <map code="0xc996" name="1em"/><!-- HANGUL SYLLABLE JEULP -->
+      <map code="0xc997" name="1em"/><!-- HANGUL SYLLABLE JEULH -->
+      <map code="0xc998" name="1em"/><!-- HANGUL SYLLABLE JEUM -->
+      <map code="0xc999" name="1em"/><!-- HANGUL SYLLABLE JEUB -->
+      <map code="0xc99a" name="1em"/><!-- HANGUL SYLLABLE JEUBS -->
+      <map code="0xc99b" name="1em"/><!-- HANGUL SYLLABLE JEUS -->
+      <map code="0xc99c" name="1em"/><!-- HANGUL SYLLABLE JEUSS -->
+      <map code="0xc99d" name="1em"/><!-- HANGUL SYLLABLE JEUNG -->
+      <map code="0xc99e" name="1em"/><!-- HANGUL SYLLABLE JEUJ -->
+      <map code="0xc99f" name="1em"/><!-- HANGUL SYLLABLE JEUC -->
+      <map code="0xc9a0" name="1em"/><!-- HANGUL SYLLABLE JEUK -->
+      <map code="0xc9a1" name="1em"/><!-- HANGUL SYLLABLE JEUT -->
+      <map code="0xc9a2" name="1em"/><!-- HANGUL SYLLABLE JEUP -->
+      <map code="0xc9a3" name="1em"/><!-- HANGUL SYLLABLE JEUH -->
+      <map code="0xc9a4" name="1em"/><!-- HANGUL SYLLABLE JYI -->
+      <map code="0xc9a5" name="1em"/><!-- HANGUL SYLLABLE JYIG -->
+      <map code="0xc9a6" name="1em"/><!-- HANGUL SYLLABLE JYIGG -->
+      <map code="0xc9a7" name="1em"/><!-- HANGUL SYLLABLE JYIGS -->
+      <map code="0xc9a8" name="1em"/><!-- HANGUL SYLLABLE JYIN -->
+      <map code="0xc9a9" name="1em"/><!-- HANGUL SYLLABLE JYINJ -->
+      <map code="0xc9aa" name="1em"/><!-- HANGUL SYLLABLE JYINH -->
+      <map code="0xc9ab" name="1em"/><!-- HANGUL SYLLABLE JYID -->
+      <map code="0xc9ac" name="1em"/><!-- HANGUL SYLLABLE JYIL -->
+      <map code="0xc9ad" name="1em"/><!-- HANGUL SYLLABLE JYILG -->
+      <map code="0xc9ae" name="1em"/><!-- HANGUL SYLLABLE JYILM -->
+      <map code="0xc9af" name="1em"/><!-- HANGUL SYLLABLE JYILB -->
+      <map code="0xc9b0" name="1em"/><!-- HANGUL SYLLABLE JYILS -->
+      <map code="0xc9b1" name="1em"/><!-- HANGUL SYLLABLE JYILT -->
+      <map code="0xc9b2" name="1em"/><!-- HANGUL SYLLABLE JYILP -->
+      <map code="0xc9b3" name="1em"/><!-- HANGUL SYLLABLE JYILH -->
+      <map code="0xc9b4" name="1em"/><!-- HANGUL SYLLABLE JYIM -->
+      <map code="0xc9b5" name="1em"/><!-- HANGUL SYLLABLE JYIB -->
+      <map code="0xc9b6" name="1em"/><!-- HANGUL SYLLABLE JYIBS -->
+      <map code="0xc9b7" name="1em"/><!-- HANGUL SYLLABLE JYIS -->
+      <map code="0xc9b8" name="1em"/><!-- HANGUL SYLLABLE JYISS -->
+      <map code="0xc9b9" name="1em"/><!-- HANGUL SYLLABLE JYING -->
+      <map code="0xc9ba" name="1em"/><!-- HANGUL SYLLABLE JYIJ -->
+      <map code="0xc9bb" name="1em"/><!-- HANGUL SYLLABLE JYIC -->
+      <map code="0xc9bc" name="1em"/><!-- HANGUL SYLLABLE JYIK -->
+      <map code="0xc9bd" name="1em"/><!-- HANGUL SYLLABLE JYIT -->
+      <map code="0xc9be" name="1em"/><!-- HANGUL SYLLABLE JYIP -->
+      <map code="0xc9bf" name="1em"/><!-- HANGUL SYLLABLE JYIH -->
+      <map code="0xc9c0" name="1em"/><!-- HANGUL SYLLABLE JI -->
+      <map code="0xc9c1" name="1em"/><!-- HANGUL SYLLABLE JIG -->
+      <map code="0xc9c2" name="1em"/><!-- HANGUL SYLLABLE JIGG -->
+      <map code="0xc9c3" name="1em"/><!-- HANGUL SYLLABLE JIGS -->
+      <map code="0xc9c4" name="1em"/><!-- HANGUL SYLLABLE JIN -->
+      <map code="0xc9c5" name="1em"/><!-- HANGUL SYLLABLE JINJ -->
+      <map code="0xc9c6" name="1em"/><!-- HANGUL SYLLABLE JINH -->
+      <map code="0xc9c7" name="1em"/><!-- HANGUL SYLLABLE JID -->
+      <map code="0xc9c8" name="1em"/><!-- HANGUL SYLLABLE JIL -->
+      <map code="0xc9c9" name="1em"/><!-- HANGUL SYLLABLE JILG -->
+      <map code="0xc9ca" name="1em"/><!-- HANGUL SYLLABLE JILM -->
+      <map code="0xc9cb" name="1em"/><!-- HANGUL SYLLABLE JILB -->
+      <map code="0xc9cc" name="1em"/><!-- HANGUL SYLLABLE JILS -->
+      <map code="0xc9cd" name="1em"/><!-- HANGUL SYLLABLE JILT -->
+      <map code="0xc9ce" name="1em"/><!-- HANGUL SYLLABLE JILP -->
+      <map code="0xc9cf" name="1em"/><!-- HANGUL SYLLABLE JILH -->
+      <map code="0xc9d0" name="1em"/><!-- HANGUL SYLLABLE JIM -->
+      <map code="0xc9d1" name="1em"/><!-- HANGUL SYLLABLE JIB -->
+      <map code="0xc9d2" name="1em"/><!-- HANGUL SYLLABLE JIBS -->
+      <map code="0xc9d3" name="1em"/><!-- HANGUL SYLLABLE JIS -->
+      <map code="0xc9d4" name="1em"/><!-- HANGUL SYLLABLE JISS -->
+      <map code="0xc9d5" name="1em"/><!-- HANGUL SYLLABLE JING -->
+      <map code="0xc9d6" name="1em"/><!-- HANGUL SYLLABLE JIJ -->
+      <map code="0xc9d7" name="1em"/><!-- HANGUL SYLLABLE JIC -->
+      <map code="0xc9d8" name="1em"/><!-- HANGUL SYLLABLE JIK -->
+      <map code="0xc9d9" name="1em"/><!-- HANGUL SYLLABLE JIT -->
+      <map code="0xc9da" name="1em"/><!-- HANGUL SYLLABLE JIP -->
+      <map code="0xc9db" name="1em"/><!-- HANGUL SYLLABLE JIH -->
+      <map code="0xc9dc" name="1em"/><!-- HANGUL SYLLABLE JJA -->
+      <map code="0xc9dd" name="1em"/><!-- HANGUL SYLLABLE JJAG -->
+      <map code="0xc9de" name="1em"/><!-- HANGUL SYLLABLE JJAGG -->
+      <map code="0xc9df" name="1em"/><!-- HANGUL SYLLABLE JJAGS -->
+      <map code="0xc9e0" name="1em"/><!-- HANGUL SYLLABLE JJAN -->
+      <map code="0xc9e1" name="1em"/><!-- HANGUL SYLLABLE JJANJ -->
+      <map code="0xc9e2" name="1em"/><!-- HANGUL SYLLABLE JJANH -->
+      <map code="0xc9e3" name="1em"/><!-- HANGUL SYLLABLE JJAD -->
+      <map code="0xc9e4" name="1em"/><!-- HANGUL SYLLABLE JJAL -->
+      <map code="0xc9e5" name="1em"/><!-- HANGUL SYLLABLE JJALG -->
+      <map code="0xc9e6" name="1em"/><!-- HANGUL SYLLABLE JJALM -->
+      <map code="0xc9e7" name="1em"/><!-- HANGUL SYLLABLE JJALB -->
+      <map code="0xc9e8" name="1em"/><!-- HANGUL SYLLABLE JJALS -->
+      <map code="0xc9e9" name="1em"/><!-- HANGUL SYLLABLE JJALT -->
+      <map code="0xc9ea" name="1em"/><!-- HANGUL SYLLABLE JJALP -->
+      <map code="0xc9eb" name="1em"/><!-- HANGUL SYLLABLE JJALH -->
+      <map code="0xc9ec" name="1em"/><!-- HANGUL SYLLABLE JJAM -->
+      <map code="0xc9ed" name="1em"/><!-- HANGUL SYLLABLE JJAB -->
+      <map code="0xc9ee" name="1em"/><!-- HANGUL SYLLABLE JJABS -->
+      <map code="0xc9ef" name="1em"/><!-- HANGUL SYLLABLE JJAS -->
+      <map code="0xc9f0" name="1em"/><!-- HANGUL SYLLABLE JJASS -->
+      <map code="0xc9f1" name="1em"/><!-- HANGUL SYLLABLE JJANG -->
+      <map code="0xc9f2" name="1em"/><!-- HANGUL SYLLABLE JJAJ -->
+      <map code="0xc9f3" name="1em"/><!-- HANGUL SYLLABLE JJAC -->
+      <map code="0xc9f4" name="1em"/><!-- HANGUL SYLLABLE JJAK -->
+      <map code="0xc9f5" name="1em"/><!-- HANGUL SYLLABLE JJAT -->
+      <map code="0xc9f6" name="1em"/><!-- HANGUL SYLLABLE JJAP -->
+      <map code="0xc9f7" name="1em"/><!-- HANGUL SYLLABLE JJAH -->
+      <map code="0xc9f8" name="1em"/><!-- HANGUL SYLLABLE JJAE -->
+      <map code="0xc9f9" name="1em"/><!-- HANGUL SYLLABLE JJAEG -->
+      <map code="0xc9fa" name="1em"/><!-- HANGUL SYLLABLE JJAEGG -->
+      <map code="0xc9fb" name="1em"/><!-- HANGUL SYLLABLE JJAEGS -->
+      <map code="0xc9fc" name="1em"/><!-- HANGUL SYLLABLE JJAEN -->
+      <map code="0xc9fd" name="1em"/><!-- HANGUL SYLLABLE JJAENJ -->
+      <map code="0xc9fe" name="1em"/><!-- HANGUL SYLLABLE JJAENH -->
+      <map code="0xc9ff" name="1em"/><!-- HANGUL SYLLABLE JJAED -->
+      <map code="0xca00" name="1em"/><!-- HANGUL SYLLABLE JJAEL -->
+      <map code="0xca01" name="1em"/><!-- HANGUL SYLLABLE JJAELG -->
+      <map code="0xca02" name="1em"/><!-- HANGUL SYLLABLE JJAELM -->
+      <map code="0xca03" name="1em"/><!-- HANGUL SYLLABLE JJAELB -->
+      <map code="0xca04" name="1em"/><!-- HANGUL SYLLABLE JJAELS -->
+      <map code="0xca05" name="1em"/><!-- HANGUL SYLLABLE JJAELT -->
+      <map code="0xca06" name="1em"/><!-- HANGUL SYLLABLE JJAELP -->
+      <map code="0xca07" name="1em"/><!-- HANGUL SYLLABLE JJAELH -->
+      <map code="0xca08" name="1em"/><!-- HANGUL SYLLABLE JJAEM -->
+      <map code="0xca09" name="1em"/><!-- HANGUL SYLLABLE JJAEB -->
+      <map code="0xca0a" name="1em"/><!-- HANGUL SYLLABLE JJAEBS -->
+      <map code="0xca0b" name="1em"/><!-- HANGUL SYLLABLE JJAES -->
+      <map code="0xca0c" name="1em"/><!-- HANGUL SYLLABLE JJAESS -->
+      <map code="0xca0d" name="1em"/><!-- HANGUL SYLLABLE JJAENG -->
+      <map code="0xca0e" name="1em"/><!-- HANGUL SYLLABLE JJAEJ -->
+      <map code="0xca0f" name="1em"/><!-- HANGUL SYLLABLE JJAEC -->
+      <map code="0xca10" name="1em"/><!-- HANGUL SYLLABLE JJAEK -->
+      <map code="0xca11" name="1em"/><!-- HANGUL SYLLABLE JJAET -->
+      <map code="0xca12" name="1em"/><!-- HANGUL SYLLABLE JJAEP -->
+      <map code="0xca13" name="1em"/><!-- HANGUL SYLLABLE JJAEH -->
+      <map code="0xca14" name="1em"/><!-- HANGUL SYLLABLE JJYA -->
+      <map code="0xca15" name="1em"/><!-- HANGUL SYLLABLE JJYAG -->
+      <map code="0xca16" name="1em"/><!-- HANGUL SYLLABLE JJYAGG -->
+      <map code="0xca17" name="1em"/><!-- HANGUL SYLLABLE JJYAGS -->
+      <map code="0xca18" name="1em"/><!-- HANGUL SYLLABLE JJYAN -->
+      <map code="0xca19" name="1em"/><!-- HANGUL SYLLABLE JJYANJ -->
+      <map code="0xca1a" name="1em"/><!-- HANGUL SYLLABLE JJYANH -->
+      <map code="0xca1b" name="1em"/><!-- HANGUL SYLLABLE JJYAD -->
+      <map code="0xca1c" name="1em"/><!-- HANGUL SYLLABLE JJYAL -->
+      <map code="0xca1d" name="1em"/><!-- HANGUL SYLLABLE JJYALG -->
+      <map code="0xca1e" name="1em"/><!-- HANGUL SYLLABLE JJYALM -->
+      <map code="0xca1f" name="1em"/><!-- HANGUL SYLLABLE JJYALB -->
+      <map code="0xca20" name="1em"/><!-- HANGUL SYLLABLE JJYALS -->
+      <map code="0xca21" name="1em"/><!-- HANGUL SYLLABLE JJYALT -->
+      <map code="0xca22" name="1em"/><!-- HANGUL SYLLABLE JJYALP -->
+      <map code="0xca23" name="1em"/><!-- HANGUL SYLLABLE JJYALH -->
+      <map code="0xca24" name="1em"/><!-- HANGUL SYLLABLE JJYAM -->
+      <map code="0xca25" name="1em"/><!-- HANGUL SYLLABLE JJYAB -->
+      <map code="0xca26" name="1em"/><!-- HANGUL SYLLABLE JJYABS -->
+      <map code="0xca27" name="1em"/><!-- HANGUL SYLLABLE JJYAS -->
+      <map code="0xca28" name="1em"/><!-- HANGUL SYLLABLE JJYASS -->
+      <map code="0xca29" name="1em"/><!-- HANGUL SYLLABLE JJYANG -->
+      <map code="0xca2a" name="1em"/><!-- HANGUL SYLLABLE JJYAJ -->
+      <map code="0xca2b" name="1em"/><!-- HANGUL SYLLABLE JJYAC -->
+      <map code="0xca2c" name="1em"/><!-- HANGUL SYLLABLE JJYAK -->
+      <map code="0xca2d" name="1em"/><!-- HANGUL SYLLABLE JJYAT -->
+      <map code="0xca2e" name="1em"/><!-- HANGUL SYLLABLE JJYAP -->
+      <map code="0xca2f" name="1em"/><!-- HANGUL SYLLABLE JJYAH -->
+      <map code="0xca30" name="1em"/><!-- HANGUL SYLLABLE JJYAE -->
+      <map code="0xca31" name="1em"/><!-- HANGUL SYLLABLE JJYAEG -->
+      <map code="0xca32" name="1em"/><!-- HANGUL SYLLABLE JJYAEGG -->
+      <map code="0xca33" name="1em"/><!-- HANGUL SYLLABLE JJYAEGS -->
+      <map code="0xca34" name="1em"/><!-- HANGUL SYLLABLE JJYAEN -->
+      <map code="0xca35" name="1em"/><!-- HANGUL SYLLABLE JJYAENJ -->
+      <map code="0xca36" name="1em"/><!-- HANGUL SYLLABLE JJYAENH -->
+      <map code="0xca37" name="1em"/><!-- HANGUL SYLLABLE JJYAED -->
+      <map code="0xca38" name="1em"/><!-- HANGUL SYLLABLE JJYAEL -->
+      <map code="0xca39" name="1em"/><!-- HANGUL SYLLABLE JJYAELG -->
+      <map code="0xca3a" name="1em"/><!-- HANGUL SYLLABLE JJYAELM -->
+      <map code="0xca3b" name="1em"/><!-- HANGUL SYLLABLE JJYAELB -->
+      <map code="0xca3c" name="1em"/><!-- HANGUL SYLLABLE JJYAELS -->
+      <map code="0xca3d" name="1em"/><!-- HANGUL SYLLABLE JJYAELT -->
+      <map code="0xca3e" name="1em"/><!-- HANGUL SYLLABLE JJYAELP -->
+      <map code="0xca3f" name="1em"/><!-- HANGUL SYLLABLE JJYAELH -->
+      <map code="0xca40" name="1em"/><!-- HANGUL SYLLABLE JJYAEM -->
+      <map code="0xca41" name="1em"/><!-- HANGUL SYLLABLE JJYAEB -->
+      <map code="0xca42" name="1em"/><!-- HANGUL SYLLABLE JJYAEBS -->
+      <map code="0xca43" name="1em"/><!-- HANGUL SYLLABLE JJYAES -->
+      <map code="0xca44" name="1em"/><!-- HANGUL SYLLABLE JJYAESS -->
+      <map code="0xca45" name="1em"/><!-- HANGUL SYLLABLE JJYAENG -->
+      <map code="0xca46" name="1em"/><!-- HANGUL SYLLABLE JJYAEJ -->
+      <map code="0xca47" name="1em"/><!-- HANGUL SYLLABLE JJYAEC -->
+      <map code="0xca48" name="1em"/><!-- HANGUL SYLLABLE JJYAEK -->
+      <map code="0xca49" name="1em"/><!-- HANGUL SYLLABLE JJYAET -->
+      <map code="0xca4a" name="1em"/><!-- HANGUL SYLLABLE JJYAEP -->
+      <map code="0xca4b" name="1em"/><!-- HANGUL SYLLABLE JJYAEH -->
+      <map code="0xca4c" name="1em"/><!-- HANGUL SYLLABLE JJEO -->
+      <map code="0xca4d" name="1em"/><!-- HANGUL SYLLABLE JJEOG -->
+      <map code="0xca4e" name="1em"/><!-- HANGUL SYLLABLE JJEOGG -->
+      <map code="0xca4f" name="1em"/><!-- HANGUL SYLLABLE JJEOGS -->
+      <map code="0xca50" name="1em"/><!-- HANGUL SYLLABLE JJEON -->
+      <map code="0xca51" name="1em"/><!-- HANGUL SYLLABLE JJEONJ -->
+      <map code="0xca52" name="1em"/><!-- HANGUL SYLLABLE JJEONH -->
+      <map code="0xca53" name="1em"/><!-- HANGUL SYLLABLE JJEOD -->
+      <map code="0xca54" name="1em"/><!-- HANGUL SYLLABLE JJEOL -->
+      <map code="0xca55" name="1em"/><!-- HANGUL SYLLABLE JJEOLG -->
+      <map code="0xca56" name="1em"/><!-- HANGUL SYLLABLE JJEOLM -->
+      <map code="0xca57" name="1em"/><!-- HANGUL SYLLABLE JJEOLB -->
+      <map code="0xca58" name="1em"/><!-- HANGUL SYLLABLE JJEOLS -->
+      <map code="0xca59" name="1em"/><!-- HANGUL SYLLABLE JJEOLT -->
+      <map code="0xca5a" name="1em"/><!-- HANGUL SYLLABLE JJEOLP -->
+      <map code="0xca5b" name="1em"/><!-- HANGUL SYLLABLE JJEOLH -->
+      <map code="0xca5c" name="1em"/><!-- HANGUL SYLLABLE JJEOM -->
+      <map code="0xca5d" name="1em"/><!-- HANGUL SYLLABLE JJEOB -->
+      <map code="0xca5e" name="1em"/><!-- HANGUL SYLLABLE JJEOBS -->
+      <map code="0xca5f" name="1em"/><!-- HANGUL SYLLABLE JJEOS -->
+      <map code="0xca60" name="1em"/><!-- HANGUL SYLLABLE JJEOSS -->
+      <map code="0xca61" name="1em"/><!-- HANGUL SYLLABLE JJEONG -->
+      <map code="0xca62" name="1em"/><!-- HANGUL SYLLABLE JJEOJ -->
+      <map code="0xca63" name="1em"/><!-- HANGUL SYLLABLE JJEOC -->
+      <map code="0xca64" name="1em"/><!-- HANGUL SYLLABLE JJEOK -->
+      <map code="0xca65" name="1em"/><!-- HANGUL SYLLABLE JJEOT -->
+      <map code="0xca66" name="1em"/><!-- HANGUL SYLLABLE JJEOP -->
+      <map code="0xca67" name="1em"/><!-- HANGUL SYLLABLE JJEOH -->
+      <map code="0xca68" name="1em"/><!-- HANGUL SYLLABLE JJE -->
+      <map code="0xca69" name="1em"/><!-- HANGUL SYLLABLE JJEG -->
+      <map code="0xca6a" name="1em"/><!-- HANGUL SYLLABLE JJEGG -->
+      <map code="0xca6b" name="1em"/><!-- HANGUL SYLLABLE JJEGS -->
+      <map code="0xca6c" name="1em"/><!-- HANGUL SYLLABLE JJEN -->
+      <map code="0xca6d" name="1em"/><!-- HANGUL SYLLABLE JJENJ -->
+      <map code="0xca6e" name="1em"/><!-- HANGUL SYLLABLE JJENH -->
+      <map code="0xca6f" name="1em"/><!-- HANGUL SYLLABLE JJED -->
+      <map code="0xca70" name="1em"/><!-- HANGUL SYLLABLE JJEL -->
+      <map code="0xca71" name="1em"/><!-- HANGUL SYLLABLE JJELG -->
+      <map code="0xca72" name="1em"/><!-- HANGUL SYLLABLE JJELM -->
+      <map code="0xca73" name="1em"/><!-- HANGUL SYLLABLE JJELB -->
+      <map code="0xca74" name="1em"/><!-- HANGUL SYLLABLE JJELS -->
+      <map code="0xca75" name="1em"/><!-- HANGUL SYLLABLE JJELT -->
+      <map code="0xca76" name="1em"/><!-- HANGUL SYLLABLE JJELP -->
+      <map code="0xca77" name="1em"/><!-- HANGUL SYLLABLE JJELH -->
+      <map code="0xca78" name="1em"/><!-- HANGUL SYLLABLE JJEM -->
+      <map code="0xca79" name="1em"/><!-- HANGUL SYLLABLE JJEB -->
+      <map code="0xca7a" name="1em"/><!-- HANGUL SYLLABLE JJEBS -->
+      <map code="0xca7b" name="1em"/><!-- HANGUL SYLLABLE JJES -->
+      <map code="0xca7c" name="1em"/><!-- HANGUL SYLLABLE JJESS -->
+      <map code="0xca7d" name="1em"/><!-- HANGUL SYLLABLE JJENG -->
+      <map code="0xca7e" name="1em"/><!-- HANGUL SYLLABLE JJEJ -->
+      <map code="0xca7f" name="1em"/><!-- HANGUL SYLLABLE JJEC -->
+      <map code="0xca80" name="1em"/><!-- HANGUL SYLLABLE JJEK -->
+      <map code="0xca81" name="1em"/><!-- HANGUL SYLLABLE JJET -->
+      <map code="0xca82" name="1em"/><!-- HANGUL SYLLABLE JJEP -->
+      <map code="0xca83" name="1em"/><!-- HANGUL SYLLABLE JJEH -->
+      <map code="0xca84" name="1em"/><!-- HANGUL SYLLABLE JJYEO -->
+      <map code="0xca85" name="1em"/><!-- HANGUL SYLLABLE JJYEOG -->
+      <map code="0xca86" name="1em"/><!-- HANGUL SYLLABLE JJYEOGG -->
+      <map code="0xca87" name="1em"/><!-- HANGUL SYLLABLE JJYEOGS -->
+      <map code="0xca88" name="1em"/><!-- HANGUL SYLLABLE JJYEON -->
+      <map code="0xca89" name="1em"/><!-- HANGUL SYLLABLE JJYEONJ -->
+      <map code="0xca8a" name="1em"/><!-- HANGUL SYLLABLE JJYEONH -->
+      <map code="0xca8b" name="1em"/><!-- HANGUL SYLLABLE JJYEOD -->
+      <map code="0xca8c" name="1em"/><!-- HANGUL SYLLABLE JJYEOL -->
+      <map code="0xca8d" name="1em"/><!-- HANGUL SYLLABLE JJYEOLG -->
+      <map code="0xca8e" name="1em"/><!-- HANGUL SYLLABLE JJYEOLM -->
+      <map code="0xca8f" name="1em"/><!-- HANGUL SYLLABLE JJYEOLB -->
+      <map code="0xca90" name="1em"/><!-- HANGUL SYLLABLE JJYEOLS -->
+      <map code="0xca91" name="1em"/><!-- HANGUL SYLLABLE JJYEOLT -->
+      <map code="0xca92" name="1em"/><!-- HANGUL SYLLABLE JJYEOLP -->
+      <map code="0xca93" name="1em"/><!-- HANGUL SYLLABLE JJYEOLH -->
+      <map code="0xca94" name="1em"/><!-- HANGUL SYLLABLE JJYEOM -->
+      <map code="0xca95" name="1em"/><!-- HANGUL SYLLABLE JJYEOB -->
+      <map code="0xca96" name="1em"/><!-- HANGUL SYLLABLE JJYEOBS -->
+      <map code="0xca97" name="1em"/><!-- HANGUL SYLLABLE JJYEOS -->
+      <map code="0xca98" name="1em"/><!-- HANGUL SYLLABLE JJYEOSS -->
+      <map code="0xca99" name="1em"/><!-- HANGUL SYLLABLE JJYEONG -->
+      <map code="0xca9a" name="1em"/><!-- HANGUL SYLLABLE JJYEOJ -->
+      <map code="0xca9b" name="1em"/><!-- HANGUL SYLLABLE JJYEOC -->
+      <map code="0xca9c" name="1em"/><!-- HANGUL SYLLABLE JJYEOK -->
+      <map code="0xca9d" name="1em"/><!-- HANGUL SYLLABLE JJYEOT -->
+      <map code="0xca9e" name="1em"/><!-- HANGUL SYLLABLE JJYEOP -->
+      <map code="0xca9f" name="1em"/><!-- HANGUL SYLLABLE JJYEOH -->
+      <map code="0xcaa0" name="1em"/><!-- HANGUL SYLLABLE JJYE -->
+      <map code="0xcaa1" name="1em"/><!-- HANGUL SYLLABLE JJYEG -->
+      <map code="0xcaa2" name="1em"/><!-- HANGUL SYLLABLE JJYEGG -->
+      <map code="0xcaa3" name="1em"/><!-- HANGUL SYLLABLE JJYEGS -->
+      <map code="0xcaa4" name="1em"/><!-- HANGUL SYLLABLE JJYEN -->
+      <map code="0xcaa5" name="1em"/><!-- HANGUL SYLLABLE JJYENJ -->
+      <map code="0xcaa6" name="1em"/><!-- HANGUL SYLLABLE JJYENH -->
+      <map code="0xcaa7" name="1em"/><!-- HANGUL SYLLABLE JJYED -->
+      <map code="0xcaa8" name="1em"/><!-- HANGUL SYLLABLE JJYEL -->
+      <map code="0xcaa9" name="1em"/><!-- HANGUL SYLLABLE JJYELG -->
+      <map code="0xcaaa" name="1em"/><!-- HANGUL SYLLABLE JJYELM -->
+      <map code="0xcaab" name="1em"/><!-- HANGUL SYLLABLE JJYELB -->
+      <map code="0xcaac" name="1em"/><!-- HANGUL SYLLABLE JJYELS -->
+      <map code="0xcaad" name="1em"/><!-- HANGUL SYLLABLE JJYELT -->
+      <map code="0xcaae" name="1em"/><!-- HANGUL SYLLABLE JJYELP -->
+      <map code="0xcaaf" name="1em"/><!-- HANGUL SYLLABLE JJYELH -->
+      <map code="0xcab0" name="1em"/><!-- HANGUL SYLLABLE JJYEM -->
+      <map code="0xcab1" name="1em"/><!-- HANGUL SYLLABLE JJYEB -->
+      <map code="0xcab2" name="1em"/><!-- HANGUL SYLLABLE JJYEBS -->
+      <map code="0xcab3" name="1em"/><!-- HANGUL SYLLABLE JJYES -->
+      <map code="0xcab4" name="1em"/><!-- HANGUL SYLLABLE JJYESS -->
+      <map code="0xcab5" name="1em"/><!-- HANGUL SYLLABLE JJYENG -->
+      <map code="0xcab6" name="1em"/><!-- HANGUL SYLLABLE JJYEJ -->
+      <map code="0xcab7" name="1em"/><!-- HANGUL SYLLABLE JJYEC -->
+      <map code="0xcab8" name="1em"/><!-- HANGUL SYLLABLE JJYEK -->
+      <map code="0xcab9" name="1em"/><!-- HANGUL SYLLABLE JJYET -->
+      <map code="0xcaba" name="1em"/><!-- HANGUL SYLLABLE JJYEP -->
+      <map code="0xcabb" name="1em"/><!-- HANGUL SYLLABLE JJYEH -->
+      <map code="0xcabc" name="1em"/><!-- HANGUL SYLLABLE JJO -->
+      <map code="0xcabd" name="1em"/><!-- HANGUL SYLLABLE JJOG -->
+      <map code="0xcabe" name="1em"/><!-- HANGUL SYLLABLE JJOGG -->
+      <map code="0xcabf" name="1em"/><!-- HANGUL SYLLABLE JJOGS -->
+      <map code="0xcac0" name="1em"/><!-- HANGUL SYLLABLE JJON -->
+      <map code="0xcac1" name="1em"/><!-- HANGUL SYLLABLE JJONJ -->
+      <map code="0xcac2" name="1em"/><!-- HANGUL SYLLABLE JJONH -->
+      <map code="0xcac3" name="1em"/><!-- HANGUL SYLLABLE JJOD -->
+      <map code="0xcac4" name="1em"/><!-- HANGUL SYLLABLE JJOL -->
+      <map code="0xcac5" name="1em"/><!-- HANGUL SYLLABLE JJOLG -->
+      <map code="0xcac6" name="1em"/><!-- HANGUL SYLLABLE JJOLM -->
+      <map code="0xcac7" name="1em"/><!-- HANGUL SYLLABLE JJOLB -->
+      <map code="0xcac8" name="1em"/><!-- HANGUL SYLLABLE JJOLS -->
+      <map code="0xcac9" name="1em"/><!-- HANGUL SYLLABLE JJOLT -->
+      <map code="0xcaca" name="1em"/><!-- HANGUL SYLLABLE JJOLP -->
+      <map code="0xcacb" name="1em"/><!-- HANGUL SYLLABLE JJOLH -->
+      <map code="0xcacc" name="1em"/><!-- HANGUL SYLLABLE JJOM -->
+      <map code="0xcacd" name="1em"/><!-- HANGUL SYLLABLE JJOB -->
+      <map code="0xcace" name="1em"/><!-- HANGUL SYLLABLE JJOBS -->
+      <map code="0xcacf" name="1em"/><!-- HANGUL SYLLABLE JJOS -->
+      <map code="0xcad0" name="1em"/><!-- HANGUL SYLLABLE JJOSS -->
+      <map code="0xcad1" name="1em"/><!-- HANGUL SYLLABLE JJONG -->
+      <map code="0xcad2" name="1em"/><!-- HANGUL SYLLABLE JJOJ -->
+      <map code="0xcad3" name="1em"/><!-- HANGUL SYLLABLE JJOC -->
+      <map code="0xcad4" name="1em"/><!-- HANGUL SYLLABLE JJOK -->
+      <map code="0xcad5" name="1em"/><!-- HANGUL SYLLABLE JJOT -->
+      <map code="0xcad6" name="1em"/><!-- HANGUL SYLLABLE JJOP -->
+      <map code="0xcad7" name="1em"/><!-- HANGUL SYLLABLE JJOH -->
+      <map code="0xcad8" name="1em"/><!-- HANGUL SYLLABLE JJWA -->
+      <map code="0xcad9" name="1em"/><!-- HANGUL SYLLABLE JJWAG -->
+      <map code="0xcada" name="1em"/><!-- HANGUL SYLLABLE JJWAGG -->
+      <map code="0xcadb" name="1em"/><!-- HANGUL SYLLABLE JJWAGS -->
+      <map code="0xcadc" name="1em"/><!-- HANGUL SYLLABLE JJWAN -->
+      <map code="0xcadd" name="1em"/><!-- HANGUL SYLLABLE JJWANJ -->
+      <map code="0xcade" name="1em"/><!-- HANGUL SYLLABLE JJWANH -->
+      <map code="0xcadf" name="1em"/><!-- HANGUL SYLLABLE JJWAD -->
+      <map code="0xcae0" name="1em"/><!-- HANGUL SYLLABLE JJWAL -->
+      <map code="0xcae1" name="1em"/><!-- HANGUL SYLLABLE JJWALG -->
+      <map code="0xcae2" name="1em"/><!-- HANGUL SYLLABLE JJWALM -->
+      <map code="0xcae3" name="1em"/><!-- HANGUL SYLLABLE JJWALB -->
+      <map code="0xcae4" name="1em"/><!-- HANGUL SYLLABLE JJWALS -->
+      <map code="0xcae5" name="1em"/><!-- HANGUL SYLLABLE JJWALT -->
+      <map code="0xcae6" name="1em"/><!-- HANGUL SYLLABLE JJWALP -->
+      <map code="0xcae7" name="1em"/><!-- HANGUL SYLLABLE JJWALH -->
+      <map code="0xcae8" name="1em"/><!-- HANGUL SYLLABLE JJWAM -->
+      <map code="0xcae9" name="1em"/><!-- HANGUL SYLLABLE JJWAB -->
+      <map code="0xcaea" name="1em"/><!-- HANGUL SYLLABLE JJWABS -->
+      <map code="0xcaeb" name="1em"/><!-- HANGUL SYLLABLE JJWAS -->
+      <map code="0xcaec" name="1em"/><!-- HANGUL SYLLABLE JJWASS -->
+      <map code="0xcaed" name="1em"/><!-- HANGUL SYLLABLE JJWANG -->
+      <map code="0xcaee" name="1em"/><!-- HANGUL SYLLABLE JJWAJ -->
+      <map code="0xcaef" name="1em"/><!-- HANGUL SYLLABLE JJWAC -->
+      <map code="0xcaf0" name="1em"/><!-- HANGUL SYLLABLE JJWAK -->
+      <map code="0xcaf1" name="1em"/><!-- HANGUL SYLLABLE JJWAT -->
+      <map code="0xcaf2" name="1em"/><!-- HANGUL SYLLABLE JJWAP -->
+      <map code="0xcaf3" name="1em"/><!-- HANGUL SYLLABLE JJWAH -->
+      <map code="0xcaf4" name="1em"/><!-- HANGUL SYLLABLE JJWAE -->
+      <map code="0xcaf5" name="1em"/><!-- HANGUL SYLLABLE JJWAEG -->
+      <map code="0xcaf6" name="1em"/><!-- HANGUL SYLLABLE JJWAEGG -->
+      <map code="0xcaf7" name="1em"/><!-- HANGUL SYLLABLE JJWAEGS -->
+      <map code="0xcaf8" name="1em"/><!-- HANGUL SYLLABLE JJWAEN -->
+      <map code="0xcaf9" name="1em"/><!-- HANGUL SYLLABLE JJWAENJ -->
+      <map code="0xcafa" name="1em"/><!-- HANGUL SYLLABLE JJWAENH -->
+      <map code="0xcafb" name="1em"/><!-- HANGUL SYLLABLE JJWAED -->
+      <map code="0xcafc" name="1em"/><!-- HANGUL SYLLABLE JJWAEL -->
+      <map code="0xcafd" name="1em"/><!-- HANGUL SYLLABLE JJWAELG -->
+      <map code="0xcafe" name="1em"/><!-- HANGUL SYLLABLE JJWAELM -->
+      <map code="0xcaff" name="1em"/><!-- HANGUL SYLLABLE JJWAELB -->
+      <map code="0xcb00" name="1em"/><!-- HANGUL SYLLABLE JJWAELS -->
+      <map code="0xcb01" name="1em"/><!-- HANGUL SYLLABLE JJWAELT -->
+      <map code="0xcb02" name="1em"/><!-- HANGUL SYLLABLE JJWAELP -->
+      <map code="0xcb03" name="1em"/><!-- HANGUL SYLLABLE JJWAELH -->
+      <map code="0xcb04" name="1em"/><!-- HANGUL SYLLABLE JJWAEM -->
+      <map code="0xcb05" name="1em"/><!-- HANGUL SYLLABLE JJWAEB -->
+      <map code="0xcb06" name="1em"/><!-- HANGUL SYLLABLE JJWAEBS -->
+      <map code="0xcb07" name="1em"/><!-- HANGUL SYLLABLE JJWAES -->
+      <map code="0xcb08" name="1em"/><!-- HANGUL SYLLABLE JJWAESS -->
+      <map code="0xcb09" name="1em"/><!-- HANGUL SYLLABLE JJWAENG -->
+      <map code="0xcb0a" name="1em"/><!-- HANGUL SYLLABLE JJWAEJ -->
+      <map code="0xcb0b" name="1em"/><!-- HANGUL SYLLABLE JJWAEC -->
+      <map code="0xcb0c" name="1em"/><!-- HANGUL SYLLABLE JJWAEK -->
+      <map code="0xcb0d" name="1em"/><!-- HANGUL SYLLABLE JJWAET -->
+      <map code="0xcb0e" name="1em"/><!-- HANGUL SYLLABLE JJWAEP -->
+      <map code="0xcb0f" name="1em"/><!-- HANGUL SYLLABLE JJWAEH -->
+      <map code="0xcb10" name="1em"/><!-- HANGUL SYLLABLE JJOE -->
+      <map code="0xcb11" name="1em"/><!-- HANGUL SYLLABLE JJOEG -->
+      <map code="0xcb12" name="1em"/><!-- HANGUL SYLLABLE JJOEGG -->
+      <map code="0xcb13" name="1em"/><!-- HANGUL SYLLABLE JJOEGS -->
+      <map code="0xcb14" name="1em"/><!-- HANGUL SYLLABLE JJOEN -->
+      <map code="0xcb15" name="1em"/><!-- HANGUL SYLLABLE JJOENJ -->
+      <map code="0xcb16" name="1em"/><!-- HANGUL SYLLABLE JJOENH -->
+      <map code="0xcb17" name="1em"/><!-- HANGUL SYLLABLE JJOED -->
+      <map code="0xcb18" name="1em"/><!-- HANGUL SYLLABLE JJOEL -->
+      <map code="0xcb19" name="1em"/><!-- HANGUL SYLLABLE JJOELG -->
+      <map code="0xcb1a" name="1em"/><!-- HANGUL SYLLABLE JJOELM -->
+      <map code="0xcb1b" name="1em"/><!-- HANGUL SYLLABLE JJOELB -->
+      <map code="0xcb1c" name="1em"/><!-- HANGUL SYLLABLE JJOELS -->
+      <map code="0xcb1d" name="1em"/><!-- HANGUL SYLLABLE JJOELT -->
+      <map code="0xcb1e" name="1em"/><!-- HANGUL SYLLABLE JJOELP -->
+      <map code="0xcb1f" name="1em"/><!-- HANGUL SYLLABLE JJOELH -->
+      <map code="0xcb20" name="1em"/><!-- HANGUL SYLLABLE JJOEM -->
+      <map code="0xcb21" name="1em"/><!-- HANGUL SYLLABLE JJOEB -->
+      <map code="0xcb22" name="1em"/><!-- HANGUL SYLLABLE JJOEBS -->
+      <map code="0xcb23" name="1em"/><!-- HANGUL SYLLABLE JJOES -->
+      <map code="0xcb24" name="1em"/><!-- HANGUL SYLLABLE JJOESS -->
+      <map code="0xcb25" name="1em"/><!-- HANGUL SYLLABLE JJOENG -->
+      <map code="0xcb26" name="1em"/><!-- HANGUL SYLLABLE JJOEJ -->
+      <map code="0xcb27" name="1em"/><!-- HANGUL SYLLABLE JJOEC -->
+      <map code="0xcb28" name="1em"/><!-- HANGUL SYLLABLE JJOEK -->
+      <map code="0xcb29" name="1em"/><!-- HANGUL SYLLABLE JJOET -->
+      <map code="0xcb2a" name="1em"/><!-- HANGUL SYLLABLE JJOEP -->
+      <map code="0xcb2b" name="1em"/><!-- HANGUL SYLLABLE JJOEH -->
+      <map code="0xcb2c" name="1em"/><!-- HANGUL SYLLABLE JJYO -->
+      <map code="0xcb2d" name="1em"/><!-- HANGUL SYLLABLE JJYOG -->
+      <map code="0xcb2e" name="1em"/><!-- HANGUL SYLLABLE JJYOGG -->
+      <map code="0xcb2f" name="1em"/><!-- HANGUL SYLLABLE JJYOGS -->
+      <map code="0xcb30" name="1em"/><!-- HANGUL SYLLABLE JJYON -->
+      <map code="0xcb31" name="1em"/><!-- HANGUL SYLLABLE JJYONJ -->
+      <map code="0xcb32" name="1em"/><!-- HANGUL SYLLABLE JJYONH -->
+      <map code="0xcb33" name="1em"/><!-- HANGUL SYLLABLE JJYOD -->
+      <map code="0xcb34" name="1em"/><!-- HANGUL SYLLABLE JJYOL -->
+      <map code="0xcb35" name="1em"/><!-- HANGUL SYLLABLE JJYOLG -->
+      <map code="0xcb36" name="1em"/><!-- HANGUL SYLLABLE JJYOLM -->
+      <map code="0xcb37" name="1em"/><!-- HANGUL SYLLABLE JJYOLB -->
+      <map code="0xcb38" name="1em"/><!-- HANGUL SYLLABLE JJYOLS -->
+      <map code="0xcb39" name="1em"/><!-- HANGUL SYLLABLE JJYOLT -->
+      <map code="0xcb3a" name="1em"/><!-- HANGUL SYLLABLE JJYOLP -->
+      <map code="0xcb3b" name="1em"/><!-- HANGUL SYLLABLE JJYOLH -->
+      <map code="0xcb3c" name="1em"/><!-- HANGUL SYLLABLE JJYOM -->
+      <map code="0xcb3d" name="1em"/><!-- HANGUL SYLLABLE JJYOB -->
+      <map code="0xcb3e" name="1em"/><!-- HANGUL SYLLABLE JJYOBS -->
+      <map code="0xcb3f" name="1em"/><!-- HANGUL SYLLABLE JJYOS -->
+      <map code="0xcb40" name="1em"/><!-- HANGUL SYLLABLE JJYOSS -->
+      <map code="0xcb41" name="1em"/><!-- HANGUL SYLLABLE JJYONG -->
+      <map code="0xcb42" name="1em"/><!-- HANGUL SYLLABLE JJYOJ -->
+      <map code="0xcb43" name="1em"/><!-- HANGUL SYLLABLE JJYOC -->
+      <map code="0xcb44" name="1em"/><!-- HANGUL SYLLABLE JJYOK -->
+      <map code="0xcb45" name="1em"/><!-- HANGUL SYLLABLE JJYOT -->
+      <map code="0xcb46" name="1em"/><!-- HANGUL SYLLABLE JJYOP -->
+      <map code="0xcb47" name="1em"/><!-- HANGUL SYLLABLE JJYOH -->
+      <map code="0xcb48" name="1em"/><!-- HANGUL SYLLABLE JJU -->
+      <map code="0xcb49" name="1em"/><!-- HANGUL SYLLABLE JJUG -->
+      <map code="0xcb4a" name="1em"/><!-- HANGUL SYLLABLE JJUGG -->
+      <map code="0xcb4b" name="1em"/><!-- HANGUL SYLLABLE JJUGS -->
+      <map code="0xcb4c" name="1em"/><!-- HANGUL SYLLABLE JJUN -->
+      <map code="0xcb4d" name="1em"/><!-- HANGUL SYLLABLE JJUNJ -->
+      <map code="0xcb4e" name="1em"/><!-- HANGUL SYLLABLE JJUNH -->
+      <map code="0xcb4f" name="1em"/><!-- HANGUL SYLLABLE JJUD -->
+      <map code="0xcb50" name="1em"/><!-- HANGUL SYLLABLE JJUL -->
+      <map code="0xcb51" name="1em"/><!-- HANGUL SYLLABLE JJULG -->
+      <map code="0xcb52" name="1em"/><!-- HANGUL SYLLABLE JJULM -->
+      <map code="0xcb53" name="1em"/><!-- HANGUL SYLLABLE JJULB -->
+      <map code="0xcb54" name="1em"/><!-- HANGUL SYLLABLE JJULS -->
+      <map code="0xcb55" name="1em"/><!-- HANGUL SYLLABLE JJULT -->
+      <map code="0xcb56" name="1em"/><!-- HANGUL SYLLABLE JJULP -->
+      <map code="0xcb57" name="1em"/><!-- HANGUL SYLLABLE JJULH -->
+      <map code="0xcb58" name="1em"/><!-- HANGUL SYLLABLE JJUM -->
+      <map code="0xcb59" name="1em"/><!-- HANGUL SYLLABLE JJUB -->
+      <map code="0xcb5a" name="1em"/><!-- HANGUL SYLLABLE JJUBS -->
+      <map code="0xcb5b" name="1em"/><!-- HANGUL SYLLABLE JJUS -->
+      <map code="0xcb5c" name="1em"/><!-- HANGUL SYLLABLE JJUSS -->
+      <map code="0xcb5d" name="1em"/><!-- HANGUL SYLLABLE JJUNG -->
+      <map code="0xcb5e" name="1em"/><!-- HANGUL SYLLABLE JJUJ -->
+      <map code="0xcb5f" name="1em"/><!-- HANGUL SYLLABLE JJUC -->
+      <map code="0xcb60" name="1em"/><!-- HANGUL SYLLABLE JJUK -->
+      <map code="0xcb61" name="1em"/><!-- HANGUL SYLLABLE JJUT -->
+      <map code="0xcb62" name="1em"/><!-- HANGUL SYLLABLE JJUP -->
+      <map code="0xcb63" name="1em"/><!-- HANGUL SYLLABLE JJUH -->
+      <map code="0xcb64" name="1em"/><!-- HANGUL SYLLABLE JJWEO -->
+      <map code="0xcb65" name="1em"/><!-- HANGUL SYLLABLE JJWEOG -->
+      <map code="0xcb66" name="1em"/><!-- HANGUL SYLLABLE JJWEOGG -->
+      <map code="0xcb67" name="1em"/><!-- HANGUL SYLLABLE JJWEOGS -->
+      <map code="0xcb68" name="1em"/><!-- HANGUL SYLLABLE JJWEON -->
+      <map code="0xcb69" name="1em"/><!-- HANGUL SYLLABLE JJWEONJ -->
+      <map code="0xcb6a" name="1em"/><!-- HANGUL SYLLABLE JJWEONH -->
+      <map code="0xcb6b" name="1em"/><!-- HANGUL SYLLABLE JJWEOD -->
+      <map code="0xcb6c" name="1em"/><!-- HANGUL SYLLABLE JJWEOL -->
+      <map code="0xcb6d" name="1em"/><!-- HANGUL SYLLABLE JJWEOLG -->
+      <map code="0xcb6e" name="1em"/><!-- HANGUL SYLLABLE JJWEOLM -->
+      <map code="0xcb6f" name="1em"/><!-- HANGUL SYLLABLE JJWEOLB -->
+      <map code="0xcb70" name="1em"/><!-- HANGUL SYLLABLE JJWEOLS -->
+      <map code="0xcb71" name="1em"/><!-- HANGUL SYLLABLE JJWEOLT -->
+      <map code="0xcb72" name="1em"/><!-- HANGUL SYLLABLE JJWEOLP -->
+      <map code="0xcb73" name="1em"/><!-- HANGUL SYLLABLE JJWEOLH -->
+      <map code="0xcb74" name="1em"/><!-- HANGUL SYLLABLE JJWEOM -->
+      <map code="0xcb75" name="1em"/><!-- HANGUL SYLLABLE JJWEOB -->
+      <map code="0xcb76" name="1em"/><!-- HANGUL SYLLABLE JJWEOBS -->
+      <map code="0xcb77" name="1em"/><!-- HANGUL SYLLABLE JJWEOS -->
+      <map code="0xcb78" name="1em"/><!-- HANGUL SYLLABLE JJWEOSS -->
+      <map code="0xcb79" name="1em"/><!-- HANGUL SYLLABLE JJWEONG -->
+      <map code="0xcb7a" name="1em"/><!-- HANGUL SYLLABLE JJWEOJ -->
+      <map code="0xcb7b" name="1em"/><!-- HANGUL SYLLABLE JJWEOC -->
+      <map code="0xcb7c" name="1em"/><!-- HANGUL SYLLABLE JJWEOK -->
+      <map code="0xcb7d" name="1em"/><!-- HANGUL SYLLABLE JJWEOT -->
+      <map code="0xcb7e" name="1em"/><!-- HANGUL SYLLABLE JJWEOP -->
+      <map code="0xcb7f" name="1em"/><!-- HANGUL SYLLABLE JJWEOH -->
+      <map code="0xcb80" name="1em"/><!-- HANGUL SYLLABLE JJWE -->
+      <map code="0xcb81" name="1em"/><!-- HANGUL SYLLABLE JJWEG -->
+      <map code="0xcb82" name="1em"/><!-- HANGUL SYLLABLE JJWEGG -->
+      <map code="0xcb83" name="1em"/><!-- HANGUL SYLLABLE JJWEGS -->
+      <map code="0xcb84" name="1em"/><!-- HANGUL SYLLABLE JJWEN -->
+      <map code="0xcb85" name="1em"/><!-- HANGUL SYLLABLE JJWENJ -->
+      <map code="0xcb86" name="1em"/><!-- HANGUL SYLLABLE JJWENH -->
+      <map code="0xcb87" name="1em"/><!-- HANGUL SYLLABLE JJWED -->
+      <map code="0xcb88" name="1em"/><!-- HANGUL SYLLABLE JJWEL -->
+      <map code="0xcb89" name="1em"/><!-- HANGUL SYLLABLE JJWELG -->
+      <map code="0xcb8a" name="1em"/><!-- HANGUL SYLLABLE JJWELM -->
+      <map code="0xcb8b" name="1em"/><!-- HANGUL SYLLABLE JJWELB -->
+      <map code="0xcb8c" name="1em"/><!-- HANGUL SYLLABLE JJWELS -->
+      <map code="0xcb8d" name="1em"/><!-- HANGUL SYLLABLE JJWELT -->
+      <map code="0xcb8e" name="1em"/><!-- HANGUL SYLLABLE JJWELP -->
+      <map code="0xcb8f" name="1em"/><!-- HANGUL SYLLABLE JJWELH -->
+      <map code="0xcb90" name="1em"/><!-- HANGUL SYLLABLE JJWEM -->
+      <map code="0xcb91" name="1em"/><!-- HANGUL SYLLABLE JJWEB -->
+      <map code="0xcb92" name="1em"/><!-- HANGUL SYLLABLE JJWEBS -->
+      <map code="0xcb93" name="1em"/><!-- HANGUL SYLLABLE JJWES -->
+      <map code="0xcb94" name="1em"/><!-- HANGUL SYLLABLE JJWESS -->
+      <map code="0xcb95" name="1em"/><!-- HANGUL SYLLABLE JJWENG -->
+      <map code="0xcb96" name="1em"/><!-- HANGUL SYLLABLE JJWEJ -->
+      <map code="0xcb97" name="1em"/><!-- HANGUL SYLLABLE JJWEC -->
+      <map code="0xcb98" name="1em"/><!-- HANGUL SYLLABLE JJWEK -->
+      <map code="0xcb99" name="1em"/><!-- HANGUL SYLLABLE JJWET -->
+      <map code="0xcb9a" name="1em"/><!-- HANGUL SYLLABLE JJWEP -->
+      <map code="0xcb9b" name="1em"/><!-- HANGUL SYLLABLE JJWEH -->
+      <map code="0xcb9c" name="1em"/><!-- HANGUL SYLLABLE JJWI -->
+      <map code="0xcb9d" name="1em"/><!-- HANGUL SYLLABLE JJWIG -->
+      <map code="0xcb9e" name="1em"/><!-- HANGUL SYLLABLE JJWIGG -->
+      <map code="0xcb9f" name="1em"/><!-- HANGUL SYLLABLE JJWIGS -->
+      <map code="0xcba0" name="1em"/><!-- HANGUL SYLLABLE JJWIN -->
+      <map code="0xcba1" name="1em"/><!-- HANGUL SYLLABLE JJWINJ -->
+      <map code="0xcba2" name="1em"/><!-- HANGUL SYLLABLE JJWINH -->
+      <map code="0xcba3" name="1em"/><!-- HANGUL SYLLABLE JJWID -->
+      <map code="0xcba4" name="1em"/><!-- HANGUL SYLLABLE JJWIL -->
+      <map code="0xcba5" name="1em"/><!-- HANGUL SYLLABLE JJWILG -->
+      <map code="0xcba6" name="1em"/><!-- HANGUL SYLLABLE JJWILM -->
+      <map code="0xcba7" name="1em"/><!-- HANGUL SYLLABLE JJWILB -->
+      <map code="0xcba8" name="1em"/><!-- HANGUL SYLLABLE JJWILS -->
+      <map code="0xcba9" name="1em"/><!-- HANGUL SYLLABLE JJWILT -->
+      <map code="0xcbaa" name="1em"/><!-- HANGUL SYLLABLE JJWILP -->
+      <map code="0xcbab" name="1em"/><!-- HANGUL SYLLABLE JJWILH -->
+      <map code="0xcbac" name="1em"/><!-- HANGUL SYLLABLE JJWIM -->
+      <map code="0xcbad" name="1em"/><!-- HANGUL SYLLABLE JJWIB -->
+      <map code="0xcbae" name="1em"/><!-- HANGUL SYLLABLE JJWIBS -->
+      <map code="0xcbaf" name="1em"/><!-- HANGUL SYLLABLE JJWIS -->
+      <map code="0xcbb0" name="1em"/><!-- HANGUL SYLLABLE JJWISS -->
+      <map code="0xcbb1" name="1em"/><!-- HANGUL SYLLABLE JJWING -->
+      <map code="0xcbb2" name="1em"/><!-- HANGUL SYLLABLE JJWIJ -->
+      <map code="0xcbb3" name="1em"/><!-- HANGUL SYLLABLE JJWIC -->
+      <map code="0xcbb4" name="1em"/><!-- HANGUL SYLLABLE JJWIK -->
+      <map code="0xcbb5" name="1em"/><!-- HANGUL SYLLABLE JJWIT -->
+      <map code="0xcbb6" name="1em"/><!-- HANGUL SYLLABLE JJWIP -->
+      <map code="0xcbb7" name="1em"/><!-- HANGUL SYLLABLE JJWIH -->
+      <map code="0xcbb8" name="1em"/><!-- HANGUL SYLLABLE JJYU -->
+      <map code="0xcbb9" name="1em"/><!-- HANGUL SYLLABLE JJYUG -->
+      <map code="0xcbba" name="1em"/><!-- HANGUL SYLLABLE JJYUGG -->
+      <map code="0xcbbb" name="1em"/><!-- HANGUL SYLLABLE JJYUGS -->
+      <map code="0xcbbc" name="1em"/><!-- HANGUL SYLLABLE JJYUN -->
+      <map code="0xcbbd" name="1em"/><!-- HANGUL SYLLABLE JJYUNJ -->
+      <map code="0xcbbe" name="1em"/><!-- HANGUL SYLLABLE JJYUNH -->
+      <map code="0xcbbf" name="1em"/><!-- HANGUL SYLLABLE JJYUD -->
+      <map code="0xcbc0" name="1em"/><!-- HANGUL SYLLABLE JJYUL -->
+      <map code="0xcbc1" name="1em"/><!-- HANGUL SYLLABLE JJYULG -->
+      <map code="0xcbc2" name="1em"/><!-- HANGUL SYLLABLE JJYULM -->
+      <map code="0xcbc3" name="1em"/><!-- HANGUL SYLLABLE JJYULB -->
+      <map code="0xcbc4" name="1em"/><!-- HANGUL SYLLABLE JJYULS -->
+      <map code="0xcbc5" name="1em"/><!-- HANGUL SYLLABLE JJYULT -->
+      <map code="0xcbc6" name="1em"/><!-- HANGUL SYLLABLE JJYULP -->
+      <map code="0xcbc7" name="1em"/><!-- HANGUL SYLLABLE JJYULH -->
+      <map code="0xcbc8" name="1em"/><!-- HANGUL SYLLABLE JJYUM -->
+      <map code="0xcbc9" name="1em"/><!-- HANGUL SYLLABLE JJYUB -->
+      <map code="0xcbca" name="1em"/><!-- HANGUL SYLLABLE JJYUBS -->
+      <map code="0xcbcb" name="1em"/><!-- HANGUL SYLLABLE JJYUS -->
+      <map code="0xcbcc" name="1em"/><!-- HANGUL SYLLABLE JJYUSS -->
+      <map code="0xcbcd" name="1em"/><!-- HANGUL SYLLABLE JJYUNG -->
+      <map code="0xcbce" name="1em"/><!-- HANGUL SYLLABLE JJYUJ -->
+      <map code="0xcbcf" name="1em"/><!-- HANGUL SYLLABLE JJYUC -->
+      <map code="0xcbd0" name="1em"/><!-- HANGUL SYLLABLE JJYUK -->
+      <map code="0xcbd1" name="1em"/><!-- HANGUL SYLLABLE JJYUT -->
+      <map code="0xcbd2" name="1em"/><!-- HANGUL SYLLABLE JJYUP -->
+      <map code="0xcbd3" name="1em"/><!-- HANGUL SYLLABLE JJYUH -->
+      <map code="0xcbd4" name="1em"/><!-- HANGUL SYLLABLE JJEU -->
+      <map code="0xcbd5" name="1em"/><!-- HANGUL SYLLABLE JJEUG -->
+      <map code="0xcbd6" name="1em"/><!-- HANGUL SYLLABLE JJEUGG -->
+      <map code="0xcbd7" name="1em"/><!-- HANGUL SYLLABLE JJEUGS -->
+      <map code="0xcbd8" name="1em"/><!-- HANGUL SYLLABLE JJEUN -->
+      <map code="0xcbd9" name="1em"/><!-- HANGUL SYLLABLE JJEUNJ -->
+      <map code="0xcbda" name="1em"/><!-- HANGUL SYLLABLE JJEUNH -->
+      <map code="0xcbdb" name="1em"/><!-- HANGUL SYLLABLE JJEUD -->
+      <map code="0xcbdc" name="1em"/><!-- HANGUL SYLLABLE JJEUL -->
+      <map code="0xcbdd" name="1em"/><!-- HANGUL SYLLABLE JJEULG -->
+      <map code="0xcbde" name="1em"/><!-- HANGUL SYLLABLE JJEULM -->
+      <map code="0xcbdf" name="1em"/><!-- HANGUL SYLLABLE JJEULB -->
+      <map code="0xcbe0" name="1em"/><!-- HANGUL SYLLABLE JJEULS -->
+      <map code="0xcbe1" name="1em"/><!-- HANGUL SYLLABLE JJEULT -->
+      <map code="0xcbe2" name="1em"/><!-- HANGUL SYLLABLE JJEULP -->
+      <map code="0xcbe3" name="1em"/><!-- HANGUL SYLLABLE JJEULH -->
+      <map code="0xcbe4" name="1em"/><!-- HANGUL SYLLABLE JJEUM -->
+      <map code="0xcbe5" name="1em"/><!-- HANGUL SYLLABLE JJEUB -->
+      <map code="0xcbe6" name="1em"/><!-- HANGUL SYLLABLE JJEUBS -->
+      <map code="0xcbe7" name="1em"/><!-- HANGUL SYLLABLE JJEUS -->
+      <map code="0xcbe8" name="1em"/><!-- HANGUL SYLLABLE JJEUSS -->
+      <map code="0xcbe9" name="1em"/><!-- HANGUL SYLLABLE JJEUNG -->
+      <map code="0xcbea" name="1em"/><!-- HANGUL SYLLABLE JJEUJ -->
+      <map code="0xcbeb" name="1em"/><!-- HANGUL SYLLABLE JJEUC -->
+      <map code="0xcbec" name="1em"/><!-- HANGUL SYLLABLE JJEUK -->
+      <map code="0xcbed" name="1em"/><!-- HANGUL SYLLABLE JJEUT -->
+      <map code="0xcbee" name="1em"/><!-- HANGUL SYLLABLE JJEUP -->
+      <map code="0xcbef" name="1em"/><!-- HANGUL SYLLABLE JJEUH -->
+      <map code="0xcbf0" name="1em"/><!-- HANGUL SYLLABLE JJYI -->
+      <map code="0xcbf1" name="1em"/><!-- HANGUL SYLLABLE JJYIG -->
+      <map code="0xcbf2" name="1em"/><!-- HANGUL SYLLABLE JJYIGG -->
+      <map code="0xcbf3" name="1em"/><!-- HANGUL SYLLABLE JJYIGS -->
+      <map code="0xcbf4" name="1em"/><!-- HANGUL SYLLABLE JJYIN -->
+      <map code="0xcbf5" name="1em"/><!-- HANGUL SYLLABLE JJYINJ -->
+      <map code="0xcbf6" name="1em"/><!-- HANGUL SYLLABLE JJYINH -->
+      <map code="0xcbf7" name="1em"/><!-- HANGUL SYLLABLE JJYID -->
+      <map code="0xcbf8" name="1em"/><!-- HANGUL SYLLABLE JJYIL -->
+      <map code="0xcbf9" name="1em"/><!-- HANGUL SYLLABLE JJYILG -->
+      <map code="0xcbfa" name="1em"/><!-- HANGUL SYLLABLE JJYILM -->
+      <map code="0xcbfb" name="1em"/><!-- HANGUL SYLLABLE JJYILB -->
+      <map code="0xcbfc" name="1em"/><!-- HANGUL SYLLABLE JJYILS -->
+      <map code="0xcbfd" name="1em"/><!-- HANGUL SYLLABLE JJYILT -->
+      <map code="0xcbfe" name="1em"/><!-- HANGUL SYLLABLE JJYILP -->
+      <map code="0xcbff" name="1em"/><!-- HANGUL SYLLABLE JJYILH -->
+      <map code="0xcc00" name="1em"/><!-- HANGUL SYLLABLE JJYIM -->
+      <map code="0xcc01" name="1em"/><!-- HANGUL SYLLABLE JJYIB -->
+      <map code="0xcc02" name="1em"/><!-- HANGUL SYLLABLE JJYIBS -->
+      <map code="0xcc03" name="1em"/><!-- HANGUL SYLLABLE JJYIS -->
+      <map code="0xcc04" name="1em"/><!-- HANGUL SYLLABLE JJYISS -->
+      <map code="0xcc05" name="1em"/><!-- HANGUL SYLLABLE JJYING -->
+      <map code="0xcc06" name="1em"/><!-- HANGUL SYLLABLE JJYIJ -->
+      <map code="0xcc07" name="1em"/><!-- HANGUL SYLLABLE JJYIC -->
+      <map code="0xcc08" name="1em"/><!-- HANGUL SYLLABLE JJYIK -->
+      <map code="0xcc09" name="1em"/><!-- HANGUL SYLLABLE JJYIT -->
+      <map code="0xcc0a" name="1em"/><!-- HANGUL SYLLABLE JJYIP -->
+      <map code="0xcc0b" name="1em"/><!-- HANGUL SYLLABLE JJYIH -->
+      <map code="0xcc0c" name="1em"/><!-- HANGUL SYLLABLE JJI -->
+      <map code="0xcc0d" name="1em"/><!-- HANGUL SYLLABLE JJIG -->
+      <map code="0xcc0e" name="1em"/><!-- HANGUL SYLLABLE JJIGG -->
+      <map code="0xcc0f" name="1em"/><!-- HANGUL SYLLABLE JJIGS -->
+      <map code="0xcc10" name="1em"/><!-- HANGUL SYLLABLE JJIN -->
+      <map code="0xcc11" name="1em"/><!-- HANGUL SYLLABLE JJINJ -->
+      <map code="0xcc12" name="1em"/><!-- HANGUL SYLLABLE JJINH -->
+      <map code="0xcc13" name="1em"/><!-- HANGUL SYLLABLE JJID -->
+      <map code="0xcc14" name="1em"/><!-- HANGUL SYLLABLE JJIL -->
+      <map code="0xcc15" name="1em"/><!-- HANGUL SYLLABLE JJILG -->
+      <map code="0xcc16" name="1em"/><!-- HANGUL SYLLABLE JJILM -->
+      <map code="0xcc17" name="1em"/><!-- HANGUL SYLLABLE JJILB -->
+      <map code="0xcc18" name="1em"/><!-- HANGUL SYLLABLE JJILS -->
+      <map code="0xcc19" name="1em"/><!-- HANGUL SYLLABLE JJILT -->
+      <map code="0xcc1a" name="1em"/><!-- HANGUL SYLLABLE JJILP -->
+      <map code="0xcc1b" name="1em"/><!-- HANGUL SYLLABLE JJILH -->
+      <map code="0xcc1c" name="1em"/><!-- HANGUL SYLLABLE JJIM -->
+      <map code="0xcc1d" name="1em"/><!-- HANGUL SYLLABLE JJIB -->
+      <map code="0xcc1e" name="1em"/><!-- HANGUL SYLLABLE JJIBS -->
+      <map code="0xcc1f" name="1em"/><!-- HANGUL SYLLABLE JJIS -->
+      <map code="0xcc20" name="1em"/><!-- HANGUL SYLLABLE JJISS -->
+      <map code="0xcc21" name="1em"/><!-- HANGUL SYLLABLE JJING -->
+      <map code="0xcc22" name="1em"/><!-- HANGUL SYLLABLE JJIJ -->
+      <map code="0xcc23" name="1em"/><!-- HANGUL SYLLABLE JJIC -->
+      <map code="0xcc24" name="1em"/><!-- HANGUL SYLLABLE JJIK -->
+      <map code="0xcc25" name="1em"/><!-- HANGUL SYLLABLE JJIT -->
+      <map code="0xcc26" name="1em"/><!-- HANGUL SYLLABLE JJIP -->
+      <map code="0xcc27" name="1em"/><!-- HANGUL SYLLABLE JJIH -->
+      <map code="0xcc28" name="1em"/><!-- HANGUL SYLLABLE CA -->
+      <map code="0xcc29" name="1em"/><!-- HANGUL SYLLABLE CAG -->
+      <map code="0xcc2a" name="1em"/><!-- HANGUL SYLLABLE CAGG -->
+      <map code="0xcc2b" name="1em"/><!-- HANGUL SYLLABLE CAGS -->
+      <map code="0xcc2c" name="1em"/><!-- HANGUL SYLLABLE CAN -->
+      <map code="0xcc2d" name="1em"/><!-- HANGUL SYLLABLE CANJ -->
+      <map code="0xcc2e" name="1em"/><!-- HANGUL SYLLABLE CANH -->
+      <map code="0xcc2f" name="1em"/><!-- HANGUL SYLLABLE CAD -->
+      <map code="0xcc30" name="1em"/><!-- HANGUL SYLLABLE CAL -->
+      <map code="0xcc31" name="1em"/><!-- HANGUL SYLLABLE CALG -->
+      <map code="0xcc32" name="1em"/><!-- HANGUL SYLLABLE CALM -->
+      <map code="0xcc33" name="1em"/><!-- HANGUL SYLLABLE CALB -->
+      <map code="0xcc34" name="1em"/><!-- HANGUL SYLLABLE CALS -->
+      <map code="0xcc35" name="1em"/><!-- HANGUL SYLLABLE CALT -->
+      <map code="0xcc36" name="1em"/><!-- HANGUL SYLLABLE CALP -->
+      <map code="0xcc37" name="1em"/><!-- HANGUL SYLLABLE CALH -->
+      <map code="0xcc38" name="1em"/><!-- HANGUL SYLLABLE CAM -->
+      <map code="0xcc39" name="1em"/><!-- HANGUL SYLLABLE CAB -->
+      <map code="0xcc3a" name="1em"/><!-- HANGUL SYLLABLE CABS -->
+      <map code="0xcc3b" name="1em"/><!-- HANGUL SYLLABLE CAS -->
+      <map code="0xcc3c" name="1em"/><!-- HANGUL SYLLABLE CASS -->
+      <map code="0xcc3d" name="1em"/><!-- HANGUL SYLLABLE CANG -->
+      <map code="0xcc3e" name="1em"/><!-- HANGUL SYLLABLE CAJ -->
+      <map code="0xcc3f" name="1em"/><!-- HANGUL SYLLABLE CAC -->
+      <map code="0xcc40" name="1em"/><!-- HANGUL SYLLABLE CAK -->
+      <map code="0xcc41" name="1em"/><!-- HANGUL SYLLABLE CAT -->
+      <map code="0xcc42" name="1em"/><!-- HANGUL SYLLABLE CAP -->
+      <map code="0xcc43" name="1em"/><!-- HANGUL SYLLABLE CAH -->
+      <map code="0xcc44" name="1em"/><!-- HANGUL SYLLABLE CAE -->
+      <map code="0xcc45" name="1em"/><!-- HANGUL SYLLABLE CAEG -->
+      <map code="0xcc46" name="1em"/><!-- HANGUL SYLLABLE CAEGG -->
+      <map code="0xcc47" name="1em"/><!-- HANGUL SYLLABLE CAEGS -->
+      <map code="0xcc48" name="1em"/><!-- HANGUL SYLLABLE CAEN -->
+      <map code="0xcc49" name="1em"/><!-- HANGUL SYLLABLE CAENJ -->
+      <map code="0xcc4a" name="1em"/><!-- HANGUL SYLLABLE CAENH -->
+      <map code="0xcc4b" name="1em"/><!-- HANGUL SYLLABLE CAED -->
+      <map code="0xcc4c" name="1em"/><!-- HANGUL SYLLABLE CAEL -->
+      <map code="0xcc4d" name="1em"/><!-- HANGUL SYLLABLE CAELG -->
+      <map code="0xcc4e" name="1em"/><!-- HANGUL SYLLABLE CAELM -->
+      <map code="0xcc4f" name="1em"/><!-- HANGUL SYLLABLE CAELB -->
+      <map code="0xcc50" name="1em"/><!-- HANGUL SYLLABLE CAELS -->
+      <map code="0xcc51" name="1em"/><!-- HANGUL SYLLABLE CAELT -->
+      <map code="0xcc52" name="1em"/><!-- HANGUL SYLLABLE CAELP -->
+      <map code="0xcc53" name="1em"/><!-- HANGUL SYLLABLE CAELH -->
+      <map code="0xcc54" name="1em"/><!-- HANGUL SYLLABLE CAEM -->
+      <map code="0xcc55" name="1em"/><!-- HANGUL SYLLABLE CAEB -->
+      <map code="0xcc56" name="1em"/><!-- HANGUL SYLLABLE CAEBS -->
+      <map code="0xcc57" name="1em"/><!-- HANGUL SYLLABLE CAES -->
+      <map code="0xcc58" name="1em"/><!-- HANGUL SYLLABLE CAESS -->
+      <map code="0xcc59" name="1em"/><!-- HANGUL SYLLABLE CAENG -->
+      <map code="0xcc5a" name="1em"/><!-- HANGUL SYLLABLE CAEJ -->
+      <map code="0xcc5b" name="1em"/><!-- HANGUL SYLLABLE CAEC -->
+      <map code="0xcc5c" name="1em"/><!-- HANGUL SYLLABLE CAEK -->
+      <map code="0xcc5d" name="1em"/><!-- HANGUL SYLLABLE CAET -->
+      <map code="0xcc5e" name="1em"/><!-- HANGUL SYLLABLE CAEP -->
+      <map code="0xcc5f" name="1em"/><!-- HANGUL SYLLABLE CAEH -->
+      <map code="0xcc60" name="1em"/><!-- HANGUL SYLLABLE CYA -->
+      <map code="0xcc61" name="1em"/><!-- HANGUL SYLLABLE CYAG -->
+      <map code="0xcc62" name="1em"/><!-- HANGUL SYLLABLE CYAGG -->
+      <map code="0xcc63" name="1em"/><!-- HANGUL SYLLABLE CYAGS -->
+      <map code="0xcc64" name="1em"/><!-- HANGUL SYLLABLE CYAN -->
+      <map code="0xcc65" name="1em"/><!-- HANGUL SYLLABLE CYANJ -->
+      <map code="0xcc66" name="1em"/><!-- HANGUL SYLLABLE CYANH -->
+      <map code="0xcc67" name="1em"/><!-- HANGUL SYLLABLE CYAD -->
+      <map code="0xcc68" name="1em"/><!-- HANGUL SYLLABLE CYAL -->
+      <map code="0xcc69" name="1em"/><!-- HANGUL SYLLABLE CYALG -->
+      <map code="0xcc6a" name="1em"/><!-- HANGUL SYLLABLE CYALM -->
+      <map code="0xcc6b" name="1em"/><!-- HANGUL SYLLABLE CYALB -->
+      <map code="0xcc6c" name="1em"/><!-- HANGUL SYLLABLE CYALS -->
+      <map code="0xcc6d" name="1em"/><!-- HANGUL SYLLABLE CYALT -->
+      <map code="0xcc6e" name="1em"/><!-- HANGUL SYLLABLE CYALP -->
+      <map code="0xcc6f" name="1em"/><!-- HANGUL SYLLABLE CYALH -->
+      <map code="0xcc70" name="1em"/><!-- HANGUL SYLLABLE CYAM -->
+      <map code="0xcc71" name="1em"/><!-- HANGUL SYLLABLE CYAB -->
+      <map code="0xcc72" name="1em"/><!-- HANGUL SYLLABLE CYABS -->
+      <map code="0xcc73" name="1em"/><!-- HANGUL SYLLABLE CYAS -->
+      <map code="0xcc74" name="1em"/><!-- HANGUL SYLLABLE CYASS -->
+      <map code="0xcc75" name="1em"/><!-- HANGUL SYLLABLE CYANG -->
+      <map code="0xcc76" name="1em"/><!-- HANGUL SYLLABLE CYAJ -->
+      <map code="0xcc77" name="1em"/><!-- HANGUL SYLLABLE CYAC -->
+      <map code="0xcc78" name="1em"/><!-- HANGUL SYLLABLE CYAK -->
+      <map code="0xcc79" name="1em"/><!-- HANGUL SYLLABLE CYAT -->
+      <map code="0xcc7a" name="1em"/><!-- HANGUL SYLLABLE CYAP -->
+      <map code="0xcc7b" name="1em"/><!-- HANGUL SYLLABLE CYAH -->
+      <map code="0xcc7c" name="1em"/><!-- HANGUL SYLLABLE CYAE -->
+      <map code="0xcc7d" name="1em"/><!-- HANGUL SYLLABLE CYAEG -->
+      <map code="0xcc7e" name="1em"/><!-- HANGUL SYLLABLE CYAEGG -->
+      <map code="0xcc7f" name="1em"/><!-- HANGUL SYLLABLE CYAEGS -->
+      <map code="0xcc80" name="1em"/><!-- HANGUL SYLLABLE CYAEN -->
+      <map code="0xcc81" name="1em"/><!-- HANGUL SYLLABLE CYAENJ -->
+      <map code="0xcc82" name="1em"/><!-- HANGUL SYLLABLE CYAENH -->
+      <map code="0xcc83" name="1em"/><!-- HANGUL SYLLABLE CYAED -->
+      <map code="0xcc84" name="1em"/><!-- HANGUL SYLLABLE CYAEL -->
+      <map code="0xcc85" name="1em"/><!-- HANGUL SYLLABLE CYAELG -->
+      <map code="0xcc86" name="1em"/><!-- HANGUL SYLLABLE CYAELM -->
+      <map code="0xcc87" name="1em"/><!-- HANGUL SYLLABLE CYAELB -->
+      <map code="0xcc88" name="1em"/><!-- HANGUL SYLLABLE CYAELS -->
+      <map code="0xcc89" name="1em"/><!-- HANGUL SYLLABLE CYAELT -->
+      <map code="0xcc8a" name="1em"/><!-- HANGUL SYLLABLE CYAELP -->
+      <map code="0xcc8b" name="1em"/><!-- HANGUL SYLLABLE CYAELH -->
+      <map code="0xcc8c" name="1em"/><!-- HANGUL SYLLABLE CYAEM -->
+      <map code="0xcc8d" name="1em"/><!-- HANGUL SYLLABLE CYAEB -->
+      <map code="0xcc8e" name="1em"/><!-- HANGUL SYLLABLE CYAEBS -->
+      <map code="0xcc8f" name="1em"/><!-- HANGUL SYLLABLE CYAES -->
+      <map code="0xcc90" name="1em"/><!-- HANGUL SYLLABLE CYAESS -->
+      <map code="0xcc91" name="1em"/><!-- HANGUL SYLLABLE CYAENG -->
+      <map code="0xcc92" name="1em"/><!-- HANGUL SYLLABLE CYAEJ -->
+      <map code="0xcc93" name="1em"/><!-- HANGUL SYLLABLE CYAEC -->
+      <map code="0xcc94" name="1em"/><!-- HANGUL SYLLABLE CYAEK -->
+      <map code="0xcc95" name="1em"/><!-- HANGUL SYLLABLE CYAET -->
+      <map code="0xcc96" name="1em"/><!-- HANGUL SYLLABLE CYAEP -->
+      <map code="0xcc97" name="1em"/><!-- HANGUL SYLLABLE CYAEH -->
+      <map code="0xcc98" name="1em"/><!-- HANGUL SYLLABLE CEO -->
+      <map code="0xcc99" name="1em"/><!-- HANGUL SYLLABLE CEOG -->
+      <map code="0xcc9a" name="1em"/><!-- HANGUL SYLLABLE CEOGG -->
+      <map code="0xcc9b" name="1em"/><!-- HANGUL SYLLABLE CEOGS -->
+      <map code="0xcc9c" name="1em"/><!-- HANGUL SYLLABLE CEON -->
+      <map code="0xcc9d" name="1em"/><!-- HANGUL SYLLABLE CEONJ -->
+      <map code="0xcc9e" name="1em"/><!-- HANGUL SYLLABLE CEONH -->
+      <map code="0xcc9f" name="1em"/><!-- HANGUL SYLLABLE CEOD -->
+      <map code="0xcca0" name="1em"/><!-- HANGUL SYLLABLE CEOL -->
+      <map code="0xcca1" name="1em"/><!-- HANGUL SYLLABLE CEOLG -->
+      <map code="0xcca2" name="1em"/><!-- HANGUL SYLLABLE CEOLM -->
+      <map code="0xcca3" name="1em"/><!-- HANGUL SYLLABLE CEOLB -->
+      <map code="0xcca4" name="1em"/><!-- HANGUL SYLLABLE CEOLS -->
+      <map code="0xcca5" name="1em"/><!-- HANGUL SYLLABLE CEOLT -->
+      <map code="0xcca6" name="1em"/><!-- HANGUL SYLLABLE CEOLP -->
+      <map code="0xcca7" name="1em"/><!-- HANGUL SYLLABLE CEOLH -->
+      <map code="0xcca8" name="1em"/><!-- HANGUL SYLLABLE CEOM -->
+      <map code="0xcca9" name="1em"/><!-- HANGUL SYLLABLE CEOB -->
+      <map code="0xccaa" name="1em"/><!-- HANGUL SYLLABLE CEOBS -->
+      <map code="0xccab" name="1em"/><!-- HANGUL SYLLABLE CEOS -->
+      <map code="0xccac" name="1em"/><!-- HANGUL SYLLABLE CEOSS -->
+      <map code="0xccad" name="1em"/><!-- HANGUL SYLLABLE CEONG -->
+      <map code="0xccae" name="1em"/><!-- HANGUL SYLLABLE CEOJ -->
+      <map code="0xccaf" name="1em"/><!-- HANGUL SYLLABLE CEOC -->
+      <map code="0xccb0" name="1em"/><!-- HANGUL SYLLABLE CEOK -->
+      <map code="0xccb1" name="1em"/><!-- HANGUL SYLLABLE CEOT -->
+      <map code="0xccb2" name="1em"/><!-- HANGUL SYLLABLE CEOP -->
+      <map code="0xccb3" name="1em"/><!-- HANGUL SYLLABLE CEOH -->
+      <map code="0xccb4" name="1em"/><!-- HANGUL SYLLABLE CE -->
+      <map code="0xccb5" name="1em"/><!-- HANGUL SYLLABLE CEG -->
+      <map code="0xccb6" name="1em"/><!-- HANGUL SYLLABLE CEGG -->
+      <map code="0xccb7" name="1em"/><!-- HANGUL SYLLABLE CEGS -->
+      <map code="0xccb8" name="1em"/><!-- HANGUL SYLLABLE CEN -->
+      <map code="0xccb9" name="1em"/><!-- HANGUL SYLLABLE CENJ -->
+      <map code="0xccba" name="1em"/><!-- HANGUL SYLLABLE CENH -->
+      <map code="0xccbb" name="1em"/><!-- HANGUL SYLLABLE CED -->
+      <map code="0xccbc" name="1em"/><!-- HANGUL SYLLABLE CEL -->
+      <map code="0xccbd" name="1em"/><!-- HANGUL SYLLABLE CELG -->
+      <map code="0xccbe" name="1em"/><!-- HANGUL SYLLABLE CELM -->
+      <map code="0xccbf" name="1em"/><!-- HANGUL SYLLABLE CELB -->
+      <map code="0xccc0" name="1em"/><!-- HANGUL SYLLABLE CELS -->
+      <map code="0xccc1" name="1em"/><!-- HANGUL SYLLABLE CELT -->
+      <map code="0xccc2" name="1em"/><!-- HANGUL SYLLABLE CELP -->
+      <map code="0xccc3" name="1em"/><!-- HANGUL SYLLABLE CELH -->
+      <map code="0xccc4" name="1em"/><!-- HANGUL SYLLABLE CEM -->
+      <map code="0xccc5" name="1em"/><!-- HANGUL SYLLABLE CEB -->
+      <map code="0xccc6" name="1em"/><!-- HANGUL SYLLABLE CEBS -->
+      <map code="0xccc7" name="1em"/><!-- HANGUL SYLLABLE CES -->
+      <map code="0xccc8" name="1em"/><!-- HANGUL SYLLABLE CESS -->
+      <map code="0xccc9" name="1em"/><!-- HANGUL SYLLABLE CENG -->
+      <map code="0xccca" name="1em"/><!-- HANGUL SYLLABLE CEJ -->
+      <map code="0xcccb" name="1em"/><!-- HANGUL SYLLABLE CEC -->
+      <map code="0xcccc" name="1em"/><!-- HANGUL SYLLABLE CEK -->
+      <map code="0xcccd" name="1em"/><!-- HANGUL SYLLABLE CET -->
+      <map code="0xccce" name="1em"/><!-- HANGUL SYLLABLE CEP -->
+      <map code="0xcccf" name="1em"/><!-- HANGUL SYLLABLE CEH -->
+      <map code="0xccd0" name="1em"/><!-- HANGUL SYLLABLE CYEO -->
+      <map code="0xccd1" name="1em"/><!-- HANGUL SYLLABLE CYEOG -->
+      <map code="0xccd2" name="1em"/><!-- HANGUL SYLLABLE CYEOGG -->
+      <map code="0xccd3" name="1em"/><!-- HANGUL SYLLABLE CYEOGS -->
+      <map code="0xccd4" name="1em"/><!-- HANGUL SYLLABLE CYEON -->
+      <map code="0xccd5" name="1em"/><!-- HANGUL SYLLABLE CYEONJ -->
+      <map code="0xccd6" name="1em"/><!-- HANGUL SYLLABLE CYEONH -->
+      <map code="0xccd7" name="1em"/><!-- HANGUL SYLLABLE CYEOD -->
+      <map code="0xccd8" name="1em"/><!-- HANGUL SYLLABLE CYEOL -->
+      <map code="0xccd9" name="1em"/><!-- HANGUL SYLLABLE CYEOLG -->
+      <map code="0xccda" name="1em"/><!-- HANGUL SYLLABLE CYEOLM -->
+      <map code="0xccdb" name="1em"/><!-- HANGUL SYLLABLE CYEOLB -->
+      <map code="0xccdc" name="1em"/><!-- HANGUL SYLLABLE CYEOLS -->
+      <map code="0xccdd" name="1em"/><!-- HANGUL SYLLABLE CYEOLT -->
+      <map code="0xccde" name="1em"/><!-- HANGUL SYLLABLE CYEOLP -->
+      <map code="0xccdf" name="1em"/><!-- HANGUL SYLLABLE CYEOLH -->
+      <map code="0xcce0" name="1em"/><!-- HANGUL SYLLABLE CYEOM -->
+      <map code="0xcce1" name="1em"/><!-- HANGUL SYLLABLE CYEOB -->
+      <map code="0xcce2" name="1em"/><!-- HANGUL SYLLABLE CYEOBS -->
+      <map code="0xcce3" name="1em"/><!-- HANGUL SYLLABLE CYEOS -->
+      <map code="0xcce4" name="1em"/><!-- HANGUL SYLLABLE CYEOSS -->
+      <map code="0xcce5" name="1em"/><!-- HANGUL SYLLABLE CYEONG -->
+      <map code="0xcce6" name="1em"/><!-- HANGUL SYLLABLE CYEOJ -->
+      <map code="0xcce7" name="1em"/><!-- HANGUL SYLLABLE CYEOC -->
+      <map code="0xcce8" name="1em"/><!-- HANGUL SYLLABLE CYEOK -->
+      <map code="0xcce9" name="1em"/><!-- HANGUL SYLLABLE CYEOT -->
+      <map code="0xccea" name="1em"/><!-- HANGUL SYLLABLE CYEOP -->
+      <map code="0xcceb" name="1em"/><!-- HANGUL SYLLABLE CYEOH -->
+      <map code="0xccec" name="1em"/><!-- HANGUL SYLLABLE CYE -->
+      <map code="0xcced" name="1em"/><!-- HANGUL SYLLABLE CYEG -->
+      <map code="0xccee" name="1em"/><!-- HANGUL SYLLABLE CYEGG -->
+      <map code="0xccef" name="1em"/><!-- HANGUL SYLLABLE CYEGS -->
+      <map code="0xccf0" name="1em"/><!-- HANGUL SYLLABLE CYEN -->
+      <map code="0xccf1" name="1em"/><!-- HANGUL SYLLABLE CYENJ -->
+      <map code="0xccf2" name="1em"/><!-- HANGUL SYLLABLE CYENH -->
+      <map code="0xccf3" name="1em"/><!-- HANGUL SYLLABLE CYED -->
+      <map code="0xccf4" name="1em"/><!-- HANGUL SYLLABLE CYEL -->
+      <map code="0xccf5" name="1em"/><!-- HANGUL SYLLABLE CYELG -->
+      <map code="0xccf6" name="1em"/><!-- HANGUL SYLLABLE CYELM -->
+      <map code="0xccf7" name="1em"/><!-- HANGUL SYLLABLE CYELB -->
+      <map code="0xccf8" name="1em"/><!-- HANGUL SYLLABLE CYELS -->
+      <map code="0xccf9" name="1em"/><!-- HANGUL SYLLABLE CYELT -->
+      <map code="0xccfa" name="1em"/><!-- HANGUL SYLLABLE CYELP -->
+      <map code="0xccfb" name="1em"/><!-- HANGUL SYLLABLE CYELH -->
+      <map code="0xccfc" name="1em"/><!-- HANGUL SYLLABLE CYEM -->
+      <map code="0xccfd" name="1em"/><!-- HANGUL SYLLABLE CYEB -->
+      <map code="0xccfe" name="1em"/><!-- HANGUL SYLLABLE CYEBS -->
+      <map code="0xccff" name="1em"/><!-- HANGUL SYLLABLE CYES -->
+      <map code="0xcd00" name="1em"/><!-- HANGUL SYLLABLE CYESS -->
+      <map code="0xcd01" name="1em"/><!-- HANGUL SYLLABLE CYENG -->
+      <map code="0xcd02" name="1em"/><!-- HANGUL SYLLABLE CYEJ -->
+      <map code="0xcd03" name="1em"/><!-- HANGUL SYLLABLE CYEC -->
+      <map code="0xcd04" name="1em"/><!-- HANGUL SYLLABLE CYEK -->
+      <map code="0xcd05" name="1em"/><!-- HANGUL SYLLABLE CYET -->
+      <map code="0xcd06" name="1em"/><!-- HANGUL SYLLABLE CYEP -->
+      <map code="0xcd07" name="1em"/><!-- HANGUL SYLLABLE CYEH -->
+      <map code="0xcd08" name="1em"/><!-- HANGUL SYLLABLE CO -->
+      <map code="0xcd09" name="1em"/><!-- HANGUL SYLLABLE COG -->
+      <map code="0xcd0a" name="1em"/><!-- HANGUL SYLLABLE COGG -->
+      <map code="0xcd0b" name="1em"/><!-- HANGUL SYLLABLE COGS -->
+      <map code="0xcd0c" name="1em"/><!-- HANGUL SYLLABLE CON -->
+      <map code="0xcd0d" name="1em"/><!-- HANGUL SYLLABLE CONJ -->
+      <map code="0xcd0e" name="1em"/><!-- HANGUL SYLLABLE CONH -->
+      <map code="0xcd0f" name="1em"/><!-- HANGUL SYLLABLE COD -->
+      <map code="0xcd10" name="1em"/><!-- HANGUL SYLLABLE COL -->
+      <map code="0xcd11" name="1em"/><!-- HANGUL SYLLABLE COLG -->
+      <map code="0xcd12" name="1em"/><!-- HANGUL SYLLABLE COLM -->
+      <map code="0xcd13" name="1em"/><!-- HANGUL SYLLABLE COLB -->
+      <map code="0xcd14" name="1em"/><!-- HANGUL SYLLABLE COLS -->
+      <map code="0xcd15" name="1em"/><!-- HANGUL SYLLABLE COLT -->
+      <map code="0xcd16" name="1em"/><!-- HANGUL SYLLABLE COLP -->
+      <map code="0xcd17" name="1em"/><!-- HANGUL SYLLABLE COLH -->
+      <map code="0xcd18" name="1em"/><!-- HANGUL SYLLABLE COM -->
+      <map code="0xcd19" name="1em"/><!-- HANGUL SYLLABLE COB -->
+      <map code="0xcd1a" name="1em"/><!-- HANGUL SYLLABLE COBS -->
+      <map code="0xcd1b" name="1em"/><!-- HANGUL SYLLABLE COS -->
+      <map code="0xcd1c" name="1em"/><!-- HANGUL SYLLABLE COSS -->
+      <map code="0xcd1d" name="1em"/><!-- HANGUL SYLLABLE CONG -->
+      <map code="0xcd1e" name="1em"/><!-- HANGUL SYLLABLE COJ -->
+      <map code="0xcd1f" name="1em"/><!-- HANGUL SYLLABLE COC -->
+      <map code="0xcd20" name="1em"/><!-- HANGUL SYLLABLE COK -->
+      <map code="0xcd21" name="1em"/><!-- HANGUL SYLLABLE COT -->
+      <map code="0xcd22" name="1em"/><!-- HANGUL SYLLABLE COP -->
+      <map code="0xcd23" name="1em"/><!-- HANGUL SYLLABLE COH -->
+      <map code="0xcd24" name="1em"/><!-- HANGUL SYLLABLE CWA -->
+      <map code="0xcd25" name="1em"/><!-- HANGUL SYLLABLE CWAG -->
+      <map code="0xcd26" name="1em"/><!-- HANGUL SYLLABLE CWAGG -->
+      <map code="0xcd27" name="1em"/><!-- HANGUL SYLLABLE CWAGS -->
+      <map code="0xcd28" name="1em"/><!-- HANGUL SYLLABLE CWAN -->
+      <map code="0xcd29" name="1em"/><!-- HANGUL SYLLABLE CWANJ -->
+      <map code="0xcd2a" name="1em"/><!-- HANGUL SYLLABLE CWANH -->
+      <map code="0xcd2b" name="1em"/><!-- HANGUL SYLLABLE CWAD -->
+      <map code="0xcd2c" name="1em"/><!-- HANGUL SYLLABLE CWAL -->
+      <map code="0xcd2d" name="1em"/><!-- HANGUL SYLLABLE CWALG -->
+      <map code="0xcd2e" name="1em"/><!-- HANGUL SYLLABLE CWALM -->
+      <map code="0xcd2f" name="1em"/><!-- HANGUL SYLLABLE CWALB -->
+      <map code="0xcd30" name="1em"/><!-- HANGUL SYLLABLE CWALS -->
+      <map code="0xcd31" name="1em"/><!-- HANGUL SYLLABLE CWALT -->
+      <map code="0xcd32" name="1em"/><!-- HANGUL SYLLABLE CWALP -->
+      <map code="0xcd33" name="1em"/><!-- HANGUL SYLLABLE CWALH -->
+      <map code="0xcd34" name="1em"/><!-- HANGUL SYLLABLE CWAM -->
+      <map code="0xcd35" name="1em"/><!-- HANGUL SYLLABLE CWAB -->
+      <map code="0xcd36" name="1em"/><!-- HANGUL SYLLABLE CWABS -->
+      <map code="0xcd37" name="1em"/><!-- HANGUL SYLLABLE CWAS -->
+      <map code="0xcd38" name="1em"/><!-- HANGUL SYLLABLE CWASS -->
+      <map code="0xcd39" name="1em"/><!-- HANGUL SYLLABLE CWANG -->
+      <map code="0xcd3a" name="1em"/><!-- HANGUL SYLLABLE CWAJ -->
+      <map code="0xcd3b" name="1em"/><!-- HANGUL SYLLABLE CWAC -->
+      <map code="0xcd3c" name="1em"/><!-- HANGUL SYLLABLE CWAK -->
+      <map code="0xcd3d" name="1em"/><!-- HANGUL SYLLABLE CWAT -->
+      <map code="0xcd3e" name="1em"/><!-- HANGUL SYLLABLE CWAP -->
+      <map code="0xcd3f" name="1em"/><!-- HANGUL SYLLABLE CWAH -->
+      <map code="0xcd40" name="1em"/><!-- HANGUL SYLLABLE CWAE -->
+      <map code="0xcd41" name="1em"/><!-- HANGUL SYLLABLE CWAEG -->
+      <map code="0xcd42" name="1em"/><!-- HANGUL SYLLABLE CWAEGG -->
+      <map code="0xcd43" name="1em"/><!-- HANGUL SYLLABLE CWAEGS -->
+      <map code="0xcd44" name="1em"/><!-- HANGUL SYLLABLE CWAEN -->
+      <map code="0xcd45" name="1em"/><!-- HANGUL SYLLABLE CWAENJ -->
+      <map code="0xcd46" name="1em"/><!-- HANGUL SYLLABLE CWAENH -->
+      <map code="0xcd47" name="1em"/><!-- HANGUL SYLLABLE CWAED -->
+      <map code="0xcd48" name="1em"/><!-- HANGUL SYLLABLE CWAEL -->
+      <map code="0xcd49" name="1em"/><!-- HANGUL SYLLABLE CWAELG -->
+      <map code="0xcd4a" name="1em"/><!-- HANGUL SYLLABLE CWAELM -->
+      <map code="0xcd4b" name="1em"/><!-- HANGUL SYLLABLE CWAELB -->
+      <map code="0xcd4c" name="1em"/><!-- HANGUL SYLLABLE CWAELS -->
+      <map code="0xcd4d" name="1em"/><!-- HANGUL SYLLABLE CWAELT -->
+      <map code="0xcd4e" name="1em"/><!-- HANGUL SYLLABLE CWAELP -->
+      <map code="0xcd4f" name="1em"/><!-- HANGUL SYLLABLE CWAELH -->
+      <map code="0xcd50" name="1em"/><!-- HANGUL SYLLABLE CWAEM -->
+      <map code="0xcd51" name="1em"/><!-- HANGUL SYLLABLE CWAEB -->
+      <map code="0xcd52" name="1em"/><!-- HANGUL SYLLABLE CWAEBS -->
+      <map code="0xcd53" name="1em"/><!-- HANGUL SYLLABLE CWAES -->
+      <map code="0xcd54" name="1em"/><!-- HANGUL SYLLABLE CWAESS -->
+      <map code="0xcd55" name="1em"/><!-- HANGUL SYLLABLE CWAENG -->
+      <map code="0xcd56" name="1em"/><!-- HANGUL SYLLABLE CWAEJ -->
+      <map code="0xcd57" name="1em"/><!-- HANGUL SYLLABLE CWAEC -->
+      <map code="0xcd58" name="1em"/><!-- HANGUL SYLLABLE CWAEK -->
+      <map code="0xcd59" name="1em"/><!-- HANGUL SYLLABLE CWAET -->
+      <map code="0xcd5a" name="1em"/><!-- HANGUL SYLLABLE CWAEP -->
+      <map code="0xcd5b" name="1em"/><!-- HANGUL SYLLABLE CWAEH -->
+      <map code="0xcd5c" name="1em"/><!-- HANGUL SYLLABLE COE -->
+      <map code="0xcd5d" name="1em"/><!-- HANGUL SYLLABLE COEG -->
+      <map code="0xcd5e" name="1em"/><!-- HANGUL SYLLABLE COEGG -->
+      <map code="0xcd5f" name="1em"/><!-- HANGUL SYLLABLE COEGS -->
+      <map code="0xcd60" name="1em"/><!-- HANGUL SYLLABLE COEN -->
+      <map code="0xcd61" name="1em"/><!-- HANGUL SYLLABLE COENJ -->
+      <map code="0xcd62" name="1em"/><!-- HANGUL SYLLABLE COENH -->
+      <map code="0xcd63" name="1em"/><!-- HANGUL SYLLABLE COED -->
+      <map code="0xcd64" name="1em"/><!-- HANGUL SYLLABLE COEL -->
+      <map code="0xcd65" name="1em"/><!-- HANGUL SYLLABLE COELG -->
+      <map code="0xcd66" name="1em"/><!-- HANGUL SYLLABLE COELM -->
+      <map code="0xcd67" name="1em"/><!-- HANGUL SYLLABLE COELB -->
+      <map code="0xcd68" name="1em"/><!-- HANGUL SYLLABLE COELS -->
+      <map code="0xcd69" name="1em"/><!-- HANGUL SYLLABLE COELT -->
+      <map code="0xcd6a" name="1em"/><!-- HANGUL SYLLABLE COELP -->
+      <map code="0xcd6b" name="1em"/><!-- HANGUL SYLLABLE COELH -->
+      <map code="0xcd6c" name="1em"/><!-- HANGUL SYLLABLE COEM -->
+      <map code="0xcd6d" name="1em"/><!-- HANGUL SYLLABLE COEB -->
+      <map code="0xcd6e" name="1em"/><!-- HANGUL SYLLABLE COEBS -->
+      <map code="0xcd6f" name="1em"/><!-- HANGUL SYLLABLE COES -->
+      <map code="0xcd70" name="1em"/><!-- HANGUL SYLLABLE COESS -->
+      <map code="0xcd71" name="1em"/><!-- HANGUL SYLLABLE COENG -->
+      <map code="0xcd72" name="1em"/><!-- HANGUL SYLLABLE COEJ -->
+      <map code="0xcd73" name="1em"/><!-- HANGUL SYLLABLE COEC -->
+      <map code="0xcd74" name="1em"/><!-- HANGUL SYLLABLE COEK -->
+      <map code="0xcd75" name="1em"/><!-- HANGUL SYLLABLE COET -->
+      <map code="0xcd76" name="1em"/><!-- HANGUL SYLLABLE COEP -->
+      <map code="0xcd77" name="1em"/><!-- HANGUL SYLLABLE COEH -->
+      <map code="0xcd78" name="1em"/><!-- HANGUL SYLLABLE CYO -->
+      <map code="0xcd79" name="1em"/><!-- HANGUL SYLLABLE CYOG -->
+      <map code="0xcd7a" name="1em"/><!-- HANGUL SYLLABLE CYOGG -->
+      <map code="0xcd7b" name="1em"/><!-- HANGUL SYLLABLE CYOGS -->
+      <map code="0xcd7c" name="1em"/><!-- HANGUL SYLLABLE CYON -->
+      <map code="0xcd7d" name="1em"/><!-- HANGUL SYLLABLE CYONJ -->
+      <map code="0xcd7e" name="1em"/><!-- HANGUL SYLLABLE CYONH -->
+      <map code="0xcd7f" name="1em"/><!-- HANGUL SYLLABLE CYOD -->
+      <map code="0xcd80" name="1em"/><!-- HANGUL SYLLABLE CYOL -->
+      <map code="0xcd81" name="1em"/><!-- HANGUL SYLLABLE CYOLG -->
+      <map code="0xcd82" name="1em"/><!-- HANGUL SYLLABLE CYOLM -->
+      <map code="0xcd83" name="1em"/><!-- HANGUL SYLLABLE CYOLB -->
+      <map code="0xcd84" name="1em"/><!-- HANGUL SYLLABLE CYOLS -->
+      <map code="0xcd85" name="1em"/><!-- HANGUL SYLLABLE CYOLT -->
+      <map code="0xcd86" name="1em"/><!-- HANGUL SYLLABLE CYOLP -->
+      <map code="0xcd87" name="1em"/><!-- HANGUL SYLLABLE CYOLH -->
+      <map code="0xcd88" name="1em"/><!-- HANGUL SYLLABLE CYOM -->
+      <map code="0xcd89" name="1em"/><!-- HANGUL SYLLABLE CYOB -->
+      <map code="0xcd8a" name="1em"/><!-- HANGUL SYLLABLE CYOBS -->
+      <map code="0xcd8b" name="1em"/><!-- HANGUL SYLLABLE CYOS -->
+      <map code="0xcd8c" name="1em"/><!-- HANGUL SYLLABLE CYOSS -->
+      <map code="0xcd8d" name="1em"/><!-- HANGUL SYLLABLE CYONG -->
+      <map code="0xcd8e" name="1em"/><!-- HANGUL SYLLABLE CYOJ -->
+      <map code="0xcd8f" name="1em"/><!-- HANGUL SYLLABLE CYOC -->
+      <map code="0xcd90" name="1em"/><!-- HANGUL SYLLABLE CYOK -->
+      <map code="0xcd91" name="1em"/><!-- HANGUL SYLLABLE CYOT -->
+      <map code="0xcd92" name="1em"/><!-- HANGUL SYLLABLE CYOP -->
+      <map code="0xcd93" name="1em"/><!-- HANGUL SYLLABLE CYOH -->
+      <map code="0xcd94" name="1em"/><!-- HANGUL SYLLABLE CU -->
+      <map code="0xcd95" name="1em"/><!-- HANGUL SYLLABLE CUG -->
+      <map code="0xcd96" name="1em"/><!-- HANGUL SYLLABLE CUGG -->
+      <map code="0xcd97" name="1em"/><!-- HANGUL SYLLABLE CUGS -->
+      <map code="0xcd98" name="1em"/><!-- HANGUL SYLLABLE CUN -->
+      <map code="0xcd99" name="1em"/><!-- HANGUL SYLLABLE CUNJ -->
+      <map code="0xcd9a" name="1em"/><!-- HANGUL SYLLABLE CUNH -->
+      <map code="0xcd9b" name="1em"/><!-- HANGUL SYLLABLE CUD -->
+      <map code="0xcd9c" name="1em"/><!-- HANGUL SYLLABLE CUL -->
+      <map code="0xcd9d" name="1em"/><!-- HANGUL SYLLABLE CULG -->
+      <map code="0xcd9e" name="1em"/><!-- HANGUL SYLLABLE CULM -->
+      <map code="0xcd9f" name="1em"/><!-- HANGUL SYLLABLE CULB -->
+      <map code="0xcda0" name="1em"/><!-- HANGUL SYLLABLE CULS -->
+      <map code="0xcda1" name="1em"/><!-- HANGUL SYLLABLE CULT -->
+      <map code="0xcda2" name="1em"/><!-- HANGUL SYLLABLE CULP -->
+      <map code="0xcda3" name="1em"/><!-- HANGUL SYLLABLE CULH -->
+      <map code="0xcda4" name="1em"/><!-- HANGUL SYLLABLE CUM -->
+      <map code="0xcda5" name="1em"/><!-- HANGUL SYLLABLE CUB -->
+      <map code="0xcda6" name="1em"/><!-- HANGUL SYLLABLE CUBS -->
+      <map code="0xcda7" name="1em"/><!-- HANGUL SYLLABLE CUS -->
+      <map code="0xcda8" name="1em"/><!-- HANGUL SYLLABLE CUSS -->
+      <map code="0xcda9" name="1em"/><!-- HANGUL SYLLABLE CUNG -->
+      <map code="0xcdaa" name="1em"/><!-- HANGUL SYLLABLE CUJ -->
+      <map code="0xcdab" name="1em"/><!-- HANGUL SYLLABLE CUC -->
+      <map code="0xcdac" name="1em"/><!-- HANGUL SYLLABLE CUK -->
+      <map code="0xcdad" name="1em"/><!-- HANGUL SYLLABLE CUT -->
+      <map code="0xcdae" name="1em"/><!-- HANGUL SYLLABLE CUP -->
+      <map code="0xcdaf" name="1em"/><!-- HANGUL SYLLABLE CUH -->
+      <map code="0xcdb0" name="1em"/><!-- HANGUL SYLLABLE CWEO -->
+      <map code="0xcdb1" name="1em"/><!-- HANGUL SYLLABLE CWEOG -->
+      <map code="0xcdb2" name="1em"/><!-- HANGUL SYLLABLE CWEOGG -->
+      <map code="0xcdb3" name="1em"/><!-- HANGUL SYLLABLE CWEOGS -->
+      <map code="0xcdb4" name="1em"/><!-- HANGUL SYLLABLE CWEON -->
+      <map code="0xcdb5" name="1em"/><!-- HANGUL SYLLABLE CWEONJ -->
+      <map code="0xcdb6" name="1em"/><!-- HANGUL SYLLABLE CWEONH -->
+      <map code="0xcdb7" name="1em"/><!-- HANGUL SYLLABLE CWEOD -->
+      <map code="0xcdb8" name="1em"/><!-- HANGUL SYLLABLE CWEOL -->
+      <map code="0xcdb9" name="1em"/><!-- HANGUL SYLLABLE CWEOLG -->
+      <map code="0xcdba" name="1em"/><!-- HANGUL SYLLABLE CWEOLM -->
+      <map code="0xcdbb" name="1em"/><!-- HANGUL SYLLABLE CWEOLB -->
+      <map code="0xcdbc" name="1em"/><!-- HANGUL SYLLABLE CWEOLS -->
+      <map code="0xcdbd" name="1em"/><!-- HANGUL SYLLABLE CWEOLT -->
+      <map code="0xcdbe" name="1em"/><!-- HANGUL SYLLABLE CWEOLP -->
+      <map code="0xcdbf" name="1em"/><!-- HANGUL SYLLABLE CWEOLH -->
+      <map code="0xcdc0" name="1em"/><!-- HANGUL SYLLABLE CWEOM -->
+      <map code="0xcdc1" name="1em"/><!-- HANGUL SYLLABLE CWEOB -->
+      <map code="0xcdc2" name="1em"/><!-- HANGUL SYLLABLE CWEOBS -->
+      <map code="0xcdc3" name="1em"/><!-- HANGUL SYLLABLE CWEOS -->
+      <map code="0xcdc4" name="1em"/><!-- HANGUL SYLLABLE CWEOSS -->
+      <map code="0xcdc5" name="1em"/><!-- HANGUL SYLLABLE CWEONG -->
+      <map code="0xcdc6" name="1em"/><!-- HANGUL SYLLABLE CWEOJ -->
+      <map code="0xcdc7" name="1em"/><!-- HANGUL SYLLABLE CWEOC -->
+      <map code="0xcdc8" name="1em"/><!-- HANGUL SYLLABLE CWEOK -->
+      <map code="0xcdc9" name="1em"/><!-- HANGUL SYLLABLE CWEOT -->
+      <map code="0xcdca" name="1em"/><!-- HANGUL SYLLABLE CWEOP -->
+      <map code="0xcdcb" name="1em"/><!-- HANGUL SYLLABLE CWEOH -->
+      <map code="0xcdcc" name="1em"/><!-- HANGUL SYLLABLE CWE -->
+      <map code="0xcdcd" name="1em"/><!-- HANGUL SYLLABLE CWEG -->
+      <map code="0xcdce" name="1em"/><!-- HANGUL SYLLABLE CWEGG -->
+      <map code="0xcdcf" name="1em"/><!-- HANGUL SYLLABLE CWEGS -->
+      <map code="0xcdd0" name="1em"/><!-- HANGUL SYLLABLE CWEN -->
+      <map code="0xcdd1" name="1em"/><!-- HANGUL SYLLABLE CWENJ -->
+      <map code="0xcdd2" name="1em"/><!-- HANGUL SYLLABLE CWENH -->
+      <map code="0xcdd3" name="1em"/><!-- HANGUL SYLLABLE CWED -->
+      <map code="0xcdd4" name="1em"/><!-- HANGUL SYLLABLE CWEL -->
+      <map code="0xcdd5" name="1em"/><!-- HANGUL SYLLABLE CWELG -->
+      <map code="0xcdd6" name="1em"/><!-- HANGUL SYLLABLE CWELM -->
+      <map code="0xcdd7" name="1em"/><!-- HANGUL SYLLABLE CWELB -->
+      <map code="0xcdd8" name="1em"/><!-- HANGUL SYLLABLE CWELS -->
+      <map code="0xcdd9" name="1em"/><!-- HANGUL SYLLABLE CWELT -->
+      <map code="0xcdda" name="1em"/><!-- HANGUL SYLLABLE CWELP -->
+      <map code="0xcddb" name="1em"/><!-- HANGUL SYLLABLE CWELH -->
+      <map code="0xcddc" name="1em"/><!-- HANGUL SYLLABLE CWEM -->
+      <map code="0xcddd" name="1em"/><!-- HANGUL SYLLABLE CWEB -->
+      <map code="0xcdde" name="1em"/><!-- HANGUL SYLLABLE CWEBS -->
+      <map code="0xcddf" name="1em"/><!-- HANGUL SYLLABLE CWES -->
+      <map code="0xcde0" name="1em"/><!-- HANGUL SYLLABLE CWESS -->
+      <map code="0xcde1" name="1em"/><!-- HANGUL SYLLABLE CWENG -->
+      <map code="0xcde2" name="1em"/><!-- HANGUL SYLLABLE CWEJ -->
+      <map code="0xcde3" name="1em"/><!-- HANGUL SYLLABLE CWEC -->
+      <map code="0xcde4" name="1em"/><!-- HANGUL SYLLABLE CWEK -->
+      <map code="0xcde5" name="1em"/><!-- HANGUL SYLLABLE CWET -->
+      <map code="0xcde6" name="1em"/><!-- HANGUL SYLLABLE CWEP -->
+      <map code="0xcde7" name="1em"/><!-- HANGUL SYLLABLE CWEH -->
+      <map code="0xcde8" name="1em"/><!-- HANGUL SYLLABLE CWI -->
+      <map code="0xcde9" name="1em"/><!-- HANGUL SYLLABLE CWIG -->
+      <map code="0xcdea" name="1em"/><!-- HANGUL SYLLABLE CWIGG -->
+      <map code="0xcdeb" name="1em"/><!-- HANGUL SYLLABLE CWIGS -->
+      <map code="0xcdec" name="1em"/><!-- HANGUL SYLLABLE CWIN -->
+      <map code="0xcded" name="1em"/><!-- HANGUL SYLLABLE CWINJ -->
+      <map code="0xcdee" name="1em"/><!-- HANGUL SYLLABLE CWINH -->
+      <map code="0xcdef" name="1em"/><!-- HANGUL SYLLABLE CWID -->
+      <map code="0xcdf0" name="1em"/><!-- HANGUL SYLLABLE CWIL -->
+      <map code="0xcdf1" name="1em"/><!-- HANGUL SYLLABLE CWILG -->
+      <map code="0xcdf2" name="1em"/><!-- HANGUL SYLLABLE CWILM -->
+      <map code="0xcdf3" name="1em"/><!-- HANGUL SYLLABLE CWILB -->
+      <map code="0xcdf4" name="1em"/><!-- HANGUL SYLLABLE CWILS -->
+      <map code="0xcdf5" name="1em"/><!-- HANGUL SYLLABLE CWILT -->
+      <map code="0xcdf6" name="1em"/><!-- HANGUL SYLLABLE CWILP -->
+      <map code="0xcdf7" name="1em"/><!-- HANGUL SYLLABLE CWILH -->
+      <map code="0xcdf8" name="1em"/><!-- HANGUL SYLLABLE CWIM -->
+      <map code="0xcdf9" name="1em"/><!-- HANGUL SYLLABLE CWIB -->
+      <map code="0xcdfa" name="1em"/><!-- HANGUL SYLLABLE CWIBS -->
+      <map code="0xcdfb" name="1em"/><!-- HANGUL SYLLABLE CWIS -->
+      <map code="0xcdfc" name="1em"/><!-- HANGUL SYLLABLE CWISS -->
+      <map code="0xcdfd" name="1em"/><!-- HANGUL SYLLABLE CWING -->
+      <map code="0xcdfe" name="1em"/><!-- HANGUL SYLLABLE CWIJ -->
+      <map code="0xcdff" name="1em"/><!-- HANGUL SYLLABLE CWIC -->
+      <map code="0xce00" name="1em"/><!-- HANGUL SYLLABLE CWIK -->
+      <map code="0xce01" name="1em"/><!-- HANGUL SYLLABLE CWIT -->
+      <map code="0xce02" name="1em"/><!-- HANGUL SYLLABLE CWIP -->
+      <map code="0xce03" name="1em"/><!-- HANGUL SYLLABLE CWIH -->
+      <map code="0xce04" name="1em"/><!-- HANGUL SYLLABLE CYU -->
+      <map code="0xce05" name="1em"/><!-- HANGUL SYLLABLE CYUG -->
+      <map code="0xce06" name="1em"/><!-- HANGUL SYLLABLE CYUGG -->
+      <map code="0xce07" name="1em"/><!-- HANGUL SYLLABLE CYUGS -->
+      <map code="0xce08" name="1em"/><!-- HANGUL SYLLABLE CYUN -->
+      <map code="0xce09" name="1em"/><!-- HANGUL SYLLABLE CYUNJ -->
+      <map code="0xce0a" name="1em"/><!-- HANGUL SYLLABLE CYUNH -->
+      <map code="0xce0b" name="1em"/><!-- HANGUL SYLLABLE CYUD -->
+      <map code="0xce0c" name="1em"/><!-- HANGUL SYLLABLE CYUL -->
+      <map code="0xce0d" name="1em"/><!-- HANGUL SYLLABLE CYULG -->
+      <map code="0xce0e" name="1em"/><!-- HANGUL SYLLABLE CYULM -->
+      <map code="0xce0f" name="1em"/><!-- HANGUL SYLLABLE CYULB -->
+      <map code="0xce10" name="1em"/><!-- HANGUL SYLLABLE CYULS -->
+      <map code="0xce11" name="1em"/><!-- HANGUL SYLLABLE CYULT -->
+      <map code="0xce12" name="1em"/><!-- HANGUL SYLLABLE CYULP -->
+      <map code="0xce13" name="1em"/><!-- HANGUL SYLLABLE CYULH -->
+      <map code="0xce14" name="1em"/><!-- HANGUL SYLLABLE CYUM -->
+      <map code="0xce15" name="1em"/><!-- HANGUL SYLLABLE CYUB -->
+      <map code="0xce16" name="1em"/><!-- HANGUL SYLLABLE CYUBS -->
+      <map code="0xce17" name="1em"/><!-- HANGUL SYLLABLE CYUS -->
+      <map code="0xce18" name="1em"/><!-- HANGUL SYLLABLE CYUSS -->
+      <map code="0xce19" name="1em"/><!-- HANGUL SYLLABLE CYUNG -->
+      <map code="0xce1a" name="1em"/><!-- HANGUL SYLLABLE CYUJ -->
+      <map code="0xce1b" name="1em"/><!-- HANGUL SYLLABLE CYUC -->
+      <map code="0xce1c" name="1em"/><!-- HANGUL SYLLABLE CYUK -->
+      <map code="0xce1d" name="1em"/><!-- HANGUL SYLLABLE CYUT -->
+      <map code="0xce1e" name="1em"/><!-- HANGUL SYLLABLE CYUP -->
+      <map code="0xce1f" name="1em"/><!-- HANGUL SYLLABLE CYUH -->
+      <map code="0xce20" name="1em"/><!-- HANGUL SYLLABLE CEU -->
+      <map code="0xce21" name="1em"/><!-- HANGUL SYLLABLE CEUG -->
+      <map code="0xce22" name="1em"/><!-- HANGUL SYLLABLE CEUGG -->
+      <map code="0xce23" name="1em"/><!-- HANGUL SYLLABLE CEUGS -->
+      <map code="0xce24" name="1em"/><!-- HANGUL SYLLABLE CEUN -->
+      <map code="0xce25" name="1em"/><!-- HANGUL SYLLABLE CEUNJ -->
+      <map code="0xce26" name="1em"/><!-- HANGUL SYLLABLE CEUNH -->
+      <map code="0xce27" name="1em"/><!-- HANGUL SYLLABLE CEUD -->
+      <map code="0xce28" name="1em"/><!-- HANGUL SYLLABLE CEUL -->
+      <map code="0xce29" name="1em"/><!-- HANGUL SYLLABLE CEULG -->
+      <map code="0xce2a" name="1em"/><!-- HANGUL SYLLABLE CEULM -->
+      <map code="0xce2b" name="1em"/><!-- HANGUL SYLLABLE CEULB -->
+      <map code="0xce2c" name="1em"/><!-- HANGUL SYLLABLE CEULS -->
+      <map code="0xce2d" name="1em"/><!-- HANGUL SYLLABLE CEULT -->
+      <map code="0xce2e" name="1em"/><!-- HANGUL SYLLABLE CEULP -->
+      <map code="0xce2f" name="1em"/><!-- HANGUL SYLLABLE CEULH -->
+      <map code="0xce30" name="1em"/><!-- HANGUL SYLLABLE CEUM -->
+      <map code="0xce31" name="1em"/><!-- HANGUL SYLLABLE CEUB -->
+      <map code="0xce32" name="1em"/><!-- HANGUL SYLLABLE CEUBS -->
+      <map code="0xce33" name="1em"/><!-- HANGUL SYLLABLE CEUS -->
+      <map code="0xce34" name="1em"/><!-- HANGUL SYLLABLE CEUSS -->
+      <map code="0xce35" name="1em"/><!-- HANGUL SYLLABLE CEUNG -->
+      <map code="0xce36" name="1em"/><!-- HANGUL SYLLABLE CEUJ -->
+      <map code="0xce37" name="1em"/><!-- HANGUL SYLLABLE CEUC -->
+      <map code="0xce38" name="1em"/><!-- HANGUL SYLLABLE CEUK -->
+      <map code="0xce39" name="1em"/><!-- HANGUL SYLLABLE CEUT -->
+      <map code="0xce3a" name="1em"/><!-- HANGUL SYLLABLE CEUP -->
+      <map code="0xce3b" name="1em"/><!-- HANGUL SYLLABLE CEUH -->
+      <map code="0xce3c" name="1em"/><!-- HANGUL SYLLABLE CYI -->
+      <map code="0xce3d" name="1em"/><!-- HANGUL SYLLABLE CYIG -->
+      <map code="0xce3e" name="1em"/><!-- HANGUL SYLLABLE CYIGG -->
+      <map code="0xce3f" name="1em"/><!-- HANGUL SYLLABLE CYIGS -->
+      <map code="0xce40" name="1em"/><!-- HANGUL SYLLABLE CYIN -->
+      <map code="0xce41" name="1em"/><!-- HANGUL SYLLABLE CYINJ -->
+      <map code="0xce42" name="1em"/><!-- HANGUL SYLLABLE CYINH -->
+      <map code="0xce43" name="1em"/><!-- HANGUL SYLLABLE CYID -->
+      <map code="0xce44" name="1em"/><!-- HANGUL SYLLABLE CYIL -->
+      <map code="0xce45" name="1em"/><!-- HANGUL SYLLABLE CYILG -->
+      <map code="0xce46" name="1em"/><!-- HANGUL SYLLABLE CYILM -->
+      <map code="0xce47" name="1em"/><!-- HANGUL SYLLABLE CYILB -->
+      <map code="0xce48" name="1em"/><!-- HANGUL SYLLABLE CYILS -->
+      <map code="0xce49" name="1em"/><!-- HANGUL SYLLABLE CYILT -->
+      <map code="0xce4a" name="1em"/><!-- HANGUL SYLLABLE CYILP -->
+      <map code="0xce4b" name="1em"/><!-- HANGUL SYLLABLE CYILH -->
+      <map code="0xce4c" name="1em"/><!-- HANGUL SYLLABLE CYIM -->
+      <map code="0xce4d" name="1em"/><!-- HANGUL SYLLABLE CYIB -->
+      <map code="0xce4e" name="1em"/><!-- HANGUL SYLLABLE CYIBS -->
+      <map code="0xce4f" name="1em"/><!-- HANGUL SYLLABLE CYIS -->
+      <map code="0xce50" name="1em"/><!-- HANGUL SYLLABLE CYISS -->
+      <map code="0xce51" name="1em"/><!-- HANGUL SYLLABLE CYING -->
+      <map code="0xce52" name="1em"/><!-- HANGUL SYLLABLE CYIJ -->
+      <map code="0xce53" name="1em"/><!-- HANGUL SYLLABLE CYIC -->
+      <map code="0xce54" name="1em"/><!-- HANGUL SYLLABLE CYIK -->
+      <map code="0xce55" name="1em"/><!-- HANGUL SYLLABLE CYIT -->
+      <map code="0xce56" name="1em"/><!-- HANGUL SYLLABLE CYIP -->
+      <map code="0xce57" name="1em"/><!-- HANGUL SYLLABLE CYIH -->
+      <map code="0xce58" name="1em"/><!-- HANGUL SYLLABLE CI -->
+      <map code="0xce59" name="1em"/><!-- HANGUL SYLLABLE CIG -->
+      <map code="0xce5a" name="1em"/><!-- HANGUL SYLLABLE CIGG -->
+      <map code="0xce5b" name="1em"/><!-- HANGUL SYLLABLE CIGS -->
+      <map code="0xce5c" name="1em"/><!-- HANGUL SYLLABLE CIN -->
+      <map code="0xce5d" name="1em"/><!-- HANGUL SYLLABLE CINJ -->
+      <map code="0xce5e" name="1em"/><!-- HANGUL SYLLABLE CINH -->
+      <map code="0xce5f" name="1em"/><!-- HANGUL SYLLABLE CID -->
+      <map code="0xce60" name="1em"/><!-- HANGUL SYLLABLE CIL -->
+      <map code="0xce61" name="1em"/><!-- HANGUL SYLLABLE CILG -->
+      <map code="0xce62" name="1em"/><!-- HANGUL SYLLABLE CILM -->
+      <map code="0xce63" name="1em"/><!-- HANGUL SYLLABLE CILB -->
+      <map code="0xce64" name="1em"/><!-- HANGUL SYLLABLE CILS -->
+      <map code="0xce65" name="1em"/><!-- HANGUL SYLLABLE CILT -->
+      <map code="0xce66" name="1em"/><!-- HANGUL SYLLABLE CILP -->
+      <map code="0xce67" name="1em"/><!-- HANGUL SYLLABLE CILH -->
+      <map code="0xce68" name="1em"/><!-- HANGUL SYLLABLE CIM -->
+      <map code="0xce69" name="1em"/><!-- HANGUL SYLLABLE CIB -->
+      <map code="0xce6a" name="1em"/><!-- HANGUL SYLLABLE CIBS -->
+      <map code="0xce6b" name="1em"/><!-- HANGUL SYLLABLE CIS -->
+      <map code="0xce6c" name="1em"/><!-- HANGUL SYLLABLE CISS -->
+      <map code="0xce6d" name="1em"/><!-- HANGUL SYLLABLE CING -->
+      <map code="0xce6e" name="1em"/><!-- HANGUL SYLLABLE CIJ -->
+      <map code="0xce6f" name="1em"/><!-- HANGUL SYLLABLE CIC -->
+      <map code="0xce70" name="1em"/><!-- HANGUL SYLLABLE CIK -->
+      <map code="0xce71" name="1em"/><!-- HANGUL SYLLABLE CIT -->
+      <map code="0xce72" name="1em"/><!-- HANGUL SYLLABLE CIP -->
+      <map code="0xce73" name="1em"/><!-- HANGUL SYLLABLE CIH -->
+      <map code="0xce74" name="1em"/><!-- HANGUL SYLLABLE KA -->
+      <map code="0xce75" name="1em"/><!-- HANGUL SYLLABLE KAG -->
+      <map code="0xce76" name="1em"/><!-- HANGUL SYLLABLE KAGG -->
+      <map code="0xce77" name="1em"/><!-- HANGUL SYLLABLE KAGS -->
+      <map code="0xce78" name="1em"/><!-- HANGUL SYLLABLE KAN -->
+      <map code="0xce79" name="1em"/><!-- HANGUL SYLLABLE KANJ -->
+      <map code="0xce7a" name="1em"/><!-- HANGUL SYLLABLE KANH -->
+      <map code="0xce7b" name="1em"/><!-- HANGUL SYLLABLE KAD -->
+      <map code="0xce7c" name="1em"/><!-- HANGUL SYLLABLE KAL -->
+      <map code="0xce7d" name="1em"/><!-- HANGUL SYLLABLE KALG -->
+      <map code="0xce7e" name="1em"/><!-- HANGUL SYLLABLE KALM -->
+      <map code="0xce7f" name="1em"/><!-- HANGUL SYLLABLE KALB -->
+      <map code="0xce80" name="1em"/><!-- HANGUL SYLLABLE KALS -->
+      <map code="0xce81" name="1em"/><!-- HANGUL SYLLABLE KALT -->
+      <map code="0xce82" name="1em"/><!-- HANGUL SYLLABLE KALP -->
+      <map code="0xce83" name="1em"/><!-- HANGUL SYLLABLE KALH -->
+      <map code="0xce84" name="1em"/><!-- HANGUL SYLLABLE KAM -->
+      <map code="0xce85" name="1em"/><!-- HANGUL SYLLABLE KAB -->
+      <map code="0xce86" name="1em"/><!-- HANGUL SYLLABLE KABS -->
+      <map code="0xce87" name="1em"/><!-- HANGUL SYLLABLE KAS -->
+      <map code="0xce88" name="1em"/><!-- HANGUL SYLLABLE KASS -->
+      <map code="0xce89" name="1em"/><!-- HANGUL SYLLABLE KANG -->
+      <map code="0xce8a" name="1em"/><!-- HANGUL SYLLABLE KAJ -->
+      <map code="0xce8b" name="1em"/><!-- HANGUL SYLLABLE KAC -->
+      <map code="0xce8c" name="1em"/><!-- HANGUL SYLLABLE KAK -->
+      <map code="0xce8d" name="1em"/><!-- HANGUL SYLLABLE KAT -->
+      <map code="0xce8e" name="1em"/><!-- HANGUL SYLLABLE KAP -->
+      <map code="0xce8f" name="1em"/><!-- HANGUL SYLLABLE KAH -->
+      <map code="0xce90" name="1em"/><!-- HANGUL SYLLABLE KAE -->
+      <map code="0xce91" name="1em"/><!-- HANGUL SYLLABLE KAEG -->
+      <map code="0xce92" name="1em"/><!-- HANGUL SYLLABLE KAEGG -->
+      <map code="0xce93" name="1em"/><!-- HANGUL SYLLABLE KAEGS -->
+      <map code="0xce94" name="1em"/><!-- HANGUL SYLLABLE KAEN -->
+      <map code="0xce95" name="1em"/><!-- HANGUL SYLLABLE KAENJ -->
+      <map code="0xce96" name="1em"/><!-- HANGUL SYLLABLE KAENH -->
+      <map code="0xce97" name="1em"/><!-- HANGUL SYLLABLE KAED -->
+      <map code="0xce98" name="1em"/><!-- HANGUL SYLLABLE KAEL -->
+      <map code="0xce99" name="1em"/><!-- HANGUL SYLLABLE KAELG -->
+      <map code="0xce9a" name="1em"/><!-- HANGUL SYLLABLE KAELM -->
+      <map code="0xce9b" name="1em"/><!-- HANGUL SYLLABLE KAELB -->
+      <map code="0xce9c" name="1em"/><!-- HANGUL SYLLABLE KAELS -->
+      <map code="0xce9d" name="1em"/><!-- HANGUL SYLLABLE KAELT -->
+      <map code="0xce9e" name="1em"/><!-- HANGUL SYLLABLE KAELP -->
+      <map code="0xce9f" name="1em"/><!-- HANGUL SYLLABLE KAELH -->
+      <map code="0xcea0" name="1em"/><!-- HANGUL SYLLABLE KAEM -->
+      <map code="0xcea1" name="1em"/><!-- HANGUL SYLLABLE KAEB -->
+      <map code="0xcea2" name="1em"/><!-- HANGUL SYLLABLE KAEBS -->
+      <map code="0xcea3" name="1em"/><!-- HANGUL SYLLABLE KAES -->
+      <map code="0xcea4" name="1em"/><!-- HANGUL SYLLABLE KAESS -->
+      <map code="0xcea5" name="1em"/><!-- HANGUL SYLLABLE KAENG -->
+      <map code="0xcea6" name="1em"/><!-- HANGUL SYLLABLE KAEJ -->
+      <map code="0xcea7" name="1em"/><!-- HANGUL SYLLABLE KAEC -->
+      <map code="0xcea8" name="1em"/><!-- HANGUL SYLLABLE KAEK -->
+      <map code="0xcea9" name="1em"/><!-- HANGUL SYLLABLE KAET -->
+      <map code="0xceaa" name="1em"/><!-- HANGUL SYLLABLE KAEP -->
+      <map code="0xceab" name="1em"/><!-- HANGUL SYLLABLE KAEH -->
+      <map code="0xceac" name="1em"/><!-- HANGUL SYLLABLE KYA -->
+      <map code="0xcead" name="1em"/><!-- HANGUL SYLLABLE KYAG -->
+      <map code="0xceae" name="1em"/><!-- HANGUL SYLLABLE KYAGG -->
+      <map code="0xceaf" name="1em"/><!-- HANGUL SYLLABLE KYAGS -->
+      <map code="0xceb0" name="1em"/><!-- HANGUL SYLLABLE KYAN -->
+      <map code="0xceb1" name="1em"/><!-- HANGUL SYLLABLE KYANJ -->
+      <map code="0xceb2" name="1em"/><!-- HANGUL SYLLABLE KYANH -->
+      <map code="0xceb3" name="1em"/><!-- HANGUL SYLLABLE KYAD -->
+      <map code="0xceb4" name="1em"/><!-- HANGUL SYLLABLE KYAL -->
+      <map code="0xceb5" name="1em"/><!-- HANGUL SYLLABLE KYALG -->
+      <map code="0xceb6" name="1em"/><!-- HANGUL SYLLABLE KYALM -->
+      <map code="0xceb7" name="1em"/><!-- HANGUL SYLLABLE KYALB -->
+      <map code="0xceb8" name="1em"/><!-- HANGUL SYLLABLE KYALS -->
+      <map code="0xceb9" name="1em"/><!-- HANGUL SYLLABLE KYALT -->
+      <map code="0xceba" name="1em"/><!-- HANGUL SYLLABLE KYALP -->
+      <map code="0xcebb" name="1em"/><!-- HANGUL SYLLABLE KYALH -->
+      <map code="0xcebc" name="1em"/><!-- HANGUL SYLLABLE KYAM -->
+      <map code="0xcebd" name="1em"/><!-- HANGUL SYLLABLE KYAB -->
+      <map code="0xcebe" name="1em"/><!-- HANGUL SYLLABLE KYABS -->
+      <map code="0xcebf" name="1em"/><!-- HANGUL SYLLABLE KYAS -->
+      <map code="0xcec0" name="1em"/><!-- HANGUL SYLLABLE KYASS -->
+      <map code="0xcec1" name="1em"/><!-- HANGUL SYLLABLE KYANG -->
+      <map code="0xcec2" name="1em"/><!-- HANGUL SYLLABLE KYAJ -->
+      <map code="0xcec3" name="1em"/><!-- HANGUL SYLLABLE KYAC -->
+      <map code="0xcec4" name="1em"/><!-- HANGUL SYLLABLE KYAK -->
+      <map code="0xcec5" name="1em"/><!-- HANGUL SYLLABLE KYAT -->
+      <map code="0xcec6" name="1em"/><!-- HANGUL SYLLABLE KYAP -->
+      <map code="0xcec7" name="1em"/><!-- HANGUL SYLLABLE KYAH -->
+      <map code="0xcec8" name="1em"/><!-- HANGUL SYLLABLE KYAE -->
+      <map code="0xcec9" name="1em"/><!-- HANGUL SYLLABLE KYAEG -->
+      <map code="0xceca" name="1em"/><!-- HANGUL SYLLABLE KYAEGG -->
+      <map code="0xcecb" name="1em"/><!-- HANGUL SYLLABLE KYAEGS -->
+      <map code="0xcecc" name="1em"/><!-- HANGUL SYLLABLE KYAEN -->
+      <map code="0xcecd" name="1em"/><!-- HANGUL SYLLABLE KYAENJ -->
+      <map code="0xcece" name="1em"/><!-- HANGUL SYLLABLE KYAENH -->
+      <map code="0xcecf" name="1em"/><!-- HANGUL SYLLABLE KYAED -->
+      <map code="0xced0" name="1em"/><!-- HANGUL SYLLABLE KYAEL -->
+      <map code="0xced1" name="1em"/><!-- HANGUL SYLLABLE KYAELG -->
+      <map code="0xced2" name="1em"/><!-- HANGUL SYLLABLE KYAELM -->
+      <map code="0xced3" name="1em"/><!-- HANGUL SYLLABLE KYAELB -->
+      <map code="0xced4" name="1em"/><!-- HANGUL SYLLABLE KYAELS -->
+      <map code="0xced5" name="1em"/><!-- HANGUL SYLLABLE KYAELT -->
+      <map code="0xced6" name="1em"/><!-- HANGUL SYLLABLE KYAELP -->
+      <map code="0xced7" name="1em"/><!-- HANGUL SYLLABLE KYAELH -->
+      <map code="0xced8" name="1em"/><!-- HANGUL SYLLABLE KYAEM -->
+      <map code="0xced9" name="1em"/><!-- HANGUL SYLLABLE KYAEB -->
+      <map code="0xceda" name="1em"/><!-- HANGUL SYLLABLE KYAEBS -->
+      <map code="0xcedb" name="1em"/><!-- HANGUL SYLLABLE KYAES -->
+      <map code="0xcedc" name="1em"/><!-- HANGUL SYLLABLE KYAESS -->
+      <map code="0xcedd" name="1em"/><!-- HANGUL SYLLABLE KYAENG -->
+      <map code="0xcede" name="1em"/><!-- HANGUL SYLLABLE KYAEJ -->
+      <map code="0xcedf" name="1em"/><!-- HANGUL SYLLABLE KYAEC -->
+      <map code="0xcee0" name="1em"/><!-- HANGUL SYLLABLE KYAEK -->
+      <map code="0xcee1" name="1em"/><!-- HANGUL SYLLABLE KYAET -->
+      <map code="0xcee2" name="1em"/><!-- HANGUL SYLLABLE KYAEP -->
+      <map code="0xcee3" name="1em"/><!-- HANGUL SYLLABLE KYAEH -->
+      <map code="0xcee4" name="1em"/><!-- HANGUL SYLLABLE KEO -->
+      <map code="0xcee5" name="1em"/><!-- HANGUL SYLLABLE KEOG -->
+      <map code="0xcee6" name="1em"/><!-- HANGUL SYLLABLE KEOGG -->
+      <map code="0xcee7" name="1em"/><!-- HANGUL SYLLABLE KEOGS -->
+      <map code="0xcee8" name="1em"/><!-- HANGUL SYLLABLE KEON -->
+      <map code="0xcee9" name="1em"/><!-- HANGUL SYLLABLE KEONJ -->
+      <map code="0xceea" name="1em"/><!-- HANGUL SYLLABLE KEONH -->
+      <map code="0xceeb" name="1em"/><!-- HANGUL SYLLABLE KEOD -->
+      <map code="0xceec" name="1em"/><!-- HANGUL SYLLABLE KEOL -->
+      <map code="0xceed" name="1em"/><!-- HANGUL SYLLABLE KEOLG -->
+      <map code="0xceee" name="1em"/><!-- HANGUL SYLLABLE KEOLM -->
+      <map code="0xceef" name="1em"/><!-- HANGUL SYLLABLE KEOLB -->
+      <map code="0xcef0" name="1em"/><!-- HANGUL SYLLABLE KEOLS -->
+      <map code="0xcef1" name="1em"/><!-- HANGUL SYLLABLE KEOLT -->
+      <map code="0xcef2" name="1em"/><!-- HANGUL SYLLABLE KEOLP -->
+      <map code="0xcef3" name="1em"/><!-- HANGUL SYLLABLE KEOLH -->
+      <map code="0xcef4" name="1em"/><!-- HANGUL SYLLABLE KEOM -->
+      <map code="0xcef5" name="1em"/><!-- HANGUL SYLLABLE KEOB -->
+      <map code="0xcef6" name="1em"/><!-- HANGUL SYLLABLE KEOBS -->
+      <map code="0xcef7" name="1em"/><!-- HANGUL SYLLABLE KEOS -->
+      <map code="0xcef8" name="1em"/><!-- HANGUL SYLLABLE KEOSS -->
+      <map code="0xcef9" name="1em"/><!-- HANGUL SYLLABLE KEONG -->
+      <map code="0xcefa" name="1em"/><!-- HANGUL SYLLABLE KEOJ -->
+      <map code="0xcefb" name="1em"/><!-- HANGUL SYLLABLE KEOC -->
+      <map code="0xcefc" name="1em"/><!-- HANGUL SYLLABLE KEOK -->
+      <map code="0xcefd" name="1em"/><!-- HANGUL SYLLABLE KEOT -->
+      <map code="0xcefe" name="1em"/><!-- HANGUL SYLLABLE KEOP -->
+      <map code="0xceff" name="1em"/><!-- HANGUL SYLLABLE KEOH -->
+      <map code="0xcf00" name="1em"/><!-- HANGUL SYLLABLE KE -->
+      <map code="0xcf01" name="1em"/><!-- HANGUL SYLLABLE KEG -->
+      <map code="0xcf02" name="1em"/><!-- HANGUL SYLLABLE KEGG -->
+      <map code="0xcf03" name="1em"/><!-- HANGUL SYLLABLE KEGS -->
+      <map code="0xcf04" name="1em"/><!-- HANGUL SYLLABLE KEN -->
+      <map code="0xcf05" name="1em"/><!-- HANGUL SYLLABLE KENJ -->
+      <map code="0xcf06" name="1em"/><!-- HANGUL SYLLABLE KENH -->
+      <map code="0xcf07" name="1em"/><!-- HANGUL SYLLABLE KED -->
+      <map code="0xcf08" name="1em"/><!-- HANGUL SYLLABLE KEL -->
+      <map code="0xcf09" name="1em"/><!-- HANGUL SYLLABLE KELG -->
+      <map code="0xcf0a" name="1em"/><!-- HANGUL SYLLABLE KELM -->
+      <map code="0xcf0b" name="1em"/><!-- HANGUL SYLLABLE KELB -->
+      <map code="0xcf0c" name="1em"/><!-- HANGUL SYLLABLE KELS -->
+      <map code="0xcf0d" name="1em"/><!-- HANGUL SYLLABLE KELT -->
+      <map code="0xcf0e" name="1em"/><!-- HANGUL SYLLABLE KELP -->
+      <map code="0xcf0f" name="1em"/><!-- HANGUL SYLLABLE KELH -->
+      <map code="0xcf10" name="1em"/><!-- HANGUL SYLLABLE KEM -->
+      <map code="0xcf11" name="1em"/><!-- HANGUL SYLLABLE KEB -->
+      <map code="0xcf12" name="1em"/><!-- HANGUL SYLLABLE KEBS -->
+      <map code="0xcf13" name="1em"/><!-- HANGUL SYLLABLE KES -->
+      <map code="0xcf14" name="1em"/><!-- HANGUL SYLLABLE KESS -->
+      <map code="0xcf15" name="1em"/><!-- HANGUL SYLLABLE KENG -->
+      <map code="0xcf16" name="1em"/><!-- HANGUL SYLLABLE KEJ -->
+      <map code="0xcf17" name="1em"/><!-- HANGUL SYLLABLE KEC -->
+      <map code="0xcf18" name="1em"/><!-- HANGUL SYLLABLE KEK -->
+      <map code="0xcf19" name="1em"/><!-- HANGUL SYLLABLE KET -->
+      <map code="0xcf1a" name="1em"/><!-- HANGUL SYLLABLE KEP -->
+      <map code="0xcf1b" name="1em"/><!-- HANGUL SYLLABLE KEH -->
+      <map code="0xcf1c" name="1em"/><!-- HANGUL SYLLABLE KYEO -->
+      <map code="0xcf1d" name="1em"/><!-- HANGUL SYLLABLE KYEOG -->
+      <map code="0xcf1e" name="1em"/><!-- HANGUL SYLLABLE KYEOGG -->
+      <map code="0xcf1f" name="1em"/><!-- HANGUL SYLLABLE KYEOGS -->
+      <map code="0xcf20" name="1em"/><!-- HANGUL SYLLABLE KYEON -->
+      <map code="0xcf21" name="1em"/><!-- HANGUL SYLLABLE KYEONJ -->
+      <map code="0xcf22" name="1em"/><!-- HANGUL SYLLABLE KYEONH -->
+      <map code="0xcf23" name="1em"/><!-- HANGUL SYLLABLE KYEOD -->
+      <map code="0xcf24" name="1em"/><!-- HANGUL SYLLABLE KYEOL -->
+      <map code="0xcf25" name="1em"/><!-- HANGUL SYLLABLE KYEOLG -->
+      <map code="0xcf26" name="1em"/><!-- HANGUL SYLLABLE KYEOLM -->
+      <map code="0xcf27" name="1em"/><!-- HANGUL SYLLABLE KYEOLB -->
+      <map code="0xcf28" name="1em"/><!-- HANGUL SYLLABLE KYEOLS -->
+      <map code="0xcf29" name="1em"/><!-- HANGUL SYLLABLE KYEOLT -->
+      <map code="0xcf2a" name="1em"/><!-- HANGUL SYLLABLE KYEOLP -->
+      <map code="0xcf2b" name="1em"/><!-- HANGUL SYLLABLE KYEOLH -->
+      <map code="0xcf2c" name="1em"/><!-- HANGUL SYLLABLE KYEOM -->
+      <map code="0xcf2d" name="1em"/><!-- HANGUL SYLLABLE KYEOB -->
+      <map code="0xcf2e" name="1em"/><!-- HANGUL SYLLABLE KYEOBS -->
+      <map code="0xcf2f" name="1em"/><!-- HANGUL SYLLABLE KYEOS -->
+      <map code="0xcf30" name="1em"/><!-- HANGUL SYLLABLE KYEOSS -->
+      <map code="0xcf31" name="1em"/><!-- HANGUL SYLLABLE KYEONG -->
+      <map code="0xcf32" name="1em"/><!-- HANGUL SYLLABLE KYEOJ -->
+      <map code="0xcf33" name="1em"/><!-- HANGUL SYLLABLE KYEOC -->
+      <map code="0xcf34" name="1em"/><!-- HANGUL SYLLABLE KYEOK -->
+      <map code="0xcf35" name="1em"/><!-- HANGUL SYLLABLE KYEOT -->
+      <map code="0xcf36" name="1em"/><!-- HANGUL SYLLABLE KYEOP -->
+      <map code="0xcf37" name="1em"/><!-- HANGUL SYLLABLE KYEOH -->
+      <map code="0xcf38" name="1em"/><!-- HANGUL SYLLABLE KYE -->
+      <map code="0xcf39" name="1em"/><!-- HANGUL SYLLABLE KYEG -->
+      <map code="0xcf3a" name="1em"/><!-- HANGUL SYLLABLE KYEGG -->
+      <map code="0xcf3b" name="1em"/><!-- HANGUL SYLLABLE KYEGS -->
+      <map code="0xcf3c" name="1em"/><!-- HANGUL SYLLABLE KYEN -->
+      <map code="0xcf3d" name="1em"/><!-- HANGUL SYLLABLE KYENJ -->
+      <map code="0xcf3e" name="1em"/><!-- HANGUL SYLLABLE KYENH -->
+      <map code="0xcf3f" name="1em"/><!-- HANGUL SYLLABLE KYED -->
+      <map code="0xcf40" name="1em"/><!-- HANGUL SYLLABLE KYEL -->
+      <map code="0xcf41" name="1em"/><!-- HANGUL SYLLABLE KYELG -->
+      <map code="0xcf42" name="1em"/><!-- HANGUL SYLLABLE KYELM -->
+      <map code="0xcf43" name="1em"/><!-- HANGUL SYLLABLE KYELB -->
+      <map code="0xcf44" name="1em"/><!-- HANGUL SYLLABLE KYELS -->
+      <map code="0xcf45" name="1em"/><!-- HANGUL SYLLABLE KYELT -->
+      <map code="0xcf46" name="1em"/><!-- HANGUL SYLLABLE KYELP -->
+      <map code="0xcf47" name="1em"/><!-- HANGUL SYLLABLE KYELH -->
+      <map code="0xcf48" name="1em"/><!-- HANGUL SYLLABLE KYEM -->
+      <map code="0xcf49" name="1em"/><!-- HANGUL SYLLABLE KYEB -->
+      <map code="0xcf4a" name="1em"/><!-- HANGUL SYLLABLE KYEBS -->
+      <map code="0xcf4b" name="1em"/><!-- HANGUL SYLLABLE KYES -->
+      <map code="0xcf4c" name="1em"/><!-- HANGUL SYLLABLE KYESS -->
+      <map code="0xcf4d" name="1em"/><!-- HANGUL SYLLABLE KYENG -->
+      <map code="0xcf4e" name="1em"/><!-- HANGUL SYLLABLE KYEJ -->
+      <map code="0xcf4f" name="1em"/><!-- HANGUL SYLLABLE KYEC -->
+      <map code="0xcf50" name="1em"/><!-- HANGUL SYLLABLE KYEK -->
+      <map code="0xcf51" name="1em"/><!-- HANGUL SYLLABLE KYET -->
+      <map code="0xcf52" name="1em"/><!-- HANGUL SYLLABLE KYEP -->
+      <map code="0xcf53" name="1em"/><!-- HANGUL SYLLABLE KYEH -->
+      <map code="0xcf54" name="1em"/><!-- HANGUL SYLLABLE KO -->
+      <map code="0xcf55" name="1em"/><!-- HANGUL SYLLABLE KOG -->
+      <map code="0xcf56" name="1em"/><!-- HANGUL SYLLABLE KOGG -->
+      <map code="0xcf57" name="1em"/><!-- HANGUL SYLLABLE KOGS -->
+      <map code="0xcf58" name="1em"/><!-- HANGUL SYLLABLE KON -->
+      <map code="0xcf59" name="1em"/><!-- HANGUL SYLLABLE KONJ -->
+      <map code="0xcf5a" name="1em"/><!-- HANGUL SYLLABLE KONH -->
+      <map code="0xcf5b" name="1em"/><!-- HANGUL SYLLABLE KOD -->
+      <map code="0xcf5c" name="1em"/><!-- HANGUL SYLLABLE KOL -->
+      <map code="0xcf5d" name="1em"/><!-- HANGUL SYLLABLE KOLG -->
+      <map code="0xcf5e" name="1em"/><!-- HANGUL SYLLABLE KOLM -->
+      <map code="0xcf5f" name="1em"/><!-- HANGUL SYLLABLE KOLB -->
+      <map code="0xcf60" name="1em"/><!-- HANGUL SYLLABLE KOLS -->
+      <map code="0xcf61" name="1em"/><!-- HANGUL SYLLABLE KOLT -->
+      <map code="0xcf62" name="1em"/><!-- HANGUL SYLLABLE KOLP -->
+      <map code="0xcf63" name="1em"/><!-- HANGUL SYLLABLE KOLH -->
+      <map code="0xcf64" name="1em"/><!-- HANGUL SYLLABLE KOM -->
+      <map code="0xcf65" name="1em"/><!-- HANGUL SYLLABLE KOB -->
+      <map code="0xcf66" name="1em"/><!-- HANGUL SYLLABLE KOBS -->
+      <map code="0xcf67" name="1em"/><!-- HANGUL SYLLABLE KOS -->
+      <map code="0xcf68" name="1em"/><!-- HANGUL SYLLABLE KOSS -->
+      <map code="0xcf69" name="1em"/><!-- HANGUL SYLLABLE KONG -->
+      <map code="0xcf6a" name="1em"/><!-- HANGUL SYLLABLE KOJ -->
+      <map code="0xcf6b" name="1em"/><!-- HANGUL SYLLABLE KOC -->
+      <map code="0xcf6c" name="1em"/><!-- HANGUL SYLLABLE KOK -->
+      <map code="0xcf6d" name="1em"/><!-- HANGUL SYLLABLE KOT -->
+      <map code="0xcf6e" name="1em"/><!-- HANGUL SYLLABLE KOP -->
+      <map code="0xcf6f" name="1em"/><!-- HANGUL SYLLABLE KOH -->
+      <map code="0xcf70" name="1em"/><!-- HANGUL SYLLABLE KWA -->
+      <map code="0xcf71" name="1em"/><!-- HANGUL SYLLABLE KWAG -->
+      <map code="0xcf72" name="1em"/><!-- HANGUL SYLLABLE KWAGG -->
+      <map code="0xcf73" name="1em"/><!-- HANGUL SYLLABLE KWAGS -->
+      <map code="0xcf74" name="1em"/><!-- HANGUL SYLLABLE KWAN -->
+      <map code="0xcf75" name="1em"/><!-- HANGUL SYLLABLE KWANJ -->
+      <map code="0xcf76" name="1em"/><!-- HANGUL SYLLABLE KWANH -->
+      <map code="0xcf77" name="1em"/><!-- HANGUL SYLLABLE KWAD -->
+      <map code="0xcf78" name="1em"/><!-- HANGUL SYLLABLE KWAL -->
+      <map code="0xcf79" name="1em"/><!-- HANGUL SYLLABLE KWALG -->
+      <map code="0xcf7a" name="1em"/><!-- HANGUL SYLLABLE KWALM -->
+      <map code="0xcf7b" name="1em"/><!-- HANGUL SYLLABLE KWALB -->
+      <map code="0xcf7c" name="1em"/><!-- HANGUL SYLLABLE KWALS -->
+      <map code="0xcf7d" name="1em"/><!-- HANGUL SYLLABLE KWALT -->
+      <map code="0xcf7e" name="1em"/><!-- HANGUL SYLLABLE KWALP -->
+      <map code="0xcf7f" name="1em"/><!-- HANGUL SYLLABLE KWALH -->
+      <map code="0xcf80" name="1em"/><!-- HANGUL SYLLABLE KWAM -->
+      <map code="0xcf81" name="1em"/><!-- HANGUL SYLLABLE KWAB -->
+      <map code="0xcf82" name="1em"/><!-- HANGUL SYLLABLE KWABS -->
+      <map code="0xcf83" name="1em"/><!-- HANGUL SYLLABLE KWAS -->
+      <map code="0xcf84" name="1em"/><!-- HANGUL SYLLABLE KWASS -->
+      <map code="0xcf85" name="1em"/><!-- HANGUL SYLLABLE KWANG -->
+      <map code="0xcf86" name="1em"/><!-- HANGUL SYLLABLE KWAJ -->
+      <map code="0xcf87" name="1em"/><!-- HANGUL SYLLABLE KWAC -->
+      <map code="0xcf88" name="1em"/><!-- HANGUL SYLLABLE KWAK -->
+      <map code="0xcf89" name="1em"/><!-- HANGUL SYLLABLE KWAT -->
+      <map code="0xcf8a" name="1em"/><!-- HANGUL SYLLABLE KWAP -->
+      <map code="0xcf8b" name="1em"/><!-- HANGUL SYLLABLE KWAH -->
+      <map code="0xcf8c" name="1em"/><!-- HANGUL SYLLABLE KWAE -->
+      <map code="0xcf8d" name="1em"/><!-- HANGUL SYLLABLE KWAEG -->
+      <map code="0xcf8e" name="1em"/><!-- HANGUL SYLLABLE KWAEGG -->
+      <map code="0xcf8f" name="1em"/><!-- HANGUL SYLLABLE KWAEGS -->
+      <map code="0xcf90" name="1em"/><!-- HANGUL SYLLABLE KWAEN -->
+      <map code="0xcf91" name="1em"/><!-- HANGUL SYLLABLE KWAENJ -->
+      <map code="0xcf92" name="1em"/><!-- HANGUL SYLLABLE KWAENH -->
+      <map code="0xcf93" name="1em"/><!-- HANGUL SYLLABLE KWAED -->
+      <map code="0xcf94" name="1em"/><!-- HANGUL SYLLABLE KWAEL -->
+      <map code="0xcf95" name="1em"/><!-- HANGUL SYLLABLE KWAELG -->
+      <map code="0xcf96" name="1em"/><!-- HANGUL SYLLABLE KWAELM -->
+      <map code="0xcf97" name="1em"/><!-- HANGUL SYLLABLE KWAELB -->
+      <map code="0xcf98" name="1em"/><!-- HANGUL SYLLABLE KWAELS -->
+      <map code="0xcf99" name="1em"/><!-- HANGUL SYLLABLE KWAELT -->
+      <map code="0xcf9a" name="1em"/><!-- HANGUL SYLLABLE KWAELP -->
+      <map code="0xcf9b" name="1em"/><!-- HANGUL SYLLABLE KWAELH -->
+      <map code="0xcf9c" name="1em"/><!-- HANGUL SYLLABLE KWAEM -->
+      <map code="0xcf9d" name="1em"/><!-- HANGUL SYLLABLE KWAEB -->
+      <map code="0xcf9e" name="1em"/><!-- HANGUL SYLLABLE KWAEBS -->
+      <map code="0xcf9f" name="1em"/><!-- HANGUL SYLLABLE KWAES -->
+      <map code="0xcfa0" name="1em"/><!-- HANGUL SYLLABLE KWAESS -->
+      <map code="0xcfa1" name="1em"/><!-- HANGUL SYLLABLE KWAENG -->
+      <map code="0xcfa2" name="1em"/><!-- HANGUL SYLLABLE KWAEJ -->
+      <map code="0xcfa3" name="1em"/><!-- HANGUL SYLLABLE KWAEC -->
+      <map code="0xcfa4" name="1em"/><!-- HANGUL SYLLABLE KWAEK -->
+      <map code="0xcfa5" name="1em"/><!-- HANGUL SYLLABLE KWAET -->
+      <map code="0xcfa6" name="1em"/><!-- HANGUL SYLLABLE KWAEP -->
+      <map code="0xcfa7" name="1em"/><!-- HANGUL SYLLABLE KWAEH -->
+      <map code="0xcfa8" name="1em"/><!-- HANGUL SYLLABLE KOE -->
+      <map code="0xcfa9" name="1em"/><!-- HANGUL SYLLABLE KOEG -->
+      <map code="0xcfaa" name="1em"/><!-- HANGUL SYLLABLE KOEGG -->
+      <map code="0xcfab" name="1em"/><!-- HANGUL SYLLABLE KOEGS -->
+      <map code="0xcfac" name="1em"/><!-- HANGUL SYLLABLE KOEN -->
+      <map code="0xcfad" name="1em"/><!-- HANGUL SYLLABLE KOENJ -->
+      <map code="0xcfae" name="1em"/><!-- HANGUL SYLLABLE KOENH -->
+      <map code="0xcfaf" name="1em"/><!-- HANGUL SYLLABLE KOED -->
+      <map code="0xcfb0" name="1em"/><!-- HANGUL SYLLABLE KOEL -->
+      <map code="0xcfb1" name="1em"/><!-- HANGUL SYLLABLE KOELG -->
+      <map code="0xcfb2" name="1em"/><!-- HANGUL SYLLABLE KOELM -->
+      <map code="0xcfb3" name="1em"/><!-- HANGUL SYLLABLE KOELB -->
+      <map code="0xcfb4" name="1em"/><!-- HANGUL SYLLABLE KOELS -->
+      <map code="0xcfb5" name="1em"/><!-- HANGUL SYLLABLE KOELT -->
+      <map code="0xcfb6" name="1em"/><!-- HANGUL SYLLABLE KOELP -->
+      <map code="0xcfb7" name="1em"/><!-- HANGUL SYLLABLE KOELH -->
+      <map code="0xcfb8" name="1em"/><!-- HANGUL SYLLABLE KOEM -->
+      <map code="0xcfb9" name="1em"/><!-- HANGUL SYLLABLE KOEB -->
+      <map code="0xcfba" name="1em"/><!-- HANGUL SYLLABLE KOEBS -->
+      <map code="0xcfbb" name="1em"/><!-- HANGUL SYLLABLE KOES -->
+      <map code="0xcfbc" name="1em"/><!-- HANGUL SYLLABLE KOESS -->
+      <map code="0xcfbd" name="1em"/><!-- HANGUL SYLLABLE KOENG -->
+      <map code="0xcfbe" name="1em"/><!-- HANGUL SYLLABLE KOEJ -->
+      <map code="0xcfbf" name="1em"/><!-- HANGUL SYLLABLE KOEC -->
+      <map code="0xcfc0" name="1em"/><!-- HANGUL SYLLABLE KOEK -->
+      <map code="0xcfc1" name="1em"/><!-- HANGUL SYLLABLE KOET -->
+      <map code="0xcfc2" name="1em"/><!-- HANGUL SYLLABLE KOEP -->
+      <map code="0xcfc3" name="1em"/><!-- HANGUL SYLLABLE KOEH -->
+      <map code="0xcfc4" name="1em"/><!-- HANGUL SYLLABLE KYO -->
+      <map code="0xcfc5" name="1em"/><!-- HANGUL SYLLABLE KYOG -->
+      <map code="0xcfc6" name="1em"/><!-- HANGUL SYLLABLE KYOGG -->
+      <map code="0xcfc7" name="1em"/><!-- HANGUL SYLLABLE KYOGS -->
+      <map code="0xcfc8" name="1em"/><!-- HANGUL SYLLABLE KYON -->
+      <map code="0xcfc9" name="1em"/><!-- HANGUL SYLLABLE KYONJ -->
+      <map code="0xcfca" name="1em"/><!-- HANGUL SYLLABLE KYONH -->
+      <map code="0xcfcb" name="1em"/><!-- HANGUL SYLLABLE KYOD -->
+      <map code="0xcfcc" name="1em"/><!-- HANGUL SYLLABLE KYOL -->
+      <map code="0xcfcd" name="1em"/><!-- HANGUL SYLLABLE KYOLG -->
+      <map code="0xcfce" name="1em"/><!-- HANGUL SYLLABLE KYOLM -->
+      <map code="0xcfcf" name="1em"/><!-- HANGUL SYLLABLE KYOLB -->
+      <map code="0xcfd0" name="1em"/><!-- HANGUL SYLLABLE KYOLS -->
+      <map code="0xcfd1" name="1em"/><!-- HANGUL SYLLABLE KYOLT -->
+      <map code="0xcfd2" name="1em"/><!-- HANGUL SYLLABLE KYOLP -->
+      <map code="0xcfd3" name="1em"/><!-- HANGUL SYLLABLE KYOLH -->
+      <map code="0xcfd4" name="1em"/><!-- HANGUL SYLLABLE KYOM -->
+      <map code="0xcfd5" name="1em"/><!-- HANGUL SYLLABLE KYOB -->
+      <map code="0xcfd6" name="1em"/><!-- HANGUL SYLLABLE KYOBS -->
+      <map code="0xcfd7" name="1em"/><!-- HANGUL SYLLABLE KYOS -->
+      <map code="0xcfd8" name="1em"/><!-- HANGUL SYLLABLE KYOSS -->
+      <map code="0xcfd9" name="1em"/><!-- HANGUL SYLLABLE KYONG -->
+      <map code="0xcfda" name="1em"/><!-- HANGUL SYLLABLE KYOJ -->
+      <map code="0xcfdb" name="1em"/><!-- HANGUL SYLLABLE KYOC -->
+      <map code="0xcfdc" name="1em"/><!-- HANGUL SYLLABLE KYOK -->
+      <map code="0xcfdd" name="1em"/><!-- HANGUL SYLLABLE KYOT -->
+      <map code="0xcfde" name="1em"/><!-- HANGUL SYLLABLE KYOP -->
+      <map code="0xcfdf" name="1em"/><!-- HANGUL SYLLABLE KYOH -->
+      <map code="0xcfe0" name="1em"/><!-- HANGUL SYLLABLE KU -->
+      <map code="0xcfe1" name="1em"/><!-- HANGUL SYLLABLE KUG -->
+      <map code="0xcfe2" name="1em"/><!-- HANGUL SYLLABLE KUGG -->
+      <map code="0xcfe3" name="1em"/><!-- HANGUL SYLLABLE KUGS -->
+      <map code="0xcfe4" name="1em"/><!-- HANGUL SYLLABLE KUN -->
+      <map code="0xcfe5" name="1em"/><!-- HANGUL SYLLABLE KUNJ -->
+      <map code="0xcfe6" name="1em"/><!-- HANGUL SYLLABLE KUNH -->
+      <map code="0xcfe7" name="1em"/><!-- HANGUL SYLLABLE KUD -->
+      <map code="0xcfe8" name="1em"/><!-- HANGUL SYLLABLE KUL -->
+      <map code="0xcfe9" name="1em"/><!-- HANGUL SYLLABLE KULG -->
+      <map code="0xcfea" name="1em"/><!-- HANGUL SYLLABLE KULM -->
+      <map code="0xcfeb" name="1em"/><!-- HANGUL SYLLABLE KULB -->
+      <map code="0xcfec" name="1em"/><!-- HANGUL SYLLABLE KULS -->
+      <map code="0xcfed" name="1em"/><!-- HANGUL SYLLABLE KULT -->
+      <map code="0xcfee" name="1em"/><!-- HANGUL SYLLABLE KULP -->
+      <map code="0xcfef" name="1em"/><!-- HANGUL SYLLABLE KULH -->
+      <map code="0xcff0" name="1em"/><!-- HANGUL SYLLABLE KUM -->
+      <map code="0xcff1" name="1em"/><!-- HANGUL SYLLABLE KUB -->
+      <map code="0xcff2" name="1em"/><!-- HANGUL SYLLABLE KUBS -->
+      <map code="0xcff3" name="1em"/><!-- HANGUL SYLLABLE KUS -->
+      <map code="0xcff4" name="1em"/><!-- HANGUL SYLLABLE KUSS -->
+      <map code="0xcff5" name="1em"/><!-- HANGUL SYLLABLE KUNG -->
+      <map code="0xcff6" name="1em"/><!-- HANGUL SYLLABLE KUJ -->
+      <map code="0xcff7" name="1em"/><!-- HANGUL SYLLABLE KUC -->
+      <map code="0xcff8" name="1em"/><!-- HANGUL SYLLABLE KUK -->
+      <map code="0xcff9" name="1em"/><!-- HANGUL SYLLABLE KUT -->
+      <map code="0xcffa" name="1em"/><!-- HANGUL SYLLABLE KUP -->
+      <map code="0xcffb" name="1em"/><!-- HANGUL SYLLABLE KUH -->
+      <map code="0xcffc" name="1em"/><!-- HANGUL SYLLABLE KWEO -->
+      <map code="0xcffd" name="1em"/><!-- HANGUL SYLLABLE KWEOG -->
+      <map code="0xcffe" name="1em"/><!-- HANGUL SYLLABLE KWEOGG -->
+      <map code="0xcfff" name="1em"/><!-- HANGUL SYLLABLE KWEOGS -->
+      <map code="0xd000" name="1em"/><!-- HANGUL SYLLABLE KWEON -->
+      <map code="0xd001" name="1em"/><!-- HANGUL SYLLABLE KWEONJ -->
+      <map code="0xd002" name="1em"/><!-- HANGUL SYLLABLE KWEONH -->
+      <map code="0xd003" name="1em"/><!-- HANGUL SYLLABLE KWEOD -->
+      <map code="0xd004" name="1em"/><!-- HANGUL SYLLABLE KWEOL -->
+      <map code="0xd005" name="1em"/><!-- HANGUL SYLLABLE KWEOLG -->
+      <map code="0xd006" name="1em"/><!-- HANGUL SYLLABLE KWEOLM -->
+      <map code="0xd007" name="1em"/><!-- HANGUL SYLLABLE KWEOLB -->
+      <map code="0xd008" name="1em"/><!-- HANGUL SYLLABLE KWEOLS -->
+      <map code="0xd009" name="1em"/><!-- HANGUL SYLLABLE KWEOLT -->
+      <map code="0xd00a" name="1em"/><!-- HANGUL SYLLABLE KWEOLP -->
+      <map code="0xd00b" name="1em"/><!-- HANGUL SYLLABLE KWEOLH -->
+      <map code="0xd00c" name="1em"/><!-- HANGUL SYLLABLE KWEOM -->
+      <map code="0xd00d" name="1em"/><!-- HANGUL SYLLABLE KWEOB -->
+      <map code="0xd00e" name="1em"/><!-- HANGUL SYLLABLE KWEOBS -->
+      <map code="0xd00f" name="1em"/><!-- HANGUL SYLLABLE KWEOS -->
+      <map code="0xd010" name="1em"/><!-- HANGUL SYLLABLE KWEOSS -->
+      <map code="0xd011" name="1em"/><!-- HANGUL SYLLABLE KWEONG -->
+      <map code="0xd012" name="1em"/><!-- HANGUL SYLLABLE KWEOJ -->
+      <map code="0xd013" name="1em"/><!-- HANGUL SYLLABLE KWEOC -->
+      <map code="0xd014" name="1em"/><!-- HANGUL SYLLABLE KWEOK -->
+      <map code="0xd015" name="1em"/><!-- HANGUL SYLLABLE KWEOT -->
+      <map code="0xd016" name="1em"/><!-- HANGUL SYLLABLE KWEOP -->
+      <map code="0xd017" name="1em"/><!-- HANGUL SYLLABLE KWEOH -->
+      <map code="0xd018" name="1em"/><!-- HANGUL SYLLABLE KWE -->
+      <map code="0xd019" name="1em"/><!-- HANGUL SYLLABLE KWEG -->
+      <map code="0xd01a" name="1em"/><!-- HANGUL SYLLABLE KWEGG -->
+      <map code="0xd01b" name="1em"/><!-- HANGUL SYLLABLE KWEGS -->
+      <map code="0xd01c" name="1em"/><!-- HANGUL SYLLABLE KWEN -->
+      <map code="0xd01d" name="1em"/><!-- HANGUL SYLLABLE KWENJ -->
+      <map code="0xd01e" name="1em"/><!-- HANGUL SYLLABLE KWENH -->
+      <map code="0xd01f" name="1em"/><!-- HANGUL SYLLABLE KWED -->
+      <map code="0xd020" name="1em"/><!-- HANGUL SYLLABLE KWEL -->
+      <map code="0xd021" name="1em"/><!-- HANGUL SYLLABLE KWELG -->
+      <map code="0xd022" name="1em"/><!-- HANGUL SYLLABLE KWELM -->
+      <map code="0xd023" name="1em"/><!-- HANGUL SYLLABLE KWELB -->
+      <map code="0xd024" name="1em"/><!-- HANGUL SYLLABLE KWELS -->
+      <map code="0xd025" name="1em"/><!-- HANGUL SYLLABLE KWELT -->
+      <map code="0xd026" name="1em"/><!-- HANGUL SYLLABLE KWELP -->
+      <map code="0xd027" name="1em"/><!-- HANGUL SYLLABLE KWELH -->
+      <map code="0xd028" name="1em"/><!-- HANGUL SYLLABLE KWEM -->
+      <map code="0xd029" name="1em"/><!-- HANGUL SYLLABLE KWEB -->
+      <map code="0xd02a" name="1em"/><!-- HANGUL SYLLABLE KWEBS -->
+      <map code="0xd02b" name="1em"/><!-- HANGUL SYLLABLE KWES -->
+      <map code="0xd02c" name="1em"/><!-- HANGUL SYLLABLE KWESS -->
+      <map code="0xd02d" name="1em"/><!-- HANGUL SYLLABLE KWENG -->
+      <map code="0xd02e" name="1em"/><!-- HANGUL SYLLABLE KWEJ -->
+      <map code="0xd02f" name="1em"/><!-- HANGUL SYLLABLE KWEC -->
+      <map code="0xd030" name="1em"/><!-- HANGUL SYLLABLE KWEK -->
+      <map code="0xd031" name="1em"/><!-- HANGUL SYLLABLE KWET -->
+      <map code="0xd032" name="1em"/><!-- HANGUL SYLLABLE KWEP -->
+      <map code="0xd033" name="1em"/><!-- HANGUL SYLLABLE KWEH -->
+      <map code="0xd034" name="1em"/><!-- HANGUL SYLLABLE KWI -->
+      <map code="0xd035" name="1em"/><!-- HANGUL SYLLABLE KWIG -->
+      <map code="0xd036" name="1em"/><!-- HANGUL SYLLABLE KWIGG -->
+      <map code="0xd037" name="1em"/><!-- HANGUL SYLLABLE KWIGS -->
+      <map code="0xd038" name="1em"/><!-- HANGUL SYLLABLE KWIN -->
+      <map code="0xd039" name="1em"/><!-- HANGUL SYLLABLE KWINJ -->
+      <map code="0xd03a" name="1em"/><!-- HANGUL SYLLABLE KWINH -->
+      <map code="0xd03b" name="1em"/><!-- HANGUL SYLLABLE KWID -->
+      <map code="0xd03c" name="1em"/><!-- HANGUL SYLLABLE KWIL -->
+      <map code="0xd03d" name="1em"/><!-- HANGUL SYLLABLE KWILG -->
+      <map code="0xd03e" name="1em"/><!-- HANGUL SYLLABLE KWILM -->
+      <map code="0xd03f" name="1em"/><!-- HANGUL SYLLABLE KWILB -->
+      <map code="0xd040" name="1em"/><!-- HANGUL SYLLABLE KWILS -->
+      <map code="0xd041" name="1em"/><!-- HANGUL SYLLABLE KWILT -->
+      <map code="0xd042" name="1em"/><!-- HANGUL SYLLABLE KWILP -->
+      <map code="0xd043" name="1em"/><!-- HANGUL SYLLABLE KWILH -->
+      <map code="0xd044" name="1em"/><!-- HANGUL SYLLABLE KWIM -->
+      <map code="0xd045" name="1em"/><!-- HANGUL SYLLABLE KWIB -->
+      <map code="0xd046" name="1em"/><!-- HANGUL SYLLABLE KWIBS -->
+      <map code="0xd047" name="1em"/><!-- HANGUL SYLLABLE KWIS -->
+      <map code="0xd048" name="1em"/><!-- HANGUL SYLLABLE KWISS -->
+      <map code="0xd049" name="1em"/><!-- HANGUL SYLLABLE KWING -->
+      <map code="0xd04a" name="1em"/><!-- HANGUL SYLLABLE KWIJ -->
+      <map code="0xd04b" name="1em"/><!-- HANGUL SYLLABLE KWIC -->
+      <map code="0xd04c" name="1em"/><!-- HANGUL SYLLABLE KWIK -->
+      <map code="0xd04d" name="1em"/><!-- HANGUL SYLLABLE KWIT -->
+      <map code="0xd04e" name="1em"/><!-- HANGUL SYLLABLE KWIP -->
+      <map code="0xd04f" name="1em"/><!-- HANGUL SYLLABLE KWIH -->
+      <map code="0xd050" name="1em"/><!-- HANGUL SYLLABLE KYU -->
+      <map code="0xd051" name="1em"/><!-- HANGUL SYLLABLE KYUG -->
+      <map code="0xd052" name="1em"/><!-- HANGUL SYLLABLE KYUGG -->
+      <map code="0xd053" name="1em"/><!-- HANGUL SYLLABLE KYUGS -->
+      <map code="0xd054" name="1em"/><!-- HANGUL SYLLABLE KYUN -->
+      <map code="0xd055" name="1em"/><!-- HANGUL SYLLABLE KYUNJ -->
+      <map code="0xd056" name="1em"/><!-- HANGUL SYLLABLE KYUNH -->
+      <map code="0xd057" name="1em"/><!-- HANGUL SYLLABLE KYUD -->
+      <map code="0xd058" name="1em"/><!-- HANGUL SYLLABLE KYUL -->
+      <map code="0xd059" name="1em"/><!-- HANGUL SYLLABLE KYULG -->
+      <map code="0xd05a" name="1em"/><!-- HANGUL SYLLABLE KYULM -->
+      <map code="0xd05b" name="1em"/><!-- HANGUL SYLLABLE KYULB -->
+      <map code="0xd05c" name="1em"/><!-- HANGUL SYLLABLE KYULS -->
+      <map code="0xd05d" name="1em"/><!-- HANGUL SYLLABLE KYULT -->
+      <map code="0xd05e" name="1em"/><!-- HANGUL SYLLABLE KYULP -->
+      <map code="0xd05f" name="1em"/><!-- HANGUL SYLLABLE KYULH -->
+      <map code="0xd060" name="1em"/><!-- HANGUL SYLLABLE KYUM -->
+      <map code="0xd061" name="1em"/><!-- HANGUL SYLLABLE KYUB -->
+      <map code="0xd062" name="1em"/><!-- HANGUL SYLLABLE KYUBS -->
+      <map code="0xd063" name="1em"/><!-- HANGUL SYLLABLE KYUS -->
+      <map code="0xd064" name="1em"/><!-- HANGUL SYLLABLE KYUSS -->
+      <map code="0xd065" name="1em"/><!-- HANGUL SYLLABLE KYUNG -->
+      <map code="0xd066" name="1em"/><!-- HANGUL SYLLABLE KYUJ -->
+      <map code="0xd067" name="1em"/><!-- HANGUL SYLLABLE KYUC -->
+      <map code="0xd068" name="1em"/><!-- HANGUL SYLLABLE KYUK -->
+      <map code="0xd069" name="1em"/><!-- HANGUL SYLLABLE KYUT -->
+      <map code="0xd06a" name="1em"/><!-- HANGUL SYLLABLE KYUP -->
+      <map code="0xd06b" name="1em"/><!-- HANGUL SYLLABLE KYUH -->
+      <map code="0xd06c" name="1em"/><!-- HANGUL SYLLABLE KEU -->
+      <map code="0xd06d" name="1em"/><!-- HANGUL SYLLABLE KEUG -->
+      <map code="0xd06e" name="1em"/><!-- HANGUL SYLLABLE KEUGG -->
+      <map code="0xd06f" name="1em"/><!-- HANGUL SYLLABLE KEUGS -->
+      <map code="0xd070" name="1em"/><!-- HANGUL SYLLABLE KEUN -->
+      <map code="0xd071" name="1em"/><!-- HANGUL SYLLABLE KEUNJ -->
+      <map code="0xd072" name="1em"/><!-- HANGUL SYLLABLE KEUNH -->
+      <map code="0xd073" name="1em"/><!-- HANGUL SYLLABLE KEUD -->
+      <map code="0xd074" name="1em"/><!-- HANGUL SYLLABLE KEUL -->
+      <map code="0xd075" name="1em"/><!-- HANGUL SYLLABLE KEULG -->
+      <map code="0xd076" name="1em"/><!-- HANGUL SYLLABLE KEULM -->
+      <map code="0xd077" name="1em"/><!-- HANGUL SYLLABLE KEULB -->
+      <map code="0xd078" name="1em"/><!-- HANGUL SYLLABLE KEULS -->
+      <map code="0xd079" name="1em"/><!-- HANGUL SYLLABLE KEULT -->
+      <map code="0xd07a" name="1em"/><!-- HANGUL SYLLABLE KEULP -->
+      <map code="0xd07b" name="1em"/><!-- HANGUL SYLLABLE KEULH -->
+      <map code="0xd07c" name="1em"/><!-- HANGUL SYLLABLE KEUM -->
+      <map code="0xd07d" name="1em"/><!-- HANGUL SYLLABLE KEUB -->
+      <map code="0xd07e" name="1em"/><!-- HANGUL SYLLABLE KEUBS -->
+      <map code="0xd07f" name="1em"/><!-- HANGUL SYLLABLE KEUS -->
+      <map code="0xd080" name="1em"/><!-- HANGUL SYLLABLE KEUSS -->
+      <map code="0xd081" name="1em"/><!-- HANGUL SYLLABLE KEUNG -->
+      <map code="0xd082" name="1em"/><!-- HANGUL SYLLABLE KEUJ -->
+      <map code="0xd083" name="1em"/><!-- HANGUL SYLLABLE KEUC -->
+      <map code="0xd084" name="1em"/><!-- HANGUL SYLLABLE KEUK -->
+      <map code="0xd085" name="1em"/><!-- HANGUL SYLLABLE KEUT -->
+      <map code="0xd086" name="1em"/><!-- HANGUL SYLLABLE KEUP -->
+      <map code="0xd087" name="1em"/><!-- HANGUL SYLLABLE KEUH -->
+      <map code="0xd088" name="1em"/><!-- HANGUL SYLLABLE KYI -->
+      <map code="0xd089" name="1em"/><!-- HANGUL SYLLABLE KYIG -->
+      <map code="0xd08a" name="1em"/><!-- HANGUL SYLLABLE KYIGG -->
+      <map code="0xd08b" name="1em"/><!-- HANGUL SYLLABLE KYIGS -->
+      <map code="0xd08c" name="1em"/><!-- HANGUL SYLLABLE KYIN -->
+      <map code="0xd08d" name="1em"/><!-- HANGUL SYLLABLE KYINJ -->
+      <map code="0xd08e" name="1em"/><!-- HANGUL SYLLABLE KYINH -->
+      <map code="0xd08f" name="1em"/><!-- HANGUL SYLLABLE KYID -->
+      <map code="0xd090" name="1em"/><!-- HANGUL SYLLABLE KYIL -->
+      <map code="0xd091" name="1em"/><!-- HANGUL SYLLABLE KYILG -->
+      <map code="0xd092" name="1em"/><!-- HANGUL SYLLABLE KYILM -->
+      <map code="0xd093" name="1em"/><!-- HANGUL SYLLABLE KYILB -->
+      <map code="0xd094" name="1em"/><!-- HANGUL SYLLABLE KYILS -->
+      <map code="0xd095" name="1em"/><!-- HANGUL SYLLABLE KYILT -->
+      <map code="0xd096" name="1em"/><!-- HANGUL SYLLABLE KYILP -->
+      <map code="0xd097" name="1em"/><!-- HANGUL SYLLABLE KYILH -->
+      <map code="0xd098" name="1em"/><!-- HANGUL SYLLABLE KYIM -->
+      <map code="0xd099" name="1em"/><!-- HANGUL SYLLABLE KYIB -->
+      <map code="0xd09a" name="1em"/><!-- HANGUL SYLLABLE KYIBS -->
+      <map code="0xd09b" name="1em"/><!-- HANGUL SYLLABLE KYIS -->
+      <map code="0xd09c" name="1em"/><!-- HANGUL SYLLABLE KYISS -->
+      <map code="0xd09d" name="1em"/><!-- HANGUL SYLLABLE KYING -->
+      <map code="0xd09e" name="1em"/><!-- HANGUL SYLLABLE KYIJ -->
+      <map code="0xd09f" name="1em"/><!-- HANGUL SYLLABLE KYIC -->
+      <map code="0xd0a0" name="1em"/><!-- HANGUL SYLLABLE KYIK -->
+      <map code="0xd0a1" name="1em"/><!-- HANGUL SYLLABLE KYIT -->
+      <map code="0xd0a2" name="1em"/><!-- HANGUL SYLLABLE KYIP -->
+      <map code="0xd0a3" name="1em"/><!-- HANGUL SYLLABLE KYIH -->
+      <map code="0xd0a4" name="1em"/><!-- HANGUL SYLLABLE KI -->
+      <map code="0xd0a5" name="1em"/><!-- HANGUL SYLLABLE KIG -->
+      <map code="0xd0a6" name="1em"/><!-- HANGUL SYLLABLE KIGG -->
+      <map code="0xd0a7" name="1em"/><!-- HANGUL SYLLABLE KIGS -->
+      <map code="0xd0a8" name="1em"/><!-- HANGUL SYLLABLE KIN -->
+      <map code="0xd0a9" name="1em"/><!-- HANGUL SYLLABLE KINJ -->
+      <map code="0xd0aa" name="1em"/><!-- HANGUL SYLLABLE KINH -->
+      <map code="0xd0ab" name="1em"/><!-- HANGUL SYLLABLE KID -->
+      <map code="0xd0ac" name="1em"/><!-- HANGUL SYLLABLE KIL -->
+      <map code="0xd0ad" name="1em"/><!-- HANGUL SYLLABLE KILG -->
+      <map code="0xd0ae" name="1em"/><!-- HANGUL SYLLABLE KILM -->
+      <map code="0xd0af" name="1em"/><!-- HANGUL SYLLABLE KILB -->
+      <map code="0xd0b0" name="1em"/><!-- HANGUL SYLLABLE KILS -->
+      <map code="0xd0b1" name="1em"/><!-- HANGUL SYLLABLE KILT -->
+      <map code="0xd0b2" name="1em"/><!-- HANGUL SYLLABLE KILP -->
+      <map code="0xd0b3" name="1em"/><!-- HANGUL SYLLABLE KILH -->
+      <map code="0xd0b4" name="1em"/><!-- HANGUL SYLLABLE KIM -->
+      <map code="0xd0b5" name="1em"/><!-- HANGUL SYLLABLE KIB -->
+      <map code="0xd0b6" name="1em"/><!-- HANGUL SYLLABLE KIBS -->
+      <map code="0xd0b7" name="1em"/><!-- HANGUL SYLLABLE KIS -->
+      <map code="0xd0b8" name="1em"/><!-- HANGUL SYLLABLE KISS -->
+      <map code="0xd0b9" name="1em"/><!-- HANGUL SYLLABLE KING -->
+      <map code="0xd0ba" name="1em"/><!-- HANGUL SYLLABLE KIJ -->
+      <map code="0xd0bb" name="1em"/><!-- HANGUL SYLLABLE KIC -->
+      <map code="0xd0bc" name="1em"/><!-- HANGUL SYLLABLE KIK -->
+      <map code="0xd0bd" name="1em"/><!-- HANGUL SYLLABLE KIT -->
+      <map code="0xd0be" name="1em"/><!-- HANGUL SYLLABLE KIP -->
+      <map code="0xd0bf" name="1em"/><!-- HANGUL SYLLABLE KIH -->
+      <map code="0xd0c0" name="1em"/><!-- HANGUL SYLLABLE TA -->
+      <map code="0xd0c1" name="1em"/><!-- HANGUL SYLLABLE TAG -->
+      <map code="0xd0c2" name="1em"/><!-- HANGUL SYLLABLE TAGG -->
+      <map code="0xd0c3" name="1em"/><!-- HANGUL SYLLABLE TAGS -->
+      <map code="0xd0c4" name="1em"/><!-- HANGUL SYLLABLE TAN -->
+      <map code="0xd0c5" name="1em"/><!-- HANGUL SYLLABLE TANJ -->
+      <map code="0xd0c6" name="1em"/><!-- HANGUL SYLLABLE TANH -->
+      <map code="0xd0c7" name="1em"/><!-- HANGUL SYLLABLE TAD -->
+      <map code="0xd0c8" name="1em"/><!-- HANGUL SYLLABLE TAL -->
+      <map code="0xd0c9" name="1em"/><!-- HANGUL SYLLABLE TALG -->
+      <map code="0xd0ca" name="1em"/><!-- HANGUL SYLLABLE TALM -->
+      <map code="0xd0cb" name="1em"/><!-- HANGUL SYLLABLE TALB -->
+      <map code="0xd0cc" name="1em"/><!-- HANGUL SYLLABLE TALS -->
+      <map code="0xd0cd" name="1em"/><!-- HANGUL SYLLABLE TALT -->
+      <map code="0xd0ce" name="1em"/><!-- HANGUL SYLLABLE TALP -->
+      <map code="0xd0cf" name="1em"/><!-- HANGUL SYLLABLE TALH -->
+      <map code="0xd0d0" name="1em"/><!-- HANGUL SYLLABLE TAM -->
+      <map code="0xd0d1" name="1em"/><!-- HANGUL SYLLABLE TAB -->
+      <map code="0xd0d2" name="1em"/><!-- HANGUL SYLLABLE TABS -->
+      <map code="0xd0d3" name="1em"/><!-- HANGUL SYLLABLE TAS -->
+      <map code="0xd0d4" name="1em"/><!-- HANGUL SYLLABLE TASS -->
+      <map code="0xd0d5" name="1em"/><!-- HANGUL SYLLABLE TANG -->
+      <map code="0xd0d6" name="1em"/><!-- HANGUL SYLLABLE TAJ -->
+      <map code="0xd0d7" name="1em"/><!-- HANGUL SYLLABLE TAC -->
+      <map code="0xd0d8" name="1em"/><!-- HANGUL SYLLABLE TAK -->
+      <map code="0xd0d9" name="1em"/><!-- HANGUL SYLLABLE TAT -->
+      <map code="0xd0da" name="1em"/><!-- HANGUL SYLLABLE TAP -->
+      <map code="0xd0db" name="1em"/><!-- HANGUL SYLLABLE TAH -->
+      <map code="0xd0dc" name="1em"/><!-- HANGUL SYLLABLE TAE -->
+      <map code="0xd0dd" name="1em"/><!-- HANGUL SYLLABLE TAEG -->
+      <map code="0xd0de" name="1em"/><!-- HANGUL SYLLABLE TAEGG -->
+      <map code="0xd0df" name="1em"/><!-- HANGUL SYLLABLE TAEGS -->
+      <map code="0xd0e0" name="1em"/><!-- HANGUL SYLLABLE TAEN -->
+      <map code="0xd0e1" name="1em"/><!-- HANGUL SYLLABLE TAENJ -->
+      <map code="0xd0e2" name="1em"/><!-- HANGUL SYLLABLE TAENH -->
+      <map code="0xd0e3" name="1em"/><!-- HANGUL SYLLABLE TAED -->
+      <map code="0xd0e4" name="1em"/><!-- HANGUL SYLLABLE TAEL -->
+      <map code="0xd0e5" name="1em"/><!-- HANGUL SYLLABLE TAELG -->
+      <map code="0xd0e6" name="1em"/><!-- HANGUL SYLLABLE TAELM -->
+      <map code="0xd0e7" name="1em"/><!-- HANGUL SYLLABLE TAELB -->
+      <map code="0xd0e8" name="1em"/><!-- HANGUL SYLLABLE TAELS -->
+      <map code="0xd0e9" name="1em"/><!-- HANGUL SYLLABLE TAELT -->
+      <map code="0xd0ea" name="1em"/><!-- HANGUL SYLLABLE TAELP -->
+      <map code="0xd0eb" name="1em"/><!-- HANGUL SYLLABLE TAELH -->
+      <map code="0xd0ec" name="1em"/><!-- HANGUL SYLLABLE TAEM -->
+      <map code="0xd0ed" name="1em"/><!-- HANGUL SYLLABLE TAEB -->
+      <map code="0xd0ee" name="1em"/><!-- HANGUL SYLLABLE TAEBS -->
+      <map code="0xd0ef" name="1em"/><!-- HANGUL SYLLABLE TAES -->
+      <map code="0xd0f0" name="1em"/><!-- HANGUL SYLLABLE TAESS -->
+      <map code="0xd0f1" name="1em"/><!-- HANGUL SYLLABLE TAENG -->
+      <map code="0xd0f2" name="1em"/><!-- HANGUL SYLLABLE TAEJ -->
+      <map code="0xd0f3" name="1em"/><!-- HANGUL SYLLABLE TAEC -->
+      <map code="0xd0f4" name="1em"/><!-- HANGUL SYLLABLE TAEK -->
+      <map code="0xd0f5" name="1em"/><!-- HANGUL SYLLABLE TAET -->
+      <map code="0xd0f6" name="1em"/><!-- HANGUL SYLLABLE TAEP -->
+      <map code="0xd0f7" name="1em"/><!-- HANGUL SYLLABLE TAEH -->
+      <map code="0xd0f8" name="1em"/><!-- HANGUL SYLLABLE TYA -->
+      <map code="0xd0f9" name="1em"/><!-- HANGUL SYLLABLE TYAG -->
+      <map code="0xd0fa" name="1em"/><!-- HANGUL SYLLABLE TYAGG -->
+      <map code="0xd0fb" name="1em"/><!-- HANGUL SYLLABLE TYAGS -->
+      <map code="0xd0fc" name="1em"/><!-- HANGUL SYLLABLE TYAN -->
+      <map code="0xd0fd" name="1em"/><!-- HANGUL SYLLABLE TYANJ -->
+      <map code="0xd0fe" name="1em"/><!-- HANGUL SYLLABLE TYANH -->
+      <map code="0xd0ff" name="1em"/><!-- HANGUL SYLLABLE TYAD -->
+      <map code="0xd100" name="1em"/><!-- HANGUL SYLLABLE TYAL -->
+      <map code="0xd101" name="1em"/><!-- HANGUL SYLLABLE TYALG -->
+      <map code="0xd102" name="1em"/><!-- HANGUL SYLLABLE TYALM -->
+      <map code="0xd103" name="1em"/><!-- HANGUL SYLLABLE TYALB -->
+      <map code="0xd104" name="1em"/><!-- HANGUL SYLLABLE TYALS -->
+      <map code="0xd105" name="1em"/><!-- HANGUL SYLLABLE TYALT -->
+      <map code="0xd106" name="1em"/><!-- HANGUL SYLLABLE TYALP -->
+      <map code="0xd107" name="1em"/><!-- HANGUL SYLLABLE TYALH -->
+      <map code="0xd108" name="1em"/><!-- HANGUL SYLLABLE TYAM -->
+      <map code="0xd109" name="1em"/><!-- HANGUL SYLLABLE TYAB -->
+      <map code="0xd10a" name="1em"/><!-- HANGUL SYLLABLE TYABS -->
+      <map code="0xd10b" name="1em"/><!-- HANGUL SYLLABLE TYAS -->
+      <map code="0xd10c" name="1em"/><!-- HANGUL SYLLABLE TYASS -->
+      <map code="0xd10d" name="1em"/><!-- HANGUL SYLLABLE TYANG -->
+      <map code="0xd10e" name="1em"/><!-- HANGUL SYLLABLE TYAJ -->
+      <map code="0xd10f" name="1em"/><!-- HANGUL SYLLABLE TYAC -->
+      <map code="0xd110" name="1em"/><!-- HANGUL SYLLABLE TYAK -->
+      <map code="0xd111" name="1em"/><!-- HANGUL SYLLABLE TYAT -->
+      <map code="0xd112" name="1em"/><!-- HANGUL SYLLABLE TYAP -->
+      <map code="0xd113" name="1em"/><!-- HANGUL SYLLABLE TYAH -->
+      <map code="0xd114" name="1em"/><!-- HANGUL SYLLABLE TYAE -->
+      <map code="0xd115" name="1em"/><!-- HANGUL SYLLABLE TYAEG -->
+      <map code="0xd116" name="1em"/><!-- HANGUL SYLLABLE TYAEGG -->
+      <map code="0xd117" name="1em"/><!-- HANGUL SYLLABLE TYAEGS -->
+      <map code="0xd118" name="1em"/><!-- HANGUL SYLLABLE TYAEN -->
+      <map code="0xd119" name="1em"/><!-- HANGUL SYLLABLE TYAENJ -->
+      <map code="0xd11a" name="1em"/><!-- HANGUL SYLLABLE TYAENH -->
+      <map code="0xd11b" name="1em"/><!-- HANGUL SYLLABLE TYAED -->
+      <map code="0xd11c" name="1em"/><!-- HANGUL SYLLABLE TYAEL -->
+      <map code="0xd11d" name="1em"/><!-- HANGUL SYLLABLE TYAELG -->
+      <map code="0xd11e" name="1em"/><!-- HANGUL SYLLABLE TYAELM -->
+      <map code="0xd11f" name="1em"/><!-- HANGUL SYLLABLE TYAELB -->
+      <map code="0xd120" name="1em"/><!-- HANGUL SYLLABLE TYAELS -->
+      <map code="0xd121" name="1em"/><!-- HANGUL SYLLABLE TYAELT -->
+      <map code="0xd122" name="1em"/><!-- HANGUL SYLLABLE TYAELP -->
+      <map code="0xd123" name="1em"/><!-- HANGUL SYLLABLE TYAELH -->
+      <map code="0xd124" name="1em"/><!-- HANGUL SYLLABLE TYAEM -->
+      <map code="0xd125" name="1em"/><!-- HANGUL SYLLABLE TYAEB -->
+      <map code="0xd126" name="1em"/><!-- HANGUL SYLLABLE TYAEBS -->
+      <map code="0xd127" name="1em"/><!-- HANGUL SYLLABLE TYAES -->
+      <map code="0xd128" name="1em"/><!-- HANGUL SYLLABLE TYAESS -->
+      <map code="0xd129" name="1em"/><!-- HANGUL SYLLABLE TYAENG -->
+      <map code="0xd12a" name="1em"/><!-- HANGUL SYLLABLE TYAEJ -->
+      <map code="0xd12b" name="1em"/><!-- HANGUL SYLLABLE TYAEC -->
+      <map code="0xd12c" name="1em"/><!-- HANGUL SYLLABLE TYAEK -->
+      <map code="0xd12d" name="1em"/><!-- HANGUL SYLLABLE TYAET -->
+      <map code="0xd12e" name="1em"/><!-- HANGUL SYLLABLE TYAEP -->
+      <map code="0xd12f" name="1em"/><!-- HANGUL SYLLABLE TYAEH -->
+      <map code="0xd130" name="1em"/><!-- HANGUL SYLLABLE TEO -->
+      <map code="0xd131" name="1em"/><!-- HANGUL SYLLABLE TEOG -->
+      <map code="0xd132" name="1em"/><!-- HANGUL SYLLABLE TEOGG -->
+      <map code="0xd133" name="1em"/><!-- HANGUL SYLLABLE TEOGS -->
+      <map code="0xd134" name="1em"/><!-- HANGUL SYLLABLE TEON -->
+      <map code="0xd135" name="1em"/><!-- HANGUL SYLLABLE TEONJ -->
+      <map code="0xd136" name="1em"/><!-- HANGUL SYLLABLE TEONH -->
+      <map code="0xd137" name="1em"/><!-- HANGUL SYLLABLE TEOD -->
+      <map code="0xd138" name="1em"/><!-- HANGUL SYLLABLE TEOL -->
+      <map code="0xd139" name="1em"/><!-- HANGUL SYLLABLE TEOLG -->
+      <map code="0xd13a" name="1em"/><!-- HANGUL SYLLABLE TEOLM -->
+      <map code="0xd13b" name="1em"/><!-- HANGUL SYLLABLE TEOLB -->
+      <map code="0xd13c" name="1em"/><!-- HANGUL SYLLABLE TEOLS -->
+      <map code="0xd13d" name="1em"/><!-- HANGUL SYLLABLE TEOLT -->
+      <map code="0xd13e" name="1em"/><!-- HANGUL SYLLABLE TEOLP -->
+      <map code="0xd13f" name="1em"/><!-- HANGUL SYLLABLE TEOLH -->
+      <map code="0xd140" name="1em"/><!-- HANGUL SYLLABLE TEOM -->
+      <map code="0xd141" name="1em"/><!-- HANGUL SYLLABLE TEOB -->
+      <map code="0xd142" name="1em"/><!-- HANGUL SYLLABLE TEOBS -->
+      <map code="0xd143" name="1em"/><!-- HANGUL SYLLABLE TEOS -->
+      <map code="0xd144" name="1em"/><!-- HANGUL SYLLABLE TEOSS -->
+      <map code="0xd145" name="1em"/><!-- HANGUL SYLLABLE TEONG -->
+      <map code="0xd146" name="1em"/><!-- HANGUL SYLLABLE TEOJ -->
+      <map code="0xd147" name="1em"/><!-- HANGUL SYLLABLE TEOC -->
+      <map code="0xd148" name="1em"/><!-- HANGUL SYLLABLE TEOK -->
+      <map code="0xd149" name="1em"/><!-- HANGUL SYLLABLE TEOT -->
+      <map code="0xd14a" name="1em"/><!-- HANGUL SYLLABLE TEOP -->
+      <map code="0xd14b" name="1em"/><!-- HANGUL SYLLABLE TEOH -->
+      <map code="0xd14c" name="1em"/><!-- HANGUL SYLLABLE TE -->
+      <map code="0xd14d" name="1em"/><!-- HANGUL SYLLABLE TEG -->
+      <map code="0xd14e" name="1em"/><!-- HANGUL SYLLABLE TEGG -->
+      <map code="0xd14f" name="1em"/><!-- HANGUL SYLLABLE TEGS -->
+      <map code="0xd150" name="1em"/><!-- HANGUL SYLLABLE TEN -->
+      <map code="0xd151" name="1em"/><!-- HANGUL SYLLABLE TENJ -->
+      <map code="0xd152" name="1em"/><!-- HANGUL SYLLABLE TENH -->
+      <map code="0xd153" name="1em"/><!-- HANGUL SYLLABLE TED -->
+      <map code="0xd154" name="1em"/><!-- HANGUL SYLLABLE TEL -->
+      <map code="0xd155" name="1em"/><!-- HANGUL SYLLABLE TELG -->
+      <map code="0xd156" name="1em"/><!-- HANGUL SYLLABLE TELM -->
+      <map code="0xd157" name="1em"/><!-- HANGUL SYLLABLE TELB -->
+      <map code="0xd158" name="1em"/><!-- HANGUL SYLLABLE TELS -->
+      <map code="0xd159" name="1em"/><!-- HANGUL SYLLABLE TELT -->
+      <map code="0xd15a" name="1em"/><!-- HANGUL SYLLABLE TELP -->
+      <map code="0xd15b" name="1em"/><!-- HANGUL SYLLABLE TELH -->
+      <map code="0xd15c" name="1em"/><!-- HANGUL SYLLABLE TEM -->
+      <map code="0xd15d" name="1em"/><!-- HANGUL SYLLABLE TEB -->
+      <map code="0xd15e" name="1em"/><!-- HANGUL SYLLABLE TEBS -->
+      <map code="0xd15f" name="1em"/><!-- HANGUL SYLLABLE TES -->
+      <map code="0xd160" name="1em"/><!-- HANGUL SYLLABLE TESS -->
+      <map code="0xd161" name="1em"/><!-- HANGUL SYLLABLE TENG -->
+      <map code="0xd162" name="1em"/><!-- HANGUL SYLLABLE TEJ -->
+      <map code="0xd163" name="1em"/><!-- HANGUL SYLLABLE TEC -->
+      <map code="0xd164" name="1em"/><!-- HANGUL SYLLABLE TEK -->
+      <map code="0xd165" name="1em"/><!-- HANGUL SYLLABLE TET -->
+      <map code="0xd166" name="1em"/><!-- HANGUL SYLLABLE TEP -->
+      <map code="0xd167" name="1em"/><!-- HANGUL SYLLABLE TEH -->
+      <map code="0xd168" name="1em"/><!-- HANGUL SYLLABLE TYEO -->
+      <map code="0xd169" name="1em"/><!-- HANGUL SYLLABLE TYEOG -->
+      <map code="0xd16a" name="1em"/><!-- HANGUL SYLLABLE TYEOGG -->
+      <map code="0xd16b" name="1em"/><!-- HANGUL SYLLABLE TYEOGS -->
+      <map code="0xd16c" name="1em"/><!-- HANGUL SYLLABLE TYEON -->
+      <map code="0xd16d" name="1em"/><!-- HANGUL SYLLABLE TYEONJ -->
+      <map code="0xd16e" name="1em"/><!-- HANGUL SYLLABLE TYEONH -->
+      <map code="0xd16f" name="1em"/><!-- HANGUL SYLLABLE TYEOD -->
+      <map code="0xd170" name="1em"/><!-- HANGUL SYLLABLE TYEOL -->
+      <map code="0xd171" name="1em"/><!-- HANGUL SYLLABLE TYEOLG -->
+      <map code="0xd172" name="1em"/><!-- HANGUL SYLLABLE TYEOLM -->
+      <map code="0xd173" name="1em"/><!-- HANGUL SYLLABLE TYEOLB -->
+      <map code="0xd174" name="1em"/><!-- HANGUL SYLLABLE TYEOLS -->
+      <map code="0xd175" name="1em"/><!-- HANGUL SYLLABLE TYEOLT -->
+      <map code="0xd176" name="1em"/><!-- HANGUL SYLLABLE TYEOLP -->
+      <map code="0xd177" name="1em"/><!-- HANGUL SYLLABLE TYEOLH -->
+      <map code="0xd178" name="1em"/><!-- HANGUL SYLLABLE TYEOM -->
+      <map code="0xd179" name="1em"/><!-- HANGUL SYLLABLE TYEOB -->
+      <map code="0xd17a" name="1em"/><!-- HANGUL SYLLABLE TYEOBS -->
+      <map code="0xd17b" name="1em"/><!-- HANGUL SYLLABLE TYEOS -->
+      <map code="0xd17c" name="1em"/><!-- HANGUL SYLLABLE TYEOSS -->
+      <map code="0xd17d" name="1em"/><!-- HANGUL SYLLABLE TYEONG -->
+      <map code="0xd17e" name="1em"/><!-- HANGUL SYLLABLE TYEOJ -->
+      <map code="0xd17f" name="1em"/><!-- HANGUL SYLLABLE TYEOC -->
+      <map code="0xd180" name="1em"/><!-- HANGUL SYLLABLE TYEOK -->
+      <map code="0xd181" name="1em"/><!-- HANGUL SYLLABLE TYEOT -->
+      <map code="0xd182" name="1em"/><!-- HANGUL SYLLABLE TYEOP -->
+      <map code="0xd183" name="1em"/><!-- HANGUL SYLLABLE TYEOH -->
+      <map code="0xd184" name="1em"/><!-- HANGUL SYLLABLE TYE -->
+      <map code="0xd185" name="1em"/><!-- HANGUL SYLLABLE TYEG -->
+      <map code="0xd186" name="1em"/><!-- HANGUL SYLLABLE TYEGG -->
+      <map code="0xd187" name="1em"/><!-- HANGUL SYLLABLE TYEGS -->
+      <map code="0xd188" name="1em"/><!-- HANGUL SYLLABLE TYEN -->
+      <map code="0xd189" name="1em"/><!-- HANGUL SYLLABLE TYENJ -->
+      <map code="0xd18a" name="1em"/><!-- HANGUL SYLLABLE TYENH -->
+      <map code="0xd18b" name="1em"/><!-- HANGUL SYLLABLE TYED -->
+      <map code="0xd18c" name="1em"/><!-- HANGUL SYLLABLE TYEL -->
+      <map code="0xd18d" name="1em"/><!-- HANGUL SYLLABLE TYELG -->
+      <map code="0xd18e" name="1em"/><!-- HANGUL SYLLABLE TYELM -->
+      <map code="0xd18f" name="1em"/><!-- HANGUL SYLLABLE TYELB -->
+      <map code="0xd190" name="1em"/><!-- HANGUL SYLLABLE TYELS -->
+      <map code="0xd191" name="1em"/><!-- HANGUL SYLLABLE TYELT -->
+      <map code="0xd192" name="1em"/><!-- HANGUL SYLLABLE TYELP -->
+      <map code="0xd193" name="1em"/><!-- HANGUL SYLLABLE TYELH -->
+      <map code="0xd194" name="1em"/><!-- HANGUL SYLLABLE TYEM -->
+      <map code="0xd195" name="1em"/><!-- HANGUL SYLLABLE TYEB -->
+      <map code="0xd196" name="1em"/><!-- HANGUL SYLLABLE TYEBS -->
+      <map code="0xd197" name="1em"/><!-- HANGUL SYLLABLE TYES -->
+      <map code="0xd198" name="1em"/><!-- HANGUL SYLLABLE TYESS -->
+      <map code="0xd199" name="1em"/><!-- HANGUL SYLLABLE TYENG -->
+      <map code="0xd19a" name="1em"/><!-- HANGUL SYLLABLE TYEJ -->
+      <map code="0xd19b" name="1em"/><!-- HANGUL SYLLABLE TYEC -->
+      <map code="0xd19c" name="1em"/><!-- HANGUL SYLLABLE TYEK -->
+      <map code="0xd19d" name="1em"/><!-- HANGUL SYLLABLE TYET -->
+      <map code="0xd19e" name="1em"/><!-- HANGUL SYLLABLE TYEP -->
+      <map code="0xd19f" name="1em"/><!-- HANGUL SYLLABLE TYEH -->
+      <map code="0xd1a0" name="1em"/><!-- HANGUL SYLLABLE TO -->
+      <map code="0xd1a1" name="1em"/><!-- HANGUL SYLLABLE TOG -->
+      <map code="0xd1a2" name="1em"/><!-- HANGUL SYLLABLE TOGG -->
+      <map code="0xd1a3" name="1em"/><!-- HANGUL SYLLABLE TOGS -->
+      <map code="0xd1a4" name="1em"/><!-- HANGUL SYLLABLE TON -->
+      <map code="0xd1a5" name="1em"/><!-- HANGUL SYLLABLE TONJ -->
+      <map code="0xd1a6" name="1em"/><!-- HANGUL SYLLABLE TONH -->
+      <map code="0xd1a7" name="1em"/><!-- HANGUL SYLLABLE TOD -->
+      <map code="0xd1a8" name="1em"/><!-- HANGUL SYLLABLE TOL -->
+      <map code="0xd1a9" name="1em"/><!-- HANGUL SYLLABLE TOLG -->
+      <map code="0xd1aa" name="1em"/><!-- HANGUL SYLLABLE TOLM -->
+      <map code="0xd1ab" name="1em"/><!-- HANGUL SYLLABLE TOLB -->
+      <map code="0xd1ac" name="1em"/><!-- HANGUL SYLLABLE TOLS -->
+      <map code="0xd1ad" name="1em"/><!-- HANGUL SYLLABLE TOLT -->
+      <map code="0xd1ae" name="1em"/><!-- HANGUL SYLLABLE TOLP -->
+      <map code="0xd1af" name="1em"/><!-- HANGUL SYLLABLE TOLH -->
+      <map code="0xd1b0" name="1em"/><!-- HANGUL SYLLABLE TOM -->
+      <map code="0xd1b1" name="1em"/><!-- HANGUL SYLLABLE TOB -->
+      <map code="0xd1b2" name="1em"/><!-- HANGUL SYLLABLE TOBS -->
+      <map code="0xd1b3" name="1em"/><!-- HANGUL SYLLABLE TOS -->
+      <map code="0xd1b4" name="1em"/><!-- HANGUL SYLLABLE TOSS -->
+      <map code="0xd1b5" name="1em"/><!-- HANGUL SYLLABLE TONG -->
+      <map code="0xd1b6" name="1em"/><!-- HANGUL SYLLABLE TOJ -->
+      <map code="0xd1b7" name="1em"/><!-- HANGUL SYLLABLE TOC -->
+      <map code="0xd1b8" name="1em"/><!-- HANGUL SYLLABLE TOK -->
+      <map code="0xd1b9" name="1em"/><!-- HANGUL SYLLABLE TOT -->
+      <map code="0xd1ba" name="1em"/><!-- HANGUL SYLLABLE TOP -->
+      <map code="0xd1bb" name="1em"/><!-- HANGUL SYLLABLE TOH -->
+      <map code="0xd1bc" name="1em"/><!-- HANGUL SYLLABLE TWA -->
+      <map code="0xd1bd" name="1em"/><!-- HANGUL SYLLABLE TWAG -->
+      <map code="0xd1be" name="1em"/><!-- HANGUL SYLLABLE TWAGG -->
+      <map code="0xd1bf" name="1em"/><!-- HANGUL SYLLABLE TWAGS -->
+      <map code="0xd1c0" name="1em"/><!-- HANGUL SYLLABLE TWAN -->
+      <map code="0xd1c1" name="1em"/><!-- HANGUL SYLLABLE TWANJ -->
+      <map code="0xd1c2" name="1em"/><!-- HANGUL SYLLABLE TWANH -->
+      <map code="0xd1c3" name="1em"/><!-- HANGUL SYLLABLE TWAD -->
+      <map code="0xd1c4" name="1em"/><!-- HANGUL SYLLABLE TWAL -->
+      <map code="0xd1c5" name="1em"/><!-- HANGUL SYLLABLE TWALG -->
+      <map code="0xd1c6" name="1em"/><!-- HANGUL SYLLABLE TWALM -->
+      <map code="0xd1c7" name="1em"/><!-- HANGUL SYLLABLE TWALB -->
+      <map code="0xd1c8" name="1em"/><!-- HANGUL SYLLABLE TWALS -->
+      <map code="0xd1c9" name="1em"/><!-- HANGUL SYLLABLE TWALT -->
+      <map code="0xd1ca" name="1em"/><!-- HANGUL SYLLABLE TWALP -->
+      <map code="0xd1cb" name="1em"/><!-- HANGUL SYLLABLE TWALH -->
+      <map code="0xd1cc" name="1em"/><!-- HANGUL SYLLABLE TWAM -->
+      <map code="0xd1cd" name="1em"/><!-- HANGUL SYLLABLE TWAB -->
+      <map code="0xd1ce" name="1em"/><!-- HANGUL SYLLABLE TWABS -->
+      <map code="0xd1cf" name="1em"/><!-- HANGUL SYLLABLE TWAS -->
+      <map code="0xd1d0" name="1em"/><!-- HANGUL SYLLABLE TWASS -->
+      <map code="0xd1d1" name="1em"/><!-- HANGUL SYLLABLE TWANG -->
+      <map code="0xd1d2" name="1em"/><!-- HANGUL SYLLABLE TWAJ -->
+      <map code="0xd1d3" name="1em"/><!-- HANGUL SYLLABLE TWAC -->
+      <map code="0xd1d4" name="1em"/><!-- HANGUL SYLLABLE TWAK -->
+      <map code="0xd1d5" name="1em"/><!-- HANGUL SYLLABLE TWAT -->
+      <map code="0xd1d6" name="1em"/><!-- HANGUL SYLLABLE TWAP -->
+      <map code="0xd1d7" name="1em"/><!-- HANGUL SYLLABLE TWAH -->
+      <map code="0xd1d8" name="1em"/><!-- HANGUL SYLLABLE TWAE -->
+      <map code="0xd1d9" name="1em"/><!-- HANGUL SYLLABLE TWAEG -->
+      <map code="0xd1da" name="1em"/><!-- HANGUL SYLLABLE TWAEGG -->
+      <map code="0xd1db" name="1em"/><!-- HANGUL SYLLABLE TWAEGS -->
+      <map code="0xd1dc" name="1em"/><!-- HANGUL SYLLABLE TWAEN -->
+      <map code="0xd1dd" name="1em"/><!-- HANGUL SYLLABLE TWAENJ -->
+      <map code="0xd1de" name="1em"/><!-- HANGUL SYLLABLE TWAENH -->
+      <map code="0xd1df" name="1em"/><!-- HANGUL SYLLABLE TWAED -->
+      <map code="0xd1e0" name="1em"/><!-- HANGUL SYLLABLE TWAEL -->
+      <map code="0xd1e1" name="1em"/><!-- HANGUL SYLLABLE TWAELG -->
+      <map code="0xd1e2" name="1em"/><!-- HANGUL SYLLABLE TWAELM -->
+      <map code="0xd1e3" name="1em"/><!-- HANGUL SYLLABLE TWAELB -->
+      <map code="0xd1e4" name="1em"/><!-- HANGUL SYLLABLE TWAELS -->
+      <map code="0xd1e5" name="1em"/><!-- HANGUL SYLLABLE TWAELT -->
+      <map code="0xd1e6" name="1em"/><!-- HANGUL SYLLABLE TWAELP -->
+      <map code="0xd1e7" name="1em"/><!-- HANGUL SYLLABLE TWAELH -->
+      <map code="0xd1e8" name="1em"/><!-- HANGUL SYLLABLE TWAEM -->
+      <map code="0xd1e9" name="1em"/><!-- HANGUL SYLLABLE TWAEB -->
+      <map code="0xd1ea" name="1em"/><!-- HANGUL SYLLABLE TWAEBS -->
+      <map code="0xd1eb" name="1em"/><!-- HANGUL SYLLABLE TWAES -->
+      <map code="0xd1ec" name="1em"/><!-- HANGUL SYLLABLE TWAESS -->
+      <map code="0xd1ed" name="1em"/><!-- HANGUL SYLLABLE TWAENG -->
+      <map code="0xd1ee" name="1em"/><!-- HANGUL SYLLABLE TWAEJ -->
+      <map code="0xd1ef" name="1em"/><!-- HANGUL SYLLABLE TWAEC -->
+      <map code="0xd1f0" name="1em"/><!-- HANGUL SYLLABLE TWAEK -->
+      <map code="0xd1f1" name="1em"/><!-- HANGUL SYLLABLE TWAET -->
+      <map code="0xd1f2" name="1em"/><!-- HANGUL SYLLABLE TWAEP -->
+      <map code="0xd1f3" name="1em"/><!-- HANGUL SYLLABLE TWAEH -->
+      <map code="0xd1f4" name="1em"/><!-- HANGUL SYLLABLE TOE -->
+      <map code="0xd1f5" name="1em"/><!-- HANGUL SYLLABLE TOEG -->
+      <map code="0xd1f6" name="1em"/><!-- HANGUL SYLLABLE TOEGG -->
+      <map code="0xd1f7" name="1em"/><!-- HANGUL SYLLABLE TOEGS -->
+      <map code="0xd1f8" name="1em"/><!-- HANGUL SYLLABLE TOEN -->
+      <map code="0xd1f9" name="1em"/><!-- HANGUL SYLLABLE TOENJ -->
+      <map code="0xd1fa" name="1em"/><!-- HANGUL SYLLABLE TOENH -->
+      <map code="0xd1fb" name="1em"/><!-- HANGUL SYLLABLE TOED -->
+      <map code="0xd1fc" name="1em"/><!-- HANGUL SYLLABLE TOEL -->
+      <map code="0xd1fd" name="1em"/><!-- HANGUL SYLLABLE TOELG -->
+      <map code="0xd1fe" name="1em"/><!-- HANGUL SYLLABLE TOELM -->
+      <map code="0xd1ff" name="1em"/><!-- HANGUL SYLLABLE TOELB -->
+      <map code="0xd200" name="1em"/><!-- HANGUL SYLLABLE TOELS -->
+      <map code="0xd201" name="1em"/><!-- HANGUL SYLLABLE TOELT -->
+      <map code="0xd202" name="1em"/><!-- HANGUL SYLLABLE TOELP -->
+      <map code="0xd203" name="1em"/><!-- HANGUL SYLLABLE TOELH -->
+      <map code="0xd204" name="1em"/><!-- HANGUL SYLLABLE TOEM -->
+      <map code="0xd205" name="1em"/><!-- HANGUL SYLLABLE TOEB -->
+      <map code="0xd206" name="1em"/><!-- HANGUL SYLLABLE TOEBS -->
+      <map code="0xd207" name="1em"/><!-- HANGUL SYLLABLE TOES -->
+      <map code="0xd208" name="1em"/><!-- HANGUL SYLLABLE TOESS -->
+      <map code="0xd209" name="1em"/><!-- HANGUL SYLLABLE TOENG -->
+      <map code="0xd20a" name="1em"/><!-- HANGUL SYLLABLE TOEJ -->
+      <map code="0xd20b" name="1em"/><!-- HANGUL SYLLABLE TOEC -->
+      <map code="0xd20c" name="1em"/><!-- HANGUL SYLLABLE TOEK -->
+      <map code="0xd20d" name="1em"/><!-- HANGUL SYLLABLE TOET -->
+      <map code="0xd20e" name="1em"/><!-- HANGUL SYLLABLE TOEP -->
+      <map code="0xd20f" name="1em"/><!-- HANGUL SYLLABLE TOEH -->
+      <map code="0xd210" name="1em"/><!-- HANGUL SYLLABLE TYO -->
+      <map code="0xd211" name="1em"/><!-- HANGUL SYLLABLE TYOG -->
+      <map code="0xd212" name="1em"/><!-- HANGUL SYLLABLE TYOGG -->
+      <map code="0xd213" name="1em"/><!-- HANGUL SYLLABLE TYOGS -->
+      <map code="0xd214" name="1em"/><!-- HANGUL SYLLABLE TYON -->
+      <map code="0xd215" name="1em"/><!-- HANGUL SYLLABLE TYONJ -->
+      <map code="0xd216" name="1em"/><!-- HANGUL SYLLABLE TYONH -->
+      <map code="0xd217" name="1em"/><!-- HANGUL SYLLABLE TYOD -->
+      <map code="0xd218" name="1em"/><!-- HANGUL SYLLABLE TYOL -->
+      <map code="0xd219" name="1em"/><!-- HANGUL SYLLABLE TYOLG -->
+      <map code="0xd21a" name="1em"/><!-- HANGUL SYLLABLE TYOLM -->
+      <map code="0xd21b" name="1em"/><!-- HANGUL SYLLABLE TYOLB -->
+      <map code="0xd21c" name="1em"/><!-- HANGUL SYLLABLE TYOLS -->
+      <map code="0xd21d" name="1em"/><!-- HANGUL SYLLABLE TYOLT -->
+      <map code="0xd21e" name="1em"/><!-- HANGUL SYLLABLE TYOLP -->
+      <map code="0xd21f" name="1em"/><!-- HANGUL SYLLABLE TYOLH -->
+      <map code="0xd220" name="1em"/><!-- HANGUL SYLLABLE TYOM -->
+      <map code="0xd221" name="1em"/><!-- HANGUL SYLLABLE TYOB -->
+      <map code="0xd222" name="1em"/><!-- HANGUL SYLLABLE TYOBS -->
+      <map code="0xd223" name="1em"/><!-- HANGUL SYLLABLE TYOS -->
+      <map code="0xd224" name="1em"/><!-- HANGUL SYLLABLE TYOSS -->
+      <map code="0xd225" name="1em"/><!-- HANGUL SYLLABLE TYONG -->
+      <map code="0xd226" name="1em"/><!-- HANGUL SYLLABLE TYOJ -->
+      <map code="0xd227" name="1em"/><!-- HANGUL SYLLABLE TYOC -->
+      <map code="0xd228" name="1em"/><!-- HANGUL SYLLABLE TYOK -->
+      <map code="0xd229" name="1em"/><!-- HANGUL SYLLABLE TYOT -->
+      <map code="0xd22a" name="1em"/><!-- HANGUL SYLLABLE TYOP -->
+      <map code="0xd22b" name="1em"/><!-- HANGUL SYLLABLE TYOH -->
+      <map code="0xd22c" name="1em"/><!-- HANGUL SYLLABLE TU -->
+      <map code="0xd22d" name="1em"/><!-- HANGUL SYLLABLE TUG -->
+      <map code="0xd22e" name="1em"/><!-- HANGUL SYLLABLE TUGG -->
+      <map code="0xd22f" name="1em"/><!-- HANGUL SYLLABLE TUGS -->
+      <map code="0xd230" name="1em"/><!-- HANGUL SYLLABLE TUN -->
+      <map code="0xd231" name="1em"/><!-- HANGUL SYLLABLE TUNJ -->
+      <map code="0xd232" name="1em"/><!-- HANGUL SYLLABLE TUNH -->
+      <map code="0xd233" name="1em"/><!-- HANGUL SYLLABLE TUD -->
+      <map code="0xd234" name="1em"/><!-- HANGUL SYLLABLE TUL -->
+      <map code="0xd235" name="1em"/><!-- HANGUL SYLLABLE TULG -->
+      <map code="0xd236" name="1em"/><!-- HANGUL SYLLABLE TULM -->
+      <map code="0xd237" name="1em"/><!-- HANGUL SYLLABLE TULB -->
+      <map code="0xd238" name="1em"/><!-- HANGUL SYLLABLE TULS -->
+      <map code="0xd239" name="1em"/><!-- HANGUL SYLLABLE TULT -->
+      <map code="0xd23a" name="1em"/><!-- HANGUL SYLLABLE TULP -->
+      <map code="0xd23b" name="1em"/><!-- HANGUL SYLLABLE TULH -->
+      <map code="0xd23c" name="1em"/><!-- HANGUL SYLLABLE TUM -->
+      <map code="0xd23d" name="1em"/><!-- HANGUL SYLLABLE TUB -->
+      <map code="0xd23e" name="1em"/><!-- HANGUL SYLLABLE TUBS -->
+      <map code="0xd23f" name="1em"/><!-- HANGUL SYLLABLE TUS -->
+      <map code="0xd240" name="1em"/><!-- HANGUL SYLLABLE TUSS -->
+      <map code="0xd241" name="1em"/><!-- HANGUL SYLLABLE TUNG -->
+      <map code="0xd242" name="1em"/><!-- HANGUL SYLLABLE TUJ -->
+      <map code="0xd243" name="1em"/><!-- HANGUL SYLLABLE TUC -->
+      <map code="0xd244" name="1em"/><!-- HANGUL SYLLABLE TUK -->
+      <map code="0xd245" name="1em"/><!-- HANGUL SYLLABLE TUT -->
+      <map code="0xd246" name="1em"/><!-- HANGUL SYLLABLE TUP -->
+      <map code="0xd247" name="1em"/><!-- HANGUL SYLLABLE TUH -->
+      <map code="0xd248" name="1em"/><!-- HANGUL SYLLABLE TWEO -->
+      <map code="0xd249" name="1em"/><!-- HANGUL SYLLABLE TWEOG -->
+      <map code="0xd24a" name="1em"/><!-- HANGUL SYLLABLE TWEOGG -->
+      <map code="0xd24b" name="1em"/><!-- HANGUL SYLLABLE TWEOGS -->
+      <map code="0xd24c" name="1em"/><!-- HANGUL SYLLABLE TWEON -->
+      <map code="0xd24d" name="1em"/><!-- HANGUL SYLLABLE TWEONJ -->
+      <map code="0xd24e" name="1em"/><!-- HANGUL SYLLABLE TWEONH -->
+      <map code="0xd24f" name="1em"/><!-- HANGUL SYLLABLE TWEOD -->
+      <map code="0xd250" name="1em"/><!-- HANGUL SYLLABLE TWEOL -->
+      <map code="0xd251" name="1em"/><!-- HANGUL SYLLABLE TWEOLG -->
+      <map code="0xd252" name="1em"/><!-- HANGUL SYLLABLE TWEOLM -->
+      <map code="0xd253" name="1em"/><!-- HANGUL SYLLABLE TWEOLB -->
+      <map code="0xd254" name="1em"/><!-- HANGUL SYLLABLE TWEOLS -->
+      <map code="0xd255" name="1em"/><!-- HANGUL SYLLABLE TWEOLT -->
+      <map code="0xd256" name="1em"/><!-- HANGUL SYLLABLE TWEOLP -->
+      <map code="0xd257" name="1em"/><!-- HANGUL SYLLABLE TWEOLH -->
+      <map code="0xd258" name="1em"/><!-- HANGUL SYLLABLE TWEOM -->
+      <map code="0xd259" name="1em"/><!-- HANGUL SYLLABLE TWEOB -->
+      <map code="0xd25a" name="1em"/><!-- HANGUL SYLLABLE TWEOBS -->
+      <map code="0xd25b" name="1em"/><!-- HANGUL SYLLABLE TWEOS -->
+      <map code="0xd25c" name="1em"/><!-- HANGUL SYLLABLE TWEOSS -->
+      <map code="0xd25d" name="1em"/><!-- HANGUL SYLLABLE TWEONG -->
+      <map code="0xd25e" name="1em"/><!-- HANGUL SYLLABLE TWEOJ -->
+      <map code="0xd25f" name="1em"/><!-- HANGUL SYLLABLE TWEOC -->
+      <map code="0xd260" name="1em"/><!-- HANGUL SYLLABLE TWEOK -->
+      <map code="0xd261" name="1em"/><!-- HANGUL SYLLABLE TWEOT -->
+      <map code="0xd262" name="1em"/><!-- HANGUL SYLLABLE TWEOP -->
+      <map code="0xd263" name="1em"/><!-- HANGUL SYLLABLE TWEOH -->
+      <map code="0xd264" name="1em"/><!-- HANGUL SYLLABLE TWE -->
+      <map code="0xd265" name="1em"/><!-- HANGUL SYLLABLE TWEG -->
+      <map code="0xd266" name="1em"/><!-- HANGUL SYLLABLE TWEGG -->
+      <map code="0xd267" name="1em"/><!-- HANGUL SYLLABLE TWEGS -->
+      <map code="0xd268" name="1em"/><!-- HANGUL SYLLABLE TWEN -->
+      <map code="0xd269" name="1em"/><!-- HANGUL SYLLABLE TWENJ -->
+      <map code="0xd26a" name="1em"/><!-- HANGUL SYLLABLE TWENH -->
+      <map code="0xd26b" name="1em"/><!-- HANGUL SYLLABLE TWED -->
+      <map code="0xd26c" name="1em"/><!-- HANGUL SYLLABLE TWEL -->
+      <map code="0xd26d" name="1em"/><!-- HANGUL SYLLABLE TWELG -->
+      <map code="0xd26e" name="1em"/><!-- HANGUL SYLLABLE TWELM -->
+      <map code="0xd26f" name="1em"/><!-- HANGUL SYLLABLE TWELB -->
+      <map code="0xd270" name="1em"/><!-- HANGUL SYLLABLE TWELS -->
+      <map code="0xd271" name="1em"/><!-- HANGUL SYLLABLE TWELT -->
+      <map code="0xd272" name="1em"/><!-- HANGUL SYLLABLE TWELP -->
+      <map code="0xd273" name="1em"/><!-- HANGUL SYLLABLE TWELH -->
+      <map code="0xd274" name="1em"/><!-- HANGUL SYLLABLE TWEM -->
+      <map code="0xd275" name="1em"/><!-- HANGUL SYLLABLE TWEB -->
+      <map code="0xd276" name="1em"/><!-- HANGUL SYLLABLE TWEBS -->
+      <map code="0xd277" name="1em"/><!-- HANGUL SYLLABLE TWES -->
+      <map code="0xd278" name="1em"/><!-- HANGUL SYLLABLE TWESS -->
+      <map code="0xd279" name="1em"/><!-- HANGUL SYLLABLE TWENG -->
+      <map code="0xd27a" name="1em"/><!-- HANGUL SYLLABLE TWEJ -->
+      <map code="0xd27b" name="1em"/><!-- HANGUL SYLLABLE TWEC -->
+      <map code="0xd27c" name="1em"/><!-- HANGUL SYLLABLE TWEK -->
+      <map code="0xd27d" name="1em"/><!-- HANGUL SYLLABLE TWET -->
+      <map code="0xd27e" name="1em"/><!-- HANGUL SYLLABLE TWEP -->
+      <map code="0xd27f" name="1em"/><!-- HANGUL SYLLABLE TWEH -->
+      <map code="0xd280" name="1em"/><!-- HANGUL SYLLABLE TWI -->
+      <map code="0xd281" name="1em"/><!-- HANGUL SYLLABLE TWIG -->
+      <map code="0xd282" name="1em"/><!-- HANGUL SYLLABLE TWIGG -->
+      <map code="0xd283" name="1em"/><!-- HANGUL SYLLABLE TWIGS -->
+      <map code="0xd284" name="1em"/><!-- HANGUL SYLLABLE TWIN -->
+      <map code="0xd285" name="1em"/><!-- HANGUL SYLLABLE TWINJ -->
+      <map code="0xd286" name="1em"/><!-- HANGUL SYLLABLE TWINH -->
+      <map code="0xd287" name="1em"/><!-- HANGUL SYLLABLE TWID -->
+      <map code="0xd288" name="1em"/><!-- HANGUL SYLLABLE TWIL -->
+      <map code="0xd289" name="1em"/><!-- HANGUL SYLLABLE TWILG -->
+      <map code="0xd28a" name="1em"/><!-- HANGUL SYLLABLE TWILM -->
+      <map code="0xd28b" name="1em"/><!-- HANGUL SYLLABLE TWILB -->
+      <map code="0xd28c" name="1em"/><!-- HANGUL SYLLABLE TWILS -->
+      <map code="0xd28d" name="1em"/><!-- HANGUL SYLLABLE TWILT -->
+      <map code="0xd28e" name="1em"/><!-- HANGUL SYLLABLE TWILP -->
+      <map code="0xd28f" name="1em"/><!-- HANGUL SYLLABLE TWILH -->
+      <map code="0xd290" name="1em"/><!-- HANGUL SYLLABLE TWIM -->
+      <map code="0xd291" name="1em"/><!-- HANGUL SYLLABLE TWIB -->
+      <map code="0xd292" name="1em"/><!-- HANGUL SYLLABLE TWIBS -->
+      <map code="0xd293" name="1em"/><!-- HANGUL SYLLABLE TWIS -->
+      <map code="0xd294" name="1em"/><!-- HANGUL SYLLABLE TWISS -->
+      <map code="0xd295" name="1em"/><!-- HANGUL SYLLABLE TWING -->
+      <map code="0xd296" name="1em"/><!-- HANGUL SYLLABLE TWIJ -->
+      <map code="0xd297" name="1em"/><!-- HANGUL SYLLABLE TWIC -->
+      <map code="0xd298" name="1em"/><!-- HANGUL SYLLABLE TWIK -->
+      <map code="0xd299" name="1em"/><!-- HANGUL SYLLABLE TWIT -->
+      <map code="0xd29a" name="1em"/><!-- HANGUL SYLLABLE TWIP -->
+      <map code="0xd29b" name="1em"/><!-- HANGUL SYLLABLE TWIH -->
+      <map code="0xd29c" name="1em"/><!-- HANGUL SYLLABLE TYU -->
+      <map code="0xd29d" name="1em"/><!-- HANGUL SYLLABLE TYUG -->
+      <map code="0xd29e" name="1em"/><!-- HANGUL SYLLABLE TYUGG -->
+      <map code="0xd29f" name="1em"/><!-- HANGUL SYLLABLE TYUGS -->
+      <map code="0xd2a0" name="1em"/><!-- HANGUL SYLLABLE TYUN -->
+      <map code="0xd2a1" name="1em"/><!-- HANGUL SYLLABLE TYUNJ -->
+      <map code="0xd2a2" name="1em"/><!-- HANGUL SYLLABLE TYUNH -->
+      <map code="0xd2a3" name="1em"/><!-- HANGUL SYLLABLE TYUD -->
+      <map code="0xd2a4" name="1em"/><!-- HANGUL SYLLABLE TYUL -->
+      <map code="0xd2a5" name="1em"/><!-- HANGUL SYLLABLE TYULG -->
+      <map code="0xd2a6" name="1em"/><!-- HANGUL SYLLABLE TYULM -->
+      <map code="0xd2a7" name="1em"/><!-- HANGUL SYLLABLE TYULB -->
+      <map code="0xd2a8" name="1em"/><!-- HANGUL SYLLABLE TYULS -->
+      <map code="0xd2a9" name="1em"/><!-- HANGUL SYLLABLE TYULT -->
+      <map code="0xd2aa" name="1em"/><!-- HANGUL SYLLABLE TYULP -->
+      <map code="0xd2ab" name="1em"/><!-- HANGUL SYLLABLE TYULH -->
+      <map code="0xd2ac" name="1em"/><!-- HANGUL SYLLABLE TYUM -->
+      <map code="0xd2ad" name="1em"/><!-- HANGUL SYLLABLE TYUB -->
+      <map code="0xd2ae" name="1em"/><!-- HANGUL SYLLABLE TYUBS -->
+      <map code="0xd2af" name="1em"/><!-- HANGUL SYLLABLE TYUS -->
+      <map code="0xd2b0" name="1em"/><!-- HANGUL SYLLABLE TYUSS -->
+      <map code="0xd2b1" name="1em"/><!-- HANGUL SYLLABLE TYUNG -->
+      <map code="0xd2b2" name="1em"/><!-- HANGUL SYLLABLE TYUJ -->
+      <map code="0xd2b3" name="1em"/><!-- HANGUL SYLLABLE TYUC -->
+      <map code="0xd2b4" name="1em"/><!-- HANGUL SYLLABLE TYUK -->
+      <map code="0xd2b5" name="1em"/><!-- HANGUL SYLLABLE TYUT -->
+      <map code="0xd2b6" name="1em"/><!-- HANGUL SYLLABLE TYUP -->
+      <map code="0xd2b7" name="1em"/><!-- HANGUL SYLLABLE TYUH -->
+      <map code="0xd2b8" name="1em"/><!-- HANGUL SYLLABLE TEU -->
+      <map code="0xd2b9" name="1em"/><!-- HANGUL SYLLABLE TEUG -->
+      <map code="0xd2ba" name="1em"/><!-- HANGUL SYLLABLE TEUGG -->
+      <map code="0xd2bb" name="1em"/><!-- HANGUL SYLLABLE TEUGS -->
+      <map code="0xd2bc" name="1em"/><!-- HANGUL SYLLABLE TEUN -->
+      <map code="0xd2bd" name="1em"/><!-- HANGUL SYLLABLE TEUNJ -->
+      <map code="0xd2be" name="1em"/><!-- HANGUL SYLLABLE TEUNH -->
+      <map code="0xd2bf" name="1em"/><!-- HANGUL SYLLABLE TEUD -->
+      <map code="0xd2c0" name="1em"/><!-- HANGUL SYLLABLE TEUL -->
+      <map code="0xd2c1" name="1em"/><!-- HANGUL SYLLABLE TEULG -->
+      <map code="0xd2c2" name="1em"/><!-- HANGUL SYLLABLE TEULM -->
+      <map code="0xd2c3" name="1em"/><!-- HANGUL SYLLABLE TEULB -->
+      <map code="0xd2c4" name="1em"/><!-- HANGUL SYLLABLE TEULS -->
+      <map code="0xd2c5" name="1em"/><!-- HANGUL SYLLABLE TEULT -->
+      <map code="0xd2c6" name="1em"/><!-- HANGUL SYLLABLE TEULP -->
+      <map code="0xd2c7" name="1em"/><!-- HANGUL SYLLABLE TEULH -->
+      <map code="0xd2c8" name="1em"/><!-- HANGUL SYLLABLE TEUM -->
+      <map code="0xd2c9" name="1em"/><!-- HANGUL SYLLABLE TEUB -->
+      <map code="0xd2ca" name="1em"/><!-- HANGUL SYLLABLE TEUBS -->
+      <map code="0xd2cb" name="1em"/><!-- HANGUL SYLLABLE TEUS -->
+      <map code="0xd2cc" name="1em"/><!-- HANGUL SYLLABLE TEUSS -->
+      <map code="0xd2cd" name="1em"/><!-- HANGUL SYLLABLE TEUNG -->
+      <map code="0xd2ce" name="1em"/><!-- HANGUL SYLLABLE TEUJ -->
+      <map code="0xd2cf" name="1em"/><!-- HANGUL SYLLABLE TEUC -->
+      <map code="0xd2d0" name="1em"/><!-- HANGUL SYLLABLE TEUK -->
+      <map code="0xd2d1" name="1em"/><!-- HANGUL SYLLABLE TEUT -->
+      <map code="0xd2d2" name="1em"/><!-- HANGUL SYLLABLE TEUP -->
+      <map code="0xd2d3" name="1em"/><!-- HANGUL SYLLABLE TEUH -->
+      <map code="0xd2d4" name="1em"/><!-- HANGUL SYLLABLE TYI -->
+      <map code="0xd2d5" name="1em"/><!-- HANGUL SYLLABLE TYIG -->
+      <map code="0xd2d6" name="1em"/><!-- HANGUL SYLLABLE TYIGG -->
+      <map code="0xd2d7" name="1em"/><!-- HANGUL SYLLABLE TYIGS -->
+      <map code="0xd2d8" name="1em"/><!-- HANGUL SYLLABLE TYIN -->
+      <map code="0xd2d9" name="1em"/><!-- HANGUL SYLLABLE TYINJ -->
+      <map code="0xd2da" name="1em"/><!-- HANGUL SYLLABLE TYINH -->
+      <map code="0xd2db" name="1em"/><!-- HANGUL SYLLABLE TYID -->
+      <map code="0xd2dc" name="1em"/><!-- HANGUL SYLLABLE TYIL -->
+      <map code="0xd2dd" name="1em"/><!-- HANGUL SYLLABLE TYILG -->
+      <map code="0xd2de" name="1em"/><!-- HANGUL SYLLABLE TYILM -->
+      <map code="0xd2df" name="1em"/><!-- HANGUL SYLLABLE TYILB -->
+      <map code="0xd2e0" name="1em"/><!-- HANGUL SYLLABLE TYILS -->
+      <map code="0xd2e1" name="1em"/><!-- HANGUL SYLLABLE TYILT -->
+      <map code="0xd2e2" name="1em"/><!-- HANGUL SYLLABLE TYILP -->
+      <map code="0xd2e3" name="1em"/><!-- HANGUL SYLLABLE TYILH -->
+      <map code="0xd2e4" name="1em"/><!-- HANGUL SYLLABLE TYIM -->
+      <map code="0xd2e5" name="1em"/><!-- HANGUL SYLLABLE TYIB -->
+      <map code="0xd2e6" name="1em"/><!-- HANGUL SYLLABLE TYIBS -->
+      <map code="0xd2e7" name="1em"/><!-- HANGUL SYLLABLE TYIS -->
+      <map code="0xd2e8" name="1em"/><!-- HANGUL SYLLABLE TYISS -->
+      <map code="0xd2e9" name="1em"/><!-- HANGUL SYLLABLE TYING -->
+      <map code="0xd2ea" name="1em"/><!-- HANGUL SYLLABLE TYIJ -->
+      <map code="0xd2eb" name="1em"/><!-- HANGUL SYLLABLE TYIC -->
+      <map code="0xd2ec" name="1em"/><!-- HANGUL SYLLABLE TYIK -->
+      <map code="0xd2ed" name="1em"/><!-- HANGUL SYLLABLE TYIT -->
+      <map code="0xd2ee" name="1em"/><!-- HANGUL SYLLABLE TYIP -->
+      <map code="0xd2ef" name="1em"/><!-- HANGUL SYLLABLE TYIH -->
+      <map code="0xd2f0" name="1em"/><!-- HANGUL SYLLABLE TI -->
+      <map code="0xd2f1" name="1em"/><!-- HANGUL SYLLABLE TIG -->
+      <map code="0xd2f2" name="1em"/><!-- HANGUL SYLLABLE TIGG -->
+      <map code="0xd2f3" name="1em"/><!-- HANGUL SYLLABLE TIGS -->
+      <map code="0xd2f4" name="1em"/><!-- HANGUL SYLLABLE TIN -->
+      <map code="0xd2f5" name="1em"/><!-- HANGUL SYLLABLE TINJ -->
+      <map code="0xd2f6" name="1em"/><!-- HANGUL SYLLABLE TINH -->
+      <map code="0xd2f7" name="1em"/><!-- HANGUL SYLLABLE TID -->
+      <map code="0xd2f8" name="1em"/><!-- HANGUL SYLLABLE TIL -->
+      <map code="0xd2f9" name="1em"/><!-- HANGUL SYLLABLE TILG -->
+      <map code="0xd2fa" name="1em"/><!-- HANGUL SYLLABLE TILM -->
+      <map code="0xd2fb" name="1em"/><!-- HANGUL SYLLABLE TILB -->
+      <map code="0xd2fc" name="1em"/><!-- HANGUL SYLLABLE TILS -->
+      <map code="0xd2fd" name="1em"/><!-- HANGUL SYLLABLE TILT -->
+      <map code="0xd2fe" name="1em"/><!-- HANGUL SYLLABLE TILP -->
+      <map code="0xd2ff" name="1em"/><!-- HANGUL SYLLABLE TILH -->
+      <map code="0xd300" name="1em"/><!-- HANGUL SYLLABLE TIM -->
+      <map code="0xd301" name="1em"/><!-- HANGUL SYLLABLE TIB -->
+      <map code="0xd302" name="1em"/><!-- HANGUL SYLLABLE TIBS -->
+      <map code="0xd303" name="1em"/><!-- HANGUL SYLLABLE TIS -->
+      <map code="0xd304" name="1em"/><!-- HANGUL SYLLABLE TISS -->
+      <map code="0xd305" name="1em"/><!-- HANGUL SYLLABLE TING -->
+      <map code="0xd306" name="1em"/><!-- HANGUL SYLLABLE TIJ -->
+      <map code="0xd307" name="1em"/><!-- HANGUL SYLLABLE TIC -->
+      <map code="0xd308" name="1em"/><!-- HANGUL SYLLABLE TIK -->
+      <map code="0xd309" name="1em"/><!-- HANGUL SYLLABLE TIT -->
+      <map code="0xd30a" name="1em"/><!-- HANGUL SYLLABLE TIP -->
+      <map code="0xd30b" name="1em"/><!-- HANGUL SYLLABLE TIH -->
+      <map code="0xd30c" name="1em"/><!-- HANGUL SYLLABLE PA -->
+      <map code="0xd30d" name="1em"/><!-- HANGUL SYLLABLE PAG -->
+      <map code="0xd30e" name="1em"/><!-- HANGUL SYLLABLE PAGG -->
+      <map code="0xd30f" name="1em"/><!-- HANGUL SYLLABLE PAGS -->
+      <map code="0xd310" name="1em"/><!-- HANGUL SYLLABLE PAN -->
+      <map code="0xd311" name="1em"/><!-- HANGUL SYLLABLE PANJ -->
+      <map code="0xd312" name="1em"/><!-- HANGUL SYLLABLE PANH -->
+      <map code="0xd313" name="1em"/><!-- HANGUL SYLLABLE PAD -->
+      <map code="0xd314" name="1em"/><!-- HANGUL SYLLABLE PAL -->
+      <map code="0xd315" name="1em"/><!-- HANGUL SYLLABLE PALG -->
+      <map code="0xd316" name="1em"/><!-- HANGUL SYLLABLE PALM -->
+      <map code="0xd317" name="1em"/><!-- HANGUL SYLLABLE PALB -->
+      <map code="0xd318" name="1em"/><!-- HANGUL SYLLABLE PALS -->
+      <map code="0xd319" name="1em"/><!-- HANGUL SYLLABLE PALT -->
+      <map code="0xd31a" name="1em"/><!-- HANGUL SYLLABLE PALP -->
+      <map code="0xd31b" name="1em"/><!-- HANGUL SYLLABLE PALH -->
+      <map code="0xd31c" name="1em"/><!-- HANGUL SYLLABLE PAM -->
+      <map code="0xd31d" name="1em"/><!-- HANGUL SYLLABLE PAB -->
+      <map code="0xd31e" name="1em"/><!-- HANGUL SYLLABLE PABS -->
+      <map code="0xd31f" name="1em"/><!-- HANGUL SYLLABLE PAS -->
+      <map code="0xd320" name="1em"/><!-- HANGUL SYLLABLE PASS -->
+      <map code="0xd321" name="1em"/><!-- HANGUL SYLLABLE PANG -->
+      <map code="0xd322" name="1em"/><!-- HANGUL SYLLABLE PAJ -->
+      <map code="0xd323" name="1em"/><!-- HANGUL SYLLABLE PAC -->
+      <map code="0xd324" name="1em"/><!-- HANGUL SYLLABLE PAK -->
+      <map code="0xd325" name="1em"/><!-- HANGUL SYLLABLE PAT -->
+      <map code="0xd326" name="1em"/><!-- HANGUL SYLLABLE PAP -->
+      <map code="0xd327" name="1em"/><!-- HANGUL SYLLABLE PAH -->
+      <map code="0xd328" name="1em"/><!-- HANGUL SYLLABLE PAE -->
+      <map code="0xd329" name="1em"/><!-- HANGUL SYLLABLE PAEG -->
+      <map code="0xd32a" name="1em"/><!-- HANGUL SYLLABLE PAEGG -->
+      <map code="0xd32b" name="1em"/><!-- HANGUL SYLLABLE PAEGS -->
+      <map code="0xd32c" name="1em"/><!-- HANGUL SYLLABLE PAEN -->
+      <map code="0xd32d" name="1em"/><!-- HANGUL SYLLABLE PAENJ -->
+      <map code="0xd32e" name="1em"/><!-- HANGUL SYLLABLE PAENH -->
+      <map code="0xd32f" name="1em"/><!-- HANGUL SYLLABLE PAED -->
+      <map code="0xd330" name="1em"/><!-- HANGUL SYLLABLE PAEL -->
+      <map code="0xd331" name="1em"/><!-- HANGUL SYLLABLE PAELG -->
+      <map code="0xd332" name="1em"/><!-- HANGUL SYLLABLE PAELM -->
+      <map code="0xd333" name="1em"/><!-- HANGUL SYLLABLE PAELB -->
+      <map code="0xd334" name="1em"/><!-- HANGUL SYLLABLE PAELS -->
+      <map code="0xd335" name="1em"/><!-- HANGUL SYLLABLE PAELT -->
+      <map code="0xd336" name="1em"/><!-- HANGUL SYLLABLE PAELP -->
+      <map code="0xd337" name="1em"/><!-- HANGUL SYLLABLE PAELH -->
+      <map code="0xd338" name="1em"/><!-- HANGUL SYLLABLE PAEM -->
+      <map code="0xd339" name="1em"/><!-- HANGUL SYLLABLE PAEB -->
+      <map code="0xd33a" name="1em"/><!-- HANGUL SYLLABLE PAEBS -->
+      <map code="0xd33b" name="1em"/><!-- HANGUL SYLLABLE PAES -->
+      <map code="0xd33c" name="1em"/><!-- HANGUL SYLLABLE PAESS -->
+      <map code="0xd33d" name="1em"/><!-- HANGUL SYLLABLE PAENG -->
+      <map code="0xd33e" name="1em"/><!-- HANGUL SYLLABLE PAEJ -->
+      <map code="0xd33f" name="1em"/><!-- HANGUL SYLLABLE PAEC -->
+      <map code="0xd340" name="1em"/><!-- HANGUL SYLLABLE PAEK -->
+      <map code="0xd341" name="1em"/><!-- HANGUL SYLLABLE PAET -->
+      <map code="0xd342" name="1em"/><!-- HANGUL SYLLABLE PAEP -->
+      <map code="0xd343" name="1em"/><!-- HANGUL SYLLABLE PAEH -->
+      <map code="0xd344" name="1em"/><!-- HANGUL SYLLABLE PYA -->
+      <map code="0xd345" name="1em"/><!-- HANGUL SYLLABLE PYAG -->
+      <map code="0xd346" name="1em"/><!-- HANGUL SYLLABLE PYAGG -->
+      <map code="0xd347" name="1em"/><!-- HANGUL SYLLABLE PYAGS -->
+      <map code="0xd348" name="1em"/><!-- HANGUL SYLLABLE PYAN -->
+      <map code="0xd349" name="1em"/><!-- HANGUL SYLLABLE PYANJ -->
+      <map code="0xd34a" name="1em"/><!-- HANGUL SYLLABLE PYANH -->
+      <map code="0xd34b" name="1em"/><!-- HANGUL SYLLABLE PYAD -->
+      <map code="0xd34c" name="1em"/><!-- HANGUL SYLLABLE PYAL -->
+      <map code="0xd34d" name="1em"/><!-- HANGUL SYLLABLE PYALG -->
+      <map code="0xd34e" name="1em"/><!-- HANGUL SYLLABLE PYALM -->
+      <map code="0xd34f" name="1em"/><!-- HANGUL SYLLABLE PYALB -->
+      <map code="0xd350" name="1em"/><!-- HANGUL SYLLABLE PYALS -->
+      <map code="0xd351" name="1em"/><!-- HANGUL SYLLABLE PYALT -->
+      <map code="0xd352" name="1em"/><!-- HANGUL SYLLABLE PYALP -->
+      <map code="0xd353" name="1em"/><!-- HANGUL SYLLABLE PYALH -->
+      <map code="0xd354" name="1em"/><!-- HANGUL SYLLABLE PYAM -->
+      <map code="0xd355" name="1em"/><!-- HANGUL SYLLABLE PYAB -->
+      <map code="0xd356" name="1em"/><!-- HANGUL SYLLABLE PYABS -->
+      <map code="0xd357" name="1em"/><!-- HANGUL SYLLABLE PYAS -->
+      <map code="0xd358" name="1em"/><!-- HANGUL SYLLABLE PYASS -->
+      <map code="0xd359" name="1em"/><!-- HANGUL SYLLABLE PYANG -->
+      <map code="0xd35a" name="1em"/><!-- HANGUL SYLLABLE PYAJ -->
+      <map code="0xd35b" name="1em"/><!-- HANGUL SYLLABLE PYAC -->
+      <map code="0xd35c" name="1em"/><!-- HANGUL SYLLABLE PYAK -->
+      <map code="0xd35d" name="1em"/><!-- HANGUL SYLLABLE PYAT -->
+      <map code="0xd35e" name="1em"/><!-- HANGUL SYLLABLE PYAP -->
+      <map code="0xd35f" name="1em"/><!-- HANGUL SYLLABLE PYAH -->
+      <map code="0xd360" name="1em"/><!-- HANGUL SYLLABLE PYAE -->
+      <map code="0xd361" name="1em"/><!-- HANGUL SYLLABLE PYAEG -->
+      <map code="0xd362" name="1em"/><!-- HANGUL SYLLABLE PYAEGG -->
+      <map code="0xd363" name="1em"/><!-- HANGUL SYLLABLE PYAEGS -->
+      <map code="0xd364" name="1em"/><!-- HANGUL SYLLABLE PYAEN -->
+      <map code="0xd365" name="1em"/><!-- HANGUL SYLLABLE PYAENJ -->
+      <map code="0xd366" name="1em"/><!-- HANGUL SYLLABLE PYAENH -->
+      <map code="0xd367" name="1em"/><!-- HANGUL SYLLABLE PYAED -->
+      <map code="0xd368" name="1em"/><!-- HANGUL SYLLABLE PYAEL -->
+      <map code="0xd369" name="1em"/><!-- HANGUL SYLLABLE PYAELG -->
+      <map code="0xd36a" name="1em"/><!-- HANGUL SYLLABLE PYAELM -->
+      <map code="0xd36b" name="1em"/><!-- HANGUL SYLLABLE PYAELB -->
+      <map code="0xd36c" name="1em"/><!-- HANGUL SYLLABLE PYAELS -->
+      <map code="0xd36d" name="1em"/><!-- HANGUL SYLLABLE PYAELT -->
+      <map code="0xd36e" name="1em"/><!-- HANGUL SYLLABLE PYAELP -->
+      <map code="0xd36f" name="1em"/><!-- HANGUL SYLLABLE PYAELH -->
+      <map code="0xd370" name="1em"/><!-- HANGUL SYLLABLE PYAEM -->
+      <map code="0xd371" name="1em"/><!-- HANGUL SYLLABLE PYAEB -->
+      <map code="0xd372" name="1em"/><!-- HANGUL SYLLABLE PYAEBS -->
+      <map code="0xd373" name="1em"/><!-- HANGUL SYLLABLE PYAES -->
+      <map code="0xd374" name="1em"/><!-- HANGUL SYLLABLE PYAESS -->
+      <map code="0xd375" name="1em"/><!-- HANGUL SYLLABLE PYAENG -->
+      <map code="0xd376" name="1em"/><!-- HANGUL SYLLABLE PYAEJ -->
+      <map code="0xd377" name="1em"/><!-- HANGUL SYLLABLE PYAEC -->
+      <map code="0xd378" name="1em"/><!-- HANGUL SYLLABLE PYAEK -->
+      <map code="0xd379" name="1em"/><!-- HANGUL SYLLABLE PYAET -->
+      <map code="0xd37a" name="1em"/><!-- HANGUL SYLLABLE PYAEP -->
+      <map code="0xd37b" name="1em"/><!-- HANGUL SYLLABLE PYAEH -->
+      <map code="0xd37c" name="1em"/><!-- HANGUL SYLLABLE PEO -->
+      <map code="0xd37d" name="1em"/><!-- HANGUL SYLLABLE PEOG -->
+      <map code="0xd37e" name="1em"/><!-- HANGUL SYLLABLE PEOGG -->
+      <map code="0xd37f" name="1em"/><!-- HANGUL SYLLABLE PEOGS -->
+      <map code="0xd380" name="1em"/><!-- HANGUL SYLLABLE PEON -->
+      <map code="0xd381" name="1em"/><!-- HANGUL SYLLABLE PEONJ -->
+      <map code="0xd382" name="1em"/><!-- HANGUL SYLLABLE PEONH -->
+      <map code="0xd383" name="1em"/><!-- HANGUL SYLLABLE PEOD -->
+      <map code="0xd384" name="1em"/><!-- HANGUL SYLLABLE PEOL -->
+      <map code="0xd385" name="1em"/><!-- HANGUL SYLLABLE PEOLG -->
+      <map code="0xd386" name="1em"/><!-- HANGUL SYLLABLE PEOLM -->
+      <map code="0xd387" name="1em"/><!-- HANGUL SYLLABLE PEOLB -->
+      <map code="0xd388" name="1em"/><!-- HANGUL SYLLABLE PEOLS -->
+      <map code="0xd389" name="1em"/><!-- HANGUL SYLLABLE PEOLT -->
+      <map code="0xd38a" name="1em"/><!-- HANGUL SYLLABLE PEOLP -->
+      <map code="0xd38b" name="1em"/><!-- HANGUL SYLLABLE PEOLH -->
+      <map code="0xd38c" name="1em"/><!-- HANGUL SYLLABLE PEOM -->
+      <map code="0xd38d" name="1em"/><!-- HANGUL SYLLABLE PEOB -->
+      <map code="0xd38e" name="1em"/><!-- HANGUL SYLLABLE PEOBS -->
+      <map code="0xd38f" name="1em"/><!-- HANGUL SYLLABLE PEOS -->
+      <map code="0xd390" name="1em"/><!-- HANGUL SYLLABLE PEOSS -->
+      <map code="0xd391" name="1em"/><!-- HANGUL SYLLABLE PEONG -->
+      <map code="0xd392" name="1em"/><!-- HANGUL SYLLABLE PEOJ -->
+      <map code="0xd393" name="1em"/><!-- HANGUL SYLLABLE PEOC -->
+      <map code="0xd394" name="1em"/><!-- HANGUL SYLLABLE PEOK -->
+      <map code="0xd395" name="1em"/><!-- HANGUL SYLLABLE PEOT -->
+      <map code="0xd396" name="1em"/><!-- HANGUL SYLLABLE PEOP -->
+      <map code="0xd397" name="1em"/><!-- HANGUL SYLLABLE PEOH -->
+      <map code="0xd398" name="1em"/><!-- HANGUL SYLLABLE PE -->
+      <map code="0xd399" name="1em"/><!-- HANGUL SYLLABLE PEG -->
+      <map code="0xd39a" name="1em"/><!-- HANGUL SYLLABLE PEGG -->
+      <map code="0xd39b" name="1em"/><!-- HANGUL SYLLABLE PEGS -->
+      <map code="0xd39c" name="1em"/><!-- HANGUL SYLLABLE PEN -->
+      <map code="0xd39d" name="1em"/><!-- HANGUL SYLLABLE PENJ -->
+      <map code="0xd39e" name="1em"/><!-- HANGUL SYLLABLE PENH -->
+      <map code="0xd39f" name="1em"/><!-- HANGUL SYLLABLE PED -->
+      <map code="0xd3a0" name="1em"/><!-- HANGUL SYLLABLE PEL -->
+      <map code="0xd3a1" name="1em"/><!-- HANGUL SYLLABLE PELG -->
+      <map code="0xd3a2" name="1em"/><!-- HANGUL SYLLABLE PELM -->
+      <map code="0xd3a3" name="1em"/><!-- HANGUL SYLLABLE PELB -->
+      <map code="0xd3a4" name="1em"/><!-- HANGUL SYLLABLE PELS -->
+      <map code="0xd3a5" name="1em"/><!-- HANGUL SYLLABLE PELT -->
+      <map code="0xd3a6" name="1em"/><!-- HANGUL SYLLABLE PELP -->
+      <map code="0xd3a7" name="1em"/><!-- HANGUL SYLLABLE PELH -->
+      <map code="0xd3a8" name="1em"/><!-- HANGUL SYLLABLE PEM -->
+      <map code="0xd3a9" name="1em"/><!-- HANGUL SYLLABLE PEB -->
+      <map code="0xd3aa" name="1em"/><!-- HANGUL SYLLABLE PEBS -->
+      <map code="0xd3ab" name="1em"/><!-- HANGUL SYLLABLE PES -->
+      <map code="0xd3ac" name="1em"/><!-- HANGUL SYLLABLE PESS -->
+      <map code="0xd3ad" name="1em"/><!-- HANGUL SYLLABLE PENG -->
+      <map code="0xd3ae" name="1em"/><!-- HANGUL SYLLABLE PEJ -->
+      <map code="0xd3af" name="1em"/><!-- HANGUL SYLLABLE PEC -->
+      <map code="0xd3b0" name="1em"/><!-- HANGUL SYLLABLE PEK -->
+      <map code="0xd3b1" name="1em"/><!-- HANGUL SYLLABLE PET -->
+      <map code="0xd3b2" name="1em"/><!-- HANGUL SYLLABLE PEP -->
+      <map code="0xd3b3" name="1em"/><!-- HANGUL SYLLABLE PEH -->
+      <map code="0xd3b4" name="1em"/><!-- HANGUL SYLLABLE PYEO -->
+      <map code="0xd3b5" name="1em"/><!-- HANGUL SYLLABLE PYEOG -->
+      <map code="0xd3b6" name="1em"/><!-- HANGUL SYLLABLE PYEOGG -->
+      <map code="0xd3b7" name="1em"/><!-- HANGUL SYLLABLE PYEOGS -->
+      <map code="0xd3b8" name="1em"/><!-- HANGUL SYLLABLE PYEON -->
+      <map code="0xd3b9" name="1em"/><!-- HANGUL SYLLABLE PYEONJ -->
+      <map code="0xd3ba" name="1em"/><!-- HANGUL SYLLABLE PYEONH -->
+      <map code="0xd3bb" name="1em"/><!-- HANGUL SYLLABLE PYEOD -->
+      <map code="0xd3bc" name="1em"/><!-- HANGUL SYLLABLE PYEOL -->
+      <map code="0xd3bd" name="1em"/><!-- HANGUL SYLLABLE PYEOLG -->
+      <map code="0xd3be" name="1em"/><!-- HANGUL SYLLABLE PYEOLM -->
+      <map code="0xd3bf" name="1em"/><!-- HANGUL SYLLABLE PYEOLB -->
+      <map code="0xd3c0" name="1em"/><!-- HANGUL SYLLABLE PYEOLS -->
+      <map code="0xd3c1" name="1em"/><!-- HANGUL SYLLABLE PYEOLT -->
+      <map code="0xd3c2" name="1em"/><!-- HANGUL SYLLABLE PYEOLP -->
+      <map code="0xd3c3" name="1em"/><!-- HANGUL SYLLABLE PYEOLH -->
+      <map code="0xd3c4" name="1em"/><!-- HANGUL SYLLABLE PYEOM -->
+      <map code="0xd3c5" name="1em"/><!-- HANGUL SYLLABLE PYEOB -->
+      <map code="0xd3c6" name="1em"/><!-- HANGUL SYLLABLE PYEOBS -->
+      <map code="0xd3c7" name="1em"/><!-- HANGUL SYLLABLE PYEOS -->
+      <map code="0xd3c8" name="1em"/><!-- HANGUL SYLLABLE PYEOSS -->
+      <map code="0xd3c9" name="1em"/><!-- HANGUL SYLLABLE PYEONG -->
+      <map code="0xd3ca" name="1em"/><!-- HANGUL SYLLABLE PYEOJ -->
+      <map code="0xd3cb" name="1em"/><!-- HANGUL SYLLABLE PYEOC -->
+      <map code="0xd3cc" name="1em"/><!-- HANGUL SYLLABLE PYEOK -->
+      <map code="0xd3cd" name="1em"/><!-- HANGUL SYLLABLE PYEOT -->
+      <map code="0xd3ce" name="1em"/><!-- HANGUL SYLLABLE PYEOP -->
+      <map code="0xd3cf" name="1em"/><!-- HANGUL SYLLABLE PYEOH -->
+      <map code="0xd3d0" name="1em"/><!-- HANGUL SYLLABLE PYE -->
+      <map code="0xd3d1" name="1em"/><!-- HANGUL SYLLABLE PYEG -->
+      <map code="0xd3d2" name="1em"/><!-- HANGUL SYLLABLE PYEGG -->
+      <map code="0xd3d3" name="1em"/><!-- HANGUL SYLLABLE PYEGS -->
+      <map code="0xd3d4" name="1em"/><!-- HANGUL SYLLABLE PYEN -->
+      <map code="0xd3d5" name="1em"/><!-- HANGUL SYLLABLE PYENJ -->
+      <map code="0xd3d6" name="1em"/><!-- HANGUL SYLLABLE PYENH -->
+      <map code="0xd3d7" name="1em"/><!-- HANGUL SYLLABLE PYED -->
+      <map code="0xd3d8" name="1em"/><!-- HANGUL SYLLABLE PYEL -->
+      <map code="0xd3d9" name="1em"/><!-- HANGUL SYLLABLE PYELG -->
+      <map code="0xd3da" name="1em"/><!-- HANGUL SYLLABLE PYELM -->
+      <map code="0xd3db" name="1em"/><!-- HANGUL SYLLABLE PYELB -->
+      <map code="0xd3dc" name="1em"/><!-- HANGUL SYLLABLE PYELS -->
+      <map code="0xd3dd" name="1em"/><!-- HANGUL SYLLABLE PYELT -->
+      <map code="0xd3de" name="1em"/><!-- HANGUL SYLLABLE PYELP -->
+      <map code="0xd3df" name="1em"/><!-- HANGUL SYLLABLE PYELH -->
+      <map code="0xd3e0" name="1em"/><!-- HANGUL SYLLABLE PYEM -->
+      <map code="0xd3e1" name="1em"/><!-- HANGUL SYLLABLE PYEB -->
+      <map code="0xd3e2" name="1em"/><!-- HANGUL SYLLABLE PYEBS -->
+      <map code="0xd3e3" name="1em"/><!-- HANGUL SYLLABLE PYES -->
+      <map code="0xd3e4" name="1em"/><!-- HANGUL SYLLABLE PYESS -->
+      <map code="0xd3e5" name="1em"/><!-- HANGUL SYLLABLE PYENG -->
+      <map code="0xd3e6" name="1em"/><!-- HANGUL SYLLABLE PYEJ -->
+      <map code="0xd3e7" name="1em"/><!-- HANGUL SYLLABLE PYEC -->
+      <map code="0xd3e8" name="1em"/><!-- HANGUL SYLLABLE PYEK -->
+      <map code="0xd3e9" name="1em"/><!-- HANGUL SYLLABLE PYET -->
+      <map code="0xd3ea" name="1em"/><!-- HANGUL SYLLABLE PYEP -->
+      <map code="0xd3eb" name="1em"/><!-- HANGUL SYLLABLE PYEH -->
+      <map code="0xd3ec" name="1em"/><!-- HANGUL SYLLABLE PO -->
+      <map code="0xd3ed" name="1em"/><!-- HANGUL SYLLABLE POG -->
+      <map code="0xd3ee" name="1em"/><!-- HANGUL SYLLABLE POGG -->
+      <map code="0xd3ef" name="1em"/><!-- HANGUL SYLLABLE POGS -->
+      <map code="0xd3f0" name="1em"/><!-- HANGUL SYLLABLE PON -->
+      <map code="0xd3f1" name="1em"/><!-- HANGUL SYLLABLE PONJ -->
+      <map code="0xd3f2" name="1em"/><!-- HANGUL SYLLABLE PONH -->
+      <map code="0xd3f3" name="1em"/><!-- HANGUL SYLLABLE POD -->
+      <map code="0xd3f4" name="1em"/><!-- HANGUL SYLLABLE POL -->
+      <map code="0xd3f5" name="1em"/><!-- HANGUL SYLLABLE POLG -->
+      <map code="0xd3f6" name="1em"/><!-- HANGUL SYLLABLE POLM -->
+      <map code="0xd3f7" name="1em"/><!-- HANGUL SYLLABLE POLB -->
+      <map code="0xd3f8" name="1em"/><!-- HANGUL SYLLABLE POLS -->
+      <map code="0xd3f9" name="1em"/><!-- HANGUL SYLLABLE POLT -->
+      <map code="0xd3fa" name="1em"/><!-- HANGUL SYLLABLE POLP -->
+      <map code="0xd3fb" name="1em"/><!-- HANGUL SYLLABLE POLH -->
+      <map code="0xd3fc" name="1em"/><!-- HANGUL SYLLABLE POM -->
+      <map code="0xd3fd" name="1em"/><!-- HANGUL SYLLABLE POB -->
+      <map code="0xd3fe" name="1em"/><!-- HANGUL SYLLABLE POBS -->
+      <map code="0xd3ff" name="1em"/><!-- HANGUL SYLLABLE POS -->
+      <map code="0xd400" name="1em"/><!-- HANGUL SYLLABLE POSS -->
+      <map code="0xd401" name="1em"/><!-- HANGUL SYLLABLE PONG -->
+      <map code="0xd402" name="1em"/><!-- HANGUL SYLLABLE POJ -->
+      <map code="0xd403" name="1em"/><!-- HANGUL SYLLABLE POC -->
+      <map code="0xd404" name="1em"/><!-- HANGUL SYLLABLE POK -->
+      <map code="0xd405" name="1em"/><!-- HANGUL SYLLABLE POT -->
+      <map code="0xd406" name="1em"/><!-- HANGUL SYLLABLE POP -->
+      <map code="0xd407" name="1em"/><!-- HANGUL SYLLABLE POH -->
+      <map code="0xd408" name="1em"/><!-- HANGUL SYLLABLE PWA -->
+      <map code="0xd409" name="1em"/><!-- HANGUL SYLLABLE PWAG -->
+      <map code="0xd40a" name="1em"/><!-- HANGUL SYLLABLE PWAGG -->
+      <map code="0xd40b" name="1em"/><!-- HANGUL SYLLABLE PWAGS -->
+      <map code="0xd40c" name="1em"/><!-- HANGUL SYLLABLE PWAN -->
+      <map code="0xd40d" name="1em"/><!-- HANGUL SYLLABLE PWANJ -->
+      <map code="0xd40e" name="1em"/><!-- HANGUL SYLLABLE PWANH -->
+      <map code="0xd40f" name="1em"/><!-- HANGUL SYLLABLE PWAD -->
+      <map code="0xd410" name="1em"/><!-- HANGUL SYLLABLE PWAL -->
+      <map code="0xd411" name="1em"/><!-- HANGUL SYLLABLE PWALG -->
+      <map code="0xd412" name="1em"/><!-- HANGUL SYLLABLE PWALM -->
+      <map code="0xd413" name="1em"/><!-- HANGUL SYLLABLE PWALB -->
+      <map code="0xd414" name="1em"/><!-- HANGUL SYLLABLE PWALS -->
+      <map code="0xd415" name="1em"/><!-- HANGUL SYLLABLE PWALT -->
+      <map code="0xd416" name="1em"/><!-- HANGUL SYLLABLE PWALP -->
+      <map code="0xd417" name="1em"/><!-- HANGUL SYLLABLE PWALH -->
+      <map code="0xd418" name="1em"/><!-- HANGUL SYLLABLE PWAM -->
+      <map code="0xd419" name="1em"/><!-- HANGUL SYLLABLE PWAB -->
+      <map code="0xd41a" name="1em"/><!-- HANGUL SYLLABLE PWABS -->
+      <map code="0xd41b" name="1em"/><!-- HANGUL SYLLABLE PWAS -->
+      <map code="0xd41c" name="1em"/><!-- HANGUL SYLLABLE PWASS -->
+      <map code="0xd41d" name="1em"/><!-- HANGUL SYLLABLE PWANG -->
+      <map code="0xd41e" name="1em"/><!-- HANGUL SYLLABLE PWAJ -->
+      <map code="0xd41f" name="1em"/><!-- HANGUL SYLLABLE PWAC -->
+      <map code="0xd420" name="1em"/><!-- HANGUL SYLLABLE PWAK -->
+      <map code="0xd421" name="1em"/><!-- HANGUL SYLLABLE PWAT -->
+      <map code="0xd422" name="1em"/><!-- HANGUL SYLLABLE PWAP -->
+      <map code="0xd423" name="1em"/><!-- HANGUL SYLLABLE PWAH -->
+      <map code="0xd424" name="1em"/><!-- HANGUL SYLLABLE PWAE -->
+      <map code="0xd425" name="1em"/><!-- HANGUL SYLLABLE PWAEG -->
+      <map code="0xd426" name="1em"/><!-- HANGUL SYLLABLE PWAEGG -->
+      <map code="0xd427" name="1em"/><!-- HANGUL SYLLABLE PWAEGS -->
+      <map code="0xd428" name="1em"/><!-- HANGUL SYLLABLE PWAEN -->
+      <map code="0xd429" name="1em"/><!-- HANGUL SYLLABLE PWAENJ -->
+      <map code="0xd42a" name="1em"/><!-- HANGUL SYLLABLE PWAENH -->
+      <map code="0xd42b" name="1em"/><!-- HANGUL SYLLABLE PWAED -->
+      <map code="0xd42c" name="1em"/><!-- HANGUL SYLLABLE PWAEL -->
+      <map code="0xd42d" name="1em"/><!-- HANGUL SYLLABLE PWAELG -->
+      <map code="0xd42e" name="1em"/><!-- HANGUL SYLLABLE PWAELM -->
+      <map code="0xd42f" name="1em"/><!-- HANGUL SYLLABLE PWAELB -->
+      <map code="0xd430" name="1em"/><!-- HANGUL SYLLABLE PWAELS -->
+      <map code="0xd431" name="1em"/><!-- HANGUL SYLLABLE PWAELT -->
+      <map code="0xd432" name="1em"/><!-- HANGUL SYLLABLE PWAELP -->
+      <map code="0xd433" name="1em"/><!-- HANGUL SYLLABLE PWAELH -->
+      <map code="0xd434" name="1em"/><!-- HANGUL SYLLABLE PWAEM -->
+      <map code="0xd435" name="1em"/><!-- HANGUL SYLLABLE PWAEB -->
+      <map code="0xd436" name="1em"/><!-- HANGUL SYLLABLE PWAEBS -->
+      <map code="0xd437" name="1em"/><!-- HANGUL SYLLABLE PWAES -->
+      <map code="0xd438" name="1em"/><!-- HANGUL SYLLABLE PWAESS -->
+      <map code="0xd439" name="1em"/><!-- HANGUL SYLLABLE PWAENG -->
+      <map code="0xd43a" name="1em"/><!-- HANGUL SYLLABLE PWAEJ -->
+      <map code="0xd43b" name="1em"/><!-- HANGUL SYLLABLE PWAEC -->
+      <map code="0xd43c" name="1em"/><!-- HANGUL SYLLABLE PWAEK -->
+      <map code="0xd43d" name="1em"/><!-- HANGUL SYLLABLE PWAET -->
+      <map code="0xd43e" name="1em"/><!-- HANGUL SYLLABLE PWAEP -->
+      <map code="0xd43f" name="1em"/><!-- HANGUL SYLLABLE PWAEH -->
+      <map code="0xd440" name="1em"/><!-- HANGUL SYLLABLE POE -->
+      <map code="0xd441" name="1em"/><!-- HANGUL SYLLABLE POEG -->
+      <map code="0xd442" name="1em"/><!-- HANGUL SYLLABLE POEGG -->
+      <map code="0xd443" name="1em"/><!-- HANGUL SYLLABLE POEGS -->
+      <map code="0xd444" name="1em"/><!-- HANGUL SYLLABLE POEN -->
+      <map code="0xd445" name="1em"/><!-- HANGUL SYLLABLE POENJ -->
+      <map code="0xd446" name="1em"/><!-- HANGUL SYLLABLE POENH -->
+      <map code="0xd447" name="1em"/><!-- HANGUL SYLLABLE POED -->
+      <map code="0xd448" name="1em"/><!-- HANGUL SYLLABLE POEL -->
+      <map code="0xd449" name="1em"/><!-- HANGUL SYLLABLE POELG -->
+      <map code="0xd44a" name="1em"/><!-- HANGUL SYLLABLE POELM -->
+      <map code="0xd44b" name="1em"/><!-- HANGUL SYLLABLE POELB -->
+      <map code="0xd44c" name="1em"/><!-- HANGUL SYLLABLE POELS -->
+      <map code="0xd44d" name="1em"/><!-- HANGUL SYLLABLE POELT -->
+      <map code="0xd44e" name="1em"/><!-- HANGUL SYLLABLE POELP -->
+      <map code="0xd44f" name="1em"/><!-- HANGUL SYLLABLE POELH -->
+      <map code="0xd450" name="1em"/><!-- HANGUL SYLLABLE POEM -->
+      <map code="0xd451" name="1em"/><!-- HANGUL SYLLABLE POEB -->
+      <map code="0xd452" name="1em"/><!-- HANGUL SYLLABLE POEBS -->
+      <map code="0xd453" name="1em"/><!-- HANGUL SYLLABLE POES -->
+      <map code="0xd454" name="1em"/><!-- HANGUL SYLLABLE POESS -->
+      <map code="0xd455" name="1em"/><!-- HANGUL SYLLABLE POENG -->
+      <map code="0xd456" name="1em"/><!-- HANGUL SYLLABLE POEJ -->
+      <map code="0xd457" name="1em"/><!-- HANGUL SYLLABLE POEC -->
+      <map code="0xd458" name="1em"/><!-- HANGUL SYLLABLE POEK -->
+      <map code="0xd459" name="1em"/><!-- HANGUL SYLLABLE POET -->
+      <map code="0xd45a" name="1em"/><!-- HANGUL SYLLABLE POEP -->
+      <map code="0xd45b" name="1em"/><!-- HANGUL SYLLABLE POEH -->
+      <map code="0xd45c" name="1em"/><!-- HANGUL SYLLABLE PYO -->
+      <map code="0xd45d" name="1em"/><!-- HANGUL SYLLABLE PYOG -->
+      <map code="0xd45e" name="1em"/><!-- HANGUL SYLLABLE PYOGG -->
+      <map code="0xd45f" name="1em"/><!-- HANGUL SYLLABLE PYOGS -->
+      <map code="0xd460" name="1em"/><!-- HANGUL SYLLABLE PYON -->
+      <map code="0xd461" name="1em"/><!-- HANGUL SYLLABLE PYONJ -->
+      <map code="0xd462" name="1em"/><!-- HANGUL SYLLABLE PYONH -->
+      <map code="0xd463" name="1em"/><!-- HANGUL SYLLABLE PYOD -->
+      <map code="0xd464" name="1em"/><!-- HANGUL SYLLABLE PYOL -->
+      <map code="0xd465" name="1em"/><!-- HANGUL SYLLABLE PYOLG -->
+      <map code="0xd466" name="1em"/><!-- HANGUL SYLLABLE PYOLM -->
+      <map code="0xd467" name="1em"/><!-- HANGUL SYLLABLE PYOLB -->
+      <map code="0xd468" name="1em"/><!-- HANGUL SYLLABLE PYOLS -->
+      <map code="0xd469" name="1em"/><!-- HANGUL SYLLABLE PYOLT -->
+      <map code="0xd46a" name="1em"/><!-- HANGUL SYLLABLE PYOLP -->
+      <map code="0xd46b" name="1em"/><!-- HANGUL SYLLABLE PYOLH -->
+      <map code="0xd46c" name="1em"/><!-- HANGUL SYLLABLE PYOM -->
+      <map code="0xd46d" name="1em"/><!-- HANGUL SYLLABLE PYOB -->
+      <map code="0xd46e" name="1em"/><!-- HANGUL SYLLABLE PYOBS -->
+      <map code="0xd46f" name="1em"/><!-- HANGUL SYLLABLE PYOS -->
+      <map code="0xd470" name="1em"/><!-- HANGUL SYLLABLE PYOSS -->
+      <map code="0xd471" name="1em"/><!-- HANGUL SYLLABLE PYONG -->
+      <map code="0xd472" name="1em"/><!-- HANGUL SYLLABLE PYOJ -->
+      <map code="0xd473" name="1em"/><!-- HANGUL SYLLABLE PYOC -->
+      <map code="0xd474" name="1em"/><!-- HANGUL SYLLABLE PYOK -->
+      <map code="0xd475" name="1em"/><!-- HANGUL SYLLABLE PYOT -->
+      <map code="0xd476" name="1em"/><!-- HANGUL SYLLABLE PYOP -->
+      <map code="0xd477" name="1em"/><!-- HANGUL SYLLABLE PYOH -->
+      <map code="0xd478" name="1em"/><!-- HANGUL SYLLABLE PU -->
+      <map code="0xd479" name="1em"/><!-- HANGUL SYLLABLE PUG -->
+      <map code="0xd47a" name="1em"/><!-- HANGUL SYLLABLE PUGG -->
+      <map code="0xd47b" name="1em"/><!-- HANGUL SYLLABLE PUGS -->
+      <map code="0xd47c" name="1em"/><!-- HANGUL SYLLABLE PUN -->
+      <map code="0xd47d" name="1em"/><!-- HANGUL SYLLABLE PUNJ -->
+      <map code="0xd47e" name="1em"/><!-- HANGUL SYLLABLE PUNH -->
+      <map code="0xd47f" name="1em"/><!-- HANGUL SYLLABLE PUD -->
+      <map code="0xd480" name="1em"/><!-- HANGUL SYLLABLE PUL -->
+      <map code="0xd481" name="1em"/><!-- HANGUL SYLLABLE PULG -->
+      <map code="0xd482" name="1em"/><!-- HANGUL SYLLABLE PULM -->
+      <map code="0xd483" name="1em"/><!-- HANGUL SYLLABLE PULB -->
+      <map code="0xd484" name="1em"/><!-- HANGUL SYLLABLE PULS -->
+      <map code="0xd485" name="1em"/><!-- HANGUL SYLLABLE PULT -->
+      <map code="0xd486" name="1em"/><!-- HANGUL SYLLABLE PULP -->
+      <map code="0xd487" name="1em"/><!-- HANGUL SYLLABLE PULH -->
+      <map code="0xd488" name="1em"/><!-- HANGUL SYLLABLE PUM -->
+      <map code="0xd489" name="1em"/><!-- HANGUL SYLLABLE PUB -->
+      <map code="0xd48a" name="1em"/><!-- HANGUL SYLLABLE PUBS -->
+      <map code="0xd48b" name="1em"/><!-- HANGUL SYLLABLE PUS -->
+      <map code="0xd48c" name="1em"/><!-- HANGUL SYLLABLE PUSS -->
+      <map code="0xd48d" name="1em"/><!-- HANGUL SYLLABLE PUNG -->
+      <map code="0xd48e" name="1em"/><!-- HANGUL SYLLABLE PUJ -->
+      <map code="0xd48f" name="1em"/><!-- HANGUL SYLLABLE PUC -->
+      <map code="0xd490" name="1em"/><!-- HANGUL SYLLABLE PUK -->
+      <map code="0xd491" name="1em"/><!-- HANGUL SYLLABLE PUT -->
+      <map code="0xd492" name="1em"/><!-- HANGUL SYLLABLE PUP -->
+      <map code="0xd493" name="1em"/><!-- HANGUL SYLLABLE PUH -->
+      <map code="0xd494" name="1em"/><!-- HANGUL SYLLABLE PWEO -->
+      <map code="0xd495" name="1em"/><!-- HANGUL SYLLABLE PWEOG -->
+      <map code="0xd496" name="1em"/><!-- HANGUL SYLLABLE PWEOGG -->
+      <map code="0xd497" name="1em"/><!-- HANGUL SYLLABLE PWEOGS -->
+      <map code="0xd498" name="1em"/><!-- HANGUL SYLLABLE PWEON -->
+      <map code="0xd499" name="1em"/><!-- HANGUL SYLLABLE PWEONJ -->
+      <map code="0xd49a" name="1em"/><!-- HANGUL SYLLABLE PWEONH -->
+      <map code="0xd49b" name="1em"/><!-- HANGUL SYLLABLE PWEOD -->
+      <map code="0xd49c" name="1em"/><!-- HANGUL SYLLABLE PWEOL -->
+      <map code="0xd49d" name="1em"/><!-- HANGUL SYLLABLE PWEOLG -->
+      <map code="0xd49e" name="1em"/><!-- HANGUL SYLLABLE PWEOLM -->
+      <map code="0xd49f" name="1em"/><!-- HANGUL SYLLABLE PWEOLB -->
+      <map code="0xd4a0" name="1em"/><!-- HANGUL SYLLABLE PWEOLS -->
+      <map code="0xd4a1" name="1em"/><!-- HANGUL SYLLABLE PWEOLT -->
+      <map code="0xd4a2" name="1em"/><!-- HANGUL SYLLABLE PWEOLP -->
+      <map code="0xd4a3" name="1em"/><!-- HANGUL SYLLABLE PWEOLH -->
+      <map code="0xd4a4" name="1em"/><!-- HANGUL SYLLABLE PWEOM -->
+      <map code="0xd4a5" name="1em"/><!-- HANGUL SYLLABLE PWEOB -->
+      <map code="0xd4a6" name="1em"/><!-- HANGUL SYLLABLE PWEOBS -->
+      <map code="0xd4a7" name="1em"/><!-- HANGUL SYLLABLE PWEOS -->
+      <map code="0xd4a8" name="1em"/><!-- HANGUL SYLLABLE PWEOSS -->
+      <map code="0xd4a9" name="1em"/><!-- HANGUL SYLLABLE PWEONG -->
+      <map code="0xd4aa" name="1em"/><!-- HANGUL SYLLABLE PWEOJ -->
+      <map code="0xd4ab" name="1em"/><!-- HANGUL SYLLABLE PWEOC -->
+      <map code="0xd4ac" name="1em"/><!-- HANGUL SYLLABLE PWEOK -->
+      <map code="0xd4ad" name="1em"/><!-- HANGUL SYLLABLE PWEOT -->
+      <map code="0xd4ae" name="1em"/><!-- HANGUL SYLLABLE PWEOP -->
+      <map code="0xd4af" name="1em"/><!-- HANGUL SYLLABLE PWEOH -->
+      <map code="0xd4b0" name="1em"/><!-- HANGUL SYLLABLE PWE -->
+      <map code="0xd4b1" name="1em"/><!-- HANGUL SYLLABLE PWEG -->
+      <map code="0xd4b2" name="1em"/><!-- HANGUL SYLLABLE PWEGG -->
+      <map code="0xd4b3" name="1em"/><!-- HANGUL SYLLABLE PWEGS -->
+      <map code="0xd4b4" name="1em"/><!-- HANGUL SYLLABLE PWEN -->
+      <map code="0xd4b5" name="1em"/><!-- HANGUL SYLLABLE PWENJ -->
+      <map code="0xd4b6" name="1em"/><!-- HANGUL SYLLABLE PWENH -->
+      <map code="0xd4b7" name="1em"/><!-- HANGUL SYLLABLE PWED -->
+      <map code="0xd4b8" name="1em"/><!-- HANGUL SYLLABLE PWEL -->
+      <map code="0xd4b9" name="1em"/><!-- HANGUL SYLLABLE PWELG -->
+      <map code="0xd4ba" name="1em"/><!-- HANGUL SYLLABLE PWELM -->
+      <map code="0xd4bb" name="1em"/><!-- HANGUL SYLLABLE PWELB -->
+      <map code="0xd4bc" name="1em"/><!-- HANGUL SYLLABLE PWELS -->
+      <map code="0xd4bd" name="1em"/><!-- HANGUL SYLLABLE PWELT -->
+      <map code="0xd4be" name="1em"/><!-- HANGUL SYLLABLE PWELP -->
+      <map code="0xd4bf" name="1em"/><!-- HANGUL SYLLABLE PWELH -->
+      <map code="0xd4c0" name="1em"/><!-- HANGUL SYLLABLE PWEM -->
+      <map code="0xd4c1" name="1em"/><!-- HANGUL SYLLABLE PWEB -->
+      <map code="0xd4c2" name="1em"/><!-- HANGUL SYLLABLE PWEBS -->
+      <map code="0xd4c3" name="1em"/><!-- HANGUL SYLLABLE PWES -->
+      <map code="0xd4c4" name="1em"/><!-- HANGUL SYLLABLE PWESS -->
+      <map code="0xd4c5" name="1em"/><!-- HANGUL SYLLABLE PWENG -->
+      <map code="0xd4c6" name="1em"/><!-- HANGUL SYLLABLE PWEJ -->
+      <map code="0xd4c7" name="1em"/><!-- HANGUL SYLLABLE PWEC -->
+      <map code="0xd4c8" name="1em"/><!-- HANGUL SYLLABLE PWEK -->
+      <map code="0xd4c9" name="1em"/><!-- HANGUL SYLLABLE PWET -->
+      <map code="0xd4ca" name="1em"/><!-- HANGUL SYLLABLE PWEP -->
+      <map code="0xd4cb" name="1em"/><!-- HANGUL SYLLABLE PWEH -->
+      <map code="0xd4cc" name="1em"/><!-- HANGUL SYLLABLE PWI -->
+      <map code="0xd4cd" name="1em"/><!-- HANGUL SYLLABLE PWIG -->
+      <map code="0xd4ce" name="1em"/><!-- HANGUL SYLLABLE PWIGG -->
+      <map code="0xd4cf" name="1em"/><!-- HANGUL SYLLABLE PWIGS -->
+      <map code="0xd4d0" name="1em"/><!-- HANGUL SYLLABLE PWIN -->
+      <map code="0xd4d1" name="1em"/><!-- HANGUL SYLLABLE PWINJ -->
+      <map code="0xd4d2" name="1em"/><!-- HANGUL SYLLABLE PWINH -->
+      <map code="0xd4d3" name="1em"/><!-- HANGUL SYLLABLE PWID -->
+      <map code="0xd4d4" name="1em"/><!-- HANGUL SYLLABLE PWIL -->
+      <map code="0xd4d5" name="1em"/><!-- HANGUL SYLLABLE PWILG -->
+      <map code="0xd4d6" name="1em"/><!-- HANGUL SYLLABLE PWILM -->
+      <map code="0xd4d7" name="1em"/><!-- HANGUL SYLLABLE PWILB -->
+      <map code="0xd4d8" name="1em"/><!-- HANGUL SYLLABLE PWILS -->
+      <map code="0xd4d9" name="1em"/><!-- HANGUL SYLLABLE PWILT -->
+      <map code="0xd4da" name="1em"/><!-- HANGUL SYLLABLE PWILP -->
+      <map code="0xd4db" name="1em"/><!-- HANGUL SYLLABLE PWILH -->
+      <map code="0xd4dc" name="1em"/><!-- HANGUL SYLLABLE PWIM -->
+      <map code="0xd4dd" name="1em"/><!-- HANGUL SYLLABLE PWIB -->
+      <map code="0xd4de" name="1em"/><!-- HANGUL SYLLABLE PWIBS -->
+      <map code="0xd4df" name="1em"/><!-- HANGUL SYLLABLE PWIS -->
+      <map code="0xd4e0" name="1em"/><!-- HANGUL SYLLABLE PWISS -->
+      <map code="0xd4e1" name="1em"/><!-- HANGUL SYLLABLE PWING -->
+      <map code="0xd4e2" name="1em"/><!-- HANGUL SYLLABLE PWIJ -->
+      <map code="0xd4e3" name="1em"/><!-- HANGUL SYLLABLE PWIC -->
+      <map code="0xd4e4" name="1em"/><!-- HANGUL SYLLABLE PWIK -->
+      <map code="0xd4e5" name="1em"/><!-- HANGUL SYLLABLE PWIT -->
+      <map code="0xd4e6" name="1em"/><!-- HANGUL SYLLABLE PWIP -->
+      <map code="0xd4e7" name="1em"/><!-- HANGUL SYLLABLE PWIH -->
+      <map code="0xd4e8" name="1em"/><!-- HANGUL SYLLABLE PYU -->
+      <map code="0xd4e9" name="1em"/><!-- HANGUL SYLLABLE PYUG -->
+      <map code="0xd4ea" name="1em"/><!-- HANGUL SYLLABLE PYUGG -->
+      <map code="0xd4eb" name="1em"/><!-- HANGUL SYLLABLE PYUGS -->
+      <map code="0xd4ec" name="1em"/><!-- HANGUL SYLLABLE PYUN -->
+      <map code="0xd4ed" name="1em"/><!-- HANGUL SYLLABLE PYUNJ -->
+      <map code="0xd4ee" name="1em"/><!-- HANGUL SYLLABLE PYUNH -->
+      <map code="0xd4ef" name="1em"/><!-- HANGUL SYLLABLE PYUD -->
+      <map code="0xd4f0" name="1em"/><!-- HANGUL SYLLABLE PYUL -->
+      <map code="0xd4f1" name="1em"/><!-- HANGUL SYLLABLE PYULG -->
+      <map code="0xd4f2" name="1em"/><!-- HANGUL SYLLABLE PYULM -->
+      <map code="0xd4f3" name="1em"/><!-- HANGUL SYLLABLE PYULB -->
+      <map code="0xd4f4" name="1em"/><!-- HANGUL SYLLABLE PYULS -->
+      <map code="0xd4f5" name="1em"/><!-- HANGUL SYLLABLE PYULT -->
+      <map code="0xd4f6" name="1em"/><!-- HANGUL SYLLABLE PYULP -->
+      <map code="0xd4f7" name="1em"/><!-- HANGUL SYLLABLE PYULH -->
+      <map code="0xd4f8" name="1em"/><!-- HANGUL SYLLABLE PYUM -->
+      <map code="0xd4f9" name="1em"/><!-- HANGUL SYLLABLE PYUB -->
+      <map code="0xd4fa" name="1em"/><!-- HANGUL SYLLABLE PYUBS -->
+      <map code="0xd4fb" name="1em"/><!-- HANGUL SYLLABLE PYUS -->
+      <map code="0xd4fc" name="1em"/><!-- HANGUL SYLLABLE PYUSS -->
+      <map code="0xd4fd" name="1em"/><!-- HANGUL SYLLABLE PYUNG -->
+      <map code="0xd4fe" name="1em"/><!-- HANGUL SYLLABLE PYUJ -->
+      <map code="0xd4ff" name="1em"/><!-- HANGUL SYLLABLE PYUC -->
+      <map code="0xd500" name="1em"/><!-- HANGUL SYLLABLE PYUK -->
+      <map code="0xd501" name="1em"/><!-- HANGUL SYLLABLE PYUT -->
+      <map code="0xd502" name="1em"/><!-- HANGUL SYLLABLE PYUP -->
+      <map code="0xd503" name="1em"/><!-- HANGUL SYLLABLE PYUH -->
+      <map code="0xd504" name="1em"/><!-- HANGUL SYLLABLE PEU -->
+      <map code="0xd505" name="1em"/><!-- HANGUL SYLLABLE PEUG -->
+      <map code="0xd506" name="1em"/><!-- HANGUL SYLLABLE PEUGG -->
+      <map code="0xd507" name="1em"/><!-- HANGUL SYLLABLE PEUGS -->
+      <map code="0xd508" name="1em"/><!-- HANGUL SYLLABLE PEUN -->
+      <map code="0xd509" name="1em"/><!-- HANGUL SYLLABLE PEUNJ -->
+      <map code="0xd50a" name="1em"/><!-- HANGUL SYLLABLE PEUNH -->
+      <map code="0xd50b" name="1em"/><!-- HANGUL SYLLABLE PEUD -->
+      <map code="0xd50c" name="1em"/><!-- HANGUL SYLLABLE PEUL -->
+      <map code="0xd50d" name="1em"/><!-- HANGUL SYLLABLE PEULG -->
+      <map code="0xd50e" name="1em"/><!-- HANGUL SYLLABLE PEULM -->
+      <map code="0xd50f" name="1em"/><!-- HANGUL SYLLABLE PEULB -->
+      <map code="0xd510" name="1em"/><!-- HANGUL SYLLABLE PEULS -->
+      <map code="0xd511" name="1em"/><!-- HANGUL SYLLABLE PEULT -->
+      <map code="0xd512" name="1em"/><!-- HANGUL SYLLABLE PEULP -->
+      <map code="0xd513" name="1em"/><!-- HANGUL SYLLABLE PEULH -->
+      <map code="0xd514" name="1em"/><!-- HANGUL SYLLABLE PEUM -->
+      <map code="0xd515" name="1em"/><!-- HANGUL SYLLABLE PEUB -->
+      <map code="0xd516" name="1em"/><!-- HANGUL SYLLABLE PEUBS -->
+      <map code="0xd517" name="1em"/><!-- HANGUL SYLLABLE PEUS -->
+      <map code="0xd518" name="1em"/><!-- HANGUL SYLLABLE PEUSS -->
+      <map code="0xd519" name="1em"/><!-- HANGUL SYLLABLE PEUNG -->
+      <map code="0xd51a" name="1em"/><!-- HANGUL SYLLABLE PEUJ -->
+      <map code="0xd51b" name="1em"/><!-- HANGUL SYLLABLE PEUC -->
+      <map code="0xd51c" name="1em"/><!-- HANGUL SYLLABLE PEUK -->
+      <map code="0xd51d" name="1em"/><!-- HANGUL SYLLABLE PEUT -->
+      <map code="0xd51e" name="1em"/><!-- HANGUL SYLLABLE PEUP -->
+      <map code="0xd51f" name="1em"/><!-- HANGUL SYLLABLE PEUH -->
+      <map code="0xd520" name="1em"/><!-- HANGUL SYLLABLE PYI -->
+      <map code="0xd521" name="1em"/><!-- HANGUL SYLLABLE PYIG -->
+      <map code="0xd522" name="1em"/><!-- HANGUL SYLLABLE PYIGG -->
+      <map code="0xd523" name="1em"/><!-- HANGUL SYLLABLE PYIGS -->
+      <map code="0xd524" name="1em"/><!-- HANGUL SYLLABLE PYIN -->
+      <map code="0xd525" name="1em"/><!-- HANGUL SYLLABLE PYINJ -->
+      <map code="0xd526" name="1em"/><!-- HANGUL SYLLABLE PYINH -->
+      <map code="0xd527" name="1em"/><!-- HANGUL SYLLABLE PYID -->
+      <map code="0xd528" name="1em"/><!-- HANGUL SYLLABLE PYIL -->
+      <map code="0xd529" name="1em"/><!-- HANGUL SYLLABLE PYILG -->
+      <map code="0xd52a" name="1em"/><!-- HANGUL SYLLABLE PYILM -->
+      <map code="0xd52b" name="1em"/><!-- HANGUL SYLLABLE PYILB -->
+      <map code="0xd52c" name="1em"/><!-- HANGUL SYLLABLE PYILS -->
+      <map code="0xd52d" name="1em"/><!-- HANGUL SYLLABLE PYILT -->
+      <map code="0xd52e" name="1em"/><!-- HANGUL SYLLABLE PYILP -->
+      <map code="0xd52f" name="1em"/><!-- HANGUL SYLLABLE PYILH -->
+      <map code="0xd530" name="1em"/><!-- HANGUL SYLLABLE PYIM -->
+      <map code="0xd531" name="1em"/><!-- HANGUL SYLLABLE PYIB -->
+      <map code="0xd532" name="1em"/><!-- HANGUL SYLLABLE PYIBS -->
+      <map code="0xd533" name="1em"/><!-- HANGUL SYLLABLE PYIS -->
+      <map code="0xd534" name="1em"/><!-- HANGUL SYLLABLE PYISS -->
+      <map code="0xd535" name="1em"/><!-- HANGUL SYLLABLE PYING -->
+      <map code="0xd536" name="1em"/><!-- HANGUL SYLLABLE PYIJ -->
+      <map code="0xd537" name="1em"/><!-- HANGUL SYLLABLE PYIC -->
+      <map code="0xd538" name="1em"/><!-- HANGUL SYLLABLE PYIK -->
+      <map code="0xd539" name="1em"/><!-- HANGUL SYLLABLE PYIT -->
+      <map code="0xd53a" name="1em"/><!-- HANGUL SYLLABLE PYIP -->
+      <map code="0xd53b" name="1em"/><!-- HANGUL SYLLABLE PYIH -->
+      <map code="0xd53c" name="1em"/><!-- HANGUL SYLLABLE PI -->
+      <map code="0xd53d" name="1em"/><!-- HANGUL SYLLABLE PIG -->
+      <map code="0xd53e" name="1em"/><!-- HANGUL SYLLABLE PIGG -->
+      <map code="0xd53f" name="1em"/><!-- HANGUL SYLLABLE PIGS -->
+      <map code="0xd540" name="1em"/><!-- HANGUL SYLLABLE PIN -->
+      <map code="0xd541" name="1em"/><!-- HANGUL SYLLABLE PINJ -->
+      <map code="0xd542" name="1em"/><!-- HANGUL SYLLABLE PINH -->
+      <map code="0xd543" name="1em"/><!-- HANGUL SYLLABLE PID -->
+      <map code="0xd544" name="1em"/><!-- HANGUL SYLLABLE PIL -->
+      <map code="0xd545" name="1em"/><!-- HANGUL SYLLABLE PILG -->
+      <map code="0xd546" name="1em"/><!-- HANGUL SYLLABLE PILM -->
+      <map code="0xd547" name="1em"/><!-- HANGUL SYLLABLE PILB -->
+      <map code="0xd548" name="1em"/><!-- HANGUL SYLLABLE PILS -->
+      <map code="0xd549" name="1em"/><!-- HANGUL SYLLABLE PILT -->
+      <map code="0xd54a" name="1em"/><!-- HANGUL SYLLABLE PILP -->
+      <map code="0xd54b" name="1em"/><!-- HANGUL SYLLABLE PILH -->
+      <map code="0xd54c" name="1em"/><!-- HANGUL SYLLABLE PIM -->
+      <map code="0xd54d" name="1em"/><!-- HANGUL SYLLABLE PIB -->
+      <map code="0xd54e" name="1em"/><!-- HANGUL SYLLABLE PIBS -->
+      <map code="0xd54f" name="1em"/><!-- HANGUL SYLLABLE PIS -->
+      <map code="0xd550" name="1em"/><!-- HANGUL SYLLABLE PISS -->
+      <map code="0xd551" name="1em"/><!-- HANGUL SYLLABLE PING -->
+      <map code="0xd552" name="1em"/><!-- HANGUL SYLLABLE PIJ -->
+      <map code="0xd553" name="1em"/><!-- HANGUL SYLLABLE PIC -->
+      <map code="0xd554" name="1em"/><!-- HANGUL SYLLABLE PIK -->
+      <map code="0xd555" name="1em"/><!-- HANGUL SYLLABLE PIT -->
+      <map code="0xd556" name="1em"/><!-- HANGUL SYLLABLE PIP -->
+      <map code="0xd557" name="1em"/><!-- HANGUL SYLLABLE PIH -->
+      <map code="0xd558" name="1em"/><!-- HANGUL SYLLABLE HA -->
+      <map code="0xd559" name="1em"/><!-- HANGUL SYLLABLE HAG -->
+      <map code="0xd55a" name="1em"/><!-- HANGUL SYLLABLE HAGG -->
+      <map code="0xd55b" name="1em"/><!-- HANGUL SYLLABLE HAGS -->
+      <map code="0xd55c" name="1em"/><!-- HANGUL SYLLABLE HAN -->
+      <map code="0xd55d" name="1em"/><!-- HANGUL SYLLABLE HANJ -->
+      <map code="0xd55e" name="1em"/><!-- HANGUL SYLLABLE HANH -->
+      <map code="0xd55f" name="1em"/><!-- HANGUL SYLLABLE HAD -->
+      <map code="0xd560" name="1em"/><!-- HANGUL SYLLABLE HAL -->
+      <map code="0xd561" name="1em"/><!-- HANGUL SYLLABLE HALG -->
+      <map code="0xd562" name="1em"/><!-- HANGUL SYLLABLE HALM -->
+      <map code="0xd563" name="1em"/><!-- HANGUL SYLLABLE HALB -->
+      <map code="0xd564" name="1em"/><!-- HANGUL SYLLABLE HALS -->
+      <map code="0xd565" name="1em"/><!-- HANGUL SYLLABLE HALT -->
+      <map code="0xd566" name="1em"/><!-- HANGUL SYLLABLE HALP -->
+      <map code="0xd567" name="1em"/><!-- HANGUL SYLLABLE HALH -->
+      <map code="0xd568" name="1em"/><!-- HANGUL SYLLABLE HAM -->
+      <map code="0xd569" name="1em"/><!-- HANGUL SYLLABLE HAB -->
+      <map code="0xd56a" name="1em"/><!-- HANGUL SYLLABLE HABS -->
+      <map code="0xd56b" name="1em"/><!-- HANGUL SYLLABLE HAS -->
+      <map code="0xd56c" name="1em"/><!-- HANGUL SYLLABLE HASS -->
+      <map code="0xd56d" name="1em"/><!-- HANGUL SYLLABLE HANG -->
+      <map code="0xd56e" name="1em"/><!-- HANGUL SYLLABLE HAJ -->
+      <map code="0xd56f" name="1em"/><!-- HANGUL SYLLABLE HAC -->
+      <map code="0xd570" name="1em"/><!-- HANGUL SYLLABLE HAK -->
+      <map code="0xd571" name="1em"/><!-- HANGUL SYLLABLE HAT -->
+      <map code="0xd572" name="1em"/><!-- HANGUL SYLLABLE HAP -->
+      <map code="0xd573" name="1em"/><!-- HANGUL SYLLABLE HAH -->
+      <map code="0xd574" name="1em"/><!-- HANGUL SYLLABLE HAE -->
+      <map code="0xd575" name="1em"/><!-- HANGUL SYLLABLE HAEG -->
+      <map code="0xd576" name="1em"/><!-- HANGUL SYLLABLE HAEGG -->
+      <map code="0xd577" name="1em"/><!-- HANGUL SYLLABLE HAEGS -->
+      <map code="0xd578" name="1em"/><!-- HANGUL SYLLABLE HAEN -->
+      <map code="0xd579" name="1em"/><!-- HANGUL SYLLABLE HAENJ -->
+      <map code="0xd57a" name="1em"/><!-- HANGUL SYLLABLE HAENH -->
+      <map code="0xd57b" name="1em"/><!-- HANGUL SYLLABLE HAED -->
+      <map code="0xd57c" name="1em"/><!-- HANGUL SYLLABLE HAEL -->
+      <map code="0xd57d" name="1em"/><!-- HANGUL SYLLABLE HAELG -->
+      <map code="0xd57e" name="1em"/><!-- HANGUL SYLLABLE HAELM -->
+      <map code="0xd57f" name="1em"/><!-- HANGUL SYLLABLE HAELB -->
+      <map code="0xd580" name="1em"/><!-- HANGUL SYLLABLE HAELS -->
+      <map code="0xd581" name="1em"/><!-- HANGUL SYLLABLE HAELT -->
+      <map code="0xd582" name="1em"/><!-- HANGUL SYLLABLE HAELP -->
+      <map code="0xd583" name="1em"/><!-- HANGUL SYLLABLE HAELH -->
+      <map code="0xd584" name="1em"/><!-- HANGUL SYLLABLE HAEM -->
+      <map code="0xd585" name="1em"/><!-- HANGUL SYLLABLE HAEB -->
+      <map code="0xd586" name="1em"/><!-- HANGUL SYLLABLE HAEBS -->
+      <map code="0xd587" name="1em"/><!-- HANGUL SYLLABLE HAES -->
+      <map code="0xd588" name="1em"/><!-- HANGUL SYLLABLE HAESS -->
+      <map code="0xd589" name="1em"/><!-- HANGUL SYLLABLE HAENG -->
+      <map code="0xd58a" name="1em"/><!-- HANGUL SYLLABLE HAEJ -->
+      <map code="0xd58b" name="1em"/><!-- HANGUL SYLLABLE HAEC -->
+      <map code="0xd58c" name="1em"/><!-- HANGUL SYLLABLE HAEK -->
+      <map code="0xd58d" name="1em"/><!-- HANGUL SYLLABLE HAET -->
+      <map code="0xd58e" name="1em"/><!-- HANGUL SYLLABLE HAEP -->
+      <map code="0xd58f" name="1em"/><!-- HANGUL SYLLABLE HAEH -->
+      <map code="0xd590" name="1em"/><!-- HANGUL SYLLABLE HYA -->
+      <map code="0xd591" name="1em"/><!-- HANGUL SYLLABLE HYAG -->
+      <map code="0xd592" name="1em"/><!-- HANGUL SYLLABLE HYAGG -->
+      <map code="0xd593" name="1em"/><!-- HANGUL SYLLABLE HYAGS -->
+      <map code="0xd594" name="1em"/><!-- HANGUL SYLLABLE HYAN -->
+      <map code="0xd595" name="1em"/><!-- HANGUL SYLLABLE HYANJ -->
+      <map code="0xd596" name="1em"/><!-- HANGUL SYLLABLE HYANH -->
+      <map code="0xd597" name="1em"/><!-- HANGUL SYLLABLE HYAD -->
+      <map code="0xd598" name="1em"/><!-- HANGUL SYLLABLE HYAL -->
+      <map code="0xd599" name="1em"/><!-- HANGUL SYLLABLE HYALG -->
+      <map code="0xd59a" name="1em"/><!-- HANGUL SYLLABLE HYALM -->
+      <map code="0xd59b" name="1em"/><!-- HANGUL SYLLABLE HYALB -->
+      <map code="0xd59c" name="1em"/><!-- HANGUL SYLLABLE HYALS -->
+      <map code="0xd59d" name="1em"/><!-- HANGUL SYLLABLE HYALT -->
+      <map code="0xd59e" name="1em"/><!-- HANGUL SYLLABLE HYALP -->
+      <map code="0xd59f" name="1em"/><!-- HANGUL SYLLABLE HYALH -->
+      <map code="0xd5a0" name="1em"/><!-- HANGUL SYLLABLE HYAM -->
+      <map code="0xd5a1" name="1em"/><!-- HANGUL SYLLABLE HYAB -->
+      <map code="0xd5a2" name="1em"/><!-- HANGUL SYLLABLE HYABS -->
+      <map code="0xd5a3" name="1em"/><!-- HANGUL SYLLABLE HYAS -->
+      <map code="0xd5a4" name="1em"/><!-- HANGUL SYLLABLE HYASS -->
+      <map code="0xd5a5" name="1em"/><!-- HANGUL SYLLABLE HYANG -->
+      <map code="0xd5a6" name="1em"/><!-- HANGUL SYLLABLE HYAJ -->
+      <map code="0xd5a7" name="1em"/><!-- HANGUL SYLLABLE HYAC -->
+      <map code="0xd5a8" name="1em"/><!-- HANGUL SYLLABLE HYAK -->
+      <map code="0xd5a9" name="1em"/><!-- HANGUL SYLLABLE HYAT -->
+      <map code="0xd5aa" name="1em"/><!-- HANGUL SYLLABLE HYAP -->
+      <map code="0xd5ab" name="1em"/><!-- HANGUL SYLLABLE HYAH -->
+      <map code="0xd5ac" name="1em"/><!-- HANGUL SYLLABLE HYAE -->
+      <map code="0xd5ad" name="1em"/><!-- HANGUL SYLLABLE HYAEG -->
+      <map code="0xd5ae" name="1em"/><!-- HANGUL SYLLABLE HYAEGG -->
+      <map code="0xd5af" name="1em"/><!-- HANGUL SYLLABLE HYAEGS -->
+      <map code="0xd5b0" name="1em"/><!-- HANGUL SYLLABLE HYAEN -->
+      <map code="0xd5b1" name="1em"/><!-- HANGUL SYLLABLE HYAENJ -->
+      <map code="0xd5b2" name="1em"/><!-- HANGUL SYLLABLE HYAENH -->
+      <map code="0xd5b3" name="1em"/><!-- HANGUL SYLLABLE HYAED -->
+      <map code="0xd5b4" name="1em"/><!-- HANGUL SYLLABLE HYAEL -->
+      <map code="0xd5b5" name="1em"/><!-- HANGUL SYLLABLE HYAELG -->
+      <map code="0xd5b6" name="1em"/><!-- HANGUL SYLLABLE HYAELM -->
+      <map code="0xd5b7" name="1em"/><!-- HANGUL SYLLABLE HYAELB -->
+      <map code="0xd5b8" name="1em"/><!-- HANGUL SYLLABLE HYAELS -->
+      <map code="0xd5b9" name="1em"/><!-- HANGUL SYLLABLE HYAELT -->
+      <map code="0xd5ba" name="1em"/><!-- HANGUL SYLLABLE HYAELP -->
+      <map code="0xd5bb" name="1em"/><!-- HANGUL SYLLABLE HYAELH -->
+      <map code="0xd5bc" name="1em"/><!-- HANGUL SYLLABLE HYAEM -->
+      <map code="0xd5bd" name="1em"/><!-- HANGUL SYLLABLE HYAEB -->
+      <map code="0xd5be" name="1em"/><!-- HANGUL SYLLABLE HYAEBS -->
+      <map code="0xd5bf" name="1em"/><!-- HANGUL SYLLABLE HYAES -->
+      <map code="0xd5c0" name="1em"/><!-- HANGUL SYLLABLE HYAESS -->
+      <map code="0xd5c1" name="1em"/><!-- HANGUL SYLLABLE HYAENG -->
+      <map code="0xd5c2" name="1em"/><!-- HANGUL SYLLABLE HYAEJ -->
+      <map code="0xd5c3" name="1em"/><!-- HANGUL SYLLABLE HYAEC -->
+      <map code="0xd5c4" name="1em"/><!-- HANGUL SYLLABLE HYAEK -->
+      <map code="0xd5c5" name="1em"/><!-- HANGUL SYLLABLE HYAET -->
+      <map code="0xd5c6" name="1em"/><!-- HANGUL SYLLABLE HYAEP -->
+      <map code="0xd5c7" name="1em"/><!-- HANGUL SYLLABLE HYAEH -->
+      <map code="0xd5c8" name="1em"/><!-- HANGUL SYLLABLE HEO -->
+      <map code="0xd5c9" name="1em"/><!-- HANGUL SYLLABLE HEOG -->
+      <map code="0xd5ca" name="1em"/><!-- HANGUL SYLLABLE HEOGG -->
+      <map code="0xd5cb" name="1em"/><!-- HANGUL SYLLABLE HEOGS -->
+      <map code="0xd5cc" name="1em"/><!-- HANGUL SYLLABLE HEON -->
+      <map code="0xd5cd" name="1em"/><!-- HANGUL SYLLABLE HEONJ -->
+      <map code="0xd5ce" name="1em"/><!-- HANGUL SYLLABLE HEONH -->
+      <map code="0xd5cf" name="1em"/><!-- HANGUL SYLLABLE HEOD -->
+      <map code="0xd5d0" name="1em"/><!-- HANGUL SYLLABLE HEOL -->
+      <map code="0xd5d1" name="1em"/><!-- HANGUL SYLLABLE HEOLG -->
+      <map code="0xd5d2" name="1em"/><!-- HANGUL SYLLABLE HEOLM -->
+      <map code="0xd5d3" name="1em"/><!-- HANGUL SYLLABLE HEOLB -->
+      <map code="0xd5d4" name="1em"/><!-- HANGUL SYLLABLE HEOLS -->
+      <map code="0xd5d5" name="1em"/><!-- HANGUL SYLLABLE HEOLT -->
+      <map code="0xd5d6" name="1em"/><!-- HANGUL SYLLABLE HEOLP -->
+      <map code="0xd5d7" name="1em"/><!-- HANGUL SYLLABLE HEOLH -->
+      <map code="0xd5d8" name="1em"/><!-- HANGUL SYLLABLE HEOM -->
+      <map code="0xd5d9" name="1em"/><!-- HANGUL SYLLABLE HEOB -->
+      <map code="0xd5da" name="1em"/><!-- HANGUL SYLLABLE HEOBS -->
+      <map code="0xd5db" name="1em"/><!-- HANGUL SYLLABLE HEOS -->
+      <map code="0xd5dc" name="1em"/><!-- HANGUL SYLLABLE HEOSS -->
+      <map code="0xd5dd" name="1em"/><!-- HANGUL SYLLABLE HEONG -->
+      <map code="0xd5de" name="1em"/><!-- HANGUL SYLLABLE HEOJ -->
+      <map code="0xd5df" name="1em"/><!-- HANGUL SYLLABLE HEOC -->
+      <map code="0xd5e0" name="1em"/><!-- HANGUL SYLLABLE HEOK -->
+      <map code="0xd5e1" name="1em"/><!-- HANGUL SYLLABLE HEOT -->
+      <map code="0xd5e2" name="1em"/><!-- HANGUL SYLLABLE HEOP -->
+      <map code="0xd5e3" name="1em"/><!-- HANGUL SYLLABLE HEOH -->
+      <map code="0xd5e4" name="1em"/><!-- HANGUL SYLLABLE HE -->
+      <map code="0xd5e5" name="1em"/><!-- HANGUL SYLLABLE HEG -->
+      <map code="0xd5e6" name="1em"/><!-- HANGUL SYLLABLE HEGG -->
+      <map code="0xd5e7" name="1em"/><!-- HANGUL SYLLABLE HEGS -->
+      <map code="0xd5e8" name="1em"/><!-- HANGUL SYLLABLE HEN -->
+      <map code="0xd5e9" name="1em"/><!-- HANGUL SYLLABLE HENJ -->
+      <map code="0xd5ea" name="1em"/><!-- HANGUL SYLLABLE HENH -->
+      <map code="0xd5eb" name="1em"/><!-- HANGUL SYLLABLE HED -->
+      <map code="0xd5ec" name="1em"/><!-- HANGUL SYLLABLE HEL -->
+      <map code="0xd5ed" name="1em"/><!-- HANGUL SYLLABLE HELG -->
+      <map code="0xd5ee" name="1em"/><!-- HANGUL SYLLABLE HELM -->
+      <map code="0xd5ef" name="1em"/><!-- HANGUL SYLLABLE HELB -->
+      <map code="0xd5f0" name="1em"/><!-- HANGUL SYLLABLE HELS -->
+      <map code="0xd5f1" name="1em"/><!-- HANGUL SYLLABLE HELT -->
+      <map code="0xd5f2" name="1em"/><!-- HANGUL SYLLABLE HELP -->
+      <map code="0xd5f3" name="1em"/><!-- HANGUL SYLLABLE HELH -->
+      <map code="0xd5f4" name="1em"/><!-- HANGUL SYLLABLE HEM -->
+      <map code="0xd5f5" name="1em"/><!-- HANGUL SYLLABLE HEB -->
+      <map code="0xd5f6" name="1em"/><!-- HANGUL SYLLABLE HEBS -->
+      <map code="0xd5f7" name="1em"/><!-- HANGUL SYLLABLE HES -->
+      <map code="0xd5f8" name="1em"/><!-- HANGUL SYLLABLE HESS -->
+      <map code="0xd5f9" name="1em"/><!-- HANGUL SYLLABLE HENG -->
+      <map code="0xd5fa" name="1em"/><!-- HANGUL SYLLABLE HEJ -->
+      <map code="0xd5fb" name="1em"/><!-- HANGUL SYLLABLE HEC -->
+      <map code="0xd5fc" name="1em"/><!-- HANGUL SYLLABLE HEK -->
+      <map code="0xd5fd" name="1em"/><!-- HANGUL SYLLABLE HET -->
+      <map code="0xd5fe" name="1em"/><!-- HANGUL SYLLABLE HEP -->
+      <map code="0xd5ff" name="1em"/><!-- HANGUL SYLLABLE HEH -->
+      <map code="0xd600" name="1em"/><!-- HANGUL SYLLABLE HYEO -->
+      <map code="0xd601" name="1em"/><!-- HANGUL SYLLABLE HYEOG -->
+      <map code="0xd602" name="1em"/><!-- HANGUL SYLLABLE HYEOGG -->
+      <map code="0xd603" name="1em"/><!-- HANGUL SYLLABLE HYEOGS -->
+      <map code="0xd604" name="1em"/><!-- HANGUL SYLLABLE HYEON -->
+      <map code="0xd605" name="1em"/><!-- HANGUL SYLLABLE HYEONJ -->
+      <map code="0xd606" name="1em"/><!-- HANGUL SYLLABLE HYEONH -->
+      <map code="0xd607" name="1em"/><!-- HANGUL SYLLABLE HYEOD -->
+      <map code="0xd608" name="1em"/><!-- HANGUL SYLLABLE HYEOL -->
+      <map code="0xd609" name="1em"/><!-- HANGUL SYLLABLE HYEOLG -->
+      <map code="0xd60a" name="1em"/><!-- HANGUL SYLLABLE HYEOLM -->
+      <map code="0xd60b" name="1em"/><!-- HANGUL SYLLABLE HYEOLB -->
+      <map code="0xd60c" name="1em"/><!-- HANGUL SYLLABLE HYEOLS -->
+      <map code="0xd60d" name="1em"/><!-- HANGUL SYLLABLE HYEOLT -->
+      <map code="0xd60e" name="1em"/><!-- HANGUL SYLLABLE HYEOLP -->
+      <map code="0xd60f" name="1em"/><!-- HANGUL SYLLABLE HYEOLH -->
+      <map code="0xd610" name="1em"/><!-- HANGUL SYLLABLE HYEOM -->
+      <map code="0xd611" name="1em"/><!-- HANGUL SYLLABLE HYEOB -->
+      <map code="0xd612" name="1em"/><!-- HANGUL SYLLABLE HYEOBS -->
+      <map code="0xd613" name="1em"/><!-- HANGUL SYLLABLE HYEOS -->
+      <map code="0xd614" name="1em"/><!-- HANGUL SYLLABLE HYEOSS -->
+      <map code="0xd615" name="1em"/><!-- HANGUL SYLLABLE HYEONG -->
+      <map code="0xd616" name="1em"/><!-- HANGUL SYLLABLE HYEOJ -->
+      <map code="0xd617" name="1em"/><!-- HANGUL SYLLABLE HYEOC -->
+      <map code="0xd618" name="1em"/><!-- HANGUL SYLLABLE HYEOK -->
+      <map code="0xd619" name="1em"/><!-- HANGUL SYLLABLE HYEOT -->
+      <map code="0xd61a" name="1em"/><!-- HANGUL SYLLABLE HYEOP -->
+      <map code="0xd61b" name="1em"/><!-- HANGUL SYLLABLE HYEOH -->
+      <map code="0xd61c" name="1em"/><!-- HANGUL SYLLABLE HYE -->
+      <map code="0xd61d" name="1em"/><!-- HANGUL SYLLABLE HYEG -->
+      <map code="0xd61e" name="1em"/><!-- HANGUL SYLLABLE HYEGG -->
+      <map code="0xd61f" name="1em"/><!-- HANGUL SYLLABLE HYEGS -->
+      <map code="0xd620" name="1em"/><!-- HANGUL SYLLABLE HYEN -->
+      <map code="0xd621" name="1em"/><!-- HANGUL SYLLABLE HYENJ -->
+      <map code="0xd622" name="1em"/><!-- HANGUL SYLLABLE HYENH -->
+      <map code="0xd623" name="1em"/><!-- HANGUL SYLLABLE HYED -->
+      <map code="0xd624" name="1em"/><!-- HANGUL SYLLABLE HYEL -->
+      <map code="0xd625" name="1em"/><!-- HANGUL SYLLABLE HYELG -->
+      <map code="0xd626" name="1em"/><!-- HANGUL SYLLABLE HYELM -->
+      <map code="0xd627" name="1em"/><!-- HANGUL SYLLABLE HYELB -->
+      <map code="0xd628" name="1em"/><!-- HANGUL SYLLABLE HYELS -->
+      <map code="0xd629" name="1em"/><!-- HANGUL SYLLABLE HYELT -->
+      <map code="0xd62a" name="1em"/><!-- HANGUL SYLLABLE HYELP -->
+      <map code="0xd62b" name="1em"/><!-- HANGUL SYLLABLE HYELH -->
+      <map code="0xd62c" name="1em"/><!-- HANGUL SYLLABLE HYEM -->
+      <map code="0xd62d" name="1em"/><!-- HANGUL SYLLABLE HYEB -->
+      <map code="0xd62e" name="1em"/><!-- HANGUL SYLLABLE HYEBS -->
+      <map code="0xd62f" name="1em"/><!-- HANGUL SYLLABLE HYES -->
+      <map code="0xd630" name="1em"/><!-- HANGUL SYLLABLE HYESS -->
+      <map code="0xd631" name="1em"/><!-- HANGUL SYLLABLE HYENG -->
+      <map code="0xd632" name="1em"/><!-- HANGUL SYLLABLE HYEJ -->
+      <map code="0xd633" name="1em"/><!-- HANGUL SYLLABLE HYEC -->
+      <map code="0xd634" name="1em"/><!-- HANGUL SYLLABLE HYEK -->
+      <map code="0xd635" name="1em"/><!-- HANGUL SYLLABLE HYET -->
+      <map code="0xd636" name="1em"/><!-- HANGUL SYLLABLE HYEP -->
+      <map code="0xd637" name="1em"/><!-- HANGUL SYLLABLE HYEH -->
+      <map code="0xd638" name="1em"/><!-- HANGUL SYLLABLE HO -->
+      <map code="0xd639" name="1em"/><!-- HANGUL SYLLABLE HOG -->
+      <map code="0xd63a" name="1em"/><!-- HANGUL SYLLABLE HOGG -->
+      <map code="0xd63b" name="1em"/><!-- HANGUL SYLLABLE HOGS -->
+      <map code="0xd63c" name="1em"/><!-- HANGUL SYLLABLE HON -->
+      <map code="0xd63d" name="1em"/><!-- HANGUL SYLLABLE HONJ -->
+      <map code="0xd63e" name="1em"/><!-- HANGUL SYLLABLE HONH -->
+      <map code="0xd63f" name="1em"/><!-- HANGUL SYLLABLE HOD -->
+      <map code="0xd640" name="1em"/><!-- HANGUL SYLLABLE HOL -->
+      <map code="0xd641" name="1em"/><!-- HANGUL SYLLABLE HOLG -->
+      <map code="0xd642" name="1em"/><!-- HANGUL SYLLABLE HOLM -->
+      <map code="0xd643" name="1em"/><!-- HANGUL SYLLABLE HOLB -->
+      <map code="0xd644" name="1em"/><!-- HANGUL SYLLABLE HOLS -->
+      <map code="0xd645" name="1em"/><!-- HANGUL SYLLABLE HOLT -->
+      <map code="0xd646" name="1em"/><!-- HANGUL SYLLABLE HOLP -->
+      <map code="0xd647" name="1em"/><!-- HANGUL SYLLABLE HOLH -->
+      <map code="0xd648" name="1em"/><!-- HANGUL SYLLABLE HOM -->
+      <map code="0xd649" name="1em"/><!-- HANGUL SYLLABLE HOB -->
+      <map code="0xd64a" name="1em"/><!-- HANGUL SYLLABLE HOBS -->
+      <map code="0xd64b" name="1em"/><!-- HANGUL SYLLABLE HOS -->
+      <map code="0xd64c" name="1em"/><!-- HANGUL SYLLABLE HOSS -->
+      <map code="0xd64d" name="1em"/><!-- HANGUL SYLLABLE HONG -->
+      <map code="0xd64e" name="1em"/><!-- HANGUL SYLLABLE HOJ -->
+      <map code="0xd64f" name="1em"/><!-- HANGUL SYLLABLE HOC -->
+      <map code="0xd650" name="1em"/><!-- HANGUL SYLLABLE HOK -->
+      <map code="0xd651" name="1em"/><!-- HANGUL SYLLABLE HOT -->
+      <map code="0xd652" name="1em"/><!-- HANGUL SYLLABLE HOP -->
+      <map code="0xd653" name="1em"/><!-- HANGUL SYLLABLE HOH -->
+      <map code="0xd654" name="1em"/><!-- HANGUL SYLLABLE HWA -->
+      <map code="0xd655" name="1em"/><!-- HANGUL SYLLABLE HWAG -->
+      <map code="0xd656" name="1em"/><!-- HANGUL SYLLABLE HWAGG -->
+      <map code="0xd657" name="1em"/><!-- HANGUL SYLLABLE HWAGS -->
+      <map code="0xd658" name="1em"/><!-- HANGUL SYLLABLE HWAN -->
+      <map code="0xd659" name="1em"/><!-- HANGUL SYLLABLE HWANJ -->
+      <map code="0xd65a" name="1em"/><!-- HANGUL SYLLABLE HWANH -->
+      <map code="0xd65b" name="1em"/><!-- HANGUL SYLLABLE HWAD -->
+      <map code="0xd65c" name="1em"/><!-- HANGUL SYLLABLE HWAL -->
+      <map code="0xd65d" name="1em"/><!-- HANGUL SYLLABLE HWALG -->
+      <map code="0xd65e" name="1em"/><!-- HANGUL SYLLABLE HWALM -->
+      <map code="0xd65f" name="1em"/><!-- HANGUL SYLLABLE HWALB -->
+      <map code="0xd660" name="1em"/><!-- HANGUL SYLLABLE HWALS -->
+      <map code="0xd661" name="1em"/><!-- HANGUL SYLLABLE HWALT -->
+      <map code="0xd662" name="1em"/><!-- HANGUL SYLLABLE HWALP -->
+      <map code="0xd663" name="1em"/><!-- HANGUL SYLLABLE HWALH -->
+      <map code="0xd664" name="1em"/><!-- HANGUL SYLLABLE HWAM -->
+      <map code="0xd665" name="1em"/><!-- HANGUL SYLLABLE HWAB -->
+      <map code="0xd666" name="1em"/><!-- HANGUL SYLLABLE HWABS -->
+      <map code="0xd667" name="1em"/><!-- HANGUL SYLLABLE HWAS -->
+      <map code="0xd668" name="1em"/><!-- HANGUL SYLLABLE HWASS -->
+      <map code="0xd669" name="1em"/><!-- HANGUL SYLLABLE HWANG -->
+      <map code="0xd66a" name="1em"/><!-- HANGUL SYLLABLE HWAJ -->
+      <map code="0xd66b" name="1em"/><!-- HANGUL SYLLABLE HWAC -->
+      <map code="0xd66c" name="1em"/><!-- HANGUL SYLLABLE HWAK -->
+      <map code="0xd66d" name="1em"/><!-- HANGUL SYLLABLE HWAT -->
+      <map code="0xd66e" name="1em"/><!-- HANGUL SYLLABLE HWAP -->
+      <map code="0xd66f" name="1em"/><!-- HANGUL SYLLABLE HWAH -->
+      <map code="0xd670" name="1em"/><!-- HANGUL SYLLABLE HWAE -->
+      <map code="0xd671" name="1em"/><!-- HANGUL SYLLABLE HWAEG -->
+      <map code="0xd672" name="1em"/><!-- HANGUL SYLLABLE HWAEGG -->
+      <map code="0xd673" name="1em"/><!-- HANGUL SYLLABLE HWAEGS -->
+      <map code="0xd674" name="1em"/><!-- HANGUL SYLLABLE HWAEN -->
+      <map code="0xd675" name="1em"/><!-- HANGUL SYLLABLE HWAENJ -->
+      <map code="0xd676" name="1em"/><!-- HANGUL SYLLABLE HWAENH -->
+      <map code="0xd677" name="1em"/><!-- HANGUL SYLLABLE HWAED -->
+      <map code="0xd678" name="1em"/><!-- HANGUL SYLLABLE HWAEL -->
+      <map code="0xd679" name="1em"/><!-- HANGUL SYLLABLE HWAELG -->
+      <map code="0xd67a" name="1em"/><!-- HANGUL SYLLABLE HWAELM -->
+      <map code="0xd67b" name="1em"/><!-- HANGUL SYLLABLE HWAELB -->
+      <map code="0xd67c" name="1em"/><!-- HANGUL SYLLABLE HWAELS -->
+      <map code="0xd67d" name="1em"/><!-- HANGUL SYLLABLE HWAELT -->
+      <map code="0xd67e" name="1em"/><!-- HANGUL SYLLABLE HWAELP -->
+      <map code="0xd67f" name="1em"/><!-- HANGUL SYLLABLE HWAELH -->
+      <map code="0xd680" name="1em"/><!-- HANGUL SYLLABLE HWAEM -->
+      <map code="0xd681" name="1em"/><!-- HANGUL SYLLABLE HWAEB -->
+      <map code="0xd682" name="1em"/><!-- HANGUL SYLLABLE HWAEBS -->
+      <map code="0xd683" name="1em"/><!-- HANGUL SYLLABLE HWAES -->
+      <map code="0xd684" name="1em"/><!-- HANGUL SYLLABLE HWAESS -->
+      <map code="0xd685" name="1em"/><!-- HANGUL SYLLABLE HWAENG -->
+      <map code="0xd686" name="1em"/><!-- HANGUL SYLLABLE HWAEJ -->
+      <map code="0xd687" name="1em"/><!-- HANGUL SYLLABLE HWAEC -->
+      <map code="0xd688" name="1em"/><!-- HANGUL SYLLABLE HWAEK -->
+      <map code="0xd689" name="1em"/><!-- HANGUL SYLLABLE HWAET -->
+      <map code="0xd68a" name="1em"/><!-- HANGUL SYLLABLE HWAEP -->
+      <map code="0xd68b" name="1em"/><!-- HANGUL SYLLABLE HWAEH -->
+      <map code="0xd68c" name="1em"/><!-- HANGUL SYLLABLE HOE -->
+      <map code="0xd68d" name="1em"/><!-- HANGUL SYLLABLE HOEG -->
+      <map code="0xd68e" name="1em"/><!-- HANGUL SYLLABLE HOEGG -->
+      <map code="0xd68f" name="1em"/><!-- HANGUL SYLLABLE HOEGS -->
+      <map code="0xd690" name="1em"/><!-- HANGUL SYLLABLE HOEN -->
+      <map code="0xd691" name="1em"/><!-- HANGUL SYLLABLE HOENJ -->
+      <map code="0xd692" name="1em"/><!-- HANGUL SYLLABLE HOENH -->
+      <map code="0xd693" name="1em"/><!-- HANGUL SYLLABLE HOED -->
+      <map code="0xd694" name="1em"/><!-- HANGUL SYLLABLE HOEL -->
+      <map code="0xd695" name="1em"/><!-- HANGUL SYLLABLE HOELG -->
+      <map code="0xd696" name="1em"/><!-- HANGUL SYLLABLE HOELM -->
+      <map code="0xd697" name="1em"/><!-- HANGUL SYLLABLE HOELB -->
+      <map code="0xd698" name="1em"/><!-- HANGUL SYLLABLE HOELS -->
+      <map code="0xd699" name="1em"/><!-- HANGUL SYLLABLE HOELT -->
+      <map code="0xd69a" name="1em"/><!-- HANGUL SYLLABLE HOELP -->
+      <map code="0xd69b" name="1em"/><!-- HANGUL SYLLABLE HOELH -->
+      <map code="0xd69c" name="1em"/><!-- HANGUL SYLLABLE HOEM -->
+      <map code="0xd69d" name="1em"/><!-- HANGUL SYLLABLE HOEB -->
+      <map code="0xd69e" name="1em"/><!-- HANGUL SYLLABLE HOEBS -->
+      <map code="0xd69f" name="1em"/><!-- HANGUL SYLLABLE HOES -->
+      <map code="0xd6a0" name="1em"/><!-- HANGUL SYLLABLE HOESS -->
+      <map code="0xd6a1" name="1em"/><!-- HANGUL SYLLABLE HOENG -->
+      <map code="0xd6a2" name="1em"/><!-- HANGUL SYLLABLE HOEJ -->
+      <map code="0xd6a3" name="1em"/><!-- HANGUL SYLLABLE HOEC -->
+      <map code="0xd6a4" name="1em"/><!-- HANGUL SYLLABLE HOEK -->
+      <map code="0xd6a5" name="1em"/><!-- HANGUL SYLLABLE HOET -->
+      <map code="0xd6a6" name="1em"/><!-- HANGUL SYLLABLE HOEP -->
+      <map code="0xd6a7" name="1em"/><!-- HANGUL SYLLABLE HOEH -->
+      <map code="0xd6a8" name="1em"/><!-- HANGUL SYLLABLE HYO -->
+      <map code="0xd6a9" name="1em"/><!-- HANGUL SYLLABLE HYOG -->
+      <map code="0xd6aa" name="1em"/><!-- HANGUL SYLLABLE HYOGG -->
+      <map code="0xd6ab" name="1em"/><!-- HANGUL SYLLABLE HYOGS -->
+      <map code="0xd6ac" name="1em"/><!-- HANGUL SYLLABLE HYON -->
+      <map code="0xd6ad" name="1em"/><!-- HANGUL SYLLABLE HYONJ -->
+      <map code="0xd6ae" name="1em"/><!-- HANGUL SYLLABLE HYONH -->
+      <map code="0xd6af" name="1em"/><!-- HANGUL SYLLABLE HYOD -->
+      <map code="0xd6b0" name="1em"/><!-- HANGUL SYLLABLE HYOL -->
+      <map code="0xd6b1" name="1em"/><!-- HANGUL SYLLABLE HYOLG -->
+      <map code="0xd6b2" name="1em"/><!-- HANGUL SYLLABLE HYOLM -->
+      <map code="0xd6b3" name="1em"/><!-- HANGUL SYLLABLE HYOLB -->
+      <map code="0xd6b4" name="1em"/><!-- HANGUL SYLLABLE HYOLS -->
+      <map code="0xd6b5" name="1em"/><!-- HANGUL SYLLABLE HYOLT -->
+      <map code="0xd6b6" name="1em"/><!-- HANGUL SYLLABLE HYOLP -->
+      <map code="0xd6b7" name="1em"/><!-- HANGUL SYLLABLE HYOLH -->
+      <map code="0xd6b8" name="1em"/><!-- HANGUL SYLLABLE HYOM -->
+      <map code="0xd6b9" name="1em"/><!-- HANGUL SYLLABLE HYOB -->
+      <map code="0xd6ba" name="1em"/><!-- HANGUL SYLLABLE HYOBS -->
+      <map code="0xd6bb" name="1em"/><!-- HANGUL SYLLABLE HYOS -->
+      <map code="0xd6bc" name="1em"/><!-- HANGUL SYLLABLE HYOSS -->
+      <map code="0xd6bd" name="1em"/><!-- HANGUL SYLLABLE HYONG -->
+      <map code="0xd6be" name="1em"/><!-- HANGUL SYLLABLE HYOJ -->
+      <map code="0xd6bf" name="1em"/><!-- HANGUL SYLLABLE HYOC -->
+      <map code="0xd6c0" name="1em"/><!-- HANGUL SYLLABLE HYOK -->
+      <map code="0xd6c1" name="1em"/><!-- HANGUL SYLLABLE HYOT -->
+      <map code="0xd6c2" name="1em"/><!-- HANGUL SYLLABLE HYOP -->
+      <map code="0xd6c3" name="1em"/><!-- HANGUL SYLLABLE HYOH -->
+      <map code="0xd6c4" name="1em"/><!-- HANGUL SYLLABLE HU -->
+      <map code="0xd6c5" name="1em"/><!-- HANGUL SYLLABLE HUG -->
+      <map code="0xd6c6" name="1em"/><!-- HANGUL SYLLABLE HUGG -->
+      <map code="0xd6c7" name="1em"/><!-- HANGUL SYLLABLE HUGS -->
+      <map code="0xd6c8" name="1em"/><!-- HANGUL SYLLABLE HUN -->
+      <map code="0xd6c9" name="1em"/><!-- HANGUL SYLLABLE HUNJ -->
+      <map code="0xd6ca" name="1em"/><!-- HANGUL SYLLABLE HUNH -->
+      <map code="0xd6cb" name="1em"/><!-- HANGUL SYLLABLE HUD -->
+      <map code="0xd6cc" name="1em"/><!-- HANGUL SYLLABLE HUL -->
+      <map code="0xd6cd" name="1em"/><!-- HANGUL SYLLABLE HULG -->
+      <map code="0xd6ce" name="1em"/><!-- HANGUL SYLLABLE HULM -->
+      <map code="0xd6cf" name="1em"/><!-- HANGUL SYLLABLE HULB -->
+      <map code="0xd6d0" name="1em"/><!-- HANGUL SYLLABLE HULS -->
+      <map code="0xd6d1" name="1em"/><!-- HANGUL SYLLABLE HULT -->
+      <map code="0xd6d2" name="1em"/><!-- HANGUL SYLLABLE HULP -->
+      <map code="0xd6d3" name="1em"/><!-- HANGUL SYLLABLE HULH -->
+      <map code="0xd6d4" name="1em"/><!-- HANGUL SYLLABLE HUM -->
+      <map code="0xd6d5" name="1em"/><!-- HANGUL SYLLABLE HUB -->
+      <map code="0xd6d6" name="1em"/><!-- HANGUL SYLLABLE HUBS -->
+      <map code="0xd6d7" name="1em"/><!-- HANGUL SYLLABLE HUS -->
+      <map code="0xd6d8" name="1em"/><!-- HANGUL SYLLABLE HUSS -->
+      <map code="0xd6d9" name="1em"/><!-- HANGUL SYLLABLE HUNG -->
+      <map code="0xd6da" name="1em"/><!-- HANGUL SYLLABLE HUJ -->
+      <map code="0xd6db" name="1em"/><!-- HANGUL SYLLABLE HUC -->
+      <map code="0xd6dc" name="1em"/><!-- HANGUL SYLLABLE HUK -->
+      <map code="0xd6dd" name="1em"/><!-- HANGUL SYLLABLE HUT -->
+      <map code="0xd6de" name="1em"/><!-- HANGUL SYLLABLE HUP -->
+      <map code="0xd6df" name="1em"/><!-- HANGUL SYLLABLE HUH -->
+      <map code="0xd6e0" name="1em"/><!-- HANGUL SYLLABLE HWEO -->
+      <map code="0xd6e1" name="1em"/><!-- HANGUL SYLLABLE HWEOG -->
+      <map code="0xd6e2" name="1em"/><!-- HANGUL SYLLABLE HWEOGG -->
+      <map code="0xd6e3" name="1em"/><!-- HANGUL SYLLABLE HWEOGS -->
+      <map code="0xd6e4" name="1em"/><!-- HANGUL SYLLABLE HWEON -->
+      <map code="0xd6e5" name="1em"/><!-- HANGUL SYLLABLE HWEONJ -->
+      <map code="0xd6e6" name="1em"/><!-- HANGUL SYLLABLE HWEONH -->
+      <map code="0xd6e7" name="1em"/><!-- HANGUL SYLLABLE HWEOD -->
+      <map code="0xd6e8" name="1em"/><!-- HANGUL SYLLABLE HWEOL -->
+      <map code="0xd6e9" name="1em"/><!-- HANGUL SYLLABLE HWEOLG -->
+      <map code="0xd6ea" name="1em"/><!-- HANGUL SYLLABLE HWEOLM -->
+      <map code="0xd6eb" name="1em"/><!-- HANGUL SYLLABLE HWEOLB -->
+      <map code="0xd6ec" name="1em"/><!-- HANGUL SYLLABLE HWEOLS -->
+      <map code="0xd6ed" name="1em"/><!-- HANGUL SYLLABLE HWEOLT -->
+      <map code="0xd6ee" name="1em"/><!-- HANGUL SYLLABLE HWEOLP -->
+      <map code="0xd6ef" name="1em"/><!-- HANGUL SYLLABLE HWEOLH -->
+      <map code="0xd6f0" name="1em"/><!-- HANGUL SYLLABLE HWEOM -->
+      <map code="0xd6f1" name="1em"/><!-- HANGUL SYLLABLE HWEOB -->
+      <map code="0xd6f2" name="1em"/><!-- HANGUL SYLLABLE HWEOBS -->
+      <map code="0xd6f3" name="1em"/><!-- HANGUL SYLLABLE HWEOS -->
+      <map code="0xd6f4" name="1em"/><!-- HANGUL SYLLABLE HWEOSS -->
+      <map code="0xd6f5" name="1em"/><!-- HANGUL SYLLABLE HWEONG -->
+      <map code="0xd6f6" name="1em"/><!-- HANGUL SYLLABLE HWEOJ -->
+      <map code="0xd6f7" name="1em"/><!-- HANGUL SYLLABLE HWEOC -->
+      <map code="0xd6f8" name="1em"/><!-- HANGUL SYLLABLE HWEOK -->
+      <map code="0xd6f9" name="1em"/><!-- HANGUL SYLLABLE HWEOT -->
+      <map code="0xd6fa" name="1em"/><!-- HANGUL SYLLABLE HWEOP -->
+      <map code="0xd6fb" name="1em"/><!-- HANGUL SYLLABLE HWEOH -->
+      <map code="0xd6fc" name="1em"/><!-- HANGUL SYLLABLE HWE -->
+      <map code="0xd6fd" name="1em"/><!-- HANGUL SYLLABLE HWEG -->
+      <map code="0xd6fe" name="1em"/><!-- HANGUL SYLLABLE HWEGG -->
+      <map code="0xd6ff" name="1em"/><!-- HANGUL SYLLABLE HWEGS -->
+      <map code="0xd700" name="1em"/><!-- HANGUL SYLLABLE HWEN -->
+      <map code="0xd701" name="1em"/><!-- HANGUL SYLLABLE HWENJ -->
+      <map code="0xd702" name="1em"/><!-- HANGUL SYLLABLE HWENH -->
+      <map code="0xd703" name="1em"/><!-- HANGUL SYLLABLE HWED -->
+      <map code="0xd704" name="1em"/><!-- HANGUL SYLLABLE HWEL -->
+      <map code="0xd705" name="1em"/><!-- HANGUL SYLLABLE HWELG -->
+      <map code="0xd706" name="1em"/><!-- HANGUL SYLLABLE HWELM -->
+      <map code="0xd707" name="1em"/><!-- HANGUL SYLLABLE HWELB -->
+      <map code="0xd708" name="1em"/><!-- HANGUL SYLLABLE HWELS -->
+      <map code="0xd709" name="1em"/><!-- HANGUL SYLLABLE HWELT -->
+      <map code="0xd70a" name="1em"/><!-- HANGUL SYLLABLE HWELP -->
+      <map code="0xd70b" name="1em"/><!-- HANGUL SYLLABLE HWELH -->
+      <map code="0xd70c" name="1em"/><!-- HANGUL SYLLABLE HWEM -->
+      <map code="0xd70d" name="1em"/><!-- HANGUL SYLLABLE HWEB -->
+      <map code="0xd70e" name="1em"/><!-- HANGUL SYLLABLE HWEBS -->
+      <map code="0xd70f" name="1em"/><!-- HANGUL SYLLABLE HWES -->
+      <map code="0xd710" name="1em"/><!-- HANGUL SYLLABLE HWESS -->
+      <map code="0xd711" name="1em"/><!-- HANGUL SYLLABLE HWENG -->
+      <map code="0xd712" name="1em"/><!-- HANGUL SYLLABLE HWEJ -->
+      <map code="0xd713" name="1em"/><!-- HANGUL SYLLABLE HWEC -->
+      <map code="0xd714" name="1em"/><!-- HANGUL SYLLABLE HWEK -->
+      <map code="0xd715" name="1em"/><!-- HANGUL SYLLABLE HWET -->
+      <map code="0xd716" name="1em"/><!-- HANGUL SYLLABLE HWEP -->
+      <map code="0xd717" name="1em"/><!-- HANGUL SYLLABLE HWEH -->
+      <map code="0xd718" name="1em"/><!-- HANGUL SYLLABLE HWI -->
+      <map code="0xd719" name="1em"/><!-- HANGUL SYLLABLE HWIG -->
+      <map code="0xd71a" name="1em"/><!-- HANGUL SYLLABLE HWIGG -->
+      <map code="0xd71b" name="1em"/><!-- HANGUL SYLLABLE HWIGS -->
+      <map code="0xd71c" name="1em"/><!-- HANGUL SYLLABLE HWIN -->
+      <map code="0xd71d" name="1em"/><!-- HANGUL SYLLABLE HWINJ -->
+      <map code="0xd71e" name="1em"/><!-- HANGUL SYLLABLE HWINH -->
+      <map code="0xd71f" name="1em"/><!-- HANGUL SYLLABLE HWID -->
+      <map code="0xd720" name="1em"/><!-- HANGUL SYLLABLE HWIL -->
+      <map code="0xd721" name="1em"/><!-- HANGUL SYLLABLE HWILG -->
+      <map code="0xd722" name="1em"/><!-- HANGUL SYLLABLE HWILM -->
+      <map code="0xd723" name="1em"/><!-- HANGUL SYLLABLE HWILB -->
+      <map code="0xd724" name="1em"/><!-- HANGUL SYLLABLE HWILS -->
+      <map code="0xd725" name="1em"/><!-- HANGUL SYLLABLE HWILT -->
+      <map code="0xd726" name="1em"/><!-- HANGUL SYLLABLE HWILP -->
+      <map code="0xd727" name="1em"/><!-- HANGUL SYLLABLE HWILH -->
+      <map code="0xd728" name="1em"/><!-- HANGUL SYLLABLE HWIM -->
+      <map code="0xd729" name="1em"/><!-- HANGUL SYLLABLE HWIB -->
+      <map code="0xd72a" name="1em"/><!-- HANGUL SYLLABLE HWIBS -->
+      <map code="0xd72b" name="1em"/><!-- HANGUL SYLLABLE HWIS -->
+      <map code="0xd72c" name="1em"/><!-- HANGUL SYLLABLE HWISS -->
+      <map code="0xd72d" name="1em"/><!-- HANGUL SYLLABLE HWING -->
+      <map code="0xd72e" name="1em"/><!-- HANGUL SYLLABLE HWIJ -->
+      <map code="0xd72f" name="1em"/><!-- HANGUL SYLLABLE HWIC -->
+      <map code="0xd730" name="1em"/><!-- HANGUL SYLLABLE HWIK -->
+      <map code="0xd731" name="1em"/><!-- HANGUL SYLLABLE HWIT -->
+      <map code="0xd732" name="1em"/><!-- HANGUL SYLLABLE HWIP -->
+      <map code="0xd733" name="1em"/><!-- HANGUL SYLLABLE HWIH -->
+      <map code="0xd734" name="1em"/><!-- HANGUL SYLLABLE HYU -->
+      <map code="0xd735" name="1em"/><!-- HANGUL SYLLABLE HYUG -->
+      <map code="0xd736" name="1em"/><!-- HANGUL SYLLABLE HYUGG -->
+      <map code="0xd737" name="1em"/><!-- HANGUL SYLLABLE HYUGS -->
+      <map code="0xd738" name="1em"/><!-- HANGUL SYLLABLE HYUN -->
+      <map code="0xd739" name="1em"/><!-- HANGUL SYLLABLE HYUNJ -->
+      <map code="0xd73a" name="1em"/><!-- HANGUL SYLLABLE HYUNH -->
+      <map code="0xd73b" name="1em"/><!-- HANGUL SYLLABLE HYUD -->
+      <map code="0xd73c" name="1em"/><!-- HANGUL SYLLABLE HYUL -->
+      <map code="0xd73d" name="1em"/><!-- HANGUL SYLLABLE HYULG -->
+      <map code="0xd73e" name="1em"/><!-- HANGUL SYLLABLE HYULM -->
+      <map code="0xd73f" name="1em"/><!-- HANGUL SYLLABLE HYULB -->
+      <map code="0xd740" name="1em"/><!-- HANGUL SYLLABLE HYULS -->
+      <map code="0xd741" name="1em"/><!-- HANGUL SYLLABLE HYULT -->
+      <map code="0xd742" name="1em"/><!-- HANGUL SYLLABLE HYULP -->
+      <map code="0xd743" name="1em"/><!-- HANGUL SYLLABLE HYULH -->
+      <map code="0xd744" name="1em"/><!-- HANGUL SYLLABLE HYUM -->
+      <map code="0xd745" name="1em"/><!-- HANGUL SYLLABLE HYUB -->
+      <map code="0xd746" name="1em"/><!-- HANGUL SYLLABLE HYUBS -->
+      <map code="0xd747" name="1em"/><!-- HANGUL SYLLABLE HYUS -->
+      <map code="0xd748" name="1em"/><!-- HANGUL SYLLABLE HYUSS -->
+      <map code="0xd749" name="1em"/><!-- HANGUL SYLLABLE HYUNG -->
+      <map code="0xd74a" name="1em"/><!-- HANGUL SYLLABLE HYUJ -->
+      <map code="0xd74b" name="1em"/><!-- HANGUL SYLLABLE HYUC -->
+      <map code="0xd74c" name="1em"/><!-- HANGUL SYLLABLE HYUK -->
+      <map code="0xd74d" name="1em"/><!-- HANGUL SYLLABLE HYUT -->
+      <map code="0xd74e" name="1em"/><!-- HANGUL SYLLABLE HYUP -->
+      <map code="0xd74f" name="1em"/><!-- HANGUL SYLLABLE HYUH -->
+      <map code="0xd750" name="1em"/><!-- HANGUL SYLLABLE HEU -->
+      <map code="0xd751" name="1em"/><!-- HANGUL SYLLABLE HEUG -->
+      <map code="0xd752" name="1em"/><!-- HANGUL SYLLABLE HEUGG -->
+      <map code="0xd753" name="1em"/><!-- HANGUL SYLLABLE HEUGS -->
+      <map code="0xd754" name="1em"/><!-- HANGUL SYLLABLE HEUN -->
+      <map code="0xd755" name="1em"/><!-- HANGUL SYLLABLE HEUNJ -->
+      <map code="0xd756" name="1em"/><!-- HANGUL SYLLABLE HEUNH -->
+      <map code="0xd757" name="1em"/><!-- HANGUL SYLLABLE HEUD -->
+      <map code="0xd758" name="1em"/><!-- HANGUL SYLLABLE HEUL -->
+      <map code="0xd759" name="1em"/><!-- HANGUL SYLLABLE HEULG -->
+      <map code="0xd75a" name="1em"/><!-- HANGUL SYLLABLE HEULM -->
+      <map code="0xd75b" name="1em"/><!-- HANGUL SYLLABLE HEULB -->
+      <map code="0xd75c" name="1em"/><!-- HANGUL SYLLABLE HEULS -->
+      <map code="0xd75d" name="1em"/><!-- HANGUL SYLLABLE HEULT -->
+      <map code="0xd75e" name="1em"/><!-- HANGUL SYLLABLE HEULP -->
+      <map code="0xd75f" name="1em"/><!-- HANGUL SYLLABLE HEULH -->
+      <map code="0xd760" name="1em"/><!-- HANGUL SYLLABLE HEUM -->
+      <map code="0xd761" name="1em"/><!-- HANGUL SYLLABLE HEUB -->
+      <map code="0xd762" name="1em"/><!-- HANGUL SYLLABLE HEUBS -->
+      <map code="0xd763" name="1em"/><!-- HANGUL SYLLABLE HEUS -->
+      <map code="0xd764" name="1em"/><!-- HANGUL SYLLABLE HEUSS -->
+      <map code="0xd765" name="1em"/><!-- HANGUL SYLLABLE HEUNG -->
+      <map code="0xd766" name="1em"/><!-- HANGUL SYLLABLE HEUJ -->
+      <map code="0xd767" name="1em"/><!-- HANGUL SYLLABLE HEUC -->
+      <map code="0xd768" name="1em"/><!-- HANGUL SYLLABLE HEUK -->
+      <map code="0xd769" name="1em"/><!-- HANGUL SYLLABLE HEUT -->
+      <map code="0xd76a" name="1em"/><!-- HANGUL SYLLABLE HEUP -->
+      <map code="0xd76b" name="1em"/><!-- HANGUL SYLLABLE HEUH -->
+      <map code="0xd76c" name="1em"/><!-- HANGUL SYLLABLE HYI -->
+      <map code="0xd76d" name="1em"/><!-- HANGUL SYLLABLE HYIG -->
+      <map code="0xd76e" name="1em"/><!-- HANGUL SYLLABLE HYIGG -->
+      <map code="0xd76f" name="1em"/><!-- HANGUL SYLLABLE HYIGS -->
+      <map code="0xd770" name="1em"/><!-- HANGUL SYLLABLE HYIN -->
+      <map code="0xd771" name="1em"/><!-- HANGUL SYLLABLE HYINJ -->
+      <map code="0xd772" name="1em"/><!-- HANGUL SYLLABLE HYINH -->
+      <map code="0xd773" name="1em"/><!-- HANGUL SYLLABLE HYID -->
+      <map code="0xd774" name="1em"/><!-- HANGUL SYLLABLE HYIL -->
+      <map code="0xd775" name="1em"/><!-- HANGUL SYLLABLE HYILG -->
+      <map code="0xd776" name="1em"/><!-- HANGUL SYLLABLE HYILM -->
+      <map code="0xd777" name="1em"/><!-- HANGUL SYLLABLE HYILB -->
+      <map code="0xd778" name="1em"/><!-- HANGUL SYLLABLE HYILS -->
+      <map code="0xd779" name="1em"/><!-- HANGUL SYLLABLE HYILT -->
+      <map code="0xd77a" name="1em"/><!-- HANGUL SYLLABLE HYILP -->
+      <map code="0xd77b" name="1em"/><!-- HANGUL SYLLABLE HYILH -->
+      <map code="0xd77c" name="1em"/><!-- HANGUL SYLLABLE HYIM -->
+      <map code="0xd77d" name="1em"/><!-- HANGUL SYLLABLE HYIB -->
+      <map code="0xd77e" name="1em"/><!-- HANGUL SYLLABLE HYIBS -->
+      <map code="0xd77f" name="1em"/><!-- HANGUL SYLLABLE HYIS -->
+      <map code="0xd780" name="1em"/><!-- HANGUL SYLLABLE HYISS -->
+      <map code="0xd781" name="1em"/><!-- HANGUL SYLLABLE HYING -->
+      <map code="0xd782" name="1em"/><!-- HANGUL SYLLABLE HYIJ -->
+      <map code="0xd783" name="1em"/><!-- HANGUL SYLLABLE HYIC -->
+      <map code="0xd784" name="1em"/><!-- HANGUL SYLLABLE HYIK -->
+      <map code="0xd785" name="1em"/><!-- HANGUL SYLLABLE HYIT -->
+      <map code="0xd786" name="1em"/><!-- HANGUL SYLLABLE HYIP -->
+      <map code="0xd787" name="1em"/><!-- HANGUL SYLLABLE HYIH -->
+      <map code="0xd788" name="1em"/><!-- HANGUL SYLLABLE HI -->
+      <map code="0xd789" name="1em"/><!-- HANGUL SYLLABLE HIG -->
+      <map code="0xd78a" name="1em"/><!-- HANGUL SYLLABLE HIGG -->
+      <map code="0xd78b" name="1em"/><!-- HANGUL SYLLABLE HIGS -->
+      <map code="0xd78c" name="1em"/><!-- HANGUL SYLLABLE HIN -->
+      <map code="0xd78d" name="1em"/><!-- HANGUL SYLLABLE HINJ -->
+      <map code="0xd78e" name="1em"/><!-- HANGUL SYLLABLE HINH -->
+      <map code="0xd78f" name="1em"/><!-- HANGUL SYLLABLE HID -->
+      <map code="0xd790" name="1em"/><!-- HANGUL SYLLABLE HIL -->
+      <map code="0xd791" name="1em"/><!-- HANGUL SYLLABLE HILG -->
+      <map code="0xd792" name="1em"/><!-- HANGUL SYLLABLE HILM -->
+      <map code="0xd793" name="1em"/><!-- HANGUL SYLLABLE HILB -->
+      <map code="0xd794" name="1em"/><!-- HANGUL SYLLABLE HILS -->
+      <map code="0xd795" name="1em"/><!-- HANGUL SYLLABLE HILT -->
+      <map code="0xd796" name="1em"/><!-- HANGUL SYLLABLE HILP -->
+      <map code="0xd797" name="1em"/><!-- HANGUL SYLLABLE HILH -->
+      <map code="0xd798" name="1em"/><!-- HANGUL SYLLABLE HIM -->
+      <map code="0xd799" name="1em"/><!-- HANGUL SYLLABLE HIB -->
+      <map code="0xd79a" name="1em"/><!-- HANGUL SYLLABLE HIBS -->
+      <map code="0xd79b" name="1em"/><!-- HANGUL SYLLABLE HIS -->
+      <map code="0xd79c" name="1em"/><!-- HANGUL SYLLABLE HISS -->
+      <map code="0xd79d" name="1em"/><!-- HANGUL SYLLABLE HING -->
+      <map code="0xd79e" name="1em"/><!-- HANGUL SYLLABLE HIJ -->
+      <map code="0xd79f" name="1em"/><!-- HANGUL SYLLABLE HIC -->
+      <map code="0xd7a0" name="1em"/><!-- HANGUL SYLLABLE HIK -->
+      <map code="0xd7a1" name="1em"/><!-- HANGUL SYLLABLE HIT -->
+      <map code="0xd7a2" name="1em"/><!-- HANGUL SYLLABLE HIP -->
+      <map code="0xd7a3" name="1em"/><!-- HANGUL SYLLABLE HIH -->
+      <map code="0xd7b0" name="1em"/><!-- HANGUL JUNGSEONG O-YEO -->
+      <map code="0xd7b1" name="1em"/><!-- HANGUL JUNGSEONG O-O-I -->
+      <map code="0xd7b2" name="1em"/><!-- HANGUL JUNGSEONG YO-A -->
+      <map code="0xd7b3" name="1em"/><!-- HANGUL JUNGSEONG YO-AE -->
+      <map code="0xd7b4" name="1em"/><!-- HANGUL JUNGSEONG YO-EO -->
+      <map code="0xd7b5" name="1em"/><!-- HANGUL JUNGSEONG U-YEO -->
+      <map code="0xd7b6" name="1em"/><!-- HANGUL JUNGSEONG U-I-I -->
+      <map code="0xd7b7" name="1em"/><!-- HANGUL JUNGSEONG YU-AE -->
+      <map code="0xd7b8" name="1em"/><!-- HANGUL JUNGSEONG YU-O -->
+      <map code="0xd7b9" name="1em"/><!-- HANGUL JUNGSEONG EU-A -->
+      <map code="0xd7ba" name="1em"/><!-- HANGUL JUNGSEONG EU-EO -->
+      <map code="0xd7bb" name="1em"/><!-- HANGUL JUNGSEONG EU-E -->
+      <map code="0xd7bc" name="1em"/><!-- HANGUL JUNGSEONG EU-O -->
+      <map code="0xd7bd" name="1em"/><!-- HANGUL JUNGSEONG I-YA-O -->
+      <map code="0xd7be" name="1em"/><!-- HANGUL JUNGSEONG I-YAE -->
+      <map code="0xd7bf" name="1em"/><!-- HANGUL JUNGSEONG I-YEO -->
+      <map code="0xd7c0" name="1em"/><!-- HANGUL JUNGSEONG I-YE -->
+      <map code="0xd7c1" name="1em"/><!-- HANGUL JUNGSEONG I-O-I -->
+      <map code="0xd7c2" name="1em"/><!-- HANGUL JUNGSEONG I-YO -->
+      <map code="0xd7c3" name="1em"/><!-- HANGUL JUNGSEONG I-YU -->
+      <map code="0xd7c4" name="1em"/><!-- HANGUL JUNGSEONG I-I -->
+      <map code="0xd7c5" name="1em"/><!-- HANGUL JUNGSEONG ARAEA-A -->
+      <map code="0xd7c6" name="1em"/><!-- HANGUL JUNGSEONG ARAEA-E -->
+      <map code="0xd7cb" name="1em"/><!-- HANGUL JONGSEONG NIEUN-RIEUL -->
+      <map code="0xd7cc" name="1em"/><!-- HANGUL JONGSEONG NIEUN-CHIEUCH -->
+      <map code="0xd7cd" name="1em"/><!-- HANGUL JONGSEONG SSANGTIKEUT -->
+      <map code="0xd7ce" name="1em"/><!-- HANGUL JONGSEONG SSANGTIKEUT-PIEUP -->
+      <map code="0xd7cf" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-PIEUP -->
+      <map code="0xd7d0" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-SIOS -->
+      <map code="0xd7d1" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK -->
+      <map code="0xd7d2" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-CIEUC -->
+      <map code="0xd7d3" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-CHIEUCH -->
+      <map code="0xd7d4" name="1em"/><!-- HANGUL JONGSEONG TIKEUT-THIEUTH -->
+      <map code="0xd7d5" name="1em"/><!-- HANGUL JONGSEONG RIEUL-SSANGKIYEOK -->
+      <map code="0xd7d6" name="1em"/><!-- HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH -->
+      <map code="0xd7d7" name="1em"/><!-- HANGUL JONGSEONG SSANGRIEUL-KHIEUKH -->
+      <map code="0xd7d8" name="1em"/><!-- HANGUL JONGSEONG RIEUL-MIEUM-HIEUH -->
+      <map code="0xd7d9" name="1em"/><!-- HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT -->
+      <map code="0xd7da" name="1em"/><!-- HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH -->
+      <map code="0xd7db" name="1em"/><!-- HANGUL JONGSEONG RIEUL-YESIEUNG -->
+      <map code="0xd7dc" name="1em"/><!-- HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH -->
+      <map code="0xd7dd" name="1em"/><!-- HANGUL JONGSEONG KAPYEOUNRIEUL -->
+      <map code="0xd7de" name="1em"/><!-- HANGUL JONGSEONG MIEUM-NIEUN -->
+      <map code="0xd7df" name="1em"/><!-- HANGUL JONGSEONG MIEUM-SSANGNIEUN -->
+      <map code="0xd7e0" name="1em"/><!-- HANGUL JONGSEONG SSANGMIEUM -->
+      <map code="0xd7e1" name="1em"/><!-- HANGUL JONGSEONG MIEUM-PIEUP-SIOS -->
+      <map code="0xd7e2" name="1em"/><!-- HANGUL JONGSEONG MIEUM-CIEUC -->
+      <map code="0xd7e3" name="1em"/><!-- HANGUL JONGSEONG PIEUP-TIKEUT -->
+      <map code="0xd7e4" name="1em"/><!-- HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH -->
+      <map code="0xd7e5" name="1em"/><!-- HANGUL JONGSEONG PIEUP-MIEUM -->
+      <map code="0xd7e6" name="1em"/><!-- HANGUL JONGSEONG SSANGPIEUP -->
+      <map code="0xd7e7" name="1em"/><!-- HANGUL JONGSEONG PIEUP-SIOS-TIKEUT -->
+      <map code="0xd7e8" name="1em"/><!-- HANGUL JONGSEONG PIEUP-CIEUC -->
+      <map code="0xd7e9" name="1em"/><!-- HANGUL JONGSEONG PIEUP-CHIEUCH -->
+      <map code="0xd7ea" name="1em"/><!-- HANGUL JONGSEONG SIOS-MIEUM -->
+      <map code="0xd7eb" name="1em"/><!-- HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP -->
+      <map code="0xd7ec" name="1em"/><!-- HANGUL JONGSEONG SSANGSIOS-KIYEOK -->
+      <map code="0xd7ed" name="1em"/><!-- HANGUL JONGSEONG SSANGSIOS-TIKEUT -->
+      <map code="0xd7ee" name="1em"/><!-- HANGUL JONGSEONG SIOS-PANSIOS -->
+      <map code="0xd7ef" name="1em"/><!-- HANGUL JONGSEONG SIOS-CIEUC -->
+      <map code="0xd7f0" name="1em"/><!-- HANGUL JONGSEONG SIOS-CHIEUCH -->
+      <map code="0xd7f1" name="1em"/><!-- HANGUL JONGSEONG SIOS-THIEUTH -->
+      <map code="0xd7f2" name="1em"/><!-- HANGUL JONGSEONG SIOS-HIEUH -->
+      <map code="0xd7f3" name="1em"/><!-- HANGUL JONGSEONG PANSIOS-PIEUP -->
+      <map code="0xd7f4" name="1em"/><!-- HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP -->
+      <map code="0xd7f5" name="1em"/><!-- HANGUL JONGSEONG YESIEUNG-MIEUM -->
+      <map code="0xd7f6" name="1em"/><!-- HANGUL JONGSEONG YESIEUNG-HIEUH -->
+      <map code="0xd7f7" name="1em"/><!-- HANGUL JONGSEONG CIEUC-PIEUP -->
+      <map code="0xd7f8" name="1em"/><!-- HANGUL JONGSEONG CIEUC-SSANGPIEUP -->
+      <map code="0xd7f9" name="1em"/><!-- HANGUL JONGSEONG SSANGCIEUC -->
+      <map code="0xd7fa" name="1em"/><!-- HANGUL JONGSEONG PHIEUPH-SIOS -->
+      <map code="0xd7fb" name="1em"/><!-- HANGUL JONGSEONG PHIEUPH-THIEUTH -->
+
+    </cmap_format_12>
+  </cmap>
+
+  <loca>
+    <!-- The 'loca' table will be calculated by the compiler -->
+  </loca>
+
+  <glyf>
+    <TTGlyph name=".notdef" xMin="0" yMin="0" xMax="0" yMax="0" />
+    <TTGlyph name="1em" xMin="0" yMin="0" xMax="100" yMax="100">
+        <contour>
+            <pt x="0" y="0" on="1" />
+            <pt x="100" y="0" on="1" />
+            <pt x="100" y="100" on="1" />
+            <pt x="0" y="100" on="1" />
+        </contour>
+        <instructions><assembly></assembly></instructions>
+    </TTGlyph>
+  </glyf>
+
+  <name>
+    <namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Font for Hiragana
+    </namerecord>
+    <namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Regular
+    </namerecord>
+    <namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Font for Hiragana
+    </namerecord>
+    <namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      SampleFont-Regular
+    </namerecord>
+    <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+      Regular
+    </namerecord>
+    <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+      SampleFont-Regular
+    </namerecord>
+  </name>
+
+  <post>
+    <formatType value="3.0"/>
+    <italicAngle value="0.0"/>
+    <underlinePosition value="-75"/>
+    <underlineThickness value="50"/>
+    <isFixedPitch value="0"/>
+    <minMemType42 value="0"/>
+    <maxMemType42 value="0"/>
+    <minMemType1 value="0"/>
+    <maxMemType1 value="0"/>
+  </post>
+
+</ttFont>
diff --git a/tests/data/Japanese.ttf b/tests/data/Japanese.ttf
new file mode 100644
index 0000000..5fb9de0
--- /dev/null
+++ b/tests/data/Japanese.ttf
Binary files differ
diff --git a/tests/data/Japanese.ttx b/tests/data/Japanese.ttx
new file mode 100644
index 0000000..c7c5416
--- /dev/null
+++ b/tests/data/Japanese.ttx
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.0">
+
+  <GlyphOrder>
+    <GlyphID id="0" name=".notdef"/>
+    <GlyphID id="1" name="1em"/>
+  </GlyphOrder>
+
+  <head>
+    <tableVersion value="1.0"/>
+    <fontRevision value="1.0"/>
+    <checkSumAdjustment value="0x640cdb2f"/>
+    <magicNumber value="0x5f0f3cf5"/>
+    <flags value="00000000 00000011"/>
+    <unitsPerEm value="100"/>
+    <created value="Fri Mar 17 07:26:00 2017"/>
+    <macStyle value="00000000 00000000"/>
+    <lowestRecPPEM value="7"/>
+    <fontDirectionHint value="2"/>
+    <glyphDataFormat value="0"/>
+  </head>
+
+  <hhea>
+    <tableVersion value="0x00010000"/>
+    <ascent value="0"/>
+    <descent value="0"/>
+    <lineGap value="0"/>
+    <caretSlopeRise value="1"/>
+    <caretSlopeRun value="0"/>
+    <caretOffset value="0"/>
+    <reserved0 value="0"/>
+    <reserved1 value="0"/>
+    <reserved2 value="0"/>
+    <reserved3 value="0"/>
+    <metricDataFormat value="0"/>
+  </hhea>
+
+  <maxp>
+    <tableVersion value="0x10000"/>
+    <maxZones value="0"/>
+    <maxTwilightPoints value="0"/>
+    <maxStorage value="0"/>
+    <maxFunctionDefs value="0"/>
+    <maxInstructionDefs value="0"/>
+    <maxStackElements value="0"/>
+    <maxSizeOfInstructions value="0"/>
+    <maxComponentElements value="0"/>
+  </maxp>
+
+  <OS_2>
+    <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+         will be recalculated by the compiler -->
+    <version value="3"/>
+    <xAvgCharWidth value="594"/>
+    <usWeightClass value="400"/>
+    <usWidthClass value="5"/>
+    <fsType value="00000000 00001000"/>
+    <ySubscriptXSize value="650"/>
+    <ySubscriptYSize value="600"/>
+    <ySubscriptXOffset value="0"/>
+    <ySubscriptYOffset value="75"/>
+    <ySuperscriptXSize value="650"/>
+    <ySuperscriptYSize value="600"/>
+    <ySuperscriptXOffset value="0"/>
+    <ySuperscriptYOffset value="350"/>
+    <yStrikeoutSize value="50"/>
+    <yStrikeoutPosition value="300"/>
+    <sFamilyClass value="0"/>
+    <panose>
+      <bFamilyType value="0"/>
+      <bSerifStyle value="0"/>
+      <bWeight value="5"/>
+      <bProportion value="0"/>
+      <bContrast value="0"/>
+      <bStrokeVariation value="0"/>
+      <bArmStyle value="0"/>
+      <bLetterForm value="0"/>
+      <bMidline value="0"/>
+      <bXHeight value="0"/>
+    </panose>
+    <ulUnicodeRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+    <achVendID value="UKWN"/>
+    <fsSelection value="00000000 01000000"/>
+    <usFirstCharIndex value="32"/>
+    <usLastCharIndex value="122"/>
+    <sTypoAscender value="800"/>
+    <sTypoDescender value="-200"/>
+    <sTypoLineGap value="200"/>
+    <usWinAscent value="1000"/>
+    <usWinDescent value="200"/>
+    <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+    <sxHeight value="500"/>
+    <sCapHeight value="700"/>
+    <usDefaultChar value="0"/>
+    <usBreakChar value="32"/>
+    <usMaxContext value="0"/>
+  </OS_2>
+
+  <hmtx>
+    <mtx name=".notdef" width="50" lsb="0"/>
+    <mtx name="1em" width="100" lsb="0"/>
+  </hmtx>
+
+  <cmap>
+    <tableVersion version="0"/>
+    <cmap_format_12 format="12" reserved="0" length="6" nGroups="1" platformID="3" platEncID="10" language="0">
+      <!-- CJK Symbols -->
+      <map code="0x3000" name="1em" /> <!--  IDEOGRAPHIC SPACE -->
+      <map code="0x3001" name="1em" /> <!--  IDEOGRAPHIC COMMA -->
+      <map code="0x3002" name="1em" /> <!--  IDEOGRAPHIC FULL STOP -->
+
+      <!-- All Hiragana Ltters -->
+      <map code="0x3041" name="1em" /> <!--  HIRAGANA LETTER SMALL A -->
+      <map code="0x3042" name="1em" /> <!--  HIRAGANA LETTER A -->
+      <map code="0x3043" name="1em" /> <!--  HIRAGANA LETTER SMALL I -->
+      <map code="0x3044" name="1em" /> <!--  HIRAGANA LETTER I -->
+      <map code="0x3045" name="1em" /> <!--  HIRAGANA LETTER SMALL U -->
+      <map code="0x3046" name="1em" /> <!--  HIRAGANA LETTER U -->
+      <map code="0x3047" name="1em" /> <!--  HIRAGANA LETTER SMALL E -->
+      <map code="0x3048" name="1em" /> <!--  HIRAGANA LETTER E -->
+      <map code="0x3049" name="1em" /> <!--  HIRAGANA LETTER SMALL O -->
+      <map code="0x304A" name="1em" /> <!--  HIRAGANA LETTER O -->
+      <map code="0x304B" name="1em" /> <!--  HIRAGANA LETTER KA -->
+      <map code="0x304C" name="1em" /> <!--  HIRAGANA LETTER GA -->
+      <map code="0x304D" name="1em" /> <!--  HIRAGANA LETTER KI -->
+      <map code="0x304E" name="1em" /> <!--  HIRAGANA LETTER GI -->
+      <map code="0x304F" name="1em" /> <!--  HIRAGANA LETTER KU -->
+      <map code="0x3050" name="1em" /> <!--  HIRAGANA LETTER GU -->
+      <map code="0x3051" name="1em" /> <!--  HIRAGANA LETTER KE -->
+      <map code="0x3052" name="1em" /> <!--  HIRAGANA LETTER GE -->
+      <map code="0x3053" name="1em" /> <!--  HIRAGANA LETTER KO -->
+      <map code="0x3054" name="1em" /> <!--  HIRAGANA LETTER GO -->
+      <map code="0x3055" name="1em" /> <!--  HIRAGANA LETTER SA -->
+      <map code="0x3056" name="1em" /> <!--  HIRAGANA LETTER ZA -->
+      <map code="0x3057" name="1em" /> <!--  HIRAGANA LETTER SI -->
+      <map code="0x3058" name="1em" /> <!--  HIRAGANA LETTER ZI -->
+      <map code="0x3059" name="1em" /> <!--  HIRAGANA LETTER SU -->
+      <map code="0x305A" name="1em" /> <!--  HIRAGANA LETTER ZU -->
+      <map code="0x305B" name="1em" /> <!--  HIRAGANA LETTER SE -->
+      <map code="0x305C" name="1em" /> <!--  HIRAGANA LETTER ZE -->
+      <map code="0x305D" name="1em" /> <!--  HIRAGANA LETTER SO -->
+      <map code="0x305E" name="1em" /> <!--  HIRAGANA LETTER ZO -->
+      <map code="0x305F" name="1em" /> <!--  HIRAGANA LETTER TA -->
+      <map code="0x3060" name="1em" /> <!--  HIRAGANA LETTER DA -->
+      <map code="0x3061" name="1em" /> <!--  HIRAGANA LETTER TI -->
+      <map code="0x3062" name="1em" /> <!--  HIRAGANA LETTER DI -->
+      <map code="0x3063" name="1em" /> <!--  HIRAGANA LETTER SMALL TU -->
+      <map code="0x3064" name="1em" /> <!--  HIRAGANA LETTER TU -->
+      <map code="0x3065" name="1em" /> <!--  HIRAGANA LETTER DU -->
+      <map code="0x3066" name="1em" /> <!--  HIRAGANA LETTER TE -->
+      <map code="0x3067" name="1em" /> <!--  HIRAGANA LETTER DE -->
+      <map code="0x3068" name="1em" /> <!--  HIRAGANA LETTER TO -->
+      <map code="0x3069" name="1em" /> <!--  HIRAGANA LETTER DO -->
+      <map code="0x306A" name="1em" /> <!--  HIRAGANA LETTER NA -->
+      <map code="0x306B" name="1em" /> <!--  HIRAGANA LETTER NI -->
+      <map code="0x306C" name="1em" /> <!--  HIRAGANA LETTER NU -->
+      <map code="0x306D" name="1em" /> <!--  HIRAGANA LETTER NE -->
+      <map code="0x306E" name="1em" /> <!--  HIRAGANA LETTER NO -->
+      <map code="0x306F" name="1em" /> <!--  HIRAGANA LETTER HA -->
+      <map code="0x3070" name="1em" /> <!--  HIRAGANA LETTER BA -->
+      <map code="0x3071" name="1em" /> <!--  HIRAGANA LETTER PA -->
+      <map code="0x3072" name="1em" /> <!--  HIRAGANA LETTER HI -->
+      <map code="0x3073" name="1em" /> <!--  HIRAGANA LETTER BI -->
+      <map code="0x3074" name="1em" /> <!--  HIRAGANA LETTER PI -->
+      <map code="0x3075" name="1em" /> <!--  HIRAGANA LETTER HU -->
+      <map code="0x3076" name="1em" /> <!--  HIRAGANA LETTER BU -->
+      <map code="0x3077" name="1em" /> <!--  HIRAGANA LETTER PU -->
+      <map code="0x3078" name="1em" /> <!--  HIRAGANA LETTER HE -->
+      <map code="0x3079" name="1em" /> <!--  HIRAGANA LETTER BE -->
+      <map code="0x307A" name="1em" /> <!--  HIRAGANA LETTER PE -->
+      <map code="0x307B" name="1em" /> <!--  HIRAGANA LETTER HO -->
+      <map code="0x307C" name="1em" /> <!--  HIRAGANA LETTER BO -->
+      <map code="0x307D" name="1em" /> <!--  HIRAGANA LETTER PO -->
+      <map code="0x307E" name="1em" /> <!--  HIRAGANA LETTER MA -->
+      <map code="0x307F" name="1em" /> <!--  HIRAGANA LETTER MI -->
+      <map code="0x3080" name="1em" /> <!--  HIRAGANA LETTER MU -->
+      <map code="0x3081" name="1em" /> <!--  HIRAGANA LETTER ME -->
+      <map code="0x3082" name="1em" /> <!--  HIRAGANA LETTER MO -->
+      <map code="0x3083" name="1em" /> <!--  HIRAGANA LETTER SMALL YA -->
+      <map code="0x3084" name="1em" /> <!--  HIRAGANA LETTER YA -->
+      <map code="0x3085" name="1em" /> <!--  HIRAGANA LETTER SMALL YU -->
+      <map code="0x3086" name="1em" /> <!--  HIRAGANA LETTER YU -->
+      <map code="0x3087" name="1em" /> <!--  HIRAGANA LETTER SMALL YO -->
+      <map code="0x3088" name="1em" /> <!--  HIRAGANA LETTER YO -->
+      <map code="0x3089" name="1em" /> <!--  HIRAGANA LETTER RA -->
+      <map code="0x308A" name="1em" /> <!--  HIRAGANA LETTER RI -->
+      <map code="0x308B" name="1em" /> <!--  HIRAGANA LETTER RU -->
+      <map code="0x308C" name="1em" /> <!--  HIRAGANA LETTER RE -->
+      <map code="0x308D" name="1em" /> <!--  HIRAGANA LETTER RO -->
+      <map code="0x308E" name="1em" /> <!--  HIRAGANA LETTER SMALL WA -->
+      <map code="0x308F" name="1em" /> <!--  HIRAGANA LETTER WA -->
+      <map code="0x3090" name="1em" /> <!--  HIRAGANA LETTER WI -->
+      <map code="0x3091" name="1em" /> <!--  HIRAGANA LETTER WE -->
+      <map code="0x3092" name="1em" /> <!--  HIRAGANA LETTER WO -->
+      <map code="0x3093" name="1em" /> <!--  HIRAGANA LETTER N -->
+      <map code="0x3094" name="1em" /> <!--  HIRAGANA LETTER VU -->
+      <map code="0x3095" name="1em" /> <!--  HIRAGANA LETTER SMALL KA -->
+      <map code="0x3096" name="1em" /> <!--  HIRAGANA LETTER SMALL KE -->
+      <map code="0x3099" name="1em" /> <!--  COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK -->
+      <map code="0x309A" name="1em" /> <!--  COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -->
+      <map code="0x309B" name="1em" /> <!--  KATAKANA-HIRAGANA VOICED SOUND MARK -->
+      <map code="0x309C" name="1em" /> <!--  KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -->
+      <map code="0x309D" name="1em" /> <!--  HIRAGANA ITERATION MARK -->
+      <map code="0x309E" name="1em" /> <!--  HIRAGANA VOICED ITERATION MARK -->
+      <map code="0x309F" name="1em" /> <!--  HIRAGANA DIGRAPH YORI -->
+
+      <!-- All Hiragana Ltters -->
+      <map code="0x30A0" name="1em" /> <!--  KATAKANA-HIRAGANA DOUBLE HYPHEN -->
+      <map code="0x30A1" name="1em" /> <!--  KATAKANA LETTER SMALL A -->
+      <map code="0x30A2" name="1em" /> <!--  KATAKANA LETTER A -->
+      <map code="0x30A3" name="1em" /> <!--  KATAKANA LETTER SMALL I -->
+      <map code="0x30A4" name="1em" /> <!--  KATAKANA LETTER I -->
+      <map code="0x30A5" name="1em" /> <!--  KATAKANA LETTER SMALL U -->
+      <map code="0x30A6" name="1em" /> <!--  KATAKANA LETTER U -->
+      <map code="0x30A7" name="1em" /> <!--  KATAKANA LETTER SMALL E -->
+      <map code="0x30A8" name="1em" /> <!--  KATAKANA LETTER E -->
+      <map code="0x30A9" name="1em" /> <!--  KATAKANA LETTER SMALL O -->
+      <map code="0x30AA" name="1em" /> <!--  KATAKANA LETTER O -->
+      <map code="0x30AB" name="1em" /> <!--  KATAKANA LETTER KA -->
+      <map code="0x30AC" name="1em" /> <!--  KATAKANA LETTER GA -->
+      <map code="0x30AD" name="1em" /> <!--  KATAKANA LETTER KI -->
+      <map code="0x30AE" name="1em" /> <!--  KATAKANA LETTER GI -->
+      <map code="0x30AF" name="1em" /> <!--  KATAKANA LETTER KU -->
+      <map code="0x30B0" name="1em" /> <!--  KATAKANA LETTER GU -->
+      <map code="0x30B1" name="1em" /> <!--  KATAKANA LETTER KE -->
+      <map code="0x30B2" name="1em" /> <!--  KATAKANA LETTER GE -->
+      <map code="0x30B3" name="1em" /> <!--  KATAKANA LETTER KO -->
+      <map code="0x30B4" name="1em" /> <!--  KATAKANA LETTER GO -->
+      <map code="0x30B5" name="1em" /> <!--  KATAKANA LETTER SA -->
+      <map code="0x30B6" name="1em" /> <!--  KATAKANA LETTER ZA -->
+      <map code="0x30B7" name="1em" /> <!--  KATAKANA LETTER SI -->
+      <map code="0x30B8" name="1em" /> <!--  KATAKANA LETTER ZI -->
+      <map code="0x30B9" name="1em" /> <!--  KATAKANA LETTER SU -->
+      <map code="0x30BA" name="1em" /> <!--  KATAKANA LETTER ZU -->
+      <map code="0x30BB" name="1em" /> <!--  KATAKANA LETTER SE -->
+      <map code="0x30BC" name="1em" /> <!--  KATAKANA LETTER ZE -->
+      <map code="0x30BD" name="1em" /> <!--  KATAKANA LETTER SO -->
+      <map code="0x30BE" name="1em" /> <!--  KATAKANA LETTER ZO -->
+      <map code="0x30BF" name="1em" /> <!--  KATAKANA LETTER TA -->
+      <map code="0x30C0" name="1em" /> <!--  KATAKANA LETTER DA -->
+      <map code="0x30C1" name="1em" /> <!--  KATAKANA LETTER TI -->
+      <map code="0x30C2" name="1em" /> <!--  KATAKANA LETTER DI -->
+      <map code="0x30C3" name="1em" /> <!--  KATAKANA LETTER SMALL TU -->
+      <map code="0x30C4" name="1em" /> <!--  KATAKANA LETTER TU -->
+      <map code="0x30C5" name="1em" /> <!--  KATAKANA LETTER DU -->
+      <map code="0x30C6" name="1em" /> <!--  KATAKANA LETTER TE -->
+      <map code="0x30C7" name="1em" /> <!--  KATAKANA LETTER DE -->
+      <map code="0x30C8" name="1em" /> <!--  KATAKANA LETTER TO -->
+      <map code="0x30C9" name="1em" /> <!--  KATAKANA LETTER DO -->
+      <map code="0x30CA" name="1em" /> <!--  KATAKANA LETTER NA -->
+      <map code="0x30CB" name="1em" /> <!--  KATAKANA LETTER NI -->
+      <map code="0x30CC" name="1em" /> <!--  KATAKANA LETTER NU -->
+      <map code="0x30CD" name="1em" /> <!--  KATAKANA LETTER NE -->
+      <map code="0x30CE" name="1em" /> <!--  KATAKANA LETTER NO -->
+      <map code="0x30CF" name="1em" /> <!--  KATAKANA LETTER HA -->
+      <map code="0x30D0" name="1em" /> <!--  KATAKANA LETTER BA -->
+      <map code="0x30D1" name="1em" /> <!--  KATAKANA LETTER PA -->
+      <map code="0x30D2" name="1em" /> <!--  KATAKANA LETTER HI -->
+      <map code="0x30D3" name="1em" /> <!--  KATAKANA LETTER BI -->
+      <map code="0x30D4" name="1em" /> <!--  KATAKANA LETTER PI -->
+      <map code="0x30D5" name="1em" /> <!--  KATAKANA LETTER HU -->
+      <map code="0x30D6" name="1em" /> <!--  KATAKANA LETTER BU -->
+      <map code="0x30D7" name="1em" /> <!--  KATAKANA LETTER PU -->
+      <map code="0x30D8" name="1em" /> <!--  KATAKANA LETTER HE -->
+      <map code="0x30D9" name="1em" /> <!--  KATAKANA LETTER BE -->
+      <map code="0x30DA" name="1em" /> <!--  KATAKANA LETTER PE -->
+      <map code="0x30DB" name="1em" /> <!--  KATAKANA LETTER HO -->
+      <map code="0x30DC" name="1em" /> <!--  KATAKANA LETTER BO -->
+      <map code="0x30DD" name="1em" /> <!--  KATAKANA LETTER PO -->
+      <map code="0x30DE" name="1em" /> <!--  KATAKANA LETTER MA -->
+      <map code="0x30DF" name="1em" /> <!--  KATAKANA LETTER MI -->
+      <map code="0x30E0" name="1em" /> <!--  KATAKANA LETTER MU -->
+      <map code="0x30E1" name="1em" /> <!--  KATAKANA LETTER ME -->
+      <map code="0x30E2" name="1em" /> <!--  KATAKANA LETTER MO -->
+      <map code="0x30E3" name="1em" /> <!--  KATAKANA LETTER SMALL YA -->
+      <map code="0x30E4" name="1em" /> <!--  KATAKANA LETTER YA -->
+      <map code="0x30E5" name="1em" /> <!--  KATAKANA LETTER SMALL YU -->
+      <map code="0x30E6" name="1em" /> <!--  KATAKANA LETTER YU -->
+      <map code="0x30E7" name="1em" /> <!--  KATAKANA LETTER SMALL YO -->
+      <map code="0x30E8" name="1em" /> <!--  KATAKANA LETTER YO -->
+      <map code="0x30E9" name="1em" /> <!--  KATAKANA LETTER RA -->
+      <map code="0x30EA" name="1em" /> <!--  KATAKANA LETTER RI -->
+      <map code="0x30EB" name="1em" /> <!--  KATAKANA LETTER RU -->
+      <map code="0x30EC" name="1em" /> <!--  KATAKANA LETTER RE -->
+      <map code="0x30ED" name="1em" /> <!--  KATAKANA LETTER RO -->
+      <map code="0x30EE" name="1em" /> <!--  KATAKANA LETTER SMALL WA -->
+      <map code="0x30EF" name="1em" /> <!--  KATAKANA LETTER WA -->
+      <map code="0x30F0" name="1em" /> <!--  KATAKANA LETTER WI -->
+      <map code="0x30F1" name="1em" /> <!--  KATAKANA LETTER WE -->
+      <map code="0x30F2" name="1em" /> <!--  KATAKANA LETTER WO -->
+      <map code="0x30F3" name="1em" /> <!--  KATAKANA LETTER N -->
+      <map code="0x30F4" name="1em" /> <!--  KATAKANA LETTER VU -->
+      <map code="0x30F5" name="1em" /> <!--  KATAKANA LETTER SMALL KA -->
+      <map code="0x30F6" name="1em" /> <!--  KATAKANA LETTER SMALL KE -->
+      <map code="0x30F7" name="1em" /> <!--  KATAKANA LETTER VA -->
+      <map code="0x30F8" name="1em" /> <!--  KATAKANA LETTER VI -->
+      <map code="0x30F9" name="1em" /> <!--  KATAKANA LETTER VE -->
+      <map code="0x30FA" name="1em" /> <!--  KATAKANA LETTER VO -->
+      <map code="0x30FB" name="1em" /> <!--  KATAKANA MIDDLE DOT -->
+      <map code="0x30FC" name="1em" /> <!--  KATAKANA-HIRAGANA PROLONGED SOUND MARK -->
+      <map code="0x30FD" name="1em" /> <!--  KATAKANA ITERATION MARK -->
+      <map code="0x30FE" name="1em" /> <!--  KATAKANA VOICED ITERATION MARK -->
+      <map code="0x30FF" name="1em" /> <!--  KATAKANA DIGRAPH KOTO -->
+
+      <!-- Random Han characters used for testing -->
+      <map code="0x5929" name="1em" /> <!--  天 -->
+      <map code="0x65E5" name="1em" /> <!--  æ—¥ -->
+      <map code="0x6674" name="1em" /> <!--  æ™´ -->
+      <map code="0x672C" name="1em" /> <!--  本 -->
+
+    </cmap_format_12>
+  </cmap>
+
+  <loca>
+    <!-- The 'loca' table will be calculated by the compiler -->
+  </loca>
+
+  <glyf>
+    <TTGlyph name=".notdef" xMin="0" yMin="0" xMax="0" yMax="0" />
+    <TTGlyph name="1em" xMin="0" yMin="0" xMax="100" yMax="100">
+        <contour>
+            <pt x="0" y="0" on="1" />
+            <pt x="100" y="0" on="1" />
+            <pt x="100" y="100" on="1" />
+            <pt x="0" y="100" on="1" />
+        </contour>
+        <instructions><assembly></assembly></instructions>
+    </TTGlyph>
+  </glyf>
+
+  <name>
+    <namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Font for Hiragana
+    </namerecord>
+    <namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Regular
+    </namerecord>
+    <namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Font for Hiragana
+    </namerecord>
+    <namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      SampleFont-Regular
+    </namerecord>
+    <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+      Regular
+    </namerecord>
+    <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+      SampleFont-Regular
+    </namerecord>
+  </name>
+
+  <post>
+    <formatType value="3.0"/>
+    <italicAngle value="0.0"/>
+    <underlinePosition value="-75"/>
+    <underlineThickness value="50"/>
+    <isFixedPitch value="0"/>
+    <minMemType42 value="0"/>
+    <maxMemType42 value="0"/>
+    <minMemType1 value="0"/>
+    <maxMemType1 value="0"/>
+  </post>
+
+</ttFont>
diff --git a/tests/data/OvershootTest.ttf b/tests/data/OvershootTest.ttf
new file mode 100644
index 0000000..fb113c3
--- /dev/null
+++ b/tests/data/OvershootTest.ttf
Binary files differ
diff --git a/tests/data/OvershootTest.ttx b/tests/data/OvershootTest.ttx
new file mode 100644
index 0000000..8f6c88c
--- /dev/null
+++ b/tests/data/OvershootTest.ttx
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.0">
+
+  <GlyphOrder>
+    <GlyphID id="0" name=".notdef"/>
+    <GlyphID id="1" name="1em"/>
+    <GlyphID id="2" name="1em_right_0.5em"/>
+    <GlyphID id="3" name="1em_right_1em"/>
+    <GlyphID id="4" name="1em_right_1.5em"/>
+    <GlyphID id="5" name="1em_left_0.5em"/>
+    <GlyphID id="6" name="1em_left_1em"/>
+    <GlyphID id="7" name="1em_left_1.5em"/>
+  </GlyphOrder>
+
+  <head>
+    <tableVersion value="1.0"/>
+    <fontRevision value="1.0"/>
+    <checkSumAdjustment value="0x640cdb2f"/>
+    <magicNumber value="0x5f0f3cf5"/>
+    <flags value="00000000 00000011"/>
+    <unitsPerEm value="100"/>
+    <created value="Fri Mar 17 07:26:00 2017"/>
+    <macStyle value="00000000 00000000"/>
+    <lowestRecPPEM value="7"/>
+    <fontDirectionHint value="2"/>
+    <glyphDataFormat value="0"/>
+  </head>
+
+  <hhea>
+    <tableVersion value="0x00010000"/>
+    <ascent value="800"/>
+    <descent value="-200"/>
+    <lineGap value="0"/>
+    <caretSlopeRise value="1"/>
+    <caretSlopeRun value="0"/>
+    <caretOffset value="0"/>
+    <reserved0 value="0"/>
+    <reserved1 value="0"/>
+    <reserved2 value="0"/>
+    <reserved3 value="0"/>
+    <metricDataFormat value="0"/>
+  </hhea>
+
+  <maxp>
+    <tableVersion value="0x10000"/>
+    <maxZones value="0"/>
+    <maxTwilightPoints value="0"/>
+    <maxStorage value="0"/>
+    <maxFunctionDefs value="0"/>
+    <maxInstructionDefs value="0"/>
+    <maxStackElements value="0"/>
+    <maxSizeOfInstructions value="0"/>
+    <maxComponentElements value="0"/>
+  </maxp>
+
+  <OS_2>
+    <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+         will be recalculated by the compiler -->
+    <version value="3"/>
+    <xAvgCharWidth value="594"/>
+    <usWeightClass value="400"/>
+    <usWidthClass value="5"/>
+    <fsType value="00000000 00001000"/>
+    <ySubscriptXSize value="650"/>
+    <ySubscriptYSize value="600"/>
+    <ySubscriptXOffset value="0"/>
+    <ySubscriptYOffset value="75"/>
+    <ySuperscriptXSize value="650"/>
+    <ySuperscriptYSize value="600"/>
+    <ySuperscriptXOffset value="0"/>
+    <ySuperscriptYOffset value="350"/>
+    <yStrikeoutSize value="50"/>
+    <yStrikeoutPosition value="300"/>
+    <sFamilyClass value="0"/>
+    <panose>
+      <bFamilyType value="0"/>
+      <bSerifStyle value="0"/>
+      <bWeight value="5"/>
+      <bProportion value="0"/>
+      <bContrast value="0"/>
+      <bStrokeVariation value="0"/>
+      <bArmStyle value="0"/>
+      <bLetterForm value="0"/>
+      <bMidline value="0"/>
+      <bXHeight value="0"/>
+    </panose>
+    <ulUnicodeRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+    <achVendID value="UKWN"/>
+    <fsSelection value="00000000 01000000"/>
+    <usFirstCharIndex value="32"/>
+    <usLastCharIndex value="122"/>
+    <sTypoAscender value="800"/>
+    <sTypoDescender value="-200"/>
+    <sTypoLineGap value="200"/>
+    <usWinAscent value="1000"/>
+    <usWinDescent value="200"/>
+    <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+    <sxHeight value="500"/>
+    <sCapHeight value="700"/>
+    <usDefaultChar value="0"/>
+    <usBreakChar value="32"/>
+    <usMaxContext value="0"/>
+  </OS_2>
+
+  <hmtx>
+    <mtx name=".notdef" width="50" lsb="0"/>
+    <mtx name="1em" width="100" lsb="0"/>
+    <mtx name="1em_right_0.5em" width="100" lsb="0"/>
+    <mtx name="1em_right_1em" width="100" lsb="0"/>
+    <mtx name="1em_right_1.5em" width="100" lsb="0"/>
+    <mtx name="1em_left_0.5em" width="100" lsb="-50"/>
+    <mtx name="1em_left_1em" width="100" lsb="-100"/>
+    <mtx name="1em_left_1.5em" width="100" lsb="-150"/>
+  </hmtx>
+
+  <cmap>
+    <tableVersion version="0"/>
+    <cmap_format_12 format="12" reserved="0" length="6" nGroups="1" platformID="3" platEncID="10" language="0">
+      <map code="0x0061" name="1em" />              <!-- a -->
+      <map code="0x0062" name="1em_right_0.5em" />  <!-- b -->
+      <map code="0x0063" name="1em_right_1em" />    <!-- c -->
+      <map code="0x0064" name="1em_right_1.5em" />  <!-- d -->
+      <map code="0x0065" name="1em_left_0.5em" />   <!-- e -->
+      <map code="0x0066" name="1em_left_1em" />     <!-- f -->
+      <map code="0x0067" name="1em_left_1.5em" />   <!-- g -->
+    </cmap_format_12>
+  </cmap>
+
+  <loca>
+    <!-- The 'loca' table will be calculated by the compiler -->
+  </loca>
+
+  <glyf>
+    <TTGlyph name=".notdef" xMin="0" yMin="0" xMax="0" yMax="0" />
+    <TTGlyph name="1em" xMin="0" yMin="0" xMax="100" yMax="100">
+      <contour>
+        <pt x="0" y="0" on="1" />
+        <pt x="0" y="100" on="1" />
+        <pt x="100" y="100" on="1" />
+        <pt x="100" y="0" on="1" />
+      </contour>
+      <instructions />
+    </TTGlyph>
+    <TTGlyph name="1em_right_0.5em" xMin="0" yMin="0" xMax="150" yMax="100">
+      <contour>
+        <pt x="0" y="0" on="1" />
+        <pt x="0" y="100" on="1" />
+        <pt x="150" y="100" on="1" />
+        <pt x="150" y="0" on="1" />
+      </contour>
+      <instructions />
+    </TTGlyph>
+    <TTGlyph name="1em_right_1em" xMin="0" yMin="0" xMax="200" yMax="100">
+      <contour>
+        <pt x="0" y="0" on="1" />
+        <pt x="0" y="100" on="1" />
+        <pt x="200" y="100" on="1" />
+        <pt x="200" y="0" on="1" />
+      </contour>
+      <instructions />
+    </TTGlyph>
+    <TTGlyph name="1em_right_1.5em" xMin="0" yMin="0" xMax="250" yMax="100">
+      <contour>
+        <pt x="0" y="0" on="1" />
+        <pt x="0" y="100" on="1" />
+        <pt x="250" y="100" on="1" />
+        <pt x="250" y="0" on="1" />
+      </contour>
+      <instructions />
+    </TTGlyph>
+    <TTGlyph name="1em_left_0.5em" xMin="-50" yMin="0" xMax="100" yMax="100">
+      <contour>
+        <pt x="-50" y="0" on="1" />
+        <pt x="-50" y="100" on="1" />
+        <pt x="100" y="100" on="1" />
+        <pt x="100" y="0" on="1" />
+      </contour>
+      <instructions />
+    </TTGlyph>
+    <TTGlyph name="1em_left_1em" xMin="-100" yMin="0" xMax="100" yMax="100">
+      <contour>
+        <pt x="-100" y="0" on="1" />
+        <pt x="-100" y="100" on="1" />
+        <pt x="100" y="100" on="1" />
+        <pt x="100" y="0" on="1" />
+      </contour>
+      <instructions />
+    </TTGlyph>
+    <TTGlyph name="1em_left_1.5em" xMin="-150" yMin="0" xMax="100" yMax="100">
+      <contour>
+        <pt x="-150" y="0" on="1" />
+        <pt x="-150" y="100" on="1" />
+        <pt x="100" y="100" on="1" />
+        <pt x="100" y="0" on="1" />
+      </contour>
+      <instructions />
+    </TTGlyph>
+  </glyf>
+
+  <name>
+    <namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Font for Overshoot
+    </namerecord>
+    <namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Regular
+    </namerecord>
+    <namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      Font for Overshoot
+    </namerecord>
+    <namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
+      SampleFont-Regular
+    </namerecord>
+    <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+      Regular
+    </namerecord>
+    <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+      SampleFont-Regular
+    </namerecord>
+  </name>
+
+  <post>
+    <formatType value="3.0"/>
+    <italicAngle value="0.0"/>
+    <underlinePosition value="-75"/>
+    <underlineThickness value="50"/>
+    <isFixedPitch value="0"/>
+    <minMemType42 value="0"/>
+    <maxMemType42 value="0"/>
+    <minMemType1 value="0"/>
+    <maxMemType1 value="0"/>
+  </post>
+
+</ttFont>
diff --git a/tests/data/WeightEqualsEmVariableFont.ttf b/tests/data/WeightEqualsEmVariableFont.ttf
new file mode 100644
index 0000000..bbbf02e
--- /dev/null
+++ b/tests/data/WeightEqualsEmVariableFont.ttf
Binary files differ
diff --git a/tests/data/WeightEqualsEmVariableFont.ttx b/tests/data/WeightEqualsEmVariableFont.ttx
new file mode 100644
index 0000000..86d7477
--- /dev/null
+++ b/tests/data/WeightEqualsEmVariableFont.ttx
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.0">
+
+  <GlyphOrder>
+    <GlyphID id="0" name=".notdef"/>
+    <GlyphID id="1" name="1em"/>
+  </GlyphOrder>
+
+  <head>
+    <tableVersion value="1.0"/>
+    <fontRevision value="1.0"/>
+    <checkSumAdjustment value="0x640cdb2f"/>
+    <magicNumber value="0x5f0f3cf5"/>
+    <flags value="00000000 00000011"/>
+    <unitsPerEm value="100"/>
+    <created value="Thu Feb 22 10:04:28 2018"/>
+    <macStyle value="00000000 00000000"/>
+    <lowestRecPPEM value="7"/>
+    <fontDirectionHint value="2"/>
+    <glyphDataFormat value="0"/>
+  </head>
+
+  <hhea>
+    <tableVersion value="0x00010000"/>
+    <ascent value="100"/>
+    <descent value="0"/>
+    <lineGap value="0"/>
+    <caretSlopeRise value="1"/>
+    <caretSlopeRun value="0"/>
+    <caretOffset value="0"/>
+    <reserved0 value="0"/>
+    <reserved1 value="0"/>
+    <reserved2 value="0"/>
+    <reserved3 value="0"/>
+    <metricDataFormat value="0"/>
+  </hhea>
+
+  <maxp>
+    <tableVersion value="0x10000"/>
+    <maxZones value="0"/>
+    <maxTwilightPoints value="0"/>
+    <maxStorage value="0"/>
+    <maxFunctionDefs value="0"/>
+    <maxInstructionDefs value="0"/>
+    <maxStackElements value="0"/>
+    <maxSizeOfInstructions value="0"/>
+    <maxComponentElements value="0"/>
+  </maxp>
+
+  <OS_2>
+    <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+         will be recalculated by the compiler -->
+    <version value="3"/>
+    <xAvgCharWidth value="594"/>
+    <usWeightClass value="100"/>
+    <usWidthClass value="5"/>
+    <fsType value="00000000 00001000"/>
+    <ySubscriptXSize value="650"/>
+    <ySubscriptYSize value="600"/>
+    <ySubscriptXOffset value="0"/>
+    <ySubscriptYOffset value="75"/>
+    <ySuperscriptXSize value="650"/>
+    <ySuperscriptYSize value="600"/>
+    <ySuperscriptXOffset value="0"/>
+    <ySuperscriptYOffset value="350"/>
+    <yStrikeoutSize value="50"/>
+    <yStrikeoutPosition value="300"/>
+    <sFamilyClass value="0"/>
+    <panose>
+      <bFamilyType value="0"/>
+      <bSerifStyle value="0"/>
+      <bWeight value="5"/>
+      <bProportion value="0"/>
+      <bContrast value="0"/>
+      <bStrokeVariation value="0"/>
+      <bArmStyle value="0"/>
+      <bLetterForm value="0"/>
+      <bMidline value="0"/>
+      <bXHeight value="0"/>
+    </panose>
+    <ulUnicodeRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+    <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+    <achVendID value="UKWN"/>
+    <fsSelection value="00000000 01000000"/>
+    <usFirstCharIndex value="32"/>
+    <usLastCharIndex value="122"/>
+    <sTypoAscender value="800"/>
+    <sTypoDescender value="-200"/>
+    <sTypoLineGap value="200"/>
+    <usWinAscent value="1000"/>
+    <usWinDescent value="200"/>
+    <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
+    <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+    <sxHeight value="500"/>
+    <sCapHeight value="700"/>
+    <usDefaultChar value="0"/>
+    <usBreakChar value="32"/>
+    <usMaxContext value="0"/>
+  </OS_2>
+
+  <hmtx>
+    <mtx name=".notdef" width="50" lsb="93"/>
+    <mtx name="1em" width="0" lsb="0"/>
+  </hmtx>
+
+  <cmap>
+    <tableVersion version="0"/>
+    <cmap_format_4 platformID="0" platEncID="3" language="0">
+        <map code="0x0061" name="1em" /> <!-- a -->
+        <map code="0x0062" name="1em" /> <!-- b -->
+        <map code="0x0063" name="1em" /> <!-- c -->
+        <map code="0x0064" name="1em" /> <!-- d -->
+        <map code="0x0065" name="1em" /> <!-- e -->
+        <map code="0x0066" name="1em" /> <!-- f -->
+        <map code="0x0067" name="1em" /> <!-- g -->
+        <map code="0x0068" name="1em" /> <!-- h -->
+        <map code="0x0069" name="1em" /> <!-- i -->
+        <map code="0x006A" name="1em" /> <!-- j -->
+        <map code="0x006B" name="1em" /> <!-- k -->
+        <map code="0x006C" name="1em" /> <!-- l -->
+        <map code="0x006D" name="1em" /> <!-- m -->
+        <map code="0x006E" name="1em" /> <!-- n -->
+        <map code="0x006F" name="1em" /> <!-- o -->
+        <map code="0x0070" name="1em" /> <!-- p -->
+        <map code="0x0071" name="1em" /> <!-- q -->
+        <map code="0x0072" name="1em" /> <!-- r -->
+        <map code="0x0073" name="1em" /> <!-- s -->
+        <map code="0x0074" name="1em" /> <!-- t -->
+        <map code="0x0075" name="1em" /> <!-- u -->
+        <map code="0x0076" name="1em" /> <!-- v -->
+        <map code="0x0077" name="1em" /> <!-- w -->
+        <map code="0x0078" name="1em" /> <!-- x -->
+        <map code="0x0079" name="1em" /> <!-- y -->
+        <map code="0x007A" name="1em" /> <!-- z -->
+    </cmap_format_4>
+  </cmap>
+
+  <loca>
+    <!-- The 'loca' table will be calculated by the compiler -->
+  </loca>
+
+  <glyf>
+    <TTGlyph name=".notdef" xMin="0" yMin="0" xMax="0" yMax="0" />
+    <TTGlyph name="1em" xMin="0" yMin="0" xMax="100" yMax="100">
+      <contour>
+        <pt x="0" y="0" on="1"/>
+        <pt x="0" y="50" on="1"/>
+        <pt x="0" y="100" on="1"/>
+      </contour>
+      <instructions />
+    </TTGlyph>
+  </glyf>
+
+  <HVAR>
+    <Version value="0x00010000"/>
+    <VarStore Format="1">
+      <Format value="1" />
+      <VarRegionList>
+        <Region index="0">
+          <VarRegionAxis index="0">
+            <StartCoord value="0" />
+            <PeakCoord value="1.0" />
+            <EndCoord value="1.0" />
+          </VarRegionAxis>
+          <VarRegionAxis index="1">
+            <StartCoord value="0" />
+            <PeakCoord value="1.0" />
+            <EndCoord value="1.0" />
+          </VarRegionAxis>
+        </Region>
+      </VarRegionList>
+      <VarData index="0">
+        <NumShorts value="0" />
+        <VarRegionIndex index="0" value="0" />
+        <Item index="0" value="[100]" />
+      </VarData>
+    </VarStore>
+    <AdvWidthMap>
+      <Map glyph=".notdef" outer="0" inner="0" />
+      <Map glyph="1em" outer="0" inner="0" />
+    </AdvWidthMap>
+  </HVAR>
+
+  <fvar>
+    <Axis>
+      <AxisTag>wght</AxisTag>
+      <Flags>0x0</Flags>
+      <MinValue>0.0</MinValue>
+      <DefaultValue>400.0</DefaultValue>
+      <MaxValue>1000.0</MaxValue>
+      <AxisNameID>256</AxisNameID>
+    </Axis>
+    <Axis>
+      <AxisTag>ital</AxisTag>
+      <Flags>0x0</Flags>
+      <MinValue>0.0</MinValue>
+      <DefaultValue>0.0</DefaultValue>
+      <MaxValue>1.0</MaxValue>
+      <AxisNameID>256</AxisNameID>
+    </Axis>
+  </fvar>
+
+  <gvar>
+    <version value="1" />
+    <reserved value="0" />
+    <glyphVariations glyph="1em">
+      <tuple>
+        <coord axis="wght" value="1.0" />
+        <delta pt="0" x="0" y="0" />
+        <delta pt="1" x="100" y="0" />
+        <delta pt="2" x="0" y="0" />
+        <!-- deltas for phantom points -->
+        <delta pt="3" x="0" y="0" />  <!-- (left, 0) -->
+        <delta pt="4" x="100" y="0" />  <!-- (right, 0) -->
+        <delta pt="5" x="0" y="0" />  <!-- (0, top) -->
+        <delta pt="6" x="0" y="0" />  <!-- (0, bottom) -->
+      </tuple>
+    </glyphVariations>
+  </gvar>
+
+  <name>
+    <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
+      Copyright (C) 2018 The Android Open Source Project
+    </namerecord>
+    <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+      Regular
+    </namerecord>
+    <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+      Sample Font
+    </namerecord>
+    <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+      SampleFont-Regular
+    </namerecord>
+    <namerecord nameID="13" platformID="3" platEncID="1" langID="0x409">
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    </namerecord>
+    <namerecord nameID="14" platformID="3" platEncID="1" langID="0x409">
+      http://www.apache.org/licenses/LICENSE-2.0
+    </namerecord>
+    <namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
+      Weight
+    </namerecord>
+  </name>
+
+  <post>
+    <formatType value="3.0"/>
+    <italicAngle value="0.0"/>
+    <underlinePosition value="-75"/>
+    <underlineThickness value="50"/>
+    <isFixedPitch value="0"/>
+    <minMemType42 value="0"/>
+    <maxMemType42 value="0"/>
+    <minMemType1 value="0"/>
+    <maxMemType1 value="0"/>
+  </post>
+
+</ttFont>
diff --git a/tests/perftests/Android.bp b/tests/perftests/Android.bp
index dcf5b98..c4260b3 100644
--- a/tests/perftests/Android.bp
+++ b/tests/perftests/Android.bp
@@ -37,6 +37,7 @@
         "libminikin-tests-util",
         "libminikin",
         "libxml2",
+        "aconfig_text_flags_c_lib",
     ],
 
     shared_libs: [
@@ -44,6 +45,8 @@
         "libharfbuzz_ng",
         "libicu",
         "liblog",
-
+        "libcutils",
+        "aconfig_text_flags_c_lib",
+        "server_configurable_flags",
     ],
 }
diff --git a/tests/stresstest/Android.bp b/tests/stresstest/Android.bp
index d963a09..420a4b1 100644
--- a/tests/stresstest/Android.bp
+++ b/tests/stresstest/Android.bp
@@ -28,6 +28,7 @@
         "libminikin-tests-util",
         "libminikin",
         "libxml2",
+        "aconfig_text_flags_c_lib",
     ],
 
     // Shared libraries which are dependencies of minikin; these are not automatically
@@ -40,6 +41,9 @@
         "liblog",
         "libutils",
         "libz",
+        "libcutils",
+        "aconfig_text_flags_c_lib",
+        "server_configurable_flags",
     ],
 
     srcs: [
diff --git a/tests/unittest/Android.bp b/tests/unittest/Android.bp
index 9800416..5a822cd 100644
--- a/tests/unittest/Android.bp
+++ b/tests/unittest/Android.bp
@@ -29,6 +29,8 @@
         "libminikin-tests-util",
         "libminikin",
         "libxml2",
+        "libflagtest",
+        "libbase_ndk",
     ],
 
     // Shared libraries which are dependencies of minikin; these are not automatically
@@ -40,13 +42,15 @@
         "liblog",
         "libutils",
         "libz",
+        "libcutils",
+        "aconfig_text_flags_c_lib",
+        "server_configurable_flags",
     ],
 
     srcs: [
         "AndroidLineBreakerHelperTest.cpp",
         "BidiUtilsTest.cpp",
         "BufferTest.cpp",
-        "BoundsCacheTest.cpp",
         "CmapCoverageTest.cpp",
         "EmojiTest.cpp",
         "FontTest.cpp",
@@ -71,6 +75,7 @@
         "MeasuredTextTest.cpp",
         "MeasurementTests.cpp",
         "OptimalLineBreakerTest.cpp",
+        "ScriptUtilsTest.cpp",
         "SparseBitSetTest.cpp",
         "StringPieceTest.cpp",
         "SystemFontsTest.cpp",
diff --git a/tests/unittest/BoundsCacheTest.cpp b/tests/unittest/BoundsCacheTest.cpp
deleted file mode 100644
index 8c727f9..0000000
--- a/tests/unittest/BoundsCacheTest.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <gtest/gtest.h>
-
-#include "minikin/BoundsCache.h"
-
-#include "FontTestUtils.h"
-#include "LocaleListCache.h"
-#include "UnicodeUtils.h"
-
-namespace minikin {
-
-class TestableBoundsCache : public BoundsCache {
-public:
-    TestableBoundsCache(uint32_t maxEntries) : BoundsCache(maxEntries) {}
-};
-
-class BoundsCapture {
-public:
-    BoundsCapture() {}
-
-    void operator()(const MinikinRect& rect, float advance) {
-        mRect = rect;
-        mAdvance = advance;
-    }
-
-    const MinikinRect& rect() const { return mRect; }
-    float advance() const { return mAdvance; }
-
-private:
-    MinikinRect mRect;
-    float mAdvance;
-};
-
-TEST(BoundsCacheTest, cacheHitTest) {
-    auto text = utf8ToUtf16("android");
-    Range range(0, text.size());
-    MinikinPaint paint(buildFontCollection("Ascii.ttf"));
-
-    TestableBoundsCache boundsCache(10);
-
-    BoundsCapture bounds1;
-    boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, bounds1);
-
-    BoundsCapture bounds2;
-    boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, bounds2);
-
-    EXPECT_EQ(bounds1.rect(), bounds2.rect());
-    EXPECT_EQ(bounds1.advance(), bounds2.advance());
-}
-
-TEST(BoundsCacheTest, cacheMissTest) {
-    auto text1 = utf8ToUtf16("android");
-    auto text2 = utf8ToUtf16("αβγδζ");
-    MinikinPaint paint(buildFontCollection("Ascii.ttf"));
-
-    TestableBoundsCache boundsCache(10);
-
-    BoundsCapture bounds1;
-    BoundsCapture bounds2;
-
-    {
-        SCOPED_TRACE("Different text");
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
-        boundsCache.getOrCreate(text2, Range(0, text2.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
-        EXPECT_NE(bounds1.rect(), bounds2.rect());
-        EXPECT_NE(bounds1.advance(), bounds2.advance());
-    }
-    {
-        SCOPED_TRACE("Different range");
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
-        boundsCache.getOrCreate(text1, Range(1, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
-        EXPECT_NE(bounds1.rect(), bounds2.rect());
-        EXPECT_NE(bounds1.advance(), bounds2.advance());
-    }
-    {
-        SCOPED_TRACE("Different collection");
-        MinikinPaint paint1(buildFontCollection("Ascii.ttf"));
-        paint1.size = 10.0f;
-        paint1.scaleX = 1.0f;
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
-        MinikinPaint paint2(buildFontCollection("Emoji.ttf"));
-        paint2.size = 10.0f;
-        paint2.scaleX = 1.0f;
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
-        EXPECT_NE(bounds1.rect(), bounds2.rect());
-        EXPECT_NE(bounds1.advance(), bounds2.advance());
-    }
-    {
-        SCOPED_TRACE("Different size");
-        auto collection = buildFontCollection("Ascii.ttf");
-        MinikinPaint paint1(collection);
-        paint1.size = 10.0f;
-        paint1.scaleX = 1.0f;
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
-        MinikinPaint paint2(collection);
-        paint2.size = 20.0f;
-        paint2.scaleX = 1.0f;
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
-        EXPECT_NE(bounds1.rect(), bounds2.rect());
-        EXPECT_NE(bounds1.advance(), bounds2.advance());
-    }
-    {
-        SCOPED_TRACE("Different letter spacing");
-        auto collection = buildFontCollection("Ascii.ttf");
-        MinikinPaint paint1(collection);
-        paint1.letterSpacing = 0.0f;
-        paint1.size = 10.0f;
-        paint1.scaleX = 1.0f;
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
-        MinikinPaint paint2(collection);
-        paint2.letterSpacing = 1.0f;
-        paint2.size = 10.0f;
-        paint2.scaleX = 1.0f;
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
-        EXPECT_NE(bounds1.rect(), bounds2.rect());
-        EXPECT_NE(bounds1.advance(), bounds2.advance());
-    }
-}
-
-TEST(BoundsCacheTest, cacheOverflowTest) {
-    auto text = utf8ToUtf16("android");
-    Range range(0, text.size());
-    MinikinPaint paint(buildFontCollection("Ascii.ttf"));
-
-    TestableBoundsCache boundsCache(5);
-
-    BoundsCapture bounds1;
-    boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, bounds1);
-
-    for (char c = 'a'; c <= 'z'; c++) {
-        auto text1 = utf8ToUtf16(std::string(10, c));
-        BoundsCapture bounds2;
-        boundsCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
-    }
-
-    BoundsCapture bounds3;
-    boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, bounds3);
-    EXPECT_EQ(bounds1.rect(), bounds3.rect());
-    EXPECT_EQ(bounds1.advance(), bounds3.advance());
-}
-
-}  // namespace minikin
diff --git a/tests/unittest/FontCollectionItemizeTest.cpp b/tests/unittest/FontCollectionItemizeTest.cpp
index 1723519..46f319d 100644
--- a/tests/unittest/FontCollectionItemizeTest.cpp
+++ b/tests/unittest/FontCollectionItemizeTest.cpp
@@ -113,7 +113,7 @@
 // Utility function to obtain font path associated with run.
 std::string getFontName(const Run& run) {
     EXPECT_NE(nullptr, run.fakedFont.font.get());
-    return getBasename(run.fakedFont.font.get()->typeface()->GetFontPath());
+    return getBasename(run.fakedFont.typeface()->GetFontPath());
 }
 
 // Utility function to obtain LocaleList from string.
@@ -937,9 +937,10 @@
                 std::make_shared<FreeTypeMinikinFontForTest>(getTestFontPath(kNoGlyphFont));
         std::vector<std::shared_ptr<Font>> fonts;
         fonts.push_back(Font::Builder(firstFamilyMinikinFont).build());
-        auto firstFamily = FontFamily::create(registerLocaleList("und"), FamilyVariant::DEFAULT,
-                                              std::move(fonts), false /* isCustomFallback */,
-                                              false /* isDefaultFallback */);
+        auto firstFamily =
+                FontFamily::create(registerLocaleList("und"), FamilyVariant::DEFAULT,
+                                   std::move(fonts), false /* isCustomFallback */,
+                                   false /* isDefaultFallback */, VariationFamilyType::None);
         families.push_back(firstFamily);
 
         // Prepare font families
@@ -954,7 +955,8 @@
             fonts.push_back(Font::Builder(minikinFont).build());
             auto family = FontFamily::create(
                     registerLocaleList(testCase.fontLocales[i]), FamilyVariant::DEFAULT,
-                    std::move(fonts), false /* isCustomFallback */, false /* isDefaultFallback */);
+                    std::move(fonts), false /* isCustomFallback */, false /* isDefaultFallback */,
+                    VariationFamilyType::None);
             families.push_back(family);
             fontLocaleIdxMap.insert(std::make_pair(minikinFont.get(), i));
         }
@@ -966,11 +968,10 @@
 
         // First family doesn't support U+9AA8 and others support it, so the first font should not
         // be selected.
-        EXPECT_NE(firstFamilyMinikinFont.get(), runs[0].fakedFont.font.get()->typeface().get());
+        EXPECT_NE(firstFamilyMinikinFont.get(), runs[0].fakedFont.typeface().get());
 
         // Lookup used font family by MinikinFont*.
-        const int usedLocaleIndex =
-                fontLocaleIdxMap[runs[0].fakedFont.font.get()->typeface().get()];
+        const int usedLocaleIndex = fontLocaleIdxMap[runs[0].fakedFont.typeface().get()];
         EXPECT_EQ(testCase.selectedFontIndex, usedLocaleIndex);
     }
 }
@@ -1648,7 +1649,7 @@
 
     std::vector<ItemizeResult> out;
     for (const auto& run : runs) {
-        auto psName = FontFileParser(run.fakedFont.font->baseFont()).getPostScriptName().value();
+        auto psName = FontFileParser(run.fakedFont.hbFont()).getPostScriptName().value();
         out.push_back({run.start, run.end, psName});
     }
     return out;
diff --git a/tests/unittest/FontCollectionTest.cpp b/tests/unittest/FontCollectionTest.cpp
index b4933ab..28e6094 100644
--- a/tests/unittest/FontCollectionTest.cpp
+++ b/tests/unittest/FontCollectionTest.cpp
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-#include "minikin/FontCollection.h"
-
 #include <gtest/gtest.h>
 
 #include "FontTestUtils.h"
 #include "FreeTypeMinikinFontForTest.h"
 #include "MinikinInternal.h"
+#include "minikin/Constants.h"
+#include "minikin/FontCollection.h"
 
 namespace minikin {
 
@@ -139,7 +139,7 @@
     }
     {
         // New instance should be used for supported variation.
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('w', 'd', 't', 'h'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('w', 'd', 't', 'h'), 1.0f}};
         std::shared_ptr<FontCollection> newFc(
                 multiAxisFc->createCollectionWithVariation(variations));
         EXPECT_NE(nullptr, newFc.get());
@@ -149,8 +149,8 @@
     }
     {
         // New instance should be used for supported variation (multiple variations case).
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('w', 'd', 't', 'h'), 1.0f},
-                                                 {MinikinFont::MakeTag('w', 'g', 'h', 't'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('w', 'd', 't', 'h'), 1.0f},
+                                                 {MakeTag('w', 'g', 'h', 't'), 1.0f}};
         std::shared_ptr<FontCollection> newFc(
                 multiAxisFc->createCollectionWithVariation(variations));
         EXPECT_NE(nullptr, newFc.get());
@@ -160,14 +160,14 @@
     }
     {
         // Do not ceate new instance if none of variations are supported.
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
         EXPECT_EQ(nullptr, multiAxisFc->createCollectionWithVariation(variations));
         EXPECT_EQ(nullptr, noAxisFc->createCollectionWithVariation(variations));
     }
     {
         // At least one axis is supported, should create new instance.
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('w', 'd', 't', 'h'), 1.0f},
-                                                 {MinikinFont::MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('w', 'd', 't', 'h'), 1.0f},
+                                                 {MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
         std::shared_ptr<FontCollection> newFc(
                 multiAxisFc->createCollectionWithVariation(variations));
         EXPECT_NE(nullptr, newFc.get());
@@ -242,8 +242,8 @@
         EXPECT_EQ(1u, copied.size());
         ASSERT_EQ(2u, copied[0]->getSupportedAxesCount());
         // mSupportedAxes must be sorted.
-        EXPECT_EQ(MinikinFont::MakeTag('w', 'd', 't', 'h'), copied[0]->getSupportedAxisAt(0));
-        EXPECT_EQ(MinikinFont::MakeTag('w', 'g', 'h', 't'), copied[0]->getSupportedAxisAt(1));
+        EXPECT_EQ(MakeTag('w', 'd', 't', 'h'), copied[0]->getSupportedAxisAt(0));
+        EXPECT_EQ(MakeTag('w', 'g', 'h', 't'), copied[0]->getSupportedAxisAt(1));
         std::vector<uint8_t> newBuffer = writeToBuffer(copied);
         EXPECT_EQ(buffer, newBuffer);
     }
diff --git a/tests/unittest/FontFamilyTest.cpp b/tests/unittest/FontFamilyTest.cpp
index 3230c27..b487c87 100644
--- a/tests/unittest/FontFamilyTest.cpp
+++ b/tests/unittest/FontFamilyTest.cpp
@@ -22,6 +22,7 @@
 #include "FreeTypeMinikinFontForTest.h"
 #include "LocaleListCache.h"
 #include "MinikinInternal.h"
+#include "minikin/Constants.h"
 #include "minikin/FontFamily.h"
 #include "minikin/LocaleList.h"
 
@@ -647,7 +648,7 @@
     }
     {
         // New instance should be used for supported variation.
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('w', 'd', 't', 'h'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('w', 'd', 't', 'h'), 1.0f}};
         std::shared_ptr<FontFamily> newFamily(
                 multiAxisFamily->createFamilyWithVariation(variations));
         EXPECT_NE(nullptr, newFamily.get());
@@ -656,8 +657,8 @@
     }
     {
         // New instance should be used for supported variation. (multiple variations case)
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('w', 'd', 't', 'h'), 1.0f},
-                                                 {MinikinFont::MakeTag('w', 'g', 'h', 't'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('w', 'd', 't', 'h'), 1.0f},
+                                                 {MakeTag('w', 'g', 'h', 't'), 1.0f}};
         std::shared_ptr<FontFamily> newFamily(
                 multiAxisFamily->createFamilyWithVariation(variations));
         EXPECT_NE(nullptr, newFamily.get());
@@ -666,14 +667,14 @@
     }
     {
         // Do not ceate new instance if none of variations are supported.
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
         EXPECT_EQ(nullptr, multiAxisFamily->createFamilyWithVariation(variations));
         EXPECT_EQ(nullptr, noAxisFamily->createFamilyWithVariation(variations));
     }
     {
         // At least one axis is supported, should create new instance.
-        std::vector<FontVariation> variations = {{MinikinFont::MakeTag('w', 'd', 't', 'h'), 1.0f},
-                                                 {MinikinFont::MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
+        std::vector<FontVariation> variations = {{MakeTag('w', 'd', 't', 'h'), 1.0f},
+                                                 {MakeTag('Z', 'Z', 'Z', 'Z'), 1.0f}};
         std::shared_ptr<FontFamily> newFamily(
                 multiAxisFamily->createFamilyWithVariation(variations));
         EXPECT_NE(nullptr, newFamily.get());
@@ -805,7 +806,7 @@
 
         size_t idx = dummyFonts.size();
         for (size_t i = 0; i < dummyFonts.size(); i++) {
-            if (dummyFonts[i].get() == closest.font->typeface().get()) {
+            if (dummyFonts[i].get() == closest.font->baseTypeface().get()) {
                 idx = i;
                 break;
             }
diff --git a/tests/unittest/FontFeatureTest.cpp b/tests/unittest/FontFeatureTest.cpp
index 7f9cdf4..6f01842 100644
--- a/tests/unittest/FontFeatureTest.cpp
+++ b/tests/unittest/FontFeatureTest.cpp
@@ -14,10 +14,12 @@
  * limitations under the License.
  */
 
+#include <com_android_text_flags.h>
+#include <flag_macros.h>
 #include <gtest/gtest.h>
 
-#include "FontFeatureUtils.h"
 #include "FontTestUtils.h"
+#include "minikin/FontFeature.h"
 #include "minikin/MinikinPaint.h"
 
 namespace minikin {
@@ -53,7 +55,7 @@
 
 TEST_F(DefaultFontFeatureTest, disable) {
     auto paint = MinikinPaint(font);
-    paint.fontFeatureSettings = "\"chws\" off";
+    paint.fontFeatureSettings = FontFeature::parse("\"chws\" off");
 
     auto f = cleanAndAddDefaultFontFeatures(paint);
     std::sort(f.begin(), f.end(), compareFeatureTag);
@@ -65,7 +67,7 @@
 
 TEST_F(DefaultFontFeatureTest, preserve) {
     auto paint = MinikinPaint(font);
-    paint.fontFeatureSettings = "\"ruby\" on";
+    paint.fontFeatureSettings = FontFeature::parse("\"ruby\" on");
 
     auto f = cleanAndAddDefaultFontFeatures(paint);
     std::sort(f.begin(), f.end(), compareFeatureTag);
@@ -95,7 +97,7 @@
 
 TEST_F(DefaultFontFeatureTest, halt_disable_chws) {
     auto paint = MinikinPaint(font);
-    paint.fontFeatureSettings = "\"halt\" on";
+    paint.fontFeatureSettings = FontFeature::parse("\"halt\" on");
 
     auto f = cleanAndAddDefaultFontFeatures(paint);
     EXPECT_EQ(1u, f.size());
@@ -105,7 +107,7 @@
 
 TEST_F(DefaultFontFeatureTest, palt_disable_chws) {
     auto paint = MinikinPaint(font);
-    paint.fontFeatureSettings = "\"palt\" on";
+    paint.fontFeatureSettings = FontFeature::parse("\"palt\" on");
 
     auto f = cleanAndAddDefaultFontFeatures(paint);
     EXPECT_EQ(1u, f.size());
@@ -116,7 +118,7 @@
 TEST_F(DefaultFontFeatureTest, halt_disable_chws_large_letter_spacing) {
     auto paint = MinikinPaint(font);
     paint.letterSpacing = 1.0;  // em
-    paint.fontFeatureSettings = "\"halt\" on";
+    paint.fontFeatureSettings = FontFeature::parse("\"halt\" on");
 
     auto f = cleanAndAddDefaultFontFeatures(paint);
     std::sort(f.begin(), f.end(), compareFeatureTag);
@@ -133,7 +135,7 @@
 TEST_F(DefaultFontFeatureTest, palt_disable_chws_large_letter_spacing) {
     auto paint = MinikinPaint(font);
     paint.letterSpacing = 1.0;  // em
-    paint.fontFeatureSettings = "\"palt\" on";
+    paint.fontFeatureSettings = FontFeature::parse("\"palt\" on");
 
     auto f = cleanAndAddDefaultFontFeatures(paint);
     std::sort(f.begin(), f.end(), compareFeatureTag);
@@ -147,4 +149,27 @@
     EXPECT_TRUE(f[2].value);
 }
 
+class FontFeatureTest : public testing::Test {
+protected:
+    std::shared_ptr<FontCollection> font;
+
+    virtual void SetUp() override { font = buildFontCollection("Ascii.ttf"); }
+};
+
+TEST_F_WITH_FLAGS(FontFeatureTest, do_not_skip_cache_if_flagEnabled,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      inter_character_justification))) {
+    auto paint = MinikinPaint(font);
+    paint.fontFeatureSettings = FontFeature::parse("\"palt\" on");
+    EXPECT_FALSE(paint.skipCache());
+}
+
+TEST_F_WITH_FLAGS(FontFeatureTest, do_not_skip_cache_if_flagDisabled,
+                  REQUIRES_FLAGS_DISABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                       inter_character_justification))) {
+    auto paint = MinikinPaint(font);
+    paint.fontFeatureSettings = FontFeature::parse("\"palt\" on");
+    EXPECT_TRUE(paint.skipCache());
+}
+
 }  // namespace minikin
diff --git a/tests/unittest/FontTest.cpp b/tests/unittest/FontTest.cpp
index b50ac90..7db2310 100644
--- a/tests/unittest/FontTest.cpp
+++ b/tests/unittest/FontTest.cpp
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-#include "minikin/Font.h"
-
 #include <gtest/gtest.h>
+#include <minikin/Constants.h>
 
 #include "BufferUtils.h"
 #include "FontTestUtils.h"
 #include "FreeTypeMinikinFontForTest.h"
+#include "minikin/Font.h"
 
 namespace minikin {
 
@@ -41,17 +41,17 @@
 
     BufferReader reader(buffer.data());
     Font font(&reader);
-    EXPECT_EQ(minikinFont->GetFontPath(), font.typeface()->GetFontPath());
+    EXPECT_EQ(minikinFont->GetFontPath(), font.baseTypeface()->GetFontPath());
     EXPECT_EQ(original->style(), font.style());
     EXPECT_EQ(original->getLocaleListId(), font.getLocaleListId());
     // baseFont() should return the same non-null instance when called twice.
     const auto& baseFont = font.baseFont();
     EXPECT_NE(nullptr, baseFont);
     EXPECT_EQ(baseFont, font.baseFont());
-    // typeface() should return the same non-null instance when called twice.
-    const auto& typeface = font.typeface();
+    // baseTypeface() should return the same non-null instance when called twice.
+    const auto& typeface = font.baseTypeface();
     EXPECT_NE(nullptr, typeface);
-    EXPECT_EQ(typeface, font.typeface());
+    EXPECT_EQ(typeface, font.baseTypeface());
     std::vector<uint8_t> newBuffer = writeToBuffer<Font>(font);
     EXPECT_EQ(buffer, newBuffer);
 }
@@ -75,10 +75,10 @@
     {
         BufferReader reader(buffer.data());
         Font moveFrom(&reader);
-        std::shared_ptr<MinikinFont> typeface = moveFrom.typeface();
+        std::shared_ptr<MinikinFont> typeface = moveFrom.baseTypeface();
         Font moveTo(std::move(moveFrom));
         EXPECT_EQ(nullptr, moveFrom.mExternalRefsHolder.load());
-        EXPECT_EQ(typeface, moveTo.typeface());
+        EXPECT_EQ(typeface, moveTo.baseTypeface());
     }
     EXPECT_EQ(baseHeapSize, getHeapSize());
 }
@@ -106,12 +106,12 @@
         // mExternalRefsHolder: non-null -> null
         BufferReader reader(buffer.data());
         Font moveFrom(&reader);
-        std::shared_ptr<MinikinFont> typeface = moveFrom.typeface();
+        std::shared_ptr<MinikinFont> typeface = moveFrom.baseTypeface();
         BufferReader reader2(buffer.data());
         Font moveTo(&reader2);
         moveTo = std::move(moveFrom);
         EXPECT_EQ(nullptr, moveFrom.mExternalRefsHolder.load());
-        EXPECT_EQ(typeface, moveTo.typeface());
+        EXPECT_EQ(typeface, moveTo.baseTypeface());
     }
     EXPECT_EQ(baseHeapSize, getHeapSize());
     {
@@ -120,7 +120,7 @@
         Font moveFrom(&reader);
         BufferReader reader2(buffer.data());
         Font moveTo(&reader2);
-        moveTo.typeface();
+        moveTo.baseTypeface();
         moveTo = std::move(moveFrom);
         EXPECT_EQ(nullptr, moveFrom.mExternalRefsHolder.load());
         EXPECT_EQ(nullptr, moveTo.mExternalRefsHolder.load());
@@ -130,15 +130,169 @@
         // mExternalRefsHolder: non-null -> non-null
         BufferReader reader(buffer.data());
         Font moveFrom(&reader);
-        std::shared_ptr<MinikinFont> typeface = moveFrom.typeface();
+        std::shared_ptr<MinikinFont> typeface = moveFrom.baseTypeface();
         BufferReader reader2(buffer.data());
         Font moveTo(&reader2);
-        moveTo.typeface();
+        moveTo.baseTypeface();
         moveTo = std::move(moveFrom);
         EXPECT_EQ(nullptr, moveFrom.mExternalRefsHolder.load());
-        EXPECT_EQ(typeface, moveTo.typeface());
+        EXPECT_EQ(typeface, moveTo.baseTypeface());
     }
     EXPECT_EQ(baseHeapSize, getHeapSize());
 }
 
+TEST(FontTest, getAdjustedFontTest) {
+    FreeTypeMinikinFontForTestFactory::init();
+    auto minikinFont = std::make_shared<FreeTypeMinikinFontForTest>(
+            getTestFontPath("WeightEqualsEmVariableFont.ttf"));
+    std::shared_ptr<Font> font = Font::Builder(minikinFont).build();
+
+    {
+        auto hbFont = font->getAdjustedFont(-1, -1);
+        EXPECT_EQ(hbFont.get(), font->baseFont().get());
+    }
+    {
+        // Set correct wight axis value.
+        auto hbFont = font->getAdjustedFont(400, -1);
+        EXPECT_EQ(hb_font_get_parent(hbFont.get()), font->baseFont().get());
+        EXPECT_NE(hbFont.get(), font->baseFont().get());
+        unsigned int length;
+        const float* coords = hb_font_get_var_coords_design(hbFont.get(), &length);
+        ASSERT_EQ(2u, length);  // The test font has 'wght', 'ital' axes in this order
+        EXPECT_EQ(400, coords[0]);
+        EXPECT_EQ(0, coords[1]);
+    }
+    {
+        // Override existing wght axis.
+        std::shared_ptr<Font> newFont = Font::Builder(font->getAdjustedTypeface(700, -1)).build();
+        auto hbFont = newFont->getAdjustedFont(500, -1);
+        EXPECT_EQ(hb_font_get_parent(hbFont.get()), newFont->baseFont().get());
+        EXPECT_NE(hbFont.get(), newFont->baseFont().get());
+        unsigned int length;
+        const float* coords = hb_font_get_var_coords_design(hbFont.get(), &length);
+        ASSERT_EQ(2u, length);  // The test font has 'wght', 'ital' axes in this order
+        EXPECT_EQ(500, coords[0]);
+        EXPECT_EQ(0, coords[1]);
+    }
+    {
+        // Set correct wight axis value.
+        auto hbFont = font->getAdjustedFont(-1, 1);
+        EXPECT_EQ(hb_font_get_parent(hbFont.get()), font->baseFont().get());
+        EXPECT_NE(hbFont.get(), font->baseFont().get());
+        unsigned int length;
+        const float* coords = hb_font_get_var_coords_design(hbFont.get(), &length);
+        ASSERT_EQ(2u, length);      // The test font has 'wght', 'ital' axes in this order
+        EXPECT_EQ(400, coords[0]);  // 400 is a default value of `wght` axis
+        EXPECT_EQ(1, coords[1]);
+    }
+    {
+        // Override existing wght axis.
+        std::shared_ptr<Font> newFont = Font::Builder(font->getAdjustedTypeface(-1, 0)).build();
+        auto hbFont = newFont->getAdjustedFont(-1, 1);
+        EXPECT_EQ(hb_font_get_parent(hbFont.get()), newFont->baseFont().get());
+        EXPECT_NE(hbFont.get(), newFont->baseFont().get());
+        unsigned int length;
+        const float* coords = hb_font_get_var_coords_design(hbFont.get(), &length);
+        ASSERT_EQ(2u, length);      // The test font has 'wght', 'ital' axes in this order
+        EXPECT_EQ(400, coords[0]);  // 400 is a default value of `wght` axis
+        EXPECT_EQ(1, coords[1]);
+    }
+    {
+        // Set correct wight axis value.
+        auto hbFont = font->getAdjustedFont(500, 1);
+        EXPECT_EQ(hb_font_get_parent(hbFont.get()), font->baseFont().get());
+        EXPECT_NE(hbFont.get(), font->baseFont().get());
+        unsigned int length;
+        const float* coords = hb_font_get_var_coords_design(hbFont.get(), &length);
+        ASSERT_EQ(2u, length);  // The test font has 'wght', 'ital' axes in this order
+        EXPECT_EQ(500, coords[0]);
+        EXPECT_EQ(1, coords[1]);
+    }
+    {
+        // Override existing wght axis.
+        std::shared_ptr<Font> newFont = Font::Builder(font->getAdjustedTypeface(500, 1)).build();
+        auto hbFont = newFont->getAdjustedFont(700, 0);
+        EXPECT_EQ(hb_font_get_parent(hbFont.get()), newFont->baseFont().get());
+        EXPECT_NE(hbFont.get(), newFont->baseFont().get());
+        unsigned int length;
+        const float* coords = hb_font_get_var_coords_design(hbFont.get(), &length);
+        ASSERT_EQ(2u, length);  // The test font has 'wght', 'ital' axes in this order
+        EXPECT_EQ(700, coords[0]);
+        EXPECT_EQ(0, coords[1]);
+    }
+}
+
+TEST(FontTest, getAdjustedTypefaceTest) {
+    FreeTypeMinikinFontForTestFactory::init();
+    auto minikinFont = std::make_shared<FreeTypeMinikinFontForTest>(
+            getTestFontPath("WeightEqualsEmVariableFont.ttf"));
+    std::shared_ptr<Font> font = Font::Builder(minikinFont).build();
+
+    {
+        auto minikinFontBase = font->getAdjustedTypeface(-1, -1);
+        EXPECT_EQ(minikinFontBase.get(), font->baseTypeface().get());
+    }
+    {
+        // Set correct wght axis value.
+        auto minikinFontBase = font->getAdjustedTypeface(400, -1);
+        EXPECT_NE(minikinFontBase.get(), font->baseTypeface().get());
+        auto axes = minikinFontBase->GetAxes();
+        ASSERT_EQ(1u, axes.size());
+        EXPECT_EQ(TAG_wght, axes[0].axisTag);
+        EXPECT_EQ(400, axes[0].value);
+    }
+    {
+        // Override existing wght axis.
+        std::shared_ptr<Font> newFont = Font::Builder(font->getAdjustedTypeface(700, -1)).build();
+        auto minikinFontBase = newFont->getAdjustedTypeface(500, -1);
+        EXPECT_NE(minikinFontBase.get(), font->baseTypeface().get());
+        auto axes = minikinFontBase->GetAxes();
+        ASSERT_EQ(1u, axes.size());
+        EXPECT_EQ(TAG_wght, axes[0].axisTag);
+        EXPECT_EQ(500, axes[0].value);
+    }
+    {
+        // Set correct wght axis value.
+        auto minikinFontBase = font->getAdjustedTypeface(-1, 1);
+        EXPECT_NE(minikinFontBase.get(), font->baseTypeface().get());
+        auto axes = minikinFontBase->GetAxes();
+        ASSERT_EQ(1u, axes.size());
+        EXPECT_EQ(TAG_ital, axes[0].axisTag);
+        EXPECT_EQ(1, axes[0].value);
+    }
+    {
+        // Override existing wght axis.
+        std::shared_ptr<Font> newFont = Font::Builder(font->getAdjustedTypeface(-1, 1)).build();
+        auto minikinFontBase = newFont->getAdjustedTypeface(-1, 0);
+        EXPECT_NE(minikinFontBase.get(), font->baseTypeface().get());
+        auto axes = minikinFontBase->GetAxes();
+        ASSERT_EQ(1u, axes.size());
+        EXPECT_EQ(TAG_ital, axes[0].axisTag);
+        EXPECT_EQ(0, axes[0].value);
+    }
+    {
+        // Set correct ital axis value.
+        auto minikinFontBase = font->getAdjustedTypeface(400, 1);
+        EXPECT_NE(minikinFontBase.get(), font->baseTypeface().get());
+        auto axes = minikinFontBase->GetAxes();
+        ASSERT_EQ(2u, axes.size());
+        EXPECT_EQ(TAG_wght, axes[0].axisTag);
+        EXPECT_EQ(TAG_ital, axes[1].axisTag);
+        EXPECT_EQ(400, axes[0].value);
+        EXPECT_EQ(1, axes[1].value);
+    }
+    {
+        // Override existing ital axis.
+        std::shared_ptr<Font> newFont = Font::Builder(font->getAdjustedTypeface(500, 0)).build();
+        auto minikinFontBase = newFont->getAdjustedTypeface(700, 1);
+        EXPECT_NE(minikinFontBase.get(), font->baseTypeface().get());
+        auto axes = minikinFontBase->GetAxes();
+        ASSERT_EQ(2u, axes.size());
+        EXPECT_EQ(TAG_wght, axes[0].axisTag);
+        EXPECT_EQ(TAG_ital, axes[1].axisTag);
+        EXPECT_EQ(700, axes[0].value);
+        EXPECT_EQ(1, axes[1].value);
+    }
+}
+
 }  // namespace minikin
diff --git a/tests/unittest/GreedyLineBreakerTest.cpp b/tests/unittest/GreedyLineBreakerTest.cpp
index e51ff83..4e1f146 100644
--- a/tests/unittest/GreedyLineBreakerTest.cpp
+++ b/tests/unittest/GreedyLineBreakerTest.cpp
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#include <memory>
-
+#include <com_android_text_flags.h>
+#include <flag_macros.h>
 #include <gtest/gtest.h>
 
-#include "minikin/Hyphenator.h"
+#include <memory>
 
 #include "FileUtils.h"
 #include "FontTestUtils.h"
@@ -29,6 +29,7 @@
 #include "MinikinInternal.h"
 #include "UnicodeUtils.h"
 #include "WordBreaker.h"
+#include "minikin/Hyphenator.h"
 
 namespace minikin {
 namespace {
@@ -47,6 +48,17 @@
 constexpr float CUSTOM_ASCENT = -160.0f;
 constexpr float CUSTOM_DESCENT = 40.0f;
 
+// A test string for Japanese. The meaning is that "Today is a sunny day."
+// The expected line break of phrase and non-phrase cases are:
+//     Phrase: | \u672C\u65E5\u306F | \u6674\u5929\u306A\u308A\u3002 |
+// Non-Phrase: | \u672C | \u65E5 | \u306F | \u6674 | \u5929 | \u306A | \u308A\u3002 |
+const char* JP_TEXT = "\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002";
+
+// A test string for Korean. The meaning is that "I want to eat breakfast."
+// The phrase based line break breaks at spaces, non-phrase based line break breaks at grapheme.
+const char* KO_TEXT =
+        "\uC544\uCE68\uBC25\uC744\u0020\uBA39\uACE0\u0020\uC2F6\uC2B5\uB2C8\uB2E4\u002E";
+
 class GreedyLineBreakerTest : public testing::Test {
 public:
     GreedyLineBreakerTest() {}
@@ -69,6 +81,48 @@
         return doLineBreak(textBuffer, doHyphenation, "en-US", lineWidth);
     }
 
+    LineBreakResult doLineBreakForJapanese(const U16StringPiece& textBuffer,
+                                           LineBreakWordStyle lbwStyle, const std::string& lang,
+                                           float lineWidth) {
+        MeasuredTextBuilder builder;
+        auto family = buildFontFamily("Japanese.ttf");
+        std::vector<std::shared_ptr<FontFamily>> families = {family};
+        auto fc = FontCollection::create(families);
+        MinikinPaint paint(fc);
+        paint.size = 10.0f;  // Make 1em=10px
+        paint.localeListId = LocaleListCache::getId(lang);
+        builder.addStyleRun(0, textBuffer.size(), std::move(paint), (int)LineBreakStyle::None,
+                            (int)lbwStyle, true, false);
+        std::unique_ptr<MeasuredText> measuredText = builder.build(
+                textBuffer, false /* compute hyphenation */, false /* compute full layout */,
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
+        RectangleLineWidth rectangleLineWidth(lineWidth);
+        TabStops tabStops(nullptr, 0, 10);
+        return breakLineGreedy(textBuffer, *measuredText, rectangleLineWidth, tabStops, false,
+                               false);
+    }
+
+    LineBreakResult doLineBreakForKorean(const U16StringPiece& textBuffer,
+                                         LineBreakWordStyle lbwStyle, const std::string& lang,
+                                         float lineWidth) {
+        MeasuredTextBuilder builder;
+        auto family = buildFontFamily("Hangul.ttf");
+        std::vector<std::shared_ptr<FontFamily>> families = {family};
+        auto fc = FontCollection::create(families);
+        MinikinPaint paint(fc);
+        paint.size = 10.0f;  // Make 1em=10px
+        paint.localeListId = LocaleListCache::getId(lang);
+        builder.addStyleRun(0, textBuffer.size(), std::move(paint), (int)LineBreakStyle::None,
+                            (int)lbwStyle, true, false);
+        std::unique_ptr<MeasuredText> measuredText = builder.build(
+                textBuffer, false /* compute hyphenation */, false /* compute full layout */,
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
+        RectangleLineWidth rectangleLineWidth(lineWidth);
+        TabStops tabStops(nullptr, 0, 10);
+        return breakLineGreedy(textBuffer, *measuredText, rectangleLineWidth, tabStops, false,
+                               false);
+    }
+
     LineBreakResult doLineBreak(const U16StringPiece& textBuffer, bool doHyphenation,
                                 const std::string& lang, float lineWidth) {
         MeasuredTextBuilder builder;
@@ -80,14 +134,74 @@
         paint.size = 10.0f;  // Make 1em=10px
         paint.localeListId = LocaleListCache::getId(lang);
         builder.addStyleRun(0, textBuffer.size(), std::move(paint), (int)LineBreakStyle::None,
-                            (int)LineBreakWordStyle::None, false);
+                            (int)LineBreakWordStyle::None, true, false);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuffer, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(lineWidth);
         TabStops tabStops(nullptr, 0, 10);
         return breakLineGreedy(textBuffer, *measuredText, rectangleLineWidth, tabStops,
-                               doHyphenation);
+                               doHyphenation, false);
+    }
+
+    LineBreakResult doLineBreakWithNoHyphenSpan(const U16StringPiece& textBuffer,
+                                                const Range& noHyphenRange, float lineWidth) {
+        MeasuredTextBuilder builder;
+        auto family1 = buildFontFamily("Ascii.ttf");
+        auto family2 = buildFontFamily("CustomExtent.ttf");
+        std::vector<std::shared_ptr<FontFamily>> families = {family1, family2};
+        auto fc = FontCollection::create(families);
+        if (noHyphenRange.getStart() != 0) {
+            MinikinPaint paint(fc);
+            paint.size = 10.0f;  // Make 1em=10px
+            paint.localeListId = LocaleListCache::getId("en-US");
+            builder.addStyleRun(0, noHyphenRange.getStart(), std::move(paint),
+                                (int)LineBreakStyle::None, (int)LineBreakWordStyle::None,
+                                true /* hyphenation */, false);
+        }
+        MinikinPaint paint(fc);
+        paint.size = 10.0f;  // Make 1em=10px
+        paint.localeListId = LocaleListCache::getId("en-US");
+        builder.addStyleRun(noHyphenRange.getStart(), noHyphenRange.getEnd(), std::move(paint),
+                            (int)LineBreakStyle::None, (int)LineBreakWordStyle::None,
+                            false /* hyphenation */, false);
+        if (noHyphenRange.getEnd() != textBuffer.size()) {
+            MinikinPaint paint(fc);
+            paint.size = 10.0f;  // Make 1em=10px
+            paint.localeListId = LocaleListCache::getId("en-US");
+            builder.addStyleRun(noHyphenRange.getEnd(), textBuffer.size(), std::move(paint),
+                                (int)LineBreakStyle::None, (int)LineBreakWordStyle::None,
+                                true /* hyphenation */, false);
+        }
+
+        std::unique_ptr<MeasuredText> measuredText = builder.build(
+                textBuffer, false /* compute hyphenation */, false /* compute full layout */,
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
+        RectangleLineWidth rectangleLineWidth(lineWidth);
+        TabStops tabStops(nullptr, 0, 10);
+        return breakLineGreedy(textBuffer, *measuredText, rectangleLineWidth, tabStops,
+                               true /* doHyphenation */, false);
+    }
+
+    LineBreakResult doLineBreakForBounds(const U16StringPiece& textBuffer, bool doHyphenation,
+                                         float lineWidth) {
+        MeasuredTextBuilder builder;
+        auto family1 = buildFontFamily("OvershootTest.ttf");
+        auto family2 = buildFontFamily("Ascii.ttf");
+        std::vector<std::shared_ptr<FontFamily>> families = {family1, family2};
+        auto fc = FontCollection::create(families);
+        MinikinPaint paint(fc);
+        paint.size = 10.0f;  // Make 1em=10px
+        paint.localeListId = LocaleListCache::getId("en-US");
+        builder.addStyleRun(0, textBuffer.size(), std::move(paint), (int)LineBreakStyle::None,
+                            (int)LineBreakWordStyle::None, true, false);
+        std::unique_ptr<MeasuredText> measuredText = builder.build(
+                textBuffer, false /* compute hyphenation */, false /* compute full layout */,
+                true /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
+        RectangleLineWidth rectangleLineWidth(lineWidth);
+        TabStops tabStops(nullptr, 0, 10);
+        return breakLineGreedy(textBuffer, *measuredText, rectangleLineWidth, tabStops,
+                               doHyphenation, true);
     }
 
 private:
@@ -106,18 +220,19 @@
     paint.localeListId = LocaleListCache::getId("en-US");
     const std::vector<uint16_t> textBuffer = utf8ToUtf16("8888888888888888888");
 
-    float measured = Layout::measureText(textBuffer, Range(0, textBuffer.size()), Bidi::LTR, paint,
-                                         StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, nullptr);
+    float measured =
+            Layout::measureText(textBuffer, Range(0, textBuffer.size()), Bidi::LTR, paint,
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, nullptr, nullptr);
 
     builder.addStyleRun(0, textBuffer.size(), std::move(paint), (int)LineBreakStyle::None,
-                        (int)LineBreakWordStyle::None, false);
+                        (int)LineBreakWordStyle::None, true, false);
     std::unique_ptr<MeasuredText> measuredText = builder.build(
             textBuffer, false /* compute hyphenation */, false /* compute full layout */,
-            false /* ignore kerning */, nullptr /* no hint */);
+            false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
     RectangleLineWidth rectangleLineWidth(measured);
     TabStops tabStops(nullptr, 0, 10);
     LineBreakResult r = breakLineGreedy(textBuffer, *measuredText, rectangleLineWidth, tabStops,
-                                        false /* do hyphenation */);
+                                        false /* do hyphenation */, false /* useBoundsForWidth */);
 
     EXPECT_EQ(1u, r.breakPoints.size());
 }
@@ -707,11 +822,11 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(LINE_WIDTH);
         TabStops tabStops(nullptr, 0, 10);
-        const auto actual =
-                breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        const auto actual = breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops,
+                                            DO_HYPHEN, false /* useBoundsForWidth */);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
                                                    << " vs " << std::endl
                                                    << toString(textBuf, actual);
@@ -727,11 +842,11 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(LINE_WIDTH);
         TabStops tabStops(nullptr, 0, 10);
-        const auto actual =
-                breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        const auto actual = breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops,
+                                            DO_HYPHEN, false /* useBoundsForWidth */);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
                                                    << " vs " << std::endl
                                                    << toString(textBuf, actual);
@@ -758,12 +873,12 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(LINE_WIDTH);
         TabStops tabStops(nullptr, 0, 0);
 
-        const auto actual =
-                breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        const auto actual = breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops,
+                                            DO_HYPHEN, false /* useBoundsForWidth */);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
                                                    << " vs " << std::endl
                                                    << toString(textBuf, actual);
@@ -779,12 +894,12 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(LINE_WIDTH);
         TabStops tabStops(nullptr, 0, 0);
 
-        const auto actual =
-                breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        const auto actual = breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops,
+                                            DO_HYPHEN, false /* useBoundsForWidth */);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
                                                    << " vs " << std::endl
                                                    << toString(textBuf, actual);
@@ -843,12 +958,12 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(LINE_WIDTH);
         TabStops tabStops(nullptr, 0, 0);
 
-        const auto actual =
-                breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        const auto actual = breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops,
+                                            DO_HYPHEN, false /* useBoundsForWidth */);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
                                                    << " vs " << std::endl
                                                    << toString(textBuf, actual);
@@ -866,12 +981,12 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(LINE_WIDTH);
         TabStops tabStops(nullptr, 0, 0);
 
-        const auto actual =
-                breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        const auto actual = breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops,
+                                            DO_HYPHEN, false /* useBoundsForWidth */);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
                                                    << " vs " << std::endl
                                                    << toString(textBuf, actual);
@@ -897,12 +1012,12 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(LINE_WIDTH);
         TabStops tabStops(nullptr, 0, CHAR_WIDTH);
 
-        const auto actual =
-                breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        const auto actual = breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops,
+                                            DO_HYPHEN, false /* useBoundsForWidth */);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
                                                    << " vs " << std::endl
                                                    << toString(textBuf, actual);
@@ -1066,10 +1181,11 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
-        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN,
+                               false /* useBoundsForWidth */);
     };
 
     {
@@ -1161,10 +1277,11 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
-        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN,
+                               false /* useBoundsForWidth */);
     };
 
     {
@@ -1249,10 +1366,11 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
-        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN,
+                               false /* useBoundsForWidth */);
     };
 
     {
@@ -1400,10 +1518,11 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
-        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN);
+        return breakLineGreedy(textBuf, *measuredText, rectangleLineWidth, tabStops, DO_HYPHEN,
+                               false /* useBoundsForWidth */);
     };
 
     {
@@ -1589,5 +1708,600 @@
                                                    << toString(textBuf, actual);
     }
 }
+
+TEST_F(GreedyLineBreakerTest, testBreakWithoutBounds_trail) {
+    // The OvershootTest.ttf has following coverage, extent, width and bbox.
+    // U+0061(a): 1em, (   0, 0) - (1,   1)
+    // U+0062(b): 1em, (   0, 0) - (1.5, 1)
+    // U+0063(c): 1em, (   0, 0) - (2,   1)
+    // U+0064(d): 1em, (   0, 0) - (2.5, 1)
+    // U+0065(e): 1em, (-0.5, 0) - (1,   1)
+    // U+0066(f): 1em, (-1.0, 0) - (1,   1)
+    // U+0067(g): 1em, (-1.5, 0) - (1,   1)
+    constexpr bool NO_HYPHEN = false;  // No hyphenation in this test case.
+
+    const std::vector<uint16_t> textBuf = utf8ToUtf16("dddd dddd dddd dddd");
+    constexpr StartHyphenEdit NO_START_HYPHEN = StartHyphenEdit::NO_EDIT;
+    constexpr EndHyphenEdit NO_END_HYPHEN = EndHyphenEdit::NO_EDIT;
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        constexpr float LINE_WIDTH = 1000;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"dddd dddd dddd dddd", 190, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, NO_HYPHEN, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(0, 10, 205, 0), actual.bounds[0]);
+    }
+    {
+        constexpr float LINE_WIDTH = 110;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"dddd dddd ", 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd dddd", 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, NO_HYPHEN, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(0, 10, 105, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(0, 10, 105, 0), actual.bounds[1]);
+    }
+    {
+        constexpr float LINE_WIDTH = 100;
+        // Even if the total advance of "dddd dddd" is 90, the width of bounding box of "dddd dddd"
+        // is
+        // Rect(0em, 1em, 10.5em, 0em). So "dddd dddd" is broken into two lines.
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"dddd ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, NO_HYPHEN, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[1]);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[2]);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[3]);
+    }
+}
+
+TEST_F(GreedyLineBreakerTest, testBreakWithoutBounds_preceding) {
+    // The OvershootTest.ttf has following coverage, extent, width and bbox.
+    // U+0061(a): 1em, (   0, 0) - (1,   1)
+    // U+0062(b): 1em, (   0, 0) - (1.5, 1)
+    // U+0063(c): 1em, (   0, 0) - (2,   1)
+    // U+0064(d): 1em, (   0, 0) - (2.5, 1)
+    // U+0065(e): 1em, (-0.5, 0) - (1,   1)
+    // U+0066(f): 1em, (-1.0, 0) - (1,   1)
+    // U+0067(g): 1em, (-1.5, 0) - (1,   1)
+    constexpr bool NO_HYPHEN = false;  // No hyphenation in this test case.
+
+    const std::vector<uint16_t> textBuf = utf8ToUtf16("gggg gggg gggg gggg");
+    constexpr StartHyphenEdit NO_START_HYPHEN = StartHyphenEdit::NO_EDIT;
+    constexpr EndHyphenEdit NO_END_HYPHEN = EndHyphenEdit::NO_EDIT;
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        constexpr float LINE_WIDTH = 1000;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"gggg gggg gggg gggg", 190, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, NO_HYPHEN, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(-15, 10, 190, 0), actual.bounds[0]);
+    }
+    {
+        constexpr float LINE_WIDTH = 110;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"gggg gggg ", 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg gggg" , 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, NO_HYPHEN, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(-15, 10, 90, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(-15, 10, 90, 0), actual.bounds[1]);
+    }
+    {
+        constexpr float LINE_WIDTH = 100;
+        // Even if the total advance of "dddd dddd" is 90, the width of bounding box of "dddd dddd"
+        // is
+        // Rect(0em, 1em, 10.5em, 0em). So "dddd dddd" is broken into two lines.
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"gggg ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg" , 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, NO_HYPHEN, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[1]);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[2]);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[3]);
+    }
+}
+
+TEST_F(GreedyLineBreakerTest, testBreakWithHyphenation_NoHyphenationSpan) {
+    // "hyphenation" is hyphnated to "hy-phen-a-tion".
+    const std::vector<uint16_t> textBuf = utf8ToUtf16("This is Android. Here is hyphenation.");
+    const Range noHyphenRange(25, 37);  // the range of the word "hyphenation".
+
+    constexpr StartHyphenEdit NO_START_HYPHEN = StartHyphenEdit::NO_EDIT;
+    constexpr EndHyphenEdit END_HYPHEN = EndHyphenEdit::INSERT_HYPHEN;
+    constexpr EndHyphenEdit NO_END_HYPHEN = EndHyphenEdit::NO_EDIT;
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                { "This is "  , 70, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "Android. " , 80, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "Here is "  , 70, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "hyphena-"  , 80, NO_START_HYPHEN,    END_HYPHEN, ASCENT, DESCENT },
+                { "tion."    , 50, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+        };
+        // clang-format on
+
+        const auto actual = doLineBreak(textBuf, true /* do hyphenation */, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                { "This is "   , 70, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "Android. "  , 80, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "Here is "   , 70, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                // Prevent hyphenation of "hyphenation". Fallback to desperate break.
+                { "hyphenatio" ,100, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "n."         , 20, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakWithNoHyphenSpan(textBuf, noHyphenRange, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
+
+TEST_F_WITH_FLAGS(GreedyLineBreakerTest, testPhraseBreakNone,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      word_style_auto))) {
+    // For short hand of writing expectation for lines.
+    auto line = [](std::string t, float w) -> LineBreakExpectation {
+        return {t, w, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, ASCENT, DESCENT};
+    };
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 1));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002" , 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 2));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5" , 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002" , 60),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 3));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002", 40),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 4));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002"  , 20),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 5));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 6));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
+
+TEST_F_WITH_FLAGS(GreedyLineBreakerTest, testPhraseBreakPhrase,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      word_style_auto))) {
+    // For short hand of writing expectation for lines.
+    auto line = [](std::string t, float w) -> LineBreakExpectation {
+        return {t, w, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, ASCENT, DESCENT};
+    };
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 1));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 2));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 3));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 4));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 5));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 6));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
+
+TEST_F_WITH_FLAGS(GreedyLineBreakerTest, testPhraseBreakAuto,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      word_style_auto))) {
+    // For short hand of writing expectation for lines.
+    auto line = [](std::string t, float w) -> LineBreakExpectation {
+        return {t, w, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, ASCENT, DESCENT};
+    };
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 1));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 2));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 3));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 4));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    // When the line becomes more or equal to 5, the phrase based line break is disabled.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 5));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 6));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002"  , 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
+
+TEST_F_WITH_FLAGS(GreedyLineBreakerTest, testPhraseBreak_Korean,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      word_style_auto))) {
+    // For short hand of writing expectation for lines.
+    auto line = [](std::string t, float w) -> LineBreakExpectation {
+        return {t, w, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, ASCENT, DESCENT};
+    };
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        SCOPED_TRACE("LineBreakWOrdStyle::None should break with grapheme bounds");
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(KO_TEXT);
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\uC544\uCE68\uBC25\uC744\u0020\uBA39\uACE0\u0020\uC2F6\uC2B5", 100),
+                line("\uB2C8\uB2E4\u002E", 30),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForKorean(textBuf, LineBreakWordStyle::None, "ko-KR", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        SCOPED_TRACE("LineBreakWOrdStyle::Phrase should break with spaces");
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(KO_TEXT);
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\uC544\uCE68\uBC25\uC744\u0020\uBA39\uACE0\u0020", 70),
+                line("\uC2F6\uC2B5\uB2C8\uB2E4\u002E", 50),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForKorean(textBuf, LineBreakWordStyle::Phrase, "ko-KR", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        SCOPED_TRACE("LineBreakWOrdStyle::Auto should perform as phrase based line break.");
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(KO_TEXT);
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\uC544\uCE68\uBC25\uC744\u0020\uBA39\uACE0\u0020", 70),
+                line("\uC2F6\uC2B5\uB2C8\uB2E4\u002E", 50),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForKorean(textBuf, LineBreakWordStyle::Auto, "ko-KR", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
+
 }  // namespace
 }  // namespace minikin
diff --git a/tests/unittest/LayoutCacheTest.cpp b/tests/unittest/LayoutCacheTest.cpp
index e0dd5f3..5d20456 100644
--- a/tests/unittest/LayoutCacheTest.cpp
+++ b/tests/unittest/LayoutCacheTest.cpp
@@ -36,12 +36,18 @@
 public:
     LayoutCapture() {}
 
-    void operator()(const LayoutPiece& layout, const MinikinPaint& /* dir */) { mLayout = &layout; }
+    void operator()(const LayoutPiece& layout, const MinikinPaint& /* dir */,
+                    const MinikinRect& bounds) {
+        mLayout = &layout;
+        mBounds = bounds;
+    }
 
     const LayoutPiece* get() const { return mLayout; }
+    const MinikinRect& bounds() const { return mBounds; }
 
 private:
     const LayoutPiece* mLayout;
+    MinikinRect mBounds;
 };
 
 TEST(LayoutCacheTest, cacheHitTest) {
@@ -53,11 +59,11 @@
 
     LayoutCapture layout1;
     layoutCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, layout1);
+                            EndHyphenEdit::NO_EDIT, false, layout1);
 
     LayoutCapture layout2;
     layoutCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, layout2);
+                            EndHyphenEdit::NO_EDIT, false, layout2);
 
     EXPECT_EQ(layout1.get(), layout2.get());
 }
@@ -75,59 +81,61 @@
     {
         SCOPED_TRACE("Different text");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         layoutCache.getOrCreate(text2, Range(0, text2.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
         SCOPED_TRACE("Different range");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         layoutCache.getOrCreate(text1, Range(1, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
         SCOPED_TRACE("Different text");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         layoutCache.getOrCreate(text2, Range(0, text2.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
         SCOPED_TRACE("Different direction");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, true /* RTL */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
         SCOPED_TRACE("Different start hyphenation");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::INSERT_HYPHEN, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::INSERT_HYPHEN, EndHyphenEdit::NO_EDIT, false,
+                                layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
         SCOPED_TRACE("Different end hyphen");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::INSERT_HYPHEN, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::INSERT_HYPHEN, false,
+                                layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
         SCOPED_TRACE("Different collection");
         MinikinPaint paint1(buildFontCollection("Ascii.ttf"));
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(buildFontCollection("Emoji.ttf"));
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -136,11 +144,11 @@
         MinikinPaint paint1(collection);
         paint1.size = 10.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.size = 20.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -149,11 +157,11 @@
         MinikinPaint paint1(collection);
         paint1.scaleX = 1.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.scaleX = 2.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -162,11 +170,11 @@
         MinikinPaint paint1(collection);
         paint1.skewX = 1.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.skewX = 2.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -175,11 +183,11 @@
         MinikinPaint paint1(collection);
         paint1.letterSpacing = 0.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.letterSpacing = 1.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -188,11 +196,11 @@
         MinikinPaint paint1(collection);
         paint1.wordSpacing = 0.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.wordSpacing = 1.0f;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -201,11 +209,11 @@
         MinikinPaint paint1(collection);
         paint1.fontFlags = 0;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.fontFlags = LinearMetrics_Flag;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -214,11 +222,11 @@
         MinikinPaint paint1(collection);
         paint1.localeListId = LocaleListCache::getId("en-US");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.localeListId = LocaleListCache::getId("ja-JP");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
@@ -227,24 +235,24 @@
         MinikinPaint paint1(collection);
         paint1.familyVariant = FamilyVariant::DEFAULT;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
         paint2.familyVariant = FamilyVariant::COMPACT;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
     {
         SCOPED_TRACE("Different font feature settings");
         auto collection = buildFontCollection("Ascii.ttf");
         MinikinPaint paint1(collection);
-        paint1.fontFeatureSettings = "";
+        paint1.fontFeatureSettings = FontFeature::parse("");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout1);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout1);
         MinikinPaint paint2(collection);
-        paint2.fontFeatureSettings = "'liga' on";
+        paint2.fontFeatureSettings = FontFeature::parse("'liga' on");
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
         EXPECT_NE(layout1.get(), layout2.get());
     }
 }
@@ -258,18 +266,18 @@
 
     LayoutCapture layout1;
     layoutCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, layout1);
+                            EndHyphenEdit::NO_EDIT, false, layout1);
 
     for (char c = 'a'; c <= 'z'; c++) {
         auto text1 = utf8ToUtf16(std::string(10, c));
         LayoutCapture layout2;
         layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
-                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, layout2);
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, false, layout2);
     }
 
     LayoutCapture layout3;
     layoutCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, layout3);
+                            EndHyphenEdit::NO_EDIT, false, layout3);
     EXPECT_NE(layout1.get(), layout3.get());
 }
 
@@ -282,9 +290,45 @@
 
     LayoutCapture layout;
     layoutCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
-                            EndHyphenEdit::NO_EDIT, layout);
+                            EndHyphenEdit::NO_EDIT, false, layout);
 
     EXPECT_EQ(layoutCache.getCacheSize(), 0u);
 }
 
+TEST(LayoutCacheTest, boundsCalculation) {
+    auto text1 = utf8ToUtf16("android");
+    MinikinPaint paint(buildFontCollection("Ascii.ttf"));
+
+    TestableLayoutCache layoutCache(10);
+
+    LayoutCapture layout1;
+    LayoutCapture layout2;
+
+    {
+        SCOPED_TRACE("Bounds calculation should be treated different layout cache entry");
+        layoutCache.clear();
+        layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT,
+                                false /* calculateBounds */, layout1);
+        layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT,
+                                true /* calculateBounds */, layout2);
+        EXPECT_NE(layout1.get(), layout2.get());
+        EXPECT_FALSE(layout1.bounds().isValid());
+        EXPECT_TRUE(layout2.bounds().isValid());
+    }
+    {
+        SCOPED_TRACE("Bounds calculated entry can be used for the non-bounds request.");
+        layoutCache.clear();
+        layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT,
+                                true /* calculateBounds */, layout1);
+        layoutCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
+                                StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT,
+                                false /* calculateBounds */, layout2);
+        EXPECT_EQ(layout1.get(), layout2.get());
+        EXPECT_TRUE(layout1.bounds().isValid());
+    }
+}
+
 }  // namespace minikin
diff --git a/tests/unittest/LayoutCoreTest.cpp b/tests/unittest/LayoutCoreTest.cpp
index 4edc556..264454a 100644
--- a/tests/unittest/LayoutCoreTest.cpp
+++ b/tests/unittest/LayoutCoreTest.cpp
@@ -39,11 +39,22 @@
     return buildLayout(text, paint);
 }
 
+static std::pair<LayoutPiece, MinikinRect> buildLayoutAndBounds(
+        const std::string& text, std::shared_ptr<FontCollection> fc) {
+    MinikinPaint paint(fc);
+    paint.size = 10.0f;  // make 1em = 10px
+    auto utf16 = utf8ToUtf16(text);
+    LayoutPiece lp = LayoutPiece(utf16, Range(0, utf16.size()), false /* rtl */, paint,
+                                 StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT);
+    MinikinRect rect = LayoutPiece::calculateBounds(lp, paint);
+    return std::make_pair(lp, rect);
+}
+
 static LayoutPiece buildLayout(const std::string& text, std::shared_ptr<FontCollection> fc,
                                const std::string fontFeaturesSettings) {
     MinikinPaint paint(fc);
     paint.size = 10.0f;  // make 1em = 10px
-    paint.fontFeatureSettings = fontFeaturesSettings;
+    paint.fontFeatureSettings = FontFeature::parse(fontFeaturesSettings);
     return buildLayout(text, paint);
 }
 
@@ -250,5 +261,68 @@
     }
 }
 
+TEST(LayoutPieceTest, doLayoutTest_Overshoot) {
+    // See doLayoutTest for the details of OvershootTest.ttf
+    // The OvershootTest.ttf has following coverage, extent, width and bbox.
+    // U+0061: 1em, (   0, 0) - (1,   1)
+    // U+0062: 1em, (   0, 0) - (1.5, 1)
+    // U+0063: 1em, (   0, 0) - (2,   1)
+    // U+0064: 1em, (   0, 0) - (2.5, 1)
+    // U+0065: 1em, (-0.5, 0) - (1,   1)
+    // U+0066: 1em, (-1.0, 0) - (1,   1)
+    // U+0067: 1em, (-1.5, 0) - (1,   1)
+    auto fc = makeFontCollection({"OvershootTest.ttf"});
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("a", fc);
+        EXPECT_EQ(1u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(0, 10, 10, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("b", fc);
+        EXPECT_EQ(1u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(0, 10, 15, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("c", fc);
+        EXPECT_EQ(1u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(0, 10, 20, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("d", fc);
+        EXPECT_EQ(1u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(0, 10, 25, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("e", fc);
+        EXPECT_EQ(1u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(-5, 10, 10, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("f", fc);
+        EXPECT_EQ(1u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(-10, 10, 10, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("g", fc);
+        EXPECT_EQ(1u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(-15, 10, 10, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("ag", fc);
+        EXPECT_EQ(2u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(-5, 10, 20, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("ga", fc);
+        EXPECT_EQ(2u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(-15, 10, 20, 0), bounds);
+    }
+    {
+        auto [layout, bounds] = buildLayoutAndBounds("dg", fc);
+        EXPECT_EQ(2u, layout.glyphCount());
+        EXPECT_EQ(MinikinRect(-5, 10, 25, 0), bounds);
+    }
+}
+
 }  // namespace
 }  // namespace minikin
diff --git a/tests/unittest/LayoutTest.cpp b/tests/unittest/LayoutTest.cpp
index 7771051..4f292b6 100644
--- a/tests/unittest/LayoutTest.cpp
+++ b/tests/unittest/LayoutTest.cpp
@@ -449,7 +449,7 @@
         std::vector<float> advances(text.size());
         Range range(0, text.size());
         EXPECT_EQ(1.0f, Layout::measureText(text, range, Bidi::LTR, paint, StartHyphenEdit::NO_EDIT,
-                                            EndHyphenEdit::NO_EDIT, advances.data()));
+                                            EndHyphenEdit::NO_EDIT, advances.data(), nullptr));
         ASSERT_EQ(1u, advances.size());
         EXPECT_EQ(1.0f, advances[0]);
     }
@@ -459,7 +459,7 @@
         std::vector<float> advances(text.size());
         Range range(0, text.size());
         EXPECT_EQ(6.0f, Layout::measureText(text, range, Bidi::LTR, paint, StartHyphenEdit::NO_EDIT,
-                                            EndHyphenEdit::NO_EDIT, advances.data()));
+                                            EndHyphenEdit::NO_EDIT, advances.data(), nullptr));
         ASSERT_EQ(2u, advances.size());
         EXPECT_EQ(1.0f, advances[0]);
         EXPECT_EQ(5.0f, advances[1]);
@@ -471,7 +471,7 @@
         Range range(0, text.size());
         EXPECT_EQ(16.0f,
                   Layout::measureText(text, range, Bidi::LTR, paint, StartHyphenEdit::NO_EDIT,
-                                      EndHyphenEdit::NO_EDIT, advances.data()));
+                                      EndHyphenEdit::NO_EDIT, advances.data(), nullptr));
         ASSERT_EQ(3u, advances.size());
         EXPECT_EQ(1.0f, advances[0]);
         EXPECT_EQ(5.0f, advances[1]);
diff --git a/tests/unittest/LineBreakerTestHelper.h b/tests/unittest/LineBreakerTestHelper.h
index 5a86175..cb1d161 100644
--- a/tests/unittest/LineBreakerTestHelper.h
+++ b/tests/unittest/LineBreakerTestHelper.h
@@ -53,10 +53,12 @@
 
     virtual bool isRtl() const override { return false; }
     virtual bool canBreak() const override { return true; }
+    virtual bool canHyphenate() const override { return true; }
     virtual uint32_t getLocaleListId() const { return mLocaleListId; }
 
-    virtual void getMetrics(const U16StringPiece&, std::vector<float>* advances, LayoutPieces*,
-                            LayoutPieces*) const {
+    virtual void getMetrics(const U16StringPiece&, std::vector<float>* advances,
+                            std::vector<uint8_t>* /*flags*/, LayoutPieces*,
+                            bool /*boundsCalculation*/, LayoutPieces*) const {
         std::fill(advances->begin() + mRange.getStart(), advances->begin() + mRange.getEnd(),
                   mWidth);
     }
@@ -72,6 +74,12 @@
         return {mAscent, mDescent};
     }
 
+    virtual LineMetrics getLineMetrics(const U16StringPiece& text, const Range& range,
+                                       const LayoutPieces& pieces) const {
+        auto [adv, rect] = getBounds(text, range, pieces);
+        return LineMetrics(getExtent(text, range, pieces), rect, adv);
+    }
+
     virtual const MinikinPaint* getPaint() const { return &mPaint; }
 
     virtual float measureHyphenPiece(const U16StringPiece&, const Range& range,
@@ -198,11 +206,13 @@
         if (isInsertion(endEdit)) {
             hyphenatedStr.push_back('-');
         }
-        char lineMsg[128] = {};
+        char lineMsg[256] = {};
         snprintf(lineMsg, sizeof(lineMsg),
-                 "Line %2d, Width: %5.1f, Hyphen(%hhu, %hhu), Extent(%5.1f, %5.1f), Text: \"%s\"\n",
+                 "Line %2d, Width: %5.1f, Hyphen(%hhu, %hhu), Extent(%5.1f, %5.1f), Bounds(%f, %f, "
+                 "%f, %f), Text: \"%s\"\n",
                  i, lines.widths[i], startEdit, endEdit, lines.ascents[i], lines.descents[i],
-                 hyphenatedStr.c_str());
+                 lines.bounds[i].mLeft, lines.bounds[i].mTop, lines.bounds[i].mRight,
+                 lines.bounds[i].mBottom, hyphenatedStr.c_str());
         out += lineMsg;
     }
     return out;
diff --git a/tests/unittest/MeasuredTextTest.cpp b/tests/unittest/MeasuredTextTest.cpp
index 845b5f1..b07ccf5 100644
--- a/tests/unittest/MeasuredTextTest.cpp
+++ b/tests/unittest/MeasuredTextTest.cpp
@@ -39,17 +39,19 @@
 
     MinikinPaint paint1(font);
     paint1.size = 10.0f;  // make 1em = 10px
-    builder.addStyleRun(0, 2, std::move(paint1), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, 2, std::move(paint1), lbStyle, lbWordStyle, true /* can hyphenate */,
+                        false /* is RTL */);
     builder.addReplacementRun(2, 4, REPLACEMENT_WIDTH, 0 /* locale list id */);
     MinikinPaint paint2(font);
     paint2.size = 10.0f;  // make 1em = 10px
-    builder.addStyleRun(4, 6, std::move(paint2), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(4, 6, std::move(paint2), lbStyle, lbWordStyle, true /* can hyphenate */,
+                        false /* is RTL */);
 
     std::vector<uint16_t> text(CHAR_COUNT, 'a');
 
-    std::unique_ptr<MeasuredText> measuredText =
-            builder.build(text, true /* compute hyphenation */, false /* compute full layout */,
-                          false /* ignore kerning */, nullptr /* no hint */);
+    std::unique_ptr<MeasuredText> measuredText = builder.build(
+            text, true /* compute hyphenation */, false /* compute full layout */,
+            false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
 
     ASSERT_TRUE(measuredText);
 
@@ -69,9 +71,11 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     EXPECT_EQ(MinikinRect(0.0f, 0.0f, 0.0f, 0.0f), mt->getBounds(text, Range(0, 0)));
     EXPECT_EQ(MinikinRect(0.0f, 10.0f, 10.0f, 0.0f), mt->getBounds(text, Range(0, 1)));
@@ -89,9 +93,11 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     EXPECT_EQ(MinikinRect(0.0f, 10.0f, 10.0f, 0.0f), mt->getBounds(text, Range(0, 1)));
 }
@@ -105,9 +111,11 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle, true /* is RTL */);
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, true /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     EXPECT_EQ(MinikinRect(0.0f, 30.0f, 30.0f, 0.0f), mt->getBounds(text, Range(0, 2)));
 }
@@ -122,13 +130,15 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     MinikinPaint paint2(font);
     paint2.size = 20.0f;
     builder.addStyleRun(helloLength, text.size(), std::move(paint2), lbStyle, lbWordStyle,
-                        false /* is RTL */);
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     EXPECT_EQ(MinikinRect(0.0f, 0.0f, 0.0f, 0.0f), mt->getBounds(text, Range(0, 0)));
     EXPECT_EQ(MinikinRect(0.0f, 10.0f, 10.0f, 0.0f), mt->getBounds(text, Range(0, 1)));
@@ -149,9 +159,11 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kernign */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kernign */,
+                            nullptr /* no hint */);
 
     EXPECT_EQ(MinikinExtent(0.0f, 0.0f), mt->getExtent(text, Range(0, 0)));
     EXPECT_EQ(MinikinExtent(-80.0f, 20.0f), mt->getExtent(text, Range(0, 1)));
@@ -170,13 +182,16 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     MinikinPaint paint2(font);
     paint2.size = 20.0f;
     builder.addStyleRun(helloLength, text.size(), std::move(paint2), 0 /* no line break */,
-                        0 /* no line break word style */, false /* is RTL */);
+                        0 /* no line break word style */, true /* can hyphenate */,
+                        false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     EXPECT_EQ(MinikinExtent(0.0f, 0.0f), mt->getExtent(text, Range(0, 0)));
     EXPECT_EQ(MinikinExtent(-80.0f, 20.0f), mt->getExtent(text, Range(0, 1)));
@@ -198,9 +213,11 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     MinikinRect rect;
     MinikinPaint samePaint(font);
@@ -280,13 +297,15 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     MinikinPaint paint2(font);
     paint2.size = 20.0f;
     builder.addStyleRun(helloLength, text.size(), std::move(paint2), lbStyle, lbWordStyle,
-                        false /* is RTL */);
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     MinikinRect rect;
     MinikinPaint samePaint(font);
@@ -368,9 +387,11 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     MinikinRect rect;
     MinikinPaint differentPaint(font);
@@ -450,13 +471,15 @@
     MeasuredTextBuilder builder;
     MinikinPaint paint(font);
     paint.size = 10.0f;
-    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle, false /* is RTL */);
+    builder.addStyleRun(0, helloLength, std::move(paint), lbStyle, lbWordStyle,
+                        true /* can hyphenate */, false /* is RTL */);
     MinikinPaint paint2(font);
     paint2.size = 20.0f;
     builder.addStyleRun(helloLength, text.size(), std::move(paint2), lbStyle, lbWordStyle,
-                        false /* is RTL */);
+                        true /* can hyphenate */, false /* is RTL */);
     auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
-                            false /* ignore kerning */, nullptr /* no hint */);
+                            false /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
 
     MinikinRect rect;
     MinikinPaint differentPaint(font);
@@ -566,9 +589,11 @@
 
     MeasuredTextBuilder looseStyleBuilder;
     MinikinPaint paint(font);
-    looseStyleBuilder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle, false);
+    looseStyleBuilder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                                  true /* can hyphenate */, false);
     auto mt = looseStyleBuilder.build(text, true /* hyphenation */, true /* full layout */,
-                                      false /* ignore kerning */, nullptr /* no hint */);
+                                      false /* computeBounds */, false /* ignore kerning */,
+                                      nullptr /* no hint */);
 
     EXPECT_EQ((size_t)1, mt->runs.size());
     EXPECT_EQ(LineBreakStyle::Loose, mt->runs[0]->lineBreakStyle());
@@ -578,9 +603,10 @@
     MeasuredTextBuilder normalStyleBuilder;
     MinikinPaint normalStylePaint(font);
     normalStyleBuilder.addStyleRun(0, text.size(), std::move(normalStylePaint), lbStyle,
-                                   lbWordStyle, false);
+                                   lbWordStyle, true /* can hyphenate */, false);
     mt = normalStyleBuilder.build(text, true /* hyphenation */, true /* full layout */,
-                                  false /* ignore kerning */, nullptr /* no hint */);
+                                  false /* computeBounds */, false /* ignore kerning */,
+                                  nullptr /* no hint */);
 
     EXPECT_EQ((size_t)1, mt->runs.size());
     EXPECT_EQ(LineBreakStyle::Normal, mt->runs[0]->lineBreakStyle());
@@ -591,9 +617,10 @@
     MeasuredTextBuilder strictStyleBuilder;
     MinikinPaint strictStylePaint(font);
     strictStyleBuilder.addStyleRun(0, text.size(), std::move(strictStylePaint), lbStyle,
-                                   lbWordStyle, false);
+                                   lbWordStyle, true /* can hyphenate */, false);
     mt = strictStyleBuilder.build(text, true /* hyphenation */, true /* full layout */,
-                                  false /* ignore kerning */, nullptr /* no hint */);
+                                  false /* computeBounds */, false /* ignore kerning */,
+                                  nullptr /* no hint */);
 
     EXPECT_EQ((size_t)1, mt->runs.size());
     EXPECT_EQ(LineBreakStyle::Strict, mt->runs[0]->lineBreakStyle());
@@ -608,7 +635,8 @@
     Range range(0, text.size());
     MinikinPaint paint(font);
 
-    StyleRun styleRun(range, std::move(paint), lbStyle, lbWordStyle, false /* isRtl */);
+    StyleRun styleRun(range, std::move(paint), lbStyle, lbWordStyle, true /* can hyphenate */,
+                      false /* isRtl */);
     EXPECT_EQ(LineBreakStyle::Strict, styleRun.lineBreakStyle());
     EXPECT_EQ(LineBreakWordStyle::Phrase, styleRun.lineBreakWordStyle());
 
@@ -617,4 +645,38 @@
     EXPECT_EQ(LineBreakWordStyle::None, replacementRun.lineBreakWordStyle());
 }
 
+TEST(MeasuredTextTest, hasOverhang_false) {
+    auto text = utf8ToUtf16("Hello, World!");
+    auto font = buildFontCollection("Ascii.ttf");
+    int lbStyle = (int)LineBreakStyle::None;
+    int lbWordStyle = (int)LineBreakWordStyle::None;
+
+    MeasuredTextBuilder builder;
+    MinikinPaint paint(font);
+    paint.size = 10.0f;
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* hyphenation */, false /* is RTL */);
+    auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
+                            true /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
+    EXPECT_FALSE(mt->hasOverhang(Range(0, text.size())));
+}
+
+TEST(MeasuredTextTest, hasOverhang_true) {
+    auto text = utf8ToUtf16("b");
+    auto font = buildFontCollection("OvershootTest.ttf");
+    int lbStyle = (int)LineBreakStyle::None;
+    int lbWordStyle = (int)LineBreakWordStyle::None;
+
+    MeasuredTextBuilder builder;
+    MinikinPaint paint(font);
+    paint.size = 10.0f;
+    builder.addStyleRun(0, text.size(), std::move(paint), lbStyle, lbWordStyle,
+                        true /* hyphenation */, false /* is RTL */);
+    auto mt = builder.build(text, true /* hyphenation */, true /* full layout */,
+                            true /* computeBounds */, false /* ignore kerning */,
+                            nullptr /* no hint */);
+    EXPECT_TRUE(mt->hasOverhang(Range(0, text.size())));
+}
+
 }  // namespace minikin
diff --git a/tests/unittest/OptimalLineBreakerTest.cpp b/tests/unittest/OptimalLineBreakerTest.cpp
index 18619e3..003db71 100644
--- a/tests/unittest/OptimalLineBreakerTest.cpp
+++ b/tests/unittest/OptimalLineBreakerTest.cpp
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#include <memory>
-
+#include <com_android_text_flags.h>
+#include <flag_macros.h>
 #include <gtest/gtest.h>
 
-#include "minikin/Hyphenator.h"
+#include <memory>
 
 #include "FileUtils.h"
 #include "FontTestUtils.h"
@@ -29,6 +29,7 @@
 #include "OptimalLineBreaker.h"
 #include "UnicodeUtils.h"
 #include "WordBreaker.h"
+#include "minikin/Hyphenator.h"
 
 namespace minikin {
 namespace {
@@ -47,6 +48,12 @@
 constexpr float CUSTOM_ASCENT = -160.0f;
 constexpr float CUSTOM_DESCENT = 40.0f;
 
+// A test string for Japanese. The meaning is that "Today is a sunny day."
+// The expected line break of phrase and non-phrase cases are:
+//     Phrase: | \u672C\u65E5\u306F | \u6674\u5929\u306A\u308A\u3002 |
+// Non-Phrase: | \u672C | \u65E5 | \u306F | \u6674 | \u5929 | \u306A | \u308A\u3002 |
+const char* JP_TEXT = "\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002";
+
 class OptimalLineBreakerTest : public testing::Test {
 public:
     OptimalLineBreakerTest() {}
@@ -75,20 +82,90 @@
         MinikinPaint paint(fc);
         paint.size = 10.0f;  // Make 1em=10px
         paint.localeListId = LocaleListCache::getId(lang);
-        builder.addStyleRun(0, textBuffer.size(), std::move(paint), 0, 0, false);
+        builder.addStyleRun(0, textBuffer.size(), std::move(paint), 0, 0, true, false);
         bool computeHyphen = frequency != HyphenationFrequency::None;
         std::unique_ptr<MeasuredText> measuredText =
                 builder.build(textBuffer, computeHyphen, false /* compute full layout */,
-                              ignoreKerning, nullptr /* no hint */);
+                              false /* computeBounds */, ignoreKerning, nullptr /* no hint */);
         return doLineBreak(textBuffer, *measuredText, strategy, frequency, lineWidth);
     }
 
+    LineBreakResult doLineBreakForJapanese(const U16StringPiece& textBuffer,
+                                           LineBreakWordStyle lbwStyle, const std::string& lang,
+                                           float lineWidth) {
+        MeasuredTextBuilder builder;
+        auto family1 = buildFontFamily("Japanese.ttf");
+        std::vector<std::shared_ptr<FontFamily>> families = {family1};
+        auto fc = FontCollection::create(families);
+        MinikinPaint paint(fc);
+        paint.size = 10.0f;  // Make 1em=10px
+        paint.localeListId = LocaleListCache::getId(lang);
+        builder.addStyleRun(0, textBuffer.size(), std::move(paint), 0, (int)lbwStyle, true, false);
+        std::unique_ptr<MeasuredText> measuredText = builder.build(
+                textBuffer, false /* computeHyphen */, false /* compute full layout */,
+                false /* computeBounds */, false /* ignoreKerning */, nullptr /* no hint */);
+        return doLineBreak(textBuffer, *measuredText, BreakStrategy::HighQuality,
+                           HyphenationFrequency::None, lineWidth);
+    }
+    LineBreakResult doLineBreakWithNoHyphenSpan(const U16StringPiece& textBuffer,
+                                                const Range& noHyphenRange, float lineWidth) {
+        MeasuredTextBuilder builder;
+        auto family1 = buildFontFamily("Ascii.ttf");
+        auto family2 = buildFontFamily("CustomExtent.ttf");
+        std::vector<std::shared_ptr<FontFamily>> families = {family1, family2};
+        auto fc = FontCollection::create(families);
+        if (noHyphenRange.getStart() != 0) {
+            MinikinPaint paint(fc);
+            paint.size = 10.0f;  // Make 1em=10px
+            paint.localeListId = LocaleListCache::getId("en-US");
+            builder.addStyleRun(0, noHyphenRange.getStart(), std::move(paint), 0, 0,
+                                true /* hyphenation */, false);
+        }
+        MinikinPaint paint(fc);
+        paint.size = 10.0f;  // Make 1em=10px
+        paint.localeListId = LocaleListCache::getId("en-US");
+        builder.addStyleRun(noHyphenRange.getStart(), noHyphenRange.getEnd(), std::move(paint), 0,
+                            0, false /* no hyphenation */, false);
+        if (noHyphenRange.getEnd() != textBuffer.size()) {
+            MinikinPaint paint(fc);
+            paint.size = 10.0f;  // Make 1em=10px
+            paint.localeListId = LocaleListCache::getId("en-US");
+            builder.addStyleRun(noHyphenRange.getEnd(), textBuffer.size(), std::move(paint), 0, 0,
+                                true /* hyphenation */, false);
+        }
+        std::unique_ptr<MeasuredText> measuredText = builder.build(
+                textBuffer, true /* computeHyphen */, false /* compute full layout */,
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
+        return doLineBreak(textBuffer, *measuredText, BreakStrategy::HighQuality,
+                           HyphenationFrequency::Normal, lineWidth);
+    }
+
+    LineBreakResult doLineBreakForBounds(const U16StringPiece& textBuffer, BreakStrategy strategy,
+                                         HyphenationFrequency frequency, float lineWidth) {
+        MeasuredTextBuilder builder;
+        auto family1 = buildFontFamily("OvershootTest.ttf");
+        auto family2 = buildFontFamily("Ascii.ttf");
+        std::vector<std::shared_ptr<FontFamily>> families = {family1, family2};
+        auto fc = FontCollection::create(families);
+        MinikinPaint paint(fc);
+        paint.size = 10.0f;  // Make 1em=10px
+        paint.localeListId = LocaleListCache::getId("en-US");
+        builder.addStyleRun(0, textBuffer.size(), std::move(paint), 0, 0, true, false);
+        bool computeHyphen = frequency != HyphenationFrequency::None;
+        std::unique_ptr<MeasuredText> measuredText = builder.build(
+                textBuffer, computeHyphen, false /* compute full layout */,
+                true /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
+        RectangleLineWidth rectangleLineWidth(lineWidth);
+        return breakLineOptimal(textBuffer, *measuredText, rectangleLineWidth, strategy, frequency,
+                                false /* justified */, true /* useBoundsForWidth */);
+    }
+
     LineBreakResult doLineBreak(const U16StringPiece& textBuffer, const MeasuredText& measuredText,
                                 BreakStrategy strategy, HyphenationFrequency frequency,
                                 float lineWidth) {
         RectangleLineWidth rectangleLineWidth(lineWidth);
         return breakLineOptimal(textBuffer, measuredText, rectangleLineWidth, strategy, frequency,
-                                false /* justified */);
+                                false /* justified */, false /* useBoundsForWidth */);
     }
 
     void expectBreak(const std::vector<LineBreakExpectation>& expect,
@@ -759,7 +836,7 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, true /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
 
         const auto actual =
                 doLineBreak(textBuf, *measuredText, HIGH_QUALITY, NORMAL_HYPHENATION, LINE_WIDTH);
@@ -778,7 +855,7 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, true /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
 
         const auto actual =
                 doLineBreak(textBuf, *measuredText, HIGH_QUALITY, NORMAL_HYPHENATION, LINE_WIDTH);
@@ -809,7 +886,7 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, true /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
 
         const auto actual =
                 doLineBreak(textBuf, *measuredText, HIGH_QUALITY, NORMAL_HYPHENATION, LINE_WIDTH);
@@ -828,7 +905,7 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, true /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         const auto actual =
                 doLineBreak(textBuf, *measuredText, HIGH_QUALITY, NORMAL_HYPHENATION, LINE_WIDTH);
         EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
@@ -903,7 +980,7 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measured = builder.build(
                 textBuf, true /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
 
         // clang-format off
         std::vector<LineBreakExpectation> expect = {
@@ -946,7 +1023,7 @@
                                           DESCENT);
         std::unique_ptr<MeasuredText> measured = builder.build(
                 textBuf, true /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
 
         // clang-format off
         std::vector<LineBreakExpectation> expect = {
@@ -1101,12 +1178,12 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
         return breakLineOptimal(textBuf, *measuredText, rectangleLineWidth,
                                 BreakStrategy::HighQuality, HyphenationFrequency::None,
-                                false /* justified */);
+                                false /* justified */, false /* useBoundsForWidth */);
     };
 
     {
@@ -1194,12 +1271,12 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
         return breakLineOptimal(textBuf, *measuredText, rectangleLineWidth,
                                 BreakStrategy::HighQuality, HyphenationFrequency::None,
-                                false /* justified */);
+                                false /* justified */, false /* useBoundsForWidth */);
     };
 
     {
@@ -1282,12 +1359,12 @@
         builder.addReplacementRun(19, 24, 5 * CHAR_WIDTH, LocaleListCache::getId("en-US"));
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
         return breakLineOptimal(textBuf, *measuredText, rectangleLineWidth,
                                 BreakStrategy::HighQuality, HyphenationFrequency::None,
-                                false /* justified */);
+                                false /* justified */, false /* useBoundsForWidth */);
     };
 
     {
@@ -1358,12 +1435,12 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore krening */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore krening */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
         return breakLineOptimal(textBuf, *measuredText, rectangleLineWidth,
                                 BreakStrategy::HighQuality, HyphenationFrequency::None,
-                                false /* justified */);
+                                false /* justified */, false /* useBoundsForWidth */);
     };
 
     {
@@ -1515,12 +1592,12 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
         return breakLineOptimal(textBuf, *measuredText, rectangleLineWidth,
                                 BreakStrategy::HighQuality, HyphenationFrequency::None,
-                                false /* justified */);
+                                false /* justified */, false /* useBoundsForWidth */);
     };
 
     {
@@ -1650,12 +1727,12 @@
 
         std::unique_ptr<MeasuredText> measuredText = builder.build(
                 textBuf, false /* compute hyphenation */, false /* compute full layout */,
-                false /* ignore kerning */, nullptr /* no hint */);
+                false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
         RectangleLineWidth rectangleLineWidth(width);
         TabStops tabStops(nullptr, 0, 0);
         return breakLineOptimal(textBuf, *measuredText, rectangleLineWidth,
                                 BreakStrategy::HighQuality, HyphenationFrequency::Normal,
-                                false /* justified */);
+                                false /* justified */, false /* useBoundsForWidth */);
     };
 
     {
@@ -1856,12 +1933,13 @@
     const std::vector<uint16_t> textBuffer = utf8ToUtf16("8888888888888888888");
 
     float measured = Layout::measureText(textBuffer, Range(0, textBuffer.size()), Bidi::LTR, paint,
-                                         StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, nullptr);
+                                         StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, nullptr,
+                                         nullptr /* bounds */);
 
-    builder.addStyleRun(0, textBuffer.size(), std::move(paint), 0, 0, false);
+    builder.addStyleRun(0, textBuffer.size(), std::move(paint), 0, 0, true, false);
     std::unique_ptr<MeasuredText> measuredText = builder.build(
             textBuffer, false /* compute hyphenation */, false /* compute full layout */,
-            false /* ignore kerning */, nullptr /* no hint */);
+            false /* computeBounds */, false /* ignore kerning */, nullptr /* no hint */);
     RectangleLineWidth rectangleLineWidth(measured);
     TabStops tabStops(nullptr, 0, 10);
     LineBreakResult r = doLineBreak(textBuffer, *measuredText, BreakStrategy::Balanced,
@@ -1870,5 +1948,533 @@
     EXPECT_EQ(1u, r.breakPoints.size());
 }
 
+TEST_F(OptimalLineBreakerTest, testBreakWithoutBounds_trailing) {
+    // The OvershootTest.ttf has following coverage, extent, width and bbox.
+    // U+0061(a): 1em, (   0, 0) - (1,   1)
+    // U+0062(b): 1em, (   0, 0) - (1.5, 1)
+    // U+0063(c): 1em, (   0, 0) - (2,   1)
+    // U+0064(d): 1em, (   0, 0) - (2.5, 1)
+    // U+0065(e): 1em, (-0.5, 0) - (1,   1)
+    // U+0066(f): 1em, (-1.0, 0) - (1,   1)
+    // U+0067(g): 1em, (-1.5, 0) - (1,   1)
+    const std::vector<uint16_t> textBuf = utf8ToUtf16("dddd dddd dddd dddd");
+    constexpr StartHyphenEdit NO_START_HYPHEN = StartHyphenEdit::NO_EDIT;
+    constexpr EndHyphenEdit NO_END_HYPHEN = EndHyphenEdit::NO_EDIT;
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        constexpr float LINE_WIDTH = 1000;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"dddd dddd dddd dddd", 190, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, BreakStrategy::HighQuality,
+                                                 HyphenationFrequency::None, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(0, 10, 205, 0), actual.bounds[0]);
+    }
+    {
+        constexpr float LINE_WIDTH = 110;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"dddd dddd ", 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd dddd", 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, BreakStrategy::HighQuality,
+                                                 HyphenationFrequency::None, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(0, 10, 105, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(0, 10, 105, 0), actual.bounds[1]);
+    }
+    {
+        constexpr float LINE_WIDTH = 100;
+        // Even if the total advance of "dddd dddd" is 90, the width of bounding box of "dddd dddd"
+        // is
+        // Rect(0em, 1em, 10.5em, 0em). So "dddd dddd" is broken into two lines.
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"dddd ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"dddd", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, BreakStrategy::HighQuality,
+                                                 HyphenationFrequency::None, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[1]);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[2]);
+        EXPECT_EQ(MinikinRect(0, 10, 55, 0), actual.bounds[3]);
+    }
+}
+
+TEST_F(OptimalLineBreakerTest, testBreakWithoutBounds_preceding) {
+    // The OvershootTest.ttf has following coverage, extent, width and bbox.
+    // U+0061(a): 1em, (   0, 0) - (1,   1)
+    // U+0062(b): 1em, (   0, 0) - (1.5, 1)
+    // U+0063(c): 1em, (   0, 0) - (2,   1)
+    // U+0064(d): 1em, (   0, 0) - (2.5, 1)
+    // U+0065(e): 1em, (-0.5, 0) - (1,   1)
+    // U+0066(f): 1em, (-1.0, 0) - (1,   1)
+    // U+0067(g): 1em, (-1.5, 0) - (1,   1)
+    const std::vector<uint16_t> textBuf = utf8ToUtf16("gggg gggg gggg gggg");
+    constexpr StartHyphenEdit NO_START_HYPHEN = StartHyphenEdit::NO_EDIT;
+    constexpr EndHyphenEdit NO_END_HYPHEN = EndHyphenEdit::NO_EDIT;
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        constexpr float LINE_WIDTH = 1000;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"gggg gggg gggg gggg", 190, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, BreakStrategy::HighQuality,
+                                                 HyphenationFrequency::None, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(-15, 10, 190, 0), actual.bounds[0]);
+    }
+    {
+        constexpr float LINE_WIDTH = 110;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"gggg gggg ", 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg gggg", 90, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, BreakStrategy::HighQuality,
+                                                 HyphenationFrequency::None, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(-15, 10, 90, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(-15, 10, 90, 0), actual.bounds[1]);
+    }
+    {
+        constexpr float LINE_WIDTH = 100;
+        // Even if the total advance of "gggg gggg" is 90, the width of bounding box of "gggg gggg"
+        // is
+        // Rect(0em, 1em, 10.5em, 0em). So "gggg gggg" is broken into two lines.
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                {"gggg ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg ", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+                {"gggg", 40, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT},
+        };
+        // clang-format on
+
+        const auto actual = doLineBreakForBounds(textBuf, BreakStrategy::HighQuality,
+                                                 HyphenationFrequency::None, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[0]);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[1]);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[2]);
+        EXPECT_EQ(MinikinRect(-15, 10, 40, 0), actual.bounds[3]);
+    }
+}
+
+TEST_F(OptimalLineBreakerTest, testBreakWithHyphenation_NoHyphenSpan) {
+    const std::vector<uint16_t> textBuffer = utf8ToUtf16("This is Android. Here is hyphenation.");
+    const Range noHyphenRange(25, 37);  // the range of the word "hyphenation".
+
+    constexpr StartHyphenEdit NO_START_HYPHEN = StartHyphenEdit::NO_EDIT;
+    constexpr EndHyphenEdit NO_END_HYPHEN = EndHyphenEdit::NO_EDIT;
+    constexpr EndHyphenEdit END_HYPHEN = EndHyphenEdit::INSERT_HYPHEN;
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        constexpr float LINE_WIDTH = 170;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                { "This is Android. " , 160, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "Here is hyphena-"  , 160, NO_START_HYPHEN,    END_HYPHEN, ASCENT, DESCENT },
+                { "tion."             ,  50, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+        };
+        // clang-format on
+
+        auto actual =
+                doLineBreak(textBuffer, BreakStrategy::HighQuality, HyphenationFrequency::Normal,
+                            "en-US", LINE_WIDTH, false /* ignore kerning */);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuffer, actual);
+    }
+    {
+        constexpr float LINE_WIDTH = 170;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                { "This is An-"    , 110, NO_START_HYPHEN,    END_HYPHEN, ASCENT, DESCENT },
+                { "droid. Here is ", 140, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+                { "hyphenation."   , 120, NO_START_HYPHEN, NO_END_HYPHEN, ASCENT, DESCENT },
+        };
+        // clang-format on
+
+        auto actual = doLineBreakWithNoHyphenSpan(textBuffer, noHyphenRange, LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuffer, actual);
+    }
+}
+
+TEST_F_WITH_FLAGS(OptimalLineBreakerTest, testPhraseBreakNone,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      word_style_auto))) {
+    // For short hand of writing expectation for lines.
+    auto line = [](std::string t, float w) -> LineBreakExpectation {
+        return {t, w, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, ASCENT, DESCENT};
+    };
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 1));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002" , 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 2));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5" , 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002" , 60),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 3));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002", 40),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 4));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002"  , 20),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 5));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 6));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::None, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
+
+TEST_F_WITH_FLAGS(OptimalLineBreakerTest, testPhraseBreakPhrase,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      word_style_auto))) {
+    // For short hand of writing expectation for lines.
+    auto line = [](std::string t, float w) -> LineBreakExpectation {
+        return {t, w, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, ASCENT, DESCENT};
+    };
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 1));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 2));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 3));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 4));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 5));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 6));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Phrase, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
+
+TEST_F_WITH_FLAGS(OptimalLineBreakerTest, testPhraseBreakAuto,
+                  REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::text::flags,
+                                                      word_style_auto))) {
+    // For short hand of writing expectation for lines.
+    auto line = [](std::string t, float w) -> LineBreakExpectation {
+        return {t, w, StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, ASCENT, DESCENT};
+    };
+
+    // Note that disable clang-format everywhere since aligned expectation is more readable.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 1));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 2));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 3));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 4));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    // When the line becomes more or equal to 5, the phrase based line break is disabled.
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 5));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+    {
+        const std::vector<uint16_t> textBuf = utf8ToUtf16(repeat(JP_TEXT, 6));
+        constexpr float LINE_WIDTH = 100;
+        // clang-format off
+        std::vector<LineBreakExpectation> expect = {
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5", 100),
+                line("\u306F\u6674\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674", 100),
+                line("\u5929\u306A\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A", 100),
+                line("\u308A\u3002\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002", 100),
+                line("\u672C\u65E5\u306F\u6674\u5929\u306A\u308A\u3002"  , 80),
+        };
+        // clang-format on
+
+        const auto actual =
+                doLineBreakForJapanese(textBuf, LineBreakWordStyle::Auto, "ja-JP", LINE_WIDTH);
+        EXPECT_TRUE(sameLineBreak(expect, actual)) << toString(expect) << std::endl
+                                                   << " vs " << std::endl
+                                                   << toString(textBuf, actual);
+    }
+}
 }  // namespace
 }  // namespace minikin
diff --git a/tests/unittest/ScriptUtilsTest.cpp b/tests/unittest/ScriptUtilsTest.cpp
new file mode 100644
index 0000000..cbd9a56
--- /dev/null
+++ b/tests/unittest/ScriptUtilsTest.cpp
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <gtest/gtest.h>
+
+#include "ScriptUtils.h"
+#include "UnicodeUtils.h"
+
+namespace minikin {
+namespace {
+
+struct Result {
+    Result(int start, int end, hb_script_t script) : start(start), end(end), script(script) {}
+    int start;
+    int end;
+    hb_script_t script;
+};
+
+bool operator==(const Result& l, const Result& r) {
+    return l.start == r.start && l.end == r.end && l.script == r.script;
+}
+
+std::ostream& operator<<(std::ostream& os, const Result& r) {
+    char buf[5] = {};
+    buf[0] = static_cast<char>((r.script >> 24) & 0xFF);
+    buf[1] = static_cast<char>((r.script >> 16) & 0xFF);
+    buf[2] = static_cast<char>((r.script >> 8) & 0xFF);
+    buf[3] = static_cast<char>((r.script) & 0xFF);
+    return os << "(" << r.start << "," << r.end << "): " << buf;
+}
+
+std::vector<Result> splitByScript(const std::vector<uint16_t>& text, uint32_t start, uint32_t end) {
+    std::vector<Result> result;
+    for (const auto [range, script] : ScriptText(text, start, end)) {
+        result.emplace_back(range.getStart(), range.getEnd(), script);
+    }
+    return result;
+}
+
+std::vector<Result> splitByScript(const std::string& text, uint32_t start, uint32_t end) {
+    std::vector<uint16_t> utf16 = utf8ToUtf16(text);
+    return splitByScript(utf16, start, end);
+}
+
+TEST(ScriptUtilsTest, Latin) {
+    auto result = splitByScript("abcde", 0, 5);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 5, HB_SCRIPT_LATIN), result[0]);
+
+    result = splitByScript("abcde", 0, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 3, HB_SCRIPT_LATIN), result[0]);
+
+    result = splitByScript("abcde", 2, 5);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(2, 5, HB_SCRIPT_LATIN), result[0]);
+
+    result = splitByScript("abcde", 2, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(2, 3, HB_SCRIPT_LATIN), result[0]);
+}
+
+TEST(ScriptUtilsTest, Arabic) {
+    auto result = splitByScript("\u0645\u0631\u062D\u0628\u064B\u0627", 0, 6);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 6, HB_SCRIPT_ARABIC), result[0]);
+
+    result = splitByScript("\u0645\u0631\u062D\u0628\u064B\u0627", 0, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 3, HB_SCRIPT_ARABIC), result[0]);
+
+    result = splitByScript("\u0645\u0631\u062D\u0628\u064B\u0627", 2, 5);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(2, 5, HB_SCRIPT_ARABIC), result[0]);
+
+    result = splitByScript("\u0645\u0631\u062D\u0628\u064B\u0627", 2, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(2, 3, HB_SCRIPT_ARABIC), result[0]);
+}
+
+TEST(ScriptUtilsTest, Common) {
+    auto result = splitByScript("     ", 0, 5);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 5, HB_SCRIPT_COMMON), result[0]);
+
+    result = splitByScript("     ", 0, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 3, HB_SCRIPT_COMMON), result[0]);
+
+    result = splitByScript("     ", 2, 5);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(2, 5, HB_SCRIPT_COMMON), result[0]);
+
+    result = splitByScript("     ", 2, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(2, 3, HB_SCRIPT_COMMON), result[0]);
+}
+
+TEST(ScriptUtilsTest, InheritOrCommon) {
+    // Parens are inherit which is inherit from the previous script. If there is no character
+    // before, use the next non-inherit type of script.
+    auto result = splitByScript("(abc)", 0, 5);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 5, HB_SCRIPT_LATIN), result[0]);
+
+    result = splitByScript("[(b)]", 0, 5);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 5, HB_SCRIPT_LATIN), result[0]);
+
+    result = splitByScript("[(b)]", 0, 2);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 2, HB_SCRIPT_COMMON), result[0]);
+}
+
+TEST(ScriptUtilsTest, MultiScript_InheritOrCommon) {
+    auto result = splitByScript("a(\u0645)e", 0, 5);
+    EXPECT_EQ(Result(0, 2, HB_SCRIPT_LATIN), result[0]);
+    EXPECT_EQ(Result(2, 4, HB_SCRIPT_ARABIC), result[1]);
+    EXPECT_EQ(Result(4, 5, HB_SCRIPT_LATIN), result[2]);
+}
+
+TEST(ScriptUtilsTest, MultiScript_NoInheritOrCommon) {
+    auto result = splitByScript("a\u0645b\u0631c", 0, 5);
+    EXPECT_EQ(Result(0, 1, HB_SCRIPT_LATIN), result[0]);
+    EXPECT_EQ(Result(1, 2, HB_SCRIPT_ARABIC), result[1]);
+    EXPECT_EQ(Result(2, 3, HB_SCRIPT_LATIN), result[2]);
+    EXPECT_EQ(Result(3, 4, HB_SCRIPT_ARABIC), result[3]);
+    EXPECT_EQ(Result(4, 5, HB_SCRIPT_LATIN), result[4]);
+}
+
+TEST(ScriptUtilsTest, SurrogatePair) {
+    auto result = splitByScript(std::vector<uint16_t>({0xD83C, 0xDFF3, 0xD83C, 0xDFF3}), 0, 4);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 4, HB_SCRIPT_COMMON), result[0]);
+
+    result = splitByScript(std::vector<uint16_t>({0xD83C, 0xDFF3, 0xD83C, 0xDFF3}), 0, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(0, 3, HB_SCRIPT_COMMON), result[0]);
+
+    result = splitByScript(std::vector<uint16_t>({0xD83C, 0xDFF3, 0xD83C, 0xDFF3}), 1, 4);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(1, 4, HB_SCRIPT_COMMON), result[0]);
+
+    result = splitByScript(std::vector<uint16_t>({0xD83C, 0xDFF3, 0xD83C, 0xDFF3}), 1, 3);
+    ASSERT_EQ(1u, result.size());
+    EXPECT_EQ(Result(1, 3, HB_SCRIPT_COMMON), result[0]);
+}
+}  // namespace
+}  // namespace minikin
diff --git a/tests/unittest/SystemFontsTest.cpp b/tests/unittest/SystemFontsTest.cpp
index 1bff31f..50fcc3e 100644
--- a/tests/unittest/SystemFontsTest.cpp
+++ b/tests/unittest/SystemFontsTest.cpp
@@ -105,7 +105,7 @@
         EXPECT_EQ(3u, fonts.size());  // Ascii, Bold and BoldItalic
         std::unordered_set<std::string> fontPaths;
         for (const auto& font : fonts) {
-            fontPaths.insert(getBasename(font->typeface()->GetFontPath()));
+            fontPaths.insert(getBasename(font->baseTypeface()->GetFontPath()));
         }
 
         EXPECT_TRUE(fontPaths.find("Ascii.ttf") != fontPaths.end());
diff --git a/tests/unittest/WordBreakerTests.cpp b/tests/unittest/WordBreakerTests.cpp
index 0c20a80..fe7f953 100644
--- a/tests/unittest/WordBreakerTests.cpp
+++ b/tests/unittest/WordBreakerTests.cpp
@@ -672,7 +672,7 @@
             pool.acquire(enUS, LineBreakStyle::Loose, LineBreakWordStyle::None);
 
     uint64_t enUSBreakerLocaleId = enUSBreaker.localeId;
-    UBreakIterator* enUSBreakerPtr = enUSBreaker.breaker.get();
+    auto* enUSBreakerPtr = enUSBreaker.breaker.get();
 
     pool.release(std::move(enUSBreaker));
     EXPECT_EQ(nullptr, enUSBreaker.breaker.get());
diff --git a/tests/util/FontTestUtils.cpp b/tests/util/FontTestUtils.cpp
index 5308e0c..0d563b8 100644
--- a/tests/util/FontTestUtils.cpp
+++ b/tests/util/FontTestUtils.cpp
@@ -109,9 +109,9 @@
             family = FontFamily::create(variant, std::move(fonts));
         } else {
             uint32_t langId = registerLocaleList(std::string((const char*)lang, xmlStrlen(lang)));
-            family =
-                    FontFamily::create(langId, variant, std::move(fonts),
-                                       false /* isCustomFallback */, false /* isdefaultFallback */);
+            family = FontFamily::create(langId, variant, std::move(fonts),
+                                        false /* isCustomFallback */, false /* isdefaultFallback */,
+                                        VariationFamilyType::None);
         }
         families.push_back(family);
     }
@@ -136,7 +136,8 @@
     std::vector<std::shared_ptr<Font>> fonts;
     fonts.push_back(Font::Builder(font).build());
     return FontFamily::create(LocaleListCache::getId(lang), FamilyVariant::DEFAULT,
-                              std::move(fonts), isCustomFallback, false /* isDefaultFallback */);
+                              std::move(fonts), isCustomFallback, false /* isDefaultFallback */,
+                              VariationFamilyType::None);
 }
 
 }  // namespace minikin
diff --git a/tests/util/FreeTypeMinikinFontForTest.cpp b/tests/util/FreeTypeMinikinFontForTest.cpp
index ce36ec0..146eb6b 100644
--- a/tests/util/FreeTypeMinikinFontForTest.cpp
+++ b/tests/util/FreeTypeMinikinFontForTest.cpp
@@ -59,8 +59,9 @@
 
 }  // namespace
 
-FreeTypeMinikinFontForTest::FreeTypeMinikinFontForTest(const std::string& font_path, int index)
-        : mFontPath(font_path), mFontIndex(index) {
+FreeTypeMinikinFontForTest::FreeTypeMinikinFontForTest(const std::string& font_path, int index,
+                                                       const std::vector<FontVariation>& axes)
+        : mFontPath(font_path), mFontIndex(index), mAxes(axes) {
     int fd = open(font_path.c_str(), O_RDONLY);
     LOG_ALWAYS_FATAL_IF(fd == -1, "Open failed: %s", font_path.c_str());
     struct stat st = {};
@@ -135,4 +136,9 @@
     reader->skipString();  // fontPath
 }
 
+std::shared_ptr<MinikinFont> FreeTypeMinikinFontForTest::createFontWithVariation(
+        const std::vector<FontVariation>& axes) const {
+    return std::make_shared<FreeTypeMinikinFontForTest>(mFontPath, mFontIndex, axes);
+}
+
 }  // namespace minikin
diff --git a/tests/util/FreeTypeMinikinFontForTest.h b/tests/util/FreeTypeMinikinFontForTest.h
index 6903deb..f684ec6 100644
--- a/tests/util/FreeTypeMinikinFontForTest.h
+++ b/tests/util/FreeTypeMinikinFontForTest.h
@@ -33,9 +33,12 @@
 
 class FreeTypeMinikinFontForTest : public MinikinFont {
 public:
-    FreeTypeMinikinFontForTest(const std::string& font_path, int index);
+    FreeTypeMinikinFontForTest(const std::string& font_path, int index,
+                               const std::vector<FontVariation>& axes);
+    FreeTypeMinikinFontForTest(const std::string& font_path, int index)
+            : FreeTypeMinikinFontForTest(font_path, index, std::vector<FontVariation>()) {}
     FreeTypeMinikinFontForTest(const std::string& font_path)
-            : FreeTypeMinikinFontForTest(font_path, 0) {}
+            : FreeTypeMinikinFontForTest(font_path, 0, std::vector<FontVariation>()) {}
     virtual ~FreeTypeMinikinFontForTest();
 
     // MinikinFont overrides.
@@ -51,6 +54,7 @@
     size_t GetFontSize() const { return mFontSize; }
     int GetFontIndex() const { return mFontIndex; }
     const std::vector<minikin::FontVariation>& GetAxes() const { return mAxes; }
+    std::shared_ptr<MinikinFont> createFontWithVariation(const std::vector<FontVariation>&) const;
 
 private:
     const std::string mFontPath;
diff --git a/tests/util/UnicodeUtils.cpp b/tests/util/UnicodeUtils.cpp
index 25716a7..1809dd1 100644
--- a/tests/util/UnicodeUtils.cpp
+++ b/tests/util/UnicodeUtils.cpp
@@ -14,14 +14,15 @@
  * limitations under the License.
  */
 
-#include <cstdlib>
-#include <string>
-#include <vector>
-
 #include <cutils/log.h>
 #include <unicode/utf.h>
 #include <unicode/utf8.h>
 
+#include <cstdlib>
+#include <sstream>
+#include <string>
+#include <vector>
+
 #include "minikin/U16StringPiece.h"
 
 namespace minikin {
@@ -138,4 +139,12 @@
     return out;
 }
 
+std::string repeat(const std::string& text, int count) {
+    std::stringstream ss;
+    for (int i = 0; i < count; ++i) {
+        ss << text;
+    }
+    return ss.str();
+}
+
 }  // namespace minikin
diff --git a/tests/util/UnicodeUtils.h b/tests/util/UnicodeUtils.h
index af9d056..be11f61 100644
--- a/tests/util/UnicodeUtils.h
+++ b/tests/util/UnicodeUtils.h
@@ -32,4 +32,6 @@
 std::vector<uint16_t> utf8ToUtf16(const std::string& text);
 std::string utf16ToUtf8(const U16StringPiece& u16String);
 
+std::string repeat(const std::string& text, int count);
+
 }  // namespace minikin