Private Use Areas: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>WeHoDavid
m I added a comma after "e.g.".
 
imported>Guy Harris
Vendor use: Apple moved their open source stuff to GitHub.
 
Line 99: Line 99:
** {{anchor|U+F8FF}} One of these is U+F8FF, the [[Fonts on Macintosh#Apple logo|Apple logo]], generally supported by Apple's 8-bit sets.
** {{anchor|U+F8FF}} One of these is U+F8FF, the [[Fonts on Macintosh#Apple logo|Apple logo]], generally supported by Apple's 8-bit sets.
* [[WGL4]] uses the PUA (U+F001 and U+F002) to encode duplicates of the ligatures {{not a typo|fi}} (U+FB01) {{not a typo|fl}} (U+FB02).<ref>{{cite web|url=http://www.microsoft.com/typography/otspec/WGL4E.HTM|title=WGL4 Unicode Range U+2013 through U+FB02|website=[[Microsoft]] |archive-url=https://web.archive.org/web/20140717022830/http://www.microsoft.com/typography/otspec/wgl4e.htm|archive-date=2014-07-17|url-status=dead}}</ref>
* [[WGL4]] uses the PUA (U+F001 and U+F002) to encode duplicates of the ligatures {{not a typo|fi}} (U+FB01) {{not a typo|fl}} (U+FB02).<ref>{{cite web|url=http://www.microsoft.com/typography/otspec/WGL4E.HTM|title=WGL4 Unicode Range U+2013 through U+FB02|website=[[Microsoft]] |archive-url=https://web.archive.org/web/20140717022830/http://www.microsoft.com/typography/otspec/wgl4e.htm|archive-date=2014-07-17|url-status=dead}}</ref>
* [[Microsoft]]'s defunct Services For Macintosh feature used U+F001 through U+F029 as replacements for special characters allowed in [[Hierarchical File System (Apple)|HFS]] but forbidden in [[NTFS]], and U+F02A for the Apple logo.<ref>{{cite web |url=https://support.microsoft.com/en-us/kb/117258 |title=SFM Converts Macintosh HFS Filenames to NTFS Unicode |date=February 24, 2014  |website=Microsoft Support |archive-url=https://web.archive.org/web/20160527200113/https://support.microsoft.com/en-us/kb/117258 |archive-date=May 27, 2016 |url-status=dead}}</ref><ref>{{cite web |url=https://opensource.apple.com/source/ntfs/ntfs-91.50.2/util/ntfs.util.c.auto.html |title=ntfs.util.c |year=2008 |quote=Invalid NTFS filename characters are encodeded{{sic}} using the SFM (Services for Macintosh) private use Unicode characters. |access-date=2018-08-07 |archive-date=2018-08-07 |archive-url=https://web.archive.org/web/20180807190401/https://opensource.apple.com/source/ntfs/ntfs-91.50.2/util/ntfs.util.c.auto.html |url-status=dead}}</ref>
* [[Microsoft]]'s defunct Services For Macintosh feature used U+F001 through U+F029 as replacements for special characters allowed in [[Hierarchical File System (Apple)|HFS]] but forbidden in [[NTFS]], and U+F02A for the Apple logo.<ref>{{cite web |url=https://support.microsoft.com/en-us/kb/117258 |title=SFM Converts Macintosh HFS Filenames to NTFS Unicode |date=February 24, 2014  |website=Microsoft Support |archive-url=https://web.archive.org/web/20160527200113/https://support.microsoft.com/en-us/kb/117258 |archive-date=May 27, 2016 |url-status=dead}}</ref><ref>{{cite web |url=https://github.com/apple-oss-distributions/ntfs/blob/ntfs-91.50.2/util/ntfs.util.c |title=ntfs.util.c |year=2008 |quote=Invalid NTFS filename characters are encodeded{{sic}} using the SFM (Services for Macintosh) private use Unicode characters.}}</ref>
* In old versions of its [[RichEdit]] component, Microsoft mapped U+F020–U+F0FF within the PUA to symbol fonts. For any character in this range, RichEdit would show a character from a symbol font instead of the end-user-defined character (EUDC).<ref>{{cite web|website=Microsoft Knowledge Base|url=http://support.microsoft.com/kb/897872|title=The range of characters between U+F020 and U+F0FF in the Private Use Area of Unicode is mapped to symbol fonts in Richedit 4.1|archive-url=https://web.archive.org/web/20121022095705/http://support.microsoft.com/kb/897872|archive-date=2012-10-22|url-status=dead}}</ref><ref>{{cite web |url=http://scripts.sil.org/cms/SCRIPTs/page.php?site%5Fid=nrsi&item%5Fid=PUACharsInMSSotware |title=Handling of PUA Characters in Microsoft Software |date=2003-04-25 |website=SIL International |archive-url=https://web.archive.org/web/20150511005915/http://scripts.sil.org/cms/scripts/page.php?site%5Fid=nrsi&item%5Fid=PUACharsInMSSotware |archive-date=2015-05-11 |url-status=dead |access-date=2014-03-04 }}</ref>
* In old versions of its [[RichEdit]] component, Microsoft mapped U+F020–U+F0FF within the PUA to symbol fonts. For any character in this range, RichEdit would show a character from a symbol font instead of the end-user-defined character (EUDC).<ref>{{cite web|website=Microsoft Knowledge Base|url=http://support.microsoft.com/kb/897872|title=The range of characters between U+F020 and U+F0FF in the Private Use Area of Unicode is mapped to symbol fonts in Richedit 4.1|archive-url=https://web.archive.org/web/20121022095705/http://support.microsoft.com/kb/897872|archive-date=2012-10-22|url-status=dead}}</ref><ref>{{cite web |url=http://scripts.sil.org/cms/SCRIPTs/page.php?site%5Fid=nrsi&item%5Fid=PUACharsInMSSotware |title=Handling of PUA Characters in Microsoft Software |date=2003-04-25 |website=SIL International |archive-url=https://web.archive.org/web/20150511005915/http://scripts.sil.org/cms/scripts/page.php?site%5Fid=nrsi&item%5Fid=PUACharsInMSSotware |archive-date=2015-05-11 |url-status=dead |access-date=2014-03-04 }}</ref>
* {{Clarify|date=June 2020|reason=which version? 2007 uses U+2205, U+00B1, U+00B0|text=[[AutoCAD]]}} uses U+F8FC–U+F8FE for ⌀ (diameter sign), ± ([[plus–minus sign]]) and ° (degree sign) respectively.{{citation needed|date=March 2025}} <!-- Undocumented in any Autodesk's manual. However, you can prove this if you have a copy of AutoCAD. -->
* {{Clarify|date=June 2020|reason=which version? 2007 uses U+2205, U+00B1, U+00B0|text=[[AutoCAD]]}} uses U+F8FC–U+F8FE for ⌀ (diameter sign), ± ([[plus–minus sign]]) and ° (degree sign) respectively.{{citation needed|date=March 2025}} <!-- Undocumented in any Autodesk's manual. However, you can prove this if you have a copy of AutoCAD. -->

Latest revision as of 02:54, 27 June 2025

Template:Short description Script error: No such module "about". In Unicode, a Private Use Area (PUA) is a range of code points that, by definition, will not be assigned characters by the standard.[1] Three Private Use Areas are defined: one in the Basic Multilingual Plane (Template:Mono), and one each in, and nearly covering, planes 15 and 16 (Template:Mono, Template:Mono). They are intentionally left undefined so that third parties may assign their own characters without conflicting with Unicode Standard assignments. Under the Unicode Stability Policy, the Private Use Areas will remain allocated for that purpose in all future Unicode versions.[2]

Assignments to private-use code points need not be "private" in the sense of strictly internal to an organisation; a number of assignment schemes have been published by several organisations. Such publication may include a font that supports the definition (showing the glyphs), and software making use of the private-use characters (e.g., a graphics character for a "print document" function). By definition, multiple private parties may assign different characters to the same code point, with the consequence that a user may see one private character from an installed font where a different one was intended.

Definition

Under the Unicode definition, code points in the Private Use Areas are not noncharacters, reserved, or unassigned. Their category is "Other, private use (Co)", and no character names are specified. No representative glyphs are provided, and character semantics are left to private agreement.

Private-use characters are assigned Unicode code points whose interpretation is not specified by this standard and whose use may be determined by private agreement among cooperating users. These characters are designated for private use and do not have defined, interpretable semantics except by private agreement. ... No charts are provided for private-use characters, as any such characters are, by their very nature, defined only outside the context of this standard.[3]

Script error: No such module "anchor".Blocks

There are three PUA blocks in Unicode.[3][4][5]

In the Basic Multilingual Plane (plane 0), the block titled Private Use Area (PUA) has 6400 code points.

Planes 15 and 16 are almost[note 1] entirely assigned to two further Private Use Areas: Supplementary Private Use Area-A (SPUA-A) and Supplementary Private Use Area-B (SPUA-B). In UTF-16 a subset of the high surrogates (U+DB80..U+DBFF) is used for these and only these planes, and are called High Private Use Surrogates.

Template:Col begin Template:Col break Template:Infobox Unicode block

Template:Col break Template:Infobox Unicode block

Template:Col break Template:Infobox Unicode block Template:Col end

History

In Unicode 1.0.0, the Private Use Area extended from U+E800 to U+FDFF[6] (i.e. did not include U+E000..E7FF, but additionally included the U+F900..FDFF range now occupied by CJK Compatibility Ideographs, Alphabetic Presentation Forms and Arabic Presentation Forms-A). This was changed to U+E000..F8FF in Unicode 1.0.1,[7] and remained so in Unicode 1.1.[8] The range U+D800..DFFF, used for UTF-16 surrogates since Unicode 2.0, was unassigned and not part of the Private Use Area in any Unicode 1.x version.

Planes E0 (224) through FF (255), and groups 60 (96) though 7F (127) of the Universal Coded Character Set (i.e. U+E00000 through U+FFFFFF and U+60000000 through U+7FFFFFFF) were also designated as private use. These ranges were removed when UCS was restricted to the seventeen planes reachable in UTF-16.[9]

Usage

Standardization initiative uses

Many people and institutions have created character collections for the PUA. Some of these private use agreements are published, so other PUA implementers can aim for unused or less-used code points to prevent overlaps. Several characters and scripts previously encoded in private use agreements have actually been fully encoded in Unicode, necessitating mappings from the PUA to other Unicode code points.

One of the more well-known and broadly implemented PUA agreements is maintained by the ConScript Unicode Registry (CSUR). The CSUR, which is not officially endorsed or associated with the Unicode Consortium, provides a mapping for constructed scripts, such as Klingon pIqaD and Ferengi script (Star Trek), Tengwar and Cirth (J.R.R. Tolkien's cursive and runic scripts), Alexander Melville Bell's Visible Speech, and Dr. Seuss's alphabet from On Beyond Zebra. The CSUR previously encoded the undeciphered Phaistos characters, as well as the Shavian and Deseret alphabets, which have all been accepted for official encoding in Unicode.

Another common PUA agreement is maintained by the Medieval Unicode Font Initiative (MUFI). This project is attempting to support all of the scribal abbreviations, ligatures, precomposed characters, symbols, and alternate letterforms found in medieval texts written in the Latin alphabet. The express purpose of MUFI is to experimentally determine which characters are necessary to represent these texts, and to have those characters officially encoded in Unicode. As of Unicode version 5.1, 152 MUFI characters have been incorporated into the official Unicode encoding.Template:Update inline

Some agreed-upon PUA character collections exist in part or whole because the Unicode Consortium is in no hurry to encode them. Some, such as unrepresented languages, are likely to end up encoded in the future. Some unusual cases such as fictional languages are outside the usual scope of Unicode but not explicitly ruled out by the principles of Unicode, and may show up eventually (such as the Star Trek and Tolkien writing systems). In other cases, the proposed encoding violates one or more Unicode principles and hence is unlikely to ever be officially recognized by Unicode—mostly where users want to directly encode alternate forms, ligatures, or base-character-plus-diacritic combinations (such as the TUNE scheme).

Publishing organization Topic PUA area used Font
CSUR Artificial and some ancient/medieval scripts PUA (BMP) and Plane 15 Code2000
MUFI Medieval scripts PUA (BMP) several
SIL Phonetics and languages PUA (BMP) Charis SIL
TITUS Ancient and medieval scripts PUA (BMP) TITUS Cyberbit Basic
  • Emoji were originally defined in unused spaces in Shift JIS mobile encodings, with different carriers supporting different emoji characters. Before emoji were added to the Unicode Standard in Unicode 6.0, Google and major Japanese phone carriers each defined their own Private Use Area mappings for emoji. The Japanese carriers defined their encoding schemes in the Basic Multilingual Plane's Private Use Area, whereas Google defined theirs in Supplementary Private Use Area-A.[10]
  • GB/T 20542-2006 ("Tibetan Coded Character Set Extension A") and GB/T 22238-2008 ("Tibetan Coded Character Set Extension B") are Chinese national standards that use the PUA to encode precomposed Tibetan ligatures.
  • GBK and earlier versions of GB 18030 used the PUA to provisionally encode characters not found in Unicode standards at the time of publication. In the 2022 version of the standard (GB 18030-2022), characters are instead mapped to their standard Unicode codepoints.[11]
  • The Institute of the Estonian Language uses the PUA to encode Latin and Cyrillic precomposed characters[12] that have no Unicode encoding.
  • The Free Tengwar Font Project uses a different mapping from the ConScript Unicode Registry that largely follows Michael Everson's 2001-03-07 Tengwar discussion paper, but diverges in some details.
  • The MARC 21 standard uses the PUA to encode East Asian characters present in MARC-8[13] that have no Unicode encoding.
  • The SIL Corporate PUA uses the PUA to encode characters used in minority languages that have not yet been accepted into Unicode.
  • The STIX Fonts project uses the PUA to provide a comprehensive font set of mathematical symbols and alphabets, many of which are also available in the SMP now, e.g. in the Mathematical Alphanumeric Symbols block.
  • The SMuFL uses the PUA to encode new music notation symbols, extending the Musical Symbols Unicode block.
  • The Tamil Unicode New Encoding (TUNE)[14] is a proposed scheme for encoding Tamil that overcomes perceived deficiencies in the current Unicode encoding.

Vendor use

Script error: No such module "redirect hatnote". Informally, the range U+F000 through U+F8FF is known as the Corporate Use Area. This originates from early versions of Unicode, which defined an "End User Zone" extending from U+E000 upward and a "Corporate Use Zone" extending from U+F8FF downward, with the boundary between the two left undefined.[8]

  • The Adobe Glyph List used to use the PUA for some of its glyphs.[15]
  • Apple lists a range of 1,280 characters in its developer documentation[16] from U+F400–U+F8FF within the PUA for Apple's use. Of those, only 311 are used, in the range U+F700–U+F8FF (NeXT (NeXTSTEP and OPENSTEP) and Apple (macOS AppKit)).[17]
    • Script error: No such module "anchor". One of these is U+F8FF, the Apple logo, generally supported by Apple's 8-bit sets.
  • WGL4 uses the PUA (U+F001 and U+F002) to encode duplicates of the ligatures Template:Not a typo (U+FB01) Template:Not a typo (U+FB02).[18]
  • Microsoft's defunct Services For Macintosh feature used U+F001 through U+F029 as replacements for special characters allowed in HFS but forbidden in NTFS, and U+F02A for the Apple logo.[19][20]
  • In old versions of its RichEdit component, Microsoft mapped U+F020–U+F0FF within the PUA to symbol fonts. For any character in this range, RichEdit would show a character from a symbol font instead of the end-user-defined character (EUDC).[21][22]
  • Template:Clarify uses U+F8FC–U+F8FE for ⌀ (diameter sign), ± (plus–minus sign) and ° (degree sign) respectively.Script error: No such module "Unsubst".
  • Some fonts place the Windows logo at U+F000.Script error: No such module "Unsubst".
  • The code point U+F000 is a numeral succession starting at 13 or 18 in some video games like Agar.io.Script error: No such module "Unsubst".
  • On Ubuntu, U+E0FF is displayed as the "Circle Of Friends" logo[23] and U+F200 is "ubuntu" in the Ubuntu typeface with a superscripted "Circle Of Friends" (this itself is U+F0FF).[24]
  • The 3270 font includes the Debian logo at U+F100.Script error: No such module "Unsubst".
  • In the Linux Libertine font, U+E000 displays Tux, the mascot of Linux.Script error: No such module "Unsubst".
  • The Font Awesome icon font uses the PUA to display various glyphs.Script error: No such module "Unsubst".
  • Powerline, a status line plugin for Vim, uses U+E0A0–U+E0A2 and U+E0B0–U+E0B3 for extra box-drawing characters.[25][26]
  • In the Fira Sans typeface used in Firefox OS, U+E003 is displayed as the Mozilla logo (the dinosaur head).Script error: No such module "Unsubst".
  • Lotus Multi-Byte Character Set (LMBCS), the encoding and character set internally used by Lotus/IBM Lotus 1-2-3, Symphony, SmartSuite, Notes, Domino as well as a number of third-party products such as Microsoft Works, uses some characters (U+F862-U+F89F and U+F8FB-U+F8FE) in the Private Use Area for symbols not defined in Unicode. Of these, U+F8FB is known to be reserved for a crown currency symbol ("Kr"), and U+F8FC and U+F8FD were later mapped to U+FB02 (Template:Not a typo) and U+FB01 (Template:Not a typo) respectively. Additionally, when UTF-16 codes are embedded in LMBCS, the UTF-16 codes corresponding to U+F601 through U+F6FF are substituted for UTF-16 codes which would contain null bytes, since LMBCS is designed to not contain embedded null bytes.[27][28]
  • IBM reserved several code page IDs for PUA code pages: code page 1446 for the generic plane 15, code page 1447 for the generic plane 16, code page 1448 for the generic BMP PUA, code page 1445 (IBM AFP PUA No. 1) for plane 15 with IBM allocations in U+FFF00–U+FFFFD,[29][30] and code page 1449 (IBM default PUA) for the BMP PUA with IBM allocations in U+F83D–U+F8FF.[31][32]
  • The file system found in Windows uses the U+F000 to U+F0FF block to escape special characters.Script error: No such module "Unsubst".
  • NetApp translates characters in filenames that are allowed on Unix but invalid for SMB clients to PUA characters.[33]
  • Twitter's Chirp font provides some additional icons, like U+E000 which corresponds to a left down arrow, U+EA00 which corresponds to the Twitter bird, and U+F8FF which corresponds to an Apple logo, possibly for compatibility with Apple fonts.[34]

Private-use characters in other character sets

The concept of reserving specific code points for private use is based on similar earlier usage in other character sets. In particular, many otherwise obsolete characters in East Asian scripts continue to be used in specific names or other situations, and so some character sets for those scripts made allowance for private-use characters (such as the user-defined planes of CNS 11643, or gaiji in certain Japanese encodings). The Unicode standard references these uses under the name "End User Character Definition" (EUCD).[3]

Additionally, the C1 control block contains two codes intended for private use "control functions" by ECMA-48: 0x91 <templatestyles src="smallcaps/styles.css"/>private use one (PU1) and 0x92 <templatestyles src="smallcaps/styles.css"/>private use two (PU2).[35][36] Unicode includes these at Template:Unichar and Template:Unichar but defines them as control characters (category Cc), not private-use characters (category Co).[4][37]

Encodings that do not have private use areas but have more or less unused areas, such as ISO/IEC 8859 and Shift JIS, have seen uncontrolled variants of these encodings evolve.[38] For Unicode, software companies can use the Private Use Areas for their desired additions.

Notes

Template:Reflist

References

Template:Reflist

Template:Unicode navigation

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. a b c Script error: No such module "citation/CS1".
  4. a b Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. a b Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".
  11. Script error: No such module "citation/CS1".
  12. Script error: No such module "citation/CS1".
  13. Script error: No such module "citation/CS1".
  14. Script error: No such module "citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. Script error: No such module "citation/CS1".
  17. Script error: No such module "citation/CS1".
  18. Script error: No such module "citation/CS1".
  19. Script error: No such module "citation/CS1".
  20. Script error: No such module "citation/CS1".
  21. Script error: No such module "citation/CS1".
  22. Script error: No such module "citation/CS1".
  23. Script error: No such module "citation/CS1".
  24. Script error: No such module "citation/CS1".
  25. Script error: No such module "citation/CS1".
  26. Script error: No such module "citation/CS1".
  27. Script error: No such module "citation/CS1".
  28. Script error: No such module "citation/CS1".
  29. Script error: No such module "citation/CS1".
  30. Script error: No such module "citation/CS1".
  31. Script error: No such module "citation/CS1".
  32. Script error: No such module "citation/CS1". (Included with Script error: No such module "citation/CS1".)
  33. Script error: No such module "citation/CS1".
  34. Script error: No such module "citation/CS1".
  35. Script error: No such module "citation/CS1".
  36. Template:Cite iso-ir
  37. Script error: No such module "citation/CS1".
  38. Script error: No such module "citation/CS1".


Cite error: <ref> tags exist for a group named "note", but no corresponding <references group="note"/> tag was found