KPS 9566’s use of the Unicode Private Use Area

Note: the 2005 versions of the KP series fonts (the ones marked 97KPS”, versioned 3.0”, dated 2003–2005 and shipped with Red Star OS 2.0) encode these over U+F000 through U+F046 inclusive, and then again over U+F100 through U+F146, in addition to including the ones mapped to standard Unicode codepoints in KPS 9566-2003 at the corresponding locations. That is to say, a given affected glyph is shown for anything up to three codepoints:

One of the five 2005 version fonts also shows the Euro sign glyph for both the Euro sign codepoint and the Kelvin sign codepoint (the Kelvin sign in KPS 9566-97 corresponds to the Euro sign in KPS 9566-2003), although the other three have a Kelvin sign glyph. Collectively, these observations suggest that the Red Star OS 2.0 versions of these fonts appear to be designed to render the KPS codes consistently in spite of multiple mapping versions.

The later 2012 versions of the KP series fonts (the ones marked 2011KPS”, versioned V4.0”, dated 2000–2012 and shipped with Red Star OS 3.0) only support the latter range, include the two Windows Glyph List allocations in the former range, remove the characters with standard mappings from the PUA, and add a few characters in the vacated space.

Note that I am not affiliated with the committees for either KPS 9566 or Unicode, nor with the DPRK at all. Rather, I’m working on the basis of any KPS-mapped fonts or documentation I can obtain online. KPS 9566-2011 includes additional non-syllable allocations outside of the EUC plane, which appears to divide into hanja, symbol and user-defined (i.e. all valid trail bytes with those leads are mapped to PUA) regions. However, certain characters in the symbol section map to U+Exxx range PUA characters. I have no source to refer to regarding what these are, so the chart below solely covers the U+F0xx and U+F1xx ranges.

A chart of 97KPS is publicly available, due to being registered for use with ISO/IEC 2022. Mappings of 2003KPS to Unicode were submitted to the OpenOffice.org project as OOo bug tracker #33466, and later published with corrections by the Unicode Consortium as KPS9566.TXT. Mappings and charts for 2011KPS can be obtained from Red Star OS 3.0. The table below notes where standard Unicode mappings match those listed for the 2003 and 2011 editions where applicable.

PUA EUC-KP Comments and mappings to standard Unicode
U+F000 / U+F100 0xA1C0U+02D9 (rough fit, 2003/2011)
U+F001 (97KPS) / U+F1010xA1C1U+02BC (rough fit, 2003), U+FE10 (2011)
U+F002 (97KPS) / U+F1020xA1C2U+02DA (rough fit, 2003), U+FE12 (2011)
U+F001 (WGL4) U+FB01 (WGL4)
U+F002 (WGL4) U+FB02 (WGL4)
U+F003 / U+F103 0xA1C3U+02CA (rough fit, 2003), U+FE11 (2011)
U+F004 / U+F104 0xA1C5U+2E2F (rough fit, 2011), U+301C+F87E (from KanjiTalk 7 0xEB60; vertical U+301C”; U+F87E is PUA)
U+F005 / U+F105 0xA1DCNone; .)
U+F006 / U+F106 0xA1DDNone; .⟫
U+F007 / U+F107 0xA1DEU+201A (2003/2011)
U+F008 / U+F108 0xA1DFU+201B (2003/2011)
U+F009 / U+F109 0xA1E0U+201E (2003/2011)
U+F00A / U+F10A 0xA1E1U+201F (2003/2011)
U+F00B / U+F10B 0xA1E6U+FE47 (2003/2011)
U+F00C / U+F10C 0xA1E7U+FE48 (2003/2011)
U+F00D / U+F10D 0xA2F1U+25B4+20E4 (from MacKorean 0xA79B); it is a mountain symbol (U+26F0 is the Japanese equivalent, from ARIB-SJIS 0xEE56, but not mutually recognisable)
U+F00E / U+F10E 0xA2F2None; horizontal-striped triangular ascent” symbol
U+F00F / U+F10F 0xA2F3None; backslash-striped triangular slope on the left” symbol
U+F010 / U+F110 0xA2F4None; slash-striped triangular slope on the right” symbol
U+F011 / U+F111 0xA2F5U+2690 (2003/2011)
U+F012 / U+F112 0xA2F6U+2691 (2003/2011)
U+F013 / U+F113 0xA4E8(Kim: emboldened U+AE40)
U+F014 / U+F114 0xA4E9(Il: emboldened U+C77C)
U+F015 / U+F115 0xA4EA(Sung: emboldened U+C131)
U+F016 / U+F116 0xA4EB(Kim: emboldened U+AE40)
U+F017 / U+F117 0xA4EC(Jong: emboldened U+C815)
U+F018 / U+F118 0xA4ED(Il: emboldened U+C77C)
U+F019 / U+F119 0xA7FA(U+00BD with horizontal bar; diagonal bar is 0xA7EA)
U+F01A / U+F11A 0xA7FB(U+2153 with horizontal bar; diagonal bar is 0xA7EB)
U+F01B / U+F11B 0xA7FC(U+2154 with horizontal bar; diagonal bar is 0xA7EC)
U+F01C / U+F11C 0xA7FD(U+00BC with horizontal bar; diagonal bar is 0xA7ED)
U+F01D / U+F11D 0xA7FE(U+00BE with horizontal bar; diagonal bar is 0xA7EE)
U+F01E / U+F11E 0xA8B8U+3377 (2003/2011)
U+F01F / U+F11F 0xA8B9U+3378 (2003/2011)
U+F020 / U+F120 (97KPS)0xA8BAU+3379 (2003)
U+F021 / U+F121 (97KPS)0xA8DFU+33DE (2003)
U+F022 / U+F122 (97KPS)0xA8E0U+33DF (2003)
U+F120 (2011KPS) 0xA4EE(Kim: emboldened U+AE40)
U+F121 (2011KPS) 0xA4EF(Jong: emboldened U+C815)
U+F122 (2011KPS) 0xA4F0(Un: emboldened U+C740)
U+F023 / U+F123 0xA8F1U+33FF (2003/2011)
U+F024 / U+F124 0xA8F7U+32CC (2003/2011)
U+F025 / U+F125 0xA8FAU+32CD (2003/2011)
U+F026 / U+F126 0xA8FBU+32CE (2003/2011)
U+F027 / U+F127 0xACA1(WPK; U+262D+200D+1F58C or maybe U+262D+FE0F+200D+1F58C+FE0F might work as a kludge)
U+F028 / U+F128 0xACA2(Enclosed WPK; U+262D+200D+1F58C+20DD or maybe U+262D+FE0F+200D+1F58C+FE0F+20DD might work as a kludge)
U+F029 / U+F129 0xACA6U+2614 (2003/2011)
U+F02A / U+F12A 0xACA9U+26A1 (2003/2011)
U+F02B / U+F12B 0xACAAU+26A0 (2003/2011)
U+F02C / U+F12C 0xACBAU+2B00 (2011 and KPS9566.TXT), U+2B01 (in OOo submission for 2003, adhered to by swapped glyphs for U+2B00 versus U+2B01 in Red Star OS 2.0 (but not 3.0) fonts)
U+F02D / U+F12D 0xACBBU+2B01 (2011 and KPS9566.TXT), U+2B00 (in OOo submission for 2003, adhered to by swapped glyphs for U+2B00 versus U+2B01 in Red Star OS 2.0 (but not 3.0) fonts)
U+F02E / U+F12E 0xACBCU+2B02 (2003/2011)
U+F02F / U+F12F 0xACBDU+2B03 (2003/2011)
U+F030 / U+F130 0xACBEU+2B04 (2003/2011)
U+F031 / U+F131 0xACC0U+27A1 (2003/2011), U+2B95 (Unicode 7.0)
U+F032 / U+F132 0xACC1U+2B05 (2003/2011)
U+F033 / U+F133 0xACC2U+2B06 (2003/2011)
U+F034 / U+F134 0xACC3U+2B07 (2003/2011)
U+F035 / U+F135 0xACC4U+2B08 (2003/2011)
U+F036 / U+F136 0xACC5U+2B09 (2003/2011)
U+F037 / U+F137 0xACC6U+2B0A (2003/2011)
U+F038 / U+F138 0xACC7U+2B0B (2003/2011)
U+F039 / U+F139 0xACC8U+2B0C (2003/2011)
U+F03A / U+F13A 0xACC9U+2B0D (2003/2011)
U+F03B / U+F13B (97KPS)0xACCFU+2B97 (Unicode 13.0)
U+F13B (2011KPS) 0xACD3U+261E (2003; usually forehand, 0xE04D in KPS 9566-2011), U+1F449 (Unicode 6.0; expressly backhand)
U+F03C / U+F13C 0xACD4U+1F446+20DD (Unicode 6.0 sequence, supported by BabelStone Han)
U+F03D / U+F13D 0xACD5(U+2702 pointing northwest; its Zapf Dingbats symbol is rightward, but emoji fonts vary the direction; no otherwise-oriented KPS-coded scissors are known of; U+2702+FE0F+200D+2196+FE0F or U+2702+200D+2196 would be a generalisation of the UTS 51 direction mechanism)
U+F03E / U+F13E 0xACD6U+2615 (2003/2011)
U+F03F / U+F13F 0xACD7U+327C (2003/2011)
U+F040 / U+F140 0xACD8U+327D (2003/2011)
U+F041 / U+F141 0xACD9U+321D (2003/2011)
U+F042 / U+F142 0xACDAU+321E (2003/2011)
U+F043 / U+F143 0xACDCU+32CF (2003/2011)
U+F044 / U+F144 0xACDDU+3250 (2003/2011)
U+F045 / U+F145 0xACDFU+213B (2003/2011)
U+F046 / U+F146 0xACE0U+337A (2003/2011)