CINXE.COM
模組:Unicode data - 维基百科,自由的百科全书
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-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-sticky-header-enabled vector-toc-available" lang="zh" dir="ltr"> <head> <meta charset="UTF-8"> <title>模組:Unicode data - 维基百科,自由的百科全书</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-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-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )zhwikimwclientpreferences=([^;]+)/);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":"zh","wgMonthNames":["","1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"wgRequestId":"bc652bc0-ac84-41ab-8158-96318564e47e","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Unicode_data","wgTitle":"Unicode data","wgCurRevisionId":83158595,"wgRevisionId":83158595,"wgArticleId":7067757,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["被保护的模块","Unicode模板","维基百科元模块"],"wgPageViewLanguage":"zh","wgPageContentLanguage":"zh","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Unicode_data","wgRelevantArticleId":7067757,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["sysop"],"wgRestrictionMove":["sysop"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"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.gadget.large-font":"ready","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","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.edit0","ext.gadget.WikiMiniAtlas","ext.gadget.UnihanTooltips","ext.gadget.Difflink","ext.gadget.pseudonamespace-UI","ext.gadget.SpecialWikitext","ext.gadget.switcher","ext.gadget.VariantAlly","ext.gadget.AdvancedSiteNotices","ext.gadget.hideConversionTab","ext.gadget.ilhpp","ext.gadget.noteTA","ext.gadget.NavFrame","ext.gadget.collapsibleTables","ext.gadget.scrollUpButton","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"];</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=zh&modules=ext.pygments%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=zh&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=zh&modules=ext.gadget.large-font&only=styles&skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=zh&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.19"> <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="模組:Unicode data - 维基百科,自由的百科全书"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//zh.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 (zh)"> <link rel="EditURI" type="application/rsd+xml" href="//zh.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://zh.wikipedia.org/wiki/Module:Unicode_data"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh"> <link rel="alternate" type="application/atom+xml" title="Wikipedia的Atom feed" href="/w/index.php?title=Special:%E6%9C%80%E8%BF%91%E6%9B%B4%E6%94%B9&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">跳转到内容</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="站点"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="主菜单" > <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="主菜单" > <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">主菜单</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">主菜单</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">移至侧栏</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">隐藏</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> 导航 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikipedia:%E9%A6%96%E9%A1%B5" title="访问首页[z]" accesskey="z"><span>首页</span></a></li><li id="n-indexpage" class="mw-list-item"><a href="/wiki/Wikipedia:%E5%88%86%E7%B1%BB%E7%B4%A2%E5%BC%95" title="以分类索引搜寻中文维基百科"><span>分类索引</span></a></li><li id="n-Featured_content" class="mw-list-item"><a href="/wiki/Portal:%E7%89%B9%E8%89%B2%E5%85%A7%E5%AE%B9" title="查看中文维基百科的特色内容"><span>特色内容</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:%E6%96%B0%E8%81%9E%E5%8B%95%E6%85%8B" title="提供当前新闻事件的背景资料"><span>新闻动态</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:%E6%9C%80%E8%BF%91%E6%9B%B4%E6%94%B9" title="列出维基百科中的最近修改[r]" accesskey="r"><span>最近更改</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:%E9%9A%8F%E6%9C%BA%E9%A1%B5%E9%9D%A2" title="随机载入一个页面[x]" accesskey="x"><span>随机条目</span></a></li><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Special:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2"><span>特殊页面</span></a></li> </ul> </div> </div> <div id="p-help" class="vector-menu mw-portlet mw-portlet-help" > <div class="vector-menu-heading"> 帮助 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:%E7%9B%AE%E5%BD%95" title="寻求帮助"><span>帮助</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:%E7%A4%BE%E7%BE%A4%E9%A6%96%E9%A1%B5" title="关于本计划、你可以做什么、应该如何做"><span>维基社群</span></a></li><li id="n-policy" class="mw-list-item"><a href="/wiki/Wikipedia:%E6%96%B9%E9%87%9D%E8%88%87%E6%8C%87%E5%BC%95" title="查看维基百科的方针和指引"><span>方针与指引</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikipedia:%E4%BA%92%E5%8A%A9%E5%AE%A2%E6%A0%88" title="参与维基百科社群的讨论"><span>互助客栈</span></a></li><li id="n-Information_desk" class="mw-list-item"><a href="/wiki/Wikipedia:%E7%9F%A5%E8%AF%86%E9%97%AE%E7%AD%94" title="解答任何与维基百科无关的问题的地方"><span>知识问答</span></a></li><li id="n-conversion" class="mw-list-item"><a href="/wiki/Wikipedia:%E5%AD%97%E8%AF%8D%E8%BD%AC%E6%8D%A2" title="提出字词转换请求"><span>字词转换</span></a></li><li id="n-IRC" class="mw-list-item"><a href="/wiki/Wikipedia:IRC%E8%81%8A%E5%A4%A9%E9%A2%91%E9%81%93"><span>IRC即时聊天</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikipedia:%E8%81%94%E7%BB%9C%E6%88%91%E4%BB%AC" title="如何联络维基百科"><span>联络我们</span></a></li><li id="n-about" class="mw-list-item"><a href="/wiki/Wikipedia:%E5%85%B3%E4%BA%8E" title="查看维基百科的简介"><span>关于维基百科</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Wikipedia:%E9%A6%96%E9%A1%B5" 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="维基百科" src="/static/images/mobile/copyright/wikipedia-wordmark-zh.svg" style="width: 6.5625em; height: 1.375em;"> <img class="mw-logo-tagline" alt="自由的百科全书" src="/static/images/mobile/copyright/wikipedia-tagline-zh.svg" width="103" height="14" style="width: 6.4375em; height: 0.875em;"> </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:%E6%90%9C%E7%B4%A2" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="搜索维基百科[f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>搜索</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="搜索维基百科" aria-label="搜索维基百科" autocapitalize="sentences" title="搜索维基百科[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:搜索"> </div> <button class="cdx-button cdx-search-input__end-button">搜索</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="个人工具"> <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="外观"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="更改页面字体大小、宽度和颜色的外观" > <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="外观" > <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">外观</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/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=zh.wikipedia.org&uselang=zh" class=""><span>资助维基百科</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:%E5%88%9B%E5%BB%BA%E8%B4%A6%E6%88%B7&returnto=Module%3AUnicode+data" title="我们推荐您创建账号并登录,但这不是强制性的" class=""><span>创建账号</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:%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95&returnto=Module%3AUnicode+data" title="建议你登录,尽管并非必须。[o]" accesskey="o" class=""><span>登录</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="更多选项" > <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="个人工具" > <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">个人工具</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="用户菜单" > <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/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=zh.wikipedia.org&uselang=zh"><span>资助维基百科</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:%E5%88%9B%E5%BB%BA%E8%B4%A6%E6%88%B7&returnto=Module%3AUnicode+data" title="我们推荐您创建账号并登录,但这不是强制性的"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>创建账号</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95&returnto=Module%3AUnicode+data" title="建议你登录,尽管并非必须。[o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>登录</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"> 未登录编辑者的页面 <a href="/wiki/Help:%E6%96%B0%E6%89%8B%E5%85%A5%E9%97%A8" aria-label="了解有关编辑的更多信息"><span>了解详情</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:%E6%88%91%E7%9A%84%E8%B4%A1%E7%8C%AE" title="来自此IP地址的编辑列表[y]" accesskey="y"><span>贡献</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:%E6%88%91%E7%9A%84%E8%AE%A8%E8%AE%BA%E9%A1%B5" title="对于来自此IP地址编辑的讨论[n]" accesskey="n"><span>讨论</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="站点"> <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="目录" 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">目录</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">移至侧栏</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">隐藏</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">序言</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-Functions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Functions</span> </div> </a> <ul id="toc-Functions-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">3</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">4</span> <span>Copyright</span> </div> </a> <ul id="toc-Copyright-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="目录" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="目录" > <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="开关目录" > <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">开关目录</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">模組</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="前往另一种语言写成的文章。120种语言可用" > <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-120" 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">120种语言</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <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 – 阿布哈西亚语" lang="ab" hreflang="ab" data-title="Амодуль:Unicode data" data-language-autonym="Аԥсшәа" data-language-local-name="阿布哈西亚语" class="interlanguage-link-target"><span>Аԥсшәа</span></a></li><li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – 南非荷兰语" lang="af" hreflang="af" data-title="Module:Unicode data" data-language-autonym="Afrikaans" data-language-local-name="南非荷兰语" class="interlanguage-link-target"><span>Afrikaans</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 – 古英语" lang="ang" hreflang="ang" data-title="Module:Unicode data" data-language-autonym="Ænglisc" data-language-local-name="古英语" class="interlanguage-link-target"><span>Ænglisc</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 – 昂加语" lang="anp" hreflang="anp" data-title="मोड्यूल:Unicode data" data-language-autonym="अंगिका" data-language-local-name="昂加语" 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 – 阿拉伯语" lang="ar" hreflang="ar" data-title="وحدة:Unicode data" data-language-autonym="العربية" data-language-local-name="阿拉伯语" class="interlanguage-link-target"><span>العربية</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 – 摩洛哥阿拉伯文" lang="ary" hreflang="ary" data-title="مودول:Unicode data" data-language-autonym="الدارجة" data-language-local-name="摩洛哥阿拉伯文" 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 – 阿萨姆语" lang="as" hreflang="as" data-title="Module:Unicode data" data-language-autonym="অসমীয়া" data-language-local-name="阿萨姆语" 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 – 阿斯图里亚斯语" lang="ast" hreflang="ast" data-title="Módulu:Unicode data" data-language-autonym="Asturianu" data-language-local-name="阿斯图里亚斯语" 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 – 阿瓦尔语" lang="av" hreflang="av" data-title="Модуль:Unicode data" data-language-autonym="Авар" data-language-local-name="阿瓦尔语" 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-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 – 巴什基尔语" lang="ba" hreflang="ba" data-title="Модуль:Unicode data" data-language-autonym="Башҡортса" data-language-local-name="巴什基尔语" 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 – 巴厘语" lang="ban" hreflang="ban" data-title="Modul:Unicode data" data-language-autonym="Basa Bali" data-language-local-name="巴厘语" class="interlanguage-link-target"><span>Basa Bali</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-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-bjn mw-list-item"><a href="https://bjn.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – 班亞爾文" lang="bjn" hreflang="bjn" data-title="Modul:Unicode data" data-language-autonym="Banjar" data-language-local-name="班亞爾文" class="interlanguage-link-target"><span>Banjar</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'O" lang="blk" hreflang="blk" data-title="မော်ဂျူး:Unicode data" data-language-autonym="ပအိုဝ်ႏဘာႏသာႏ" data-language-local-name="Pa'O" class="interlanguage-link-target"><span>ပအိုဝ်ႏဘာႏသာႏ</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="মডিউল:ইউনিকোড উপাত্ত – 孟加拉语" lang="bn" hreflang="bn" data-title="মডিউল:ইউনিকোড উপাত্ত" data-language-autonym="বাংলা" data-language-local-name="孟加拉语" class="interlanguage-link-target"><span>বাংলা</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 – 比什奴普萊利亞文" lang="bpy" hreflang="bpy" data-title="মডিউল:Unicode data" data-language-autonym="বিষ্ণুপ্রিয়া মণিপুরী" data-language-local-name="比什奴普萊利亞文" class="interlanguage-link-target"><span>বিষ্ণুপ্রিয়া মণিপুরী</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 – 波斯尼亚语" lang="bs" hreflang="bs" data-title="Modul:Unicode data" data-language-autonym="Bosanski" data-language-local-name="波斯尼亚语" 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 – 加泰罗尼亚语" lang="ca" hreflang="ca" data-title="Mòdul:Unicode data" data-language-autonym="Català" data-language-local-name="加泰罗尼亚语" class="interlanguage-link-target"><span>Català</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-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 – 车臣语" lang="ce" hreflang="ce" data-title="Модуль:Unicode data" data-language-autonym="Нохчийн" data-language-local-name="车臣语" class="interlanguage-link-target"><span>Нохчийн</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 – 宿务语" lang="ceb" hreflang="ceb" data-title="Module:Unicode data" data-language-autonym="Cebuano" data-language-local-name="宿务语" class="interlanguage-link-target"><span>Cebuano</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 – 中库尔德语" lang="ckb" hreflang="ckb" data-title="مۆدیوول:Unicode data" data-language-autonym="کوردی" data-language-local-name="中库尔德语" class="interlanguage-link-target"><span>کوردی</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 – 科西嘉语" lang="co" hreflang="co" data-title="Modulo:Unicode data" data-language-autonym="Corsu" data-language-local-name="科西嘉语" class="interlanguage-link-target"><span>Corsu</span></a></li><li class="interlanguage-link interwiki-cy mw-list-item"><a href="https://cy.wikipedia.org/wiki/Modiwl:Unicode_data" title="Modiwl:Unicode data – 威尔士语" lang="cy" hreflang="cy" data-title="Modiwl:Unicode data" data-language-autonym="Cymraeg" data-language-local-name="威尔士语" class="interlanguage-link-target"><span>Cymraeg</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 – 迪维希语" lang="dv" hreflang="dv" data-title="މޮޑިއުލް:Unicode data" data-language-autonym="ދިވެހިބަސް" data-language-local-name="迪维希语" 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 – 希腊语" lang="el" hreflang="el" data-title="Module:Unicode data" data-language-autonym="Ελληνικά" data-language-local-name="希腊语" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – 英语" lang="en" hreflang="en" data-title="Module:Unicode data" data-language-autonym="English" data-language-local-name="英语" class="interlanguage-link-target"><span>English</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 – 西班牙语" lang="es" hreflang="es" data-title="Módulo:Unicode data" data-language-autonym="Español" data-language-local-name="西班牙语" 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 – 波斯语" lang="fa" hreflang="fa" data-title="پودمان:Unicode data" data-language-autonym="فارسی" data-language-local-name="波斯语" class="interlanguage-link-target"><span>فارسی</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 – 芳蒂语" lang="fat" hreflang="fat" data-title="Module:Unicode data" data-language-autonym="Mfantse" data-language-local-name="芳蒂语" class="interlanguage-link-target"><span>Mfantse</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 – 芬兰语" lang="fi" hreflang="fi" data-title="Moduuli:Unicode data" data-language-autonym="Suomi" data-language-local-name="芬兰语" class="interlanguage-link-target"><span>Suomi</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 – 爱尔兰语" lang="ga" hreflang="ga" data-title="Module:Unicode data" data-language-autonym="Gaeilge" data-language-local-name="爱尔兰语" class="interlanguage-link-target"><span>Gaeilge</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 – 赣语" lang="gan" hreflang="gan" data-title="模組:Unicode data" data-language-autonym="贛語" data-language-local-name="赣语" class="interlanguage-link-target"><span>贛語</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 – 加利西亚语" lang="gl" hreflang="gl" data-title="Módulo:Unicode data" data-language-autonym="Galego" data-language-local-name="加利西亚语" class="interlanguage-link-target"><span>Galego</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-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 – 古吉拉特语" lang="gu" hreflang="gu" data-title="વિભાગ:Unicode data" data-language-autonym="ગુજરાતી" data-language-local-name="古吉拉特语" 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 – 豪萨语" lang="ha" hreflang="ha" data-title="Module:Unicode data" data-language-autonym="Hausa" data-language-local-name="豪萨语" class="interlanguage-link-target"><span>Hausa</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 – 印地语" lang="hi" hreflang="hi" data-title="मॉड्यूल:Unicode data" data-language-autonym="हिन्दी" data-language-local-name="印地语" 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 – 斐濟印地文" lang="hif" hreflang="hif" data-title="Module:Unicode data" data-language-autonym="Fiji Hindi" data-language-local-name="斐濟印地文" class="interlanguage-link-target"><span>Fiji Hindi</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 – 克罗地亚语" lang="hr" hreflang="hr" data-title="Modul:Unicode data" data-language-autonym="Hrvatski" data-language-local-name="克罗地亚语" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – 匈牙利语" lang="hu" hreflang="hu" data-title="Modul:Unicode data" data-language-autonym="Magyar" data-language-local-name="匈牙利语" class="interlanguage-link-target"><span>Magyar</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 – 亚美尼亚语" lang="hy" hreflang="hy" data-title="Մոդուլ:Unicode data" data-language-autonym="Հայերեն" data-language-local-name="亚美尼亚语" 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-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – 印度尼西亚语" lang="id" hreflang="id" data-title="Modul:Unicode data" data-language-autonym="Bahasa Indonesia" data-language-local-name="印度尼西亚语" class="interlanguage-link-target"><span>Bahasa Indonesia</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 – 伊洛卡诺语" lang="ilo" hreflang="ilo" data-title="Modulo:Unicode data" data-language-autonym="Ilokano" data-language-local-name="伊洛卡诺语" class="interlanguage-link-target"><span>Ilokano</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 – 日语" lang="ja" hreflang="ja" data-title="モジュール:Unicode data" data-language-autonym="日本語" data-language-local-name="日语" class="interlanguage-link-target"><span>日本語</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 – 爪哇语" lang="jv" hreflang="jv" data-title="Modhul:Unicode data" data-language-autonym="Jawa" data-language-local-name="爪哇语" class="interlanguage-link-target"><span>Jawa</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 – 格鲁吉亚语" lang="ka" hreflang="ka" data-title="მოდული:Unicode data" data-language-autonym="ქართული" data-language-local-name="格鲁吉亚语" 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 – 卡拜尔语" lang="kab" hreflang="kab" data-title="Module:Unicode data" data-language-autonym="Taqbaylit" data-language-local-name="卡拜尔语" class="interlanguage-link-target"><span>Taqbaylit</span></a></li><li class="interlanguage-link interwiki-kge mw-list-item"><a href="https://kge.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – Komering" lang="kge" hreflang="kge" data-title="Modul:Unicode data" data-language-autonym="Kumoring" data-language-local-name="Komering" class="interlanguage-link-target"><span>Kumoring</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 – 高棉语" lang="km" hreflang="km" data-title="Module:Unicode data" data-language-autonym="ភាសាខ្មែរ" data-language-local-name="高棉语" class="interlanguage-link-target"><span>ភាសាខ្មែរ</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 – 卡纳达语" lang="kn" hreflang="kn" data-title="ಮಾಡ್ಯೂಲ್:Unicode data" data-language-autonym="ಕನ್ನಡ" data-language-local-name="卡纳达语" 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 – 韩语" lang="ko" hreflang="ko" data-title="모듈:Unicode data" data-language-autonym="한국어" data-language-local-name="韩语" class="interlanguage-link-target"><span>한국어</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 – 库尔德语" lang="ku" hreflang="ku" data-title="Modul:Unicode data" data-language-autonym="Kurdî" data-language-local-name="库尔德语" class="interlanguage-link-target"><span>Kurdî</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 – 拉迪诺语" lang="lad" hreflang="lad" data-title="Módulo:Unicode data" data-language-autonym="Ladino" data-language-local-name="拉迪诺语" class="interlanguage-link-target"><span>Ladino</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 – 拉定语" lang="lld" hreflang="lld" data-title="Modulo:Unicode data" data-language-autonym="Ladin" data-language-local-name="拉定语" class="interlanguage-link-target"><span>Ladin</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 – 老挝语" lang="lo" hreflang="lo" data-title="Module:Unicode data" data-language-autonym="ລາວ" data-language-local-name="老挝语" 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 – 迈蒂利语" lang="mai" hreflang="mai" data-title="मोड्युल:Unicode data" data-language-autonym="मैथिली" data-language-local-name="迈蒂利语" class="interlanguage-link-target"><span>मैथिली</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 – 莫克沙语" lang="mdf" hreflang="mdf" data-title="Модуль:Unicode data" data-language-autonym="Мокшень" data-language-local-name="莫克沙语" class="interlanguage-link-target"><span>Мокшень</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 – 毛利语" lang="mi" hreflang="mi" data-title="Module:Unicode data" data-language-autonym="Māori" data-language-local-name="毛利语" class="interlanguage-link-target"><span>Māori</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 – 马其顿语" lang="mk" hreflang="mk" data-title="Модул:Unicode data" data-language-autonym="Македонски" data-language-local-name="马其顿语" 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 – 马拉雅拉姆语" lang="ml" hreflang="ml" data-title="ഘടകം:Unicode data" data-language-autonym="മലയാളം" data-language-local-name="马拉雅拉姆语" 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 – 蒙古语" lang="mn" hreflang="mn" data-title="Module:Unicode data" data-language-autonym="Монгол" data-language-local-name="蒙古语" 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-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 – 马拉地语" lang="mr" hreflang="mr" data-title="विभाग:Unicode data" data-language-autonym="मराठी" data-language-local-name="马拉地语" 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 – 马来语" lang="ms" hreflang="ms" data-title="Modul:Unicode data" data-language-autonym="Bahasa Melayu" data-language-local-name="马来语" class="interlanguage-link-target"><span>Bahasa Melayu</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 – 马耳他语" lang="mt" hreflang="mt" data-title="Module:Unicode data" data-language-autonym="Malti" data-language-local-name="马耳他语" class="interlanguage-link-target"><span>Malti</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 – 缅甸语" lang="my" hreflang="my" data-title="မော်ဂျူး:Unicode data" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="缅甸语" 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 – 马赞德兰语" lang="mzn" hreflang="mzn" data-title="ماژول:Unicode data" data-language-autonym="مازِرونی" data-language-local-name="马赞德兰语" 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 – 低萨克森语" lang="nds-NL" hreflang="nds-NL" data-title="Module:Unicode data" data-language-autonym="Nedersaksies" data-language-local-name="低萨克森语" 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 – 尼泊尔语" lang="ne" hreflang="ne" data-title="मोड्युल:Unicode data" data-language-autonym="नेपाली" data-language-local-name="尼泊尔语" class="interlanguage-link-target"><span>नेपाली</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 – 挪威尼诺斯克语" lang="nn" hreflang="nn" data-title="Modul:Unicode data" data-language-autonym="Norsk nynorsk" data-language-local-name="挪威尼诺斯克语" class="interlanguage-link-target"><span>Norsk nynorsk</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 – 旁遮普语" lang="pa" hreflang="pa" data-title="ਮੌਡਿਊਲ:Unicode data" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="旁遮普语" 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 – Pitcairn-Norfolk" lang="pih" hreflang="pih" data-title="Module:Unicode data" data-language-autonym="Norfuk / Pitkern" data-language-local-name="Pitcairn-Norfolk" class="interlanguage-link-target"><span>Norfuk / Pitkern</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 – 普什图语" lang="ps" hreflang="ps" data-title="Module:Unicode data" data-language-autonym="پښتو" data-language-local-name="普什图语" class="interlanguage-link-target"><span>پښتو</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 – 葡萄牙语" lang="pt" hreflang="pt" data-title="Módulo:Unicode data" data-language-autonym="Português" data-language-local-name="葡萄牙语" class="interlanguage-link-target"><span>Português</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 – 隆迪语" lang="rn" hreflang="rn" data-title="Module:Unicode data" data-language-autonym="Ikirundi" data-language-local-name="隆迪语" class="interlanguage-link-target"><span>Ikirundi</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 – 罗马尼亚语" lang="ro" hreflang="ro" data-title="Modul:Unicode data" data-language-autonym="Română" data-language-local-name="罗马尼亚语" 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 – 俄语" lang="ru" hreflang="ru" data-title="Модуль:Unicode data" data-language-autonym="Русский" data-language-local-name="俄语" class="interlanguage-link-target"><span>Русский</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 – 苏格兰语" lang="sco" hreflang="sco" data-title="Module:Unicode data" data-language-autonym="Scots" data-language-local-name="苏格兰语" class="interlanguage-link-target"><span>Scots</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 – 信德语" lang="sd" hreflang="sd" data-title="ماڊيول:Unicode data" data-language-autonym="سنڌي" data-language-local-name="信德语" class="interlanguage-link-target"><span>سنڌي</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 – 塞尔维亚-克罗地亚语" lang="sh" hreflang="sh" data-title="Modul:Unicode data" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="塞尔维亚-克罗地亚语" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</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 – 掸语" lang="shn" hreflang="shn" data-title="မေႃႇၵျူး:Unicode data" data-language-autonym="တႆး" data-language-local-name="掸语" class="interlanguage-link-target"><span>တႆး</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 – 僧伽罗语" lang="si" hreflang="si" data-title="Module:Unicode data" data-language-autonym="සිංහල" data-language-local-name="僧伽罗语" 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-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/Modul:Unicode_data" title="Modul:Unicode data – 斯洛文尼亚语" lang="sl" hreflang="sl" data-title="Modul:Unicode data" data-language-autonym="Slovenščina" data-language-local-name="斯洛文尼亚语" class="interlanguage-link-target"><span>Slovenščina</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 – 伊纳里萨米语" lang="smn" hreflang="smn" data-title="Mooduul:Unicode data" data-language-autonym="Anarâškielâ" data-language-local-name="伊纳里萨米语" class="interlanguage-link-target"><span>Anarâškielâ</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 – 绍纳语" lang="sn" hreflang="sn" data-title="Module:Unicode data" data-language-autonym="ChiShona" data-language-local-name="绍纳语" class="interlanguage-link-target"><span>ChiShona</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 – 阿尔巴尼亚语" lang="sq" hreflang="sq" data-title="Moduli:Unicode data" data-language-autonym="Shqip" data-language-local-name="阿尔巴尼亚语" class="interlanguage-link-target"><span>Shqip</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 – 塞尔维亚语" lang="sr" hreflang="sr" data-title="Модул:Unicode data" data-language-autonym="Српски / srpski" data-language-local-name="塞尔维亚语" class="interlanguage-link-target"><span>Српски / srpski</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 – 斯瓦蒂语" lang="ss" hreflang="ss" data-title="Module:Unicode data" data-language-autonym="SiSwati" data-language-local-name="斯瓦蒂语" class="interlanguage-link-target"><span>SiSwati</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 – 巽他语" lang="su" hreflang="su" data-title="Modul:Unicode data" data-language-autonym="Sunda" data-language-local-name="巽他语" class="interlanguage-link-target"><span>Sunda</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 – 瑞典语" lang="sv" hreflang="sv" data-title="Modul:Unicode data" data-language-autonym="Svenska" data-language-local-name="瑞典语" class="interlanguage-link-target"><span>Svenska</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-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/Module:Unicode_data" title="Module:Unicode data – 泰米尔语" lang="ta" hreflang="ta" data-title="Module:Unicode data" data-language-autonym="தமிழ்" data-language-local-name="泰米尔语" 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><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 – 德顿语" lang="tet" hreflang="tet" data-title="Módulo:Unicode data" data-language-autonym="Tetun" data-language-local-name="德顿语" 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 – 泰语" lang="th" hreflang="th" data-title="มอดูล:Unicode data" data-language-autonym="ไทย" data-language-local-name="泰语" 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 – 提格利尼亚语" lang="ti" hreflang="ti" data-title="ሞድዩል:Unicode data" data-language-autonym="ትግርኛ" data-language-local-name="提格利尼亚语" class="interlanguage-link-target"><span>ትግርኛ</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 – 土库曼语" lang="tk" hreflang="tk" data-title="Module:Unicode data" data-language-autonym="Türkmençe" data-language-local-name="土库曼语" class="interlanguage-link-target"><span>Türkmençe</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 – 他加禄语" lang="tl" hreflang="tl" data-title="Module:Unicode data" data-language-autonym="Tagalog" data-language-local-name="他加禄语" class="interlanguage-link-target"><span>Tagalog</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 – 茨瓦纳语" lang="tn" hreflang="tn" data-title="Module:Unicode data" data-language-autonym="Setswana" data-language-local-name="茨瓦纳语" class="interlanguage-link-target"><span>Setswana</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 – 托克皮辛语" lang="tpi" hreflang="tpi" data-title="Module:Unicode data" data-language-autonym="Tok Pisin" data-language-local-name="托克皮辛语" class="interlanguage-link-target"><span>Tok Pisin</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 – 土耳其语" lang="tr" hreflang="tr" data-title="Modül:Unicode verisi" data-language-autonym="Türkçe" data-language-local-name="土耳其语" class="interlanguage-link-target"><span>Türkç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 – 乌克兰语" lang="uk" hreflang="uk" data-title="Модуль:Unicode data" data-language-autonym="Українська" data-language-local-name="乌克兰语" 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 – 乌尔都语" lang="ur" hreflang="ur" data-title="ماڈیول:Unicode data" data-language-autonym="اردو" data-language-local-name="乌尔都语" class="interlanguage-link-target"><span>اردو</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 – 乌兹别克语" lang="uz" hreflang="uz" data-title="Modul:Unicode data" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="乌兹别克语" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</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 – 越南语" lang="vi" hreflang="vi" data-title="Mô đun:Unicode data" data-language-autonym="Tiếng Việt" data-language-local-name="越南语" 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 – 瓦瑞语" lang="war" hreflang="war" data-title="Module:Unicode data" data-language-autonym="Winaray" data-language-local-name="瓦瑞语" 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 – 吴语" lang="wuu" hreflang="wuu" data-title="模块:Unicode data" data-language-autonym="吴语" data-language-local-name="吴语" class="interlanguage-link-target"><span>吴语</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 – 卡尔梅克语" lang="xal" hreflang="xal" data-title="Модуль:Unicode data" data-language-autonym="Хальмг" data-language-local-name="卡尔梅克语" class="interlanguage-link-target"><span>Хальмг</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 – 科萨语" lang="xh" hreflang="xh" data-title="Module:Unicode data" data-language-autonym="IsiXhosa" data-language-local-name="科萨语" class="interlanguage-link-target"><span>IsiXhosa</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 – 约鲁巴语" lang="yo" hreflang="yo" data-title="Module:Unicode data" data-language-autonym="Yorùbá" data-language-local-name="约鲁巴语" class="interlanguage-link-target"><span>Yorùbá</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 – 闽南语" lang="nan" hreflang="nan" data-title="模組:Unicode data" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="闽南语" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</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 – 粤语" lang="yue" hreflang="yue" data-title="模組:Unicode data" data-language-autonym="粵語" data-language-local-name="粤语" class="interlanguage-link-target"><span>粵語</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 – 祖鲁语" lang="zu" hreflang="zu" data-title="Module:Unicode data" data-language-autonym="IsiZulu" data-language-local-name="祖鲁语" class="interlanguage-link-target"><span>IsiZulu</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="编辑跨语言链接" class="wbc-editpage">编辑链接</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="命名空间"> <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="查看模块页面[c]" accesskey="c"><span>模块</span></a></li><li id="ca-talk" class="new vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module_talk:Unicode_data&action=edit&redlink=1" rel="discussion" class="new" title="关于此页面的讨论(页面不存在)[t]" accesskey="t"><span>讨论</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="更改语言变体" > <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="查看"> <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>阅读</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&action=edit" title="该页面已被保护。你可以查看该页源码。[e]" accesskey="e"><span>查看源代码</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&action=history" title="本页面的早前版本。[h]" accesskey="h"><span>查看历史</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="页面工具"> <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="工具" > <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">工具</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">工具</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">移至侧栏</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">隐藏</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="更多选项" > <div class="vector-menu-heading"> 操作 </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>阅读</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&action=edit"><span>查看源代码</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&action=history"><span>查看历史</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> 常规 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:%E9%93%BE%E5%85%A5%E9%A1%B5%E9%9D%A2/Module:Unicode_data" title="列出所有与本页相链的页面[j]" accesskey="j"><span>链入页面</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:%E9%93%BE%E5%87%BA%E6%9B%B4%E6%94%B9/Module:Unicode_data" rel="nofollow" title="页面链出所有页面的更改[k]" accesskey="k"><span>相关更改</span></a></li><li id="t-upload" class="mw-list-item"><a href="//zh.wikipedia.org/wiki/Project:上传" title="上传图像或多媒体文件[u]" accesskey="u"><span>上传文件</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&oldid=83158595" title="此页面该修订版本的固定链接"><span>固定链接</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:Unicode_data&action=info" title="关于此页面的更多信息"><span>页面信息</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:URL%E7%BC%A9%E7%9F%AD%E7%A8%8B%E5%BA%8F&url=https%3A%2F%2Fzh.wikipedia.org%2Fwiki%2FModule%3AUnicode_data"><span>获取短链接</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fzh.wikipedia.org%2Fwiki%2FModule%3AUnicode_data"><span>下载二维码</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"> 打印/导出 </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&page=Module%3AUnicode_data&action=show-download-screen"><span>下载为PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="本页面的可打印版本[p]" accesskey="p"><span>打印页面</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"> 在其他项目中 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-wiktionary mw-list-item"><a href="https://zh.wiktionary.org/wiki/Module:Unicode_data" hreflang="zh"><span>维基词典</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="链接到连接的数据仓库项目[g]" accesskey="g"><span>维基数据项目</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="页面工具"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="外观"> <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">外观</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">移至侧栏</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">隐藏</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-noteTA-574f5b56" class="mw-indicator"><div class="mw-parser-output"><span class="skin-invert" typeof="mw:File"><span title="本页使用了标题或全文手工转换"><img alt="本页使用了标题或全文手工转换" src="//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png" decoding="async" width="35" height="22" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/53px-Zh_conversion_icon_m.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/70px-Zh_conversion_icon_m.svg.png 2x" data-file-width="32" data-file-height="20" /></span></span></div></div> <div id="mw-indicator-pp-default" class="mw-indicator"><div class="mw-parser-output"><span typeof="mw:File"><a href="/wiki/Wikipedia:%E4%BF%9D%E8%AD%B7%E6%96%B9%E9%87%9D#全保护" title="此高风险模块已被永久全保护,以避免破坏"><img alt="被永久保护的模块" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/Full-protection-shackle-block.svg/20px-Full-protection-shackle-block.svg.png" decoding="async" width="20" height="20" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/Full-protection-shackle-block.svg/30px-Full-protection-shackle-block.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/12/Full-protection-shackle-block.svg/40px-Full-protection-shackle-block.svg.png 2x" data-file-width="512" data-file-height="512" /></a></span></div></div> </div> <div id="siteSub" class="noprint">维基百科,自由的百科全书</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="zh" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r84589015">.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-size:small;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> 模块文档</span><span class="mw-editsection-like plainlinks">[<a href="/wiki/Module:Unicode_data/doc" title="Module:Unicode data/doc">查看</a>] [<a href="/wiki/Special:%E7%BC%96%E8%BE%91%E9%A1%B5%E9%9D%A2/Module:Unicode_data/doc" title="Special:编辑页面/Module:Unicode data/doc">编辑</a>] [<a href="/wiki/Special:%E9%A1%B5%E9%9D%A2%E5%8E%86%E5%8F%B2/Module:Unicode_data/doc" title="Special:页面历史/Module:Unicode data/doc">历史</a>] [<a href="/wiki/Special:%E5%88%B7%E6%96%B0/Module:Unicode_data" title="Special:刷新/Module:Unicode data">清除缓存</a>]</span></div> <div id="noteTA-574f5b56" class="noteTA"><div class="noteTA-group"><div data-noteta-group-source="module" data-noteta-group="MediaWiki special"></div></div></div> <p><br /> </p> <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://zh.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="Functions">Functions</h2></div> <dl><dt><code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="n">lookup_name</span><span class="p">(</span><span class="n">code</span> <span class="n">point</span><span class="p">)</span></code></dt> <dd>Receives a code point (number) and returns its name or label; for example, <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="n">lookup_name</span><span class="p">(</span><span class="mh">0xA9</span><span class="p">)</span></code> returns <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"COPYRIGHT SIGN"</span></code>.</dd> <dd>For example, <code>{{#invoke:Unicode data|lookup|name|61}}</code> → LATIN SMALL LETTER A</dd> <dt><code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" 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>. Replace the first underscore in the function name with a pipe. For most of the functions, add the code point in hexadecimal base as the next parameter, but for <code>is_Latin</code>, <code>is_rtl</code>, and <code>is_valid_pagename</code>, add text. <a href="/w/index.php?title=HTML_character_references&action=edit&redlink=1" class="new" title="HTML character references(页面不存在)">HTML character references</a> in the text are decoded by the module into code points.</dd> <dd>For example, <code>{{#invoke:Unicode data|is|Latin|àzàhàr̃iyyā̀}}</code> → true.</dd></dl> <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:%E5%89%8D%E7%BC%80%E7%B4%A2%E5%BC%95/Module:Unicode_data/" title="Special:前缀索引/Module:Unicode data/">submodules</a>. Some are generated by <a href="/wiki/AWK" title="AWK">AWK</a> scripts shown at <a href="https://zh.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/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/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/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/Hangul" title="Module:Unicode data/Hangul">Module:Unicode data/Hangul</a>: data used to generate the names of <a href="/w/index.php?title=Hangul&action=edit&redlink=1" class="new" 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/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:%E5%89%8D%E7%BC%80%E7%B4%A2%E5%BC%95/Module:Unicode_data/names/" title="Special:前缀索引/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–<br />U+0FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/001" title="Module:Unicode data/names/001">U+1000–<br />U+1FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/002" title="Module:Unicode data/names/002">U+2000–<br />U+2FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/003" title="Module:Unicode data/names/003">U+3000–<br />U+3FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/004" title="Module:Unicode data/names/004">U+4000–<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–<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–<br />U+DFFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/00F" title="Module:Unicode data/names/00F">U+F000–<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–<br />U+10FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/011" title="Module:Unicode data/names/011">U+11000–<br />U+11FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/012" title="Module:Unicode data/names/012">U+12000–<br />U+12FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/013" title="Module:Unicode data/names/013">U+13000–<br />U+13FFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/014" title="Module:Unicode data/names/014">U+14000–<br />U+14FFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/016" title="Module:Unicode data/names/016">U+16000–<br />U+16FFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/018" title="Module:Unicode data/names/018">U+18000–<br />U+18FFF</a> </td> <td> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/01B" title="Module:Unicode data/names/01B">U+1B000–<br />U+1BFFF</a> </td> <td> </td> <td><a href="/wiki/Module:Unicode_data/names/01D" title="Module:Unicode data/names/01D">U+1D000–<br />U+1DFFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/01E" title="Module:Unicode data/names/01E">U+1E000–<br />U+1EFFF</a> </td> <td><a href="/wiki/Module:Unicode_data/names/01F" title="Module:Unicode data/names/01F">U+1F000–<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–<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="documentation-clear"></div> </div> <div role="note" class="documentation-metadata plainlinks">上述<a href="/wiki/Wikipedia:%E6%A8%A1%E6%9D%BF%E6%96%87%E6%AA%94%E9%A0%81%E6%A8%A1%E5%BC%8F" class="mw-redirect" title="Wikipedia:模板文檔頁模式">文档</a><a href="/wiki/Wikipedia:%E5%B5%8C%E5%85%A5%E5%8C%85%E5%90%AB" title="Wikipedia:嵌入包含">嵌入</a>自<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:%E7%BC%96%E8%BE%91%E9%A1%B5%E9%9D%A2/Module:Unicode_data/doc" title="Special:编辑页面/Module:Unicode data/doc">编辑</a> | <a href="/wiki/Special:%E9%A1%B5%E9%9D%A2%E5%8E%86%E5%8F%B2/Module:Unicode_data/doc" title="Special:页面历史/Module:Unicode data/doc">历史</a>)</span><br />编者可以在本模块的沙盒 <span class="documentation-toolbar">(<a class="external text" href="https://zh.wikipedia.org/w/index.php?title=Module:Unicode_data/sandbox&action=edit&preload=Template%3ADocumentation%2Fpreload-module-sandbox">创建</a> | <a class="external text" href="https://zh.wikipedia.org/w/index.php?title=Module:Unicode_data/sandbox&preload=Module%3AUnicode+data&action=edit&summary=%E5%BB%BA%E7%AB%8B%5B%5BModule%3AUnicode+data%5D%5D%E7%9A%84%E6%B2%99%E7%9B%92%E7%89%88%E6%9C%AC">镜像</a>)</span>和测试样例 <span class="documentation-toolbar">(<a class="external text" href="https://zh.wikipedia.org/w/index.php?title=Module:Unicode_data/testcases&action=edit&preload=Template%3ADocumentation%2Fpreload-module-testcases">创建</a>)</span>页面进行实验。<br /> <a href="/wiki/Special:%E5%89%8D%E7%BC%80%E7%B4%A2%E5%BC%95/Module:Unicode_data/" title="Special:前缀索引/Module:Unicode data/">本模块的子页面</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">"number"</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">"Module:TableTools"</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"><=</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"><</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"><=</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] <= codepoint and codepoint <= 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 "loader" 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">-- "Module:Unicode data/" 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">"Module:Unicode data/"</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 "Hangul Syllable Name Generation" 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">"<control-%04X>"</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">"<control-%04X>"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"HANGUL SYLLABLE %s%s%s"</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">"<surrogate-%04X>"</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">"<private-use-%04X>"</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">"CJK COMPATIBILITY IDEOGRAPH-%04X"</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">"CJK COMPATIBILITY IDEOGRAPH-%04X"</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">"TANGUT IDEOGRAPH-%04X"</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">"TANGUT COMPONENT-%03d"</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">"TANGUT IDEOGRAPH-%04X"</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">"NUSHU CHARACTER-%04X"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"CJK COMPATIBILITY IDEOGRAPH-%04X"</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">"VARIATION SELECTOR-%d"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">"CJK UNIFIED IDEOGRAPH-%04X"</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">0xF0000</span><span class="p">,</span> <span class="mh">0xFFFFD</span><span class="p">,</span> <span class="s2">"<private-use-%04X>"</span> <span class="p">},</span> <span class="c1">-- Plane 15 Private Use</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">0x100000</span><span class="p">,</span> <span class="mh">0x10FFFD</span><span class="p">,</span> <span class="s2">"<private-use-%04X>"</span> <span class="p">}</span> <span class="c1">-- Plane 16 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><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></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-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a><span class="kd">local</span> <span class="n">name_range_cache</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></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-108"><a href="#L-108"><span class="linenos" data-line="108"></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">"string"</span> <span class="kr">then</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></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-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="kr">else</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></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-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="kr">end</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><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a><span class="cm">--[[</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a><span class="cm">-- Checks that the code point is a number and in range.</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a><span class="cm">-- Does not check whether code point is an integer.</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a><span class="cm">-- Not used</span> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a><span class="cm">local function check_codepoint(funcName, argIdx, val)</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a><span class="cm"> require 'libraryUtil'.checkType(funcName, argIdx, val, 'number')</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a><span class="cm"> if codepoint < 0 or 0x10FFFF < codepoint then</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a><span class="cm"> errorf("Codepoint %04X out of range", codepoint)</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a><span class="cm"> end</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">--]]</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a><span class="c1">-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8</span> </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">lookup_name</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 class="c1">-- https://www.unicode.org/faq/private_use.html#nonchar4</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a> <span class="kr">if</span> <span class="mh">0xFDD0</span> <span class="o"><=</span> <span class="n">codepoint</span> <span class="ow">and</span> <span class="p">(</span><span class="n">codepoint</span> <span class="o"><=</span> <span class="mh">0xFDEF</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></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">>=</span> <span class="mh">0xFFFE</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s2">"<noncharacter-%04X>"</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-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="kr">if</span> <span class="n">name_range_cache</span> <span class="c1">-- Check if previously used "name hook" applies to this code point.</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> <span class="ow">and</span> <span class="n">codepoint</span> <span class="o">>=</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-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="ow">and</span> <span class="n">codepoint</span> <span class="o"><=</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-140"><a href="#L-140"><span class="linenos" data-line="140"></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-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="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-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="n">name_range_cache</span> <span class="o">=</span> <span class="n">range</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">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-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">data</span> <span class="o">=</span> <span class="n">loader</span><span class="p">[(</span><span class="s1">'names/%03X'</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-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></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-152"><a href="#L-152"><span class="linenos" data-line="152"></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-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="c1">-- Unassigned (Cn) consists of noncharacters and reserved characters.</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="c1">-- The character has been established not to be a noncharacter,</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="c1">-- and if it were assigned, its name would already been retrieved,</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> <span class="c1">-- so it must be reserved.</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="kr">else</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s2">"<reserved-%04X>"</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-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="kr">end</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a><span class="kr">end</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a><span class="cm">--[[</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a><span class="cm">-- No image data modules on Wikipedia yet.</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a><span class="cm">function p.lookup_image(codepoint)</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a><span class="cm"> local data = loader[('images/%03X'):format(codepoint / 0x1000)]</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a><span class="cm"> </span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a><span class="cm"> if data then</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a><span class="cm"> return data[codepoint]</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a><span class="cm"> end</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a><span class="cm">end</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a><span class="cm">--]]</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a><span class="kd">local</span> <span class="n">planes</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="p">[</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Basic Multilingual Plane"</span><span class="p">;</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> <span class="p">[</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Supplementary Multilingual Plane"</span><span class="p">;</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> <span class="p">[</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Supplementary Ideographic Plane"</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">3</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Tertiary Ideographic Plane"</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">14</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Supplementary Special-purpose Plane"</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">15</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Supplementary Private Use Area-A"</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">16</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Supplementary Private Use Area-B"</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><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a><span class="c1">-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a><span class="kd">local</span> <span class="n">blocks</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="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-188"><a href="#L-188"><span class="linenos" data-line="188"></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-189"><a href="#L-189"><span class="linenos" data-line="189"></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-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kr">if</span> <span class="n">data</span> <span class="kr">then</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="c1">-- Unpack doesn't work on tables loaded with mw.loadData.</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></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-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kr">end</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a><span class="kr">end</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a><span class="c1">-- An ipairs-type iterator generator for the list of blocks.</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></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-198"><a href="#L-198"><span class="linenos" data-line="198"></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-199"><a href="#L-199"><span class="linenos" data-line="199"></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-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a><span class="kr">end</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></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-203"><a href="#L-203"><span class="linenos" data-line="203"></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-204"><a href="#L-204"><span class="linenos" data-line="204"></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">"Plane %u"</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-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a><span class="kr">end</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></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-208"><a href="#L-208"><span class="linenos" data-line="208"></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-209"><a href="#L-209"><span class="linenos" data-line="209"></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-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></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-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="kr">else</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> <span class="kr">return</span> <span class="s2">"No Block"</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="kr">end</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a><span class="kr">end</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></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-218"><a href="#L-218"><span class="linenos" data-line="218"></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-219"><a href="#L-219"><span class="linenos" data-line="219"></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-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> <span class="kr">return</span> <span class="n">block</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="kr">end</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="kr">end</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a><span class="kr">end</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></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-226"><a href="#L-226"><span class="linenos" data-line="226"></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-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">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-229"><a href="#L-229"><span class="linenos" data-line="229"></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-230"><a href="#L-230"><span class="linenos" data-line="230"></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-231"><a href="#L-231"><span class="linenos" data-line="231"></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-232"><a href="#L-232"><span class="linenos" data-line="232"></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-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">0x007C</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">0x007D</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">0x180E</span><span class="p">)</span> <span class="c1">-- MONGOLIAN VOWEL SEPARATOR</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">0x2000</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">cp</span> <span class="o"><=</span> <span class="mh">0x200A</span><span class="p">))</span> <span class="c1">-- spaces in General Punctuation block</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">0xFFFD</span><span class="p">)</span> <span class="c1">-- REPLACEMENT CHARACTER</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a> <span class="kr">then</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="kr">end</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></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-243"><a href="#L-243"><span class="linenos" data-line="243"></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-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a> <span class="kr">end</span> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="kr">if</span> <span class="n">result</span> <span class="o">~=</span> <span class="s2">"space-separator"</span> <span class="kr">then</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> <span class="n">has_nonws</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a> <span class="kr">end</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="kr">end</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="kr">return</span> <span class="n">has_nonws</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="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-256"><a href="#L-256"><span class="linenos" data-line="256"></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-257"><a href="#L-257"><span class="linenos" data-line="257"></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-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="kr">end</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> <span class="kd">local</span> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></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-262"><a href="#L-262"><span class="linenos" data-line="262"></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-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="kr">if</span> <span class="n">i</span> <span class="o">>=</span> <span class="n">from</span> <span class="kr">then</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></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-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="kr">end</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a> <span class="kr">end</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></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-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><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></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-271"><a href="#L-271"><span class="linenos" data-line="271"></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"><</span> <span class="n">range2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a><span class="kr">end</span> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a><span class="c1">-- Creates a function to look up data in a module that contains "singles" (a</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a><span class="c1">-- code point-to-data map) and "ranges" (an array containing arrays that contain</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></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-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a><span class="c1">-- range).</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a><span class="c1">-- "loader" loads and returns the "singles" and "ranges" tables.</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a><span class="c1">-- "match_func" is passed the code point and either the data or the "dots", and</span> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a><span class="c1">-- generates the final result of the function.</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a><span class="c1">-- The varargs ("dots") describes the default data to be returned if there wasn't</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a><span class="c1">-- a match.</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a><span class="c1">-- In case the function is used more than once, "cache" saves ranges that have</span> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></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-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a><span class="c1">-- was no match.</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></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-287"><a href="#L-287"><span class="linenos" data-line="287"></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-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a> <span class="kd">local</span> <span class="n">cache</span> <span class="o">=</span> <span class="p">{}</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="n">singles</span><span class="p">,</span> <span class="n">ranges</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></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-292"><a href="#L-292"><span class="linenos" data-line="292"></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-293"><a href="#L-293"><span class="linenos" data-line="293"></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-294"><a href="#L-294"><span class="linenos" data-line="294"></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-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a> <span class="kr">end</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></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-298"><a href="#L-298"><span class="linenos" data-line="298"></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-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a> <span class="kr">end</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></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-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></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-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a> <span class="kr">end</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></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-307"><a href="#L-307"><span class="linenos" data-line="307"></span></a> <span class="kr">if</span> <span class="n">range</span> <span class="kr">then</span> </span><span id="L-308"><a href="#L-308"><span class="linenos" data-line="308"></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-309"><a href="#L-309"><span class="linenos" data-line="309"></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-310"><a href="#L-310"><span class="linenos" data-line="310"></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-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a> <span class="kr">end</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></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-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="kd">local</span> <span class="n">dots_range</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a> <span class="kr">if</span> <span class="n">codepoint</span> <span class="o">></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-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a> <span class="n">dots_range</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-317"><a href="#L-317"><span class="linenos" data-line="317"></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-318"><a href="#L-318"><span class="linenos" data-line="318"></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-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a> <span class="n">unpack</span><span class="p">(</span><span class="n">dots</span><span class="p">)</span> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a> <span class="p">}</span> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a> <span class="kr">else</span> <span class="c1">-- codepoint < range[index][1]</span> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="n">dots_range</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></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-324"><a href="#L-324"><span class="linenos" data-line="324"></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-325"><a href="#L-325"><span class="linenos" data-line="325"></span></a> <span class="n">unpack</span><span class="p">(</span><span class="n">dots</span><span class="p">)</span> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a> <span class="p">}</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a> <span class="kr">end</span> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></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-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> <span class="kr">end</span> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></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-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 class="kr">end</span> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></span></a> </span><span id="L-335"><a href="#L-335"><span class="linenos" data-line="335"></span></a><span class="c1">-- Get a code point's combining class value in [[Module:Unicode data/combining]],</span> </span><span id="L-336"><a href="#L-336"><span class="linenos" data-line="336"></span></a><span class="c1">-- and return whether this value is not zero. Zero is assigned as the default</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a><span class="c1">-- if the combining class value is not found in this data module.</span> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a><span class="c1">-- That is, return true if character is combining, or false if it is not.</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a><span class="c1">-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for</span> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a><span class="c1">-- more information.</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></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-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a> <span class="s2">"combining"</span><span class="p">,</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></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-344"><a href="#L-344"><span class="linenos" data-line="344"></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-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="mi">0</span><span class="p">)</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></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-349"><a href="#L-349"><span class="linenos" data-line="349"></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">"."</span><span class="p">,</span> </span><span id="L-350"><a href="#L-350"><span class="linenos" data-line="350"></span></a> <span class="kr">function</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></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-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="kr">return</span> <span class="s1">'◌'</span> <span class="o">..</span> <span class="n">char</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a> <span class="kr">end</span> </span><span id="L-354"><a href="#L-354"><span class="linenos" data-line="354"></span></a> <span class="kr">end</span><span class="p">))</span> </span><span id="L-355"><a href="#L-355"><span class="linenos" data-line="355"></span></a><span class="kr">end</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></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-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a> <span class="s2">"control"</span><span class="p">,</span> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></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-360"><a href="#L-360"><span class="linenos" data-line="360"></span></a> <span class="kr">return</span> <span class="n">ccc</span> <span class="ow">or</span> <span class="s2">"assigned"</span> </span><span id="L-361"><a href="#L-361"><span class="linenos" data-line="361"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-362"><a href="#L-362"><span class="linenos" data-line="362"></span></a> <span class="s2">"assigned"</span><span class="p">)</span> </span><span id="L-363"><a href="#L-363"><span class="linenos" data-line="363"></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-364"><a href="#L-364"><span class="linenos" data-line="364"></span></a> </span><span id="L-365"><a href="#L-365"><span class="linenos" data-line="365"></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-366"><a href="#L-366"><span class="linenos" data-line="366"></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">"unassigned"</span> </span><span id="L-367"><a href="#L-367"><span class="linenos" data-line="367"></span></a><span class="kr">end</span> </span><span id="L-368"><a href="#L-368"><span class="linenos" data-line="368"></span></a> </span><span id="L-369"><a href="#L-369"><span class="linenos" data-line="369"></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-370"><a href="#L-370"><span class="linenos" data-line="370"></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-371"><a href="#L-371"><span class="linenos" data-line="371"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="s2">"assigned"</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">"space-separator"</span><span class="p">),</span> <span class="n">result</span> </span><span id="L-372"><a href="#L-372"><span class="linenos" data-line="372"></span></a><span class="kr">end</span> </span><span id="L-373"><a href="#L-373"><span class="linenos" data-line="373"></span></a> </span><span id="L-374"><a href="#L-374"><span class="linenos" data-line="374"></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-375"><a href="#L-375"><span class="linenos" data-line="375"></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-376"><a href="#L-376"><span class="linenos" data-line="376"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="s2">"space-separator"</span><span class="p">),</span> <span class="n">result</span> </span><span id="L-377"><a href="#L-377"><span class="linenos" data-line="377"></span></a><span class="kr">end</span> </span><span id="L-378"><a href="#L-378"><span class="linenos" data-line="378"></span></a> </span><span id="L-379"><a href="#L-379"><span class="linenos" data-line="379"></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-380"><a href="#L-380"><span class="linenos" data-line="380"></span></a> <span class="s2">"category"</span><span class="p">,</span> </span><span id="L-381"><a href="#L-381"><span class="linenos" data-line="381"></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-382"><a href="#L-382"><span class="linenos" data-line="382"></span></a> <span class="kr">return</span> <span class="n">category</span> </span><span id="L-383"><a href="#L-383"><span class="linenos" data-line="383"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-384"><a href="#L-384"><span class="linenos" data-line="384"></span></a> <span class="s2">"Cn"</span><span class="p">)</span> </span><span id="L-385"><a href="#L-385"><span class="linenos" data-line="385"></span></a> </span><span id="L-386"><a href="#L-386"><span class="linenos" data-line="386"></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-387"><a href="#L-387"><span class="linenos" data-line="387"></span></a> <span class="s2">"scripts"</span><span class="p">,</span> </span><span id="L-388"><a href="#L-388"><span class="linenos" data-line="388"></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-389"><a href="#L-389"><span class="linenos" data-line="389"></span></a> <span class="kr">return</span> <span class="n">script_code</span> <span class="ow">or</span> <span class="s1">'Zzzz'</span> </span><span id="L-390"><a href="#L-390"><span class="linenos" data-line="390"></span></a> <span class="kr">end</span><span class="p">,</span> </span><span id="L-391"><a href="#L-391"><span class="linenos" data-line="391"></span></a> <span class="s2">"Zzzz"</span><span class="p">)</span> </span><span id="L-392"><a href="#L-392"><span class="linenos" data-line="392"></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-393"><a href="#L-393"><span class="linenos" data-line="393"></span></a> </span><span id="L-394"><a href="#L-394"><span class="linenos" data-line="394"></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-395"><a href="#L-395"><span class="linenos" data-line="395"></span></a> <span class="c1">-- Check type of argument, because mw.text.decode coerces numbers to strings!</span> </span><span id="L-396"><a href="#L-396"><span class="linenos" data-line="396"></span></a> <span class="nb">require</span> <span class="s2">"libraryUtil"</span><span class="p">.</span><span class="n">checkType</span><span class="p">(</span><span class="s2">"get_best_script"</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">"string"</span><span class="p">)</span> </span><span id="L-397"><a href="#L-397"><span class="linenos" data-line="397"></span></a> </span><span id="L-398"><a href="#L-398"><span class="linenos" data-line="398"></span></a> <span class="c1">-- Convert HTML character references (including named character references,</span> </span><span id="L-399"><a href="#L-399"><span class="linenos" data-line="399"></span></a> <span class="c1">-- or character entities) to characters.</span> </span><span id="L-400"><a href="#L-400"><span class="linenos" data-line="400"></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-401"><a href="#L-401"><span class="linenos" data-line="401"></span></a> </span><span id="L-402"><a href="#L-402"><span class="linenos" data-line="402"></span></a> <span class="kd">local</span> <span class="n">scripts</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-403"><a href="#L-403"><span class="linenos" data-line="403"></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-404"><a href="#L-404"><span class="linenos" data-line="404"></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-405"><a href="#L-405"><span class="linenos" data-line="405"></span></a> </span><span id="L-406"><a href="#L-406"><span class="linenos" data-line="406"></span></a> <span class="c1">-- Ignore "Inherited", "Undetermined", or "Uncoded" scripts.</span> </span><span id="L-407"><a href="#L-407"><span class="linenos" data-line="407"></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">"Zyyy"</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">"Zinh"</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">"Zzzz"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-408"><a href="#L-408"><span class="linenos" data-line="408"></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-409"><a href="#L-409"><span class="linenos" data-line="409"></span></a> <span class="kr">end</span> </span><span id="L-410"><a href="#L-410"><span class="linenos" data-line="410"></span></a> <span class="kr">end</span> </span><span id="L-411"><a href="#L-411"><span class="linenos" data-line="411"></span></a> </span><span id="L-412"><a href="#L-412"><span class="linenos" data-line="412"></span></a> <span class="c1">-- If scripts does not contain two or more keys,</span> </span><span id="L-413"><a href="#L-413"><span class="linenos" data-line="413"></span></a> <span class="c1">-- return first and only key (script code) in table.</span> </span><span id="L-414"><a href="#L-414"><span class="linenos" data-line="414"></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-415"><a href="#L-415"><span class="linenos" data-line="415"></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-416"><a href="#L-416"><span class="linenos" data-line="416"></span></a> <span class="kr">end</span> <span class="c1">-- else return majority script, or else "Zzzz"?</span> </span><span id="L-417"><a href="#L-417"><span class="linenos" data-line="417"></span></a><span class="kr">end</span> </span><span id="L-418"><a href="#L-418"><span class="linenos" data-line="418"></span></a> </span><span id="L-419"><a href="#L-419"><span class="linenos" data-line="419"></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-420"><a href="#L-420"><span class="linenos" data-line="420"></span></a> <span class="nb">require</span> <span class="s2">"libraryUtil"</span><span class="p">.</span><span class="n">checkType</span><span class="p">(</span><span class="s2">"get_best_script"</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">"string"</span><span class="p">)</span> </span><span id="L-421"><a href="#L-421"><span class="linenos" data-line="421"></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-422"><a href="#L-422"><span class="linenos" data-line="422"></span></a> </span><span id="L-423"><a href="#L-423"><span class="linenos" data-line="423"></span></a> <span class="c1">-- Search for the leading bytes that introduce the UTF-8 encoding of the</span> </span><span id="L-424"><a href="#L-424"><span class="linenos" data-line="424"></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-425"><a href="#L-425"><span class="linenos" data-line="425"></span></a> <span class="c1">-- one Latin-script character, the string counts as Latin, because the rest</span> </span><span id="L-426"><a href="#L-426"><span class="linenos" data-line="426"></span></a> <span class="c1">-- of the characters can only be Zyyy, Zinh, and Zzzz.</span> </span><span id="L-427"><a href="#L-427"><span class="linenos" data-line="427"></span></a> <span class="c1">-- The only scripts found below U+0370 (the first code point of the Greek</span> </span><span id="L-428"><a href="#L-428"><span class="linenos" data-line="428"></span></a> <span class="c1">-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.</span> </span><span id="L-429"><a href="#L-429"><span class="linenos" data-line="429"></span></a> <span class="c1">-- See the codepage in the [[UTF-8]] article.</span> </span><span id="L-430"><a href="#L-430"><span class="linenos" data-line="430"></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">"[</span><span class="se">\205</span><span class="s2">-</span><span class="se">\244</span><span class="s2">]"</span> <span class="kr">then</span> </span><span id="L-431"><a href="#L-431"><span class="linenos" data-line="431"></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-432"><a href="#L-432"><span class="linenos" data-line="432"></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">"Latn"</span> <span class="kr">then</span> </span><span id="L-433"><a href="#L-433"><span class="linenos" data-line="433"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-434"><a href="#L-434"><span class="linenos" data-line="434"></span></a> <span class="kr">end</span> </span><span id="L-435"><a href="#L-435"><span class="linenos" data-line="435"></span></a> <span class="kr">end</span> </span><span id="L-436"><a href="#L-436"><span class="linenos" data-line="436"></span></a> <span class="kr">end</span> </span><span id="L-437"><a href="#L-437"><span class="linenos" data-line="437"></span></a> </span><span id="L-438"><a href="#L-438"><span class="linenos" data-line="438"></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-439"><a href="#L-439"><span class="linenos" data-line="439"></span></a> </span><span id="L-440"><a href="#L-440"><span class="linenos" data-line="440"></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-441"><a href="#L-441"><span class="linenos" data-line="441"></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-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">if</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">"Latn"</span> <span class="kr">then</span> </span><span id="L-444"><a href="#L-444"><span class="linenos" data-line="444"></span></a> <span class="n">Latn</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-445"><a href="#L-445"><span class="linenos" data-line="445"></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">"Zyyy"</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">"Zinh"</span> </span><span id="L-446"><a href="#L-446"><span class="linenos" data-line="446"></span></a> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">"Zzzz"</span><span class="p">)</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="kr">return</span> <span class="kc">false</span> </span><span id="L-448"><a href="#L-448"><span class="linenos" data-line="448"></span></a> <span class="kr">end</span> </span><span id="L-449"><a href="#L-449"><span class="linenos" data-line="449"></span></a> <span class="kr">end</span> </span><span id="L-450"><a href="#L-450"><span class="linenos" data-line="450"></span></a> </span><span id="L-451"><a href="#L-451"><span class="linenos" data-line="451"></span></a> <span class="kr">return</span> <span class="n">Latn</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="c1">-- Checks that a string contains only characters belonging to right-to-left</span> </span><span id="L-455"><a href="#L-455"><span class="linenos" data-line="455"></span></a><span class="c1">-- scripts, or characters of ignorable scripts.</span> </span><span id="L-456"><a href="#L-456"><span class="linenos" data-line="456"></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-457"><a href="#L-457"><span class="linenos" data-line="457"></span></a> <span class="nb">require</span> <span class="s2">"libraryUtil"</span><span class="p">.</span><span class="n">checkType</span><span class="p">(</span><span class="s2">"get_best_script"</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">"string"</span><span class="p">)</span> </span><span id="L-458"><a href="#L-458"><span class="linenos" data-line="458"></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-459"><a href="#L-459"><span class="linenos" data-line="459"></span></a> </span><span id="L-460"><a href="#L-460"><span class="linenos" data-line="460"></span></a> <span class="c1">-- Search for the leading bytes that introduce the UTF-8 encoding of the</span> </span><span id="L-461"><a href="#L-461"><span class="linenos" data-line="461"></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-462"><a href="#L-462"><span class="linenos" data-line="462"></span></a> <span class="c1">-- have characters from a left-to-right script, because the first code point</span> </span><span id="L-463"><a href="#L-463"><span class="linenos" data-line="463"></span></a> <span class="c1">-- in a right-to-left script is U+0591, in the Hebrew block.</span> </span><span id="L-464"><a href="#L-464"><span class="linenos" data-line="464"></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">"[</span><span class="se">\214</span><span class="s2">-</span><span class="se">\244</span><span class="s2">]"</span> <span class="kr">then</span> </span><span id="L-465"><a href="#L-465"><span class="linenos" data-line="465"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-466"><a href="#L-466"><span class="linenos" data-line="466"></span></a> <span class="kr">end</span> </span><span id="L-467"><a href="#L-467"><span class="linenos" data-line="467"></span></a> </span><span id="L-468"><a href="#L-468"><span class="linenos" data-line="468"></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-469"><a href="#L-469"><span class="linenos" data-line="469"></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-470"><a href="#L-470"><span class="linenos" data-line="470"></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-471"><a href="#L-471"><span class="linenos" data-line="471"></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-472"><a href="#L-472"><span class="linenos" data-line="472"></span></a> </span><span id="L-473"><a href="#L-473"><span class="linenos" data-line="473"></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-474"><a href="#L-474"><span class="linenos" data-line="474"></span></a> <span class="n">result</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-475"><a href="#L-475"><span class="linenos" data-line="475"></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">"Zyyy"</span> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">"Zinh"</span> </span><span id="L-476"><a href="#L-476"><span class="linenos" data-line="476"></span></a> <span class="ow">or</span> <span class="n">script</span> <span class="o">==</span> <span class="s2">"Zzzz"</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="kr">return</span> <span class="kc">false</span> </span><span id="L-478"><a href="#L-478"><span class="linenos" data-line="478"></span></a> <span class="kr">end</span> </span><span id="L-479"><a href="#L-479"><span class="linenos" data-line="479"></span></a> <span class="kr">end</span> </span><span id="L-480"><a href="#L-480"><span class="linenos" data-line="480"></span></a> </span><span id="L-481"><a href="#L-481"><span class="linenos" data-line="481"></span></a> <span class="kr">return</span> <span class="n">result</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><span id="L-485"><a href="#L-485"><span class="linenos" data-line="485"></span></a><span class="cm">--[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------</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 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-488"><a href="#L-488"><span class="linenos" data-line="488"></span></a><span class="cm">that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text</span> </span><span id="L-489"><a href="#L-489"><span class="linenos" data-line="489"></span></a><span class="cm">has <br /> tags.</span> </span><span id="L-490"><a href="#L-490"><span class="linenos" data-line="490"></span></a> </span><span id="L-491"><a href="#L-491"><span class="linenos" data-line="491"></span></a><span class="cm">]]</span> </span><span id="L-492"><a href="#L-492"><span class="linenos" data-line="492"></span></a> </span><span id="L-493"><a href="#L-493"><span class="linenos" data-line="493"></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-494"><a href="#L-494"><span class="linenos" data-line="494"></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-495"><a href="#L-495"><span class="linenos" data-line="495"></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">'%b<>'</span><span class="p">,</span> <span class="s1">''</span><span class="p">);</span> <span class="c1">-- strip any html and html-like tags</span> </span><span id="L-496"><a href="#L-496"><span class="linenos" data-line="496"></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-497"><a href="#L-497"><span class="linenos" data-line="497"></span></a><span class="kr">end</span> </span><span id="L-498"><a href="#L-498"><span class="linenos" data-line="498"></span></a> </span><span id="L-499"><a href="#L-499"><span class="linenos" data-line="499"></span></a> </span><span id="L-500"><a href="#L-500"><span class="linenos" data-line="500"></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-501"><a href="#L-501"><span class="linenos" data-line="501"></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-502"><a href="#L-502"><span class="linenos" data-line="502"></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">"Parameter %s is required"</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-503"><a href="#L-503"><span class="linenos" data-line="503"></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-504"><a href="#L-504"><span class="linenos" data-line="504"></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">"Parameter %s is not a code point in hexadecimal base"</span><span class="p">,</span> </span><span id="L-505"><a href="#L-505"><span class="linenos" data-line="505"></span></a> <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="kr">if</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">0</span> <span class="o"><=</span> <span class="n">codepoint</span> <span class="ow">and</span> <span class="n">codepoint</span> <span class="o"><=</span> <span class="mh">0x10FFFF</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-507"><a href="#L-507"><span class="linenos" data-line="507"></span></a> <span class="n">errorf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"code point in parameter %s out of range"</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-508"><a href="#L-508"><span class="linenos" data-line="508"></span></a> <span class="kr">end</span> </span><span id="L-509"><a href="#L-509"><span class="linenos" data-line="509"></span></a> <span class="kr">return</span> <span class="n">codepoint</span> </span><span id="L-510"><a href="#L-510"><span class="linenos" data-line="510"></span></a><span class="kr">end</span> </span><span id="L-511"><a href="#L-511"><span class="linenos" data-line="511"></span></a> </span><span id="L-512"><a href="#L-512"><span class="linenos" data-line="512"></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-513"><a href="#L-513"><span class="linenos" data-line="513"></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-514"><a href="#L-514"><span class="linenos" data-line="514"></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">"Parameter %s is required"</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-515"><a href="#L-515"><span class="linenos" data-line="515"></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-516"><a href="#L-516"><span class="linenos" data-line="516"></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-517"><a href="#L-517"><span class="linenos" data-line="517"></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-518"><a href="#L-518"><span class="linenos" data-line="518"></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">"There is no function '%s'"</span><span class="p">,</span> <span class="n">func_name</span><span class="p">)</span> </span><span id="L-519"><a href="#L-519"><span class="linenos" data-line="519"></span></a> <span class="kr">return</span> <span class="n">func</span> </span><span id="L-520"><a href="#L-520"><span class="linenos" data-line="520"></span></a><span class="kr">end</span> </span><span id="L-521"><a href="#L-521"><span class="linenos" data-line="521"></span></a> </span><span id="L-522"><a href="#L-522"><span class="linenos" data-line="522"></span></a><span class="c1">-- This function allows any of the "lookup" functions to be invoked. The first</span> </span><span id="L-523"><a href="#L-523"><span class="linenos" data-line="523"></span></a><span class="c1">-- parameter is the word after "lookup_"; the second parameter is the code point</span> </span><span id="L-524"><a href="#L-524"><span class="linenos" data-line="524"></span></a><span class="c1">-- in hexadecimal base.</span> </span><span id="L-525"><a href="#L-525"><span class="linenos" data-line="525"></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-526"><a href="#L-526"><span class="linenos" data-line="526"></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">"lookup_"</span><span class="p">)</span> </span><span id="L-527"><a href="#L-527"><span class="linenos" data-line="527"></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-528"><a href="#L-528"><span class="linenos" data-line="528"></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-529"><a href="#L-529"><span class="linenos" data-line="529"></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-530"><a href="#L-530"><span class="linenos" data-line="530"></span></a> <span class="c1">-- Prevent code point labels such as <control-0000> from being</span> </span><span id="L-531"><a href="#L-531"><span class="linenos" data-line="531"></span></a> <span class="c1">-- interpreted as HTML tags.</span> </span><span id="L-532"><a href="#L-532"><span class="linenos" data-line="532"></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">"<"</span><span class="p">,</span> <span class="s2">"&lt;"</span><span class="p">)</span> </span><span id="L-533"><a href="#L-533"><span class="linenos" data-line="533"></span></a> <span class="kr">end</span> </span><span id="L-534"><a href="#L-534"><span class="linenos" data-line="534"></span></a> <span class="kr">return</span> <span class="n">result</span> </span><span id="L-535"><a href="#L-535"><span class="linenos" data-line="535"></span></a><span class="kr">end</span> </span><span id="L-536"><a href="#L-536"><span class="linenos" data-line="536"></span></a> </span><span id="L-537"><a href="#L-537"><span class="linenos" data-line="537"></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-538"><a href="#L-538"><span class="linenos" data-line="538"></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">"is_"</span><span class="p">)</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="c1">-- is_Latin and is_valid_pagename take strings.</span> </span><span id="L-541"><a href="#L-541"><span class="linenos" data-line="541"></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-542"><a href="#L-542"><span class="linenos" data-line="542"></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-543"><a href="#L-543"><span class="linenos" data-line="543"></span></a> <span class="kr">else</span> <span class="c1">-- The rest take code points.</span> </span><span id="L-544"><a href="#L-544"><span class="linenos" data-line="544"></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-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">codepoint</span><span class="p">))</span> <span class="c1">-- Adjust to one result.</span> </span><span id="L-546"><a href="#L-546"><span class="linenos" data-line="546"></span></a> <span class="kr">end</span> </span><span id="L-547"><a href="#L-547"><span class="linenos" data-line="547"></span></a><span class="kr">end</span> </span><span id="L-548"><a href="#L-548"><span class="linenos" data-line="548"></span></a> </span><span id="L-549"><a href="#L-549"><span class="linenos" data-line="549"></span></a><span class="kr">return</span> <span class="n">p</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐657b46f875‐jfj9g Cached time: 20250309223629 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.342 seconds Real time usage: 0.567 seconds Preprocessor visited node count: 346/1000000 Post‐expand include size: 112367/2097152 bytes Template argument size: 248/2097152 bytes Highest expansion depth: 8/100 Expensive parser function count: 280/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 1786/5000000 bytes Lua time usage: 0.283/10.000 seconds Lua memory usage: 19037875/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 447.098 1 Module:Unicode_data/doc 100.00% 447.098 1 -total 5.74% 25.673 1 Template:NoteTA/MediaWiki 5.29% 23.669 1 Template:NoteTA 0.80% 3.579 4 Template:Code 0.45% 2.014 2 Template:Tnull --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&type=1x1&usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">检索自“<a dir="ltr" href="https://zh.wikipedia.org/w/index.php?title=Module:Unicode_data&oldid=83158595">https://zh.wikipedia.org/w/index.php?title=Module:Unicode_data&oldid=83158595</a>”</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:%E9%A1%B5%E9%9D%A2%E5%88%86%E7%B1%BB" title="Special:页面分类">分类</a>:<ul><li><a href="/wiki/Category:Unicode%E6%A8%A1%E6%9D%BF" title="Category:Unicode模板">Unicode模板</a></li><li><a href="/wiki/Category:%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E5%85%83%E6%A8%A1%E5%9D%97" title="Category:维基百科元模块">维基百科元模块</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">隐藏分类:<ul><li><a href="/wiki/Category:%E8%A2%AB%E4%BF%9D%E6%8A%A4%E7%9A%84%E6%A8%A1%E5%9D%97" title="Category:被保护的模块">被保护的模块</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"> 本页面最后修订于2024年6月24日 (星期一) 20:51。</li> <li id="footer-info-copyright">本站的全部文字在<a href="/wiki/Wikipedia:CC_BY-SA_4.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" title="Wikipedia:CC BY-SA 4.0协议文本">知识共享 署名-相同方式共享 4.0协议</a>之条款下提供,附加条款亦可能应用。(请参阅<a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">使用条款</a>)<br /> Wikipedia®和维基百科标志是<a rel="nofollow" class="external text" href="https://wikimediafoundation.org/zh">维基媒体基金会</a>的注册商标;维基™是维基媒体基金会的商标。<br /> 维基媒体基金会是按美国国內稅收法501(c)(3)登记的<a class="external text" href="https://donate.wikimedia.org/wiki/Special:MyLanguage/Tax_deductibility">非营利慈善机构</a>。<br /></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">隐私政策</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:%E5%85%B3%E4%BA%8E">关于维基百科</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E">免责声明</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">行为准则</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">开发者</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/zh.wikipedia.org">统计</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie声明</a></li> <li id="footer-places-mobileview"><a href="//zh.m.wikipedia.org/w/index.php?title=Module:Unicode_data&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">手机版视图</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"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></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"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" lang="en" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>搜索</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div 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="搜索维基百科"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:搜索"> </div> <button class="cdx-button cdx-search-input__end-button">搜索</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="目录" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="开关目录" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-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">开关目录</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-namespace">模組</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Unicode data</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>120种语言</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>添加话题</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="mw-portlet mw-portlet-dock-bottom emptyPortlet" id="p-dock-bottom"> <ul> </ul> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-657b46f875-jfj9g","wgBackendResponseTime":950,"wgPageParseReport":{"limitreport":{"cputime":"0.342","walltime":"0.567","ppvisitednodes":{"value":346,"limit":1000000},"postexpandincludesize":{"value":112367,"limit":2097152},"templateargumentsize":{"value":248,"limit":2097152},"expansiondepth":{"value":8,"limit":100},"expensivefunctioncount":{"value":280,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":1786,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 447.098 1 Module:Unicode_data/doc","100.00% 447.098 1 -total"," 5.74% 25.673 1 Template:NoteTA/MediaWiki"," 5.29% 23.669 1 Template:NoteTA"," 0.80% 3.579 4 Template:Code"," 0.45% 2.014 2 Template:Tnull"]},"scribunto":{"limitreport-timeusage":{"value":"0.283","limit":"10.000"},"limitreport-memusage":{"value":19037875,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-657b46f875-jfj9g","timestamp":"20250309223629","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>