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:
- Private use in U+F000 through U+F046.
- Private use in U+F100 through U+F146.
- Standard Unicode in accordance with KPS 9566-2003 mappings.
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 | 0xA1C0 | U+02D9 (rough fit, 2003/2011) |
U+F001 (97KPS) / U+F101 | 0xA1C1 | U+02BC (rough fit, 2003), U+FE10 (2011) |
U+F002 (97KPS) / U+F102 | 0xA1C2 | U+02DA (rough fit, 2003), U+FE12 (2011) |
U+F001 (WGL4) | – | U+FB01 (WGL4) |
U+F002 (WGL4) | – | U+FB02 (WGL4) |
U+F003 / U+F103 | 0xA1C3 | U+02CA (rough fit, 2003), U+FE11 (2011) |
U+F004 / U+F104 | 0xA1C5 | U+2E2F (rough fit, 2011), U+301C+F87E (from KanjiTalk 7 0xEB60 ; “vertical U+301C”; U+F87E is PUA) |
U+F005 / U+F105 | 0xA1DC | None; .) |
U+F006 / U+F106 | 0xA1DD | None; .⟫ |
U+F007 / U+F107 | 0xA1DE | U+201A (2003/2011) |
U+F008 / U+F108 | 0xA1DF | U+201B (2003/2011) |
U+F009 / U+F109 | 0xA1E0 | U+201E (2003/2011) |
U+F00A / U+F10A | 0xA1E1 | U+201F (2003/2011) |
U+F00B / U+F10B | 0xA1E6 | U+FE47 (2003/2011) |
U+F00C / U+F10C | 0xA1E7 | U+FE48 (2003/2011) |
U+F00D / U+F10D | 0xA2F1 | U+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 | 0xA2F2 | None; horizontal-striped triangular “ascent” symbol |
U+F00F / U+F10F | 0xA2F3 | None; backslash-striped triangular “slope on the left” symbol |
U+F010 / U+F110 | 0xA2F4 | None; slash-striped triangular “slope on the right” symbol |
U+F011 / U+F111 | 0xA2F5 | U+2690 (2003/2011) |
U+F012 / U+F112 | 0xA2F6 | U+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 | 0xA8B8 | U+3377 (2003/2011) |
U+F01F / U+F11F | 0xA8B9 | U+3378 (2003/2011) |
U+F020 / U+F120 (97KPS) | 0xA8BA | U+3379 (2003) |
U+F021 / U+F121 (97KPS) | 0xA8DF | U+33DE (2003) |
U+F022 / U+F122 (97KPS) | 0xA8E0 | U+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 | 0xA8F1 | U+33FF (2003/2011) |
U+F024 / U+F124 | 0xA8F7 | U+32CC (2003/2011) |
U+F025 / U+F125 | 0xA8FA | U+32CD (2003/2011) |
U+F026 / U+F126 | 0xA8FB | U+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 | 0xACA6 | U+2614 (2003/2011) |
U+F02A / U+F12A | 0xACA9 | U+26A1 (2003/2011) |
U+F02B / U+F12B | 0xACAA | U+26A0 (2003/2011) |
U+F02C / U+F12C | 0xACBA | U+2B00 (2011 and KPS9566.TXT), U+2B01 U+2B00 versus U+2B01 in Red Star OS 2.0 (but not 3.0) fonts) |
U+F02D / U+F12D | 0xACBB | U+2B01 (2011 and KPS9566.TXT), U+2B00 U+2B00 versus U+2B01 in Red Star OS 2.0 (but not 3.0) fonts) |
U+F02E / U+F12E | 0xACBC | U+2B02 (2003/2011) |
U+F02F / U+F12F | 0xACBD | U+2B03 (2003/2011) |
U+F030 / U+F130 | 0xACBE | U+2B04 (2003/2011) |
U+F031 / U+F131 | 0xACC0 | U+27A1 (2003/2011), U+2B95 (Unicode 7.0) |
U+F032 / U+F132 | 0xACC1 | U+2B05 (2003/2011) |
U+F033 / U+F133 | 0xACC2 | U+2B06 (2003/2011) |
U+F034 / U+F134 | 0xACC3 | U+2B07 (2003/2011) |
U+F035 / U+F135 | 0xACC4 | U+2B08 (2003/2011) |
U+F036 / U+F136 | 0xACC5 | U+2B09 (2003/2011) |
U+F037 / U+F137 | 0xACC6 | U+2B0A (2003/2011) |
U+F038 / U+F138 | 0xACC7 | U+2B0B (2003/2011) |
U+F039 / U+F139 | 0xACC8 | U+2B0C (2003/2011) |
U+F03A / U+F13A | 0xACC9 | U+2B0D (2003/2011) |
U+F03B / U+F13B (97KPS) | 0xACCF | U+2B97 (Unicode 13.0) |
U+F13B (2011KPS) | 0xACD3 | U+261E (2003; usually forehand, 0xE04D in KPS 9566-2011), U+1F449 (Unicode 6.0; expressly backhand) |
U+F03C / U+F13C | 0xACD4 | U+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 | 0xACD6 | U+2615 (2003/2011) |
U+F03F / U+F13F | 0xACD7 | U+327C (2003/2011) |
U+F040 / U+F140 | 0xACD8 | U+327D (2003/2011) |
U+F041 / U+F141 | 0xACD9 | U+321D (2003/2011) |
U+F042 / U+F142 | 0xACDA | U+321E (2003/2011) |
U+F043 / U+F143 | 0xACDC | U+32CF (2003/2011) |
U+F044 / U+F144 | 0xACDD | U+3250 (2003/2011) |
U+F045 / U+F145 | 0xACDF | U+213B (2003/2011) |
U+F046 / U+F146 | 0xACE0 | U+337A (2003/2011) |