Template:Unichar/main

From Second Life Wiki
< Template:Unichar
Revision as of 15:10, 15 February 2023 by Gwyneth Llewelyn (talk | contribs) (Shamelessly copied from wikipedia.org (pre-Lua version))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Unichar/ulink Template:Unichar/glyph Template:Unichar/name Template:Unichar/notes

[Edit] [🔄Purge] Template-info.png Template documentation

This template produces a formatted description of a Unicode character, to be used inline or otherwise with regular text.

  • The character {{unichar|a9|COPYRIGHT SIGN}} is about intellectual property.
    The character Expression error: Unrecognized punctuation character "[". is about intellectual property.

Usage

The {{unichar}} template takes the Unicode hexadecimal code point value and optionally the character name as input, like {{unichar|00A9|COPYRIGHT SIGN}}Expression error: Unrecognized punctuation character "["..

This template produces a formatted description of a Unicode character, to be used in-line with regular text. It follows the standard Unicode presentation of a character, using the "U+" prefix for displaying the hex code point, followed by its glyph, then optionally by the character name, using Unicode's inline formatting recommendation. In running text such as the Unicode Standard, Wikipedia, or other rich-text environments, the character name is preferably displayed in SMALL-CAPS STYLE. (The all-caps presentation is mainly designed for plain-text environments.)

The hexadecimal value is required (e.g. A9), other input is optional. The actual glyph is rendered using a font that contains the character. This can be set to something more specific, e.g. to language- or IPA-specific fonts. To show the glyph, the font character can be overridden with an image. A wikilink to an article on the character or set of characters, and another to the article "Wikipedia logo"Unicode can be created. It is also possible to add (bracketed like this), the calculated decimal value, HTML character codes, and a custom note.

Some special code points are given extra care, like control and space characters. These are automatically detected by the unichar/gc sub-template.

Examples

  • {{unichar|00A9}}Expression error: Unrecognized punctuation character "[".
  • {{unichar|00A9|COPYRIGHT SIGN}}Expression error: Unrecognized punctuation character "[".
  • {{unichar|00A9|COPYRIGHT SIGN|nlink=Copyright symbol}}Expression error: Unrecognized punctuation character "[".
  • {{unichar|00A9|COPYRIGHT SIGN|nlink=Copyright symbol|note={{crossref|See also [[Copyleft]] symbol}}}}Expression error: Unrecognized punctuation character "[".
  • {{unichar|00A9|COPYRIGHT SIGN|nlink=Copyright symbol|html=}}Expression error: Unrecognized punctuation character "[".
  • {{unichar|00A9|nlink=Copyright symbol}}Expression error: Unrecognized punctuation character "[". – no name added to link to
  • {{unichar|030D|COMBINING VERTICAL LINE ABOVE|cwith=&#9676;}}Expression error: Unrecognized punctuation character "[".combine with a dotted circle

Parameters

The blank template, with all parameters, is as follows:

{{unichar
| <!-- hex value, code point (do not add the "U+")  -->
| <!-- Unicode name -->
| ulink	= 
| image	= 
| cwith = 
| size	= 
| use	= 
| use2	= 
| nlink	= 
| html	= 
| note	= 
}}

Inline version:

{{unichar| <!--hex value (do not add "U+")-->| <!--Unicode name -->|ulink= |image= |cwith= |size= |use= |use2= |nlink= |html= |note= }}
  • First unnamed parameter or 1= Required. The hexadecimal value of the code point, e.g. 00A9.
    Notes: The parameter accepts input like A9, a9 and 00A9 as hexadecimal value. Decimal values are not detected being decimal, and will give unexpected results (see also § Possible errors, below).
  • Second unnamed parameter or 2= Optional. The Unicode name of the character. This is given in ALL-CAPS, and the template will re-render it in SMALL-CAPS. This name may differ from the title of the corresponding Wikipedia article (see below: nlink=).
  • nlink= Optional wikilink. Name of the Wikipedia page that will be linked to. If used, the Unicode name (second parameter) has a wikilink to the article.
    Notes: The name of the page is case-sensitive as with all Wikipedia pages. The option "|nlink = <blank>" to link to the name as given is deprecated.
    {{unichar|00A9|COPYRIGHT SIGN|nlink=Copyright symbol}}Expression error: Unrecognized punctuation character "[".
  • ulink Optional. Creates a wikilink from the U+ prefix. When used without a name (i.e., , blank with no value), the article Unicode is used as the default value in the output: [[Unicode|U+]] producing U+. This only needs to change if you have a reason to link elsewhere than Unicode, e.g. to an article on a subset of Unicode characters.
  • html= Optional. Adds the HTML character reference to the text, like &#160; in the bracketed note. If a named character reference exists, like "&nbsp;", that is added too. You do not need to add the values manually, just add |html =, blank.
  • use= Optional. Sets the font-hinting template to get the glyph, since the character may not be present in a regular browser font. Default is {{unicode}}, other options are {{IPA}}, {{lang}} and {{script}}.
  • use2= Optional. When setting |use = lang or |use = script, |use2 = should be used to set the language (e.g. |use2 = fr) or the script (e.g. |use2 = Cyrs). A glyph may still not show as expected due to browser effects. For a detailed description, see each template's documentation.
    {{unichar|0485|COMBINING CYRILLIC DASIA PNEUMATA|cwith=|use=script|use2=Cyrs}}Expression error: Unrecognized punctuation character "[".
  • image= Optional. Allows for a graphic image file to represent the glyph; overrides the font completely. The filename should include the extension (like .svg or .png), but not the prefix File:.
  • cwith= Optional. Useful when the Unicode character is combining. Using |cwith = adds a space before the character, allowing the combining effect. So when used with a character like |cwith = a, the character will be combined with the letter "a". In Unicode, a general glyph used to place a combined character is Expression error: Unrecognized punctuation character "["..
    without |cwith =:
    {{unichar|0485|COMBINING CYRILLIC DASIA PNEUMATA}}Expression error: Unrecognized punctuation character "[".
    |cwith = without parameter:
    {{unichar|0485|COMBINING CYRILLIC DASIA PNEUMATA|cwith=}}Expression error: Unrecognized punctuation character "[".
    |cwith = with dotted circle:
    {{unichar|0485|COMBINING CYRILLIC DASIA PNEUMATA|cwith=&#9676;}}Expression error: Unrecognized punctuation character "[".
  • size= Optional. Can be used to set the size of the glyph. The default value is 125%. For the font, all CSS font-size style inputs are accepted: 7px, 150%, 2em, larger.
    {{unichar|0041|LATIN CAPITAL LETTER A|size=2em}}Expression error: Unrecognized punctuation character "[".
    When using an image (file) instead of a font, this size can only accept sizes in px like 12px. Default for images is 10px.
{{unichar
| A9
| COPYRIGHT SIGN
| ulink = Universal Character Set characters
| image = 
| size  = 150%
| nlink = Copyright symbol
| note  = Example
}}
Produces:
  • Expression error: Unrecognized punctuation character "[".

Presentation effects

Since this template is aimed at presenting a formatted, inline description, some effects are introduced to sustain this target.

  • Showing space characters: All space characters (those with General Category: Zs) are presented with a light-blue background, to show their actual presence and width: Expression error: Unrecognized punctuation character "["..
    Incidentally, the regular space  
Warning!

Unable to process due to lack of Lua module

is replaced with &#00A0; (NBSP) to prevent wiki-markup deleting it as repeated spaces.
  • Removing formatting characters: Formatting characters (those with General Category: Cf, Zl and Zp) are removed from the output. By definition, formatting characters have no glyph. By removing them they cannot have a formatting effect.
    Exception: five Arabic Cf/formatting number markings U+0600..U+0603 and U+60DD, are shown. While Cf formatting characters usually have no glyph, these five have. By internally adding "(visible)" to the category, these characters are shown.
  • Removing whitespace: The template removes formatting code and surrounding whitespace from the input. A <Return> in the Name-input (possibly unintended) would frustrate the in-line behaviour expectation.
  • Showing a label like <control-0007>: Unicode states that a code point has no name when it is one of these: a control character, a private use character, a surrogate, a not assigned code point (reserved), or a non-character. These code points instead should be referred to by using a "Code Point Label", such as <private-use> or <private-use-E000>. In this situation, this template replaces the glyph with that label. This way, the correct presentation wins it over Unicode-usage to the letter of the law.
  • "Control" general category=Cc: <control> or <control-0007>
  • "Surrogate" general category=Cs: <surrogate> or <surrogate-D800>
  • "Private Use": general category=Co: <private-use> or <private-use-FFA0>
  • "Not a character" (minus the reserved code points, see below): general category=Cn: <not-a-character>, <non-character> or <not-a-character-FFA0>

The second parameter (Unicode name) is not presented, since it cannot exist. It is possible to create a link to an article.

  • Note: A <reserved> (unassigned) code point cannot be detected yet, and so is not presented with this label. These code points too are given Cn category.
    (Background on <>-labels: A Name can never have <>-brackets at all. These rules prevent mixing up a name with an actual control-character. So it will not happen that a bell rings when a page is opened that contains a Name of U+0007).

Possible errors

  • The template produces an Error-message when |1 = (or first unnamed parameter), the hex value, is missing, empty, or invalid.
  • {{unichar|00A9|COPYRIGHT SIGN|nlink=}}Expression error: Unrecognized punctuation character "[". – wikilink target "COPYRIGHT SIGN" is not an existing article.
  • A non-hexadecimal input like Template:!mxt produces an error (because Template:!mxt or Template:!mxt is not hexadecimal).
  • Do not add the Template:!mxt prefix, as in Template:!mxt. It will not be recognised.
  • If the template only shows the code point number, like 2038, you're probably using the wrong template, {{unicode}}, instead of {{unichar}}.
  • The glyph may be overruled and changed into a label like <control-0007>. These characters have no Unicode name. An |nlink = will be directly to the article (entered in a form like |nlink = Bell signal). A blank value of just cannot work for <label-hhhh> characters (there is no character name at all to make into a link). This produces an error.
  • A decimal-value input like |1 = 98 will be read as being hexadecimal value 0098. There is no way that the template can detect you intended to enter 9810=6216. No warning is issued, and the wrong character, U+009816, will be shown (not U+0062).

Tracking

  • [[:Category:
  • Category:P*
  • Category:Pa*
  • Category:Pag*
  • Category:Page*
  • Category:Pages*
  • Category:Pages *
  • Category:Pages u*
  • Category:Pages us*
  • Category:Pages usi*
  • Category:Pages usin*
  • Category:Pages using*
  • Category:Pages using *
  • Category:Pages using U*
  • Category:Pages using Un*
  • Category:Pages using Uni*
  • Category:Pages using Unic*
  • Category:Pages using Unich*
  • Category:Pages using Unicha*
  • Category:Pages using Unichar*
  • Category:Pages using Unichar *
  • Category:Pages using Unichar w*
  • Category:Pages using Unichar wi*
  • Category:Pages using Unichar wit*
  • Category:Pages using Unichar with*
  • Category:Pages using Unichar with *
  • Category:Pages using Unichar with u*
  • Category:Pages using Unichar with un*
  • Category:Pages using Unichar with unk*
  • Category:Pages using Unichar with unkn*
  • Category:Pages using Unichar with unkno*
  • Category:Pages using Unichar with unknow*
  • Category:Pages using Unichar with unknown*
  • Category:Pages using Unichar with unknown *
  • Category:Pages using Unichar with unknown p*
  • Category:Pages using Unichar with unknown pa*
  • Category:Pages using Unichar with unknown par*
  • Category:Pages using Unichar with unknown para*
  • Category:Pages using Unichar with unknown param*
  • Category:Pages using Unichar with unknown parame*
  • Category:Pages using Unichar with unknown paramet*
  • Category:Pages using Unichar with unknown paramete*Template:FormattingError|Category:
  • Category:P*
  • Category:Pa*
  • Category:Pag*
  • Category:Page*
  • Category:Pages*
  • Category:Pages *
  • Category:Pages u*
  • Category:Pages us*
  • Category:Pages usi*
  • Category:Pages usin*
  • Category:Pages using*
  • Category:Pages using *
  • Category:Pages using U*
  • Category:Pages using Un*
  • Category:Pages using Uni*
  • Category:Pages using Unic*
  • Category:Pages using Unich*
  • Category:Pages using Unicha*
  • Category:Pages using Unichar*
  • Category:Pages using Unichar *
  • Category:Pages using Unichar w*
  • Category:Pages using Unichar wi*
  • Category:Pages using Unichar wit*
  • Category:Pages using Unichar with*
  • Category:Pages using Unichar with *
  • Category:Pages using Unichar with u*
  • Category:Pages using Unichar with un*
  • Category:Pages using Unichar with unk*
  • Category:Pages using Unichar with unkn*
  • Category:Pages using Unichar with unkno*
  • Category:Pages using Unichar with unknow*
  • Category:Pages using Unichar with unknown*
  • Category:Pages using Unichar with unknown *
  • Category:Pages using Unichar with unknown p*
  • Category:Pages using Unichar with unknown pa*
  • Category:Pages using Unichar with unknown par*
  • Category:Pages using Unichar with unknown para*
  • Category:Pages using Unichar with unknown param*
  • Category:Pages using Unichar with unknown parame*
  • Category:Pages using Unichar with unknown paramet*
  • Category:Pages using Unichar with unknown paramete*Template:FormattingError]] (0)

Technical notes

The string "unichar" is used only in English Wikipedia, as a name for this template. It has no meaning outside this context.

The template uses these subtemplates:

  • {{unichar/main}} Accepts all the input from {{unichar}}. Calls several subtemplates to produce the textstrings, and then strings them together. Also checks for the error non-hex input.
  • {{unichar/ulink}} Creates a piped link for the U+ prefix.
  • {{unichar/gc}} Determines the Unicode general category, when this category is special (like, for control characters).
  • {{unichar/glyph}} For rendering the glyph by font. Accepts |image =, which overrides the font. Also processes |use =, |use2 =, |size =, |cwith =.
  • {{unichar/name}} Produces the formatted name of the character in smallcaps. Accepts the |nlink = to create a piped wikilink to an article. When the general category (gc) is special, the name will change into a <label-hhhh>.
  • {{unichar/notes}} Shows notes in parentheses (round brackets): HTML (from |html = named entity like &nbsp; if that exists, using {{numcr2namecr}}); and the free-text |note =.
  • Using the main template as an easy-input feature, there are few calculations done (actually only two hex2dec), and allows for adding default values not too deep in the templates.
  • The value <#salted#> is used internally to pass through a non-defined input parameter. This value is correct when about the Unicode name, because it cannot have the characters <##>, and so salted is the right word (meaning uninhibitable). For ease of code maintenance, it is used in various places in the code.
  • Named entities for Expression error: Unrecognized punctuation character "[".: {{#invoke:LoadData|Numcr2namecr|0x22C1}} → {{#invoke:LoadData|Numcr2namecr|0x22C1}}

Issues

  • Unassigned code points, to be labelled <reserved>, cannot be detected.
  • When using |use-script =, then |use2 = needs lowercase (e.g. 0485, Cyrs or cyrs)[clarification needed]
  • When using for one of the RTL formatting marks, its effect may break out of the template (text following the template goes RTL, too). As it is now, this requires extra code.

Code charts

Key to the Unicode Code Charts (Ch 24)[1]
Symbol Meaning Examples
Character name alias ※ LATIN SMALL LETTER GHA
= Informative alias(es) = barred o, o bar
Informative note

Template:Ubl

Cross-reference → 0283 ʃ latin small letter esh
Canonical decomposition mapping ≡ 0075 u 031B ◌̛
Compatibility decomposition mapping ≈ 006E n 006A j
~ Standardized variation sequence ~ 2205 FE00 zero with long diagonal stroke overlay form

TemplateData

This is the "Wikipedia logo"TemplateData for this template used by TemplateWizard, "Wikipedia logo"VisualEditor and other tools. Click here to see a monthly parameter usage report for this template based on this TemplateData.

TemplateData for Unichar

Template data
{
	"params": {
		"1": {
			"aliases": [
				"hval"
			],
			"label": "Hex value",
			"description": "Hexadecimal unicode codepoint",
			"example": "031A",
			"type": "string",
			"required": true
		},
		"2": {
			"aliases": [
				"na"
			],
			"label": "Character name",
			"description": "If provided, shows Unicode character name",
			"example": "COMBINING LEFT ANGLE ABOVE",
			"type": "string",
			"suggested": true
		},
		"ulink": {
			"example": "Phonetic symbols in Unicode",
			"type": "line",
			"description": "Add link to the Unicode HEX code point"
		},
		"image": {},
		"cwith": {
			"type": "string",
			"description": "(for combing characters only) add the following character before this combining character:",
			"example": "◌"
		},
		"size": {
			"description": "Relative size of rendered character",
			"example": "200%",
			"type": "string"
		},
		"use": {
			"type": "string"
		},
		"use2": {
			"type": "string"
		},
		"nlink": {
			"type": "string",
			"description": "Add link to the Unicode character name"
		},
		"note": {
			"type": "line"
		},
		"html": {
			"label": "HTML code",
			"description": "When present, shows HTML named entity",
			"example": "html= shows \"&copy;\"",
			"type": "string"
		}
	},
	"description": "Formats a Unicode character description inline.",
	"format": "inline",
	"paramOrder": [
		"1",
		"2",
		"ulink",
		"nlink",
		"cwith",
		"size",
		"image",
		"use",
		"use2",
		"html",
		"note"
	]
}

See also

U+00A9169dec&copy; (as literal code, not the character)

External research links

Useful links for researching Unicode characters:

  • Unicode.org charts in PDF format, showing the U+ hex values.
  • Fileformat.info search, to search by name (whole or partial), by U+ hex value or decimal value, or by the font symbol (copy-paste it). Extra information provided per character. One character only.
  • branah.com's a multi-character Unicode converter.
  • Unicode properties overview, e.g comma U+002C: [2]


Template:Unicode templates