CINXE.COM

Module:Unicode data - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:Unicode data - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"888fbb53-d8e4-4f62-8652-bb6ac49b8696","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Unicode_data","wgTitle":"Unicode data","wgCurRevisionId":1220055129,"wgRevisionId":1220055129,"wgArticleId":57744930,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Wikipedia template-protected modules","Unicode character modules","Lua metamodules"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Unicode_data","wgRelevantArticleId":57744930,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["templateeditor"],"wgRestrictionMove":["templateeditor"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false, "wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q39301585","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={ "ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.tablesorter.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","jquery.tablesorter","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming", "ext.uls.interface","ext.cx.eventlogging.campaigns","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.tablesorter.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Module:Unicode data - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Module:Unicode_data"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Module:Unicode_data"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject page-Module_Unicode_data rootpage-Module_Unicode_data skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Module%3AUnicode+data" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=Module%3AUnicode+data" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Module%3AUnicode+data" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Module%3AUnicode+data" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Usage" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Usage"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Usage</span> </div> </a> <ul id="toc-Usage-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Parameters_and_functions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Parameters_and_functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Parameters and functions</span> </div> </a> <button aria-controls="toc-Parameters_and_functions-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Parameters and functions subsection</span> </button> <ul id="toc-Parameters_and_functions-sublist" class="vector-toc-list"> <li id="toc-code_point" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#code_point"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>code point</span> </div> </a> <ul id="toc-code_point-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-&quot;lookup&quot;_and_&quot;is&quot;_functions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#&quot;lookup&quot;_and_&quot;is&quot;_functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>"<span>lookup</span>" and "<span>is</span>" functions</span> </div> </a> <ul id="toc-&quot;lookup&quot;_and_&quot;is&quot;_functions-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Functions_overview" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Functions_overview"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Functions overview</span> </div> </a> <ul id="toc-Functions_overview-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Data_modules" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Data_modules"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Data modules</span> </div> </a> <ul id="toc-Data_modules-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Copyright" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Copyright"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Copyright</span> </div> </a> <ul id="toc-Copyright-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Known_issues" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Known_issues"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Known issues</span> </div> </a> <ul id="toc-Known_issues-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Module</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Unicode data</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 117 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-117" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">117 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Afrikaans" lang="af" hreflang="af" data-title="Module:Unicode data" data-language-autonym="Afrikaans" data-language-local-name="Afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-smn mw-list-item"><a href="https://smn.wikipedia.org/wiki/Mooduul:Unicode_data" title="Mooduul:Unicode data – Inari Sami" lang="smn" hreflang="smn" data-title="Mooduul:Unicode data" data-language-autonym="Anarâškielâ" data-language-local-name="Inari Sami" class="interlanguage-link-target"><span>Anarâškielâ</span></a></li><li class="interlanguage-link interwiki-anp mw-list-item"><a href="https://anp.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%82%E0%A4%B2:Unicode_data" title="मोड्यूल:Unicode data – Angika" lang="anp" hreflang="anp" data-title="मोड्यूल:Unicode data" data-language-autonym="अंगिका" data-language-local-name="Angika" class="interlanguage-link-target"><span>अंगिका</span></a></li><li class="interlanguage-link interwiki-ang mw-list-item"><a href="https://ang.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Old English" lang="ang" hreflang="ang" data-title="Module:Unicode data" data-language-autonym="Ænglisc" data-language-local-name="Old English" class="interlanguage-link-target"><span>Ænglisc</span></a></li><li class="interlanguage-link interwiki-ab mw-list-item"><a href="https://ab.wikipedia.org/wiki/%D0%90%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Амодуль:Unicode data – Abkhazian" lang="ab" hreflang="ab" data-title="Амодуль:Unicode data" data-language-autonym="Аԥсшәа" data-language-local-name="Abkhazian" class="interlanguage-link-target"><span>Аԥсшәа</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%88%D8%AD%D8%AF%D8%A9:Unicode_data" title="وحدة:Unicode data – Arabic" lang="ar" hreflang="ar" data-title="وحدة:Unicode data" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-hyw mw-list-item"><a href="https://hyw.wikipedia.org/wiki/%D5%84%D5%B8%D5%A4%D5%B8%D6%82%D5%AC:Unicode_data" title="Մոդուլ:Unicode data – Western Armenian" lang="hyw" hreflang="hyw" data-title="Մոդուլ:Unicode data" data-language-autonym="Արեւմտահայերէն" data-language-local-name="Western Armenian" class="interlanguage-link-target"><span>Արեւմտահայերէն</span></a></li><li class="interlanguage-link interwiki-as mw-list-item"><a href="https://as.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Assamese" lang="as" hreflang="as" data-title="Module:Unicode data" data-language-autonym="অসমীয়া" data-language-local-name="Assamese" class="interlanguage-link-target"><span>অসমীয়া</span></a></li><li class="interlanguage-link interwiki-ast mw-list-item"><a href="https://ast.wikipedia.org/wiki/M%C3%B3dulu:Unicode_data" title="Módulu:Unicode data – Asturian" lang="ast" hreflang="ast" data-title="Módulu:Unicode data" data-language-autonym="Asturianu" data-language-local-name="Asturian" class="interlanguage-link-target"><span>Asturianu</span></a></li><li class="interlanguage-link interwiki-av mw-list-item"><a href="https://av.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Avaric" lang="av" hreflang="av" data-title="Модуль:Unicode data" data-language-autonym="Авар" data-language-local-name="Avaric" class="interlanguage-link-target"><span>Авар</span></a></li><li class="interlanguage-link interwiki-azb mw-list-item"><a href="https://azb.wikipedia.org/wiki/%D9%85%D8%A7%DA%98%D9%88%D9%84:Unicode_data" title="ماژول:Unicode data – South Azerbaijani" lang="azb" hreflang="azb" data-title="ماژول:Unicode data" data-language-autonym="تۆرکجه" data-language-local-name="South Azerbaijani" class="interlanguage-link-target"><span>تۆرکجه</span></a></li><li class="interlanguage-link interwiki-ban mw-list-item"><a href="https://ban.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Balinese" lang="ban" hreflang="ban" data-title="Modul:Unicode data" data-language-autonym="Basa Bali" data-language-local-name="Balinese" class="interlanguage-link-target"><span>Basa Bali</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:%E0%A6%87%E0%A6%89%E0%A6%A8%E0%A6%BF%E0%A6%95%E0%A7%8B%E0%A6%A1_%E0%A6%89%E0%A6%AA%E0%A6%BE%E0%A6%A4%E0%A7%8D%E0%A6%A4" title="মডিউল:ইউনিকোড উপাত্ত – Bangla" lang="bn" hreflang="bn" data-title="মডিউল:ইউনিকোড উপাত্ত" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-bjn mw-list-item"><a href="https://bjn.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Banjar" lang="bjn" hreflang="bjn" data-title="Modul:Unicode data" data-language-autonym="Banjar" data-language-local-name="Banjar" class="interlanguage-link-target"><span>Banjar</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Unicode_data" title="模組:Unicode data – Minnan" lang="nan" hreflang="nan" data-title="模組:Unicode data" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="Minnan" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-ba mw-list-item"><a href="https://ba.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Bashkir" lang="ba" hreflang="ba" data-title="Модуль:Unicode data" data-language-autonym="Башҡортса" data-language-local-name="Bashkir" class="interlanguage-link-target"><span>Башҡортса</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%97%D1%8C%D0%B2%D0%B5%D1%81%D1%82%D0%BA%D1%96_%D0%AE%D0%BD%D1%96%D0%BA%D0%BE%D0%B4%D1%83" title="Модуль:Зьвесткі Юнікоду – Belarusian (Taraškievica orthography)" lang="be-tarask" hreflang="be-tarask" data-title="Модуль:Зьвесткі Юнікоду" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bh mw-list-item"><a href="https://bh.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Bhojpuri" lang="bh" hreflang="bh" data-title="Module:Unicode data" data-language-autonym="भोजपुरी" data-language-local-name="Bhojpuri" class="interlanguage-link-target"><span>भोजपुरी</span></a></li><li class="interlanguage-link interwiki-bcl mw-list-item"><a href="https://bcl.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Central Bikol" lang="bcl" hreflang="bcl" data-title="Module:Unicode data" data-language-autonym="Bikol Central" data-language-local-name="Central Bikol" class="interlanguage-link-target"><span>Bikol Central</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Bosnian" lang="bs" hreflang="bs" data-title="Modul:Unicode data" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-bxr mw-list-item"><a href="https://bxr.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Russia Buriat" lang="bxr" hreflang="bxr" data-title="Модуль:Unicode data" data-language-autonym="Буряад" data-language-local-name="Russia Buriat" class="interlanguage-link-target"><span>Буряад</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/M%C3%B2dul:Unicode_data" title="Mòdul:Unicode data – Catalan" lang="ca" hreflang="ca" data-title="Mòdul:Unicode data" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-ceb mw-list-item"><a href="https://ceb.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Cebuano" lang="ceb" hreflang="ceb" data-title="Module:Unicode data" data-language-autonym="Cebuano" data-language-local-name="Cebuano" class="interlanguage-link-target"><span>Cebuano</span></a></li><li class="interlanguage-link interwiki-sn mw-list-item"><a href="https://sn.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Shona" lang="sn" hreflang="sn" data-title="Module:Unicode data" data-language-autonym="ChiShona" data-language-local-name="Shona" class="interlanguage-link-target"><span>ChiShona</span></a></li><li class="interlanguage-link interwiki-co mw-list-item"><a href="https://co.wikipedia.org/wiki/Modulo:Unicode_data" title="Modulo:Unicode data – Corsican" lang="co" hreflang="co" data-title="Modulo:Unicode data" data-language-autonym="Corsu" data-language-local-name="Corsican" class="interlanguage-link-target"><span>Corsu</span></a></li><li class="interlanguage-link interwiki-ary mw-list-item"><a href="https://ary.wikipedia.org/wiki/%D9%85%D9%88%D8%AF%D9%88%D9%84:Unicode_data" title="مودول:Unicode data – Moroccan Arabic" lang="ary" hreflang="ary" data-title="مودول:Unicode data" data-language-autonym="الدارجة" data-language-local-name="Moroccan Arabic" class="interlanguage-link-target"><span>الدارجة</span></a></li><li class="interlanguage-link interwiki-dv mw-list-item"><a href="https://dv.wikipedia.org/wiki/%DE%89%DE%AE%DE%91%DE%A8%DE%87%DE%AA%DE%8D%DE%B0:Unicode_data" title="މޮޑިއުލް:Unicode data – Divehi" lang="dv" hreflang="dv" data-title="މޮޑިއުލް:Unicode data" data-language-autonym="ދިވެހިބަސް" data-language-local-name="Divehi" class="interlanguage-link-target"><span>ދިވެހިބަސް</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Greek" lang="el" hreflang="el" data-title="Module:Unicode data" data-language-autonym="Ελληνικά" data-language-local-name="Greek" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/M%C3%B3dulo:Unicode_data" title="Módulo:Unicode data – Spanish" lang="es" hreflang="es" data-title="Módulo:Unicode data" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Unicode_data" title="پودمان:Unicode data – Persian" lang="fa" hreflang="fa" data-title="پودمان:Unicode data" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-hif mw-list-item"><a href="https://hif.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Fiji Hindi" lang="hif" hreflang="hif" data-title="Module:Unicode data" data-language-autonym="Fiji Hindi" data-language-local-name="Fiji Hindi" class="interlanguage-link-target"><span>Fiji Hindi</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Irish" lang="ga" hreflang="ga" data-title="Module:Unicode data" data-language-autonym="Gaeilge" data-language-local-name="Irish" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/M%C3%B3dulo:Unicode_data" title="Módulo:Unicode data – Galician" lang="gl" hreflang="gl" data-title="Módulo:Unicode data" data-language-autonym="Galego" data-language-local-name="Galician" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-gan mw-list-item"><a href="https://gan.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Unicode_data" title="模組:Unicode data – Gan" lang="gan" hreflang="gan" data-title="模組:Unicode data" data-language-autonym="贛語" data-language-local-name="Gan" class="interlanguage-link-target"><span>贛語</span></a></li><li class="interlanguage-link interwiki-gu mw-list-item"><a href="https://gu.wikipedia.org/wiki/%E0%AA%B5%E0%AA%BF%E0%AA%AD%E0%AA%BE%E0%AA%97:Unicode_data" title="વિભાગ:Unicode data – Gujarati" lang="gu" hreflang="gu" data-title="વિભાગ:Unicode data" data-language-autonym="ગુજરાતી" data-language-local-name="Gujarati" class="interlanguage-link-target"><span>ગુજરાતી</span></a></li><li class="interlanguage-link interwiki-gom mw-list-item"><a href="https://gom.wikipedia.org/wiki/%E0%A4%8F%E0%A4%95%E0%A4%95:Unicode_data" title="एकक:Unicode data – Goan Konkani" lang="gom" hreflang="gom" data-title="एकक:Unicode data" data-language-autonym="गोंयची कोंकणी / Gõychi Konknni" data-language-local-name="Goan Konkani" class="interlanguage-link-target"><span>गोंयची कोंकणी / Gõychi Konknni</span></a></li><li class="interlanguage-link interwiki-xal mw-list-item"><a href="https://xal.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Kalmyk" lang="xal" hreflang="xal" data-title="Модуль:Unicode data" data-language-autonym="Хальмг" data-language-local-name="Kalmyk" class="interlanguage-link-target"><span>Хальмг</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88:Unicode_data" title="모듈:Unicode data – Korean" lang="ko" hreflang="ko" data-title="모듈:Unicode data" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ha mw-list-item"><a href="https://ha.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Hausa" lang="ha" hreflang="ha" data-title="Module:Unicode data" data-language-autonym="Hausa" data-language-local-name="Hausa" class="interlanguage-link-target"><span>Hausa</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%84%D5%B8%D5%A4%D5%B8%D6%82%D5%AC:Unicode_data" title="Մոդուլ:Unicode data – Armenian" lang="hy" hreflang="hy" data-title="Մոդուլ:Unicode data" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%89%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%82%E0%A4%B2:Unicode_data" title="मॉड्यूल:Unicode data – Hindi" lang="hi" hreflang="hi" data-title="मॉड्यूल:Unicode data" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Croatian" lang="hr" hreflang="hr" data-title="Modul:Unicode data" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-ilo mw-list-item"><a href="https://ilo.wikipedia.org/wiki/Modulo:Unicode_data" title="Modulo:Unicode data – Iloko" lang="ilo" hreflang="ilo" data-title="Modulo:Unicode data" data-language-autonym="Ilokano" data-language-local-name="Iloko" class="interlanguage-link-target"><span>Ilokano</span></a></li><li class="interlanguage-link interwiki-bpy mw-list-item"><a href="https://bpy.wikipedia.org/wiki/%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:Unicode_data" title="মডিউল:Unicode data – Bishnupriya" lang="bpy" hreflang="bpy" data-title="মডিউল:Unicode data" data-language-autonym="বিষ্ণুপ্রিয়া মণিপুরী" data-language-local-name="Bishnupriya" class="interlanguage-link-target"><span>বিষ্ণুপ্রিয়া মণিপুরী</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Indonesian" lang="id" hreflang="id" data-title="Modul:Unicode data" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-xh mw-list-item"><a href="https://xh.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Xhosa" lang="xh" hreflang="xh" data-title="Module:Unicode data" data-language-autonym="IsiXhosa" data-language-local-name="Xhosa" class="interlanguage-link-target"><span>IsiXhosa</span></a></li><li class="interlanguage-link interwiki-zu mw-list-item"><a href="https://zu.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Zulu" lang="zu" hreflang="zu" data-title="Module:Unicode data" data-language-autonym="IsiZulu" data-language-local-name="Zulu" class="interlanguage-link-target"><span>IsiZulu</span></a></li><li class="interlanguage-link interwiki-jv mw-list-item"><a href="https://jv.wikipedia.org/wiki/Modhul:Unicode_data" title="Modhul:Unicode data – Javanese" lang="jv" hreflang="jv" data-title="Modhul:Unicode data" data-language-autonym="Jawa" data-language-local-name="Javanese" class="interlanguage-link-target"><span>Jawa</span></a></li><li class="interlanguage-link interwiki-kn mw-list-item"><a href="https://kn.wikipedia.org/wiki/%E0%B2%AE%E0%B2%BE%E0%B2%A1%E0%B3%8D%E0%B2%AF%E0%B3%82%E0%B2%B2%E0%B3%8D:Unicode_data" title="ಮಾಡ್ಯೂಲ್:Unicode data – Kannada" lang="kn" hreflang="kn" data-title="ಮಾಡ್ಯೂಲ್:Unicode data" data-language-autonym="ಕನ್ನಡ" data-language-local-name="Kannada" class="interlanguage-link-target"><span>ಕನ್ನಡ</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikipedia.org/wiki/%E1%83%9B%E1%83%9D%E1%83%93%E1%83%A3%E1%83%9A%E1%83%98:Unicode_data" title="მოდული:Unicode data – Georgian" lang="ka" hreflang="ka" data-title="მოდული:Unicode data" data-language-autonym="ქართული" data-language-local-name="Georgian" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-rn mw-list-item"><a href="https://rn.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Rundi" lang="rn" hreflang="rn" data-title="Module:Unicode data" data-language-autonym="Ikirundi" data-language-local-name="Rundi" class="interlanguage-link-target"><span>Ikirundi</span></a></li><li class="interlanguage-link interwiki-ku mw-list-item"><a href="https://ku.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Kurdish" lang="ku" hreflang="ku" data-title="Modul:Unicode data" data-language-autonym="Kurdî" data-language-local-name="Kurdish" class="interlanguage-link-target"><span>Kurdî</span></a></li><li class="interlanguage-link interwiki-lld mw-list-item"><a href="https://lld.wikipedia.org/wiki/Modulo:Unicode_data" title="Modulo:Unicode data – Ladin" lang="lld" hreflang="lld" data-title="Modulo:Unicode data" data-language-autonym="Ladin" data-language-local-name="Ladin" class="interlanguage-link-target"><span>Ladin</span></a></li><li class="interlanguage-link interwiki-lad mw-list-item"><a href="https://lad.wikipedia.org/wiki/M%C3%B3dulo:Unicode_data" title="Módulo:Unicode data – Ladino" lang="lad" hreflang="lad" data-title="Módulo:Unicode data" data-language-autonym="Ladino" data-language-local-name="Ladino" class="interlanguage-link-target"><span>Ladino</span></a></li><li class="interlanguage-link interwiki-lo mw-list-item"><a href="https://lo.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Lao" lang="lo" hreflang="lo" data-title="Module:Unicode data" data-language-autonym="ລາວ" data-language-local-name="Lao" class="interlanguage-link-target"><span>ລາວ</span></a></li><li class="interlanguage-link interwiki-mai mw-list-item"><a href="https://mai.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:Unicode_data" title="मोड्युल:Unicode data – Maithili" lang="mai" hreflang="mai" data-title="मोड्युल:Unicode data" data-language-autonym="मैथिली" data-language-local-name="Maithili" class="interlanguage-link-target"><span>मैथिली</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Unicode_data" title="Модул:Unicode data – Macedonian" lang="mk" hreflang="mk" data-title="Модул:Unicode data" data-language-autonym="Македонски" data-language-local-name="Macedonian" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Unicode_data" title="ഘടകം:Unicode data – Malayalam" lang="ml" hreflang="ml" data-title="ഘടകം:Unicode data" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mt mw-list-item"><a href="https://mt.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Maltese" lang="mt" hreflang="mt" data-title="Module:Unicode data" data-language-autonym="Malti" data-language-local-name="Maltese" class="interlanguage-link-target"><span>Malti</span></a></li><li class="interlanguage-link interwiki-mi mw-list-item"><a href="https://mi.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Māori" lang="mi" hreflang="mi" data-title="Module:Unicode data" data-language-autonym="Māori" data-language-local-name="Māori" class="interlanguage-link-target"><span>Māori</span></a></li><li class="interlanguage-link interwiki-mr mw-list-item"><a href="https://mr.wikipedia.org/wiki/%E0%A4%B5%E0%A4%BF%E0%A4%AD%E0%A4%BE%E0%A4%97:Unicode_data" title="विभाग:Unicode data – Marathi" lang="mr" hreflang="mr" data-title="विभाग:Unicode data" data-language-autonym="मराठी" data-language-local-name="Marathi" class="interlanguage-link-target"><span>मराठी</span></a></li><li class="interlanguage-link interwiki-mnw mw-list-item"><a href="https://mnw.wikipedia.org/wiki/%E1%80%99%E1%80%9D%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0:Unicode_data" title="မဝ်ဂျူ:Unicode data – Mon" lang="mnw" hreflang="mnw" data-title="မဝ်ဂျူ:Unicode data" data-language-autonym="ဘာသာမန်" data-language-local-name="Mon" class="interlanguage-link-target"><span>ဘာသာမန်</span></a></li><li class="interlanguage-link interwiki-mzn mw-list-item"><a href="https://mzn.wikipedia.org/wiki/%D9%85%D8%A7%DA%98%D9%88%D9%84:Unicode_data" title="ماژول:Unicode data – Mazanderani" lang="mzn" hreflang="mzn" data-title="ماژول:Unicode data" data-language-autonym="مازِرونی" data-language-local-name="Mazanderani" class="interlanguage-link-target"><span>مازِرونی</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Malay" lang="ms" hreflang="ms" data-title="Modul:Unicode data" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-fat mw-list-item"><a href="https://fat.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Fanti" lang="fat" hreflang="fat" data-title="Module:Unicode data" data-language-autonym="Mfantse" data-language-local-name="Fanti" class="interlanguage-link-target"><span>Mfantse</span></a></li><li class="interlanguage-link interwiki-cdo mw-list-item"><a href="https://cdo.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Unicode_data" title="模組:Unicode data – Mindong" lang="cdo" hreflang="cdo" data-title="模組:Unicode data" data-language-autonym="閩東語 / Mìng-dĕ̤ng-ngṳ̄" data-language-local-name="Mindong" class="interlanguage-link-target"><span>閩東語 / Mìng-dĕ̤ng-ngṳ̄</span></a></li><li class="interlanguage-link interwiki-mdf mw-list-item"><a href="https://mdf.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Moksha" lang="mdf" hreflang="mdf" data-title="Модуль:Unicode data" data-language-autonym="Мокшень" data-language-local-name="Moksha" class="interlanguage-link-target"><span>Мокшень</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Mongolian" lang="mn" hreflang="mn" data-title="Module:Unicode data" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:Unicode_data" title="မော်ဂျူး:Unicode data – Burmese" lang="my" hreflang="my" data-title="မော်ဂျူး:Unicode data" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="Burmese" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-nds-nl mw-list-item"><a href="https://nds-nl.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Low Saxon" lang="nds-NL" hreflang="nds-NL" data-title="Module:Unicode data" data-language-autonym="Nedersaksies" data-language-local-name="Low Saxon" class="interlanguage-link-target"><span>Nedersaksies</span></a></li><li class="interlanguage-link interwiki-ne mw-list-item"><a href="https://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:Unicode_data" title="मोड्युल:Unicode data – Nepali" lang="ne" hreflang="ne" data-title="मोड्युल:Unicode data" data-language-autonym="नेपाली" data-language-local-name="Nepali" class="interlanguage-link-target"><span>नेपाली</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Unicode_data" title="モジュール:Unicode data – Japanese" lang="ja" hreflang="ja" data-title="モジュール:Unicode data" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-ce mw-list-item"><a href="https://ce.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Chechen" lang="ce" hreflang="ce" data-title="Модуль:Unicode data" data-language-autonym="Нохчийн" data-language-local-name="Chechen" class="interlanguage-link-target"><span>Нохчийн</span></a></li><li class="interlanguage-link interwiki-pih mw-list-item"><a href="https://pih.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Norfuk / Pitkern" lang="pih" hreflang="pih" data-title="Module:Unicode data" data-language-autonym="Norfuk / Pitkern" data-language-local-name="Norfuk / Pitkern" class="interlanguage-link-target"><span>Norfuk / Pitkern</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Norwegian Nynorsk" lang="nn" hreflang="nn" data-title="Modul:Unicode data" data-language-autonym="Norsk nynorsk" data-language-local-name="Norwegian Nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Uzbek" lang="uz" hreflang="uz" data-title="Modul:Unicode data" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="Uzbek" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%AE%E0%A9%8C%E0%A8%A1%E0%A8%BF%E0%A8%8A%E0%A8%B2:Unicode_data" title="ਮੌਡਿਊਲ:Unicode data – Punjabi" lang="pa" hreflang="pa" data-title="ਮੌਡਿਊਲ:Unicode data" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-blk mw-list-item"><a href="https://blk.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:Unicode_data" title="မော်ဂျူး:Unicode data – Pa&#039;O" lang="blk" hreflang="blk" data-title="မော်ဂျူး:Unicode data" data-language-autonym="ပအိုဝ်ႏဘာႏသာႏ" data-language-local-name="Pa&#039;O" class="interlanguage-link-target"><span>ပအိုဝ်ႏဘာႏသာႏ</span></a></li><li class="interlanguage-link interwiki-ps mw-list-item"><a href="https://ps.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Pashto" lang="ps" hreflang="ps" data-title="Module:Unicode data" data-language-autonym="پښتو" data-language-local-name="Pashto" class="interlanguage-link-target"><span>پښتو</span></a></li><li class="interlanguage-link interwiki-km mw-list-item"><a href="https://km.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Khmer" lang="km" hreflang="km" data-title="Module:Unicode data" data-language-autonym="ភាសាខ្មែរ" data-language-local-name="Khmer" class="interlanguage-link-target"><span>ភាសាខ្មែរ</span></a></li><li class="interlanguage-link interwiki-tpi mw-list-item"><a href="https://tpi.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Tok Pisin" lang="tpi" hreflang="tpi" data-title="Module:Unicode data" data-language-autonym="Tok Pisin" data-language-local-name="Tok Pisin" class="interlanguage-link-target"><span>Tok Pisin</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/M%C3%B3dulo:Unicode_data" title="Módulo:Unicode data – Portuguese" lang="pt" hreflang="pt" data-title="Módulo:Unicode data" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Romanian" lang="ro" hreflang="ro" data-title="Modul:Unicode data" data-language-autonym="Română" data-language-local-name="Romanian" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Russian" lang="ru" hreflang="ru" data-title="Модуль:Unicode data" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-szy mw-list-item"><a href="https://szy.wikipedia.org/wiki/bacu-saupu:Unicode_data" title="bacu-saupu:Unicode data – Sakizaya" lang="szy" hreflang="szy" data-title="bacu-saupu:Unicode data" data-language-autonym="Sakizaya" data-language-local-name="Sakizaya" class="interlanguage-link-target"><span>Sakizaya</span></a></li><li class="interlanguage-link interwiki-sco mw-list-item"><a href="https://sco.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Scots" lang="sco" hreflang="sco" data-title="Module:Unicode data" data-language-autonym="Scots" data-language-local-name="Scots" class="interlanguage-link-target"><span>Scots</span></a></li><li class="interlanguage-link interwiki-tn mw-list-item"><a href="https://tn.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Tswana" lang="tn" hreflang="tn" data-title="Module:Unicode data" data-language-autonym="Setswana" data-language-local-name="Tswana" class="interlanguage-link-target"><span>Setswana</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/Moduli:Unicode_data" title="Moduli:Unicode data – Albanian" lang="sq" hreflang="sq" data-title="Moduli:Unicode data" data-language-autonym="Shqip" data-language-local-name="Albanian" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Sinhala" lang="si" hreflang="si" data-title="Module:Unicode data" data-language-autonym="සිංහල" data-language-local-name="Sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Simple English" lang="en-simple" hreflang="en-simple" data-title="Module:Unicode data" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sd mw-list-item"><a href="https://sd.wikipedia.org/wiki/%D9%85%D8%A7%DA%8A%D9%8A%D9%88%D9%84:Unicode_data" title="ماڊيول:Unicode data – Sindhi" lang="sd" hreflang="sd" data-title="ماڊيول:Unicode data" data-language-autonym="سنڌي" data-language-local-name="Sindhi" class="interlanguage-link-target"><span>سنڌي</span></a></li><li class="interlanguage-link interwiki-ss mw-list-item"><a href="https://ss.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Swati" lang="ss" hreflang="ss" data-title="Module:Unicode data" data-language-autonym="SiSwati" data-language-local-name="Swati" class="interlanguage-link-target"><span>SiSwati</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Slovenian" lang="sl" hreflang="sl" data-title="Modul:Unicode data" data-language-autonym="Slovenščina" data-language-local-name="Slovenian" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D9%85%DB%86%D8%AF%DB%8C%D9%88%D9%88%D9%84:Unicode_data" title="مۆدیوول:Unicode data – Central Kurdish" lang="ckb" hreflang="ckb" data-title="مۆدیوول:Unicode data" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Unicode_data" title="Модул:Unicode data – Serbian" lang="sr" hreflang="sr" data-title="Модул:Unicode data" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Serbo-Croatian" lang="sh" hreflang="sh" data-title="Modul:Unicode data" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbo-Croatian" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-su mw-list-item"><a href="https://su.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Sundanese" lang="su" hreflang="su" data-title="Modul:Unicode data" data-language-autonym="Sunda" data-language-local-name="Sundanese" class="interlanguage-link-target"><span>Sunda</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Moduuli:Unicode_data" title="Moduuli:Unicode data – Finnish" lang="fi" hreflang="fi" data-title="Moduuli:Unicode data" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Swedish" lang="sv" hreflang="sv" data-title="Modul:Unicode data" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-tl mw-list-item"><a href="https://tl.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Tagalog" lang="tl" hreflang="tl" data-title="Module:Unicode data" data-language-autonym="Tagalog" data-language-local-name="Tagalog" class="interlanguage-link-target"><span>Tagalog</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Tamil" lang="ta" hreflang="ta" data-title="Module:Unicode data" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-kab mw-list-item"><a href="https://kab.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Kabyle" lang="kab" hreflang="kab" data-title="Module:Unicode data" data-language-autonym="Taqbaylit" data-language-local-name="Kabyle" class="interlanguage-link-target"><span>Taqbaylit</span></a></li><li class="interlanguage-link interwiki-shn mw-list-item"><a href="https://shn.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%82%83%E1%82%87%E1%81%B5%E1%80%BB%E1%80%B0%E1%80%B8:Unicode_data" title="မေႃႇၵျူး:Unicode data – Shan" lang="shn" hreflang="shn" data-title="မေႃႇၵျူး:Unicode data" data-language-autonym="ၽႃႇသႃႇတႆး " data-language-local-name="Shan" class="interlanguage-link-target"><span>ၽႃႇသႃႇတႆး </span></a></li><li class="interlanguage-link interwiki-tet mw-list-item"><a href="https://tet.wikipedia.org/wiki/M%C3%B3dulo:Unicode_data" title="Módulo:Unicode data – Tetum" lang="tet" hreflang="tet" data-title="Módulo:Unicode data" data-language-autonym="Tetun" data-language-local-name="Tetum" class="interlanguage-link-target"><span>Tetun</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%A1%E0%B8%AD%E0%B8%94%E0%B8%B9%E0%B8%A5:Unicode_data" title="มอดูล:Unicode data – Thai" lang="th" hreflang="th" data-title="มอดูล:Unicode data" data-language-autonym="ไทย" data-language-local-name="Thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-ti mw-list-item"><a href="https://ti.wikipedia.org/wiki/%E1%88%9E%E1%8B%B5%E1%8B%A9%E1%88%8D:Unicode_data" title="ሞድዩል:Unicode data – Tigrinya" lang="ti" hreflang="ti" data-title="ሞድዩል:Unicode data" data-language-autonym="ትግርኛ" data-language-local-name="Tigrinya" class="interlanguage-link-target"><span>ትግርኛ</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Mod%C3%BCl:Unicode_verisi" title="Modül:Unicode verisi – Turkish" lang="tr" hreflang="tr" data-title="Modül:Unicode verisi" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-tk mw-list-item"><a href="https://tk.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Turkmen" lang="tk" hreflang="tk" data-title="Module:Unicode data" data-language-autonym="Türkmençe" data-language-local-name="Turkmen" class="interlanguage-link-target"><span>Türkmençe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Unicode_data" title="Модуль:Unicode data – Ukrainian" lang="uk" hreflang="uk" data-title="Модуль:Unicode data" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:Unicode_data" title="ماڈیول:Unicode data – Urdu" lang="ur" hreflang="ur" data-title="ماڈیول:Unicode data" data-language-autonym="اردو" data-language-local-name="Urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/M%C3%B4_%C4%91un:Unicode_data" title="Mô đun:Unicode data – Vietnamese" lang="vi" hreflang="vi" data-title="Mô đun:Unicode data" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-war mw-list-item"><a href="https://war.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Waray" lang="war" hreflang="war" data-title="Module:Unicode data" data-language-autonym="Winaray" data-language-local-name="Waray" class="interlanguage-link-target"><span>Winaray</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/%E6%A8%A1%E5%9D%97:Unicode_data" title="模块:Unicode data – Wu" lang="wuu" hreflang="wuu" data-title="模块:Unicode data" data-language-autonym="吴语" data-language-local-name="Wu" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-yo mw-list-item"><a href="https://yo.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Yoruba" lang="yo" hreflang="yo" data-title="Module:Unicode data" data-language-autonym="Yorùbá" data-language-local-name="Yoruba" class="interlanguage-link-target"><span>Yorùbá</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Unicode_data" title="模組:Unicode data – Cantonese" lang="yue" hreflang="yue" data-title="模組:Unicode data" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – Chinese" lang="zh" hreflang="zh" data-title="Module:Unicode data" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-tdd mw-list-item"><a href="https://tdd.wikipedia.org/wiki/%E1%A5%9B%E1%A5%A8%E1%A5%9D%E1%A5%B1_%E1%A5%93%E1%A5%A7%E1%A5%B0:Unicode_data" title="ᥛᥨᥝᥱ ᥓᥧᥰ:Unicode data – Tai Nuea" lang="tdd" hreflang="tdd" data-title="ᥛᥨᥝᥱ ᥓᥧᥰ:Unicode data" data-language-autonym="ᥖᥭᥰ ᥖᥬᥲ ᥑᥨᥒᥰ" data-language-local-name="Tai Nuea" class="interlanguage-link-target"><span>ᥖᥭᥰ ᥖᥬᥲ ᥑᥨᥒᥰ</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q39301585#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Module:Unicode_data" title="View the module page [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Module_talk:Unicode_data" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Module:Unicode_data"><span>Read</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Module:Unicode_data"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&amp;action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Module:Unicode_data" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Module:Unicode_data" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&amp;oldid=1220055129" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FModule%3AUnicode_data"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FModule%3AUnicode_data"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-electronpdfservice-sidebar-portlet-heading" class="vector-menu mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="electron-print_pdf" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Module%3AUnicode_data&amp;action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-wikibooks mw-list-item"><a href="https://en.wikibooks.org/wiki/Module:Unicode_data" hreflang="en"><span>Wikibooks</span></a></li><li class="wb-otherproject-link wb-otherproject-wikiversity mw-list-item"><a href="https://en.wikiversity.org/wiki/Module:Unicode_data" hreflang="en"><span>Wikiversity</span></a></li><li class="wb-otherproject-link wb-otherproject-wiktionary mw-list-item"><a href="https://en.wiktionary.org/wiki/Module:Unicode_data" hreflang="en"><span>Wiktionary</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q39301585" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> <div id="mw-indicator-pp-default" class="mw-indicator"><div class="mw-parser-output"><span typeof="mw:File"><a href="/wiki/Wikipedia:Protection_policy#template" title="This high-risk module is permanently template-protected to prevent vandalism"><img alt="Permanently protected module" src="//upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/20px-Template-protection-shackle.svg.png" decoding="async" width="20" height="20" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/30px-Template-protection-shackle.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/5/53/Template-protection-shackle.svg/40px-Template-protection-shackle.svg.png 2x" data-file-width="512" data-file-height="512" /></a></span></div></div> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1237875617">.mw-parser-output .documentation,.mw-parser-output .documentation-metadata{border:1px solid #a2a9b1;background-color:#ecfcf4;clear:both}.mw-parser-output .documentation{margin:1em 0 0 0;padding:1em}.mw-parser-output .documentation-metadata{margin:0.2em 0;font-style:italic;padding:0.4em 1em}.mw-parser-output .documentation-startbox{padding-bottom:3px;border-bottom:1px solid #aaa;margin-bottom:1ex}.mw-parser-output .documentation-heading{font-weight:bold;font-size:125%}.mw-parser-output .documentation-clear{clear:both}.mw-parser-output .documentation-toolbar{font-style:normal;font-size:85%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .documentation,html.skin-theme-clientpref-night .mw-parser-output .documentation-metadata{background-color:#0b1e1c}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .documentation,html.skin-theme-clientpref-os .mw-parser-output .documentation-metadata{background-color:#0b1e1c}}</style><div class="documentation-container" role="complementary" aria-labelledby="documentation-heading"> <div class="documentation"> <div class="documentation-startbox"> <span class="documentation-heading" id="documentation-heading"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png" decoding="async" width="50" height="22" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/75px-Test_Template_Info-Icon_-_Version_%282%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/100px-Test_Template_Info-Icon_-_Version_%282%29.svg.png 2x" data-file-width="1792" data-file-height="800" /></span></span> Module documentation</span><span class="mw-editsection-like plainlinks">&#91;<a href="/wiki/Module:Unicode_data/doc" title="Module:Unicode data/doc">view</a>&#93; &#91;<a href="/wiki/Special:EditPage/Module:Unicode_data/doc" title="Special:EditPage/Module:Unicode data/doc">edit</a>&#93; &#91;<a href="/wiki/Special:PageHistory/Module:Unicode_data/doc" title="Special:PageHistory/Module:Unicode data/doc">history</a>&#93; &#91;<a href="/wiki/Special:Purge/Module:Unicode_data" title="Special:Purge/Module:Unicode data">purge</a>&#93;</span></div> <style data-mw-deduplicate="TemplateStyles:r1238436933">.mw-parser-output .ombox{margin:4px 0;border-collapse:collapse;border:1px solid #a2a9b1;background-color:var(--background-color-neutral-subtle,#f8f9fa);box-sizing:border-box;color:var(--color-base,#202122)}.mw-parser-output .ombox.mbox-small{font-size:88%;line-height:1.25em}.mw-parser-output .ombox-speedy{border:2px solid #b32424;background-color:#fee7e6}.mw-parser-output .ombox-delete{border:2px solid #b32424}.mw-parser-output .ombox-content{border:1px solid #f28500}.mw-parser-output .ombox-style{border:1px solid #fc3}.mw-parser-output .ombox-move{border:1px solid #9932cc}.mw-parser-output .ombox-protection{border:2px solid #a2a9b1}.mw-parser-output .ombox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .ombox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .ombox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .ombox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ombox .mbox-invalid-type{text-align:center}@media(min-width:720px){.mw-parser-output .ombox{margin:4px 10%}.mw-parser-output .ombox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;width:238px}}body.skin--responsive .mw-parser-output table.ombox img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .ombox-speedy{background-color:#310402}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .ombox-speedy{background-color:#310402}}</style><table class="plainlinks ombox ombox-content" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="Warning" src="//upload.wikimedia.org/wikipedia/en/thumb/5/5f/Ambox_warning_orange.svg/40px-Ambox_warning_orange.svg.png" decoding="async" width="40" height="34" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/5/5f/Ambox_warning_orange.svg/60px-Ambox_warning_orange.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/5/5f/Ambox_warning_orange.svg/80px-Ambox_warning_orange.svg.png 2x" data-file-width="378" data-file-height="326" /></span></span></td><td class="mbox-text"><b>This Lua module is used on <a class="external text" href="https://linkcount.toolforge.org/?project=en.wikipedia.org&amp;page=Module%3AUnicode+data#transclusions">approximately&#x20;1,560,000&#x20;pages, or roughly 3% of all pages</a></b>.<br /> To avoid major disruption and server load, any changes should be tested in the module's <a href="/wiki/Module:Unicode_data/sandbox" title="Module:Unicode data/sandbox">/sandbox</a> or <a href="/wiki/Module:Unicode_data/testcases" title="Module:Unicode data/testcases">/testcases</a> subpages, or in your own <a href="/wiki/Module:Sandbox" title="Module:Sandbox">module sandbox</a>. The tested changes can be added to this page in a single edit. Consider discussing changes on the <a href="/wiki/Module_talk:Unicode_data" title="Module talk:Unicode data">talk page</a> before implementing them.</td></tr></tbody></table><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238436933"><table class="plainlinks ombox ombox-protection" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/0/0f/Cascade-protection-shackle.svg/40px-Cascade-protection-shackle.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/0/0f/Cascade-protection-shackle.svg/60px-Cascade-protection-shackle.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/0/0f/Cascade-protection-shackle.svg/80px-Cascade-protection-shackle.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></td><td class="mbox-text">This module can only be edited by <a href="/wiki/Wikipedia:Administrators" title="Wikipedia:Administrators">administrators</a> because it is <a href="/wiki/Wikipedia:Transclusion" class="mw-redirect" title="Wikipedia:Transclusion">transcluded</a> onto one or more <a href="/wiki/Wikipedia:Protection_policy#Cascading_protection" title="Wikipedia:Protection policy">cascade-protected</a> pages.</td></tr></tbody></table> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Usage">Usage</h2></div> <p>This module provides functions that access information on Unicode code points. The information is retrieved from data modules generated from the <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/">Unicode Character Database</a>, or derived by rules given in the <a rel="nofollow" class="external text" href="https://www.unicode.org/versions/Unicode11.0.0/UnicodeStandard-11.0.pdf">Unicode Specification</a>. It and its submodules were copied from English Wiktionary and then modified; see <a href="https://en.wiktionary.org/wiki/Module:Unicode_data" class="extiw" title="wikt:Module:Unicode data">there</a> for more information. </p> <div class="mw-heading mw-heading2"><h2 id="Parameters_and_functions">Parameters and functions</h2></div> <div class="mw-heading mw-heading3"><h3 id="code_point">code point</h3></div> <p>The code point is to be entered as <b>hexadecimal value</b>. For example, <span class="nowrap"><style data-mw-deduplicate="TemplateStyles:r886049734">.mw-parser-output .monospaced{font-family:monospace,monospace}</style><span class="monospaced">U+00A9</span>&#x20;</span><span style="font-size:125%;line-height:1em">&#xa9;</span> <span style="font-variant: small-caps; text-transform: lowercase;">COPYRIGHT SIGN</span>: </p> <dl><dd><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">|A9<sub>hex</sub></span></dd> <dd><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">|0xA9<sub>hex</sub></span></dd> <dd><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">|0x00A9<sub>hex</sub></span></dd> <dd><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">|0x00a9<sub>hex</sub></span></dd> <dd><code>{{#invoke:Unicode data|lookup|name|0x00A9}}</code> &#8594; COPYRIGHT SIGN</dd></dl> <p>Incorrect or unintended results: </p> <dl><dd><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">169<sub>dec</sub></span>: <code>{{#invoke:Unicode data|lookup|name|169}}</code> &#8594; LATIN SMALL LETTER U WITH TILDE <span typeof="mw:File"><span><img alt="Red X" src="//upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/13px-Red_x.svg.png" decoding="async" width="13" height="13" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/20px-Red_x.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/26px-Red_x.svg.png 2x" data-file-width="600" data-file-height="600" /></span></span><span style="display: none;">N</span> &#8212;"U+00A9" <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">&amp;copy;</code> expected; but is read as <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">00A9<sub>hex</sub></span>&#160;(that is,&#160;<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">361<sub>dec</sub></span></dd> <dd><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">U+00A9</span> <code>{{#invoke:Unicode data|lookup|name|U+00A9}}</code> <span typeof="mw:File"><span><img alt="Red X" src="//upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/13px-Red_x.svg.png" decoding="async" width="13" height="13" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/20px-Red_x.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/26px-Red_x.svg.png 2x" data-file-width="600" data-file-height="600" /></span></span><span style="display: none;">N</span> &#8212;do not use "U+" prefix</dd> <dd><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">غ</span> <code>{{#invoke:Unicode data|lookup|name|غ}}</code> <span typeof="mw:File"><span><img alt="Red X" src="//upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/13px-Red_x.svg.png" decoding="async" width="13" height="13" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/20px-Red_x.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/ba/Red_x.svg/26px-Red_x.svg.png 2x" data-file-width="600" data-file-height="600" /></span></span><span style="display: none;">N</span> &#8212;cannot enter a character as codepoint</dd></dl> <div class="mw-heading mw-heading3"><h3 id="&quot;lookup&quot;_and_&quot;is&quot;_functions"><span id=".22lookup.22_and_.22is.22_functions"></span>"<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">lookup</span>" and "<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">is</span>" functions</h3></div> <dl><dt><code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" style="" dir="ltr"><span class="n">lookup</span><span class="p">,</span> <span class="n">is</span></code></dt> <dd>Template-invokable functions that allow access to the functions starting with <code>lookup</code> and <code>is</code>.For most of the functions, add the code point in hexadecimal base as the next parameter. For <code>is|Latin</code>, <code>is|rtl</code>, and <code>is|valid_pagename</code>, add character string. <a href="/wiki/HTML_character_references" class="mw-redirect" title="HTML character references">HTML character references</a> in the text are decoded by the module into code points.</dd> <dd>For example, <code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;Latin&#124;àzàhàr̃iyyā̀&#125;&#125;</code> &#8594; true.</dd></dl> <dl><dd>Internally, in modules, these functions are named using underscore: <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" style="" dir="ltr"><span class="n">lookup_name</span><span class="o">|</span><span class="n">code</span> <span class="n">point</span></code> &#8592; <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" style="" dir="ltr"><span class="n">lookup_name</span></code></dd> <dd>For <code>&amp;A9;</code> <big>&#xa9;</big>: <code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;name&#124;A9&#125;&#125;</code>&#160;&#8594; COPYRIGHT SIGN</dd></dl> <div class="mw-heading mw-heading2"><h2 id="Functions_overview">Functions overview</h2></div> <ul><li>Code points: enter hexadecimal value, for example <span class="example monospaced example-mono" style="font-family: monospace, monospace; color: var(--color-content-added, #006400);">|0x0061</span> or <span class="example monospaced example-mono" style="font-family: monospace, monospace; color: var(--color-content-added, #006400);">|61</span>; not <span class="example deprecated-content example-bad monospaced example-mono" style="font-family: monospace, monospace; color: var(--color-content-removed, #8B0000);">|U+0061</span>.</li></ul> <table class="wikitable sortable" style="font-size:90%; vertical-align:top;"> <tbody><tr> <th>Topic </th> <th>Function </th> <th style="border-right:2px solid grey">Parameter type<br /><small>(string=by character(s); c.p. by <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">0xHex</span> value)</small> </th> <th>Example </th> <th>Returns </th> <th>Character </th></tr> <tr> <td>Unicode character name </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|lookup|name</code> </td> <td>code point </td> <td><style data-mw-deduplicate="TemplateStyles:r1126788409">.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}</style><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;name&#124;0xA9&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;name&#124;0x0007&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>COPYRIGHT SIGN</li><li>&lt;control-0007&gt;</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#xa9;</li><li>&amp;#x0007;</li></ul></div> </td></tr> <tr> <td><a href="/wiki/Script_(Unicode)" title="Script (Unicode)">Scripts</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|lookup|script</code> </td> <td>code point </td> <td><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;script&#124;A061&#125;&#125;</code> </td> <td>Yiii </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#xa061;</li></ul></div> </td></tr> <tr> <td><a href="/wiki/Block_(Unicode)" class="mw-redirect" title="Block (Unicode)">Blocks</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|lookup|block</code> </td> <td>code point </td> <td><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;block&#124;A061&#125;&#125;</code> </td> <td>Yi Syllables </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#xa061;</li></ul></div> </td></tr> <tr> <td><a href="/wiki/Plane_(Unicode)" title="Plane (Unicode)">Planes</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|lookup|plane</code> </td> <td>code point </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;plane&#124;0xA9&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;plane&#124;0x1F608&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>Basic Multilingual Plane</li><li>Supplementary Multilingual Plane</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#xa9;</li><li>&#x1f608;</li></ul></div> <p><br /> </p> </td></tr> <tr> <td><a href="/wiki/Unicode_character_property#General_Category" title="Unicode character property">General Category</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|lookup|category</code> </td> <td>code point </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;category&#124;0xA9&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;category&#124;0x002B&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>So</li><li>Sm</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#xa9;</li><li>&#x2b;</li></ul></div> </td></tr> <tr style="border-bottom:2px solid grey;"> <td>Controls </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|control</code> </td> <td>code point </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;control&#124;A9&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;lookup&#124;control&#124;FFFF&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>assigned</li><li>unassigned</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#xa9;</li><li>&amp;#xFFFF;</li></ul></div> </td></tr> <tr> <td><a href="/wiki/Latin_script" title="Latin script">Latin script</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|Latin</code> </td> <td>string </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;Latin&#124;abcŁíā̀&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;Latin&#124;abc文xyz&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>true</li><li>false</li></ul></div> </td> <td> </td></tr> <tr> <td><a href="/wiki/Wikipedia:Article_titles" title="Wikipedia:Article titles">WP:Article title</a> <small>(<a href="/wiki/Wikipedia:NCTR" class="mw-redirect" title="Wikipedia:NCTR">WP:NCTR</a>)</small> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|valid_pagename</code> </td> <td>string </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul style="margin-left:1em;text-indent:-1em;"><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;valid_pagename&#124;Main_page&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;valid_pagename&#124;#&#160;(disambiguation)&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>true</li><li>false</li></ul></div> </td> <td> </td></tr> <tr> <td><a href="/wiki/Bidirectional_text" title="Bidirectional text">Bidirectionality</a>, right-to-left&#160;scripts </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|rtl</code> </td> <td>string </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;rtl&#124;ش&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;rtl&#124;34&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul style="margin-left:1em;text-indent:-1em;"><li>true</li><li>false</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#x634;</li><li>&#x34;</li></ul></div> </td></tr> <tr> <td><a href="/wiki/Combining_character" title="Combining character">Combining character</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|combining</code> </td> <td>code point </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;combining&#124;0300&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;combining&#124;64&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>true</li><li>false</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#x300;</li><li>&#x64;</li></ul></div> </td></tr> <tr> <td>Character assignation </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|assigned</code> </td> <td>code point </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;assigned&#124;A061&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;assigned&#124;FFEF&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>true</li><li>false</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&#xa061;</li><li>;</li></ul></div> </td></tr> <tr> <td>Printable </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|printable</code> </td> <td>code point </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;printable&#124;0061&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;printable&#124;0007&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;printable&#124;FFFF&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&gt;true&lt;</li><li>&gt;false&lt;</li><li>&gt;false&lt;</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&gt;&#x61;&lt;</li><li>&gt;&amp;#x0007;&lt;</li><li>&gt;&amp;#xFFFF;&lt;</li></ul></div> </td></tr> <tr> <td><a href="/wiki/Whitespace_character#Unicode" title="Whitespace character">Whitespace character §&#160;Unicode</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|is|whitespace</code> </td> <td>code point </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;whitespace&#124;0x20&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;whitespace&#124;0xA0&#125;&#125;</code></li><li><code>&#123;&#123;&#35;invoke:Unicode data&#124;is&#124;whitespace&#124;0x64&#125;&#125;</code></li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&gt;true&lt;</li><li>&gt;true&lt; NBSP</li><li>&gt;false&lt;</li></ul></div> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&gt;&#x20;&lt;</li><li>&gt;&#xa0;&lt;</li><li>&gt;&#x64;&lt;</li></ul></div> </td></tr> <tr> <td><a href="/wiki/Unicode_alias_names_and_abbreviations" title="Unicode alias names and abbreviations">Alias names</a> </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|aliases</code> </td> <td> </td> <td>[application unknown] </td> <td> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&amp;#x;</li><li>&amp;#x;</li></ul></div> </td></tr> <tr> <td>Combining class </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|</code> </td> <td> </td> <td>[application unknown] </td> <td> </td> <td><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"><div class="plainlist"><ul><li>&amp;#x;</li><li>&amp;#x;</li></ul></div> </td></tr> <tr> <td>Age </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|</code> </td> <td> </td> <td>[application unknown] </td> <td> </td> <td> </td></tr> <tr> <td>get_best_script </td> <td><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">|get_best_script</code> </td> <td> </td> <td>[application unknown] </td> <td> </td> <td> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Data_modules">Data modules</h2></div> <p>The data used by functions in this module is found in <a href="/wiki/Special:PrefixIndex/Module:Unicode_data/" title="Special:PrefixIndex/Module:Unicode data/">submodules</a>. Some are generated by <a href="/wiki/AWK" title="AWK">AWK</a> scripts shown at <a href="https://en.wiktionary.org/wiki/User:Kephir/Unicode" class="extiw" title="wikt:User:Kephir/Unicode">User:Kephir/Unicode</a> on English Wiktionary, others by Lua scripts on the <code>/make</code> subpages of the submodules. </p> <ul><li><a href="/wiki/Module:Unicode_data/age" title="Module:Unicode data/age">Module:Unicode data/age</a>: 'Age' of a character, that is: version introduction number.</li> <li><a href="/wiki/Module:Unicode_data/aliases" title="Module:Unicode data/aliases">Module:Unicode data/aliases</a>: the formal name aliases for characters (from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/NameAliases.txt">NameAliases.txt</a>)</li> <li><a href="/wiki/Module:Unicode_data/blocks" title="Module:Unicode data/blocks">Module:Unicode data/blocks</a>: the list of Unicode blocks (from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/Blocks.txt">Blocks.txt</a>)</li> <li><a href="/wiki/Module:Unicode_data/category" title="Module:Unicode data/category">Module:Unicode data/category</a>: data mapping characters to their General Category (from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt">DerivedGeneralCategory.txt</a>)</li> <li><a href="/wiki/Module:Unicode_data/combining" title="Module:Unicode data/combining">Module:Unicode data/combining</a>: data mapping characters to their Combining Classes (from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/extracted/DerivedCombiningClass.txt">DerivedCombiningClass.txt</a>)</li> <li><a href="/wiki/Module:Unicode_data/control" title="Module:Unicode data/control">Module:Unicode data/control</a>: data for identifying characters that belong to the General Categories of Separator and Other (from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt">DerivedGeneralCategory.txt</a>)</li> <li><a href="/wiki/Module:Unicode_data/derived_core_properties" title="Module:Unicode data/derived core properties">Module:Unicode data/derived core properties</a>:</li> <li><a href="/wiki/Module:Unicode_data/Hangul" title="Module:Unicode data/Hangul">Module:Unicode data/Hangul</a>: data used to generate the names of <a href="/wiki/Hangul" title="Hangul">Hangul</a> syllables (from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/Jamo.txt">Jamo.txt</a>)</li> <li><a href="/wiki/Special:PrefixIndex/Module:Unicode_data/names" title="Special:PrefixIndex/Module:Unicode data/names">Module:Unicode data/names/*</a> (<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">000hh, .., 0E0hh</span>; eg <a href="/wiki/Module:Unicode_data/names/000" title="Module:Unicode data/names/000">../names/000</a>): names</li> <li><a href="/wiki/Module:Unicode_data/scripts" title="Module:Unicode data/scripts">Module:Unicode data/scripts</a>: data mapping characters to their Unicode script properties (from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/Scripts.txt">Scripts.txt</a>).</li></ul> <p>The name data modules (<a href="/wiki/Special:PrefixIndex/Module:Unicode_data/names/" title="Special:PrefixIndex/Module:Unicode data/names/">Module:Unicode data/names/<var>xxx</var></a>) were compiled from <a rel="nofollow" class="external text" href="https://www.unicode.org/Public/UNIDATA/UnicodeData.txt">UnicodeData.txt</a>. Each one contains, at maximum, code points U+xxx000 to U+xxxFFF. </p> <table class="wikitable" style="text-align: center;"> <caption>Character name data modules,<br />organized by first three digits of codepoint in hexadecimal base </caption> <tbody><tr> <th> </th> <th>0 </th> <th>1 </th> <th>2 </th> <th>3 </th> <th>4 </th> <th>5 </th> <th>6 </th> <th>7 </th> <th>8 </th> <th>9 </th> <th>A </th> <th>B </th> <th>C </th> <th>D </th> <th>E </th> <th>F </th></tr> <tr> <th>00x </th> <td><a href="/wiki/Module:Unicode_data/names/000" title="Module:Unicode data/names/000">U+0000&#8211;<br />U+0FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/001" title="Module:Unicode data/names/001">U+1000&#8211;<br />U+1FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/002" title="Module:Unicode data/names/002">U+2000&#8211;<br />U+2FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/003" title="Module:Unicode data/names/003">U+3000&#8211;<br />U+3FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/004" title="Module:Unicode data/names/004">U+4000&#8211;<br />U+4FFF</a> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/00A" title="Module:Unicode data/names/00A">U+A000&#8211;<br />U+AFFF</a> </td> <td> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/00D" title="Module:Unicode data/names/00D">U+D000&#8211;<br />U+DFFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/00F" title="Module:Unicode data/names/00F">U+F000&#8211;<br />U+FFFF</a> </td></tr> <tr> <th>01x </th> <td><a href="/wiki/Module:Unicode_data/names/010" title="Module:Unicode data/names/010">U+10000&#8211;<br />U+10FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/011" title="Module:Unicode data/names/011">U+11000&#8211;<br />U+11FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/012" title="Module:Unicode data/names/012">U+12000&#8211;<br />U+12FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/013" title="Module:Unicode data/names/013">U+13000&#8211;<br />U+13FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/014" title="Module:Unicode data/names/014">U+14000&#8211;<br />U+14FFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/016" title="Module:Unicode data/names/016">U+16000&#8211;<br />U+16FFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/018" title="Module:Unicode data/names/018">U+18000&#8211;<br />U+18FFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/01A" title="Module:Unicode data/names/01A">U+1A000&#8211;<br />U+1AFFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/01B" title="Module:Unicode data/names/01B">U+1B000&#8211;<br />U+1BFFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/01C" title="Module:Unicode data/names/01C">U+1C000&#8211;<br />U+1CFFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/01D" title="Module:Unicode data/names/01D">U+1D000&#8211;<br />U+1DFFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/01E" title="Module:Unicode data/names/01E">U+1E000&#8211;<br />U+1EFFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/01F" title="Module:Unicode data/names/01F">U+1F000&#8211;<br />U+1FFFF</a> </td></tr> <tr> <th>0Ex </th> <td><a href="/wiki/Module:Unicode_data/names/0E0" title="Module:Unicode data/names/0E0">U+E0000&#8211;<br />U+E0FFF</a> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Copyright">Copyright</h2></div> <p>The Unicode database is released by Unicode Inc. under the following terms: </p> <blockquote> <p>Copyright © 1991-2018 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in <a rel="nofollow" class="external free" href="https://www.unicode.org/copyright.html">https://www.unicode.org/copyright.html</a>. </p><p>Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. </p><p>THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. </p><p>Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. </p> </blockquote> <div class="mw-heading mw-heading2"><h2 id="Known_issues">Known issues</h2></div> <ul><li>Reading data like <code><a href="/wiki/Module:Unicode_data/aliases" title="Module:Unicode data/aliases">Module:Unicode data/aliases</a></code> not provided nor documented</li> <li>Test fail: <code>lookup_category</code> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">U+FFFF</span> (&lt;noncharacter-FFFF&gt;) expected: Cn.</li></ul> <dl><dd><dl><dd><code>{{#invoke:Unicode data|lookup|category|0xFFFF}}</code> &#8594; [Nil]</dd></dl></dd></dl> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div> <ul><li><b>Named entities</b>: for example, <span class="nowrap"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced">U+22C1</span>&#x20;</span><span style="font-size:125%;line-height:1em">&#x22c1;</span> <span style="font-variant: small-caps; text-transform: lowercase;">N-ARY LOGICAL OR</span>: <code>{{#invoke:<a href="/wiki/Module:LoadData" title="Module:LoadData">LoadData</a>|<a href="/wiki/Module:Numcr2namecr" title="Module:Numcr2namecr">Numcr2namecr</a>|0x22C1}}</code> &#8594; &amp;bigvee;, &amp;Vee;, &amp;xvee;</li></ul> <div class="documentation-clear"></div> </div> <div role="note" class="documentation-metadata plainlinks">The above <a href="/wiki/Wikipedia:Template_documentation" title="Wikipedia:Template documentation">documentation</a> is <a href="/wiki/Help:Transclusion" title="Help:Transclusion">transcluded</a> from <a href="/wiki/Module:Unicode_data/doc" title="Module:Unicode data/doc">Module:Unicode data/doc</a>. <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Unicode_data/doc" title="Special:EditPage/Module:Unicode data/doc">edit</a> &#124; <a href="/wiki/Special:PageHistory/Module:Unicode_data/doc" title="Special:PageHistory/Module:Unicode data/doc">history</a>)</span><br />Editors can experiment in this module's <a href="/wiki/Module:Unicode_data/sandbox" title="Module:Unicode data/sandbox">sandbox</a> <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Unicode_data/sandbox" title="Special:EditPage/Module:Unicode data/sandbox">edit</a> &#124; <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&amp;page1=Module%3AUnicode+data&amp;page2=Module%3AUnicode+data%2Fsandbox">diff</a>)</span> and <a href="/wiki/Module:Unicode_data/testcases" title="Module:Unicode data/testcases">testcases</a> <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Unicode_data/testcases" title="Special:EditPage/Module:Unicode data/testcases">edit</a> &#124; <a href="/wiki/Module_talk:Unicode_data/testcases" title="Module talk:Unicode data/testcases">run</a>)</span> pages.<br /> <a href="/wiki/Special:PrefixIndex/Module:Unicode_data/" title="Special:PrefixIndex/Module:Unicode data/">Subpages of this module</a>.</div></div> <p><span id="code"></span> </p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos" data-line="1"></span></a><span class="kd">local</span> <span class="n">p</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="kd">local</span> <span class="n">floor</span> <span class="o">=</span> <span class="nb">math.floor</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">errorf</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">level</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;number&quot;</span> <span class="kr">then</span> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a> <span class="kr">return</span> <span class="nb">error</span><span class="p">(</span><span class="nb">string.format</span><span class="p">(...),</span> <span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> <span class="kr">else</span> <span class="c1">-- level is actually the format string.</span> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a> <span class="kr">return</span> <span class="nb">error</span><span class="p">(</span><span class="nb">string.format</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="p">...),</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a> <span class="kr">end</span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a><span class="kr">end</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">binary_range_search</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">ranges</span><span class="p">)</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> <span class="kd">local</span> <span class="n">low</span><span class="p">,</span> <span class="n">mid</span><span class="p">,</span> <span class="n">high</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a> <span class="n">low</span><span class="p">,</span> <span class="n">high</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">ranges</span><span class="p">.</span><span class="n">length</span> <span class="ow">or</span> <span class="nb">require</span> <span class="s2">&quot;Module:TableTools&quot;</span><span class="p">.</span><span class="n">length</span><span class="p">(</span><span class="n">ranges</span><span class="p">)</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a> <span class="kr">while</span> <span class="n">low</span> <span class="o">&lt;=</span> <span class="n">high</span> <span class="kr">do</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a> <span class="n">mid</span> <span class="o">=</span> <span class="n">floor</span><span class="p">((</span><span class="n">low</span> <span class="o">+</span> <span class="n">high</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a> <span class="kd">local</span> <span class="n">range</span> <span class="o">=</span> <span class="n">ranges</span><span class="p">[</span><span class="n">mid</span><span class="p">]</span> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a> <span class="kr">if</span> <span class="n">codepoint</span> <span class="o">&lt;</span> <span class="n">range</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a> <span class="n">high</span> <span class="o">=</span> <span class="n">mid</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a> <span class="kr">elseif</span> <span class="n">codepoint</span> <span class="o">&lt;=</span> <span class="n">range</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a> <span class="kr">return</span> <span class="n">range</span><span class="p">,</span> <span class="n">mid</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a> <span class="kr">else</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a> <span class="n">low</span> <span class="o">=</span> <span class="n">mid</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a> <span class="kr">end</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a> <span class="kr">end</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a> <span class="kr">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="n">mid</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a><span class="kr">end</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a><span class="n">p</span><span class="p">.</span><span class="n">binary_range_search</span> <span class="o">=</span> <span class="n">binary_range_search</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a><span class="cm">--[[</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a><span class="cm">local function linear_range_search(codepoint, ranges)</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a><span class="cm"> for i, range in ipairs(ranges) do</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a><span class="cm"> if range[1] &lt;= codepoint and codepoint &lt;= range[2] then</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a><span class="cm"> return range</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a><span class="cm"> end</span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a><span class="cm"> end</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a><span class="cm">end</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a><span class="cm">--]]</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a><span class="c1">-- Load a module by indexing &quot;loader&quot; with the name of the module minus the</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a><span class="c1">-- &quot;Module:Unicode data/&quot; part. For instance, loader.blocks returns</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a><span class="c1">-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a><span class="c1">-- returned.</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a><span class="kd">local</span> <span class="n">loader</span> <span class="o">=</span> <span class="nb">setmetatable</span><span class="p">({},</span> <span class="p">{</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> <span class="n">__index</span> <span class="o">=</span> <span class="kr">function</span> <span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> <span class="kd">local</span> <span class="n">success</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="nb">pcall</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">loadData</span><span class="p">,</span> <span class="s2">&quot;Module:Unicode data/&quot;</span> <span class="o">..</span> <span class="n">key</span><span class="p">)</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">success</span> <span class="kr">then</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> <span class="n">data</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> <span class="kr">end</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> <span class="n">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a> <span class="kr">return</span> <span class="n">data</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> <span class="kr">end</span> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a><span class="p">})</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a><span class="c1">-- For the algorithm used to generate Hangul Syllable names,</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a><span class="c1">-- see &quot;Hangul Syllable Name Generation&quot; in section 3.12 of the</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a><span class="c1">-- Unicode Specification:</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a><span class="c1">-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a><span class="kd">local</span> <span class="n">name_hooks</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a> <span class="p">{</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x1F</span><span class="p">,</span> <span class="s2">&quot;&lt;control-%04X&gt;&quot;</span> <span class="p">},</span> <span class="c1">-- C0 control characters</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> <span class="p">{</span> <span class="mh">0x7F</span><span class="p">,</span> <span class="mh">0x9F</span><span class="p">,</span> <span class="s2">&quot;&lt;control-%04X&gt;&quot;</span> <span class="p">},</span> <span class="c1">-- DEL and C1 control characters</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a> <span class="p">{</span> <span class="mh">0x3400</span><span class="p">,</span> <span class="mh">0x4DBF</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension A</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a> <span class="p">{</span> <span class="mh">0x4E00</span><span class="p">,</span> <span class="mh">0x9FFF</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a> <span class="p">{</span> <span class="mh">0xAC00</span><span class="p">,</span> <span class="mh">0xD7A3</span><span class="p">,</span> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> <span class="c1">-- Hangul Syllables</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="kd">local</span> <span class="n">Hangul_data</span> <span class="o">=</span> <span class="n">loader</span><span class="p">.</span><span class="n">Hangul</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a> <span class="kd">local</span> <span class="n">syllable_index</span> <span class="o">=</span> <span class="n">codepoint</span> <span class="o">-</span> <span class="mh">0xAC00</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s2">&quot;HANGUL SYLLABLE %s%s%s&quot;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a> <span class="n">Hangul_data</span><span class="p">.</span><span class="n">leads</span><span class="p">[</span><span class="n">floor</span><span class="p">(</span><span class="n">syllable_index</span> <span class="o">/</span> <span class="n">Hangul_data</span><span class="p">.</span><span class="n">final_count</span><span class="p">)],</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a> <span class="n">Hangul_data</span><span class="p">.</span><span class="n">vowels</span><span class="p">[</span><span class="n">floor</span><span class="p">((</span><span class="n">syllable_index</span> <span class="o">%</span> <span class="n">Hangul_data</span><span class="p">.</span><span class="n">final_count</span><span class="p">)</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a> <span class="o">/</span> <span class="n">Hangul_data</span><span class="p">.</span><span class="n">trail_count</span><span class="p">)],</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a> <span class="n">Hangul_data</span><span class="p">.</span><span class="n">trails</span><span class="p">[</span><span class="n">syllable_index</span> <span class="o">%</span> <span class="n">Hangul_data</span><span class="p">.</span><span class="n">trail_count</span><span class="p">]</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a> <span class="p">)</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a> <span class="kr">end</span> <span class="p">},</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a> <span class="c1">-- High Surrogates, High Private Use Surrogates, Low Surrogates</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> <span class="p">{</span> <span class="mh">0xD800</span><span class="p">,</span> <span class="mh">0xDFFF</span><span class="p">,</span> <span class="s2">&quot;&lt;surrogate-%04X&gt;&quot;</span> <span class="p">},</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> <span class="p">{</span> <span class="mh">0xE000</span><span class="p">,</span> <span class="mh">0xF8FF</span><span class="p">,</span> <span class="s2">&quot;&lt;private-use-%04X&gt;&quot;</span> <span class="p">},</span> <span class="c1">-- Private Use</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> <span class="c1">-- CJK Compatibility Ideographs</span> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> <span class="p">{</span> <span class="mh">0xF900</span><span class="p">,</span> <span class="mh">0xFA6D</span><span class="p">,</span> <span class="s2">&quot;CJK COMPATIBILITY IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> <span class="p">{</span> <span class="mh">0xFA70</span><span class="p">,</span> <span class="mh">0xFAD9</span><span class="p">,</span> <span class="s2">&quot;CJK COMPATIBILITY IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a> <span class="p">{</span> <span class="mh">0x17000</span><span class="p">,</span> <span class="mh">0x187F7</span><span class="p">,</span> <span class="s2">&quot;TANGUT IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- Tangut Ideograph</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> <span class="p">{</span> <span class="mh">0x18800</span><span class="p">,</span> <span class="mh">0x18AFF</span><span class="p">,</span> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s2">&quot;TANGUT COMPONENT-%03d&quot;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">codepoint</span> <span class="o">-</span> <span class="mh">0x187FF</span><span class="p">)</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> <span class="kr">end</span> <span class="p">},</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a> <span class="p">{</span> <span class="mh">0x18D00</span><span class="p">,</span> <span class="mh">0x18D08</span><span class="p">,</span> <span class="s2">&quot;TANGUT IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- Tangut Ideograph Supplement</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> <span class="p">{</span> <span class="mh">0x1B170</span><span class="p">,</span> <span class="mh">0x1B2FB</span><span class="p">,</span> <span class="s2">&quot;NUSHU CHARACTER-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- Nushu</span> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> <span class="p">{</span> <span class="mh">0x20000</span><span class="p">,</span> <span class="mh">0x2A6DF</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension B</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a> <span class="p">{</span> <span class="mh">0x2A700</span><span class="p">,</span> <span class="mh">0x2B739</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension C</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> <span class="p">{</span> <span class="mh">0x2B740</span><span class="p">,</span> <span class="mh">0x2B81D</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension D</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> <span class="p">{</span> <span class="mh">0x2B820</span><span class="p">,</span> <span class="mh">0x2CEA1</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension E</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a> <span class="p">{</span> <span class="mh">0x2CEB0</span><span class="p">,</span> <span class="mh">0x2EBE0</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension F</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a> <span class="c1">-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> <span class="p">{</span> <span class="mh">0x2F800</span><span class="p">,</span> <span class="mh">0x2FA1D</span><span class="p">,</span> <span class="s2">&quot;CJK COMPATIBILITY IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> <span class="p">{</span> <span class="mh">0xE0100</span><span class="p">,</span> <span class="mh">0xE01EF</span><span class="p">,</span> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> <span class="c1">-- Variation Selectors Supplement</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s2">&quot;VARIATION SELECTOR-%d&quot;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">codepoint</span> <span class="o">-</span> <span class="mh">0xE0100</span> <span class="o">+</span> <span class="mi">17</span><span class="p">)</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> <span class="kr">end</span><span class="p">},</span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> <span class="p">{</span> <span class="mh">0x30000</span><span class="p">,</span> <span class="mh">0x3134A</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension G</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="p">{</span> <span class="mh">0x31350</span><span class="p">,</span> <span class="mh">0x323AF</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension H</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a> <span class="p">{</span> <span class="mh">0x2EBF0</span><span class="p">,</span> <span class="mh">0x2EE5D</span><span class="p">,</span> <span class="s2">&quot;CJK UNIFIED IDEOGRAPH-%04X&quot;</span> <span class="p">},</span> <span class="c1">-- CJK Ideograph Extension I</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a> <span class="p">{</span> <span class="mh">0xF0000</span><span class="p">,</span> <span class="mh">0xFFFFD</span><span class="p">,</span> <span class="s2">&quot;&lt;private-use-%04X&gt;&quot;</span> <span class="p">},</span> <span class="c1">-- Plane 15 Private Use</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a> <span class="p">{</span> <span class="mh">0x100000</span><span class="p">,</span> <span class="mh">0x10FFFD</span><span class="p">,</span> <span class="s2">&quot;&lt;private-use-%04X&gt;&quot;</span> <span class="p">}</span> <span class="c1">-- Plane 16 Private Use</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a><span class="p">}</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a><span class="n">name_hooks</span><span class="p">.</span><span class="n">length</span> <span class="o">=</span> <span class="o">#</span><span class="n">name_hooks</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a><span class="kd">local</span> <span class="n">name_range_cache</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">generate_name</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">codepoint</span><span class="p">)</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;string&quot;</span> <span class="kr">then</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="kr">return</span> <span class="n">data</span><span class="p">:</span><span class="n">format</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="kr">else</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="kr">return</span> <span class="n">data</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="kr">end</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a><span class="kr">end</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a><span class="cm">--[[</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a><span class="cm">-- Checks that the code point is a number and in range.</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a><span class="cm">-- Does not check whether code point is an integer.</span> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a><span class="cm">-- Not used</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a><span class="cm">local function check_codepoint(funcName, argIdx, val)</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a><span class="cm"> require &#39;libraryUtil&#39;.checkType(funcName, argIdx, val, &#39;number&#39;)</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a><span class="cm"> if codepoint &lt; 0 or 0x10FFFF &lt; codepoint then</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a><span class="cm"> errorf(&quot;Codepoint %04X out of range&quot;, codepoint)</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a><span class="cm"> end</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a><span class="cm">end</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a><span class="cm">--]]</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_noncharacter</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a> <span class="c1">-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> <span class="c1">-- (Cn) and specifically noncharacters:</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a> <span class="c1">-- https://www.unicode.org/faq/private_use.html#nonchar4</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a> <span class="kr">return</span> <span class="mh">0xFDD0</span> <span class="o">&lt;=</span> <span class="n">codepoint</span> <span class="ow">and</span> <span class="p">(</span><span class="n">codepoint</span> <span class="o">&lt;=</span> <span class="mh">0xFDEF</span> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a> <span class="ow">or</span> <span class="n">floor</span><span class="p">(</span><span class="n">codepoint</span> <span class="o">%</span> <span class="mh">0x10000</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mh">0xFFFE</span><span class="p">)</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a><span class="kr">end</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a><span class="c1">-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">lookup_name</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="kr">if</span> <span class="n">p</span><span class="p">.</span><span class="n">is_noncharacter</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s2">&quot;&lt;noncharacter-%04X&gt;&quot;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a> <span class="kr">end</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> <span class="kr">if</span> <span class="n">name_range_cache</span> <span class="c1">-- Check if previously used &quot;name hook&quot; applies to this code point.</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> <span class="ow">and</span> <span class="n">codepoint</span> <span class="o">&gt;=</span> <span class="n">name_range_cache</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="ow">and</span> <span class="n">codepoint</span> <span class="o">&lt;=</span> <span class="n">name_range_cache</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a> <span class="kr">return</span> <span class="n">generate_name</span><span class="p">(</span><span class="n">name_range_cache</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">codepoint</span><span class="p">)</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a> <span class="kr">end</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="kd">local</span> <span class="n">range</span> <span class="o">=</span> <span class="n">binary_range_search</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">name_hooks</span><span class="p">)</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a> <span class="n">name_range_cache</span> <span class="o">=</span> <span class="n">range</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kr">return</span> <span class="n">generate_name</span><span class="p">(</span><span class="n">range</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">codepoint</span><span class="p">)</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kr">end</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="kd">local</span> <span class="n">data</span> <span class="o">=</span> <span class="n">loader</span><span class="p">[(</span><span class="s1">&#39;names/%03X&#39;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">codepoint</span> <span class="o">/</span> <span class="mh">0x1000</span><span class="p">)]</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> <span class="kr">if</span> <span class="n">data</span> <span class="ow">and</span> <span class="n">data</span><span class="p">[</span><span class="n">codepoint</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="kr">return</span> <span class="n">data</span><span class="p">[</span><span class="n">codepoint</span><span class="p">]</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="c1">-- Unassigned (Cn) consists of noncharacters and reserved characters.</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="c1">-- The character has been established not to be a noncharacter,</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="c1">-- and if it were assigned, its name would already been retrieved,</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="c1">-- so it must be reserved.</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="kr">else</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s2">&quot;&lt;reserved-%04X&gt;&quot;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> <span class="kr">end</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a><span class="kr">end</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">lookup_image</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="kd">local</span> <span class="n">data</span> <span class="o">=</span> <span class="n">loader</span><span class="p">[(</span><span class="s1">&#39;images/%03X&#39;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">codepoint</span> <span class="o">/</span> <span class="mh">0x1000</span><span class="p">)]</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="kr">if</span> <span class="n">data</span> <span class="kr">then</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="kr">return</span> <span class="n">data</span><span class="p">[</span><span class="n">codepoint</span><span class="p">]</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="kr">end</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a><span class="kr">end</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a><span class="kd">local</span> <span class="n">planes</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="p">[</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Basic Multilingual Plane&quot;</span><span class="p">;</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> <span class="p">[</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Supplementary Multilingual Plane&quot;</span><span class="p">;</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> <span class="p">[</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Supplementary Ideographic Plane&quot;</span><span class="p">;</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> <span class="p">[</span> <span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Tertiary Ideographic Plane&quot;</span><span class="p">;</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="p">[</span><span class="mi">14</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Supplementary Special-purpose Plane&quot;</span><span class="p">;</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="p">[</span><span class="mi">15</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Supplementary Private Use Area-A&quot;</span><span class="p">;</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="p">[</span><span class="mi">16</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Supplementary Private Use Area-B&quot;</span><span class="p">;</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a><span class="p">}</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a><span class="c1">-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.</span> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a><span class="kd">local</span> <span class="n">blocks</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">block_iter</span><span class="p">(</span><span class="n">blocks</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="n">i</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="kd">local</span> <span class="n">data</span> <span class="o">=</span> <span class="n">blocks</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kr">if</span> <span class="n">data</span> <span class="kr">then</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="c1">-- Unpack doesn&#39;t work on tables loaded with mw.loadData.</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="kr">return</span> <span class="n">i</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">data</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> <span class="kr">end</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a><span class="kr">end</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a><span class="c1">-- An ipairs-type iterator generator for the list of blocks.</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">enum_blocks</span><span class="p">()</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="kd">local</span> <span class="n">blocks</span> <span class="o">=</span> <span class="n">loader</span><span class="p">.</span><span class="n">blocks</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a> <span class="kr">return</span> <span class="n">block_iter</span><span class="p">,</span> <span class="n">blocks</span><span class="p">,</span> <span class="mi">0</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a><span class="kr">end</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">lookup_plane</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> <span class="kd">local</span> <span class="n">i</span> <span class="o">=</span> <span class="n">floor</span><span class="p">(</span><span class="n">codepoint</span> <span class="o">/</span> <span class="mh">0x10000</span><span class="p">)</span> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="kr">return</span> <span class="n">planes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="ow">or</span> <span class="p">(</span><span class="s2">&quot;Plane %u&quot;</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a><span class="kr">end</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">lookup_block</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> <span class="kd">local</span> <span class="n">blocks</span> <span class="o">=</span> <span class="n">loader</span><span class="p">.</span><span class="n">blocks</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="kd">local</span> <span class="n">range</span> <span class="o">=</span> <span class="n">binary_range_search</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">blocks</span><span class="p">)</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="kr">return</span> <span class="n">range</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a> <span class="kr">else</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> <span class="kr">return</span> <span class="s2">&quot;No Block&quot;</span> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> <span class="kr">end</span> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a><span class="kr">end</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">get_block_info</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">block</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">loader</span><span class="p">.</span><span class="n">blocks</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="kr">if</span> <span class="n">block</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">==</span> <span class="n">name</span> <span class="kr">then</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> <span class="kr">return</span> <span class="n">block</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> <span class="kr">end</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a> <span class="kr">end</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a><span class="kr">end</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_valid_pagename</span><span class="p">(</span><span class="n">pagename</span><span class="p">)</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="kd">local</span> <span class="n">has_nonws</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="kr">for</span> <span class="n">cp</span> <span class="kr">in</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gcodepoint</span><span class="p">(</span><span class="n">pagename</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> <span class="kr">if</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0x0023</span><span class="p">)</span> <span class="c1">-- #</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0x005B</span><span class="p">)</span> <span class="c1">-- [</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0x005D</span><span class="p">)</span> <span class="c1">-- ]</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0x007B</span><span class="p">)</span> <span class="c1">-- {</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0x007C</span><span class="p">)</span> <span class="c1">-- |</span> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0x007D</span><span class="p">)</span> <span class="c1">-- }</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0x180E</span><span class="p">)</span> <span class="c1">-- MONGOLIAN VOWEL SEPARATOR</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="ow">or</span> <span class="p">((</span><span class="n">cp</span> <span class="o">&gt;=</span> <span class="mh">0x2000</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">cp</span> <span class="o">&lt;=</span> <span class="mh">0x200A</span><span class="p">))</span> <span class="c1">-- spaces in General Punctuation block</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">cp</span> <span class="o">==</span> <span class="mh">0xFFFD</span><span class="p">)</span> <span class="c1">-- REPLACEMENT CHARACTER</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="kr">then</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> <span class="kr">end</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a> <span class="kd">local</span> <span class="n">printable</span><span class="p">,</span> <span class="n">result</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">is_printable</span><span class="p">(</span><span class="n">cp</span><span class="p">)</span> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">printable</span> <span class="kr">then</span> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> <span class="kr">end</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="kr">if</span> <span class="n">result</span> <span class="o">~=</span> <span class="s2">&quot;space-separator&quot;</span> <span class="kr">then</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="n">has_nonws</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="kr">end</span> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="kr">end</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="kr">return</span> <span class="n">has_nonws</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a><span class="kr">end</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">manual_unpack</span><span class="p">(</span><span class="n">what</span><span class="p">,</span> <span class="n">from</span><span class="p">)</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> <span class="kr">if</span> <span class="n">what</span><span class="p">[</span><span class="n">from</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> <span class="kr">return</span> <span class="n">what</span><span class="p">[</span><span class="n">from</span><span class="p">]</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> <span class="kr">end</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="n">from</span> <span class="o">=</span> <span class="n">from</span> <span class="ow">or</span> <span class="mi">1</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">item</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">what</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o">&gt;=</span> <span class="n">from</span> <span class="kr">then</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a> <span class="kr">end</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> <span class="kr">end</span> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a> <span class="kr">return</span> <span class="n">unpack</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></span></a><span class="kr">end</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">compare_ranges</span><span class="p">(</span><span class="n">range1</span><span class="p">,</span> <span class="n">range2</span><span class="p">)</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a> <span class="kr">return</span> <span class="n">range1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">range2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a><span class="kr">end</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a><span class="c1">-- Creates a function to look up data in a module that contains &quot;singles&quot; (a</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a><span class="c1">-- code point-to-data map) and &quot;ranges&quot; (an array containing arrays that contain</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a><span class="c1">-- the low and high code points of a range and the data associated with that</span> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a><span class="c1">-- range).</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a><span class="c1">-- &quot;loader&quot; loads and returns the &quot;singles&quot; and &quot;ranges&quot; tables.</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a><span class="c1">-- &quot;match_func&quot; is passed the code point and either the data or the &quot;dots&quot;, and</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a><span class="c1">-- generates the final result of the function.</span> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a><span class="c1">-- The varargs (&quot;dots&quot;) describes the default data to be returned if there wasn&#39;t</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a><span class="c1">-- a match.</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a><span class="c1">-- In case the function is used more than once, &quot;cache&quot; saves ranges that have</span> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a><span class="c1">-- already been found to match, or a range whose data is the default if there</span> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a><span class="c1">-- was no match.</span> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">memo_lookup</span><span class="p">(</span><span class="n">data_module_subpage</span><span class="p">,</span> <span class="n">match_func</span><span class="p">,</span> <span class="p">...)</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> <span class="kd">local</span> <span class="n">dots</span> <span class="o">=</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> <span class="kd">local</span> <span class="n">cache</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></span></a> <span class="kd">local</span> <span class="n">singles</span><span class="p">,</span> <span class="n">ranges</span> </span><span id="L-293"><a href="#L-293"><span class="linenos" data-line="293"></span></a> </span><span id="L-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a> <span class="kr">return</span> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">singles</span> <span class="kr">then</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> <span class="kd">local</span> <span class="n">data_module</span> <span class="o">=</span> <span class="n">loader</span><span class="p">[</span><span class="n">data_module_subpage</span><span class="p">]</span> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></span></a> <span class="n">singles</span><span class="p">,</span> <span class="n">ranges</span> <span class="o">=</span> <span class="n">data_module</span><span class="p">.</span><span class="n">singles</span><span class="p">,</span> <span class="n">data_module</span><span class="p">.</span><span class="n">ranges</span> </span><span id="L-298"><a href="#L-298"><span class="linenos" data-line="298"></span></a> <span class="kr">end</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a> <span class="kr">if</span> <span class="n">singles</span><span class="p">[</span><span class="n">codepoint</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a> <span class="kr">return</span> <span class="n">match_func</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">singles</span><span class="p">[</span><span class="n">codepoint</span><span class="p">])</span> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> <span class="kr">end</span> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a> </span><span id="L-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a> <span class="kd">local</span> <span class="n">range</span> <span class="o">=</span> <span class="n">binary_range_search</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">cache</span><span class="p">)</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></span></a> <span class="kr">return</span> <span class="n">match_func</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">manual_unpack</span><span class="p">(</span><span class="n">range</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> </span><span id="L-307"><a href="#L-307"><span class="linenos" data-line="307"></span></a> <span class="kr">end</span> </span><span id="L-308"><a href="#L-308"><span class="linenos" data-line="308"></span></a> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a> <span class="kd">local</span> <span class="n">range</span><span class="p">,</span> <span class="n">index</span> <span class="o">=</span> <span class="n">binary_range_search</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">ranges</span><span class="p">)</span> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">cache</span><span class="p">,</span> <span class="n">range</span><span class="p">)</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a> <span class="nb">table.sort</span><span class="p">(</span><span class="n">cache</span><span class="p">,</span> <span class="n">compare_ranges</span><span class="p">)</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> <span class="kr">return</span> <span class="n">match_func</span><span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">manual_unpack</span><span class="p">(</span><span class="n">range</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="kr">end</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a> </span><span id="L-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a> <span class="kr">if</span> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-317"><a href="#L-317"><span class="linenos" data-line="317"></span></a> <span class="kd">local</span> <span class="n">dots_range</span> </span><span id="L-318"><a href="#L-318"><span class="linenos" data-line="318"></span></a> <span class="kr">if</span> <span class="n">codepoint</span> <span class="o">&gt;</span> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a> <span class="n">dots_range</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="ow">and</span> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span> <span class="ow">or</span> <span class="mh">0x10FFFF</span><span class="p">,</span> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="n">unpack</span><span class="p">(</span><span class="n">dots</span><span class="p">)</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></span></a> <span class="p">}</span> </span><span id="L-324"><a href="#L-324"><span class="linenos" data-line="324"></span></a> <span class="kr">else</span> <span class="c1">-- codepoint &lt; range[index][1]</span> </span><span id="L-325"><a href="#L-325"><span class="linenos" data-line="325"></span></a> <span class="n">dots_range</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="ow">and</span> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">,</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a> <span class="n">ranges</span><span class="p">[</span><span class="n">index</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a> <span class="n">unpack</span><span class="p">(</span><span class="n">dots</span><span class="p">)</span> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> <span class="p">}</span> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a> <span class="kr">end</span> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></span></a> <span class="nb">table.sort</span><span class="p">(</span><span class="n">cache</span><span class="p">,</span> <span class="n">compare_ranges</span><span class="p">)</span> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> <span class="kr">end</span> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></span></a> <span class="kr">return</span> <span class="n">match_func</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-335"><a href="#L-335"><span class="linenos" data-line="335"></span></a> <span class="kr">end</span> </span><span id="L-336"><a href="#L-336"><span class="linenos" data-line="336"></span></a><span class="kr">end</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a><span class="c1">-- Get a code point&#39;s combining class value in [[Module:Unicode data/combining]],</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a><span class="c1">-- and return whether this value is not zero. Zero is assigned as the default</span> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a><span class="c1">-- if the combining class value is not found in this data module.</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a><span class="c1">-- That is, return true if character is combining, or false if it is not.</span> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a><span class="c1">-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></span></a><span class="c1">-- more information.</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></span></a><span class="n">p</span><span class="p">.</span><span class="n">is_combining</span> <span class="o">=</span> <span class="n">memo_lookup</span><span class="p">(</span> </span><span id="L-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="s2">&quot;combining&quot;</span><span class="p">,</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">combining_class</span><span class="p">)</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> <span class="kr">return</span> <span class="n">combining_class</span> <span class="ow">and</span> <span class="n">combining_class</span> <span class="o">~=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="kc">false</span> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></span></a> <span class="mi">0</span><span class="p">)</span> </span><span id="L-350"><a href="#L-350"><span class="linenos" data-line="350"></span></a> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">add_dotted_circle</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="s2">&quot;.&quot;</span><span class="p">,</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a> <span class="kr">function</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> </span><span id="L-354"><a href="#L-354"><span class="linenos" data-line="354"></span></a> <span class="kr">if</span> <span class="n">p</span><span class="p">.</span><span class="n">is_combining</span><span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">codepoint</span><span class="p">(</span><span class="n">char</span><span class="p">))</span> <span class="kr">then</span> </span><span id="L-355"><a href="#L-355"><span class="linenos" data-line="355"></span></a> <span class="kr">return</span> <span class="s1">&#39;◌&#39;</span> <span class="o">..</span> <span class="n">char</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> <span class="kr">end</span> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></span></a> <span class="kr">end</span><span class="p">))</span> </span><span id="L-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a><span class="kr">end</span> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></span></a> </span><span id="L-360"><a href="#L-360"><span class="linenos" data-line="360"></span></a><span class="kd">local</span> <span class="n">lookup_control</span> <span class="o">=</span> <span class="n">memo_lookup</span><span class="p">(</span> </span><span id="L-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a> <span class="s2">&quot;control&quot;</span><span class="p">,</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></span></a> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">ccc</span><span class="p">)</span> </span><span id="L-363"><a href="#L-363"><span class="linenos" data-line="363"></span></a> <span class="kr">return</span> <span class="n">ccc</span> <span class="ow">or</span> <span class="s2">&quot;assigned&quot;</span> </span><span id="L-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></span></a> <span class="s2">&quot;assigned&quot;</span><span class="p">)</span> </span><span id="L-366"><a href="#L-366"><span class="linenos" data-line="366"></span></a><span class="n">p</span><span class="p">.</span><span class="n">lookup_control</span> <span class="o">=</span> <span class="n">lookup_control</span> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_assigned</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></span></a> <span class="kr">return</span> <span class="n">lookup_control</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> <span class="o">~=</span> <span class="s2">&quot;unassigned&quot;</span> </span><span id="L-370"><a href="#L-370"><span class="linenos" data-line="370"></span></a><span class="kr">end</span> </span><span id="L-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_printable</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="n">lookup_control</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="s2">&quot;assigned&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="s2">&quot;space-separator&quot;</span><span class="p">),</span> <span class="n">result</span> </span><span id="L-375"><a href="#L-375"><span class="linenos" data-line="375"></span></a><span class="kr">end</span> </span><span id="L-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_whitespace</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-378"><a href="#L-378"><span class="linenos" data-line="378"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="n">lookup_control</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="s2">&quot;space-separator&quot;</span><span class="p">),</span> <span class="n">result</span> </span><span id="L-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a><span class="kr">end</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></span></a> </span><span id="L-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a><span class="n">p</span><span class="p">.</span><span class="n">lookup_category</span> <span class="o">=</span> <span class="n">memo_lookup</span><span class="p">(</span> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a> <span class="s2">&quot;category&quot;</span><span class="p">,</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">category</span><span class="p">)</span> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a> <span class="kr">return</span> <span class="n">category</span> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a> <span class="s2">&quot;Cn&quot;</span><span class="p">)</span> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></span></a> </span><span id="L-389"><a href="#L-389"><span class="linenos" data-line="389"></span></a><span class="kd">local</span> <span class="n">lookup_script</span> <span class="o">=</span> <span class="n">memo_lookup</span><span class="p">(</span> </span><span id="L-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a> <span class="s2">&quot;scripts&quot;</span><span class="p">,</span> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></span></a> <span class="kr">function</span> <span class="p">(</span><span class="n">codepoint</span><span class="p">,</span> <span class="n">script_code</span><span class="p">)</span> </span><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></span></a> <span class="kr">return</span> <span class="n">script_code</span> <span class="ow">or</span> <span class="s1">&#39;Zzzz&#39;</span> </span><span id="L-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></span></a> <span class="s2">&quot;Zzzz&quot;</span><span class="p">)</span> </span><span id="L-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a><span class="n">p</span><span class="p">.</span><span class="n">lookup_script</span> <span class="o">=</span> <span class="n">lookup_script</span> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">get_best_script</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></span></a> <span class="c1">-- Check type of argument, because mw.text.decode coerces numbers to strings!</span> </span><span id="L-399"><a href="#L-399"><span class="linenos" data-line="399"></span></a> <span class="nb">require</span> <span class="s2">&quot;libraryUtil&quot;</span><span class="p">.</span><span class="n">checkType</span><span class="p">(</span><span class="s2">&quot;get_best_script&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">str</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span> </span><span id="L-400"><a href="#L-400"><span class="linenos" data-line="400"></span></a> </span><span id="L-401"><a href="#L-401"><span class="linenos" data-line="401"></span></a> <span class="c1">-- Convert HTML character references (including named character references,</span> </span><span id="L-402"><a href="#L-402"><span class="linenos" data-line="402"></span></a> <span class="c1">-- or character entities) to characters.</span> </span><span id="L-403"><a href="#L-403"><span class="linenos" data-line="403"></span></a> <span class="n">str</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">decode</span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-404"><a href="#L-404"><span class="linenos" data-line="404"></span></a> </span><span id="L-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a> <span class="kd">local</span> <span class="n">scripts</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a> <span class="kr">for</span> <span class="n">codepoint</span> <span class="kr">in</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gcodepoint</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-407"><a href="#L-407"><span class="linenos" data-line="407"></span></a> <span class="kd">local</span> <span class="n">script</span> <span class="o">=</span> <span class="n">lookup_script</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-408"><a href="#L-408"><span class="linenos" data-line="408"></span></a> </span><span id="L-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a> <span class="c1">-- Ignore &quot;Inherited&quot;, &quot;Undetermined&quot;, or &quot;Uncoded&quot; scripts.</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zyyy&quot;</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zinh&quot;</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zzzz&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a> <span class="n">scripts</span><span class="p">[</span><span class="n">script</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a> <span class="kr">end</span> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a> <span class="kr">end</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></span></a> </span><span id="L-415"><a href="#L-415"><span class="linenos" data-line="415"></span></a> <span class="c1">-- If scripts does not contain two or more keys,</span> </span><span id="L-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a> <span class="c1">-- return first and only key (script code) in table.</span> </span><span id="L-417"><a href="#L-417"><span class="linenos" data-line="417"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="nb">next</span><span class="p">(</span><span class="n">scripts</span><span class="p">,</span> <span class="nb">next</span><span class="p">(</span><span class="n">scripts</span><span class="p">))</span> <span class="kr">then</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a> <span class="kr">return</span> <span class="nb">next</span><span class="p">(</span><span class="n">scripts</span><span class="p">)</span> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></span></a> <span class="kr">end</span> <span class="c1">-- else return majority script, or else &quot;Zzzz&quot;?</span> </span><span id="L-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a><span class="kr">end</span> </span><span id="L-421"><a href="#L-421"><span class="linenos" data-line="421"></span></a> </span><span id="L-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_Latin</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></span></a> <span class="nb">require</span> <span class="s2">&quot;libraryUtil&quot;</span><span class="p">.</span><span class="n">checkType</span><span class="p">(</span><span class="s2">&quot;get_best_script&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">str</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span> </span><span id="L-424"><a href="#L-424"><span class="linenos" data-line="424"></span></a> <span class="n">str</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">decode</span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-425"><a href="#L-425"><span class="linenos" data-line="425"></span></a> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a> <span class="c1">-- Search for the leading bytes that introduce the UTF-8 encoding of the</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a> <span class="c1">-- code points U+0340-U+10FFFF. If they are not found and there is at least</span> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a> <span class="c1">-- one Latin-script character, the string counts as Latin, because the rest</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a> <span class="c1">-- of the characters can only be Zyyy, Zinh, and Zzzz.</span> </span><span id="L-430"><a href="#L-430"><span class="linenos" data-line="430"></span></a> <span class="c1">-- The only scripts found below U+0370 (the first code point of the Greek</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></span></a> <span class="c1">-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.</span> </span><span id="L-432"><a href="#L-432"><span class="linenos" data-line="432"></span></a> <span class="c1">-- See the codepage in the [[UTF-8]] article.</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">str</span><span class="p">:</span><span class="n">find</span> <span class="s2">&quot;[</span><span class="se">\205</span><span class="s2">-</span><span class="se">\244</span><span class="s2">]&quot;</span> <span class="kr">then</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a> <span class="kr">for</span> <span class="n">codepoint</span> <span class="kr">in</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gcodepoint</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a> <span class="kr">if</span> <span class="n">lookup_script</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;Latn&quot;</span> <span class="kr">then</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a> <span class="kr">end</span> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></span></a> <span class="kr">end</span> </span><span id="L-439"><a href="#L-439"><span class="linenos" data-line="439"></span></a> <span class="kr">end</span> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></span></a> </span><span id="L-441"><a href="#L-441"><span class="linenos" data-line="441"></span></a> <span class="kd">local</span> <span class="n">Latn</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-442"><a href="#L-442"><span class="linenos" data-line="442"></span></a> </span><span id="L-443"><a href="#L-443"><span class="linenos" data-line="443"></span></a> <span class="kr">for</span> <span class="n">codepoint</span> <span class="kr">in</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gcodepoint</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a> <span class="kd">local</span> <span class="n">script</span> <span class="o">=</span> <span class="n">lookup_script</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></span></a> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a> <span class="kr">if</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Latn&quot;</span> <span class="kr">then</span> </span><span id="L-447"><a href="#L-447"><span class="linenos" data-line="447"></span></a> <span class="n">Latn</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="p">(</span><span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zyyy&quot;</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zinh&quot;</span> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zzzz&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-451"><a href="#L-451"><span class="linenos" data-line="451"></span></a> <span class="kr">end</span> </span><span id="L-452"><a href="#L-452"><span class="linenos" data-line="452"></span></a> <span class="kr">end</span> </span><span id="L-453"><a href="#L-453"><span class="linenos" data-line="453"></span></a> </span><span id="L-454"><a href="#L-454"><span class="linenos" data-line="454"></span></a> <span class="kr">return</span> <span class="n">Latn</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a><span class="kr">end</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></span></a> </span><span id="L-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a><span class="c1">-- Checks that a string contains only characters belonging to right-to-left</span> </span><span id="L-458"><a href="#L-458"><span class="linenos" data-line="458"></span></a><span class="c1">-- scripts, or characters of ignorable scripts.</span> </span><span id="L-459"><a href="#L-459"><span class="linenos" data-line="459"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_rtl</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> </span><span id="L-460"><a href="#L-460"><span class="linenos" data-line="460"></span></a> <span class="nb">require</span> <span class="s2">&quot;libraryUtil&quot;</span><span class="p">.</span><span class="n">checkType</span><span class="p">(</span><span class="s2">&quot;get_best_script&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">str</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></span></a> <span class="n">str</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">decode</span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-462"><a href="#L-462"><span class="linenos" data-line="462"></span></a> </span><span id="L-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a> <span class="c1">-- Search for the leading bytes that introduce the UTF-8 encoding of the</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></span></a> <span class="c1">-- code points U+0580-U+10FFFF. If they are not found, the string can only</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a> <span class="c1">-- have characters from a left-to-right script, because the first code point</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a> <span class="c1">-- in a right-to-left script is U+0591, in the Hebrew block.</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">str</span><span class="p">:</span><span class="n">find</span> <span class="s2">&quot;[</span><span class="se">\214</span><span class="s2">-</span><span class="se">\244</span><span class="s2">]&quot;</span> <span class="kr">then</span> </span><span id="L-468"><a href="#L-468"><span class="linenos" data-line="468"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-469"><a href="#L-469"><span class="linenos" data-line="469"></span></a> <span class="kr">end</span> </span><span id="L-470"><a href="#L-470"><span class="linenos" data-line="470"></span></a> </span><span id="L-471"><a href="#L-471"><span class="linenos" data-line="471"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a> <span class="kd">local</span> <span class="n">rtl</span> <span class="o">=</span> <span class="n">loader</span><span class="p">.</span><span class="n">scripts</span><span class="p">.</span><span class="n">rtl</span> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></span></a> <span class="kr">for</span> <span class="n">codepoint</span> <span class="kr">in</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gcodepoint</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-474"><a href="#L-474"><span class="linenos" data-line="474"></span></a> <span class="kd">local</span> <span class="n">script</span> <span class="o">=</span> <span class="n">lookup_script</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></span></a> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></span></a> <span class="kr">if</span> <span class="n">rtl</span><span class="p">[</span><span class="n">script</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-477"><a href="#L-477"><span class="linenos" data-line="477"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-478"><a href="#L-478"><span class="linenos" data-line="478"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="p">(</span><span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zyyy&quot;</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zinh&quot;</span> </span><span id="L-479"><a href="#L-479"><span class="linenos" data-line="479"></span></a> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">&quot;Zzzz&quot;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-480"><a href="#L-480"><span class="linenos" data-line="480"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-481"><a href="#L-481"><span class="linenos" data-line="481"></span></a> <span class="kr">end</span> </span><span id="L-482"><a href="#L-482"><span class="linenos" data-line="482"></span></a> <span class="kr">end</span> </span><span id="L-483"><a href="#L-483"><span class="linenos" data-line="483"></span></a> </span><span id="L-484"><a href="#L-484"><span class="linenos" data-line="484"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a><span class="kr">end</span> </span><span id="L-486"><a href="#L-486"><span class="linenos" data-line="486"></span></a> </span><span id="L-487"><a href="#L-487"><span class="linenos" data-line="487"></span></a> </span><span id="L-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a><span class="cm">--[[--------------------------&lt; I S _ R T L _ F R A M E &gt;------------------------------------------------------</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></span></a> </span><span id="L-490"><a href="#L-490"><span class="linenos" data-line="490"></span></a><span class="cm">external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so</span> </span><span id="L-491"><a href="#L-491"><span class="linenos" data-line="491"></span></a><span class="cm">that those tags don&#39;t corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text</span> </span><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a><span class="cm">has &lt;br /&gt; tags.</span> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></span></a> </span><span id="L-494"><a href="#L-494"><span class="linenos" data-line="494"></span></a><span class="cm">]]</span> </span><span id="L-495"><a href="#L-495"><span class="linenos" data-line="495"></span></a> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is_rtl_frame</span> <span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-497"><a href="#L-497"><span class="linenos" data-line="497"></span></a> <span class="kd">local</span> <span class="n">str</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span> <span class="c1">-- get the string from the {{#invoke:}} frame</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a> <span class="n">str</span> <span class="o">=</span> <span class="n">str</span><span class="p">:</span><span class="n">gsub</span> <span class="p">(</span><span class="s1">&#39;%b&lt;&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span> <span class="c1">-- strip any html and html-like tags</span> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a> <span class="kr">return</span> <span class="n">p</span><span class="p">.</span><span class="n">is_rtl</span> <span class="p">(</span><span class="n">str</span><span class="p">);</span> <span class="c1">-- return if whatever remains rtl; false else</span> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></span></a><span class="kr">end</span> </span><span id="L-501"><a href="#L-501"><span class="linenos" data-line="501"></span></a> </span><span id="L-502"><a href="#L-502"><span class="linenos" data-line="502"></span></a> </span><span id="L-503"><a href="#L-503"><span class="linenos" data-line="503"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">get_codepoint</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> </span><span id="L-504"><a href="#L-504"><span class="linenos" data-line="504"></span></a> <span class="kd">local</span> <span class="n">codepoint_string</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">arg</span><span class="p">]</span> </span><span id="L-505"><a href="#L-505"><span class="linenos" data-line="505"></span></a> <span class="ow">or</span> <span class="n">errorf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">&quot;Parameter %s is required&quot;</span><span class="p">,</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">arg</span><span class="p">))</span> </span><span id="L-506"><a href="#L-506"><span class="linenos" data-line="506"></span></a> <span class="kd">local</span> <span class="n">codepoint</span> <span class="o">=</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">codepoint_string</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a> <span class="ow">or</span> <span class="n">errorf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">&quot;Parameter %s is not a code point in hexadecimal base&quot;</span><span class="p">,</span> </span><span id="L-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a> <span class="nb">tostring</span><span class="p">(</span><span class="n">arg</span><span class="p">))</span> </span><span id="L-509"><a href="#L-509"><span class="linenos" data-line="509"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">0</span> <span class="o">&lt;=</span> <span class="n">codepoint</span> <span class="ow">and</span> <span class="n">codepoint</span> <span class="o">&lt;=</span> <span class="mh">0x10FFFF</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-510"><a href="#L-510"><span class="linenos" data-line="510"></span></a> <span class="n">errorf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">&quot;code point in parameter %s out of range&quot;</span><span class="p">,</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">arg</span><span class="p">))</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> <span class="kr">end</span> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></span></a> <span class="kr">return</span> <span class="n">codepoint</span> </span><span id="L-513"><a href="#L-513"><span class="linenos" data-line="513"></span></a><span class="kr">end</span> </span><span id="L-514"><a href="#L-514"><span class="linenos" data-line="514"></span></a> </span><span id="L-515"><a href="#L-515"><span class="linenos" data-line="515"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">get_func</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">arg</span><span class="p">,</span> <span class="n">prefix</span><span class="p">)</span> </span><span id="L-516"><a href="#L-516"><span class="linenos" data-line="516"></span></a> <span class="kd">local</span> <span class="n">suffix</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">arg</span><span class="p">]</span> </span><span id="L-517"><a href="#L-517"><span class="linenos" data-line="517"></span></a> <span class="ow">or</span> <span class="n">errorf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">&quot;Parameter %s is required&quot;</span><span class="p">,</span> <span class="nb">tostring</span><span class="p">(</span><span class="n">arg</span><span class="p">))</span> </span><span id="L-518"><a href="#L-518"><span class="linenos" data-line="518"></span></a> <span class="n">suffix</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> </span><span id="L-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a> <span class="kd">local</span> <span class="n">func_name</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">..</span> <span class="n">suffix</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a> <span class="kd">local</span> <span class="n">func</span> <span class="o">=</span> <span class="n">p</span><span class="p">[</span><span class="n">func_name</span><span class="p">]</span> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a> <span class="ow">or</span> <span class="n">errorf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">&quot;There is no function &#39;%s&#39;&quot;</span><span class="p">,</span> <span class="n">func_name</span><span class="p">)</span> </span><span id="L-522"><a href="#L-522"><span class="linenos" data-line="522"></span></a> <span class="kr">return</span> <span class="n">func</span> </span><span id="L-523"><a href="#L-523"><span class="linenos" data-line="523"></span></a><span class="kr">end</span> </span><span id="L-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a> </span><span id="L-525"><a href="#L-525"><span class="linenos" data-line="525"></span></a><span class="c1">-- This function allows any of the &quot;lookup&quot; functions to be invoked. The first</span> </span><span id="L-526"><a href="#L-526"><span class="linenos" data-line="526"></span></a><span class="c1">-- parameter is the word after &quot;lookup_&quot;; the second parameter is the code point</span> </span><span id="L-527"><a href="#L-527"><span class="linenos" data-line="527"></span></a><span class="c1">-- in hexadecimal base.</span> </span><span id="L-528"><a href="#L-528"><span class="linenos" data-line="528"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">lookup</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-529"><a href="#L-529"><span class="linenos" data-line="529"></span></a> <span class="kd">local</span> <span class="n">func</span> <span class="o">=</span> <span class="n">get_func</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;lookup_&quot;</span><span class="p">)</span> </span><span id="L-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="kd">local</span> <span class="n">codepoint</span> <span class="o">=</span> <span class="n">get_codepoint</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">codepoint</span><span class="p">)</span> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></span></a> <span class="kr">if</span> <span class="n">func</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">lookup_name</span> <span class="kr">then</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> <span class="c1">-- Prevent code point labels such as &lt;control-0000&gt; from being</span> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> <span class="c1">-- interpreted as HTML tags.</span> </span><span id="L-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">&quot;&lt;&quot;</span><span class="p">,</span> <span class="s2">&quot;&amp;lt;&quot;</span><span class="p">)</span> </span><span id="L-536"><a href="#L-536"><span class="linenos" data-line="536"></span></a> <span class="kr">end</span> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-538"><a href="#L-538"><span class="linenos" data-line="538"></span></a><span class="kr">end</span> </span><span id="L-539"><a href="#L-539"><span class="linenos" data-line="539"></span></a> </span><span id="L-540"><a href="#L-540"><span class="linenos" data-line="540"></span></a><span class="kr">function</span> <span class="nc">p</span><span class="p">.</span><span class="nf">is</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></span></a> <span class="kd">local</span> <span class="n">func</span> <span class="o">=</span> <span class="n">get_func</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;is_&quot;</span><span class="p">)</span> </span><span id="L-542"><a href="#L-542"><span class="linenos" data-line="542"></span></a> </span><span id="L-543"><a href="#L-543"><span class="linenos" data-line="543"></span></a> <span class="c1">-- is_Latin and is_valid_pagename take strings.</span> </span><span id="L-544"><a href="#L-544"><span class="linenos" data-line="544"></span></a> <span class="kr">if</span> <span class="n">func</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">is_Latin</span> <span class="ow">or</span> <span class="n">func</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">is_valid_pagename</span> <span class="ow">or</span> <span class="n">func</span> <span class="o">==</span> <span class="n">p</span><span class="p">.</span><span class="n">is_rtl</span> <span class="kr">then</span> </span><span id="L-545"><a href="#L-545"><span class="linenos" data-line="545"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">func</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a> <span class="kr">else</span> <span class="c1">-- The rest take code points.</span> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a> <span class="kd">local</span> <span class="n">codepoint</span> <span class="o">=</span> <span class="n">get_codepoint</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">func</span><span class="p">(</span><span class="n">codepoint</span><span class="p">))</span> <span class="c1">-- Adjust to one result.</span> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></span></a> <span class="kr">end</span> </span><span id="L-550"><a href="#L-550"><span class="linenos" data-line="550"></span></a><span class="kr">end</span> </span><span id="L-551"><a href="#L-551"><span class="linenos" data-line="551"></span></a> </span><span id="L-552"><a href="#L-552"><span class="linenos" data-line="552"></span></a><span class="kr">return</span> <span class="n">p</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐5cd4cd96d5‐4kbrg Cached time: 20241127060045 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.471 seconds Real time usage: 0.837 seconds Preprocessor visited node count: 2790/1000000 Post‐expand include size: 77534/2097152 bytes Template argument size: 2023/2097152 bytes Highest expansion depth: 25/100 Expensive parser function count: 298/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 20788/5000000 bytes Lua time usage: 0.331/10.000 seconds Lua memory usage: 22886780/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 738.456 1 -total 100.00% 738.456 1 Module:Unicode_data/doc 18.23% 134.648 21 Template:Code 12.07% 89.150 35 Template:Ubl 8.20% 60.555 2 Template:Unichar 7.36% 54.324 2 Template:Unichar/main 4.57% 33.724 1 Template:High_risk 3.23% 23.852 28 Template:Tnull 3.13% 23.150 2 Template:Unichar/name 1.79% 13.210 16 Template:Mono --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Module:Unicode_data&amp;oldid=1220055129">https://en.wikipedia.org/w/index.php?title=Module:Unicode_data&amp;oldid=1220055129</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Unicode_character_modules" title="Category:Unicode character modules">Unicode character modules</a></li><li><a href="/wiki/Category:Lua_metamodules" title="Category:Lua metamodules">Lua metamodules</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden category: <ul><li><a href="/wiki/Category:Wikipedia_template-protected_modules" title="Category:Wikipedia template-protected modules">Wikipedia template-protected modules</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 21 April 2024, at 15:21<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Module:Unicode_data&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-5cd4cd96d5-4kbrg","wgBackendResponseTime":996,"wgPageParseReport":{"limitreport":{"cputime":"0.471","walltime":"0.837","ppvisitednodes":{"value":2790,"limit":1000000},"postexpandincludesize":{"value":77534,"limit":2097152},"templateargumentsize":{"value":2023,"limit":2097152},"expansiondepth":{"value":25,"limit":100},"expensivefunctioncount":{"value":298,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":20788,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 738.456 1 -total","100.00% 738.456 1 Module:Unicode_data/doc"," 18.23% 134.648 21 Template:Code"," 12.07% 89.150 35 Template:Ubl"," 8.20% 60.555 2 Template:Unichar"," 7.36% 54.324 2 Template:Unichar/main"," 4.57% 33.724 1 Template:High_risk"," 3.23% 23.852 28 Template:Tnull"," 3.13% 23.150 2 Template:Unichar/name"," 1.79% 13.210 16 Template:Mono"]},"scribunto":{"limitreport-timeusage":{"value":"0.331","limit":"10.000"},"limitreport-memusage":{"value":22886780,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-5cd4cd96d5-4kbrg","timestamp":"20241127060045","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10