Wiktionary
thwiktionary
https://th.wiktionary.org/wiki/%E0%B8%A7%E0%B8%B4%E0%B8%81%E0%B8%B4%E0%B8%9E%E0%B8%88%E0%B8%99%E0%B8%B2%E0%B8%99%E0%B8%B8%E0%B8%81%E0%B8%A3%E0%B8%A1:%E0%B8%AB%E0%B8%99%E0%B9%89%E0%B8%B2%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81
MediaWiki 1.43.0-wmf.2
case-sensitive
สื่อ
พิเศษ
พูดคุย
ผู้ใช้
คุยกับผู้ใช้
วิกิพจนานุกรม
คุยเรื่องวิกิพจนานุกรม
ไฟล์
คุยเรื่องไฟล์
มีเดียวิกิ
คุยเรื่องมีเดียวิกิ
แม่แบบ
คุยเรื่องแม่แบบ
วิธีใช้
คุยเรื่องวิธีใช้
หมวดหมู่
คุยเรื่องหมวดหมู่
ภาคผนวก
คุยเรื่องภาคผนวก
ดัชนี
คุยเรื่องดัชนี
สัมผัส
คุยเรื่องสัมผัส
อรรถาภิธาน
คุยเรื่องอรรถาภิธาน
TimedText
TimedText talk
มอดูล
คุยเรื่องมอดูล
วิกิพจนานุกรม:สภากาแฟ
4
1224
1908580
1907572
2024-04-25T20:21:12Z
MediaWiki message delivery
3703
/* โหวตตอนนี้เพื่อเลือกสมาชิกของคณะกรรมการประสานงานหลักจรรยาบรรณสากลกลุ่มแรก */ ส่วนใหม่
wikitext
text/x-wiki
__NEWSECTIONLINK__
{{กล่องกรุ}}
[[Category:วิกิพจนานุกรม|สภากาแฟ]]
* '''th:''' '''สภากาแฟ''' ในวิกิพจนานุกรม เป็นหน้าสำหรับ อภิปรายและศึกษา นโยบายการใช้งานในวิกิพจนานุกรม เพื่อการเขียนที่เป็นรูปแบบในทางเดียวกัน
* '''en:''' This is the community discussion page. See also [[Wiktionary:บอต|requests for bot flags]].
== เปลี่ยนชื่อ ข้ามภาษา (Translingual) → ภาษาร่วม ==
เนื่องด้วย Translingual เราแปลเป็น "ข้ามภาษา" ส่วนภาษาอื่น ๆ ก็แปลโดยใส่คำว่า "ภาษา" ไว้ข้างหน้า ซึ่งไม่เหมือนกับ enwikt ที่เขาใช้แค่คำเดียว ทำให้ตรรกะที่ใช้เขียนมอดูลของเขาง่ายกว่า ในขณะที่เราต้องมาพิจารณาว่าเป็น "ข้ามภาษา" หรือไม่ ระยะหลังมานี้ตรรกะมอดูลซับซ้อนขึ้น (และอัปเดตยากขึ้น) พ่วงกันหลายชั้น ทำให้ตรรกะเดิมที่เราเขียนใช้งานไม่ได้ ตอนนี้หมวดหมู่ "ข้ามภาษา" เกิดความผิดพลาดทั้งหมด ต้องเปลี่ยนชื่อเป็นอย่างอื่น เพราะไม่เข้ากับรูปแบบการตั้งชื่อหมวดหมู่ "ภาษาxxx" ผมจึงไปค้นคว้าว่าควรจะใช้ชื่ออะไรดี จะเปลี่ยนเป็น ภาษาข้าม มันก็อ่านไม่เข้าใจ จึงคิดว่าน่าจะใช้คำใกล้เคียงแทน ผมมีคำหนึ่งที่อยากเสนอคือ "ภาษาร่วม" (เอามาจาก ศบญ. common language) ซึ่งหมายความว่า ใช้ร่วมกันหลายภาษา และคงไม่มีภาษาใดที่ชื่อ "ร่วม" การเปลี่ยนชื่อจะทำให้กระทบต่อบทความจำนวนไม่ต่ำกว่า 1 แสนหน้า (แต่ใช้บอตได้) ท่านคิดเห็นว่าอย่างไร [[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 09:08, 4 ธันวาคม 2566 (+07)
เจอเพิ่มเติมว่า "ข้ามภาษา" conflict กับหมวดหมู่ "คำประสมตรงข้ามภาษาxxx" เพราะมีคำว่า "ข้ามภาษา" อยู่ตรงกลาง จึงสมควรเปลี่ยนอย่างยิ่ง (คำประสมตรงข้าม คือคำประสมที่คำเดิมมีความหมายตรงข้ามกัน) --[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 11:43, 19 ธันวาคม 2566 (+07)
ถ้าไม่มีใครแสดงความเห็นอะไร <del>ปีหน้าจะเริ่มเปลี่ยนชื่อเลย</del> ทยอยทำเลยดีกว่า --[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 17:49, 18 ธันวาคม 2566 (+07)
::แล้ว "ศัพท์ข้ามภาษา" ล่ะครับ อ่านแล้วรู้สึกอย่างไร --[[ผู้ใช้:Alifshinobi|A.S.]] ([[คุยกับผู้ใช้:Alifshinobi|คุย]]) 19:22, 2 มกราคม 2567 (+07)
:::ก็ไม่รู้สึกอะไรครับ "ศัพท์ข้ามภาษา" ผมก็แปลโดยเอาชื่อเดิมมา ตอนเริ่มจัดระเบียบใหม่ ๆ ซึ่งยังไม่มีสคริปต์อัตโนมัติ // Translingual terms ก็เปลี่ยนเป็น "ศัพท์ภาษาร่วม" เพื่อให้ pattern เหมือนกัน เพื่อประโยชน์ในทาง coding--[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 20:25, 2 มกราคม 2567 (+07)
== Do you use Wikidata in Wikimedia sibling projects? Tell us about your experiences ==
<div lang="en" dir="ltr" class="mw-content-ltr">
''Note: Apologies for cross-posting and sending in English.''
Hello, the '''[[m:WD4WMP|Wikidata for Wikimedia Projects]]''' team at Wikimedia Deutschland would like to hear about your experiences using Wikidata in the sibling projects. If you are interested in sharing your opinion and insights, please consider signing up for an interview with us in this '''[https://wikimedia.sslsurvey.de/Wikidata-for-Wikimedia-Interviews Registration form]'''.<br>
''Currently, we are only able to conduct interviews in English.''
The front page of the form has more details about what the conversation will be like, including how we would '''compensate''' you for your time.
For more information, visit our ''[[m:WD4WMP/AddIssue|project issue page]]'' where you can also share your experiences in written form, without an interview.<br>We look forward to speaking with you, [[m:User:Danny Benjafield (WMDE)|Danny Benjafield (WMDE)]] ([[m:User talk:Danny Benjafield (WMDE)|talk]]) 08:53, 5 January 2024 (UTC)
</div>
<!-- Message sent by User:Danny Benjafield (WMDE)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/WD4WMP/ScreenerInvite&oldid=26027495 -->
== ลงคะแนนเสียงกฎบัตรกฎบัตรคณะกรรมการประสานงานหลักปฏิบัติสากล ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/wiki/Universal Code of Conduct/Coordinating Committee/Charter/Announcement - voting opens|คุณสามารถค้นหาข้อความนี้แปลเป็นภาษาเพิ่มเติมได้ใน Meta-wiki]] [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:wiki/Universal Code of Conduct/Coordinating Committee/Charter/Announcement - voting opens}}&language=&action=page&filter= {{int:please-translate}}]''
สวัสดีทุกคน,
ฉันติดต่อคุณวันนี้เพื่อประกาศว่าช่วงการลงคะแนนเสียงสำหรับกฎบัตร [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|คณะกรรมการประสานงานหลักปฏิบัติสากล]] (U4C) เปิดให้บริการแล้ว สมาชิกชุมชนสามารถ [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Charter/Voter_information|ลงคะแนนและแสดงความคิดเห็นเกี่ยวกับกฎบัตรผ่าน SecurePoll]] ได้ตั้งแต่วันนี้จนถึง '''2 กุมภาพันธ์ 2024''' บรรดาผู้ที่แสดงความคิดเห็นของคุณในระหว่างการพัฒนา [[foundation:Special:MyLanguage/Policy:Universal_Code_of_Conduct/Enforcement_guidelines|แนวทางการบังคับใช้ UCoC]] จะพบว่าคุ้นเคยกับกระบวนการนี้
[[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|กฎบัตรคณะกรรมการประสานงานหลักปฏิบัติสากลด้านจรรยาบรรณสากลฉบับปัจจุบัน]] อยู่ใน Meta-wiki พร้อมคำแปล
อ่านกฎบัตร ไปลงคะแนนเสียง และแบ่งปันบันทึกนี้กับผู้อื่นในชุมชนของคุณ ฉันสามารถพูดได้อย่างมั่นใจว่าคณะกรรมการอาคาร U4C รอคอยการมีส่วนร่วมของคุณ
ในนามของทีมโครงการ UCoC<section end="announcement-content" />
[[m:User:RamzyM (WMF)|RamzyM (WMF)]] 01:09, 20 มกราคม 2567 (+07)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=25853527 -->
== วันสุดท้ายของการลงคะแนนเสียงกฎบัตรสำหรับคณะกรรมการประสานงานหลักปฏิบัติสากล ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/wiki/Universal Code of Conduct/Coordinating Committee/Charter/Announcement - voting reminder|คุณสามารถค้นหาข้อความนี้แปลเป็นภาษาเพิ่มเติมได้ใน Meta-wiki]] [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:wiki/Universal Code of Conduct/Coordinating Committee/Charter/Announcement - voting reminder}}&language=&action=page&filter= {{int:please-translate}}]''
สวัสดีทุกคน,
ฉันติดต่อคุณวันนี้เพื่อเตือนคุณว่าระยะเวลาการลงคะแนนเสียงสำหรับกฎบัตร [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|คณะกรรมการประสานงานหลักปฏิบัติสากล]] (U4C) จะปิดในวันที่ '''2 กุมภาพันธ์''' สมาชิกชุมชนสามารถ [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Charter/Voter_information|ลงคะแนนและแสดงความคิดเห็นเกี่ยวกับกฎบัตรผ่าน SecurePoll]] ได้ตั้งแต่วันนี้จนถึง 2 กุมภาพันธ์ สำหรับผู้ที่แสดงความคิดเห็นของคุณในระหว่างการพัฒนา [[foundation:Special:MyLanguage/Policy:Universal_Code_of_Conduct/Enforcement_guidelines|แนวทางการบังคับใช้ UCoC]] จะพบว่าคุ้นเคยกระบวนการนี้
[[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|กฎบัตรคณะกรรมการประสานงานหลักปฏิบัติสากลด้านจรรยาบรรณสากลฉบับปัจจุบัน]] อยู่ใน Meta-wiki พร้อมคำแปล
อ่านกฎบัตร ไปลงคะแนนเสียง และแบ่งปันบันทึกนี้กับผู้อื่นในชุมชนของคุณ ฉันสามารถพูดได้อย่างมั่นใจว่าคณะกรรมการอาคาร U4C รอคอยการมีส่วนร่วมของคุณ
ขอแสดงความนับถือ,<section end="announcement-content" />
[[m:User:RamzyM (WMF)|RamzyM (WMF)]] 00:01, 1 กุมภาพันธ์ 2567 (+07)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=25853527 -->
== <span lang="en" dir="ltr" class="mw-content-ltr">Announcing the results of the UCoC Coordinating Committee Charter ratification vote</span> ==
<div lang="en" dir="ltr" class="mw-content-ltr">
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/wiki/Universal Code of Conduct/Coordinating Committee/Charter/Announcement - results|You can find this message translated into additional languages on Meta-wiki.]] [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:wiki/Universal Code of Conduct/Coordinating Committee/Charter/Announcement - results}}&language=&action=page&filter= {{int:please-translate}}]''
Dear all,
Thank you everyone for following the progress of the Universal Code of Conduct. I am writing to you today to announce the outcome of the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Charter/Voter_information|ratification vote]] on the [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|Universal Code of Conduct Coordinating Committee Charter]]. 1746 contributors voted in this ratification vote with 1249 voters supporting the Charter and 420 voters not. The ratification vote process allowed for voters to provide comments about the Charter.
A report of voting statistics and a summary of voter comments will be published on Meta-wiki in the coming weeks.
Please look forward to hearing about the next steps soon.
On behalf of the UCoC Project team,<section end="announcement-content" />
</div>
[[m:User:RamzyM (WMF)|RamzyM (WMF)]] 01:24, 13 กุมภาพันธ์ 2567 (+07)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=26160150 -->
== Report of the U4C Charter ratification and U4C Call for Candidates now available ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – call for candidates| คุณสามารถค้นหาข้อความนี้แปลเป็นภาษาเพิ่มเติมได้ในเมตาวิกิ]] [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – call for candidates}}&language=&action=page&filter= {{int:please-translate}}]''
สวัสดีทุกท่าน,
วันนี้ข้าพเจ้าเขียนถึงท่านพร้อมข้อมูลสำคัญสองชิ้น ประการแรก [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter/Vote results|รายงานความคิดเห็นจากการให้สัตยาบันกฎบัตรของคณะกรรมการประสานงานหลักปฏิบัติสากล (U4C)]] พร้อมให้บริการแล้ว ประการที่สอง เปิดรับสมัครผู้สมัคร U4C ตั้งแต่วันนี้จนถึงวันที่ 1 เมษายน 2024
[[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Universal Code of Conduct Coordinating Committee]] (U4C) เป็นกลุ่มระดับโลกที่อุทิศตนเพื่อให้การดำเนินงาน UCoC เป็นไปอย่างเท่าเทียมกันและสม่ำเสมอ สมาชิกชุมชนได้รับเชิญให้ส่งใบสมัครสำหรับ U4C สำหรับข้อมูลเพิ่มเติมและความรับผิดชอบของ U4C โปรด [[m:พิเศษ:ภาษาของฉัน/หลักปฏิบัติสากล/คณะกรรมการประสานงาน/กฎบัตร|ทบทวนกฎบัตร U4C]]
ตามกฎบัตร U4C มีที่นั่ง 16 ที่นั่ง โดยเป็นที่นั่งชุมชนขนาดใหญ่ 8 ที่นั่ง และที่นั่งระดับภูมิภาค 8 ที่นั่งเพื่อให้แน่ใจว่า U4C แสดงถึงความหลากหลายของขบวนการเคลื่อนไหว
อ่านเพิ่มเติมและส่งใบสมัครของคุณได้ที่ [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2024|Meta-wiki]]
ในนามของทีมโครงการ UCoC<section end="announcement-content" />
[[m:User:RamzyM (WMF)|RamzyM (WMF)]] 23:26, 5 มีนาคม 2567 (+07)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=26276337 -->
== <span lang="en" dir="ltr" class="mw-content-ltr"> Wikimedia Foundation Board of Trustees 2024 Selection</span> ==
<div lang="en" dir="ltr" class="mw-content-ltr">
<section begin="announcement-content" />
: ''[[m:Special:MyLanguage/Wikimedia Foundation elections/2024/Announcement/Selection announcement| You can find this message translated into additional languages on Meta-wiki.]]''
: ''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation elections/2024/Announcement/Selection announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2024/Announcement/Selection announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
Dear all,
This year, the term of 4 (four) Community- and Affiliate-selected Trustees on the Wikimedia Foundation Board of Trustees will come to an end [1]. The Board invites the whole movement to participate in this year’s selection process and vote to fill those seats.
The [[m:Special:MyLanguage/Wikimedia Foundation elections committee|Elections Committee]] will oversee this process with support from Foundation staff [2]. The Board Governance Committee created a Board Selection Working Group from Trustees who cannot be candidates in the 2024 community- and affiliate-selected trustee selection process composed of Dariusz Jemielniak, Nataliia Tymkiv, Esra'a Al Shafei, Kathy Collins, and Shani Evenstein Sigalov [3]. The group is tasked with providing Board oversight for the 2024 trustee selection process, and for keeping the Board informed. More details on the roles of the Elections Committee, Board, and staff are here [4].
Here are the key planned dates:
* May 2024: Call for candidates and call for questions
* June 2024: Affiliates vote to shortlist 12 candidates (no shortlisting if 15 or less candidates apply) [5]
* June-August 2024: Campaign period
* End of August / beginning of September 2024: Two-week community voting period
* October–November 2024: Background check of selected candidates
* Board's Meeting in December 2024: New trustees seated
Learn more about the 2024 selection process - including the detailed timeline, the candidacy process, the campaign rules, and the voter eligibility criteria - on [[m:Special:MyLanguage/Wikimedia Foundation elections/2024|this Meta-wiki page]], and make your plan.
'''Election Volunteers'''
Another way to be involved with the 2024 selection process is to be an Election Volunteer. Election Volunteers are a bridge between the Elections Committee and their respective community. They help ensure their community is represented and mobilize them to vote. Learn more about the program and how to join on this [[m:Special:MyLanguage/Wikimedia Foundation elections/2024/Election Volunteers|Meta-wiki page]].
Best regards,
[[m:Special:MyLanguage/User:Pundit|Dariusz Jemielniak]] (Governance Committee Chair, Board Selection Working Group)
[1] https://meta.wikimedia.org/wiki/Special:MyLanguage/Wikimedia_Foundation_elections/2021/Results#Elected
[2] https://foundation.wikimedia.org/wiki/Committee:Elections_Committee_Charter
[3] https://foundation.wikimedia.org/wiki/Minutes:2023-08-15#Governance_Committee
[4] https://meta.wikimedia.org/wiki/Wikimedia_Foundation_elections_committee/Roles
[5] Even though the ideal number is 12 candidates for 4 open seats, the shortlisting process will be triggered if there are more than 15 candidates because the 1-3 candidates that are removed might feel ostracized and it would be a lot of work for affiliates to carry out the shortlisting process to only eliminate 1-3 candidates from the candidate list.<section end="announcement-content" />
</div>
[[User:MPossoupe_(WMF)|MPossoupe_(WMF)]]02:58, 13 มีนาคม 2567 (+07)
<!-- Message sent by User:MPossoupe (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=26349432 -->
== วิกิของคุณจะอยู่ในโหมดอ่านอย่างเดียวเร็ว ๆ นี้ ==
<section begin="server-switch"/><div class="plainlinks">
[[:m:Special:MyLanguage/Tech/Server switch|อ่านในภาษาอื่น]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Tech%2FServer+switch&language=&action=page&filter= {{int:please-translate}}]
เนื่องด้วยทาง[[foundation:|มูลนิธิวิกิมีเดีย]]จะมีการทดสอบการสลับการเยี่ยมชมเว็บไซต์ระหว่างศูนย์ข้อมูล ซึ่งการทดสอบนี้จะทำให้วิกิพีเดียและวิกิอื่น ๆ ของวิกิมีเดียยังสามารถออนไลน์อยู่ได้หากเกิดภัยพิบัติ
โดยเราจะสับการจราจรทั้งหมดกลับมาในวันที่ '''{{#time:j xg|2024-03-20|th}}''' การทดสอบจะเริ่มต้นในเวลา '''[https://zonestamp.toolforge.org/{{#time:U|2024-03-20T14:00|en}} {{#time:H:i e|2024-03-20T14:00}}]''' (21:00 น. ตามเวลาประเทศไทย)
โชคไม่ดีนัก ด้วยข้อจำกัดบางอย่างใน[[mw:Special:MyLanguage/Manual:What is MediaWiki?|มีเดียวิกิ]] การแก้ไขทั้งหมดต้องถูกหยุดชั่วคราวระหว่างการสับเปลี่ยนศูนย์ข้อมูล เราขออภัยในความไม่สะดวก และเราจะทำงานเพื่อลดการรบกวนให้เหลือน้อยที่สุดในอนาคต
'''คุณจะยังสามารถอ่านวิกิทั้งหมด แต่จะไม่สามารถแก้ไขได้ภายในระยะเวลาอันสั้น'''
*คุณอาจไม่สามารถแก้ไขได้นับชั่วโมงใน{{#time:l j xg Y|2024-03-20|th}}
*ถ้าคุณลองแก้ไขหรือบันทึกระหว่างช่วงเวลาเหล่านี้ คุณจะเห็นข้อความแสดงข้อผิดพลาด เราหวังว่าการแก้ไขจะไม่สูญหายไปในระหว่างนั้น แต่เราก็ไม่สามารถรับประกันได้ ถ้าคุณเห็นข้อความแสดงความผิดพลาด กรุณารอจนกว่าทุกสิ่งจะกลับเข้าสู่ภาวะปกติ จากนั้นคุณจึงควรจะสามารถบันทึกการแก้ไขของคุณได้ แต่เราแนะนำว่า คุณควรจะคัดลอกการเปลี่ยนแปลงของคุณไว้ก่อนเป็นอันดับแรก ในกรณีเช่นว่านั้น
''ผลกระทบอื่น ๆ'':
*แบคกราวน์จ็อบจะทำงานช้าลง และอาจถูกตัดทิ้งจากคิว ลิงก์แดงอาจไม่ได้ปรับปรุงอย่างรวดเร็วเหมือนภาวะปกติ ถ้าคุณสร้างบทความที่ถูกเชื่อมโยงในที่อื่นเรียบร้อยแล้ว ลิงก์แดงในหน้าที่โยงมานั้นอาจจะยังคงเป็นสีแดงนานกว่าปกติ สคริปต์แบบลองรันนิ่งอาจต้องหยุดทำงานระยะหนึ่ง
* เราหวังว่าจะสามารถอัปเดตและเปิดใช้งานโค้ดได้ภายในไม่กี่สัปดาห์ต่อจากนั้น อย่างไรก็ตาม อาจมีการฟรีซโค้ดเพิ่มเติมหากจำเป็น
* [[mw:Special:MyLanguage/GitLab|GitLab]] จะไม่พร้อมให้บริการเป็นเวลาราว 90 นาที
โครงการนี้อาจถูกเลื่อนออกไปหากจำเป็น คุณสามารถอ่าน[[wikitech:Switch_Datacenter|กำหนดการได้ที่ wikitech.wikimedia.org]] การเปลี่ยนแปลงใด ๆ จะถูกแจ้งในตารางนั้น และจะมีการแจ้งเตือนเพิ่มเติมเกี่ยวกับการทดสอบนี้ แบนเนอร์จะปรากฏขึ้น 30 นาทีก่อนการสับเปลี่ยนจะเริ่มต้น '''กรุณาแบ่งปันข้อมูลนี้ในชุมชนของคุณ'''</div><section end="server-switch"/>
[[user:Trizek (WMF)|Trizek (WMF)]], 07:01, 15 มีนาคม 2567 (+07)
<!-- Message sent by User:Trizek (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=25636619 -->
== การเปลี่ยนหมวดหมู่ topic ไปใช้รหัสภาษา ==
หมวดหมู่ topic ต่าง ๆ ที่เราใช้อยู่ปัจจุบัน ''หมวดหมู่:ภาษา...:หัวข้อ'' ชื่อภาษาบางทีก็อาจจะยาว และบางหัวชื่อชื่อก็ยาว ทำให้ยาวซ้ำเข้าไปอีก และ ''หมวดหมู่:ภาษา...'' มันก็จะไปทับซ้อนกับหมวดหมู่หลักของภาษานั้นอีกด้วย ผมจึงมีแนวคิดว่า หมวดหมู่ topic ในส่วนของชื่อภาษาที่นำหน้าอยู่ เปลี่ยนไปใช้รหัสภาษา ให้เหมือนกับวิกิพจนานุกรมภาษาอังกฤษ ''หมวดหมู่:รหัสภาษา:หัวข้อ'' จะทำให้เก็บกวาดง่าย มอดูลก็เขียนง่ายขึ้นเพราะไม่ต้องแปลงกลับไปกลับมา จึงขอความเห็น ถ้าไม่มีใครโต้แย้ง จะเริ่มเปลี่ยนแปลงไปใช้ ''หมวดหมู่:รหัสภาษา:หัวข้อ'' ตั้งแต่ 1 พฤษภาคม 2567 [[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 12:53, 17 เมษายน 2567 (+07)
ปล.หมวดหมู่ ''ศัพท์ภาษา...ที่Xมาจากภาษา...'' อันนี้หลีกเลี่ยงไม่ได้ยังไงก็ยาว เพราะ ''ศัพท์...ที่...'' และชื่อภาษา เป็นตัวแบ่งสำคัญ --[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 13:17, 17 เมษายน 2567 (+07)
== โหวตตอนนี้เพื่อเลือกสมาชิกของคณะกรรมการประสานงานหลักจรรยาบรรณสากลกลุ่มแรก ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – vote opens|คุณสามารถค้นหาข้อความนี้แปลเป็นภาษาอื่นเพิ่มเติมได้ในเมตาวิกิ]] [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – vote opens}}&language=&action=page&filter= {{int:please-translate}}]''
ถึงทุกท่าน
ฉันเขียนถึงคุณเพื่อแจ้งให้คุณทราบว่าระยะเวลาการลงคะแนนเสียงสำหรับคณะกรรมการประสานงานหลักปฏิบัติสากล (U4C) เปิดให้บริการตั้งแต่วันนี้จนถึงวันที่ 9 พฤษภาคม พ.ศ. 2567 อ่านข้อมูลใน [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2024|voting page on Meta-wiki]] เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการลงคะแนนเสียงและการมีสิทธิ์ของผู้ลงคะแนนเสียง
คณะกรรมการประสานงานหลักปฏิบัติสากล(U4C) เป็นกลุ่มระดับโลกที่อุทิศตนเพื่อให้การดำเนินงานหลักจรรยาบรรณสากล เป็นไปอย่างเท่าเทียมกันและสม่ำเสมอ สมาชิกชุมชนได้รับเชิญให้ส่งใบสมัครสำหรับคณะกรรมการประสานงานหลักปฏิบัติสากล สำหรับข้อมูลเพิ่มเติมและความรับผิดชอบของคณะกรรมการประสานงานหลักปฏิบัติสากล โปรดไปที่ [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|review the U4C Charter]]
กรุณาแบ่งปันข้อความนี้กับสมาชิกในชุมชนของคุณ เพื่อให้พวกเขาสามารถมีส่วนร่วมได้เช่นกัน
ในนามของทีมโครงการหลักจรรยาบรรณสากล<section end="announcement-content" />
[[m:User:RamzyM (WMF)|RamzyM (WMF)]] 03:21, 26 เมษายน 2567 (+07)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=26390244 -->
k5b44tq0pb9xavbu9e95a5csbip588s
ก.ค.
0
2568
1908629
1894987
2024-04-26T05:37:38Z
Octahedron80
267
/* อ้างอิง */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|กอ-คอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|กรกฎาคม}}
# {{อักษรย่อ|th|w:คณะกรรมการข้าราชการครู}} <ref>http://www.myfirstbrain.com/student_view.aspx?ID=65111</ref>
==== คำแปลภาษาอื่น ====
{{trans-top|อักษรย่อของกรกฎาคม}}
* กาตาลา: {{t+|ca|jul.}}
* อังกฤษ: {{t+|en|Jul}}, {{t+|en|Jul.}}
* เยอรมัน: {{t+|de|Jul.}}
{{trans-bottom}}
=== อ้างอิง ===
{{รายการอ้างอิง}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
36ncamfsx48vn5cy7y0bkhjs4jg3x31
ก.พ.
0
2619
1908630
1894988
2024-04-26T05:37:45Z
Octahedron80
267
/* อ้างอิง */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|กอ-พอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|กุมภาพันธ์}}
# {{อักษรย่อ|th|w:สำนักงานคณะกรรมการข้าราชการพลเรือน}} <ref>{{cite-web |title=สำเนาที่เก็บถาวร |url=http://www.lawreform.go.th/lawreform/images/th/content/en/573/c573_8.pdf |access-date=2015-04-24 |archivedate=2016-03-06 |archiveurl=https://web.archive.org/web/20160306011411/http://www.lawreform.go.th/lawreform/images/th/content/en/573/c573_8.pdf }}</ref>
==== คำแปลภาษาอื่น ====
กุมภาพันธ์
* อังกฤษ: [[Feb]] หรือ [[Feb.]]
สำนักงานคณะกรรมการข้าราชการพลเรือน
* อังกฤษ: [[OCSC]] ([[Office of the Civil Service Commission]])
==== ดูเพิ่ม ====
* {{l|th|กพ}}
==== อ้างอิง ====
{{รายการอ้างอิง}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
b3jjxxfpw8x29elzvncmdfq2ebdedpz
ก.ย.
0
3899
1908631
1879122
2024-04-26T05:37:55Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|กอ-ยอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|กันยายน}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
h5kcq4ku91ws74r0attmgzejp3xj90y
ต.ค.
0
3951
1908635
1510818
2024-04-26T05:38:36Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|ตอ-คอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|ตุลาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
hl5dt5a3v6f9z4r16mfnnr1eh50rjow
janvier
0
4142
1908602
1904192
2024-04-26T05:26:22Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{wikipedia|lang=fr}}
=== รากศัพท์ ===
{{inh+|fr|fro|janvier}}, จาก{{inh|fr|la-vul||*jenuarius}}, จาก{{inh|fr|la|iānuārius}}.
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-janvier.ogg|audio}}
* {{rhymes|fr|je}}
=== คำนาม ===
{{fr-noun|m}}
# [[มกราคม]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|ht|janvye}}
* {{desc|bor=1|fa|ژانویه|tr=Žânviye}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
igj1s9fqhx9jo2yjcnc2qiyc8f2sb7g
février
0
4143
1908603
1904072
2024-04-26T05:26:32Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{wikipedia|lang=fr}}
=== รากศัพท์ ===
{{inh+|fr|fro|fevrier}}, {{inh|fr|la-lat|febrārius}}, จาก{{inh|fr|la|februārius}}.
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-février.ogg|audio}}
* {{rhymes|fr|je}}
=== คำนาม ===
{{fr-noun|m}}
# [[กุมภาพันธ์]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|ht|fevriye}}
* {{desc|bor=1|fa|فوریه|tr=fevriye}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
lc75hv4nb43wsy4kzt32i7t6h6b3zg2
mars
0
4144
1908604
1640977
2024-04-26T05:26:41Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รากศัพท์ ===
{{inh+|fr|fro|mars}}, จาก {{der|fr|la|-}} ({{m|la|mensis}}) {{m|la|mārtius}}
=== การออกเสียง ===
* {{fr-IPA|marce}}
* {{audio|fr|Fr-mars.ogg|audio}}
* {{rhymes|fr|aʁ}}
=== คำนาม ===
{{fr-noun|m|mars}}
# [[มีนาคม]]
==== ลูกคำ ====
* {{l|fr|arriver comme mars en carême}}
* {{l|fr|grand mars}}
* {{l|fr|ides de mars}}
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|ht|mas}}
* {{desc|fa|مارس|tr=Mârs|bor=1}}
=== ดูเพิ่ม ===
* {{l|fr|mois}}
* {{l|fr|Mars}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
== ภาษาอะตง ==
=== รูปแบบอื่น ===
* {{l|aot|march}}
=== รากศัพท์ ===
{{bor+|aot|en|March}}
=== การออกเสียง ===
* {{IPA|aot|/mars/}}
=== คำนาม ===
{{aot-noun|মার্স}}
# [[มีนาคม]]
==== คำพ้องความ ====
* {{l|aot|choi•etja}}
ecrc4kthag79eqc9jjv7qtva1xicnrr
avril
0
4145
1908605
1640979
2024-04-26T05:26:51Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รากศัพท์ ===
{{inh+|fr|fro|avril}}, จาก{{inh|fr|la|Aprīlis}}.
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-avril.ogg|Audio (France, Paris)}}
* {{a|Louisiana}} {{fr-IPA|avɾi}}
* {{rhymes|fr|il}}
* {{homophones|fr|avrils}}
=== คำนาม ===
{{fr-noun|m}}
# [[เมษายน]]
==== ลูกคำ ====
* {{l|fr|poisson d'avril}} - april fool
* {{l|fr|En avril, ne te découvre pas d'un fil}}
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|ht|avril}}
* {{desc|mfe|avril}}
* {{desc|fa|آوریل|tr=âvrîl|bor=1}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
ce9ktuqxqd0vb3teoa00eo8yt63amzp
mai
0
4146
1908606
1874712
2024-04-26T05:27:00Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
{{also/auto}}
== ภาษากอกบอรอก ==
=== คำนาม ===
{{head|trp|คำนาม}}
# [[ข้าว]]
== ภาษาจีนกลาง ==
=== การถอดเป็นอักษรโรมัน ===
{{cmn-pinyin}}
# {{nonstandard spelling of|cmn|sc=Latn|mái}}
# {{nonstandard spelling of|cmn|sc=Latn|mǎi}}
# {{nonstandard spelling of|cmn|sc=Latn|mài}}
== ภาษาฝรั่งเศส ==
=== รากศัพท์ ===
{{inh+|fr|fro|mai}}, จาก{{inh|fr|la| (mensis) [[Māius]]}}.
=== การออกเสียง ===
* {{fr-IPA||mé}}
* {{audio|fr|Fr-mai.ogg|Audio (France)}}
=== คำนาม ===
{{fr-noun|m}}
# [[พฤษภาคม]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|gcr|mè}}
* {{desc|ht|me}}
* {{desc|en|may|bor=1}}
* {{desc|fa|مه|tr=me|bor=1}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
== ภาษาอะตง ==
=== การออกเสียง ===
* {{IPA|aot|/maj/}}
=== รากศัพท์ 1 ===
{{inh+|aot|tbq-bdg-pro|*mai¹||ข้าว; ข้าวเปลือก; ข้าวสุก}}, จาก{{inh|aot|sit-pro|*ma-j ~ mej||ข้าว; ข้าวเปลือก}}
==== คำนาม ====
{{aot-noun|মায়|মাই}}
# [[ข้าว]]
=== รากศัพท์ 2 ===
{{bor+|aot|en|May}}
==== รูปแบบอื่น ====
* {{l|aot|me}}
* {{l|aot|mei}}
==== คำนาม ====
{{aot-noun|মায়|মাই}}
# [[พฤษภาคม]]
===== คำพ้องความ =====
* {{l|aot|jetja}}
== ภาษาอิตาลี ==
=== คำกริยาวิเศษณ์ ===
{{head|it|คำกริยาวิเศษณ์}}
# [[ไม่เคย]]
nvcec6avp1ad8ukdbck9bpifc3vlif9
juin
0
4147
1908607
1640984
2024-04-26T05:27:09Z
Octahedron80
267
/* ดูเพิ่ม */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{wikipedia|lang=fr}}
=== รากศัพท์ ===
{{inh+|fr|fro|juin}}, จาก{{inh|fr|la|iūnius}}.
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-juin.ogg|audio}}
* {{a|Canada}} {{fr-IPA|juun}}
* {{audio|fr|Qc-juin.ogg|Audio (CAN)}}
* {{a|Louisiana}} {{fr-IPA||jun}}
=== คำนาม ===
{{fr-noun|m}}
# [[มิถุนายน]]
==== คำสืบทอด ====
* {{desc|ht|jen}}
* {{desc|fa|ژوئن|tr=žu'an|bor=1}}
=== ดูเพิ่ม ===
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
ko1ofjel40nrj9rx70blo2tpbt5hja3
juillet
0
4148
1908608
1168116
2024-04-26T05:27:18Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{wikipedia|lang=fr}}
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-juillet.ogg|audio}}
* {{a|Louisiana}} {{fr-IPA|juliette}}
=== คำนาม ===
{{fr-noun|m}}
# [[กรกฎาคม]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|ht|jiyè}}
* {{desc|fa|ژوئیه|bor=1|tr= žu’iye}}
=== อ้างอิง ===
* [http://www.cnrtl.fr/etymologie/juillet etymology]
=== อ่านเพิ่ม ===
* {{R:TLFi}}
7l8z1kpudaonkd5j85ll5ftxksljny1
août
0
4149
1908609
1640987
2024-04-26T05:27:26Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{slim-wikipedia|lang=fr}}
=== รูปแบบอื่น ===
* {{l|fr|aout}}
=== รากศัพท์ ===
{{inh+|fr|fro|aoust}}, จาก{{inh|fr|la|augustus}}. {{doublet|fr|auguste}}.
=== การออกเสียง ===
* {{fr-IPA|out|oute}}<ref>{{R:CNRTL}}</ref>
** {{audio|fr|Fr-août.ogg|Audio (France, Paris)}}
* {{a|Quebec, Louisiana}} {{fr-IPA}}
* {{homophones|fr|aoûts}}
* {{homophones|fr|ou|où|hou|houe|houx}} {{qualifier|when pronounced {{IPAchar|/u/}}}}
=== คำนาม ===
{{fr-noun|m}}
# [[สิงหาคม]]
==== ลูกคำ ====
* {{l|fr|aoûtat}}, {{l|fr|aoutat}}
* {{l|fr|aoûtien||someone who goes on holiday in August}}
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|gcr|oût}}
* {{desc|ht|out}}
* {{desc|mfe|out}}
* {{desc|fa|اوت|tr=ut|bor=1}}
=== อ้างอิง ===
<references/>
=== อ่านเพิ่ม ===
* {{R:TLFi}}
q87oxfalrc5wmrb3fgpad8mm7r5pjrc
septembre
0
4150
1908610
1168118
2024-04-26T05:27:34Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รากศัพท์ ===
ยืมจาก{{bor|fr|la|september|september, septembrem}}. Cf. ภาษาฝรั่งเศสเก่า {{m|fro|setembre}}, {{m|fro|sietembre}}.
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-septembre.ogg|audio}}
* {{a|dated}} {{fr-IPA|settembre}}
* {{a|Louisiana}} {{IPA|fr|[sɛptɔ̃m]|[sɛktɔ̃m]}}
=== คำนาม ===
{{fr-noun|m}}
# [[กันยายน]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|gcr|sèptanm}}
* {{desc|ht|septanm}}
* {{desc|fa|سپتامبر|tr=septâmbr|bor=1}}
=== ดูเพิ่ม ===
* {{l|fr|mois}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
aeous34ldbvzoa7gxwnfhiv5t6q5007
octobre
0
4151
1908611
1168119
2024-04-26T05:27:45Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-octobre.ogg|audio}}
=== คำนาม ===
{{fr-noun|m}}
# [[ตุลาคม]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|gcr|òktòb}}
* {{desc|ht|oktòb}}
* {{desc|fa|اکتبر|tr=oktobr|bor=1}}
=== ดูเพิ่ม ===
* {{l|fr|mois}}
=== อ้างอิง ===
* [http://www.cnrtl.fr/etymologie/octobre etymology]
=== อ่านเพิ่ม ===
* {{R:TLFi}}
aic75urwrfxizo18m4dj8zh28bj2gy5
novembre
0
4152
1908612
1640989
2024-04-26T05:27:52Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รากศัพท์ ===
{{inh+|fr|fro|novembre}}, จาก{{inh|fr|la|november|november, novembrem}}.
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-novembre.ogg|audio}}
=== คำนาม ===
{{fr-noun|m}}
# [[พฤศจิกายน]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|gcr|novanm}}
* {{desc|ht|novanm}}
* {{desc|fa|نوامبر|tr=novâmbr|bor=1}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
tqcyuq8nc3tms713ilod4000a6cyxmb
décembre
0
4153
1908613
1640992
2024-04-26T05:28:11Z
Octahedron80
267
/* คำที่เกี่ยวข้อง */
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{wikipedia|lang=fr}}
=== รากศัพท์ ===
{{inh+|fr|fro|decembre}}, ยืมจาก{{der|fr|la|december|december, decembrem}}.
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-décembre.ogg|audio}}
=== คำนาม ===
{{fr-noun|m}}
# [[ธันวาคม]]
==== คำที่เกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr}}
==== คำสืบทอด ====
* {{desc|gcr|désanm}}
* {{desc|ht|desanm}}
* {{desc|fa-ira|دسامبر|tr=desâmbr|bor=1}}
=== อ่านเพิ่ม ===
* {{R:TLFi}}
dl247q6hwbzc7ij2dgbd6ce7oql2mln
สิงหาคม
0
4949
1908624
1510812
2024-04-26T05:35:35Z
Octahedron80
267
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|สิงห|อาคม}}
=== การออกเสียง ===
{{th-pron|สิง-หา-คม}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 8 [[ตาม]][[สุริยคติ]] [[มี]] 31 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 5 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|ส.ค.}}
* {{sense|คำย่อ}} {{l|th|สิงหา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
h3ssokcipxdmrd36tnsr5c4a9mknt5z
มกราคม
0
12018
1908616
1603827
2024-04-26T05:33:50Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|มกร|อาคม}}
=== การออกเสียง ===
{{th-pron|มะ-กะ-รา-คม|มก-กะ-รา-คม}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 1 [[ตาม]][[สุริยคติ]] [[มี]] 31 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 10 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|ม.ค.}}
* {{sense|คำย่อ}} {{l|th|มกรา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
tod9frtn5729vqhflgfm87slvmwwxn8
มีนาคม
0
12019
1908618
1883280
2024-04-26T05:34:12Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|มีน|อาคม}}
=== การออกเสียง ===
{{th-pron|มี-นา-คม}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 3 [[ตาม]][[สุริยคติ]] [[มี]] 31 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 12 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|มี.ค.}}
* {{sense|คำย่อ}} {{l|th|มีนา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
grb5l6jqs6z16k2zbqxm0fn356efn3y
เมษายน
0
12020
1908620
1510807
2024-04-26T05:34:17Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|เมษ|อายน}}
=== การออกเสียง ===
{{th-pron|เม-สา-ยน}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 4 [[ตาม]][[สุริยคติ]] [[มี]] 30 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 1 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือนเมษายน
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|เม.ย.}}
* {{sense|คำย่อ}} {{l|th|เมษา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
qsfqhj1nzb7sitl5mtf8qqm0yrie1y4
พฤษภาคม
0
12021
1908621
1770284
2024-04-26T05:34:30Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รูปแบบอื่น ===
* {{alt|th|พรึสภาคม||เลิกใช้}}
=== รากศัพท์ ===
{{com|th|พฤษภ|อาคม}}
=== การออกเสียง ===
{{th-pron|พฺรึด-สะ-พา-คม}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 5 [[ตาม]][[สุริยคติ]] [[มี]] 31 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 2 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|พ.ค.}}
* {{sense|คำย่อ}} {{l|th|พฤษภา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
d41fylc9l7r9lpmqszh5jevpt890fa9
มิถุนายน
0
12022
1908622
1904665
2024-04-26T05:35:02Z
Octahedron80
267
/* คำแปลภาษาอื่น */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|มิถุน|อายน}}
=== การออกเสียง ===
{{th-pron|มิ-ถุ-นา-ยน}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 6 [[ตาม]][[สุริยคติ]] [[มี]] 30 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 3 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|มิ.ย.}}
* {{sense|คำย่อ}} {{l|th|มิถุนา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
==== คำแปลภาษาอื่น ====
{{trans-top|ชื่อเดือนที่ 6 ตามสุริยคติ}}
* Aromanian: {{t|rup|cirishar}}, {{t|rup|cireshar}}
* Atikamekw: {{t|atj|Otehimin pisimw}}
* Kabuverdianu: {{t|kea|junhu}}
*: São Vicente: {{t|kea|junh'}}
*: ALUPEC: {{t|kea|junhu}}
*: Badiu: {{t|kea|junhu}}
* Mòcheno: {{t|mhn|prochet|m}}
* Saterland Frisian: {{t|stq|Juni}}
* Skolt Sami: {{t|sms|ǩieʹssmään}}
* Swazi: {{t+|ss|íNhlaba}}
* กรีก: {{t+|el|Ιούνιος|m}}, {{t+|el|Ιούνης|m}}, {{t+|el|Θεριστής|m}} {{qualifier|เดือนแห่งการเก็บเกี่ยว}}
* กรีนแลนด์: {{t|kl|juuni}}
* กันนาดา: {{t|kn|ಜೂನ}}
* กัมเบอรา: {{t|xbr|wulang nomu}}
* กาดาซันดูซุน: {{t|dtp|Mahas}}
* กาตาลา: {{t+|ca|juny|m}}
* กาปัมปางัน: {{t|pam|Pángayánam a búlan}}, {{t|pam|Unyu}}
* กาลิเซีย: {{t+|gl|xuño|m}}
* กิลเบิร์ต: {{t|gil|Tune}}
* เกโกโย: {{t|ki|Gathathanwa}}
* เกาหลี: {{t+|ko|유월(六月)}}, {{t+|ko|6월(月)|tr=yuweol}}, {{t+|ko|류월(六月)}} {{qualifier|เกาหลีเหนือ}}
* แกลิกแบบสกอตแลนด์: {{t|gd|Ògmhios|m}}
* เขมร: {{t+|km|មិថុនា}}
* คองโก: {{t|kg|yuni}}
* คอปติก: {{t|cop|ⲓⲟⲩⲛⲓⲟⲥ}}
* คอร์ซิกา: {{t+|co|ghjugnu}}
* คอร์นวอลล์: {{t|kw|mys [[Metheven]]}}
* คาชุบ: {{t+|csb|czerwińc}}
* คาซัค: {{t+|kk|маусым}}
* คีร์กีซ: {{t+|ky|июнь|sc=Cyrl}}
* เคิร์ด:
*: เคิร์ดเหนือ: {{t+|kmr|pûşber|f}}, {{t+|kmr|hezîran|f}}, {{t+|kmr|xezîran|f}}
* จอร์เจีย: {{t+|ka|ივნისი}}
* จีน:
*: กวางตุ้ง: {{t|yue|六月|tr=luk6 jyut6|sc=Hani}}
*: แคะ: {{t|hak|六月|tr=liuk-ngie̍t|sc=Hani}}
*: จีนกลาง: {{t+|cmn|六月}}, {{t+|cmn|6月|tr=liùyuè}}
*: ดุงกาน: {{t|dng|люйүә}}
*: หมิ่นใต้: {{t|nan|六月|tr=la̍k-go̍eh, la̍k-ge̍h, la̍k-gōe|sc=Hani}}
* เจวา: {{t|ny|Juni}}
* ชวา: {{t|jv|juni}}
* ชุกชี: {{t|ckt|кыткытйъэлгын|tr=kytkytjʺėlgyn}}
* ชูวัช: {{t|cv|śěrtme}}, {{t|cv|ҫӗртме}}
* เช็ก: {{t+|cs|červen|m}}
* เชเชน: {{t|ce|Мангалан-бутт|sc=Cyrl}}
* เชโรกี: {{t|chr|ᏕᎭᎷᏱ}}
* โชนา: {{t|sn|Chikumi}}
* ซองคา: {{t|dz|སྤྱི་ཟླ་དྲུག་པ། }}
* ซาคา: {{t|sah|Бэс ыйа}}
* ซาซา: {{t+|zza|Heziran}}, {{t|zza|Xerman}}
* ซามัว: {{t|sm|iune}}
* ซามีเหนือ: {{t|se|geassemánnu}}
* ซาร์ดิเนีย: {{t|sc|làmpadas}}, {{t|sc|làmpatas}}
* ซิซิลี: {{t+|scn|giugnu|m}}
* ซุนดา: {{t|su|juni}}
* ซูทู: {{t+|st|Phupjane}}
* ซูนี: {{t|zun|Yadokkya De'chikya Yachunne}}, {{t|zun|Ik'ohbu Yachunne}}
* เซอร์โบ-โครเอเชีย:
*: อักษรซีริลลิก: {{t|sh|јун|m|sc=Cyrl}}, {{t|sh|јуни|m|sc=Cyrl}}
*: อักษรละติน: {{t+|sh|jun|m}}, {{t+|sh|juni|m}}, {{t+|sh|lipanj|m}} {{qualifier|โครเอเชีย}}
* โซโทเหนือ: {{t|nso|Phupu}}
* ญี่ปุ่น: {{t+|ja|六月|tr=ろくがつ, rokugatsu}}, {{t+|ja|水無月|tr=みなづき, minazuki}}
* ดัตช์: {{t+|nl|juni}}
* ดาโคตา: {{t|dak|Wažuštecašawi}}
* เดนมาร์ก: {{t+|da|juni|c}}
* ตองงา: {{t|to|Sune}}
* ตากาล็อก: {{t+|tl|Hunyo}}
* ตาตาร์: {{t|tt|июнь}}
* ตาฮีตี: {{t|ty|tiunu}}
* ตุรกี: {{t+|tr|haziran}}, {{t+|tr|bozay}}, {{t+|tr|orakayı}}, {{t+|tr|bozaran}}
* เตลูกู: {{t+|te|జూన్}}
* เติร์กเมน: {{t|tk|iýun}}
* ทมิฬ: {{t+|ta|ஜூன்}}
* ทอกพิซิน: {{t|tpi|june}}
* ทาจิก: {{t+|tg|июн}}
* นอร์เวย์:
*: นือนอสก์: {{t+|nn|juni|m}}
*: บุ๊กมอล: {{t+|nb|juni|m}}
* นาโปลี: {{t|nap|giùgno}}
* นาวาโฮ: {{t|nv|Yaʼiishjááshchilí}}
* บัลแกเรีย: {{t+|bg|ю́ни|m}}
* บาสก์: {{t+|eu|ekain}}
* บิสลามา: {{t|bi|jun}}
* เบงกอล: {{t+|bn|জুন}}
* เบรอตง: {{t+|br|Mezheven}}, {{t|br|miz Mezheven}}
* เบลารุส: {{t+|be|чэ́рвень|m}}
* ปัญจาบ: {{t|pa|ਜੂਨ|m}}
* ปาทาน: {{t+|ps|جون|m|tr=ǰun}}
* เปอร์เซีย: {{t+|fa|ژوئن|tr=žu’an}}, {{t+|fa|یون|tr=yun}}
* โปรตุเกส: {{t+|pt|junho|m}}
* โปแลนด์: {{t+|pl|czerwiec|m-in}}
* ฝรั่งเศส: {{t+|fr|juin|m}}
* พม่า: {{t+|my|ဇွန်}}, {{t|my|ခြောက်လ}}
* เพลาท์ดิทช์: {{t|pdt|Juni|m}}
* ฟรีเชียตะวันตก: {{t+|fy|juny}}, {{t+|fy|simmermoanne}}
* ฟรีเซียเหนือ:
*: Föhr-Amrum: {{t|frr|jüüne|m}}
*: Mooring: {{t|frr|samermoune|m}}, {{t|frr|juuni|m}}
* ฟรียูลี: {{t|fur|Zugn|m}}, {{t|fur|Jugn}}
* ฟิจิ: {{t|fj|June}}
* ฟินแลนด์: {{t+|fi|kesäkuu}}
* แฟโร: {{t|fo|juni}}
* มงตาแญ: {{t|moe|uapikun-pishimᵘ}}
* มราฐี: {{t|mr|जून}}
* มลยาฬัม: {{t+|ml|ജൂൺ}}
* มองโกเลีย: {{t|mn|зургадүгаар сар|sc=Cyrl}}
* มอลตา: {{t+|mt|Ġunju|m}}
* มัลดีฟส์: {{t|dv|ޖޫން}}
* มาซิโดเนีย: {{t+|mk|јуни|m}}
* มาเลเซีย:
*: อักษรยาวี: {{t+|ms|جون}}
*: อักษรละติน: {{t+|ms|Jun}}
* มาวรี: {{t|mi|Hune}}
* มิงเกรเลีย: {{t|xmf|მანგი}}
* มีรังดา: {{t|mwl|Júnio|m}}
* แมนจู: {{t|mnc|ᠨᡳᠩᡤᡠᠨ ᠪᡳ᠍ᠶᠠ}}
* ยิดดิช: {{t+|yi|יוני|m}}
* ยุปปิก: {{t|esu|Kaugun}}
* ยูเครน: {{t+|uk|че́рвень|m}}
* เยอรมัน: {{t+|de|Juni|m}}, {{t+|de|Brachet|m}}
* เยอรมันต่ำ:
*: Dutch Low Saxon: {{t|nds-nl|juni}}
*: German Low German: {{t|nds-de|Juni|m}}, {{t|nds-de|Braakmaand|m}}
* เยอรมันแบบเพนซิลเวเนีย: {{t|pdc|Juni}}, {{t|pdc|Yuni}}
* เยอรมันแบบแอเลอแมนนี: {{t|gsw|Juni|m}}
* รัสเซีย: {{t+|ru|ию́нь|m}}
* โรมานช์: {{t|rm|gün|m}}, {{t|rm|zarcladour|m}}, {{t|rm|zarcladur|m}}, {{t|rm|zercladur|m}}
* โรมาเนีย: {{t+|ro|iunie}}, {{qualifier|pop}} {{t+|ro|cireșar}}
* ละติน: {{t+|la|iūnius}}
* ลักเซมเบิร์ก: {{t+|lb|Juni|m}}, {{t+|lb|Broochmount|m}}
* ลัตเวีย: {{t+|lv|jūnijs}}
* ลาว: {{t|lo|ເດືອນມິຖຸນາ}}
* ลิงกาลา: {{t+|ln|yúni}}
* ลิทัวเนีย: {{t+|lt|birželis|m}}
* ลิมเบิร์ก: {{t+|li|juni}}
* ลีโวเนีย: {{t|liv|jūnij}}, {{t|liv|jōņpǟva kū}}
* เลซกี: {{t|lez|къамуг}}
* วัลลูน: {{t+|wa|djun}}
* วินเนอเบโก: {{t|win|Mąą hinąʼų wiira}}
* เวเนโต: {{t+|vec|giugno}}
* เวลส์: {{t+|cy|Mehefin|m}}
* เวอโร: {{t|vro|piimäkuu}}
* เวียดนาม: {{t|vi|tháng 6}}, {{t+|vi|tháng sáu}}
* โวลอฟ: {{t|wo|Suwe}}
* โวลาปุก: {{t+|vo|yunul}}
* สกอต: {{t|sco|Juin}}
* สเปน: {{t+|es|junio|m}}
* สโลวัก: {{t+|sk|jún|m}}
* สโลวีเนีย: {{t+|sl|júnij|m}}
* สวีเดน: {{t+|sv|juni|c}}
* สิงหล: {{t+|si|ජූනි}}
* ออโรโม: {{t|om|Waaxabajjii}}
* ออสซีเซีย: {{t|os|июнь}}
* อะดีเกยา: {{t|ady|мэкъуогъу}}
* อะแพชี:
*: อะแพชีตะวันตก: {{t|apw|Itsáh Bizhaazh}}
* อังกฤษ: {{t+|en|June}}
* อังกฤษเก่า: {{t|ang|se ǣrra līþa|m}}
* อับคาเซีย: {{t|ab|рашәара}}
* อัมฮารา: {{t|am|ጁን}}
* อัสตูเรียส: {{t+|ast|xunu|m}}
* อาเซอร์ไบจาน: {{t+|az|iyun}}
* อาบาซา: {{t|abq|пхынхъа}}
* อาร์มีเนีย: {{t+|hy|հունիս}}
*: อาร์มีเนียเก่า: {{t|hy|յունիս}}
* อารากอน: {{t+|an|chunio|m}}
* อาลูตีก: {{t|ems|Naut'staat Iraluat}}
* อาหรับ: {{t+|ar|يُونِيُو|tr=yūniyō|m}}, {{t|ar|حَزِيرَان|m}}
* อีโด: {{t+|io|junio}}
* อิตาลี: {{t+|it|giugno|m}}
* อินโดนีเซีย: {{t|id|juni}}
* อินเทอร์ลิงกวา: {{t+|ia|junio}}
* อินุกติตุต: {{t+|iu|ᔪᓂ|sc=Cans}}
* อุซเบก: {{t+|uz|iyun}}
* อุดมูร์ต: {{t|udm|инвожо}}
* อุตซิตา: {{t+|oc|junh|m}}
* อุยกูร์: {{t|ug|ئىيۇن}}, {{t|ug|ئالتىنچى ئاي}}
* อูรดู: {{t+|ur|جون|m|tr=jūn}}
* เอเว: {{t|ee|Masa}}, {{t|ee|Yuni}}
* เอสโตเนีย: {{t+|et|juuni}}
* เอสเปรันโต: {{t+|eo|junio}}, {{t|eo|Junio}}
* แอฟริคานส์: {{t+|af|Junie}}
* อารามายา: {{t|arc|חזיִרָן|tr=ḥzīrān|m}}
*: Assyrian Neo-Aramaic: {{t|aii|ܚܙܝܼܪܵܢ|tr=ḳzīran|m}}
*: Classical Syriac: {{t|syc|ܚܙܝܪܢ|tr=hzirin}}
*: Turoyo: {{t|tru|ܚܙܝܪܷܢ|m}}
* แอลเบเนีย: {{t+|sq|qershor|m}}
* แอละแบมา: {{t|akz|hasiholtina istahánnàali}}
* โอจิบเว: {{t|oj|ode'imini-giizis}}
* โอริยา: {{t+|or|ଜୁନ୍}}
* ไอซ์แลนด์: {{t+|is|júní|m}}, {{t|is|júnímánuður|m}}
* ไอริช: {{t+|ga|Meitheamh|m}}
* ฮังการี: {{t+|hu|június}}
* ฮาวาย: {{t|haw|Iune}}
* ฮินดี: {{t+|hi|जून|m}}
* ฮีบรู: {{t+|he|יוּנִי|m|tr=yúni}}
* เฮาซา: {{t|ha|Yuni}}
* ไฮติครีโอล: {{t|ht|jen}}
{{trans-bottom}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
4ypqne9gevf5wrf2xko2qoilf795niy
กันยายน
0
12023
1908625
1879630
2024-04-26T05:35:42Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|กันยา|อายน}}
=== การออกเสียง ===
{{th-pron|กัน-ยา-ยน}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 9 [[ตาม]][[สุริยคติ]] [[มี]] 30 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 6 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|ก.ย.}}
* {{sense|คำย่อ}} {{l|th|กันยา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
bfyllueweyqwo3dfg3x1xrc2ke1sz2b
ตุลาคม
0
12024
1908626
1882033
2024-04-26T05:35:51Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|ตุล|อาคม}}
=== การออกเสียง ===
{{th-pron|ตุ-ลา-คม}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 10 [[ตาม]][[สุริยคติ]] [[มี]] 31 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 7 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|ต.ค.}}
* {{sense|คำย่อ}} {{l|th|ตุลา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
otpizgs88txqv0orx7iwh5f15tqqqbi
พฤศจิกายน
0
12025
1908627
1510819
2024-04-26T05:35:57Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|พฤศจิก|อายน}}
=== การออกเสียง ===
{{th-pron|พฺรึด-สะ-จิ-กา-ยน}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 11 [[ตาม]][[สุริยคติ]] [[มี]] 30 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 8 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|พ.ย.}}
* {{sense|คำย่อ}} {{l|th|พฤศจิกา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
d0unn7cynmltn7nqggs2zbantq3xwp7
ธันวาคม
0
12026
1908628
1510821
2024-04-26T05:36:03Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|ธนุ|อาคม}}
=== การออกเสียง ===
{{th-pron|ทัน-วา-คม}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 12 [[ตาม]][[สุริยคติ]] [[มี]] 31 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 9 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|ธ.ค.}}
* {{sense|คำย่อ}} {{l|th|ธันวา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
r2ihk5za9wwksqsq1scm7vcmt18gyls
กันยา
0
16179
1908633
1879627
2024-04-26T05:38:10Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|กัน-ยา}}
=== รากศัพท์ 1 ===
{{bor+|th|sa|कन्या}}
==== คำนาม ====
{{th-noun}}
# [[สาว]][[รุ่น]], สาว[[น้อย]]
===== คำพ้องความ =====
* [[กันย์]]
===== คำแปลภาษาอื่น =====
{{trans-top| (1)}}
* [[ภาษาอังกฤษ|อังกฤษ]] : [[young girl]], [[maiden]]
{{trans-bottom}}
=== รากศัพท์ 2 ===
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|กันยายน}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
7zriwjpnisnqhf55w6e0kvliwxo6v7p
ᨸᩦ
0
18853
1908672
1643200
2024-04-26T06:48:11Z
Octahedron80
267
/* รูปแบบอื่น */
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|l=ปี|s=ปี๋|ns=ᨸᩖᩦ}}
=== รากศัพท์ ===
{{inh+|nod|tai-swe-pro|*piːᴬ¹}}, จาก{{inh|nod|tai-pro|*piːᴬ}}; ร่วมเชื้อสายกับ{{cog|th|ปี}}, {{cog|lo|ປີ}}, {{cog|khb|ᦔᦲ}}, {{cog|shn|ပီ}}, {{cog|tdd|ᥙᥤ}}, {{cog|phk|ပီ}}, {{cog|aho|𑜆𑜣}}, {{cog|za|bi}}, {{cog|pcc|bil}}
=== การออกเสียง ===
* {{a|เชียงใหม่}} {{IPA|nod|/piː˨˦/}}
=== คำนาม ===
{{nod-noun}}
# [[ปี]]
== ภาษาไทลื้อ ==
=== การออกเสียง ===
{{khb-pron|ᦔᦲ}}
=== คำนาม ===
{{khb-noun}}
# {{altform|khb|ᦔᦲ}}
6jq7cm6856ed4wifjclwafboste6kj6
ᨻᩕ
0
18915
1908674
1427228
2024-04-26T06:50:38Z
Octahedron80
267
/* ภาษาคำเมือง */
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
* {{alt|nod|ᨻᩕᩡ}}
=== คำนาม ===
{{nod-noun}}
# [[พระ]]
i2rc2aqmm9xqugl1t7sunrsdfvk8ba0
กุมภา
0
27234
1908634
1558664
2024-04-26T05:38:18Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|กุม-พา}}
=== รากศัพท์ 1 ===
แผลงมาจาก {{m|th|กุมภีล์}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กลอน}} [[จระเข้]]
=== รากศัพท์ 2 ===
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|กุมภาพันธ์}}
{{topics|th|สัตว์|เดือนในปฏิทินกริกอเรียน}}
dpo6mx3ipy0asu7x5glmnlub13pg8ij
capitão
0
36183
1908597
1253712
2024-04-26T05:21:50Z
Octahedron80
267
/* รากศัพท์ */ เก็บกวาด
wikitext
text/x-wiki
== ภาษาโปรตุเกส ==
=== รากศัพท์ ===
จาก{{inh|pt|roa-opt|capitan}}, {{m|roa-opt|capitam}}, จาก{{w|Genoese dialect|Genoese|lang=en}} {{der|pt|lij|capitan}}, จาก{{der|pt|LL.|capitānus}}, จาก{{m|la|capitāneus}}, หรือจาก{{der|pt|la|capitālis}}
=== การออกเสียง ===
* {{IPA|pt|/kɐ.pi.ˈtɐ̃w̃/}}
* คำอ่านเทียบเคียง: กา-ปี-เตาง์
=== {{หน้าที่|pt|นาม}} ===
{{pn}} {{ชาย}} (''พหูพจน์:'' '''[[capitães]]'''; ''เพศหญิง เอกพจน์:'' '''[[capitã]]'''; ''เพศหญิง พหูพจน์:'' '''[[capitãs]]''')
# ผู้นำทหาร, หัวหน้าทัพของกองทหารหนึ่ง ๆ
# ทหารบกยศร้อยเอก, ทหารอากาศยศเรืออากาศเอก
# ผู้บังคับการเรือพาณิชย์, หัวหน้านักบิน
# หัวหน้ากลุ่ม, หัวหน้าทีมกีฬา
# ''(บราซิล)'' อนุศาสนาจารย์, ข้าราชการทหารที่ทำหน้าที่ดูแลกิจการศาสนาในกองทัพ
# ''(คำล้อเลียน)'' เด็กรับใช้ที่มีหน้าที่ปัดกวาดบนเรือรบ
# ''(โบราณ)'' หัวหน้า, ผู้เชี่ยวชาญ, ผู้ปกป้อง
=== บรรณานุกรม ===
* "Capitão." In '''Dicionário Priberam da Língua Portuguesa.''' [Em linha]. Disponível em: http://www.priberam.pt/dlpo/capitão 2008-2013. Acesso em: 21 março 2014.
q59tpnzkbaddb1rc57kqjao069voswz
มอดูล:scripts
828
36355
1908583
1901310
2024-04-26T03:33:17Z
Octahedron80
267
Scribunto
text/plain
local m_str_utils = require("Module:string utilities")
local codepoint = m_str_utils.codepoint
local gsplit = m_str_utils.gsplit
local select = select
local split = m_str_utils.split
local toNFC = mw.ustring.toNFC
local toNFD = mw.ustring.toNFD
local toNFKC = mw.ustring.toNFKC
local toNFKD = mw.ustring.toNFKD
local type = type
local u = m_str_utils.char
local ugsub = m_str_utils.gsub
local umatch = m_str_utils.match
local export = {}
local Script = {}
--[==[Returns the script code of the language. Example: {{code|lua|"Cyrl"}} for Cyrillic.]==]
function Script:getCode()
return self._code
end
--[==[Returns the canonical name of the script. This is the name used to represent that script on Wiktionary. Example: {{code|lua|"Cyrillic"}} for Cyrillic.]==]
function Script:getCanonicalName()
return self._rawData[1] or self._rawData.canonicalName
end
--[==[Returns the display form of the script. For scripts, this is the same as the value returned by <code>:getCategoryName("nocap")</code>, i.e. it reads "NAME script" (e.g. {{code|lua|"Arabic script"}}). For regular and etymology languages, this is the same as the canonical name, and for families, it reads "NAME languages" (e.g. {{code|lua|"Indo-Iranian languages"}}). The displayed text used in <code>:makeCategoryLink</code> is always the same as the display form.]==]
function Script:getDisplayForm()
return self:getCategoryName("nocap")
end
function Script:getOtherNames(onlyOtherNames)
return require("Module:language-like").getOtherNames(self, onlyOtherNames)
end
function Script:getAliases()
return self._rawData.aliases or {}
end
function Script:getVarieties(flatten)
return require("Module:language-like").getVarieties(self, flatten)
end
--[==[Returns the parent of the script. Example: {{code|lua|"Arab"}} for {{code|lua|"fa-Arab"}}. It returns {{code|lua|"top"}} for scripts without a parent, like {{code|lua|"Latn"}}, {{code|lua|"Grek"}}, etc.]==]
function Script:getParent()
return self._rawData.parent
end
function Script:getSystemCodes()
if not self._systemCodes then
if type(self._rawData[2]) == "table" then
self._systemCodes = self._rawData[2]
elseif type(self._rawData[2]) == "string" then
self._systemCodes = split(self._rawData[2], "%s*,%s*", true)
else
self._systemCodes = {}
end
end
return self._systemCodes
end
function Script:getSystems()
if not self._systemObjects then
local m_systems = require("Module:writing systems")
self._systemObjects = {}
for _, ws in ipairs(self:getSystemCodes()) do
table.insert(self._systemObjects, m_systems.getByCode(ws))
end
end
return self._systemObjects
end
--[==[Check whether the script is of type `system`, which can be a writing system code or object. If multiple systems are passed, return true if the script is any of the specified systems.]==]
function Script:isSystem(...)
for _, system in ipairs{...} do
if type(system) == "table" then
system = system:getCode()
end
for _, s in ipairs(self:getSystemCodes()) do
if system == s then
return true
end
end
end
return false
end
--function Script:getAllNames()
-- return self._rawData.names
--end
--[==[Given a list of types as strings, returns true if the script has all of them.
Currently the only possible type is {script}; use {{lua|hasType("script")}} to determine if an object that
may be a language, family or script is a script.
]==]
function Script:hasType(...)
local types = self._types
if types == nil then
types = {script = true}
local rawtypes = self._rawData.type
if rawtypes then
for rawtype in gsplit(rawtypes, "%s*,%s*", true) do
types[rawtype] = true
end
end
self._types = types
end
for i = 1, arg.n do
if not types[arg[i]] then
return false
end
end
return true
end
--[==[Returns the name of the main category of that script. Example: {{code|lua|"Cyrillic script"}} for Cyrillic, whose category is at [[:Category:Cyrillic script]].
Unless optional argument <code>nocap</code> is given, the script name at the beginning of the returned value will be capitalized. This capitalization is correct for category names, but not if the script name is lowercase and the returned value of this function is used in the middle of a sentence. (For example, the script with the code <code>Semap</code> has the name <code>"flag semaphore"</code>, which should remain lowercase when used as part of the category name [[:Category:Translingual letters in flag semaphore]] but should be capitalized in [[:Category:Flag semaphore templates]].) If you are considering using <code>getCategoryName("nocap")</code>, use <code>getDisplayForm()</code> instead.]==]
function Script:getCategoryName(nocap)
local name = self._rawData[1] or self._rawData.canonicalName
--[[ not use in Thai
-- If the name already has "script", "code" or "semaphore" at the end, don't add it.
if not (
name:find("[ %-][Ss]cript$") or
name:find("[ %-][Cc]ode$") or
name:find("[ %-][Ss]emaphore$")
) then
name = name .. " script"
end
if not nocap then
name = mw.getContentLanguage():ucfirst(name)
end
--]]
if not (
name:find("^อักษร") or
name:find("^รหัส") or
name:find("^สัญญาณ")
) then
name = "อักษร" .. name
end
return name
end
function Script:makeCategoryLink()
return "[[:Category:" .. self:getCategoryName() .. "|" .. self:getDisplayForm() .. "]]"
end
--[==[Returns the {{code|lua|wikipedia_article}} item in the language's data file, or else calls {{code|lua|Script:getCategoryName()}}.]==]
function Script:getWikipediaArticle()
return self._rawData.wikipedia_article or self:getCategoryName()
end
--[==[Returns the charset defining the script's characters from the language's data file.
This can be used to search for words consisting only of this script, but see the warning above.]==]
function Script:getCharacters()
return self.characters or nil
end
--[==[Returns the number of characters in the text that are part of this script.
'''Note:''' You should never assume that text consists entirely of the same script. Strings may contain spaces, punctuation and even wiki markup or HTML tags. HTML tags will skew the counts, as they contain Latin-script characters. So it's best to avoid them.]==]
function Script:countCharacters(text)
local charset = self._rawData.characters
if charset == nil then
return 0
end
return select(2, ugsub(text, "[" .. charset .. "]", ""))
end
function Script:hasCapitalization()
return not not self._rawData.capitalized
end
function Script:hasSpaces()
return self._rawData.spaces ~= false
end
function Script:isTransliterated()
return self._rawData.translit ~= false
end
--[==[Returns true if the script is (sometimes) sorted by scraping page content, meaning that it is sensitive to changes in capitalization during sorting.]==]
function Script:sortByScraping()
return not not self._rawData.sort_by_scraping
end
--[==[Returns the text direction. Horizontal scripts return {{code|lua|"ltr"}} (left-to-right) or {{code|lua|"rtl"}} (right-to-left), while vertical scripts return {{code|lua|"vertical-ltr"}} (vertical left-to-right) or {{code|lua|"vertical-rtl"}} (vertical right-to-left).]==]
function Script:getDirection()
return self._rawData.direction or "ltr"
end
function Script:getRawData()
return self._rawData
end
--[==[Returns {{code|lua|true}} if the script contains characters that require fixes to Unicode normalization under certain circumstances, {{code|lua|false}} if it doesn't.]==]
function Script:hasNormalizationFixes()
return not not self._rawData.normalizationFixes
end
--[==[Corrects discouraged sequences of Unicode characters to the encouraged equivalents.]==]
function Script:fixDiscouragedSequences(text)
if self:hasNormalizationFixes() and self._rawData.normalizationFixes.from then
for i, from in ipairs(self._rawData.normalizationFixes.from) do
text = ugsub(text, from, self._rawData.normalizationFixes.to[i] or "")
end
end
return text
end
-- Implements a modified form of Unicode normalization for instances where there are identified deficiencies in the default Unicode combining classes.
local function fixNormalization(text, self)
if self:hasNormalizationFixes() and self._rawData.normalizationFixes.combiningClasses then
local combiningClassFixes = self._rawData.normalizationFixes.combiningClasses
local charsToFix = table.concat(require("Module:table").keysToList(combiningClassFixes))
if umatch(text, "[" .. charsToFix .. "]") then
-- Obtain the list of default combining classes.
local combiningClasses = mw.loadData("Module:scripts/data/combiningClasses")
-- For each character that needs fixing, find all characters with combining classes equal to or lower than its default class, but greater than its new class (i.e. intermediary characters).
for charToFix, newCombiningClass in pairs(combiningClassFixes) do
local intermediaryChars = {}
for character, combiningClass in pairs(combiningClasses) do
if newCombiningClass < combiningClass and combiningClass <= combiningClasses[codepoint(charToFix)] then
table.insert(intermediaryChars, u(character))
end
end
-- Swap the character with any intermediary characters that are immediately before it.
text = ugsub(text, "([" .. table.concat(intermediaryChars) .. "]+)(" .. charToFix .. ")", "%2%1")
end
end
end
return text
end
function Script:toFixedNFC(text)
return fixNormalization(toNFC(text), self)
end
function Script:toFixedNFD(text)
return fixNormalization(toNFD(text), self)
end
function Script:toFixedNFKC(text)
return fixNormalization(toNFKC(text), self)
end
function Script:toFixedNFKD(text)
return fixNormalization(toNFKD(text), self)
end
function Script:toJSON()
if not self._types then
self:hasType()
end
local types = {}
for type in pairs(self._types) do
table.insert(types, type)
end
local ret = {
canonicalName = self:getCanonicalName(),
categoryName = self:getCategoryName("nocap"),
code = self:getCode(),
otherNames = self:getOtherNames(true),
aliases = self:getAliases(),
varieties = self:getVarieties(),
type = types,
direction = self:getDirection(),
characters = self:getCharacters(),
parent = self:getParent(),
systems = self:getSystemCodes(),
wikipediaArticle = self._rawData.wikipedia_article,
}
return require("Module:JSON").toJSON(ret)
end
Script.__index = Script
function export.makeObject(code, data, useRequire)
return data and setmetatable({
_rawData = data,
_code = code,
characters = data.characters
}, Script) or nil
end
-- Track scripts with anomalous names.
local scriptsToTrack = {
-- scripts already renamed
["IPAchar"] = true,
["musical"] = true,
["Ruminumerals"] = true,
["polytonic"] = true,
-- scripts not yet renamed
["Latinx"] = true,
["Latnx"] = true,
}
-- Temporary aliases from canonicalized names to (existing) anomalous names. Once we have converted everything we will
-- rename the scripts and remove the alias code.
local scriptAliases = {
-- scripts already renamed; we now alias the old names to the new ones
["IPAchar"] = "Ipach",
["musical"] = "Music",
["Ruminumerals"] = "Rumin",
["polytonic"] = "Polyt",
["Latinx"] = "Latn",
["Latnx"] = "Latn",
}
--[==[Finds the script whose code matches the one provided. If it exists, it returns a {{code|lua|Script}} object representing the script. Otherwise, it returns {{code|lua|nil}}, unless <span class="n">paramForError</span> is given, in which case an error is generated. If <code class="n">paramForError</code> is {{code|lua|true}}, a generic error message mentioning the bad code is generated; otherwise <code class="n">paramForError</code> should be a string or number specifying the parameter that the code came from, and this parameter will be mentioned in the error message along with the bad code.]==]
function export.getByCode(code, paramForError, disallowNil, useRequire)
-- Track uses of paramForError, ultimately so it can be removed, as error-handling should be done by [[Module:parameters]], not here.
if paramForError ~= nil then
require("Module:debug/track")("scripts/paramForError")
end
if code == nil and not disallowNil then
return nil
end
if scriptsToTrack[code] then
require("Module:debug/track")("scripts/" .. code)
end
code = scriptAliases[code] or code
local data
if useRequire then
data = require("Module:scripts/data")[code]
else
data = mw.loadData("Module:scripts/data")[code]
end
local retval = export.makeObject(code, data, useRequire)
if not retval and paramForError then
require("Module:languages/error")(code, paramForError, "script code", nil, "not real lang")
end
return retval
end
function export.getByCanonicalName(name, useRequire)
local code
if useRequire then
code = require("Module:scripts/by name")[name]
else
code = mw.loadData("Module:scripts/by name")[name]
end
return export.getByCode(code, nil, nil, useRequire)
end
--[==[
Takes a codepoint or a character and finds the script code (if any) that is
appropriate for it based on the codepoint, using the data module
[[Module:scripts/recognition data]]. The data module was generated from the
patterns in [[Module:scripts/data]] using [[Module:User:Erutuon/script recognition]].
Converts the character to a codepoint. Returns a script code if the codepoint
is in the list of individual characters, or if it is in one of the defined
ranges in the 4096-character block that it belongs to, else returns "None".
]==]
function export.charToScript(char)
return require("Module:scripts/charToScript").charToScript(char)
end
--[==[
Returns the code for the script that has the greatest number of characters in `text`. Useful for script tagging text
that is unspecified for language. Uses [[Module:scripts/recognition data]] to determine a script code for a character
language-agnostically. Specifically, it works as follows:
Convert each character to a codepoint. Iterate the counter for the script code if the codepoint is in the list
of individual characters, or if it is in one of the defined ranges in the 4096-character block that it belongs to.
Each script has a two-part counter, for primary and secondary matches. Primary matches are when the script is the
first one listed; otherwise, it's a secondary match. When comparing scripts, first the total of both are compared
(i.e. the overall number of matches). If these are the same, the number of primary and then secondary matches are
used as tiebreakers. For example, this is used to ensure that `Grek` takes priority over `Polyt` if no characters
which exclusively match `Polyt` are found, as `Grek` is a subset of `Polyt`.
If `none_is_last_resort_only` is specified, this will never return {"None"} if any characters in `text` belong to a
script. Otherwise, it will return {"None"} if there are more characters that don't belong to a script than belong to
any individual script. (FIXME: This behavior is probably wrong, and `none_is_last_resort_only` should probably
become the default.)
]==]
function export.findBestScriptWithoutLang(text, none_is_last_resort_only)
return require("Module:scripts/charToScript").findBestScriptWithoutLang(text, none_is_last_resort_only)
end
return export
9u4ovwnmpkjjs2odcw48b9zgfg9z4vi
มอดูล:scripts/data
828
36356
1908585
1907870
2024-04-26T03:48:59Z
Octahedron80
267
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Common.css]].
]=]
local u = mw.ustring.char
local m = {}
m["Adlm"] = {
"อัดลัม",
"alphabet",
aliases = {"Adlam"},
characters = "؟ـ𞤀-𞥟",
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"อาฟากา",
"syllabary",
aliases = {"Afaka"},
}
m["Aghb"] = {
"Caucasian Albanian",
"alphabet",
characters = "𐔰-𐕯",
}
m["Ahom"] = {
"อาหม",
"abugida",
aliases = {"อะหม", "Ahom"},
characters = "𑜀-",
}
m["Arab"] = {
"อาหรับ",
"abjad", -- more precisely, impure abjad
aliases = {"อารบิก", "อาระบิก", "Arabic"},
varieties = {{"ยาวี", "Jawi"}, {"Nastaliq", "Nastaleeq"}},
characters = "-ۿݐ-ݿࡰ-ࣿﭐ-﷏ﷰ-﷿ﹰ-𐋠-𐋻𐹠--𐻿𞸀-",
direction = "rtl",
normalizationFixes = {
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
otherNames = {"เปอร์โซ-อาหรับ", "Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ku-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ms-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["mzn-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ota-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["pa-Arab"] = {
"ชาห์มุขี",
m["Arab"][2],
aliases = {"Shahmukhi"},
characters = m["Arab"].characters,
otherNames = {"อาหรับ", "Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["sd-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["tt-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ug-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ur-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["xka-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = {
"แอราเมอิกจักรวรรดิ",
"abjad",
aliases = {"Imperial Aramaic"},
characters = "𐡀-𐡟",
direction = "rtl",
}
m["Armn"] = {
"อาร์มีเนีย",
"alphabet",
aliases = {"อาร์เมเนีย", "Armenian"},
characters = "-֏ﬓ-ﬗ",
capitalized = true,
}
m["Avst"] = {
"อเวสตะ",
aliases = {"Avestan"},
"alphabet",
characters = "𐬀-𐬿",
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
m["Avst"][2],
aliases = m["Avst"].aliases,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = {
"บาหลี",
"abugida",
aliases = {"Balinese"},
characters = "ᬀ-",
}
m["Bamu"] = {
"บามุม",
"syllabary",
aliases = {"Bamum"},
characters = "ꚠ-𖠀-",
}
m["Bass"] = {
"บัสซา",
"alphabet",
aliases = {"วาห์", "Bassa", "Bassa Vah", "Vah"},
characters = "𖫐-",
}
m["Batk"] = {
"บาตัก",
"abugida",
aliases = {"Batak"},
characters = "ᯀ-᯿",
}
m["Beng"] = {
"เบงกอล",
"abugida",
aliases = {"เบงกาลี", "บังลา", "Bengali"},
characters = "॒॑।॥ঀ-৯৲-᳕᳖᳘᳐᳒᳡ᳪ᳭ᳲᳵ-᳷꣱",
normalizationFixes = {
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = {
"อัสสัม",
m["Beng"][2],
otherNames = {"เบงกอล-อัสสัม", "เบงกาลี-อัสสัม", "นาครีตะวันออก", "Assamese", "Bengali-Assamese", "Eastern Nagari"},
characters = "॒॑।॥ঀ-য-᳕᳖᳘᳐᳒᳡ᳪ᳭ᳲᳵ-᳷꣱",
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = {
"ไภกษุกี",
"abugida",
aliases = {"Bhaiksuki"},
characters = "𑰀-",
}
m["Blis"] = {
"Blissymbols",
"logography",
aliases = {"Blissymbolics"},
-- Not in Unicode
}
m["Bopo"] = {
"จู้อิน",
"semisyllabary",
aliases = {"จู้อินฝูเฮ่า", "ปอพอมอฟอ", "ปัวพัวมัวฟัว", "Zhuyin", "Zhuyin Fuhao", "Bopomofo"},
characters = "ˇˉˊˋ˙˪˫、-〃〈-】〓-〟〪-〭〰〷・-ㄯ﹅﹆。-・",
}
m["Brah"] = {
"พราหมี",
"abugida",
aliases = {"พราหฺมี", "Brahmi"},
characters = "𑀀-𑁿",
normalizationFixes = {
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = {
"เบรลล์",
"alphabet",
aliases = {"Braille"},
characters = "⠀-⣿",
}
m["Bugi"] = {
"บูกิส",
"abugida",
aliases = {"ลนตารา", "Buginese", "Lontara"},
characters = "ᨀ-᨟ꧏ",
}
m["Buhd"] = {
"บูฮิด",
"abugida",
aliases = {"Buhid"},
characters = "᜵᜶ᝀ-ꧏ",
}
m["Cakm"] = {
"จักมา",
"abugida",
aliases = {"Chakma"},
characters = "০-৯၀-၉𑄀-",
}
m["Cans"] = {
"Canadian syllabics",
"abugida",
characters = "᐀-ᙿᢰ-𑪰-𑪿",
}
m["Cari"] = {
"คาเรีย",
"alphabet",
aliases = {"Carian"},
characters = "𐊠-",
}
m["Cham"] = {
"จาม",
"abugida",
aliases = {"Cham"},
characters = "ꨀ-꩟",
}
m["Cher"] = {
"เชโรกี",
"syllabary",
aliases = {"Cherokee"},
characters = "Ꭰ-ꭰ-ꮿ",
}
m["Chrs"] = {
"Chorasmian",
"abjad",
characters = "𐾰-",
direction = "rtl",
}
m["Copt"] = {
"คอปติก",
"alphabet",
characters = "Ϣ-ϯⲀ-⳿𐋠-𐋻", -- this is mostly "Coptic", not unified "Greek and Coptic"
capitalized = true,
}
m["Cpmn"] = {
"Cypro-Minoan",
"syllabary",
aliases = {"Cypro Minoan"},
characters = "𐄀𐄁𒾐-",
}
m["Cprt"] = {
"ไซปรัส",
"syllabary",
aliases = {"ไซเปรียท", "Cypriot"},
characters = "𐄀-𐄂𐄇-𐄳𐄷-𐄿𐠀-𐠿",
direction = "rtl",
}
m["Cyrl"] = {
"ซีริลลิก",
"alphabet",
aliases = {"Cyrillic"},
characters = "Ѐ-ԯᲀ-ᴫᵸ᷸ⷠ-ⷿ⹃Ꙁ-ꚟ︮︯𞀰-𞂏",
capitalized = true,
}
m["Cyrs"] = {
"ซีริลลิกเก่า",
m["Cyrl"][2],
aliases = {"ซีริลลิกช่วงต้น", "Old Cyrillic", "Early Cyrillic"},
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
}
m["Deva"] = {
"เทวนาครี",
"abugida",
aliases = {"Devanagari"},
characters = "ऀ-ॿ꣠-ꣿ𑬀-𑬉",
normalizationFixes = {
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = {
"ดิเวส อกุรุ",
"abugida",
aliases = {"ดิเวหิ อกุรุ", "Dhives Akuru", "Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
characters = "𑤀-𑤆𑤉𑤌-𑤓𑤕𑤖𑤘-𑤵𑤷𑤸𑤻-𑥆𑥐-𑥙",
}
m["Dogr"] = {
"โฑครี",
"abugida",
aliases = {"Dogri", "Dogra"},
characters = "𑠀-𑠻",
}
m["Dsrt"] = {
"Deseret",
"alphabet",
characters = "𐐀-𐑏",
capitalized = true,
}
m["Dupl"] = {
"Duployan",
"alphabet",
characters = "𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙𛲜-𛲟",
}
m["Egyd"] = {
"Demotic",
"abjad, logography",
}
m["Egyh"] = {
"Hieratic",
"abjad, logography",
}
m["Egyp"] = {
"ไฮเออโรกลีฟอียิปต์",
"abjad, logography",
aliases = {"Egyptian hieroglyphic"},
characters = "𓀀-𓑕",
varieties = {"Hieratic"},
wikipedia_article = "ไฮเออโรกลีฟอียิปต์",
normalizationFixes = {
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = {
"เอลบาซาน",
"alphabet",
aliases = {"Elbasan"},
characters = "𐔀-𐔧",
}
m["Elym"] = {
"Elymaic",
"abjad",
characters = "𐿠-𐿶",
direction = "rtl",
}
m["Ethi"] = {
"เอธิโอเปีย",
"abugida",
aliases = {"กืออึซ", "Ethiopic", "Ge'ez"},
characters = "ሀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፼ᎀ-᎙ⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮ𞟠-𞟦𞟨-𞟫𞟭𞟮𞟰-𞟾",
}
m["Geok"] = {
"Khutsuri",
"alphabet",
characters = "Ⴀ-ჅჇჍ჻ⴀ-ⴥⴧⴭ", -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = {
"จอร์เจีย",
"alphabet",
aliases = {"Georgian"},
characters = "ა-ჿᲐ-ᲺᲽ-Ჿ", -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = {
"กลาโกลิติก",
"alphabet",
aliases = {"Glagolitic"},
characters = "Ⰰ-ⱟ𞀀-𞀆𞀈-𞀘𞀛-𞀡𞀣𞀤𞀦-𞀪",
capitalized = true,
}
m["Gong"] = {
"คุญชลาโคณฑี",
"abugida",
characters = "𑵠-𑵥𑵧𑵨𑵪-𑶎𑶐𑶑𑶓-𑶘𑶠-𑶩",
}
m["Gonm"] = {
"มสรามโคณฑี",
"abugida",
characters = "𑴀-𑴆𑴈𑴉𑴋-𑴶𑴺𑴼𑴽𑴿-𑵇𑵐-𑵙",
}
m["Goth"] = {
"กอท",
"alphabet",
aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"},
characters = "𐌰-𐍊",
}
m["Gran"] = {
"ครันถะ",
"abugida",
aliases = {"Grantha"},
characters = "𑌀-𑌃𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲𑌳𑌵-𑌹𑌼-𑍄𑍇𑍈𑍋-𑍍𑍐𑍗𑍝-𑍣𑍦-𑍬𑍰-𑍴",
}
m["Grek"] = {
"กรีก",
"alphabet",
aliases = {"Greek"},
characters = "Ͱ-ͷͺ-Ϳ΄-ΊΌΎ-ΡΣ-ϡϰ-Ͽᴦ-ᴪᵝ-ᵡᵦ-ᵪᶿΩ℩ꭥ𐅀-𐆎𐆠𝈀-𝉅",
capitalized = true,
}
m["Polyt"] = {
"กรีก",
m["Grek"][2],
aliases = m["Grek"].aliases,
characters = "ἀ-῾" .. m["Grek"].characters,
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = {
"คุชราต",
"abugida",
aliases = {"คุชราตี", "Gujarati"},
characters = "ઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૱ૺ-૿",
normalizationFixes = {
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Guru"] = {
"คุรมุขี",
"abugida",
aliases = {"กูร์มูคี", "เกอร์มุกห์", "Gurmukhi"},
characters = "ਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-੶",
normalizationFixes = {
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = {
"ฮันกึล",
"syllabary",
aliases = {"ฮังกึล", "Hangul", "Hangeul"},
characters = (
"가-힣".. -- Syllables
"ᄀ-ᇿ".. -- Jamo
"ꥠ-ꥼ".. -- Jamo Ext-A
"ힰ-ퟻ".. -- Jamo Ext-B
"ㄱ-ㆎ".. -- Compat Jamo
"ᅠ-ᅵ" -- Halfwidth
),
}
m["Hani"] = {
"จีน",
"logography",
aliases = {"ฮั่น", "Han"},
characters = (
"一-鿿" ..
"㐀-䶿" .. -- ExtA
"𠀀-𪛟" .. -- ExtB
"𪜀-" .. -- ExtC-F & I
"𰀀-𲎯" .. -- ExtG-H
"﨎﨏﨑﨓﨔﨟﨡﨣﨤﨧﨨﨩" ..
"⼀-" .. -- Kangxi Radicals
"⺀-" .. -- Radicals Supplement
" -〿" .. -- CJK Symbols and Punctuation
"𖿢𖿣𖿰𖿱" .. -- Ideographic Symbols and Punctuation
"㇀-" .. -- Strokes
"㋿㍻-㍿" .. -- 組文字
"㈠-㉇㊀-㊰㋀-㋋㍘-㍰㏠-㏾🈐-🈒🈔-🈻🉀-🉈🉐🉑🉠-🉥" ..
-- Saved as bytes to stop normalization on save.
"\239\164\128-\239\171\191" .. -- Compatibility Ideographs
"\240\175\160\128-\240\175\168\159" -- Compatibility Ideographs Supplement
),
varieties = {{"ฮั่นจื่อ", "Hanzi"}, {"คันจิ", "Kanji"}, {"ฮันจา", "Hanja"}, {"จื๋อโนม", "Chu Nom"}},
spaces = false,
}
m["Hans"] = {
"จีนตัวย่อ",
m["Hani"][2],
aliases = {"Simplified Han"},
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"จีนตัวเต็ม",
m["Hani"][2],
aliases = {"Traditional Han"},
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = {
"ฮานูโนโอ",
"abugida",
aliases = {"Hanunoo"},
characters = "ᜠ-᜴",
}
m["Hatr"] = {
"Hatran",
"abjad",
characters = "𐣠-𐣿",
direction = "rtl",
}
m["Hebr"] = {
"ฮีบรู",
"abjad", -- more precisely, impure abjad
aliases = {"Hebrew"},
characters = u(0x0590) .. "-" .. u(0x05FF) .. u(0xFB1D) .. "-" .. u(0xFB4F),
direction = "rtl",
}
m["Hira"] = {
"ฮิรางานะ",
"syllabary",
aliases = {"ฮิระงะนะ", "Hiragana"},
characters = "ぁ-ゟ𛀁-𛄞𛅐𛅑𛅒🈀",
varieties = {{"เฮ็นไตงานะ", "Hentaigana"}},
spaces = false,
}
m["Hluw"] = {
"ไฮเออโรกลีฟอานาโตเลีย",
"logography, syllabary",
aliases = {"Anatolian Hieroglyphs"},
characters = "𔐀-𔙆",
wikipedia_article = "ไฮเออโรกลีฟอานาโตเลีย",
}
m["Hmng"] = {
"ม้ง",
"semisyllabary",
aliases = {"Hmong", "Pahawh Hmong"},
characters = "𖬀-𖮏",
}
m["Hmnp"] = {
"Nyiakeng Puachue Hmong",
"alphabet",
characters = "𞄀-𞅏",
}
m["Hung"] = {
"ฮังการีเก่า",
"alphabet",
aliases = {"รูนฮังการี", "Old Hungarian", "Hungarian runic"},
characters = "𐲀-𐲲",
capitalized = true,
direction = "rtl",
}
m["Ibrn"] = {
"ไอบีเรีย",
"semisyllabary",
aliases = {"Iberian"},
}
m["Imag"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Inds"] = {
"สินธุ",
aliases = {"อินดัส", "Indus", "Harappan", "Indus Valley"},
}
m["IPAchar"] = {
"สัทอักษรสากล",
aliases = {"International Phonetic Alphabet", "IPA"},
}
m["Ital"] = {
"อิตาลิกเก่า",
"alphabet",
aliases = {"Old Italic"},
characters = "𐌀-𐌯",
}
m["Java"] = {
"ชวา",
"abugida",
aliases = {"Javanese"},
characters = "ꦀ-꧟",
}
m["Jurc"] = {
"จูร์เชน",
aliases = {"Jurchen"},
spaces = false,
}
m["Kali"] = {
"กะยา",
"abugida",
aliases = {"Kayah Li"},
characters = "꤀-꤯",
}
m["Kana"] = {
"คาตากานะ",
"syllabary",
aliases = {"คะตะกะนะ", "Katakana"},
characters = "゠-ヿㇰ-ㇿ㌀-㍗ヲ-゚𛀀𛅤𛅥𛅦𛅧",
spaces = false,
}
m["Kawi"] = {
"Kawi",
"abugida",
characters = "𑼀-𑽙",
}
m["Khar"] = {
"ขโรษฐี",
"abugida",
aliases = {"Kharoshthi"},
characters = "𐨀-𐩘",
direction = "rtl",
}
m["Khmr"] = {
"เขมร",
"abugida",
aliases = {"Khmer"},
characters = "ក-៝០-៩៰-៹᧠-᧿",
spaces = false,
normalizationFixes = {
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = {
"Khojki",
"abugida",
characters = "𑈀-𑈾",
normalizationFixes = {
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Kitl"] = {
"คีตันใหญ่",
"logography, syllabary",
aliases = {"Khitan Large"},
spaces = false,
}
m["Kits"] = {
"คีตันเล็ก",
"logography, syllabary",
aliases = {"Khitan Small"},
characters = "𘬀-𘳕"..u(0x16FE4),
spaces = false,
}
m["Knda"] = {
"กันนาดา",
"abugida",
aliases = {"Kannada"},
characters = "ಀ-ೲ",
normalizationFixes = {
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
"syllabary",
-- Not in Unicode
}
m["Kthi"] = {
"ไกถี",
"abugida",
aliases = {"Kaithi"},
characters = "𑂀-",
}
m["Lana"] = {
"ไทธรรม",
"abugida",
aliases = {"ธรรม", "ตัวเมือง", "ล้านนา", "Tai Tham", "Tham", "Tua Mueang", "Lanna"},
characters = "ᨠ-ᩞ᩠-᩿᩼᪀-᪉᪐-᪙᪠-᪭",
spaces = false,
}
m["Laoo"] = {
"ลาว",
"abugida",
aliases = {"Lao"},
characters = "ກຂຄຆ-ຊຌ-ຣລວ-ຽເ-ໄໆ່-໎໐-໙ໜ-ໟ",
spaces = false,
}
m["Latn"] = {
"ละติน",
"alphabet",
aliases = {"ลาติน", "โรมัน", "Latin", "Roman"},
characters = "A-Za-zªºÀ-ÖØ-öø-ɏḀ-ỿ",
varieties = {{"รูมี", "Rumi"}, {"โรมะจิ","Romaji", "Rōmaji"}, "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"ฟรักทูร์",
m["Latn"][2],
aliases = {"Fraktur"},
characters = m["Latn"].characters,
otherNames = {"แบล็กเลตเทอร์", "Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"แกลิก",
m["Latn"][2],
aliases = {"Gaelic"},
characters = m["Latn"].characters,
otherNames = {"ไอริช", "Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latnx"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
characters = m["Latn"].characters .. "ɐ-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꟿꬰ-ꭚꭜ-ꭤꭦ-ꭩff-stA-Za-z𐞀-𐞅𐞇-𐞰𐞲-𐞺𝼀-𝼞𝼥-𝼪",
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
"abugida",
}
m["Lepc"] = {
"เลปชา",
"abugida",
aliases = {"Lepcha"},
characters = "ᰀ-ᱏ",
}
m["Limb"] = {
"ลิมบู",
"abugida",
aliases = {"Limbu"},
characters = "ᤀ-᥏",
}
m["Lina"] = {
"ลิเนียร์เอ",
aliases = {"Linear A"},
characters = "𐘀-𐝧",
}
m["Linb"] = {
"ลิเนียร์บี",
aliases = {"Linear B"},
characters = "𐀀-𐃺",
}
m["Lisu"] = {
"ลีสู่",
"alphabet",
aliases = {"ฟราเซอร์", "Lisu", "Fraser"},
characters = "ꓐ-꓿𑾰",
normalizationFixes = {
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
"syllabary",
-- Not in Unicode
}
m["Lyci"] = {
"ลิเชีย",
"alphabet",
aliases = {"Lycian"},
characters = "𐊀-𐊜",
}
m["Lydi"] = {
"ลิเดีย",
"alphabet",
aliases = {"Lydian"},
characters = "𐤠-𐤿",
direction = "rtl",
}
m["Mahj"] = {
"Mahajani",
"abugida",
characters = "𑅐-𑅶",
}
m["Maka"] = {
"ลนตารา",
"abugida",
aliases = {"Lontara", "Makasar"},
characters = "𑻠-𑻸",
}
m["Mand"] = {
"มันดาอิก",
aliases = {"Mandaic", "Mandaean"},
characters = "ࡀ-࡞",
direction = "rtl",
}
m["Mani"] = {
"Manichaean",
"abjad",
characters = "𐫀-𐫶",
direction = "rtl",
}
m["Marc"] = {
"Marchen",
"abugida",
characters = "𑱰-𑲶",
}
m["Maya"] = {
"มายา",
aliases = {"มายัน", "Maya", "Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
characters = "𝋠-𝋳",
}
m["Medf"] = {
"Medefaidrin",
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
characters = "𖹀-𖺚",
capitalized = true,
}
m["Mend"] = {
"Mende",
aliases = {"Mende Kikakui"},
characters = "𞠀-𞣖",
direction = "rtl",
}
m["Merc"] = {
"Meroitic cursive",
"abugida",
characters = "𐦠-𐦿",
direction = "rtl",
}
m["Mero"] = {
"Meroitic hieroglyphic",
"abugida",
characters = "𐦀-𐦟",
direction = "rtl",
}
m["Mlym"] = {
"มลยาฬัม",
"abugida",
aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"},
characters = "ഀ-ൿ",
normalizationFixes = {
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = {
"โมฑี",
"abugida",
aliases = {"Modi"},
characters = "𑘀-𑙙",
normalizationFixes = {
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = {
"มองโกเลีย",
"alphabet",
aliases = {"Mongolian", "Mongol bichig", "Hudum Mongol bichig"},
characters = "᠀-᠅᠊-᠙ᠠ-ᡂᡸᢀ-ᢗᢦᢩ 𑙠-𑙨",
direction = "down",
}
m["mnc-Mong"] = {
"แมนจู",
m["Mong"][2],
aliases = {"Manchu"},
characters = "᠁᠄᠈-᠏ᠠᠣᠨ-ᠪᠮ-ᠰᠴ-ᠸᠺᡝᡟ-ᡡᡤ-ᡩᡬ-ᡱᡳ-ᡷᢀ-ᢈᢏᢚ-ᢥᢨᢪ ",
direction = "down",
parent = "Mong",
}
m["sjo-Mong"] = {
"ซิเบ",
m["Mong"][2],
aliases = {"Xibe", "Sibe"},
characters = "᠄᠇᠊-᠏ᠠᠣᠨᠪᠮ-ᠰᠴ-ᠸᠺᡝ-ᡲ ",
direction = "down",
parent = "mnc-Mong",
}
m["xwo-Mong"] = {
"Clear Script",
m["Mong"][2],
aliases = {"Todo", "Todo bichig"},
characters = "᠀᠁᠄-᠆᠊-ᠠᠨᠯ-ᠱᠴᠷᠸᠺᠻᡀᡃ-ᡜᢀ-ᢇᢉ-ᢏᢔᢖ-ᢙᢧ 𑙩-𑙬",
direction = "down",
parent = "Mong",
}
m["Moon"] = {
"Moon",
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"รหัสมอร์ส",
aliases = {"Morse code"},
}
m["Mroo"] = {
"Mro",
characters = "𖩀-𖩯",
}
m["Mtei"] = {
"มณีปุระ",
"abugida",
aliases = {"ไมไตมะเยก", "มีไตมะเยก", "Manipuri", "Meitei Mayek", "Meetei Mayek"},
characters = "ꯀ-꯹ꫠ-꫶",
}
m["Mult"] = {
"Multani",
"abugida",
characters = "𑊀-𑊩",
}
m["Music"] = {
"สัญกรณ์ดนตรี",
"pictography",
aliases = {"Musical notation"},
characters = "𝄀-𝇨",
translit = false,
}
m["Mymr"] = {
"พม่า",
"abugida",
aliases = {"เมียนมา", "Burmese", "Myanmar"},
characters = "က-႟ꩠ-ꩿꧠ-ꧾ",
spaces = false,
}
m["Nagm"] = {
"Nag Mundari",
"alphabet",
characters = "𞓐-𞓹",
}
m["Nand"] = {
"นันทินาครี",
"abugida",
aliases = {"Nandinagari"},
characters = "𑦠-𑧤",
}
m["Narb"] = {
"Old North Arabian",
"abjad",
characters = "𐪀-𐪟",
direction = "rtl",
}
m["Nbat"] = {
"Nabataean",
"abjad",
aliases = {"Nabatean"},
characters = "𐢀-𐢯",
direction = "rtl",
}
m["Newa"] = {
"Newa",
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
characters = "𑐀-𑑡",
}
m["Nkdb"] = {
"Dongba",
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = {
"N'Ko",
"alphabet",
characters = "߀-߿",
direction = "rtl",
}
m["None"] = {
"ไม่ระบุ",
aliases = {"Unspecified"},
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Nshu"] = {
"Nüshu",
"syllabary",
aliases = {"Nushu"},
characters = "𖿡𛅰-𛋻",
spaces = false,
}
m["Ogam"] = {
"Ogham",
characters = " -᚜",
}
m["Olck"] = {
"Ol Chiki",
characters = "᱐-᱿",
}
m["Orkh"] = {
"Orkhon runes",
aliases = {"Old Turkic"},
characters = "𐰀-𐱈",
direction = "rtl",
}
m["Orya"] = {
"โอริยา",
"abugida",
aliases = {"โอเดีย", "Oriya", "Odia"},
characters = "ଁ-୷",
normalizationFixes = {
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = {
"Osage",
characters = "𐒰-𐓻",
capitalized = true,
}
m["Osma"] = {
"อุสมาน",
aliases = {"Osmanya"},
characters = "𐒀-𐒩",
}
m["Ougr"] = {
"อุยกูร์เก่า",
"abjad, alphabet",
aliases = {"Old Uyghur"},
characters = "𐽰-𐾉",
direction = "down",
}
m["Palm"] = {
"Palmyrene",
characters = "𐡠-𐡿",
direction = "rtl",
}
m["Pauc"] = {
"Pau Cin Hau",
characters = "𑫀-𑫸",
}
m["Perm"] = {
"Old Permic",
characters = "𐍐-𐍺",
}
m["Phag"] = {
"Phags-pa",
"abugida",
characters = "᠂᠃᠅ 。ꡀ-꡷",
direction = "down",
}
m["Phli"] = {
"Inscriptional Pahlavi",
"abjad",
characters = "𐭠-𐭿",
direction = "rtl",
}
m["Phlp"] = {
"Psalter Pahlavi",
"abjad",
characters = "𐮀-𐮯",
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Phnx"] = {
"ฟินิเชีย",
"abjad",
aliases = {"Phoenician"},
characters = "𐤀-𐤟",
direction = "rtl",
}
m["Plrd"] = {
"Pollard",
"abugida",
aliases = {"Miao"},
characters = "𖼀-𖾟",
}
m["Prti"] = {
"Inscriptional Parthian",
characters = "𐭀-𐭟",
direction = "rtl",
}
m["Ranj"] = {
"Ranjana",
"abugida",
-- Not in Unicode
}
m["Rjng"] = {
"Rejang",
"abugida",
characters = "ꤰ-꥟",
}
m["Rohg"] = {
"ฮานิฟ",
"alphabet",
aliases = {"ฮานีฟี", "Hanifi Rohingya", "Hanifi"},
characters = "𐴀-𐴹",
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
-- Not in Unicode
}
m["Rumin"] = {
"Rumi numerals",
characters = "𐹠-𐹾",
character_category = "Rumi numerals",
}
m["Runr"] = {
"รูน",
"alphabet",
aliases = {"รูนิก", "Runic"},
characters = "ᚠ-ᛰ",
}
m["Samr"] = {
"Samaritan",
"abjad",
characters = "ࠀ-࠾",
direction = "rtl",
}
m["Sarb"] = {
"Old South Arabian",
"abjad",
characters = "𐩠-𐩿",
direction = "rtl",
}
m["Saur"] = {
"Saurashtra",
"abugida",
characters = "ꢀ-꣙",
}
m["Semap"] = {
"สัญญาณธง",
"pictography",
aliases = {"flag semaphore"},
}
m["Sgnw"] = {
"SignWriting",
"pictography",
characters = "𝠀-𝪯",
translit = false,
}
m["Shaw"] = {
"Shavian",
characters = "𐑐-𐑿",
}
m["Shrd"] = {
"ศารทา",
"abugida",
aliases = {"Sharada"},
characters = "𑆀-𑇙",
}
m["Shui"] = {
"Sui",
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = {
"สิทธัม",
"abugida",
aliases = {"Siddham"},
characters = "𑖀-𑗝",
}
m["Sind"] = {
"คุดาบาด",
"abugida",
aliases = {"Khudabadi", "Khudawadi"},
characters = "𑊰-𑋹",
normalizationFixes = {
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = {
"สิงหล",
"abugida",
aliases = {"Sinhalese", "Sinhala"},
characters = "ං-෴",
normalizationFixes = {
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = {
"ซอกเดีย",
"abjad",
aliases = {"Sogdian"},
characters = "𐼰-𐽙",
direction = "rtl",
}
m["Sogo"] = {
"ซอกเดียเก่า",
"abjad",
aliases = {"Old Sogdian"},
characters = "𐼀-𐼧",
direction = "rtl",
}
m["Sora"] = {
"Sorang Sompeng",
aliases = {"Sora Sompeng"},
characters = "𑃐-𑃹",
}
m["Soyo"] = {
"Soyombo",
"abugida",
characters = "𑩐-𑪢",
}
m["Sund"] = {
"ซุนดา",
"abugida",
aliases = {"Sundanese"},
characters = "ᮀ-ᮿ",
}
m["Sylo"] = {
"สิเลฏินาครี",
"abugida",
aliases = {"สิลอฏินาครี", "Syloti Nagri", "Sylheti Nagari"},
characters = "ꠀ-꠫",
}
m["Syrc"] = {
"ซีรีแอก",
"abjad", -- more precisely, impure abjad
aliases = {"ซีเรียค", "Syriac"},
characters = "܀-ݏ"..u(0x0860).."-"..u(0x086A),
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = {
"ตักบันวา",
"abugida",
aliases = {"Tagbanwa"},
characters = "ᝠ-ᝳ",
}
m["Takr"] = {
"ฏากรี",
"abugida",
aliases = {"ตากรี", "Takri"},
characters = "𑚀-𑛉",
normalizationFixes = {
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = {
"ไทใต้คง",
"abugida",
aliases = {"ไทเหนือ", "ไทเหนือใหม่", "ไตเหลอ", "Tai Nüa", "Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
characters = "ᥐ-ᥭᥰ-ᥴ",
spaces = false,
}
m["Talu"] = {
"ไทลื้อใหม่",
"abugida",
aliases = {"New Tai Lue"},
characters = "ᦀ-ᦫᦰ-ᧉ᧐-᧚᧞᧟",
spaces = false,
}
m["Taml"] = {
"ทมิฬ",
"abugida",
aliases = {"Tamil"},
characters = "ஂ-௺𑿀-𑿿",
normalizationFixes = {
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = {
"ตังกุต",
"logography, syllabary",
aliases = {"Tangut"},
characters = "𖿠𗀀-𘫿𘴀-𘴈",
spaces = false,
}
m["Tavt"] = {
"ไทเวียด",
"abugida",
aliases = {"Tai Viet"},
characters = "ꪀ-ꫂꫛ-꫟",
spaces = false,
}
m["Telu"] = {
"เตลูกู",
"abugida",
aliases = {"Telugu"},
characters = "ఀ-౿",
normalizationFixes = {
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"เทงกวาร์",
aliases = {"Tengwar"},
}
m["Tfng"] = {
"ทิฟินาค",
"abjad, alphabet",
aliases = {"Tifinagh"},
otherNames = {"ลิบีโค-เบอร์เบอร์", "เบอร์เบอร์", "Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
characters = "ⴰ-⵿",
}
m["Tglg"] = {
"ไบบายิน",
"abugida",
aliases = {"ตากาล็อก", "Baybayin", "Tagalog"},
characters = "ᜀ-᜔",
}
m["Thaa"] = {
"ทานะ",
"abugida",
aliases = {"Thaana"},
characters = "ހ-ޱ",
direction = "rtl",
}
m["Thai"] = {
"ไทย",
"abugida",
aliases = {"Thai"},
characters = "ก-ฺเ-๛",
spaces = false,
translit = false, --only for this project
}
m["Tibt"] = {
"ทิเบต",
"abugida",
aliases = {"Tibetan"},
characters = "ༀ-࿚",
normalizationFixes = {
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"Tamyig",
m["Tibt"][2],
aliases = m["Tibt"].aliases,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["xzh-Tibt"] = {
"Zhang-Zhung",
m["Tibt"][2],
aliases = m["Tibt"].aliases,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = {
"Tirhuta",
"abugida",
characters = "𑒀-𑓙",
normalizationFixes = {
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = {
"Tangsa",
"alphabet",
characters = "𖩰-𖫉",
}
m["Toto"] = {
"Toto",
"abugida",
characters = "𞊐-𞊮",
}
m["Ugar"] = {
"ยูการิต",
"abjad",
aliases = {"ยูการิติก", "Ugaritic"},
characters = "𐎀-𐎟",
}
m["Vaii"] = {
"ไว",
"syllabary",
aliases = {"Vai"},
characters = "ꔀ-ꘫ",
}
m["Visp"] = {
"Visible Speech",
"alphabet",
-- Not in Unicode
}
m["Vith"] = {
"Vithkuqi",
"alphabet",
characters = "𐕰-𐖼",
capitalized = true,
}
m["Wara"] = {
"วรังจิติ",
aliases = {"วรังกษิติ", "Warang Citi", "Varang Kshiti"},
characters = "𑢠-𑣿",
capitalized = true,
}
m["Wcho"] = {
"Wancho",
"alphabet",
characters = "𞋀-𞋿",
}
m["Wole"] = {
"Woleai",
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = {
"เปอร์เซียเก่า",
aliases = {"Old Persian"},
characters = "𐎠-𐏕",
}
m["Xsux"] = {
"คูนิฟอร์ม",
aliases = {"Cuneiform", "Sumero-Akkadian Cuneiform"},
characters = "𒀀-𒎙𒐀-𒑳",
}
m["Yezi"] = {
"Yezidi",
"alphabet",
characters = "𐺀-𐺱",
direction = "rtl",
}
m["Yiii"] = {
"อี๋",
"syllabary",
aliases = {"Yi"},
characters = "ꀀ-꓆",
}
m["Zanb"] = {
"Zanabazar Square",
characters = u(0x11A00).."-"..u(0x11A47),
}
m["Zmth"] = {
"mathematical notation",
characters = "ℵ∀-⋿⟀-⟯⦀-⫿𝐀-𝟿",
translit = false,
character_category = "Mathematical notation symbols", -- ?
}
m["Zsym"] = {
"สัญลักษณ์",
"pictography",
aliases = {"symbol"},
characters = "─-➿←-⇿⌀-⏿⬀-⯾🀀-🃵🌀-🩭",
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"ยังไม่กำหนด",
aliases = {"undetermined"},
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"ยังไม่มีรหัส",
aliases = {"uncoded"},
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of
m["Hrkt"] = { -- TODO: add hentaigana
"คานะ",
"syllabary",
aliases = {"Kana", "Japanese syllabaries"},
characters = m["Hira"].characters .. m["Kana"].characters,
spaces = false,
}
m["Jpan"] = {
"ญี่ปุ่น",
"logography, syllabary",
aliases = {"Japanese"},
characters = m["Hrkt"].characters .. m["Hani"].characters .. m["Latnx"].characters,
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = {
"เกาหลี",
"logography, syllabary",
aliases = {"Korean"},
characters = m["Hang"].characters .. m["Hani"].characters,
}
return m
ib4mvjj7y057kjoi9f72n6n3rob4cfi
1908586
1908585
2024-04-26T04:04:49Z
Octahedron80
267
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Common.css]].
]=]
local concat = table.concat
local insert = table.insert
local u = mw.ustring.char
local function process_ranges(sc)
local ranges, chars = sc.ranges, {}
for i = 2, #ranges, 2 do
if ranges[i] == ranges[i - 1] then
insert(chars, u(ranges[i]))
else
insert(chars, u(ranges[i - 1]))
if ranges[i] > ranges[i - 1] + 1 then
insert(chars, "-")
end
insert(chars, u(ranges[i]))
end
end
sc.characters = concat(chars)
ranges.n = #ranges
return sc
end
local m = {}
m["Adlm"] = process_ranges{
"อัดลัม",
"alphabet",
aliases = {"Adlam"},
ranges = {
0x061F, 0x061F,
0x0640, 0x0640,
0x1E900, 0x1E94B,
0x1E950, 0x1E959,
0x1E95E, 0x1E95F,
},
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"อาฟากา",
"syllabary",
aliases = {"Afaka"},
}
m["Aghb"] = process_ranges{
"Caucasian Albanian",
"alphabet",
ranges = {
0x10530, 0x10563,
0x1056F, 0x1056F,
},
}
m["Ahom"] = process_ranges{
"อาหม",
"abugida",
aliases = {"อะหม", "Ahom"},
ranges = {
0x11700, 0x1171A,
0x1171D, 0x1172B,
0x11730, 0x11746,
},
}
m["Arab"] = process_ranges{
"อาหรับ",
"abjad", -- more precisely, impure abjad
aliases = {"อารบิก", "อาระบิก", "Arabic"},
varieties = {{"ยาวี", "Jawi"}, {"Nastaliq", "Nastaleeq"}},
ranges = {
0x0600, 0x06FF,
0x0750, 0x077F,
0x0870, 0x088E,
0x0890, 0x0891,
0x0898, 0x08E1,
0x08E3, 0x08FF,
0xFB50, 0xFBC2,
0xFBD3, 0xFD8F,
0xFD92, 0xFDC7,
0xFDCF, 0xFDCF,
0xFDF0, 0xFDFF,
0xFE70, 0xFE74,
0xFE76, 0xFEFC,
0x102E0, 0x102FB,
0x10E60, 0x10E7E,
0x10EFD, 0x10EFF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
direction = "rtl",
normalizationFixes = {
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"เปอร์โซ-อาหรับ", "Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ku-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ms-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["mzn-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ota-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["pa-Arab"] = {
"ชาห์มุขี",
m["Arab"][2],
aliases = {"Shahmukhi"},
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"อาหรับ", "Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["sd-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["tt-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ug-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ur-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["xka-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = process_ranges{
"แอราเมอิกจักรวรรดิ",
"abjad",
aliases = {"Imperial Aramaic"},
ranges = {
0x10840, 0x10855,
0x10857, 0x1085F,
},
direction = "rtl",
}
m["Armn"] = process_ranges{
"อาร์มีเนีย",
"alphabet",
aliases = {"อาร์เมเนีย", "Armenian"},
ranges = {
0x0531, 0x0556,
0x0559, 0x058A,
0x058D, 0x058F,
0xFB13, 0xFB17,
},
capitalized = true,
}
m["Avst"] = process_ranges{
"อเวสตะ",
"alphabet",
aliases = {"Avestan"},
ranges = {
0x10B00, 0x10B35,
0x10B39, 0x10B3F,
},
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
m["Avst"][2],
aliases = m["Avst"].aliases,
ranges = m["Avst"].ranges,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = process_ranges{
"บาหลี",
"abugida",
aliases = {"Balinese"},
ranges = {
0x1B00, 0x1B4C,
0x1B50, 0x1B7E,
},
}
m["Bamu"] = process_ranges{
"บามุม",
"syllabary",
aliases = {"Bamum"},
ranges = {
0xA6A0, 0xA6F7,
0x16800, 0x16A38,
},
}
m["Bass"] = process_ranges{
"บัสซา",
"alphabet",
aliases = {"วาห์", "Bassa", "Bassa Vah", "Vah"},
ranges = {
0x16AD0, 0x16AED,
0x16AF0, 0x16AF5,
},
}
m["Batk"] = process_ranges{
"บาตัก",
"abugida",
aliases = {"Batak"},
ranges = {
0x1BC0, 0x1BF3,
0x1BFC, 0x1BFF,
},
}
m["Beng"] = process_ranges{
"เบงกอล",
"abugida",
aliases = {"เบงกาลี", "บังลา", "Bengali"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09B0,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09EF,
0x09F2, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = {
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = process_ranges{
"อัสสัม",
m["Beng"][2],
otherNames = {"เบงกอล-อัสสัม", "เบงกาลี-อัสสัม", "นาครีตะวันออก", "Assamese", "Bengali-Assamese", "Eastern Nagari"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09AF,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = process_ranges{
"ไภกษุกี",
"abugida",
aliases = {"Bhaiksuki"},
ranges = {
0x11C00, 0x11C08,
0x11C0A, 0x11C36,
0x11C38, 0x11C45,
0x11C50, 0x11C6C,
},
}
m["Blis"] = {
"Blissymbols",
"logography",
aliases = {"Blissymbolics"},
-- Not in Unicode
}
m["Bopo"] = process_ranges{
"จู้อิน",
"semisyllabary",
aliases = {"จู้อินฝูเฮ่า", "ปอพอมอฟอ", "ปัวพัวมัวฟัว", "Zhuyin", "Zhuyin Fuhao", "Bopomofo"},
ranges = {
0x02EA, 0x02EB,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302A, 0x302D,
0x3030, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3105, 0x312F,
0x31A0, 0x31BF,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
},
}
m["Brah"] = process_ranges{
"พราหมี",
"abugida",
aliases = {"พราหฺมี", "Brahmi"},
ranges = {
0x11000, 0x1104D,
0x11052, 0x11075,
0x1107F, 0x1107F,
},
normalizationFixes = {
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = process_ranges{
"เบรลล์",
"alphabet",
aliases = {"Braille"},
ranges = {
0x2800, 0x28FF,
},
}
m["Bugi"] = process_ranges{
"บูกิส",
"abugida",
aliases = {"ลนตารา", "Buginese", "Lontara"},
ranges = {
0x1A00, 0x1A1B,
0x1A1E, 0x1A1F,
0xA9CF, 0xA9CF,
},
}
m["Buhd"] = process_ranges{
"บูฮิด",
"abugida",
aliases = {"Buhid"},
ranges = {
0x1735, 0x1736,
0x1740, 0x1751,
0x1752, 0x1753,
},
}
m["Cakm"] = process_ranges{
"จักมา",
"abugida",
aliases = {"Chakma"},
ranges = {
0x09E6, 0x09EF,
0x1040, 0x1049,
0x11100, 0x11134,
0x11136, 0x11147,
},
}
m["Cans"] = process_ranges{
"Canadian syllabics",
"abugida",
ranges = {
0x1400, 0x167F,
0x18B0, 0x18F5,
0x11AB0, 0x11ABF,
},
}
m["Cari"] = process_ranges{
"คาเรีย",
"alphabet",
aliases = {"Carian"},
ranges = {
0x102A0, 0x102D0
},
}
m["Cham"] = process_ranges{
"จาม",
"abugida",
aliases = {"Cham"},
ranges = {
0xAA00, 0xAA36,
0xAA40, 0xAA4D,
0xAA50, 0xAA59,
0xAA5C, 0xAA5F,
},
}
m["Cher"] = process_ranges{
"เชโรกี",
"syllabary",
aliases = {"Cherokee"},
ranges = {
0x13A0, 0x13F5,
0x13F8, 0x13FD,
0xAB70, 0xABBF,
},
}
m["Chrs"] = process_ranges{
"Chorasmian",
"abjad",
ranges = {
0x10FB0, 0x10FCB
},
direction = "rtl",
}
m["Copt"] = process_ranges{
"คอปติก",
"alphabet",
ranges = {
0x03E2, 0x03EF,
0x2C80, 0x2CF3,
0x2CF9, 0x2CFF,
0x102E0, 0x102FB,
},
capitalized = true,
}
m["Cpmn"] = process_ranges{
"Cypro-Minoan",
"syllabary",
aliases = {"Cypro Minoan"},
ranges = {
0x10100, 0x10101,
0x12F90, 0x12FF2,
},
}
m["Cprt"] = process_ranges{
"ไซปรัส",
"syllabary",
aliases = {"ไซเปรียท", "Cypriot"},
ranges = {
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
0x10800, 0x10805,
0x10808, 0x10808,
0x1080A, 0x10835,
0x10837, 0x10838,
0x1083C, 0x1083C,
0x1083F, 0x1083F,
},
direction = "rtl",
}
m["Cyrl"] = process_ranges{
"ซีริลลิก",
"alphabet",
aliases = {"Cyrillic"},
ranges = {
0x0400, 0x052F,
0x1C80, 0x1C88,
0x1D2B, 0x1D2B,
0x1D78, 0x1D78,
0x1DF8, 0x1DF8,
0x2DE0, 0x2DFF,
0x2E43, 0x2E43,
0xA640, 0xA69F,
0xFE2E, 0xFE2F,
0x1E030, 0x1E06D,
0x1E08F, 0x1E08F,
},
capitalized = true,
}
m["Cyrs"] = {
"ซีริลลิกเก่า",
m["Cyrl"][2],
aliases = {"ซีริลลิกช่วงต้น", "Old Cyrillic", "Early Cyrillic"},
ranges = m["Cyrl"].ranges,
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
}
m["Deva"] = process_ranges{
"เทวนาครี",
"abugida",
aliases = {"Devanagari"},
ranges = {
0x0900, 0x097F,
0x1CD0, 0x1CF6,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0xA830, 0xA839,
0xA8E0, 0xA8FF,
0x11B00, 0x11B09,
},
normalizationFixes = {
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = process_ranges{
"ดิเวส อกุรุ",
"abugida",
aliases = {"ดิเวหิ อกุรุ", "Dhives Akuru", "Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
ranges = {
0x11900, 0x11906,
0x11909, 0x11909,
0x1190C, 0x11913,
0x11915, 0x11916,
0x11918, 0x11935,
0x11937, 0x11938,
0x1193B, 0x11946,
0x11950, 0x11959,
},
}
m["Dogr"] = process_ranges{
"โฑครี",
"abugida",
aliases = {"Dogri", "Dogra"},
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11800, 0x1183B,
},
}
m["Dsrt"] = process_ranges{
"Deseret",
"alphabet",
ranges = {
0x10400, 0x1044F,
},
capitalized = true,
}
m["Dupl"] = process_ranges{
"Duployan",
"alphabet",
ranges = {
0x1BC00, 0x1BC6A,
0x1BC70, 0x1BC7C,
0x1BC80, 0x1BC88,
0x1BC90, 0x1BC99,
0x1BC9C, 0x1BCA3,
},
}
m["Egyd"] = {
"Demotic",
"abjad, logography",
}
m["Egyh"] = {
"Hieratic",
"abjad, logography",
}
m["Egyp"] = process_ranges{
"ไฮเออโรกลีฟอียิปต์",
"abjad, logography",
aliases = {"Egyptian hieroglyphic"},
ranges = {
0x13000, 0x13455,
},
varieties = {"Hieratic"},
wikipedia_article = "ไฮเออโรกลีฟอียิปต์",
normalizationFixes = {
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = process_ranges{
"เอลบาซาน",
"alphabet",
aliases = {"Elbasan"},
ranges = {
0x10500, 0x10527,
},
}
m["Elym"] = process_ranges{
"Elymaic",
"abjad",
ranges = {
0x10FE0, 0x10FF6,
},
direction = "rtl",
}
m["Ethi"] = process_ranges{
"เอธิโอเปีย",
"abugida",
aliases = {"กืออึซ", "Ethiopic", "Ge'ez"},
ranges = {
0x1200, 0x1248,
0x124A, 0x124D,
0x1250, 0x1256,
0x1258, 0x1258,
0x125A, 0x125D,
0x1260, 0x1288,
0x128A, 0x128D,
0x1290, 0x12B0,
0x12B2, 0x12B5,
0x12B8, 0x12BE,
0x12C0, 0x12C0,
0x12C2, 0x12C5,
0x12C8, 0x12D6,
0x12D8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135A,
0x135D, 0x137C,
0x1380, 0x1399,
0x2D80, 0x2D96,
0x2DA0, 0x2DA6,
0x2DA8, 0x2DAE,
0x2DB0, 0x2DB6,
0x2DB8, 0x2DBE,
0x2DC0, 0x2DC6,
0x2DC8, 0x2DCE,
0x2DD0, 0x2DD6,
0x2DD8, 0x2DDE,
0xAB01, 0xAB06,
0xAB09, 0xAB0E,
0xAB11, 0xAB16,
0xAB20, 0xAB26,
0xAB28, 0xAB2E,
0x1E7E0, 0x1E7E6,
0x1E7E8, 0x1E7EB,
0x1E7ED, 0x1E7EE,
0x1E7F0, 0x1E7FE,
},
}
m["Geok"] = process_ranges{
"Khutsuri",
"alphabet",
ranges = { -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
0x10A0, 0x10C5,
0x10C7, 0x10C7,
0x10CD, 0x10CD,
0x10FB, 0x10FB,
0x2D00, 0x2D25,
0x2D27, 0x2D27,
0x2D2D, 0x2D2D,
},
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = process_ranges{
"จอร์เจีย",
"alphabet",
aliases = {"Georgian"},
ranges = { -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
0x10D0, 0x10FF,
0x1C90, 0x1CBA,
0x1CBD, 0x1CBF,
},
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = process_ranges{
"กลาโกลิติก",
"alphabet",
aliases = {"Glagolitic"},
ranges = {
0x0484, 0x0484,
0x0487, 0x0487,
0x2C00, 0x2C5F,
0x2E43, 0x2E43,
0xA66F, 0xA66F,
0x1E000, 0x1E006,
0x1E008, 0x1E018,
0x1E01B, 0x1E021,
0x1E023, 0x1E024,
0x1E026, 0x1E02A,
},
capitalized = true,
}
m["Gong"] = process_ranges{
"คุญชลาโคณฑี",
"abugida",
aliases = {"Gunjala Gondi"},
ranges = {
0x0964, 0x0965,
0x11D60, 0x11D65,
0x11D67, 0x11D68,
0x11D6A, 0x11D8E,
0x11D90, 0x11D91,
0x11D93, 0x11D98,
0x11DA0, 0x11DA9,
},
}
m["Gonm"] = process_ranges{
"มสรามโคณฑี",
"abugida",
aliases = {"Masaram Gondi"},
ranges = {
0x0964, 0x0965,
0x11D00, 0x11D06,
0x11D08, 0x11D09,
0x11D0B, 0x11D36,
0x11D3A, 0x11D3A,
0x11D3C, 0x11D3D,
0x11D3F, 0x11D47,
0x11D50, 0x11D59,
},
}
m["Goth"] = process_ranges{
"กอท",
"alphabet",
aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"},
ranges = {
0x10330, 0x1034A
},
}
m["Gran"] = process_ranges{
"ครันถะ",
"abugida",
aliases = {"Grantha"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0BE6, 0x0BF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CF2, 0x1CF4,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0x11300, 0x11303,
0x11305, 0x1130C,
0x1130F, 0x11310,
0x11313, 0x11328,
0x1132A, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
0x1133B, 0x11344,
0x11347, 0x11348,
0x1134B, 0x1134D,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135D, 0x11363,
0x11366, 0x1136C,
0x11370, 0x11374,
0x11FD0, 0x11FD1,
0x11FD3, 0x11FD3,
},
}
m["Grek"] = process_ranges{
"กรีก",
"alphabet",
"abugida",
aliases = {"Greek"},
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DBF,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = true,
}
m["Polyt"] = process_ranges{
"กรีก",
m["Grek"][2],
aliases = m["Grek"].aliases,
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DC1,
0x1F00, 0x1F15,
0x1F18, 0x1F1D,
0x1F20, 0x1F45,
0x1F48, 0x1F4D,
0x1F50, 0x1F57,
0x1F59, 0x1F59,
0x1F5B, 0x1F5B,
0x1F5D, 0x1F5D,
0x1F5F, 0x1F7D,
0x1F80, 0x1FB4,
0x1FB6, 0x1FC4,
0x1FC6, 0x1FD3,
0x1FD6, 0x1FDB,
0x1FDD, 0x1FEF,
0x1FF2, 0x1FF4,
0x1FF6, 0x1FFE,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = process_ranges{
"คุชราต",
"abugida",
aliases = {"คุชราตี", "Gujarati"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A81, 0x0A83,
0x0A85, 0x0A8D,
0x0A8F, 0x0A91,
0x0A93, 0x0AA8,
0x0AAA, 0x0AB0,
0x0AB2, 0x0AB3,
0x0AB5, 0x0AB9,
0x0ABC, 0x0AC5,
0x0AC7, 0x0AC9,
0x0ACB, 0x0ACD,
0x0AD0, 0x0AD0,
0x0AE0, 0x0AE3,
0x0AE6, 0x0AF1,
0x0AF9, 0x0AFF,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Guru"] = process_ranges{
"คุรมุขี",
"abugida",
aliases = {"กูร์มูคี", "เกอร์มุกห์", "Gurmukhi"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A01, 0x0A03,
0x0A05, 0x0A0A,
0x0A0F, 0x0A10,
0x0A13, 0x0A28,
0x0A2A, 0x0A30,
0x0A32, 0x0A33,
0x0A35, 0x0A36,
0x0A38, 0x0A39,
0x0A3C, 0x0A3C,
0x0A3E, 0x0A42,
0x0A47, 0x0A48,
0x0A4B, 0x0A4D,
0x0A51, 0x0A51,
0x0A59, 0x0A5C,
0x0A5E, 0x0A5E,
0x0A66, 0x0A76,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = process_ranges{
"ฮันกึล",
"syllabary",
aliases = {"ฮังกึล", "Hangul", "Hangeul"},
ranges = {
0x1100, 0x11FF,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302E, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3131, 0x318E,
0x3200, 0x321E,
0x3260, 0x327E,
0xA960, 0xA97C,
0xAC00, 0xD7A3,
0xD7B0, 0xD7C6,
0xD7CB, 0xD7FB,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFFA0, 0xFFBE,
0xFFC2, 0xFFC7,
0xFFCA, 0xFFCF,
0xFFD2, 0xFFD7,
0xFFDA, 0xFFDC,
},
}
m["Hani"] = process_ranges{
"จีน",
"logography",
aliases = {"ฮั่น", "Han"},
ranges = {
0x2E80, 0x2E99,
0x2E9B, 0x2EF3,
0x2F00, 0x2FD5,
0x3001, 0x3003,
0x3005, 0x3011,
0x3013, 0x301F,
0x3021, 0x302D,
0x3030, 0x3030,
0x3037, 0x303F,
0x3190, 0x319F,
0x31C0, 0x31E3,
0x3220, 0x3247,
0x3280, 0x32B0,
0x32C0, 0x32CB,
0x30FB, 0x30FB,
0x32FF, 0x32FF,
0x3358, 0x3370,
0x337B, 0x337F,
0x33E0, 0x33FE,
0x3400, 0x4DBF,
0x4E00, 0x9FFF,
0xA700, 0xA707,
0xF900, 0xFA6D,
0xFA70, 0xFAD9,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0x16FE2, 0x16FE3,
0x16FF0, 0x16FF1,
0x1D360, 0x1D371,
0x1F250, 0x1F251,
0x20000, 0x2A6DF,
0x2A700, 0x2B739,
0x2B740, 0x2B81D,
0x2B820, 0x2CEA1,
0x2CEB0, 0x2EBE0,
0x2EBF0, 0x2EE5D,
0x2F800, 0x2FA1D,
0x30000, 0x3134A,
0x31350, 0x323AF,
},
varieties = {{"ฮั่นจื่อ", "Hanzi"}, {"คันจิ", "Kanji"}, {"ฮันจา", "Hanja"}, {"จื๋อโนม", "Chu Nom"}},
spaces = false,
}
m["Hans"] = {
"จีนตัวย่อ",
m["Hani"][2],
aliases = {"Simplified Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"จีนตัวเต็ม",
m["Hani"][2],
aliases = {"Traditional Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = {
"ฮานูโนโอ",
"abugida",
aliases = {"Hanunoo"},
characters = "ᜠ-᜴",
}
m["Hatr"] = {
"Hatran",
"abjad",
characters = "𐣠-𐣿",
direction = "rtl",
}
m["Hebr"] = {
"ฮีบรู",
"abjad", -- more precisely, impure abjad
aliases = {"Hebrew"},
characters = u(0x0590) .. "-" .. u(0x05FF) .. u(0xFB1D) .. "-" .. u(0xFB4F),
direction = "rtl",
}
m["Hira"] = {
"ฮิรางานะ",
"syllabary",
aliases = {"ฮิระงะนะ", "Hiragana"},
characters = "ぁ-ゟ𛀁-𛄞𛅐𛅑𛅒🈀",
varieties = {{"เฮ็นไตงานะ", "Hentaigana"}},
spaces = false,
}
m["Hluw"] = {
"ไฮเออโรกลีฟอานาโตเลีย",
"logography, syllabary",
aliases = {"Anatolian Hieroglyphs"},
characters = "𔐀-𔙆",
wikipedia_article = "ไฮเออโรกลีฟอานาโตเลีย",
}
m["Hmng"] = {
"ม้ง",
"semisyllabary",
aliases = {"Hmong", "Pahawh Hmong"},
characters = "𖬀-𖮏",
}
m["Hmnp"] = {
"Nyiakeng Puachue Hmong",
"alphabet",
characters = "𞄀-𞅏",
}
m["Hung"] = {
"ฮังการีเก่า",
"alphabet",
aliases = {"รูนฮังการี", "Old Hungarian", "Hungarian runic"},
characters = "𐲀-𐲲",
capitalized = true,
direction = "rtl",
}
m["Ibrn"] = {
"ไอบีเรีย",
"semisyllabary",
aliases = {"Iberian"},
}
m["Imag"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Inds"] = {
"สินธุ",
aliases = {"อินดัส", "Indus", "Harappan", "Indus Valley"},
}
m["IPAchar"] = {
"สัทอักษรสากล",
aliases = {"International Phonetic Alphabet", "IPA"},
}
m["Ital"] = {
"อิตาลิกเก่า",
"alphabet",
aliases = {"Old Italic"},
characters = "𐌀-𐌯",
}
m["Java"] = {
"ชวา",
"abugida",
aliases = {"Javanese"},
characters = "ꦀ-꧟",
}
m["Jurc"] = {
"จูร์เชน",
aliases = {"Jurchen"},
spaces = false,
}
m["Kali"] = {
"กะยา",
"abugida",
aliases = {"Kayah Li"},
characters = "꤀-꤯",
}
m["Kana"] = {
"คาตากานะ",
"syllabary",
aliases = {"คะตะกะนะ", "Katakana"},
characters = "゠-ヿㇰ-ㇿ㌀-㍗ヲ-゚𛀀𛅤𛅥𛅦𛅧",
spaces = false,
}
m["Kawi"] = {
"Kawi",
"abugida",
characters = "𑼀-𑽙",
}
m["Khar"] = {
"ขโรษฐี",
"abugida",
aliases = {"Kharoshthi"},
characters = "𐨀-𐩘",
direction = "rtl",
}
m["Khmr"] = {
"เขมร",
"abugida",
aliases = {"Khmer"},
characters = "ក-៝០-៩៰-៹᧠-᧿",
spaces = false,
normalizationFixes = {
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = {
"Khojki",
"abugida",
characters = "𑈀-𑈾",
normalizationFixes = {
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Kitl"] = {
"คีตันใหญ่",
"logography, syllabary",
aliases = {"Khitan Large"},
spaces = false,
}
m["Kits"] = {
"คีตันเล็ก",
"logography, syllabary",
aliases = {"Khitan Small"},
characters = "𘬀-𘳕"..u(0x16FE4),
spaces = false,
}
m["Knda"] = {
"กันนาดา",
"abugida",
aliases = {"Kannada"},
characters = "ಀ-ೲ",
normalizationFixes = {
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
"syllabary",
-- Not in Unicode
}
m["Kthi"] = {
"ไกถี",
"abugida",
aliases = {"Kaithi"},
characters = "𑂀-",
}
m["Lana"] = {
"ไทธรรม",
"abugida",
aliases = {"ธรรม", "ตัวเมือง", "ล้านนา", "Tai Tham", "Tham", "Tua Mueang", "Lanna"},
characters = "ᨠ-ᩞ᩠-᩿᩼᪀-᪉᪐-᪙᪠-᪭",
spaces = false,
}
m["Laoo"] = {
"ลาว",
"abugida",
aliases = {"Lao"},
characters = "ກຂຄຆ-ຊຌ-ຣລວ-ຽເ-ໄໆ່-໎໐-໙ໜ-ໟ",
spaces = false,
}
m["Latn"] = {
"ละติน",
"alphabet",
aliases = {"ลาติน", "โรมัน", "Latin", "Roman"},
characters = "A-Za-zªºÀ-ÖØ-öø-ɏḀ-ỿ",
varieties = {{"รูมี", "Rumi"}, {"โรมะจิ","Romaji", "Rōmaji"}, "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"ฟรักทูร์",
m["Latn"][2],
aliases = {"Fraktur"},
characters = m["Latn"].characters,
otherNames = {"แบล็กเลตเทอร์", "Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"แกลิก",
m["Latn"][2],
aliases = {"Gaelic"},
characters = m["Latn"].characters,
otherNames = {"ไอริช", "Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latnx"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
characters = m["Latn"].characters .. "ɐ-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꟿꬰ-ꭚꭜ-ꭤꭦ-ꭩff-stA-Za-z𐞀-𐞅𐞇-𐞰𐞲-𐞺𝼀-𝼞𝼥-𝼪",
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
"abugida",
}
m["Lepc"] = {
"เลปชา",
"abugida",
aliases = {"Lepcha"},
characters = "ᰀ-ᱏ",
}
m["Limb"] = {
"ลิมบู",
"abugida",
aliases = {"Limbu"},
characters = "ᤀ-᥏",
}
m["Lina"] = {
"ลิเนียร์เอ",
aliases = {"Linear A"},
characters = "𐘀-𐝧",
}
m["Linb"] = {
"ลิเนียร์บี",
aliases = {"Linear B"},
characters = "𐀀-𐃺",
}
m["Lisu"] = {
"ลีสู่",
"alphabet",
aliases = {"ฟราเซอร์", "Lisu", "Fraser"},
characters = "ꓐ-꓿𑾰",
normalizationFixes = {
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
"syllabary",
-- Not in Unicode
}
m["Lyci"] = {
"ลิเชีย",
"alphabet",
aliases = {"Lycian"},
characters = "𐊀-𐊜",
}
m["Lydi"] = {
"ลิเดีย",
"alphabet",
aliases = {"Lydian"},
characters = "𐤠-𐤿",
direction = "rtl",
}
m["Mahj"] = {
"Mahajani",
"abugida",
characters = "𑅐-𑅶",
}
m["Maka"] = {
"ลนตารา",
"abugida",
aliases = {"Lontara", "Makasar"},
characters = "𑻠-𑻸",
}
m["Mand"] = {
"มันดาอิก",
aliases = {"Mandaic", "Mandaean"},
characters = "ࡀ-࡞",
direction = "rtl",
}
m["Mani"] = {
"Manichaean",
"abjad",
characters = "𐫀-𐫶",
direction = "rtl",
}
m["Marc"] = {
"Marchen",
"abugida",
characters = "𑱰-𑲶",
}
m["Maya"] = {
"มายา",
aliases = {"มายัน", "Maya", "Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
characters = "𝋠-𝋳",
}
m["Medf"] = {
"Medefaidrin",
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
characters = "𖹀-𖺚",
capitalized = true,
}
m["Mend"] = {
"Mende",
aliases = {"Mende Kikakui"},
characters = "𞠀-𞣖",
direction = "rtl",
}
m["Merc"] = {
"Meroitic cursive",
"abugida",
characters = "𐦠-𐦿",
direction = "rtl",
}
m["Mero"] = {
"Meroitic hieroglyphic",
"abugida",
characters = "𐦀-𐦟",
direction = "rtl",
}
m["Mlym"] = {
"มลยาฬัม",
"abugida",
aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"},
characters = "ഀ-ൿ",
normalizationFixes = {
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = {
"โมฑี",
"abugida",
aliases = {"Modi"},
characters = "𑘀-𑙙",
normalizationFixes = {
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = {
"มองโกเลีย",
"alphabet",
aliases = {"Mongolian", "Mongol bichig", "Hudum Mongol bichig"},
characters = "᠀-᠅᠊-᠙ᠠ-ᡂᡸᢀ-ᢗᢦᢩ 𑙠-𑙨",
direction = "down",
}
m["mnc-Mong"] = {
"แมนจู",
m["Mong"][2],
aliases = {"Manchu"},
characters = "᠁᠄᠈-᠏ᠠᠣᠨ-ᠪᠮ-ᠰᠴ-ᠸᠺᡝᡟ-ᡡᡤ-ᡩᡬ-ᡱᡳ-ᡷᢀ-ᢈᢏᢚ-ᢥᢨᢪ ",
direction = "down",
parent = "Mong",
}
m["sjo-Mong"] = {
"ซิเบ",
m["Mong"][2],
aliases = {"Xibe", "Sibe"},
characters = "᠄᠇᠊-᠏ᠠᠣᠨᠪᠮ-ᠰᠴ-ᠸᠺᡝ-ᡲ ",
direction = "down",
parent = "mnc-Mong",
}
m["xwo-Mong"] = {
"Clear Script",
m["Mong"][2],
aliases = {"Todo", "Todo bichig"},
characters = "᠀᠁᠄-᠆᠊-ᠠᠨᠯ-ᠱᠴᠷᠸᠺᠻᡀᡃ-ᡜᢀ-ᢇᢉ-ᢏᢔᢖ-ᢙᢧ 𑙩-𑙬",
direction = "down",
parent = "Mong",
}
m["Moon"] = {
"Moon",
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"รหัสมอร์ส",
aliases = {"Morse code"},
}
m["Mroo"] = {
"Mro",
characters = "𖩀-𖩯",
}
m["Mtei"] = {
"มณีปุระ",
"abugida",
aliases = {"ไมไตมะเยก", "มีไตมะเยก", "Manipuri", "Meitei Mayek", "Meetei Mayek"},
characters = "ꯀ-꯹ꫠ-꫶",
}
m["Mult"] = {
"Multani",
"abugida",
characters = "𑊀-𑊩",
}
m["Music"] = {
"สัญกรณ์ดนตรี",
"pictography",
aliases = {"Musical notation"},
characters = "𝄀-𝇨",
translit = false,
}
m["Mymr"] = {
"พม่า",
"abugida",
aliases = {"เมียนมา", "Burmese", "Myanmar"},
characters = "က-႟ꩠ-ꩿꧠ-ꧾ",
spaces = false,
}
m["Nagm"] = {
"Nag Mundari",
"alphabet",
characters = "𞓐-𞓹",
}
m["Nand"] = {
"นันทินาครี",
"abugida",
aliases = {"Nandinagari"},
characters = "𑦠-𑧤",
}
m["Narb"] = {
"Old North Arabian",
"abjad",
characters = "𐪀-𐪟",
direction = "rtl",
}
m["Nbat"] = {
"Nabataean",
"abjad",
aliases = {"Nabatean"},
characters = "𐢀-𐢯",
direction = "rtl",
}
m["Newa"] = {
"Newa",
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
characters = "𑐀-𑑡",
}
m["Nkdb"] = {
"Dongba",
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = {
"N'Ko",
"alphabet",
characters = "߀-߿",
direction = "rtl",
}
m["None"] = {
"ไม่ระบุ",
aliases = {"Unspecified"},
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Nshu"] = {
"Nüshu",
"syllabary",
aliases = {"Nushu"},
characters = "𖿡𛅰-𛋻",
spaces = false,
}
m["Ogam"] = {
"Ogham",
characters = " -᚜",
}
m["Olck"] = {
"Ol Chiki",
characters = "᱐-᱿",
}
m["Orkh"] = {
"Orkhon runes",
aliases = {"Old Turkic"},
characters = "𐰀-𐱈",
direction = "rtl",
}
m["Orya"] = {
"โอริยา",
"abugida",
aliases = {"โอเดีย", "Oriya", "Odia"},
characters = "ଁ-୷",
normalizationFixes = {
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = {
"Osage",
characters = "𐒰-𐓻",
capitalized = true,
}
m["Osma"] = {
"อุสมาน",
aliases = {"Osmanya"},
characters = "𐒀-𐒩",
}
m["Ougr"] = {
"อุยกูร์เก่า",
"abjad, alphabet",
aliases = {"Old Uyghur"},
characters = "𐽰-𐾉",
direction = "down",
}
m["Palm"] = {
"Palmyrene",
characters = "𐡠-𐡿",
direction = "rtl",
}
m["Pauc"] = {
"Pau Cin Hau",
characters = "𑫀-𑫸",
}
m["Perm"] = {
"Old Permic",
characters = "𐍐-𐍺",
}
m["Phag"] = {
"Phags-pa",
"abugida",
characters = "᠂᠃᠅ 。ꡀ-꡷",
direction = "down",
}
m["Phli"] = {
"Inscriptional Pahlavi",
"abjad",
characters = "𐭠-𐭿",
direction = "rtl",
}
m["Phlp"] = {
"Psalter Pahlavi",
"abjad",
characters = "𐮀-𐮯",
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Phnx"] = {
"ฟินิเชีย",
"abjad",
aliases = {"Phoenician"},
characters = "𐤀-𐤟",
direction = "rtl",
}
m["Plrd"] = {
"Pollard",
"abugida",
aliases = {"Miao"},
characters = "𖼀-𖾟",
}
m["Prti"] = {
"Inscriptional Parthian",
characters = "𐭀-𐭟",
direction = "rtl",
}
m["Ranj"] = {
"Ranjana",
"abugida",
-- Not in Unicode
}
m["Rjng"] = {
"Rejang",
"abugida",
characters = "ꤰ-꥟",
}
m["Rohg"] = {
"ฮานิฟ",
"alphabet",
aliases = {"ฮานีฟี", "Hanifi Rohingya", "Hanifi"},
characters = "𐴀-𐴹",
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
-- Not in Unicode
}
m["Rumin"] = {
"Rumi numerals",
characters = "𐹠-𐹾",
character_category = "Rumi numerals",
}
m["Runr"] = {
"รูน",
"alphabet",
aliases = {"รูนิก", "Runic"},
characters = "ᚠ-ᛰ",
}
m["Samr"] = {
"Samaritan",
"abjad",
characters = "ࠀ-࠾",
direction = "rtl",
}
m["Sarb"] = {
"Old South Arabian",
"abjad",
characters = "𐩠-𐩿",
direction = "rtl",
}
m["Saur"] = {
"Saurashtra",
"abugida",
characters = "ꢀ-꣙",
}
m["Semap"] = {
"สัญญาณธง",
"pictography",
aliases = {"flag semaphore"},
}
m["Sgnw"] = {
"SignWriting",
"pictography",
characters = "𝠀-𝪯",
translit = false,
}
m["Shaw"] = {
"Shavian",
characters = "𐑐-𐑿",
}
m["Shrd"] = {
"ศารทา",
"abugida",
aliases = {"Sharada"},
characters = "𑆀-𑇙",
}
m["Shui"] = {
"Sui",
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = {
"สิทธัม",
"abugida",
aliases = {"Siddham"},
characters = "𑖀-𑗝",
}
m["Sind"] = {
"คุดาบาด",
"abugida",
aliases = {"Khudabadi", "Khudawadi"},
characters = "𑊰-𑋹",
normalizationFixes = {
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = {
"สิงหล",
"abugida",
aliases = {"Sinhalese", "Sinhala"},
characters = "ං-෴",
normalizationFixes = {
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = {
"ซอกเดีย",
"abjad",
aliases = {"Sogdian"},
characters = "𐼰-𐽙",
direction = "rtl",
}
m["Sogo"] = {
"ซอกเดียเก่า",
"abjad",
aliases = {"Old Sogdian"},
characters = "𐼀-𐼧",
direction = "rtl",
}
m["Sora"] = {
"Sorang Sompeng",
aliases = {"Sora Sompeng"},
characters = "𑃐-𑃹",
}
m["Soyo"] = {
"Soyombo",
"abugida",
characters = "𑩐-𑪢",
}
m["Sund"] = {
"ซุนดา",
"abugida",
aliases = {"Sundanese"},
characters = "ᮀ-ᮿ",
}
m["Sylo"] = {
"สิเลฏินาครี",
"abugida",
aliases = {"สิลอฏินาครี", "Syloti Nagri", "Sylheti Nagari"},
characters = "ꠀ-꠫",
}
m["Syrc"] = {
"ซีรีแอก",
"abjad", -- more precisely, impure abjad
aliases = {"ซีเรียค", "Syriac"},
characters = "܀-ݏ"..u(0x0860).."-"..u(0x086A),
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = {
"ตักบันวา",
"abugida",
aliases = {"Tagbanwa"},
characters = "ᝠ-ᝳ",
}
m["Takr"] = {
"ฏากรี",
"abugida",
aliases = {"ตากรี", "Takri"},
characters = "𑚀-𑛉",
normalizationFixes = {
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = {
"ไทใต้คง",
"abugida",
aliases = {"ไทเหนือ", "ไทเหนือใหม่", "ไตเหลอ", "Tai Nüa", "Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
characters = "ᥐ-ᥭᥰ-ᥴ",
spaces = false,
}
m["Talu"] = {
"ไทลื้อใหม่",
"abugida",
aliases = {"New Tai Lue"},
characters = "ᦀ-ᦫᦰ-ᧉ᧐-᧚᧞᧟",
spaces = false,
}
m["Taml"] = {
"ทมิฬ",
"abugida",
aliases = {"Tamil"},
characters = "ஂ-௺𑿀-𑿿",
normalizationFixes = {
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = {
"ตังกุต",
"logography, syllabary",
aliases = {"Tangut"},
characters = "𖿠𗀀-𘫿𘴀-𘴈",
spaces = false,
}
m["Tavt"] = {
"ไทเวียด",
"abugida",
aliases = {"Tai Viet"},
characters = "ꪀ-ꫂꫛ-꫟",
spaces = false,
}
m["Telu"] = {
"เตลูกู",
"abugida",
aliases = {"Telugu"},
characters = "ఀ-౿",
normalizationFixes = {
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"เทงกวาร์",
aliases = {"Tengwar"},
}
m["Tfng"] = {
"ทิฟินาค",
"abjad, alphabet",
aliases = {"Tifinagh"},
otherNames = {"ลิบีโค-เบอร์เบอร์", "เบอร์เบอร์", "Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
characters = "ⴰ-⵿",
}
m["Tglg"] = {
"ไบบายิน",
"abugida",
aliases = {"ตากาล็อก", "Baybayin", "Tagalog"},
characters = "ᜀ-᜔",
}
m["Thaa"] = {
"ทานะ",
"abugida",
aliases = {"Thaana"},
characters = "ހ-ޱ",
direction = "rtl",
}
m["Thai"] = {
"ไทย",
"abugida",
aliases = {"Thai"},
characters = "ก-ฺเ-๛",
spaces = false,
translit = false, --only for this project
}
m["Tibt"] = {
"ทิเบต",
"abugida",
aliases = {"Tibetan"},
characters = "ༀ-࿚",
normalizationFixes = {
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"Tamyig",
m["Tibt"][2],
aliases = m["Tibt"].aliases,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["xzh-Tibt"] = {
"Zhang-Zhung",
m["Tibt"][2],
aliases = m["Tibt"].aliases,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = {
"Tirhuta",
"abugida",
characters = "𑒀-𑓙",
normalizationFixes = {
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = {
"Tangsa",
"alphabet",
characters = "𖩰-𖫉",
}
m["Toto"] = {
"Toto",
"abugida",
characters = "𞊐-𞊮",
}
m["Ugar"] = {
"ยูการิต",
"abjad",
aliases = {"ยูการิติก", "Ugaritic"},
characters = "𐎀-𐎟",
}
m["Vaii"] = {
"ไว",
"syllabary",
aliases = {"Vai"},
characters = "ꔀ-ꘫ",
}
m["Visp"] = {
"Visible Speech",
"alphabet",
-- Not in Unicode
}
m["Vith"] = {
"Vithkuqi",
"alphabet",
characters = "𐕰-𐖼",
capitalized = true,
}
m["Wara"] = {
"วรังจิติ",
aliases = {"วรังกษิติ", "Warang Citi", "Varang Kshiti"},
characters = "𑢠-𑣿",
capitalized = true,
}
m["Wcho"] = {
"Wancho",
"alphabet",
characters = "𞋀-𞋿",
}
m["Wole"] = {
"Woleai",
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = {
"เปอร์เซียเก่า",
aliases = {"Old Persian"},
characters = "𐎠-𐏕",
}
m["Xsux"] = {
"คูนิฟอร์ม",
aliases = {"Cuneiform", "Sumero-Akkadian Cuneiform"},
characters = "𒀀-𒎙𒐀-𒑳",
}
m["Yezi"] = {
"Yezidi",
"alphabet",
characters = "𐺀-𐺱",
direction = "rtl",
}
m["Yiii"] = {
"อี๋",
"syllabary",
aliases = {"Yi"},
characters = "ꀀ-꓆",
}
m["Zanb"] = {
"Zanabazar Square",
characters = u(0x11A00).."-"..u(0x11A47),
}
m["Zmth"] = {
"mathematical notation",
characters = "ℵ∀-⋿⟀-⟯⦀-⫿𝐀-𝟿",
translit = false,
character_category = "Mathematical notation symbols", -- ?
}
m["Zsym"] = {
"สัญลักษณ์",
"pictography",
aliases = {"symbol"},
characters = "─-➿←-⇿⌀-⏿⬀-⯾🀀-🃵🌀-🩭",
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"ยังไม่กำหนด",
aliases = {"undetermined"},
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"ยังไม่มีรหัส",
aliases = {"uncoded"},
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of
m["Hrkt"] = { -- TODO: add hentaigana
"คานะ",
"syllabary",
aliases = {"Kana", "Japanese syllabaries"},
characters = m["Hira"].characters .. m["Kana"].characters,
spaces = false,
}
m["Jpan"] = {
"ญี่ปุ่น",
"logography, syllabary",
aliases = {"Japanese"},
characters = m["Hrkt"].characters .. m["Hani"].characters .. m["Latnx"].characters,
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = {
"เกาหลี",
"logography, syllabary",
aliases = {"Korean"},
characters = m["Hang"].characters .. m["Hani"].characters,
}
return m
af28i6tetdm80y7stb00nae009qk21k
1908587
1908586
2024-04-26T04:29:07Z
Octahedron80
267
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Common.css]].
]=]
local concat = table.concat
local insert = table.insert
local remove = table.remove
local select = select
local sort = table.sort
local u = mw.ustring.char
------------------------------------------------------------------------------------
--
-- Helper functions
--
------------------------------------------------------------------------------------
-- Note: a[2] > b[2] means opens are sorted before closes if otherwise equal.
local function sort_ranges(a, b)
return a[1] < b[1] or a[1] == b[1] and a[2] > b[2]
end
-- Returns the union of two or more range tables.
local function union(...)
local ranges = {}
for i = 1, select("#", ...) do
local argt = select(i, ...)
for j, v in ipairs(argt) do
insert(ranges, {v, j % 2 == 1 and 1 or -1})
end
end
sort(ranges, sort_ranges)
local ret, i = {}, 0
for _, range in ipairs(ranges) do
i = i + range[2]
if i == 0 and range[2] == -1 then -- close
insert(ret, range[1])
elseif i == 1 and range[2] == 1 then -- open
if ret[#ret] and range[1] <= ret[#ret] + 1 then
remove(ret) -- merge adjacent ranges
else
insert(ret, range[1])
end
end
end
return ret
end
-- Adds the `characters` key, which is determined by a script's `ranges` table.
local function process_ranges(sc)
local ranges, chars = sc.ranges, {}
for i = 2, #ranges, 2 do
if ranges[i] == ranges[i - 1] then
insert(chars, u(ranges[i]))
else
insert(chars, u(ranges[i - 1]))
if ranges[i] > ranges[i - 1] + 1 then
insert(chars, "-")
end
insert(chars, u(ranges[i]))
end
end
sc.characters = concat(chars)
ranges.n = #ranges
return sc
end
------------------------------------------------------------------------------------
--
-- Data
--
------------------------------------------------------------------------------------
local m = {}
m["Adlm"] = process_ranges{
"อัดลัม",
"alphabet",
aliases = {"Adlam"},
ranges = {
0x061F, 0x061F,
0x0640, 0x0640,
0x1E900, 0x1E94B,
0x1E950, 0x1E959,
0x1E95E, 0x1E95F,
},
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"อาฟากา",
"syllabary",
aliases = {"Afaka"},
}
m["Aghb"] = process_ranges{
"Caucasian Albanian",
"alphabet",
ranges = {
0x10530, 0x10563,
0x1056F, 0x1056F,
},
}
m["Ahom"] = process_ranges{
"อาหม",
"abugida",
aliases = {"อะหม", "Ahom"},
ranges = {
0x11700, 0x1171A,
0x1171D, 0x1172B,
0x11730, 0x11746,
},
}
m["Arab"] = process_ranges{
"อาหรับ",
"abjad", -- more precisely, impure abjad
aliases = {"อารบิก", "อาระบิก", "Arabic"},
varieties = {{"ยาวี", "Jawi"}, {"Nastaliq", "Nastaleeq"}},
ranges = {
0x0600, 0x06FF,
0x0750, 0x077F,
0x0870, 0x088E,
0x0890, 0x0891,
0x0898, 0x08E1,
0x08E3, 0x08FF,
0xFB50, 0xFBC2,
0xFBD3, 0xFD8F,
0xFD92, 0xFDC7,
0xFDCF, 0xFDCF,
0xFDF0, 0xFDFF,
0xFE70, 0xFE74,
0xFE76, 0xFEFC,
0x102E0, 0x102FB,
0x10E60, 0x10E7E,
0x10EFD, 0x10EFF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
direction = "rtl",
normalizationFixes = {
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"เปอร์โซ-อาหรับ", "Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ku-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ms-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["mzn-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ota-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["pa-Arab"] = {
"ชาห์มุขี",
m["Arab"][2],
aliases = {"Shahmukhi"},
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"อาหรับ", "Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["sd-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["tt-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ug-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ur-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["xka-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = process_ranges{
"แอราเมอิกจักรวรรดิ",
"abjad",
aliases = {"Imperial Aramaic"},
ranges = {
0x10840, 0x10855,
0x10857, 0x1085F,
},
direction = "rtl",
}
m["Armn"] = process_ranges{
"อาร์มีเนีย",
"alphabet",
aliases = {"อาร์เมเนีย", "Armenian"},
ranges = {
0x0531, 0x0556,
0x0559, 0x058A,
0x058D, 0x058F,
0xFB13, 0xFB17,
},
capitalized = true,
}
m["Avst"] = process_ranges{
"อเวสตะ",
"alphabet",
aliases = {"Avestan"},
ranges = {
0x10B00, 0x10B35,
0x10B39, 0x10B3F,
},
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
m["Avst"][2],
aliases = m["Avst"].aliases,
ranges = m["Avst"].ranges,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = process_ranges{
"บาหลี",
"abugida",
aliases = {"Balinese"},
ranges = {
0x1B00, 0x1B4C,
0x1B50, 0x1B7E,
},
}
m["Bamu"] = process_ranges{
"บามุม",
"syllabary",
aliases = {"Bamum"},
ranges = {
0xA6A0, 0xA6F7,
0x16800, 0x16A38,
},
}
m["Bass"] = process_ranges{
"บัสซา",
"alphabet",
aliases = {"วาห์", "Bassa", "Bassa Vah", "Vah"},
ranges = {
0x16AD0, 0x16AED,
0x16AF0, 0x16AF5,
},
}
m["Batk"] = process_ranges{
"บาตัก",
"abugida",
aliases = {"Batak"},
ranges = {
0x1BC0, 0x1BF3,
0x1BFC, 0x1BFF,
},
}
m["Beng"] = process_ranges{
"เบงกอล",
"abugida",
aliases = {"เบงกาลี", "บังลา", "Bengali"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09B0,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09EF,
0x09F2, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = {
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = process_ranges{
"อัสสัม",
m["Beng"][2],
otherNames = {"เบงกอล-อัสสัม", "เบงกาลี-อัสสัม", "นาครีตะวันออก", "Assamese", "Bengali-Assamese", "Eastern Nagari"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09AF,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = process_ranges{
"ไภกษุกี",
"abugida",
aliases = {"Bhaiksuki"},
ranges = {
0x11C00, 0x11C08,
0x11C0A, 0x11C36,
0x11C38, 0x11C45,
0x11C50, 0x11C6C,
},
}
m["Blis"] = {
"Blissymbols",
"logography",
aliases = {"Blissymbolics"},
-- Not in Unicode
}
m["Bopo"] = process_ranges{
"จู้อิน",
"semisyllabary",
aliases = {"จู้อินฝูเฮ่า", "ปอพอมอฟอ", "ปัวพัวมัวฟัว", "Zhuyin", "Zhuyin Fuhao", "Bopomofo"},
ranges = {
0x02EA, 0x02EB,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302A, 0x302D,
0x3030, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3105, 0x312F,
0x31A0, 0x31BF,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
},
}
m["Brah"] = process_ranges{
"พราหมี",
"abugida",
aliases = {"พราหฺมี", "Brahmi"},
ranges = {
0x11000, 0x1104D,
0x11052, 0x11075,
0x1107F, 0x1107F,
},
normalizationFixes = {
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = process_ranges{
"เบรลล์",
"alphabet",
aliases = {"Braille"},
ranges = {
0x2800, 0x28FF,
},
}
m["Bugi"] = process_ranges{
"บูกิส",
"abugida",
aliases = {"ลนตารา", "Buginese", "Lontara"},
ranges = {
0x1A00, 0x1A1B,
0x1A1E, 0x1A1F,
0xA9CF, 0xA9CF,
},
}
m["Buhd"] = process_ranges{
"บูฮิด",
"abugida",
aliases = {"Buhid"},
ranges = {
0x1735, 0x1736,
0x1740, 0x1751,
0x1752, 0x1753,
},
}
m["Cakm"] = process_ranges{
"จักมา",
"abugida",
aliases = {"Chakma"},
ranges = {
0x09E6, 0x09EF,
0x1040, 0x1049,
0x11100, 0x11134,
0x11136, 0x11147,
},
}
m["Cans"] = process_ranges{
"Canadian syllabics",
"abugida",
ranges = {
0x1400, 0x167F,
0x18B0, 0x18F5,
0x11AB0, 0x11ABF,
},
}
m["Cari"] = process_ranges{
"คาเรีย",
"alphabet",
aliases = {"Carian"},
ranges = {
0x102A0, 0x102D0,
},
}
m["Cham"] = process_ranges{
"จาม",
"abugida",
aliases = {"Cham"},
ranges = {
0xAA00, 0xAA36,
0xAA40, 0xAA4D,
0xAA50, 0xAA59,
0xAA5C, 0xAA5F,
},
}
m["Cher"] = process_ranges{
"เชโรกี",
"syllabary",
aliases = {"Cherokee"},
ranges = {
0x13A0, 0x13F5,
0x13F8, 0x13FD,
0xAB70, 0xABBF,
},
}
m["Chrs"] = process_ranges{
"Chorasmian",
"abjad",
ranges = {
0x10FB0, 0x10FCB,
},
direction = "rtl",
}
m["Copt"] = process_ranges{
"คอปติก",
"alphabet",
aliases = {"Coptic"},
ranges = {
0x03E2, 0x03EF,
0x2C80, 0x2CF3,
0x2CF9, 0x2CFF,
0x102E0, 0x102FB,
},
capitalized = true,
}
m["Cpmn"] = process_ranges{
"Cypro-Minoan",
"syllabary",
aliases = {"Cypro Minoan"},
ranges = {
0x10100, 0x10101,
0x12F90, 0x12FF2,
},
}
m["Cprt"] = process_ranges{
"ไซปรัส",
"syllabary",
aliases = {"ไซเปรียท", "Cypriot"},
ranges = {
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
0x10800, 0x10805,
0x10808, 0x10808,
0x1080A, 0x10835,
0x10837, 0x10838,
0x1083C, 0x1083C,
0x1083F, 0x1083F,
},
direction = "rtl",
}
m["Cyrl"] = process_ranges{
"ซีริลลิก",
"alphabet",
aliases = {"Cyrillic"},
ranges = {
0x0400, 0x052F,
0x1C80, 0x1C88,
0x1D2B, 0x1D2B,
0x1D78, 0x1D78,
0x1DF8, 0x1DF8,
0x2DE0, 0x2DFF,
0x2E43, 0x2E43,
0xA640, 0xA69F,
0xFE2E, 0xFE2F,
0x1E030, 0x1E06D,
0x1E08F, 0x1E08F,
},
capitalized = true,
}
m["Cyrs"] = {
"ซีริลลิกเก่า",
m["Cyrl"][2],
aliases = {"ซีริลลิกช่วงต้น", "Old Cyrillic", "Early Cyrillic"},
ranges = m["Cyrl"].ranges,
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
}
m["Deva"] = process_ranges{
"เทวนาครี",
"abugida",
aliases = {"Devanagari"},
ranges = {
0x0900, 0x097F,
0x1CD0, 0x1CF6,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0xA830, 0xA839,
0xA8E0, 0xA8FF,
0x11B00, 0x11B09,
},
normalizationFixes = {
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = process_ranges{
"ดิเวส อกุรุ",
"abugida",
aliases = {"ดิเวหิ อกุรุ", "Dhives Akuru", "Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
ranges = {
0x11900, 0x11906,
0x11909, 0x11909,
0x1190C, 0x11913,
0x11915, 0x11916,
0x11918, 0x11935,
0x11937, 0x11938,
0x1193B, 0x11946,
0x11950, 0x11959,
},
}
m["Dogr"] = process_ranges{
"โฑครี",
"abugida",
aliases = {"Dogri", "Dogra"},
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11800, 0x1183B,
},
}
m["Dsrt"] = process_ranges{
"Deseret",
"alphabet",
ranges = {
0x10400, 0x1044F,
},
capitalized = true,
}
m["Dupl"] = process_ranges{
"Duployan",
"alphabet",
ranges = {
0x1BC00, 0x1BC6A,
0x1BC70, 0x1BC7C,
0x1BC80, 0x1BC88,
0x1BC90, 0x1BC99,
0x1BC9C, 0x1BCA3,
},
}
m["Egyd"] = {
"Demotic",
"abjad, logography",
}
m["Egyh"] = {
"Hieratic",
"abjad, logography",
}
m["Egyp"] = process_ranges{
"ไฮเออโรกลีฟอียิปต์",
"abjad, logography",
aliases = {"Egyptian hieroglyphic"},
ranges = {
0x13000, 0x13455,
},
varieties = {"Hieratic"},
wikipedia_article = "ไฮเออโรกลีฟอียิปต์",
normalizationFixes = {
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = process_ranges{
"เอลบาซาน",
"alphabet",
aliases = {"Elbasan"},
ranges = {
0x10500, 0x10527,
},
}
m["Elym"] = process_ranges{
"Elymaic",
"abjad",
ranges = {
0x10FE0, 0x10FF6,
},
direction = "rtl",
}
m["Ethi"] = process_ranges{
"เอธิโอเปีย",
"abugida",
aliases = {"กืออึซ", "Ethiopic", "Ge'ez"},
ranges = {
0x1200, 0x1248,
0x124A, 0x124D,
0x1250, 0x1256,
0x1258, 0x1258,
0x125A, 0x125D,
0x1260, 0x1288,
0x128A, 0x128D,
0x1290, 0x12B0,
0x12B2, 0x12B5,
0x12B8, 0x12BE,
0x12C0, 0x12C0,
0x12C2, 0x12C5,
0x12C8, 0x12D6,
0x12D8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135A,
0x135D, 0x137C,
0x1380, 0x1399,
0x2D80, 0x2D96,
0x2DA0, 0x2DA6,
0x2DA8, 0x2DAE,
0x2DB0, 0x2DB6,
0x2DB8, 0x2DBE,
0x2DC0, 0x2DC6,
0x2DC8, 0x2DCE,
0x2DD0, 0x2DD6,
0x2DD8, 0x2DDE,
0xAB01, 0xAB06,
0xAB09, 0xAB0E,
0xAB11, 0xAB16,
0xAB20, 0xAB26,
0xAB28, 0xAB2E,
0x1E7E0, 0x1E7E6,
0x1E7E8, 0x1E7EB,
0x1E7ED, 0x1E7EE,
0x1E7F0, 0x1E7FE,
},
}
m["Geok"] = process_ranges{
"Khutsuri",
"alphabet",
ranges = { -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
0x10A0, 0x10C5,
0x10C7, 0x10C7,
0x10CD, 0x10CD,
0x10FB, 0x10FB,
0x2D00, 0x2D25,
0x2D27, 0x2D27,
0x2D2D, 0x2D2D,
},
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = process_ranges{
"จอร์เจีย",
"alphabet",
aliases = {"Georgian"},
ranges = { -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
0x10D0, 0x10FF,
0x1C90, 0x1CBA,
0x1CBD, 0x1CBF,
},
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = process_ranges{
"กลาโกลิติก",
"alphabet",
aliases = {"Glagolitic"},
ranges = {
0x0484, 0x0484,
0x0487, 0x0487,
0x2C00, 0x2C5F,
0x2E43, 0x2E43,
0xA66F, 0xA66F,
0x1E000, 0x1E006,
0x1E008, 0x1E018,
0x1E01B, 0x1E021,
0x1E023, 0x1E024,
0x1E026, 0x1E02A,
},
capitalized = true,
}
m["Gong"] = process_ranges{
"คุญชลาโคณฑี",
"abugida",
aliases = {"Gunjala Gondi"},
ranges = {
0x0964, 0x0965,
0x11D60, 0x11D65,
0x11D67, 0x11D68,
0x11D6A, 0x11D8E,
0x11D90, 0x11D91,
0x11D93, 0x11D98,
0x11DA0, 0x11DA9,
},
}
m["Gonm"] = process_ranges{
"มสรามโคณฑี",
"abugida",
aliases = {"Masaram Gondi"},
ranges = {
0x0964, 0x0965,
0x11D00, 0x11D06,
0x11D08, 0x11D09,
0x11D0B, 0x11D36,
0x11D3A, 0x11D3A,
0x11D3C, 0x11D3D,
0x11D3F, 0x11D47,
0x11D50, 0x11D59,
},
}
m["Goth"] = process_ranges{
"กอท",
"alphabet",
aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"},
ranges = {
0x10330, 0x1034A,
},
}
m["Gran"] = process_ranges{
"ครันถะ",
"abugida",
aliases = {"Grantha"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0BE6, 0x0BF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CF2, 0x1CF4,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0x11300, 0x11303,
0x11305, 0x1130C,
0x1130F, 0x11310,
0x11313, 0x11328,
0x1132A, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
0x1133B, 0x11344,
0x11347, 0x11348,
0x1134B, 0x1134D,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135D, 0x11363,
0x11366, 0x1136C,
0x11370, 0x11374,
0x11FD0, 0x11FD1,
0x11FD3, 0x11FD3,
},
}
m["Grek"] = process_ranges{
"กรีก",
"alphabet",
"abugida",
aliases = {"Greek"},
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DBF,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = true,
}
m["Polyt"] = process_ranges{
"กรีก",
m["Grek"][2],
aliases = m["Grek"].aliases,
ranges = union(m["Grek"].ranges, {
0x1F00, 0x1F15,
0x1F18, 0x1F1D,
0x1F20, 0x1F45,
0x1F48, 0x1F4D,
0x1F50, 0x1F57,
0x1F59, 0x1F59,
0x1F5B, 0x1F5B,
0x1F5D, 0x1F5D,
0x1F5F, 0x1F7D,
0x1F80, 0x1FB4,
0x1FB6, 0x1FC4,
0x1FC6, 0x1FD3,
0x1FD6, 0x1FDB,
0x1FDD, 0x1FEF,
0x1FF2, 0x1FF4,
0x1FF6, 0x1FFE,
}),
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = process_ranges{
"คุชราต",
"abugida",
aliases = {"คุชราตี", "Gujarati"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A81, 0x0A83,
0x0A85, 0x0A8D,
0x0A8F, 0x0A91,
0x0A93, 0x0AA8,
0x0AAA, 0x0AB0,
0x0AB2, 0x0AB3,
0x0AB5, 0x0AB9,
0x0ABC, 0x0AC5,
0x0AC7, 0x0AC9,
0x0ACB, 0x0ACD,
0x0AD0, 0x0AD0,
0x0AE0, 0x0AE3,
0x0AE6, 0x0AF1,
0x0AF9, 0x0AFF,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Guru"] = process_ranges{
"คุรมุขี",
"abugida",
aliases = {"กูร์มูคี", "เกอร์มุกห์", "Gurmukhi"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A01, 0x0A03,
0x0A05, 0x0A0A,
0x0A0F, 0x0A10,
0x0A13, 0x0A28,
0x0A2A, 0x0A30,
0x0A32, 0x0A33,
0x0A35, 0x0A36,
0x0A38, 0x0A39,
0x0A3C, 0x0A3C,
0x0A3E, 0x0A42,
0x0A47, 0x0A48,
0x0A4B, 0x0A4D,
0x0A51, 0x0A51,
0x0A59, 0x0A5C,
0x0A5E, 0x0A5E,
0x0A66, 0x0A76,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = process_ranges{
"ฮันกึล",
"syllabary",
aliases = {"ฮังกึล", "Hangul", "Hangeul"},
ranges = {
0x1100, 0x11FF,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302E, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3131, 0x318E,
0x3200, 0x321E,
0x3260, 0x327E,
0xA960, 0xA97C,
0xAC00, 0xD7A3,
0xD7B0, 0xD7C6,
0xD7CB, 0xD7FB,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFFA0, 0xFFBE,
0xFFC2, 0xFFC7,
0xFFCA, 0xFFCF,
0xFFD2, 0xFFD7,
0xFFDA, 0xFFDC,
},
}
m["Hani"] = process_ranges{
"จีน",
"logography",
aliases = {"ฮั่น", "Han"},
ranges = {
0x2E80, 0x2E99,
0x2E9B, 0x2EF3,
0x2F00, 0x2FD5,
0x3001, 0x3003,
0x3005, 0x3011,
0x3013, 0x301F,
0x3021, 0x302D,
0x3030, 0x3030,
0x3037, 0x303F,
0x3190, 0x319F,
0x31C0, 0x31E3,
0x3220, 0x3247,
0x3280, 0x32B0,
0x32C0, 0x32CB,
0x30FB, 0x30FB,
0x32FF, 0x32FF,
0x3358, 0x3370,
0x337B, 0x337F,
0x33E0, 0x33FE,
0x3400, 0x4DBF,
0x4E00, 0x9FFF,
0xA700, 0xA707,
0xF900, 0xFA6D,
0xFA70, 0xFAD9,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0x16FE2, 0x16FE3,
0x16FF0, 0x16FF1,
0x1D360, 0x1D371,
0x1F250, 0x1F251,
0x20000, 0x2A6DF,
0x2A700, 0x2B739,
0x2B740, 0x2B81D,
0x2B820, 0x2CEA1,
0x2CEB0, 0x2EBE0,
0x2EBF0, 0x2EE5D,
0x2F800, 0x2FA1D,
0x30000, 0x3134A,
0x31350, 0x323AF,
},
varieties = {{"ฮั่นจื่อ", "Hanzi"}, {"คันจิ", "Kanji"}, {"ฮันจา", "Hanja"}, {"จื๋อโนม", "Chu Nom"}},
spaces = false,
}
m["Hans"] = {
"จีนตัวย่อ",
m["Hani"][2],
aliases = {"Simplified Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"จีนตัวเต็ม",
m["Hani"][2],
aliases = {"Traditional Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = process_ranges{
"ฮานูโนโอ",
"abugida",
aliases = {"Hanunoo"},
ranges = {
0x1720, 0x1736,
},
}
m["Hatr"] = process_ranges{
"Hatran",
"abjad",
ranges = {
0x108E0, 0x108F2,
0x108F4, 0x108F5,
0x108FB, 0x108FF,
},
direction = "rtl",
}
m["Hebr"] = process_ranges{
"ฮีบรู",
"abjad", -- more precisely, impure abjad
aliases = {"Hebrew"},
ranges = {
0x0591, 0x05C7,
0x05D0, 0x05EA,
0x05EF, 0x05F4,
0x2135, 0x2138,
0xFB1D, 0xFB36,
0xFB38, 0xFB3C,
0xFB3E, 0xFB3E,
0xFB40, 0xFB41,
0xFB43, 0xFB44,
0xFB46, 0xFB4F,
},
direction = "rtl",
}
m["Hira"] = process_ranges{
"ฮิรางานะ",
"syllabary",
aliases = {"ฮิระงะนะ", "Hiragana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3041, 0x3096,
0x3099, 0x30A0,
0x30FB, 0x30FC,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFF70, 0xFF70,
0xFF9E, 0xFF9F,
0x1B001, 0x1B11F,
0x1B132, 0x1B132,
0x1B150, 0x1B152,
0x1F200, 0x1F200,
},
varieties = {{"เฮ็นไตงานะ", "Hentaigana"}},
spaces = false,
}
m["Hluw"] = process_ranges{
"ไฮเออโรกลีฟอานาโตเลีย",
"logography, syllabary",
aliases = {"Anatolian Hieroglyphs"},
ranges = {
0x14400, 0x14646,
},
wikipedia_article = "ไฮเออโรกลีฟอานาโตเลีย",
}
m["Hmng"] = process_ranges{
"Pahawh Hmong",
"semisyllabary",
aliases = {"ม้ง", "Hmong"},
ranges = {
0x16B00, 0x16B45,
0x16B50, 0x16B59,
0x16B5B, 0x16B61,
0x16B63, 0x16B77,
0x16B7D, 0x16B8F,
},
}
m["Hmnp"] = process_ranges{
"Nyiakeng Puachue Hmong",
"alphabet",
ranges = {
0x1E100, 0x1E12C,
0x1E130, 0x1E13D,
0x1E140, 0x1E149,
0x1E14E, 0x1E14F,
},
}
m["Hung"] = process_ranges{
"ฮังการีเก่า",
"alphabet",
aliases = {"รูนฮังการี", "Old Hungarian", "Hungarian runic"},
ranges = {
0x10C80, 0x10CB2,
0x10CC0, 0x10CF2,
0x10CFA, 0x10CFF,
},
capitalized = true,
direction = "rtl",
}
m["Ibrn"] = {
"ไอบีเรีย",
"semisyllabary",
aliases = {"Iberian"},
}
m["Imag"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Inds"] = {
"สินธุ",
aliases = {"อินดัส", "Indus", "Harappan", "Indus Valley"},
}
m["Ipach"] = {
"สัทอักษรสากล",
aliases = {"International Phonetic Alphabet", "IPA"},
}
m["Ital"] = process_ranges{
"อิตาลิกเก่า",
"alphabet",
aliases = {"Old Italic"},
ranges = {
0x10300, 0x10323,
0x1032D, 0x1032F,
},
}
m["Java"] = process_ranges{
"ชวา",
"abugida",
aliases = {"Javanese"},
ranges = {
0xA980, 0xA9CD,
0xA9CF, 0xA9D9,
0xA9DE, 0xA9DF,
},
}
m["Jurc"] = {
"จูร์เชน",
aliases = {"Jurchen"},
spaces = false,
}
m["Kali"] = process_ranges{
"กะยา",
"abugida",
aliases = {"Kayah Li"},
ranges = {
0xA900, 0xA92F,
},
}
m["Kana"] = process_ranges{
"คาตากานะ",
"syllabary",
aliases = {"คะตะกะนะ", "Katakana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3099, 0x309C,
0x30A0, 0x30FF,
0x31F0, 0x31FF,
0x32D0, 0x32FE,
0x3300, 0x3357,
0xFE45, 0xFE46,
0xFF61, 0xFF9F,
0x1AFF0, 0x1AFF3,
0x1AFF5, 0x1AFFB,
0x1AFFD, 0x1AFFE,
0x1B000, 0x1B000,
0x1B120, 0x1B122,
0x1B155, 0x1B155,
0x1B164, 0x1B167,
},
spaces = false,
}
m["Kawi"] = process_ranges{
"กวิ",
"abugida",
aliases = {"Kawi"},
ranges = {
0x11F00, 0x11F10,
0x11F12, 0x11F3A,
0x11F3E, 0x11F59,
},
}
m["Khar"] = process_ranges{
"ขโรษฐี",
"abugida",
aliases = {"Kharoshthi"},
ranges = {
0x10A00, 0x10A03,
0x10A05, 0x10A06,
0x10A0C, 0x10A13,
0x10A15, 0x10A17,
0x10A19, 0x10A35,
0x10A38, 0x10A3A,
0x10A3F, 0x10A48,
0x10A50, 0x10A58,
},
direction = "rtl",
}
m["Khmr"] = process_ranges{
"เขมร",
"abugida",
aliases = {"Khmer"},
ranges = {
0x1780, 0x17DD,
0x17E0, 0x17E9,
0x17F0, 0x17F9,
0x19E0, 0x19FF,
},
spaces = false,
normalizationFixes = {
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = process_ranges{
"Khojki",
"abugida",
ranges = {
0x0AE6, 0x0AEF,
0xA830, 0xA839,
0x11200, 0x11211,
0x11213, 0x11241,
},
normalizationFixes = {
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Kitl"] = {
"คีตันใหญ่",
"logography, syllabary",
aliases = {"Khitan Large"},
spaces = false,
}
m["Kits"] = process_ranges{
"คีตันเล็ก",
"logography, syllabary",
aliases = {"Khitan Small"},
ranges = {
0x16FE4, 0x16FE4,
0x18B00, 0x18CD5,
},
spaces = false,
}
m["Knda"] = process_ranges{
"กันนาดา",
"abugida",
aliases = {"Kannada"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C80, 0x0C8C,
0x0C8E, 0x0C90,
0x0C92, 0x0CA8,
0x0CAA, 0x0CB3,
0x0CB5, 0x0CB9,
0x0CBC, 0x0CC4,
0x0CC6, 0x0CC8,
0x0CCA, 0x0CCD,
0x0CD5, 0x0CD6,
0x0CDD, 0x0CDE,
0x0CE0, 0x0CE3,
0x0CE6, 0x0CEF,
0x0CF1, 0x0CF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0x1CF4, 0x1CF4,
0xA830, 0xA835,
},
normalizationFixes = {
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
"syllabary",
-- Not in Unicode
}
m["Kthi"] = process_ranges{
"ไกถี",
"abugida",
aliases = {"Kaithi"},
ranges = {
0x0966, 0x096F,
0xA830, 0xA839,
0x11080, 0x110C2,
0x110CD, 0x110CD,
},
}
m["Lana"] = process_ranges{
"ไทธรรม",
"abugida",
aliases = {"ธรรม", "ตัวเมือง", "ล้านนา", "Tai Tham", "Tham", "Tua Mueang", "Lanna"},
ranges = {
0x1A20, 0x1A5E,
0x1A60, 0x1A7C,
0x1A7F, 0x1A89,
0x1A90, 0x1A99,
0x1AA0, 0x1AAD,
},
spaces = false,
}
m["Laoo"] = process_ranges{
"ลาว",
"abugida",
aliases = {"Lao"},
ranges = {
0x0E81, 0x0E82,
0x0E84, 0x0E84,
0x0E86, 0x0E8A,
0x0E8C, 0x0EA3,
0x0EA5, 0x0EA5,
0x0EA7, 0x0EBD,
0x0EC0, 0x0EC4,
0x0EC6, 0x0EC6,
0x0EC8, 0x0ECE,
0x0ED0, 0x0ED9,
0x0EDC, 0x0EDF,
},
spaces = false,
}
m["Latn"] = process_ranges{
"ละติน",
"alphabet",
aliases = {"ลาติน", "โรมัน", "Latin", "Roman"},
ranges = {
0x0041, 0x005A,
0x0061, 0x007A,
0x00AA, 0x00AA,
0x00BA, 0x00BA,
0x00C0, 0x00D6,
0x00D8, 0x00F6,
0x00F8, 0x024F,
0x1E00, 0x1EFF,
},
varieties = {{"รูมี", "Rumi"}, {"โรมาจิ", "โรมะจิ", "Romaji", "Rōmaji"}, "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"ฟรักทูร์",
m["Latn"][2],
aliases = {"Fraktur"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"แบล็กเลตเทอร์", "Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"แกลิก",
m["Latn"][2],
aliases = {"Gaelic"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"ไอริช", "Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latnx"] = process_ranges{
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
ranges = union(m["Latn"].ranges, {
0x0250, 0x02B8,
0x02C0, 0x02C1,
0x02E0, 0x02E4,
0x0363, 0x036F,
0x0485, 0x0486,
0x0951, 0x0952,
0x10FB, 0x10FB,
0x1D00, 0x1D25,
0x1D2C, 0x1D5C,
0x1D62, 0x1D65,
0x1D6B, 0x1D77,
0x1D79, 0x1DBE,
0x202F, 0x202F,
0x2071, 0x2071,
0x207F, 0x207F,
0x2090, 0x209C,
0x20F0, 0x20F0,
0x2100, 0x2125,
0x2128, 0x2128,
0x212A, 0x2134,
0x2139, 0x213B,
0x2141, 0x214E,
0x2160, 0x2188,
0x2C60, 0x2C7F,
0xA700, 0xA707,
0xA722, 0xA787,
0xA78B, 0xA7CA,
0xA7D0, 0xA7D1,
0xA7D3, 0xA7D3,
0xA7D5, 0xA7D9,
0xA7F2, 0xA7FF,
0xA92E, 0xA92E,
0xAB30, 0xAB5A,
0xAB5C, 0xAB64,
0xAB66, 0xAB69,
0xFB00, 0xFB06,
0xFF21, 0xFF3A,
0xFF41, 0xFF5A,
0x10780, 0x10785,
0x10787, 0x107B0,
0x107B2, 0x107BA,
0x1DF00, 0x1DF1E,
0x1DF25, 0x1DF2A,
}),
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
"abugida",
}
m["Lepc"] = process_ranges{
"เลปชา",
"abugida",
aliases = {"Lepcha"},
ranges = {
0x1C00, 0x1C37,
0x1C3B, 0x1C49,
0x1C4D, 0x1C4F,
},
}
m["Limb"] = process_ranges{
"ลิมบู",
"abugida",
aliases = {"Limbu"},
ranges = {
0x0965, 0x0965,
0x1900, 0x191E,
0x1920, 0x192B,
0x1930, 0x193B,
0x1940, 0x1940,
0x1944, 0x194F,
},
}
m["Lina"] = process_ranges{
"ลิเนียร์เอ",
aliases = {"Linear A"},
ranges = {
0x10107, 0x10133,
0x10600, 0x10736,
0x10740, 0x10755,
0x10760, 0x10767,
},
}
m["Linb"] = process_ranges{
"ลิเนียร์บี",
aliases = {"Linear B"},
ranges = {
0x10000, 0x1000B,
0x1000D, 0x10026,
0x10028, 0x1003A,
0x1003C, 0x1003D,
0x1003F, 0x1004D,
0x10050, 0x1005D,
0x10080, 0x100FA,
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
},
}
m["Lisu"] = process_ranges{
"ลีสู่",
"alphabet",
aliases = {"ฟราเซอร์", "Lisu", "Fraser"},
ranges = {
0xA4D0, 0xA4FF,
0x11FB0, 0x11FB0,
},
normalizationFixes = {
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
"syllabary",
-- Not in Unicode
}
m["Lyci"] = process_ranges{
"ลิเชีย",
"alphabet",
aliases = {"Lycian"},
ranges = {
0x10280, 0x1029C,
},
}
m["Lydi"] = process_ranges{
"ลิเดีย",
"alphabet",
aliases = {"Lydian"},
ranges = {
0x10920, 0x10939,
0x1093F, 0x1093F,
},
direction = "rtl",
}
m["Mahj"] = process_ranges{
"Mahajani",
"abugida",
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11150, 0x11176,
},
}
m["Maka"] = process_ranges{
"ลนตารา",
"abugida",
aliases = {"Lontara", "Makasar"},
ranges = {
0x11EE0, 0x11EF8,
},
}
m["Mand"] = process_ranges{
"มันดาอิก",
aliases = {"Mandaic", "Mandaean"},
ranges = {
0x0640, 0x0640,
0x0840, 0x085B,
0x085E, 0x085E,
},
direction = "rtl",
}
m["Mani"] = process_ranges{
"Manichaean",
"abjad",
ranges = {
0x0640, 0x0640,
0x10AC0, 0x10AE6,
0x10AEB, 0x10AF6,
},
direction = "rtl",
}
m["Marc"] = process_ranges{
"Marchen",
"abugida",
ranges = {
0x11C70, 0x11C8F,
0x11C92, 0x11CA7,
0x11CA9, 0x11CB6,
},
}
m["Maya"] = process_ranges{
"มายา",
aliases = {"มายัน", "Maya", "Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
ranges = {
0x1D2E0, 0x1D2F3,
},
}
m["Medf"] = process_ranges{
"Medefaidrin",
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
ranges = {
0x16E40, 0x16E9A,
},
capitalized = true,
}
m["Mend"] = process_ranges{
"Mende",
aliases = {"Mende Kikakui"},
ranges = {
0x1E800, 0x1E8C4,
0x1E8C7, 0x1E8D6,
},
direction = "rtl",
}
m["Merc"] = process_ranges{
"Meroitic cursive",
"abugida",
ranges = {
0x109A0, 0x109B7,
0x109BC, 0x109CF,
0x109D2, 0x109FF,
},
direction = "rtl",
}
m["Mero"] = process_ranges{
"Meroitic hieroglyphic",
"abugida",
ranges = {
0x10980, 0x1099F,
},
direction = "rtl",
}
m["Mlym"] = process_ranges{
"มลยาฬัม",
"abugida",
aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0D00, 0x0D0C,
0x0D0E, 0x0D10,
0x0D12, 0x0D44,
0x0D46, 0x0D48,
0x0D4A, 0x0D4F,
0x0D54, 0x0D63,
0x0D66, 0x0D7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0xA830, 0xA832,
},
normalizationFixes = {
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = process_ranges{
"โมฑี",
"abugida",
aliases = {"Modi"},
ranges = {
0xA830, 0xA839,
0x11600, 0x11644,
0x11650, 0x11659,
},
normalizationFixes = {
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = process_ranges{
"มองโกเลีย",
"alphabet",
aliases = {"Mongolian", "Mongol bichig", "Hudum Mongol bichig"},
ranges = {
0x1800, 0x1805,
0x180A, 0x1819,
0x1820, 0x1842,
0x1878, 0x1878,
0x1880, 0x1897,
0x18A6, 0x18A6,
0x18A9, 0x18A9,
0x200C, 0x200D,
0x202F, 0x202F,
0x11660, 0x11668,
},
direction = "down",
}
m["mnc-Mong"] = process_ranges{
"แมนจู",
m["Mong"][2],
aliases = {"Manchu"},
ranges = {
0x1801, 0x1801,
0x1804, 0x1804,
0x1808, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x185D,
0x185F, 0x1861,
0x1864, 0x1869,
0x186C, 0x1871,
0x1873, 0x1877,
0x1880, 0x1888,
0x188F, 0x188F,
0x189A, 0x18A5,
0x18A8, 0x18A8,
0x18AA, 0x18AA,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "down",
parent = "Mong",
}
m["sjo-Mong"] = process_ranges{
"ซิเบ",
m["Mong"][2],
aliases = {"Xibe", "Sibe"},
ranges = {
0x1804, 0x1804,
0x1807, 0x1807,
0x180A, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x1828,
0x182A, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x1872,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "down",
parent = "mnc-Mong",
}
m["xwo-Mong"] = process_ranges{
"Clear Script",
m["Mong"][2],
aliases = {"Todo", "Todo bichig"},
ranges = {
0x1800, 0x1801,
0x1804, 0x1806,
0x180A, 0x1820,
0x1828, 0x1828,
0x182F, 0x1831,
0x1834, 0x1834,
0x1837, 0x1838,
0x183A, 0x183B,
0x1840, 0x1840,
0x1843, 0x185C,
0x1880, 0x1887,
0x1889, 0x188F,
0x1894, 0x1894,
0x1896, 0x1899,
0x18A7, 0x18A7,
0x200C, 0x200D,
0x202F, 0x202F,
0x11669, 0x1166C,
},
direction = "down",
parent = "Mong",
}
m["Moon"] = {
"Moon",
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"รหัสมอร์ส",
aliases = {"Morse code"},
}
m["Mroo"] = process_ranges{
"มโร",
aliases = {"Mro"},
ranges = {
0x16A40, 0x16A5E,
0x16A60, 0x16A69,
0x16A6E, 0x16A6F,
},
}
m["Mtei"] = process_ranges{
"มณีปุระ",
"abugida",
aliases = {"ไมไตมะเยก", "มีไตมะเยก", "Manipuri", "Meitei Mayek", "Meetei Mayek"},
ranges = {
0xAAE0, 0xAAF6,
0xABC0, 0xABED,
0xABF0, 0xABF9,
},
}
m["Mult"] = process_ranges{
"Multani",
"abugida",
ranges = {
0x0A66, 0x0A6F,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128A, 0x1128D,
0x1128F, 0x1129D,
0x1129F, 0x112A9,
},
}
m["Music"] = process_ranges{
"สัญกรณ์ดนตรี",
"pictography",
aliases = {"Musical notation"},
ranges = {
0x2669, 0x266F,
0x1D100, 0x1D126,
0x1D129, 0x1D1EA,
},
translit = false,
}
m["Mymr"] = process_ranges{
"พม่า",
"abugida",
aliases = {"เมียนมา", "Burmese", "Myanmar"},
ranges = {
0x1000, 0x109F,
0xA92E, 0xA92E,
0xA9E0, 0xA9FE,
0xAA60, 0xAA7F,
},
spaces = false,
}
m["Nagm"] = process_ranges{
"Nag Mundari",
"alphabet",
ranges = {
0x1E4D0, 0x1E4F9,
},
}
m["Nand"] = process_ranges{
"นันทินาครี",
"abugida",
aliases = {"Nandinagari"},
ranges = {
0x0964, 0x0965,
0x0CE6, 0x0CEF,
0x1CE9, 0x1CE9,
0x1CF2, 0x1CF2,
0x1CFA, 0x1CFA,
0xA830, 0xA835,
0x119A0, 0x119A7,
0x119AA, 0x119D7,
0x119DA, 0x119E4,
},
}
m["Narb"] = process_ranges{
"Old North Arabian",
"abjad",
ranges = {
0x10A80, 0x10A9F,
},
direction = "rtl",
}
m["Nbat"] = process_ranges{
"Nabataean",
"abjad",
aliases = {"Nabatean"},
ranges = {
0x10880, 0x1089E,
0x108A7, 0x108AF,
},
direction = "rtl",
}
m["Newa"] = process_ranges{
"Newa",
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
ranges = {
0x11400, 0x1145B,
0x1145D, 0x11461,
},
}
m["Nkdb"] = {
"Dongba",
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = process_ranges{
"N'Ko",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x07C0, 0x07FA,
0x07FD, 0x07FF,
0xFD3E, 0xFD3F,
},
direction = "rtl",
}
m["None"] = {
"ไม่ระบุ",
aliases = {"Unspecified"},
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Nshu"] = process_ranges{
"Nüshu",
"syllabary",
aliases = {"Nushu"},
ranges = {
0x16FE1, 0x16FE1,
0x1B170, 0x1B2FB,
},
spaces = false,
}
m["Ogam"] = process_ranges{
"Ogham",
ranges = {
0x1680, 0x169C,
},
}
m["Olck"] = process_ranges{
"Ol Chiki",
ranges = {
0x1C50, 0x1C7F,
},
}
m["Orkh"] = process_ranges{
"Orkhon runes",
aliases = {"Old Turkic"},
ranges = {
0x10C00, 0x10C48,
},
direction = "rtl",
}
m["Orya"] = process_ranges{
"โอริยา",
"abugida",
aliases = {"โอเดีย", "Oriya", "Odia"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B01, 0x0B03,
0x0B05, 0x0B0C,
0x0B0F, 0x0B10,
0x0B13, 0x0B28,
0x0B2A, 0x0B30,
0x0B32, 0x0B33,
0x0B35, 0x0B39,
0x0B3C, 0x0B44,
0x0B47, 0x0B48,
0x0B4B, 0x0B4D,
0x0B55, 0x0B57,
0x0B5C, 0x0B5D,
0x0B5F, 0x0B63,
0x0B66, 0x0B77,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = process_ranges{
"Osage",
ranges = {
0x104B0, 0x104D3,
0x104D8, 0x104FB,
},
capitalized = true,
}
m["Osma"] = process_ranges{
"อุสมาน",
aliases = {"Osmanya"},
ranges = {
0x10480, 0x1049D,
0x104A0, 0x104A9,
},
}
m["Ougr"] = process_ranges{
"อุยกูร์เก่า",
"abjad, alphabet",
aliases = {"Old Uyghur"},
ranges = {
0x0640, 0x0640,
0x10AF2, 0x10AF2,
0x10F70, 0x10F89,
},
direction = "down",
}
m["Palm"] = process_ranges{
"Palmyrene",
ranges = {
0x10860, 0x1087F,
},
direction = "rtl",
}
m["Pauc"] = process_ranges{
"Pau Cin Hau",
ranges = {
0x11AC0, 0x11AF8,
},
}
m["Perm"] = process_ranges{
"Old Permic",
ranges = {
0x0483, 0x0483,
0x10350, 0x1037A,
},
}
m["Phag"] = process_ranges{
"Phags-pa",
"abugida",
ranges = {
0x1802, 0x1803,
0x1805, 0x1805,
0x200C, 0x200D,
0x202F, 0x202F,
0x3002, 0x3002,
0xA840, 0xA877,
},
direction = "down",
}
m["Phli"] = process_ranges{
"Inscriptional Pahlavi",
"abjad",
ranges = {
0x10B60, 0x10B72,
0x10B78, 0x10B7F,
},
direction = "rtl",
}
m["Phlp"] = process_ranges{
"Psalter Pahlavi",
"abjad",
ranges = {
0x0640, 0x0640,
0x10B80, 0x10B91,
0x10B99, 0x10B9C,
0x10BA9, 0x10BAF,
},
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Phnx"] = process_ranges{
"ฟินิเชีย",
"abjad",
aliases = {"Phoenician"},
ranges = {
0x10900, 0x1091B,
0x1091F, 0x1091F,
},
direction = "rtl",
}
m["Plrd"] = process_ranges{
"Pollard",
"abugida",
aliases = {"Miao"},
ranges = {
0x16F00, 0x16F4A,
0x16F4F, 0x16F87,
0x16F8F, 0x16F9F,
},
}
m["Prti"] = process_ranges{
"Inscriptional Parthian",
ranges = {
0x10B40, 0x10B55,
0x10B58, 0x10B5F,
},
direction = "rtl",
}
m["Ranj"] = {
"Ranjana",
"abugida",
-- Not in Unicode
}
m["Rjng"] = process_ranges{
"Rejang",
"abugida",
ranges = {
0xA930, 0xA953,
0xA95F, 0xA95F,
},
}
m["Rohg"] = process_ranges{
"ฮานิฟ",
"alphabet",
aliases = {"ฮานีฟี", "Hanifi Rohingya", "Hanifi"},
characters = "𐴀-𐴹",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0640, 0x0640,
0x06D4, 0x06D4,
0x10D00, 0x10D27,
0x10D30, 0x10D39,
},
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
-- Not in Unicode
}
m["Rumin"] = process_ranges{
"Rumi numerals",
ranges = {
0x10E60, 0x10E7E,
},
character_category = "Rumi numerals",
}
m["Runr"] = process_ranges{
"รูน",
"alphabet",
aliases = {"รูนิก", "Runic"},
ranges = {
0x16A0, 0x16EA,
0x16EE, 0x16F8,
},
}
m["Samr"] = process_ranges{
"Samaritan",
"abjad",
ranges = {
0x0800, 0x082D,
0x0830, 0x083E,
},
direction = "rtl",
}
m["Sarb"] = process_ranges{
"Old South Arabian",
"abjad",
ranges = {
0x10A60, 0x10A7F,
},
direction = "rtl",
}
m["Saur"] = process_ranges{
"Saurashtra",
"abugida",
ranges = {
0xA880, 0xA8C5,
0xA8CE, 0xA8D9,
},
}
m["Semap"] = {
"สัญญาณธง",
"pictography",
aliases = {"flag semaphore"},
}
m["Sgnw"] = process_ranges{
"SignWriting",
"pictography",
aliases = {"Sutton SignWriting"},
ranges = {
0x1D800, 0x1DA8B,
0x1DA9B, 0x1DA9F,
0x1DAA1, 0x1DAAF,
},
translit = false,
}
m["Shaw"] = process_ranges{
"Shavian",
aliases = {"Shaw"},
ranges = {
0x10450, 0x1047F,
},
}
m["Shrd"] = process_ranges{
"ศารทา",
"abugida",
aliases = {"Sharada"},
ranges = {
0x0951, 0x0951,
0x1CD7, 0x1CD7,
0x1CD9, 0x1CD9,
0x1CDC, 0x1CDD,
0x1CE0, 0x1CE0,
0xA830, 0xA835,
0xA838, 0xA838,
0x11180, 0x111DF,
},
}
m["Shui"] = {
"Sui",
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = process_ranges{
"สิทธัม",
"abugida",
aliases = {"Siddham"},
ranges = {
0x11580, 0x115B5,
0x115B8, 0x115DD,
},
}
m["Sind"] = process_ranges{
"คุดาบาด",
"abugida",
aliases = {"Khudabadi", "Khudawadi"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x112B0, 0x112EA,
0x112F0, 0x112F9,
},
normalizationFixes = {
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = process_ranges{
"สิงหล",
"abugida",
aliases = {"Sinhalese", "Sinhala"},
ranges = {
0x0964, 0x0965,
0x0D81, 0x0D83,
0x0D85, 0x0D96,
0x0D9A, 0x0DB1,
0x0DB3, 0x0DBB,
0x0DBD, 0x0DBD,
0x0DC0, 0x0DC6,
0x0DCA, 0x0DCA,
0x0DCF, 0x0DD4,
0x0DD6, 0x0DD6,
0x0DD8, 0x0DDF,
0x0DE6, 0x0DEF,
0x0DF2, 0x0DF4,
0x1CF2, 0x1CF2,
0x111E1, 0x111F4,
},
normalizationFixes = {
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = process_ranges{
"ซอกเดีย",
"abjad",
aliases = {"Sogdian"},
ranges = {
0x0640, 0x0640,
0x10F30, 0x10F59,
},
direction = "rtl",
}
m["Sogo"] = process_ranges{
"ซอกเดียเก่า",
"abjad",
aliases = {"Old Sogdian"},
ranges = {
0x10F00, 0x10F27,
},
direction = "rtl",
}
m["Sora"] = process_ranges{
"Sorang Sompeng",
aliases = {"Sora Sompeng"},
ranges = {
0x110D0, 0x110E8,
0x110F0, 0x110F9,
},
}
m["Soyo"] = process_ranges{
"Soyombo",
"abugida",
ranges = {
0x11A50, 0x11AA2,
},
}
m["Sund"] = process_ranges{
"ซุนดา",
"abugida",
aliases = {"Sundanese"},
ranges = {
0x1B80, 0x1BBF,
0x1CC0, 0x1CC7,
},
}
m["Sylo"] = process_ranges{
"สิเลฏินาครี",
"abugida",
aliases = {"สิลอฏินาครี", "Syloti Nagri", "Sylheti Nagari"},
ranges = {
0x0964, 0x0965,
0x09E6, 0x09EF,
0xA800, 0xA82C,
},
}
m["Syrc"] = process_ranges{
"ซีรีแอก",
"abjad", -- more precisely, impure abjad
aliases = {"ซีเรียค", "Syriac"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0640, 0x0640,
0x064B, 0x0655,
0x0670, 0x0670,
0x0700, 0x070D,
0x070F, 0x074A,
0x074D, 0x074F,
0x0860, 0x086A,
0x1DF8, 0x1DF8,
0x1DFA, 0x1DFA,
},
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = process_ranges{
"ตักบันวา",
"abugida",
aliases = {"Tagbanwa"},
ranges = {
0x1735, 0x1736,
0x1760, 0x176C,
0x176E, 0x1770,
0x1772, 0x1773,
},
}
m["Takr"] = process_ranges{
"ฏากรี",
"abugida",
aliases = {"ตากรี", "Takri"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x11680, 0x116B9,
0x116C0, 0x116C9,
},
normalizationFixes = {
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = process_ranges{
"ไทใต้คง",
"abugida",
aliases = {"ไทเหนือ", "ไทเหนือใหม่", "ไตเหลอ", "Tai Nüa", "Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
ranges = {
0x1040, 0x1049,
0x1950, 0x196D,
0x1970, 0x1974,
},
spaces = false,
}
m["Talu"] = process_ranges{
"ไทลื้อใหม่",
"abugida",
aliases = {"New Tai Lue"},
ranges = {
0x1980, 0x19AB,
0x19B0, 0x19C9,
0x19D0, 0x19DA,
0x19DE, 0x19DF,
},
spaces = false,
}
m["Taml"] = process_ranges{
"ทมิฬ",
"abugida",
aliases = {"Tamil"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B82, 0x0B83,
0x0B85, 0x0B8A,
0x0B8E, 0x0B90,
0x0B92, 0x0B95,
0x0B99, 0x0B9A,
0x0B9C, 0x0B9C,
0x0B9E, 0x0B9F,
0x0BA3, 0x0BA4,
0x0BA8, 0x0BAA,
0x0BAE, 0x0BB9,
0x0BBE, 0x0BC2,
0x0BC6, 0x0BC8,
0x0BCA, 0x0BCD,
0x0BD0, 0x0BD0,
0x0BD7, 0x0BD7,
0x0BE6, 0x0BFA,
0x1CDA, 0x1CDA,
0xA8F3, 0xA8F3,
0x11301, 0x11301,
0x11303, 0x11303,
0x1133B, 0x1133C,
0x11FC0, 0x11FF1,
0x11FFF, 0x11FFF,
},
normalizationFixes = {
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = process_ranges{
"ตังกุต",
"logography, syllabary",
aliases = {"Tangut"},
ranges = {
0x16FE0, 0x16FE0,
0x17000, 0x187F7,
0x18800, 0x18AFF,
0x18D00, 0x18D08,
},
spaces = false,
}
m["Tavt"] = process_ranges{
"ไทเวียด",
"abugida",
aliases = {"Tai Viet"},
ranges = {
0xAA80, 0xAAC2,
0xAADB, 0xAADF,
},
spaces = false,
}
m["Telu"] = process_ranges{
"เตลูกู",
"abugida",
aliases = {"Telugu"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C00, 0x0C0C,
0x0C0E, 0x0C10,
0x0C12, 0x0C28,
0x0C2A, 0x0C39,
0x0C3C, 0x0C44,
0x0C46, 0x0C48,
0x0C4A, 0x0C4D,
0x0C55, 0x0C56,
0x0C58, 0x0C5A,
0x0C5D, 0x0C5D,
0x0C60, 0x0C63,
0x0C66, 0x0C6F,
0x0C77, 0x0C7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"เทงกวาร์",
aliases = {"Tengwar"},
}
m["Tfng"] = process_ranges{
"ทิฟินาค",
"abjad, alphabet",
aliases = {"Tifinagh"},
ranges = {
0x2D30, 0x2D67,
0x2D6F, 0x2D70,
0x2D7F, 0x2D7F,
},
otherNames = {"ลิบีโค-เบอร์เบอร์", "เบอร์เบอร์", "Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
}
m["Tglg"] = process_ranges{
"ไบบายิน",
"abugida",
aliases = {"ตากาล็อก", "Baybayin", "Tagalog"},
ranges = {
0x1700, 0x1715,
0x171F, 0x171F,
0x1735, 0x1736,
},
}
m["Thaa"] = process_ranges{
"ทานะ",
"abugida",
aliases = {"Thaana"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0660, 0x0669,
0x0780, 0x07B1,
0xFDF2, 0xFDF2,
0xFDFD, 0xFDFD,
},
direction = "rtl",
}
m["Thai"] = process_ranges{
"ไทย",
"abugida",
aliases = {"Thai"},
ranges = {
0x0E01, 0x0E3A,
0x0E40, 0x0E5B,
},
spaces = false,
translit = false, --only for thwikt
}
m["Tibt"] = process_ranges{
"ทิเบต",
"abugida",
aliases = {"Tibetan"},
ranges = {
0x0F00, 0x0F47,
0x0F49, 0x0F6C,
0x0F71, 0x0F97,
0x0F99, 0x0FBC,
0x0FBE, 0x0FCC,
0x0FCE, 0x0FD4,
0x0FD9, 0x0FDA,
},
normalizationFixes = {
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"Tamyig",
m["Tibt"][2],
aliases = m["Tibt"].aliases,
ranges = m["Tibt"].ranges,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["xzh-Tibt"] = {
"Zhang-Zhung",
m["Tibt"][2],
aliases = m["Tibt"].aliases,
ranges = m["Tibt"].ranges,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = process_ranges{
"Tirhuta",
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x1CF2, 0x1CF2,
0xA830, 0xA839,
0x11480, 0x114C7,
0x114D0, 0x114D9,
},
normalizationFixes = {
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = process_ranges{
"Tangsa",
"alphabet",
ranges = {
0x16A70, 0x16ABE,
0x16AC0, 0x16AC9,
},
}
m["Toto"] = process_ranges{
"Toto",
"abugida",
ranges = {
0x1E290, 0x1E2AE,
},
}
m["Ugar"] = process_ranges{
"ยูการิต",
"abjad",
aliases = {"ยูการิติก", "Ugaritic"},
ranges = {
0x10380, 0x1039D,
0x1039F, 0x1039F,
},
}
m["Vaii"] = process_ranges{
"ไว",
"syllabary",
aliases = {"Vai"},
ranges = {
0xA500, 0xA62B,
},
}
m["Visp"] = {
"Visible Speech",
"alphabet",
-- Not in Unicode
}
m["Vith"] = process_ranges{
"Vithkuqi",
"alphabet",
ranges = {
0x10570, 0x1057A,
0x1057C, 0x1058A,
0x1058C, 0x10592,
0x10594, 0x10595,
0x10597, 0x105A1,
0x105A3, 0x105B1,
0x105B3, 0x105B9,
0x105BB, 0x105BC,
},
capitalized = true,
}
m["Wara"] = process_ranges{
"วรังจิติ",
aliases = {"วรังกษิติ", "Warang Citi", "Varang Kshiti"},
ranges = {
0x118A0, 0x118F2,
0x118FF, 0x118FF,
},
capitalized = true,
}
m["Wcho"] = process_ranges{
"Wancho",
"alphabet",
ranges = {
0x1E2C0, 0x1E2F9,
0x1E2FF, 0x1E2FF,
},
}
m["Wole"] = {
"Woleai",
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = process_ranges{
"เปอร์เซียเก่า",
aliases = {"Old Persian"},
ranges = {
0x103A0, 0x103C3,
0x103C8, 0x103D5,
},
}
m["Xsux"] = process_ranges{
"คูนิฟอร์ม",
aliases = {"Cuneiform", "Sumero-Akkadian Cuneiform"},
ranges = {
0x12000, 0x12399,
0x12400, 0x1246E,
0x12470, 0x12474,
0x12480, 0x12543,
},
}
m["Yezi"] = process_ranges{
"Yezidi",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0660, 0x0669,
0x10E80, 0x10EA9,
0x10EAB, 0x10EAD,
0x10EB0, 0x10EB1,
},
direction = "rtl",
}
m["Yiii"] = process_ranges{
"อี๋",
"syllabary",
aliases = {"Yi"},
ranges = {
0x3001, 0x3002,
0x3008, 0x3011,
0x3014, 0x301B,
0x30FB, 0x30FB,
0xA000, 0xA48C,
0xA490, 0xA4C6,
0xFF61, 0xFF65,
},
}
m["Zanb"] = process_ranges{
"Zanabazar Square",
ranges = {
0x11A00, 0x11A47,
},
}
m["Zmth"] = process_ranges{
"mathematical notation",
ranges = {
0x00AC, 0x00AC,
0x00B1, 0x00B1,
0x00D7, 0x00D7,
0x00F7, 0x00F7,
0x03D0, 0x03D2,
0x03D5, 0x03D5,
0x03F0, 0x03F1,
0x03F4, 0x03F6,
0x0606, 0x0608,
0x2016, 0x2016,
0x2032, 0x2034,
0x2040, 0x2040,
0x2044, 0x2044,
0x2052, 0x2052,
0x205F, 0x205F,
0x2061, 0x2064,
0x207A, 0x207E,
0x208A, 0x208E,
0x20D0, 0x20DC,
0x20E1, 0x20E1,
0x20E5, 0x20E6,
0x20EB, 0x20EF,
0x2102, 0x2102,
0x2107, 0x2107,
0x210A, 0x2113,
0x2115, 0x2115,
0x2118, 0x211D,
0x2124, 0x2124,
0x2128, 0x2129,
0x212C, 0x212D,
0x212F, 0x2131,
0x2133, 0x2138,
0x213C, 0x2149,
0x214B, 0x214B,
0x2190, 0x21A7,
0x21A9, 0x21AE,
0x21B0, 0x21B1,
0x21B6, 0x21B7,
0x21BC, 0x21DB,
0x21DD, 0x21DD,
0x21E4, 0x21E5,
0x21F4, 0x22FF,
0x2308, 0x230B,
0x2320, 0x2321,
0x237C, 0x237C,
0x239B, 0x23B5,
0x23B7, 0x23B7,
0x23D0, 0x23D0,
0x23DC, 0x23E2,
0x25A0, 0x25A1,
0x25AE, 0x25B7,
0x25BC, 0x25C1,
0x25C6, 0x25C7,
0x25CA, 0x25CB,
0x25CF, 0x25D3,
0x25E2, 0x25E2,
0x25E4, 0x25E4,
0x25E7, 0x25EC,
0x25F8, 0x25FF,
0x2605, 0x2606,
0x2640, 0x2640,
0x2642, 0x2642,
0x2660, 0x2663,
0x266D, 0x266F,
0x27C0, 0x27FF,
0x2900, 0x2AFF,
0x2B30, 0x2B44,
0x2B47, 0x2B4C,
0xFB29, 0xFB29,
0xFE61, 0xFE66,
0xFE68, 0xFE68,
0xFF0B, 0xFF0B,
0xFF1C, 0xFF1E,
0xFF3C, 0xFF3C,
0xFF3E, 0xFF3E,
0xFF5C, 0xFF5C,
0xFF5E, 0xFF5E,
0xFFE2, 0xFFE2,
0xFFE9, 0xFFEC,
0x1D400, 0x1D454,
0x1D456, 0x1D49C,
0x1D49E, 0x1D49F,
0x1D4A2, 0x1D4A2,
0x1D4A5, 0x1D4A6,
0x1D4A9, 0x1D4AC,
0x1D4AE, 0x1D4B9,
0x1D4BB, 0x1D4BB,
0x1D4BD, 0x1D4C3,
0x1D4C5, 0x1D505,
0x1D507, 0x1D50A,
0x1D50D, 0x1D514,
0x1D516, 0x1D51C,
0x1D51E, 0x1D539,
0x1D53B, 0x1D53E,
0x1D540, 0x1D544,
0x1D546, 0x1D546,
0x1D54A, 0x1D550,
0x1D552, 0x1D6A5,
0x1D6A8, 0x1D7CB,
0x1D7CE, 0x1D7FF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
translit = false,
character_category = "Mathematical notation symbols", -- ?
}
m["Zsym"] = process_ranges{
"สัญลักษณ์",
"pictography",
aliases = {"symbol"},
ranges = {
0x20DD, 0x20E0,
0x20E2, 0x20E4,
0x20E7, 0x20EA,
0x20F0, 0x20F0,
0x2100, 0x2101,
0x2103, 0x2106,
0x2108, 0x2109,
0x2114, 0x2114,
0x2116, 0x2117,
0x211E, 0x2123,
0x2125, 0x2127,
0x212A, 0x212B,
0x212E, 0x212E,
0x2132, 0x2132,
0x2139, 0x213B,
0x214A, 0x214A,
0x214C, 0x214F,
0x21A8, 0x21A8,
0x21AF, 0x21AF,
0x21B2, 0x21B5,
0x21B8, 0x21BB,
0x21DC, 0x21DC,
0x21DE, 0x21E3,
0x21E6, 0x21F3,
0x2300, 0x2307,
0x230C, 0x231F,
0x2322, 0x237B,
0x237D, 0x239A,
0x23B6, 0x23B6,
0x23B8, 0x23CF,
0x23D1, 0x23DB,
0x23E3, 0x23FF,
0x2500, 0x259F,
0x25A2, 0x25AD,
0x25B8, 0x25BB,
0x25C2, 0x25C5,
0x25C8, 0x25C9,
0x25CC, 0x25CE,
0x25D4, 0x25E1,
0x25E3, 0x25E3,
0x25E5, 0x25E6,
0x25ED, 0x25F7,
0x2600, 0x2604,
0x2607, 0x263F,
0x2641, 0x2641,
0x2643, 0x265F,
0x2664, 0x266C,
0x2670, 0x27BF,
0x2B00, 0x2B2F,
0x2B45, 0x2B46,
0x2B4D, 0x2B73,
0x2B76, 0x2B95,
0x2B97, 0x2BFF,
0x4DC0, 0x4DFF,
0x1F000, 0x1F02B,
0x1F030, 0x1F093,
0x1F0A0, 0x1F0AE,
0x1F0B1, 0x1F0BF,
0x1F0C1, 0x1F0CF,
0x1F0D1, 0x1F0F5,
0x1F300, 0x1F6D7,
0x1F6DC, 0x1F6EC,
0x1F6F0, 0x1F6FC,
0x1F700, 0x1F776,
0x1F77B, 0x1F7D9,
0x1F7E0, 0x1F7EB,
0x1F7F0, 0x1F7F0,
0x1F800, 0x1F80B,
0x1F810, 0x1F847,
0x1F850, 0x1F859,
0x1F860, 0x1F887,
0x1F890, 0x1F8AD,
0x1F8B0, 0x1F8B1,
0x1F900, 0x1FA53,
0x1FA60, 0x1FA6D,
0x1FA70, 0x1FA7C,
0x1FA80, 0x1FA88,
0x1FA90, 0x1FABD,
0x1FABF, 0x1FAC5,
0x1FACE, 0x1FADB,
0x1FAE0, 0x1FAE8,
0x1FAF0, 0x1FAF8,
0x1FB00, 0x1FB92,
0x1FB94, 0x1FBCA,
0x1FBF0, 0x1FBF9,
},
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"ยังไม่กำหนด",
aliases = {"undetermined"},
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"ยังไม่มีรหัส",
aliases = {"uncoded"},
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of.
m["Hrkt"] = process_ranges{
"คานะ",
"syllabary",
aliases = {"Kana", "Japanese syllabaries"},
ranges = union(
m["Hira"].ranges,
m["Kana"].ranges
),
spaces = false,
}
m["Jpan"] = process_ranges{
"ญี่ปุ่น",
"logography, syllabary",
aliases = {"Japanese"},
ranges = union(
m["Hrkt"].ranges,
m["Hani"].ranges,
m["Latnx"].ranges
),
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = process_ranges{
"เกาหลี",
"logography, syllabary",
aliases = {"Korean"},
ranges = union(
m["Hang"].ranges,
m["Hani"].ranges
),
}
return m
afz0s1zzcjgixs90etxx0pshxsb1pv4
1908588
1908587
2024-04-26T04:32:17Z
Octahedron80
267
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Common.css]].
]=]
local concat = table.concat
local insert = table.insert
local remove = table.remove
local select = select
local sort = table.sort
local u = mw.ustring.char
------------------------------------------------------------------------------------
--
-- Helper functions
--
------------------------------------------------------------------------------------
-- Note: a[2] > b[2] means opens are sorted before closes if otherwise equal.
local function sort_ranges(a, b)
return a[1] < b[1] or a[1] == b[1] and a[2] > b[2]
end
-- Returns the union of two or more range tables.
local function union(...)
local ranges = {}
for i = 1, select("#", ...) do
local argt = select(i, ...)
for j, v in ipairs(argt) do
insert(ranges, {v, j % 2 == 1 and 1 or -1})
end
end
sort(ranges, sort_ranges)
local ret, i = {}, 0
for _, range in ipairs(ranges) do
i = i + range[2]
if i == 0 and range[2] == -1 then -- close
insert(ret, range[1])
elseif i == 1 and range[2] == 1 then -- open
if ret[#ret] and range[1] <= ret[#ret] + 1 then
remove(ret) -- merge adjacent ranges
else
insert(ret, range[1])
end
end
end
return ret
end
-- Adds the `characters` key, which is determined by a script's `ranges` table.
local function process_ranges(sc)
local ranges, chars = sc.ranges, {}
for i = 2, #ranges, 2 do
if ranges[i] == ranges[i - 1] then
insert(chars, u(ranges[i]))
else
insert(chars, u(ranges[i - 1]))
if ranges[i] > ranges[i - 1] + 1 then
insert(chars, "-")
end
insert(chars, u(ranges[i]))
end
end
sc.characters = concat(chars)
ranges.n = #ranges
return sc
end
------------------------------------------------------------------------------------
--
-- Data
--
------------------------------------------------------------------------------------
local m = {}
m["Adlm"] = process_ranges{
"อัดลัม",
"alphabet",
aliases = {"Adlam"},
ranges = {
0x061F, 0x061F,
0x0640, 0x0640,
0x1E900, 0x1E94B,
0x1E950, 0x1E959,
0x1E95E, 0x1E95F,
},
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"อาฟากา",
"syllabary",
aliases = {"Afaka"},
}
m["Aghb"] = process_ranges{
"Caucasian Albanian",
"alphabet",
ranges = {
0x10530, 0x10563,
0x1056F, 0x1056F,
},
}
m["Ahom"] = process_ranges{
"อาหม",
"abugida",
aliases = {"อะหม", "Ahom"},
ranges = {
0x11700, 0x1171A,
0x1171D, 0x1172B,
0x11730, 0x11746,
},
}
m["Arab"] = process_ranges{
"อาหรับ",
"abjad", -- more precisely, impure abjad
aliases = {"อารบิก", "อาระบิก", "Arabic"},
varieties = {{"ยาวี", "Jawi"}, {"Nastaliq", "Nastaleeq"}},
ranges = {
0x0600, 0x06FF,
0x0750, 0x077F,
0x0870, 0x088E,
0x0890, 0x0891,
0x0898, 0x08E1,
0x08E3, 0x08FF,
0xFB50, 0xFBC2,
0xFBD3, 0xFD8F,
0xFD92, 0xFDC7,
0xFDCF, 0xFDCF,
0xFDF0, 0xFDFF,
0xFE70, 0xFE74,
0xFE76, 0xFEFC,
0x102E0, 0x102FB,
0x10E60, 0x10E7E,
0x10EFD, 0x10EFF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
direction = "rtl",
normalizationFixes = {
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"เปอร์โซ-อาหรับ", "Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ku-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ms-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["mzn-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ota-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["pa-Arab"] = {
"ชาห์มุขี",
m["Arab"][2],
aliases = {"Shahmukhi"},
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"อาหรับ", "Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["sd-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["tt-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ug-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ur-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["xka-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = process_ranges{
"แอราเมอิกจักรวรรดิ",
"abjad",
aliases = {"Imperial Aramaic"},
ranges = {
0x10840, 0x10855,
0x10857, 0x1085F,
},
direction = "rtl",
}
m["Armn"] = process_ranges{
"อาร์มีเนีย",
"alphabet",
aliases = {"อาร์เมเนีย", "Armenian"},
ranges = {
0x0531, 0x0556,
0x0559, 0x058A,
0x058D, 0x058F,
0xFB13, 0xFB17,
},
capitalized = true,
}
m["Avst"] = process_ranges{
"อเวสตะ",
"alphabet",
aliases = {"Avestan"},
ranges = {
0x10B00, 0x10B35,
0x10B39, 0x10B3F,
},
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
m["Avst"][2],
aliases = m["Avst"].aliases,
ranges = m["Avst"].ranges,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = process_ranges{
"บาหลี",
"abugida",
aliases = {"Balinese"},
ranges = {
0x1B00, 0x1B4C,
0x1B50, 0x1B7E,
},
}
m["Bamu"] = process_ranges{
"บามุม",
"syllabary",
aliases = {"Bamum"},
ranges = {
0xA6A0, 0xA6F7,
0x16800, 0x16A38,
},
}
m["Bass"] = process_ranges{
"บัสซา",
"alphabet",
aliases = {"วาห์", "Bassa", "Bassa Vah", "Vah"},
ranges = {
0x16AD0, 0x16AED,
0x16AF0, 0x16AF5,
},
}
m["Batk"] = process_ranges{
"บาตัก",
"abugida",
aliases = {"Batak"},
ranges = {
0x1BC0, 0x1BF3,
0x1BFC, 0x1BFF,
},
}
m["Beng"] = process_ranges{
"เบงกอล",
"abugida",
aliases = {"เบงกาลี", "บังลา", "Bengali"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09B0,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09EF,
0x09F2, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = {
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = process_ranges{
"อัสสัม",
m["Beng"][2],
otherNames = {"เบงกอล-อัสสัม", "เบงกาลี-อัสสัม", "นาครีตะวันออก", "Assamese", "Bengali-Assamese", "Eastern Nagari"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09AF,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = process_ranges{
"ไภกษุกี",
"abugida",
aliases = {"Bhaiksuki"},
ranges = {
0x11C00, 0x11C08,
0x11C0A, 0x11C36,
0x11C38, 0x11C45,
0x11C50, 0x11C6C,
},
}
m["Blis"] = {
"Blissymbols",
"logography",
aliases = {"Blissymbolics"},
-- Not in Unicode
}
m["Bopo"] = process_ranges{
"จู้อิน",
"semisyllabary",
aliases = {"จู้อินฝูเฮ่า", "ปอพอมอฟอ", "ปัวพัวมัวฟัว", "Zhuyin", "Zhuyin Fuhao", "Bopomofo"},
ranges = {
0x02EA, 0x02EB,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302A, 0x302D,
0x3030, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3105, 0x312F,
0x31A0, 0x31BF,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
},
}
m["Brah"] = process_ranges{
"พราหมี",
"abugida",
aliases = {"พราหฺมี", "Brahmi"},
ranges = {
0x11000, 0x1104D,
0x11052, 0x11075,
0x1107F, 0x1107F,
},
normalizationFixes = {
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = process_ranges{
"เบรลล์",
"alphabet",
aliases = {"Braille"},
ranges = {
0x2800, 0x28FF,
},
}
m["Bugi"] = process_ranges{
"บูกิส",
"abugida",
aliases = {"ลนตารา", "Buginese", "Lontara"},
ranges = {
0x1A00, 0x1A1B,
0x1A1E, 0x1A1F,
0xA9CF, 0xA9CF,
},
}
m["Buhd"] = process_ranges{
"บูฮิด",
"abugida",
aliases = {"Buhid"},
ranges = {
0x1735, 0x1736,
0x1740, 0x1751,
0x1752, 0x1753,
},
}
m["Cakm"] = process_ranges{
"จักมา",
"abugida",
aliases = {"Chakma"},
ranges = {
0x09E6, 0x09EF,
0x1040, 0x1049,
0x11100, 0x11134,
0x11136, 0x11147,
},
}
m["Cans"] = process_ranges{
"Canadian syllabics",
"abugida",
ranges = {
0x1400, 0x167F,
0x18B0, 0x18F5,
0x11AB0, 0x11ABF,
},
}
m["Cari"] = process_ranges{
"คาเรีย",
"alphabet",
aliases = {"Carian"},
ranges = {
0x102A0, 0x102D0,
},
}
m["Cham"] = process_ranges{
"จาม",
"abugida",
aliases = {"Cham"},
ranges = {
0xAA00, 0xAA36,
0xAA40, 0xAA4D,
0xAA50, 0xAA59,
0xAA5C, 0xAA5F,
},
}
m["Cher"] = process_ranges{
"เชโรกี",
"syllabary",
aliases = {"Cherokee"},
ranges = {
0x13A0, 0x13F5,
0x13F8, 0x13FD,
0xAB70, 0xABBF,
},
}
m["Chrs"] = process_ranges{
"Chorasmian",
"abjad",
ranges = {
0x10FB0, 0x10FCB,
},
direction = "rtl",
}
m["Copt"] = process_ranges{
"คอปติก",
"alphabet",
aliases = {"Coptic"},
ranges = {
0x03E2, 0x03EF,
0x2C80, 0x2CF3,
0x2CF9, 0x2CFF,
0x102E0, 0x102FB,
},
capitalized = true,
}
m["Cpmn"] = process_ranges{
"Cypro-Minoan",
"syllabary",
aliases = {"Cypro Minoan"},
ranges = {
0x10100, 0x10101,
0x12F90, 0x12FF2,
},
}
m["Cprt"] = process_ranges{
"ไซปรัส",
"syllabary",
aliases = {"ไซเปรียท", "Cypriot"},
ranges = {
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
0x10800, 0x10805,
0x10808, 0x10808,
0x1080A, 0x10835,
0x10837, 0x10838,
0x1083C, 0x1083C,
0x1083F, 0x1083F,
},
direction = "rtl",
}
m["Cyrl"] = process_ranges{
"ซีริลลิก",
"alphabet",
aliases = {"Cyrillic"},
ranges = {
0x0400, 0x052F,
0x1C80, 0x1C88,
0x1D2B, 0x1D2B,
0x1D78, 0x1D78,
0x1DF8, 0x1DF8,
0x2DE0, 0x2DFF,
0x2E43, 0x2E43,
0xA640, 0xA69F,
0xFE2E, 0xFE2F,
0x1E030, 0x1E06D,
0x1E08F, 0x1E08F,
},
capitalized = true,
}
m["Cyrs"] = {
"ซีริลลิกเก่า",
m["Cyrl"][2],
aliases = {"ซีริลลิกช่วงต้น", "Old Cyrillic", "Early Cyrillic"},
ranges = m["Cyrl"].ranges,
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
}
m["Deva"] = process_ranges{
"เทวนาครี",
"abugida",
aliases = {"Devanagari"},
ranges = {
0x0900, 0x097F,
0x1CD0, 0x1CF6,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0xA830, 0xA839,
0xA8E0, 0xA8FF,
0x11B00, 0x11B09,
},
normalizationFixes = {
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = process_ranges{
"ดิเวส อกุรุ",
"abugida",
aliases = {"ดิเวหิ อกุรุ", "Dhives Akuru", "Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
ranges = {
0x11900, 0x11906,
0x11909, 0x11909,
0x1190C, 0x11913,
0x11915, 0x11916,
0x11918, 0x11935,
0x11937, 0x11938,
0x1193B, 0x11946,
0x11950, 0x11959,
},
}
m["Dogr"] = process_ranges{
"โฑครี",
"abugida",
aliases = {"Dogri", "Dogra"},
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11800, 0x1183B,
},
}
m["Dsrt"] = process_ranges{
"Deseret",
"alphabet",
ranges = {
0x10400, 0x1044F,
},
capitalized = true,
}
m["Dupl"] = process_ranges{
"Duployan",
"alphabet",
ranges = {
0x1BC00, 0x1BC6A,
0x1BC70, 0x1BC7C,
0x1BC80, 0x1BC88,
0x1BC90, 0x1BC99,
0x1BC9C, 0x1BCA3,
},
}
m["Egyd"] = {
"Demotic",
"abjad, logography",
}
m["Egyh"] = {
"Hieratic",
"abjad, logography",
}
m["Egyp"] = process_ranges{
"ไฮเออโรกลีฟอียิปต์",
"abjad, logography",
aliases = {"Egyptian hieroglyphic"},
ranges = {
0x13000, 0x13455,
},
varieties = {"Hieratic"},
wikipedia_article = "ไฮเออโรกลีฟอียิปต์",
normalizationFixes = {
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = process_ranges{
"เอลบาซาน",
"alphabet",
aliases = {"Elbasan"},
ranges = {
0x10500, 0x10527,
},
}
m["Elym"] = process_ranges{
"Elymaic",
"abjad",
ranges = {
0x10FE0, 0x10FF6,
},
direction = "rtl",
}
m["Ethi"] = process_ranges{
"เอธิโอเปีย",
"abugida",
aliases = {"กืออึซ", "Ethiopic", "Ge'ez"},
ranges = {
0x1200, 0x1248,
0x124A, 0x124D,
0x1250, 0x1256,
0x1258, 0x1258,
0x125A, 0x125D,
0x1260, 0x1288,
0x128A, 0x128D,
0x1290, 0x12B0,
0x12B2, 0x12B5,
0x12B8, 0x12BE,
0x12C0, 0x12C0,
0x12C2, 0x12C5,
0x12C8, 0x12D6,
0x12D8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135A,
0x135D, 0x137C,
0x1380, 0x1399,
0x2D80, 0x2D96,
0x2DA0, 0x2DA6,
0x2DA8, 0x2DAE,
0x2DB0, 0x2DB6,
0x2DB8, 0x2DBE,
0x2DC0, 0x2DC6,
0x2DC8, 0x2DCE,
0x2DD0, 0x2DD6,
0x2DD8, 0x2DDE,
0xAB01, 0xAB06,
0xAB09, 0xAB0E,
0xAB11, 0xAB16,
0xAB20, 0xAB26,
0xAB28, 0xAB2E,
0x1E7E0, 0x1E7E6,
0x1E7E8, 0x1E7EB,
0x1E7ED, 0x1E7EE,
0x1E7F0, 0x1E7FE,
},
}
m["Geok"] = process_ranges{
"Khutsuri",
"alphabet",
ranges = { -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
0x10A0, 0x10C5,
0x10C7, 0x10C7,
0x10CD, 0x10CD,
0x10FB, 0x10FB,
0x2D00, 0x2D25,
0x2D27, 0x2D27,
0x2D2D, 0x2D2D,
},
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = process_ranges{
"จอร์เจีย",
"alphabet",
aliases = {"Georgian"},
ranges = { -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
0x10D0, 0x10FF,
0x1C90, 0x1CBA,
0x1CBD, 0x1CBF,
},
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = process_ranges{
"กลาโกลิติก",
"alphabet",
aliases = {"Glagolitic"},
ranges = {
0x0484, 0x0484,
0x0487, 0x0487,
0x2C00, 0x2C5F,
0x2E43, 0x2E43,
0xA66F, 0xA66F,
0x1E000, 0x1E006,
0x1E008, 0x1E018,
0x1E01B, 0x1E021,
0x1E023, 0x1E024,
0x1E026, 0x1E02A,
},
capitalized = true,
}
m["Gong"] = process_ranges{
"คุญชลาโคณฑี",
"abugida",
aliases = {"Gunjala Gondi"},
ranges = {
0x0964, 0x0965,
0x11D60, 0x11D65,
0x11D67, 0x11D68,
0x11D6A, 0x11D8E,
0x11D90, 0x11D91,
0x11D93, 0x11D98,
0x11DA0, 0x11DA9,
},
}
m["Gonm"] = process_ranges{
"มสรามโคณฑี",
"abugida",
aliases = {"Masaram Gondi"},
ranges = {
0x0964, 0x0965,
0x11D00, 0x11D06,
0x11D08, 0x11D09,
0x11D0B, 0x11D36,
0x11D3A, 0x11D3A,
0x11D3C, 0x11D3D,
0x11D3F, 0x11D47,
0x11D50, 0x11D59,
},
}
m["Goth"] = process_ranges{
"กอท",
"alphabet",
aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"},
ranges = {
0x10330, 0x1034A,
},
}
m["Gran"] = process_ranges{
"ครันถะ",
"abugida",
aliases = {"Grantha"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0BE6, 0x0BF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CF2, 0x1CF4,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0x11300, 0x11303,
0x11305, 0x1130C,
0x1130F, 0x11310,
0x11313, 0x11328,
0x1132A, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
0x1133B, 0x11344,
0x11347, 0x11348,
0x1134B, 0x1134D,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135D, 0x11363,
0x11366, 0x1136C,
0x11370, 0x11374,
0x11FD0, 0x11FD1,
0x11FD3, 0x11FD3,
},
}
m["Grek"] = process_ranges{
"กรีก",
"alphabet",
"abugida",
aliases = {"Greek"},
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DBF,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = true,
}
m["Polyt"] = process_ranges{
"กรีก",
m["Grek"][2],
aliases = m["Grek"].aliases,
ranges = union(m["Grek"].ranges, {
0x1F00, 0x1F15,
0x1F18, 0x1F1D,
0x1F20, 0x1F45,
0x1F48, 0x1F4D,
0x1F50, 0x1F57,
0x1F59, 0x1F59,
0x1F5B, 0x1F5B,
0x1F5D, 0x1F5D,
0x1F5F, 0x1F7D,
0x1F80, 0x1FB4,
0x1FB6, 0x1FC4,
0x1FC6, 0x1FD3,
0x1FD6, 0x1FDB,
0x1FDD, 0x1FEF,
0x1FF2, 0x1FF4,
0x1FF6, 0x1FFE,
}),
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = process_ranges{
"คุชราต",
"abugida",
aliases = {"คุชราตี", "Gujarati"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A81, 0x0A83,
0x0A85, 0x0A8D,
0x0A8F, 0x0A91,
0x0A93, 0x0AA8,
0x0AAA, 0x0AB0,
0x0AB2, 0x0AB3,
0x0AB5, 0x0AB9,
0x0ABC, 0x0AC5,
0x0AC7, 0x0AC9,
0x0ACB, 0x0ACD,
0x0AD0, 0x0AD0,
0x0AE0, 0x0AE3,
0x0AE6, 0x0AF1,
0x0AF9, 0x0AFF,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Guru"] = process_ranges{
"คุรมุขี",
"abugida",
aliases = {"กูร์มูคี", "เกอร์มุกห์", "Gurmukhi"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A01, 0x0A03,
0x0A05, 0x0A0A,
0x0A0F, 0x0A10,
0x0A13, 0x0A28,
0x0A2A, 0x0A30,
0x0A32, 0x0A33,
0x0A35, 0x0A36,
0x0A38, 0x0A39,
0x0A3C, 0x0A3C,
0x0A3E, 0x0A42,
0x0A47, 0x0A48,
0x0A4B, 0x0A4D,
0x0A51, 0x0A51,
0x0A59, 0x0A5C,
0x0A5E, 0x0A5E,
0x0A66, 0x0A76,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = process_ranges{
"ฮันกึล",
"syllabary",
aliases = {"ฮังกึล", "Hangul", "Hangeul"},
ranges = {
0x1100, 0x11FF,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302E, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3131, 0x318E,
0x3200, 0x321E,
0x3260, 0x327E,
0xA960, 0xA97C,
0xAC00, 0xD7A3,
0xD7B0, 0xD7C6,
0xD7CB, 0xD7FB,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFFA0, 0xFFBE,
0xFFC2, 0xFFC7,
0xFFCA, 0xFFCF,
0xFFD2, 0xFFD7,
0xFFDA, 0xFFDC,
},
}
m["Hani"] = process_ranges{
"จีน",
"logography",
aliases = {"ฮั่น", "Han"},
ranges = {
0x2E80, 0x2E99,
0x2E9B, 0x2EF3,
0x2F00, 0x2FD5,
0x3001, 0x3003,
0x3005, 0x3011,
0x3013, 0x301F,
0x3021, 0x302D,
0x3030, 0x3030,
0x3037, 0x303F,
0x3190, 0x319F,
0x31C0, 0x31E3,
0x3220, 0x3247,
0x3280, 0x32B0,
0x32C0, 0x32CB,
0x30FB, 0x30FB,
0x32FF, 0x32FF,
0x3358, 0x3370,
0x337B, 0x337F,
0x33E0, 0x33FE,
0x3400, 0x4DBF,
0x4E00, 0x9FFF,
0xA700, 0xA707,
0xF900, 0xFA6D,
0xFA70, 0xFAD9,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0x16FE2, 0x16FE3,
0x16FF0, 0x16FF1,
0x1D360, 0x1D371,
0x1F250, 0x1F251,
0x20000, 0x2A6DF,
0x2A700, 0x2B739,
0x2B740, 0x2B81D,
0x2B820, 0x2CEA1,
0x2CEB0, 0x2EBE0,
0x2EBF0, 0x2EE5D,
0x2F800, 0x2FA1D,
0x30000, 0x3134A,
0x31350, 0x323AF,
},
varieties = {{"ฮั่นจื่อ", "Hanzi"}, {"คันจิ", "Kanji"}, {"ฮันจา", "Hanja"}, {"จื๋อโนม", "Chu Nom"}},
spaces = false,
}
m["Hans"] = {
"จีนตัวย่อ",
m["Hani"][2],
aliases = {"Simplified Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"จีนตัวเต็ม",
m["Hani"][2],
aliases = {"Traditional Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = process_ranges{
"ฮานูโนโอ",
"abugida",
aliases = {"Hanunoo"},
ranges = {
0x1720, 0x1736,
},
}
m["Hatr"] = process_ranges{
"Hatran",
"abjad",
ranges = {
0x108E0, 0x108F2,
0x108F4, 0x108F5,
0x108FB, 0x108FF,
},
direction = "rtl",
}
m["Hebr"] = process_ranges{
"ฮีบรู",
"abjad", -- more precisely, impure abjad
aliases = {"Hebrew"},
ranges = {
0x0591, 0x05C7,
0x05D0, 0x05EA,
0x05EF, 0x05F4,
0x2135, 0x2138,
0xFB1D, 0xFB36,
0xFB38, 0xFB3C,
0xFB3E, 0xFB3E,
0xFB40, 0xFB41,
0xFB43, 0xFB44,
0xFB46, 0xFB4F,
},
direction = "rtl",
}
m["Hira"] = process_ranges{
"ฮิรางานะ",
"syllabary",
aliases = {"ฮิระงะนะ", "Hiragana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3041, 0x3096,
0x3099, 0x30A0,
0x30FB, 0x30FC,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFF70, 0xFF70,
0xFF9E, 0xFF9F,
0x1B001, 0x1B11F,
0x1B132, 0x1B132,
0x1B150, 0x1B152,
0x1F200, 0x1F200,
},
varieties = {{"เฮ็นไตงานะ", "Hentaigana"}},
spaces = false,
}
m["Hluw"] = process_ranges{
"ไฮเออโรกลีฟอานาโตเลีย",
"logography, syllabary",
aliases = {"Anatolian Hieroglyphs"},
ranges = {
0x14400, 0x14646,
},
wikipedia_article = "ไฮเออโรกลีฟอานาโตเลีย",
}
m["Hmng"] = process_ranges{
"Pahawh Hmong",
"semisyllabary",
aliases = {"ม้ง", "Hmong"},
ranges = {
0x16B00, 0x16B45,
0x16B50, 0x16B59,
0x16B5B, 0x16B61,
0x16B63, 0x16B77,
0x16B7D, 0x16B8F,
},
}
m["Hmnp"] = process_ranges{
"Nyiakeng Puachue Hmong",
"alphabet",
ranges = {
0x1E100, 0x1E12C,
0x1E130, 0x1E13D,
0x1E140, 0x1E149,
0x1E14E, 0x1E14F,
},
}
m["Hung"] = process_ranges{
"ฮังการีเก่า",
"alphabet",
aliases = {"รูนฮังการี", "Old Hungarian", "Hungarian runic"},
ranges = {
0x10C80, 0x10CB2,
0x10CC0, 0x10CF2,
0x10CFA, 0x10CFF,
},
capitalized = true,
direction = "rtl",
}
m["Ibrn"] = {
"ไอบีเรีย",
"semisyllabary",
aliases = {"Iberian"},
}
m["Imag"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Inds"] = {
"สินธุ",
aliases = {"อินดัส", "Indus", "Harappan", "Indus Valley"},
}
m["Ipach"] = {
"สัทอักษรสากล",
aliases = {"International Phonetic Alphabet", "IPA"},
}
m["Ital"] = process_ranges{
"อิตาลิกเก่า",
"alphabet",
aliases = {"Old Italic"},
ranges = {
0x10300, 0x10323,
0x1032D, 0x1032F,
},
}
m["Java"] = process_ranges{
"ชวา",
"abugida",
aliases = {"Javanese"},
ranges = {
0xA980, 0xA9CD,
0xA9CF, 0xA9D9,
0xA9DE, 0xA9DF,
},
}
m["Jurc"] = {
"จูร์เชน",
aliases = {"Jurchen"},
spaces = false,
}
m["Kali"] = process_ranges{
"กะยา",
"abugida",
aliases = {"Kayah Li"},
ranges = {
0xA900, 0xA92F,
},
}
m["Kana"] = process_ranges{
"คาตากานะ",
"syllabary",
aliases = {"คะตะกะนะ", "Katakana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3099, 0x309C,
0x30A0, 0x30FF,
0x31F0, 0x31FF,
0x32D0, 0x32FE,
0x3300, 0x3357,
0xFE45, 0xFE46,
0xFF61, 0xFF9F,
0x1AFF0, 0x1AFF3,
0x1AFF5, 0x1AFFB,
0x1AFFD, 0x1AFFE,
0x1B000, 0x1B000,
0x1B120, 0x1B122,
0x1B155, 0x1B155,
0x1B164, 0x1B167,
},
spaces = false,
}
m["Kawi"] = process_ranges{
"กวิ",
"abugida",
aliases = {"Kawi"},
ranges = {
0x11F00, 0x11F10,
0x11F12, 0x11F3A,
0x11F3E, 0x11F59,
},
}
m["Khar"] = process_ranges{
"ขโรษฐี",
"abugida",
aliases = {"Kharoshthi"},
ranges = {
0x10A00, 0x10A03,
0x10A05, 0x10A06,
0x10A0C, 0x10A13,
0x10A15, 0x10A17,
0x10A19, 0x10A35,
0x10A38, 0x10A3A,
0x10A3F, 0x10A48,
0x10A50, 0x10A58,
},
direction = "rtl",
}
m["Khmr"] = process_ranges{
"เขมร",
"abugida",
aliases = {"Khmer"},
ranges = {
0x1780, 0x17DD,
0x17E0, 0x17E9,
0x17F0, 0x17F9,
0x19E0, 0x19FF,
},
spaces = false,
normalizationFixes = {
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = process_ranges{
"Khojki",
"abugida",
ranges = {
0x0AE6, 0x0AEF,
0xA830, 0xA839,
0x11200, 0x11211,
0x11213, 0x11241,
},
normalizationFixes = {
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Kitl"] = {
"คีตันใหญ่",
"logography, syllabary",
aliases = {"Khitan Large"},
spaces = false,
}
m["Kits"] = process_ranges{
"คีตันเล็ก",
"logography, syllabary",
aliases = {"Khitan Small"},
ranges = {
0x16FE4, 0x16FE4,
0x18B00, 0x18CD5,
},
spaces = false,
}
m["Knda"] = process_ranges{
"กันนาดา",
"abugida",
aliases = {"Kannada"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C80, 0x0C8C,
0x0C8E, 0x0C90,
0x0C92, 0x0CA8,
0x0CAA, 0x0CB3,
0x0CB5, 0x0CB9,
0x0CBC, 0x0CC4,
0x0CC6, 0x0CC8,
0x0CCA, 0x0CCD,
0x0CD5, 0x0CD6,
0x0CDD, 0x0CDE,
0x0CE0, 0x0CE3,
0x0CE6, 0x0CEF,
0x0CF1, 0x0CF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0x1CF4, 0x1CF4,
0xA830, 0xA835,
},
normalizationFixes = {
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
"syllabary",
-- Not in Unicode
}
m["Kthi"] = process_ranges{
"ไกถี",
"abugida",
aliases = {"Kaithi"},
ranges = {
0x0966, 0x096F,
0xA830, 0xA839,
0x11080, 0x110C2,
0x110CD, 0x110CD,
},
}
m["Lana"] = process_ranges{
"ไทธรรม",
"abugida",
aliases = {"ธรรม", "ตัวเมือง", "ล้านนา", "Tai Tham", "Tham", "Tua Mueang", "Lanna"},
ranges = {
0x1A20, 0x1A5E,
0x1A60, 0x1A7C,
0x1A7F, 0x1A89,
0x1A90, 0x1A99,
0x1AA0, 0x1AAD,
},
spaces = false,
}
m["Laoo"] = process_ranges{
"ลาว",
"abugida",
aliases = {"Lao"},
ranges = {
0x0E81, 0x0E82,
0x0E84, 0x0E84,
0x0E86, 0x0E8A,
0x0E8C, 0x0EA3,
0x0EA5, 0x0EA5,
0x0EA7, 0x0EBD,
0x0EC0, 0x0EC4,
0x0EC6, 0x0EC6,
0x0EC8, 0x0ECE,
0x0ED0, 0x0ED9,
0x0EDC, 0x0EDF,
},
spaces = false,
}
m["Latn"] = process_ranges{
"ละติน",
"alphabet",
aliases = {"ลาติน", "โรมัน", "Latin", "Roman"},
ranges = {
0x0041, 0x005A,
0x0061, 0x007A,
0x00AA, 0x00AA,
0x00BA, 0x00BA,
0x00C0, 0x00D6,
0x00D8, 0x00F6,
0x00F8, 0x02B8,
0x02C0, 0x02C1,
0x02E0, 0x02E4,
0x0363, 0x036F,
0x0485, 0x0486,
0x0951, 0x0952,
0x10FB, 0x10FB,
0x1D00, 0x1D25,
0x1D2C, 0x1D5C,
0x1D62, 0x1D65,
0x1D6B, 0x1D77,
0x1D79, 0x1DBE,
0x1E00, 0x1EFF,
0x202F, 0x202F,
0x2071, 0x2071,
0x207F, 0x207F,
0x2090, 0x209C,
0x20F0, 0x20F0,
0x2100, 0x2125,
0x2128, 0x2128,
0x212A, 0x2134,
0x2139, 0x213B,
0x2141, 0x214E,
0x2160, 0x2188,
0x2C60, 0x2C7F,
0xA700, 0xA707,
0xA722, 0xA787,
0xA78B, 0xA7CA,
0xA7D0, 0xA7D1,
0xA7D3, 0xA7D3,
0xA7D5, 0xA7D9,
0xA7F2, 0xA7FF,
0xA92E, 0xA92E,
0xAB30, 0xAB5A,
0xAB5C, 0xAB64,
0xAB66, 0xAB69,
0xFB00, 0xFB06,
0xFF21, 0xFF3A,
0xFF41, 0xFF5A,
0x10780, 0x10785,
0x10787, 0x107B0,
0x107B2, 0x107BA,
0x1DF00, 0x1DF1E,
0x1DF25, 0x1DF2A,
},
varieties = {{"รูมี", "Rumi"}, {"โรมาจิ", "โรมะจิ", "Romaji", "Rōmaji"}, "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"ฟรักทูร์",
m["Latn"][2],
aliases = {"Fraktur"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"แบล็กเลตเทอร์", "Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"แกลิก",
m["Latn"][2],
aliases = {"Gaelic"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"ไอริช", "Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
"abugida",
}
m["Lepc"] = process_ranges{
"เลปชา",
"abugida",
aliases = {"Lepcha"},
ranges = {
0x1C00, 0x1C37,
0x1C3B, 0x1C49,
0x1C4D, 0x1C4F,
},
}
m["Limb"] = process_ranges{
"ลิมบู",
"abugida",
aliases = {"Limbu"},
ranges = {
0x0965, 0x0965,
0x1900, 0x191E,
0x1920, 0x192B,
0x1930, 0x193B,
0x1940, 0x1940,
0x1944, 0x194F,
},
}
m["Lina"] = process_ranges{
"ลิเนียร์เอ",
aliases = {"Linear A"},
ranges = {
0x10107, 0x10133,
0x10600, 0x10736,
0x10740, 0x10755,
0x10760, 0x10767,
},
}
m["Linb"] = process_ranges{
"ลิเนียร์บี",
aliases = {"Linear B"},
ranges = {
0x10000, 0x1000B,
0x1000D, 0x10026,
0x10028, 0x1003A,
0x1003C, 0x1003D,
0x1003F, 0x1004D,
0x10050, 0x1005D,
0x10080, 0x100FA,
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
},
}
m["Lisu"] = process_ranges{
"ลีสู่",
"alphabet",
aliases = {"ฟราเซอร์", "Lisu", "Fraser"},
ranges = {
0xA4D0, 0xA4FF,
0x11FB0, 0x11FB0,
},
normalizationFixes = {
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
"syllabary",
-- Not in Unicode
}
m["Lyci"] = process_ranges{
"ลิเชีย",
"alphabet",
aliases = {"Lycian"},
ranges = {
0x10280, 0x1029C,
},
}
m["Lydi"] = process_ranges{
"ลิเดีย",
"alphabet",
aliases = {"Lydian"},
ranges = {
0x10920, 0x10939,
0x1093F, 0x1093F,
},
direction = "rtl",
}
m["Mahj"] = process_ranges{
"Mahajani",
"abugida",
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11150, 0x11176,
},
}
m["Maka"] = process_ranges{
"ลนตารา",
"abugida",
aliases = {"Lontara", "Makasar"},
ranges = {
0x11EE0, 0x11EF8,
},
}
m["Mand"] = process_ranges{
"มันดาอิก",
aliases = {"Mandaic", "Mandaean"},
ranges = {
0x0640, 0x0640,
0x0840, 0x085B,
0x085E, 0x085E,
},
direction = "rtl",
}
m["Mani"] = process_ranges{
"Manichaean",
"abjad",
ranges = {
0x0640, 0x0640,
0x10AC0, 0x10AE6,
0x10AEB, 0x10AF6,
},
direction = "rtl",
}
m["Marc"] = process_ranges{
"Marchen",
"abugida",
ranges = {
0x11C70, 0x11C8F,
0x11C92, 0x11CA7,
0x11CA9, 0x11CB6,
},
}
m["Maya"] = process_ranges{
"มายา",
aliases = {"มายัน", "Maya", "Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
ranges = {
0x1D2E0, 0x1D2F3,
},
}
m["Medf"] = process_ranges{
"Medefaidrin",
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
ranges = {
0x16E40, 0x16E9A,
},
capitalized = true,
}
m["Mend"] = process_ranges{
"Mende",
aliases = {"Mende Kikakui"},
ranges = {
0x1E800, 0x1E8C4,
0x1E8C7, 0x1E8D6,
},
direction = "rtl",
}
m["Merc"] = process_ranges{
"Meroitic cursive",
"abugida",
ranges = {
0x109A0, 0x109B7,
0x109BC, 0x109CF,
0x109D2, 0x109FF,
},
direction = "rtl",
}
m["Mero"] = process_ranges{
"Meroitic hieroglyphic",
"abugida",
ranges = {
0x10980, 0x1099F,
},
direction = "rtl",
}
m["Mlym"] = process_ranges{
"มลยาฬัม",
"abugida",
aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0D00, 0x0D0C,
0x0D0E, 0x0D10,
0x0D12, 0x0D44,
0x0D46, 0x0D48,
0x0D4A, 0x0D4F,
0x0D54, 0x0D63,
0x0D66, 0x0D7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0xA830, 0xA832,
},
normalizationFixes = {
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = process_ranges{
"โมฑี",
"abugida",
aliases = {"Modi"},
ranges = {
0xA830, 0xA839,
0x11600, 0x11644,
0x11650, 0x11659,
},
normalizationFixes = {
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = process_ranges{
"มองโกเลีย",
"alphabet",
aliases = {"Mongolian", "Mongol bichig", "Hudum Mongol bichig"},
ranges = {
0x1800, 0x1805,
0x180A, 0x1819,
0x1820, 0x1842,
0x1878, 0x1878,
0x1880, 0x1897,
0x18A6, 0x18A6,
0x18A9, 0x18A9,
0x200C, 0x200D,
0x202F, 0x202F,
0x11660, 0x11668,
},
direction = "down",
}
m["mnc-Mong"] = process_ranges{
"แมนจู",
m["Mong"][2],
aliases = {"Manchu"},
ranges = {
0x1801, 0x1801,
0x1804, 0x1804,
0x1808, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x185D,
0x185F, 0x1861,
0x1864, 0x1869,
0x186C, 0x1871,
0x1873, 0x1877,
0x1880, 0x1888,
0x188F, 0x188F,
0x189A, 0x18A5,
0x18A8, 0x18A8,
0x18AA, 0x18AA,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "down",
parent = "Mong",
}
m["sjo-Mong"] = process_ranges{
"ซิเบ",
m["Mong"][2],
aliases = {"Xibe", "Sibe"},
ranges = {
0x1804, 0x1804,
0x1807, 0x1807,
0x180A, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x1828,
0x182A, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x1872,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "down",
parent = "mnc-Mong",
}
m["xwo-Mong"] = process_ranges{
"Clear Script",
m["Mong"][2],
aliases = {"Todo", "Todo bichig"},
ranges = {
0x1800, 0x1801,
0x1804, 0x1806,
0x180A, 0x1820,
0x1828, 0x1828,
0x182F, 0x1831,
0x1834, 0x1834,
0x1837, 0x1838,
0x183A, 0x183B,
0x1840, 0x1840,
0x1843, 0x185C,
0x1880, 0x1887,
0x1889, 0x188F,
0x1894, 0x1894,
0x1896, 0x1899,
0x18A7, 0x18A7,
0x200C, 0x200D,
0x202F, 0x202F,
0x11669, 0x1166C,
},
direction = "down",
parent = "Mong",
}
m["Moon"] = {
"Moon",
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"รหัสมอร์ส",
aliases = {"Morse code"},
}
m["Mroo"] = process_ranges{
"มโร",
aliases = {"Mro"},
ranges = {
0x16A40, 0x16A5E,
0x16A60, 0x16A69,
0x16A6E, 0x16A6F,
},
}
m["Mtei"] = process_ranges{
"มณีปุระ",
"abugida",
aliases = {"ไมไตมะเยก", "มีไตมะเยก", "Manipuri", "Meitei Mayek", "Meetei Mayek"},
ranges = {
0xAAE0, 0xAAF6,
0xABC0, 0xABED,
0xABF0, 0xABF9,
},
}
m["Mult"] = process_ranges{
"Multani",
"abugida",
ranges = {
0x0A66, 0x0A6F,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128A, 0x1128D,
0x1128F, 0x1129D,
0x1129F, 0x112A9,
},
}
m["Music"] = process_ranges{
"สัญกรณ์ดนตรี",
"pictography",
aliases = {"Musical notation"},
ranges = {
0x2669, 0x266F,
0x1D100, 0x1D126,
0x1D129, 0x1D1EA,
},
translit = false,
}
m["Mymr"] = process_ranges{
"พม่า",
"abugida",
aliases = {"เมียนมา", "Burmese", "Myanmar"},
ranges = {
0x1000, 0x109F,
0xA92E, 0xA92E,
0xA9E0, 0xA9FE,
0xAA60, 0xAA7F,
},
spaces = false,
}
m["Nagm"] = process_ranges{
"Nag Mundari",
"alphabet",
ranges = {
0x1E4D0, 0x1E4F9,
},
}
m["Nand"] = process_ranges{
"นันทินาครี",
"abugida",
aliases = {"Nandinagari"},
ranges = {
0x0964, 0x0965,
0x0CE6, 0x0CEF,
0x1CE9, 0x1CE9,
0x1CF2, 0x1CF2,
0x1CFA, 0x1CFA,
0xA830, 0xA835,
0x119A0, 0x119A7,
0x119AA, 0x119D7,
0x119DA, 0x119E4,
},
}
m["Narb"] = process_ranges{
"Old North Arabian",
"abjad",
ranges = {
0x10A80, 0x10A9F,
},
direction = "rtl",
}
m["Nbat"] = process_ranges{
"Nabataean",
"abjad",
aliases = {"Nabatean"},
ranges = {
0x10880, 0x1089E,
0x108A7, 0x108AF,
},
direction = "rtl",
}
m["Newa"] = process_ranges{
"Newa",
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
ranges = {
0x11400, 0x1145B,
0x1145D, 0x11461,
},
}
m["Nkdb"] = {
"Dongba",
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = process_ranges{
"N'Ko",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x07C0, 0x07FA,
0x07FD, 0x07FF,
0xFD3E, 0xFD3F,
},
direction = "rtl",
}
m["None"] = {
"ไม่ระบุ",
aliases = {"Unspecified"},
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Nshu"] = process_ranges{
"Nüshu",
"syllabary",
aliases = {"Nushu"},
ranges = {
0x16FE1, 0x16FE1,
0x1B170, 0x1B2FB,
},
spaces = false,
}
m["Ogam"] = process_ranges{
"Ogham",
ranges = {
0x1680, 0x169C,
},
}
m["Olck"] = process_ranges{
"Ol Chiki",
ranges = {
0x1C50, 0x1C7F,
},
}
m["Orkh"] = process_ranges{
"Orkhon runes",
aliases = {"Old Turkic"},
ranges = {
0x10C00, 0x10C48,
},
direction = "rtl",
}
m["Orya"] = process_ranges{
"โอริยา",
"abugida",
aliases = {"โอเดีย", "Oriya", "Odia"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B01, 0x0B03,
0x0B05, 0x0B0C,
0x0B0F, 0x0B10,
0x0B13, 0x0B28,
0x0B2A, 0x0B30,
0x0B32, 0x0B33,
0x0B35, 0x0B39,
0x0B3C, 0x0B44,
0x0B47, 0x0B48,
0x0B4B, 0x0B4D,
0x0B55, 0x0B57,
0x0B5C, 0x0B5D,
0x0B5F, 0x0B63,
0x0B66, 0x0B77,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = process_ranges{
"Osage",
ranges = {
0x104B0, 0x104D3,
0x104D8, 0x104FB,
},
capitalized = true,
}
m["Osma"] = process_ranges{
"อุสมาน",
aliases = {"Osmanya"},
ranges = {
0x10480, 0x1049D,
0x104A0, 0x104A9,
},
}
m["Ougr"] = process_ranges{
"อุยกูร์เก่า",
"abjad, alphabet",
aliases = {"Old Uyghur"},
ranges = {
0x0640, 0x0640,
0x10AF2, 0x10AF2,
0x10F70, 0x10F89,
},
direction = "down",
}
m["Palm"] = process_ranges{
"Palmyrene",
ranges = {
0x10860, 0x1087F,
},
direction = "rtl",
}
m["Pauc"] = process_ranges{
"Pau Cin Hau",
ranges = {
0x11AC0, 0x11AF8,
},
}
m["Perm"] = process_ranges{
"Old Permic",
ranges = {
0x0483, 0x0483,
0x10350, 0x1037A,
},
}
m["Phag"] = process_ranges{
"Phags-pa",
"abugida",
ranges = {
0x1802, 0x1803,
0x1805, 0x1805,
0x200C, 0x200D,
0x202F, 0x202F,
0x3002, 0x3002,
0xA840, 0xA877,
},
direction = "down",
}
m["Phli"] = process_ranges{
"Inscriptional Pahlavi",
"abjad",
ranges = {
0x10B60, 0x10B72,
0x10B78, 0x10B7F,
},
direction = "rtl",
}
m["Phlp"] = process_ranges{
"Psalter Pahlavi",
"abjad",
ranges = {
0x0640, 0x0640,
0x10B80, 0x10B91,
0x10B99, 0x10B9C,
0x10BA9, 0x10BAF,
},
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Phnx"] = process_ranges{
"ฟินิเชีย",
"abjad",
aliases = {"Phoenician"},
ranges = {
0x10900, 0x1091B,
0x1091F, 0x1091F,
},
direction = "rtl",
}
m["Plrd"] = process_ranges{
"Pollard",
"abugida",
aliases = {"Miao"},
ranges = {
0x16F00, 0x16F4A,
0x16F4F, 0x16F87,
0x16F8F, 0x16F9F,
},
}
m["Prti"] = process_ranges{
"Inscriptional Parthian",
ranges = {
0x10B40, 0x10B55,
0x10B58, 0x10B5F,
},
direction = "rtl",
}
m["Ranj"] = {
"Ranjana",
"abugida",
-- Not in Unicode
}
m["Rjng"] = process_ranges{
"Rejang",
"abugida",
ranges = {
0xA930, 0xA953,
0xA95F, 0xA95F,
},
}
m["Rohg"] = process_ranges{
"ฮานิฟ",
"alphabet",
aliases = {"ฮานีฟี", "Hanifi Rohingya", "Hanifi"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0640, 0x0640,
0x06D4, 0x06D4,
0x10D00, 0x10D27,
0x10D30, 0x10D39,
},
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
-- Not in Unicode
}
m["Rumin"] = process_ranges{
"Rumi numerals",
ranges = {
0x10E60, 0x10E7E,
},
character_category = "Rumi numerals",
}
m["Runr"] = process_ranges{
"รูน",
"alphabet",
aliases = {"รูนิก", "Runic"},
ranges = {
0x16A0, 0x16EA,
0x16EE, 0x16F8,
},
}
m["Samr"] = process_ranges{
"Samaritan",
"abjad",
ranges = {
0x0800, 0x082D,
0x0830, 0x083E,
},
direction = "rtl",
}
m["Sarb"] = process_ranges{
"Old South Arabian",
"abjad",
ranges = {
0x10A60, 0x10A7F,
},
direction = "rtl",
}
m["Saur"] = process_ranges{
"Saurashtra",
"abugida",
ranges = {
0xA880, 0xA8C5,
0xA8CE, 0xA8D9,
},
}
m["Semap"] = {
"สัญญาณธง",
"pictography",
aliases = {"flag semaphore"},
}
m["Sgnw"] = process_ranges{
"SignWriting",
"pictography",
aliases = {"Sutton SignWriting"},
ranges = {
0x1D800, 0x1DA8B,
0x1DA9B, 0x1DA9F,
0x1DAA1, 0x1DAAF,
},
translit = false,
}
m["Shaw"] = process_ranges{
"Shavian",
aliases = {"Shaw"},
ranges = {
0x10450, 0x1047F,
},
}
m["Shrd"] = process_ranges{
"ศารทา",
"abugida",
aliases = {"Sharada"},
ranges = {
0x0951, 0x0951,
0x1CD7, 0x1CD7,
0x1CD9, 0x1CD9,
0x1CDC, 0x1CDD,
0x1CE0, 0x1CE0,
0xA830, 0xA835,
0xA838, 0xA838,
0x11180, 0x111DF,
},
}
m["Shui"] = {
"Sui",
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = process_ranges{
"สิทธัม",
"abugida",
aliases = {"Siddham"},
ranges = {
0x11580, 0x115B5,
0x115B8, 0x115DD,
},
}
m["Sind"] = process_ranges{
"คุดาบาด",
"abugida",
aliases = {"Khudabadi", "Khudawadi"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x112B0, 0x112EA,
0x112F0, 0x112F9,
},
normalizationFixes = {
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = process_ranges{
"สิงหล",
"abugida",
aliases = {"Sinhalese", "Sinhala"},
ranges = {
0x0964, 0x0965,
0x0D81, 0x0D83,
0x0D85, 0x0D96,
0x0D9A, 0x0DB1,
0x0DB3, 0x0DBB,
0x0DBD, 0x0DBD,
0x0DC0, 0x0DC6,
0x0DCA, 0x0DCA,
0x0DCF, 0x0DD4,
0x0DD6, 0x0DD6,
0x0DD8, 0x0DDF,
0x0DE6, 0x0DEF,
0x0DF2, 0x0DF4,
0x1CF2, 0x1CF2,
0x111E1, 0x111F4,
},
normalizationFixes = {
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = process_ranges{
"ซอกเดีย",
"abjad",
aliases = {"Sogdian"},
ranges = {
0x0640, 0x0640,
0x10F30, 0x10F59,
},
direction = "rtl",
}
m["Sogo"] = process_ranges{
"ซอกเดียเก่า",
"abjad",
aliases = {"Old Sogdian"},
ranges = {
0x10F00, 0x10F27,
},
direction = "rtl",
}
m["Sora"] = process_ranges{
"Sorang Sompeng",
aliases = {"Sora Sompeng"},
ranges = {
0x110D0, 0x110E8,
0x110F0, 0x110F9,
},
}
m["Soyo"] = process_ranges{
"Soyombo",
"abugida",
ranges = {
0x11A50, 0x11AA2,
},
}
m["Sund"] = process_ranges{
"ซุนดา",
"abugida",
aliases = {"Sundanese"},
ranges = {
0x1B80, 0x1BBF,
0x1CC0, 0x1CC7,
},
}
m["Sylo"] = process_ranges{
"สิเลฏินาครี",
"abugida",
aliases = {"สิลอฏินาครี", "Syloti Nagri", "Sylheti Nagari"},
ranges = {
0x0964, 0x0965,
0x09E6, 0x09EF,
0xA800, 0xA82C,
},
}
m["Syrc"] = process_ranges{
"ซีรีแอก",
"abjad", -- more precisely, impure abjad
aliases = {"ซีเรียค", "Syriac"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0640, 0x0640,
0x064B, 0x0655,
0x0670, 0x0670,
0x0700, 0x070D,
0x070F, 0x074A,
0x074D, 0x074F,
0x0860, 0x086A,
0x1DF8, 0x1DF8,
0x1DFA, 0x1DFA,
},
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = process_ranges{
"ตักบันวา",
"abugida",
aliases = {"Tagbanwa"},
ranges = {
0x1735, 0x1736,
0x1760, 0x176C,
0x176E, 0x1770,
0x1772, 0x1773,
},
}
m["Takr"] = process_ranges{
"ฏากรี",
"abugida",
aliases = {"ตากรี", "Takri"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x11680, 0x116B9,
0x116C0, 0x116C9,
},
normalizationFixes = {
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = process_ranges{
"ไทใต้คง",
"abugida",
aliases = {"ไทเหนือ", "ไทเหนือใหม่", "ไตเหลอ", "Tai Nüa", "Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
ranges = {
0x1040, 0x1049,
0x1950, 0x196D,
0x1970, 0x1974,
},
spaces = false,
}
m["Talu"] = process_ranges{
"ไทลื้อใหม่",
"abugida",
aliases = {"New Tai Lue"},
ranges = {
0x1980, 0x19AB,
0x19B0, 0x19C9,
0x19D0, 0x19DA,
0x19DE, 0x19DF,
},
spaces = false,
}
m["Taml"] = process_ranges{
"ทมิฬ",
"abugida",
aliases = {"Tamil"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B82, 0x0B83,
0x0B85, 0x0B8A,
0x0B8E, 0x0B90,
0x0B92, 0x0B95,
0x0B99, 0x0B9A,
0x0B9C, 0x0B9C,
0x0B9E, 0x0B9F,
0x0BA3, 0x0BA4,
0x0BA8, 0x0BAA,
0x0BAE, 0x0BB9,
0x0BBE, 0x0BC2,
0x0BC6, 0x0BC8,
0x0BCA, 0x0BCD,
0x0BD0, 0x0BD0,
0x0BD7, 0x0BD7,
0x0BE6, 0x0BFA,
0x1CDA, 0x1CDA,
0xA8F3, 0xA8F3,
0x11301, 0x11301,
0x11303, 0x11303,
0x1133B, 0x1133C,
0x11FC0, 0x11FF1,
0x11FFF, 0x11FFF,
},
normalizationFixes = {
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = process_ranges{
"ตังกุต",
"logography, syllabary",
aliases = {"Tangut"},
ranges = {
0x16FE0, 0x16FE0,
0x17000, 0x187F7,
0x18800, 0x18AFF,
0x18D00, 0x18D08,
},
spaces = false,
}
m["Tavt"] = process_ranges{
"ไทเวียด",
"abugida",
aliases = {"Tai Viet"},
ranges = {
0xAA80, 0xAAC2,
0xAADB, 0xAADF,
},
spaces = false,
}
m["Telu"] = process_ranges{
"เตลูกู",
"abugida",
aliases = {"Telugu"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C00, 0x0C0C,
0x0C0E, 0x0C10,
0x0C12, 0x0C28,
0x0C2A, 0x0C39,
0x0C3C, 0x0C44,
0x0C46, 0x0C48,
0x0C4A, 0x0C4D,
0x0C55, 0x0C56,
0x0C58, 0x0C5A,
0x0C5D, 0x0C5D,
0x0C60, 0x0C63,
0x0C66, 0x0C6F,
0x0C77, 0x0C7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"เทงกวาร์",
aliases = {"Tengwar"},
}
m["Tfng"] = process_ranges{
"ทิฟินาค",
"abjad, alphabet",
aliases = {"Tifinagh"},
ranges = {
0x2D30, 0x2D67,
0x2D6F, 0x2D70,
0x2D7F, 0x2D7F,
},
otherNames = {"ลิบีโค-เบอร์เบอร์", "เบอร์เบอร์", "Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
}
m["Tglg"] = process_ranges{
"ไบบายิน",
"abugida",
aliases = {"ตากาล็อก", "Baybayin", "Tagalog"},
ranges = {
0x1700, 0x1715,
0x171F, 0x171F,
0x1735, 0x1736,
},
}
m["Thaa"] = process_ranges{
"ทานะ",
"abugida",
aliases = {"Thaana"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0660, 0x0669,
0x0780, 0x07B1,
0xFDF2, 0xFDF2,
0xFDFD, 0xFDFD,
},
direction = "rtl",
}
m["Thai"] = process_ranges{
"ไทย",
"abugida",
aliases = {"Thai"},
ranges = {
0x0E01, 0x0E3A,
0x0E40, 0x0E5B,
},
spaces = false,
translit = false, --only for thwikt
}
m["Tibt"] = process_ranges{
"ทิเบต",
"abugida",
aliases = {"Tibetan"},
ranges = {
0x0F00, 0x0F47,
0x0F49, 0x0F6C,
0x0F71, 0x0F97,
0x0F99, 0x0FBC,
0x0FBE, 0x0FCC,
0x0FCE, 0x0FD4,
0x0FD9, 0x0FDA,
},
normalizationFixes = {
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"Tamyig",
m["Tibt"][2],
ranges = m["Tibt"].ranges,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = process_ranges{
"Tirhuta",
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x1CF2, 0x1CF2,
0xA830, 0xA839,
0x11480, 0x114C7,
0x114D0, 0x114D9,
},
normalizationFixes = {
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = process_ranges{
"Tangsa",
"alphabet",
ranges = {
0x16A70, 0x16ABE,
0x16AC0, 0x16AC9,
},
}
m["Toto"] = process_ranges{
"Toto",
"abugida",
ranges = {
0x1E290, 0x1E2AE,
},
}
m["Ugar"] = process_ranges{
"ยูการิต",
"abjad",
aliases = {"ยูการิติก", "Ugaritic"},
ranges = {
0x10380, 0x1039D,
0x1039F, 0x1039F,
},
}
m["Vaii"] = process_ranges{
"ไว",
"syllabary",
aliases = {"Vai"},
ranges = {
0xA500, 0xA62B,
},
}
m["Visp"] = {
"Visible Speech",
"alphabet",
-- Not in Unicode
}
m["Vith"] = process_ranges{
"Vithkuqi",
"alphabet",
ranges = {
0x10570, 0x1057A,
0x1057C, 0x1058A,
0x1058C, 0x10592,
0x10594, 0x10595,
0x10597, 0x105A1,
0x105A3, 0x105B1,
0x105B3, 0x105B9,
0x105BB, 0x105BC,
},
capitalized = true,
}
m["Wara"] = process_ranges{
"วรังจิติ",
aliases = {"วรังกษิติ", "Warang Citi", "Varang Kshiti"},
ranges = {
0x118A0, 0x118F2,
0x118FF, 0x118FF,
},
capitalized = true,
}
m["Wcho"] = process_ranges{
"Wancho",
"alphabet",
ranges = {
0x1E2C0, 0x1E2F9,
0x1E2FF, 0x1E2FF,
},
}
m["Wole"] = {
"Woleai",
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = process_ranges{
"เปอร์เซียเก่า",
aliases = {"Old Persian"},
ranges = {
0x103A0, 0x103C3,
0x103C8, 0x103D5,
},
}
m["Xsux"] = process_ranges{
"คูนิฟอร์ม",
aliases = {"Cuneiform", "Sumero-Akkadian Cuneiform"},
ranges = {
0x12000, 0x12399,
0x12400, 0x1246E,
0x12470, 0x12474,
0x12480, 0x12543,
},
}
m["Yezi"] = process_ranges{
"Yezidi",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0660, 0x0669,
0x10E80, 0x10EA9,
0x10EAB, 0x10EAD,
0x10EB0, 0x10EB1,
},
direction = "rtl",
}
m["Yiii"] = process_ranges{
"อี๋",
"syllabary",
aliases = {"Yi"},
ranges = {
0x3001, 0x3002,
0x3008, 0x3011,
0x3014, 0x301B,
0x30FB, 0x30FB,
0xA000, 0xA48C,
0xA490, 0xA4C6,
0xFF61, 0xFF65,
},
}
m["Zanb"] = process_ranges{
"Zanabazar Square",
ranges = {
0x11A00, 0x11A47,
},
}
m["Zmth"] = process_ranges{
"mathematical notation",
ranges = {
0x00AC, 0x00AC,
0x00B1, 0x00B1,
0x00D7, 0x00D7,
0x00F7, 0x00F7,
0x03D0, 0x03D2,
0x03D5, 0x03D5,
0x03F0, 0x03F1,
0x03F4, 0x03F6,
0x0606, 0x0608,
0x2016, 0x2016,
0x2032, 0x2034,
0x2040, 0x2040,
0x2044, 0x2044,
0x2052, 0x2052,
0x205F, 0x205F,
0x2061, 0x2064,
0x207A, 0x207E,
0x208A, 0x208E,
0x20D0, 0x20DC,
0x20E1, 0x20E1,
0x20E5, 0x20E6,
0x20EB, 0x20EF,
0x2102, 0x2102,
0x2107, 0x2107,
0x210A, 0x2113,
0x2115, 0x2115,
0x2118, 0x211D,
0x2124, 0x2124,
0x2128, 0x2129,
0x212C, 0x212D,
0x212F, 0x2131,
0x2133, 0x2138,
0x213C, 0x2149,
0x214B, 0x214B,
0x2190, 0x21A7,
0x21A9, 0x21AE,
0x21B0, 0x21B1,
0x21B6, 0x21B7,
0x21BC, 0x21DB,
0x21DD, 0x21DD,
0x21E4, 0x21E5,
0x21F4, 0x22FF,
0x2308, 0x230B,
0x2320, 0x2321,
0x237C, 0x237C,
0x239B, 0x23B5,
0x23B7, 0x23B7,
0x23D0, 0x23D0,
0x23DC, 0x23E2,
0x25A0, 0x25A1,
0x25AE, 0x25B7,
0x25BC, 0x25C1,
0x25C6, 0x25C7,
0x25CA, 0x25CB,
0x25CF, 0x25D3,
0x25E2, 0x25E2,
0x25E4, 0x25E4,
0x25E7, 0x25EC,
0x25F8, 0x25FF,
0x2605, 0x2606,
0x2640, 0x2640,
0x2642, 0x2642,
0x2660, 0x2663,
0x266D, 0x266F,
0x27C0, 0x27FF,
0x2900, 0x2AFF,
0x2B30, 0x2B44,
0x2B47, 0x2B4C,
0xFB29, 0xFB29,
0xFE61, 0xFE66,
0xFE68, 0xFE68,
0xFF0B, 0xFF0B,
0xFF1C, 0xFF1E,
0xFF3C, 0xFF3C,
0xFF3E, 0xFF3E,
0xFF5C, 0xFF5C,
0xFF5E, 0xFF5E,
0xFFE2, 0xFFE2,
0xFFE9, 0xFFEC,
0x1D400, 0x1D454,
0x1D456, 0x1D49C,
0x1D49E, 0x1D49F,
0x1D4A2, 0x1D4A2,
0x1D4A5, 0x1D4A6,
0x1D4A9, 0x1D4AC,
0x1D4AE, 0x1D4B9,
0x1D4BB, 0x1D4BB,
0x1D4BD, 0x1D4C3,
0x1D4C5, 0x1D505,
0x1D507, 0x1D50A,
0x1D50D, 0x1D514,
0x1D516, 0x1D51C,
0x1D51E, 0x1D539,
0x1D53B, 0x1D53E,
0x1D540, 0x1D544,
0x1D546, 0x1D546,
0x1D54A, 0x1D550,
0x1D552, 0x1D6A5,
0x1D6A8, 0x1D7CB,
0x1D7CE, 0x1D7FF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
translit = false,
character_category = "Mathematical notation symbols", -- ?
}
m["Zsym"] = process_ranges{
"สัญลักษณ์",
"pictography",
aliases = {"symbol"},
ranges = {
0x20DD, 0x20E0,
0x20E2, 0x20E4,
0x20E7, 0x20EA,
0x20F0, 0x20F0,
0x2100, 0x2101,
0x2103, 0x2106,
0x2108, 0x2109,
0x2114, 0x2114,
0x2116, 0x2117,
0x211E, 0x2123,
0x2125, 0x2127,
0x212A, 0x212B,
0x212E, 0x212E,
0x2132, 0x2132,
0x2139, 0x213B,
0x214A, 0x214A,
0x214C, 0x214F,
0x21A8, 0x21A8,
0x21AF, 0x21AF,
0x21B2, 0x21B5,
0x21B8, 0x21BB,
0x21DC, 0x21DC,
0x21DE, 0x21E3,
0x21E6, 0x21F3,
0x2300, 0x2307,
0x230C, 0x231F,
0x2322, 0x237B,
0x237D, 0x239A,
0x23B6, 0x23B6,
0x23B8, 0x23CF,
0x23D1, 0x23DB,
0x23E3, 0x23FF,
0x2500, 0x259F,
0x25A2, 0x25AD,
0x25B8, 0x25BB,
0x25C2, 0x25C5,
0x25C8, 0x25C9,
0x25CC, 0x25CE,
0x25D4, 0x25E1,
0x25E3, 0x25E3,
0x25E5, 0x25E6,
0x25ED, 0x25F7,
0x2600, 0x2604,
0x2607, 0x263F,
0x2641, 0x2641,
0x2643, 0x265F,
0x2664, 0x266C,
0x2670, 0x27BF,
0x2B00, 0x2B2F,
0x2B45, 0x2B46,
0x2B4D, 0x2B73,
0x2B76, 0x2B95,
0x2B97, 0x2BFF,
0x4DC0, 0x4DFF,
0x1F000, 0x1F02B,
0x1F030, 0x1F093,
0x1F0A0, 0x1F0AE,
0x1F0B1, 0x1F0BF,
0x1F0C1, 0x1F0CF,
0x1F0D1, 0x1F0F5,
0x1F300, 0x1F6D7,
0x1F6DC, 0x1F6EC,
0x1F6F0, 0x1F6FC,
0x1F700, 0x1F776,
0x1F77B, 0x1F7D9,
0x1F7E0, 0x1F7EB,
0x1F7F0, 0x1F7F0,
0x1F800, 0x1F80B,
0x1F810, 0x1F847,
0x1F850, 0x1F859,
0x1F860, 0x1F887,
0x1F890, 0x1F8AD,
0x1F8B0, 0x1F8B1,
0x1F900, 0x1FA53,
0x1FA60, 0x1FA6D,
0x1FA70, 0x1FA7C,
0x1FA80, 0x1FA88,
0x1FA90, 0x1FABD,
0x1FABF, 0x1FAC5,
0x1FACE, 0x1FADB,
0x1FAE0, 0x1FAE8,
0x1FAF0, 0x1FAF8,
0x1FB00, 0x1FB92,
0x1FB94, 0x1FBCA,
0x1FBF0, 0x1FBF9,
},
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"ยังไม่กำหนด",
aliases = {"undetermined"},
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"ยังไม่มีรหัส",
aliases = {"uncoded"},
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of.
m["Hrkt"] = process_ranges{
"คานะ",
"syllabary",
aliases = {"Kana", "Japanese syllabaries"},
ranges = union(
m["Hira"].ranges,
m["Kana"].ranges
),
spaces = false,
}
m["Jpan"] = process_ranges{
"ญี่ปุ่น",
"logography, syllabary",
aliases = {"Japanese"},
ranges = union(
m["Hrkt"].ranges,
m["Hani"].ranges,
m["Latn"].ranges
),
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = process_ranges{
"เกาหลี",
"logography, syllabary",
aliases = {"Korean"},
ranges = union(
m["Hang"].ranges,
m["Hani"].ranges
),
}
return m
7xrfwqnkgv8wwthtcxayxsqcu35379j
1908589
1908588
2024-04-26T04:38:37Z
Octahedron80
267
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Common.css]].
]=]
local concat = table.concat
local insert = table.insert
local remove = table.remove
local select = select
local sort = table.sort
local u = mw.ustring.char
------------------------------------------------------------------------------------
--
-- Helper functions
--
------------------------------------------------------------------------------------
-- Note: a[2] > b[2] means opens are sorted before closes if otherwise equal.
local function sort_ranges(a, b)
return a[1] < b[1] or a[1] == b[1] and a[2] > b[2]
end
-- Returns the union of two or more range tables.
local function union(...)
local ranges = {}
for i = 1, select("#", ...) do
local argt = select(i, ...)
for j, v in ipairs(argt) do
insert(ranges, {v, j % 2 == 1 and 1 or -1})
end
end
sort(ranges, sort_ranges)
local ret, i = {}, 0
for _, range in ipairs(ranges) do
i = i + range[2]
if i == 0 and range[2] == -1 then -- close
insert(ret, range[1])
elseif i == 1 and range[2] == 1 then -- open
if ret[#ret] and range[1] <= ret[#ret] + 1 then
remove(ret) -- merge adjacent ranges
else
insert(ret, range[1])
end
end
end
return ret
end
-- Adds the `characters` key, which is determined by a script's `ranges` table.
local function process_ranges(sc)
local ranges, chars = sc.ranges, {}
for i = 2, #ranges, 2 do
if ranges[i] == ranges[i - 1] then
insert(chars, u(ranges[i]))
else
insert(chars, u(ranges[i - 1]))
if ranges[i] > ranges[i - 1] + 1 then
insert(chars, "-")
end
insert(chars, u(ranges[i]))
end
end
sc.characters = concat(chars)
ranges.n = #ranges
return sc
end
------------------------------------------------------------------------------------
--
-- Data
--
------------------------------------------------------------------------------------
local m = {}
m["Adlm"] = process_ranges{
"อัดลัม",
"alphabet",
aliases = {"Adlam"},
ranges = {
0x061F, 0x061F,
0x0640, 0x0640,
0x1E900, 0x1E94B,
0x1E950, 0x1E959,
0x1E95E, 0x1E95F,
},
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"อาฟากา",
"syllabary",
aliases = {"Afaka"},
-- Not in Unicode
}
m["Aghb"] = process_ranges{
"Caucasian Albanian",
"alphabet",
ranges = {
0x10530, 0x10563,
0x1056F, 0x1056F,
},
}
m["Ahom"] = process_ranges{
"อาหม",
"abugida",
aliases = {"อะหม", "Ahom"},
ranges = {
0x11700, 0x1171A,
0x1171D, 0x1172B,
0x11730, 0x11746,
},
}
m["Arab"] = process_ranges{
"อาหรับ",
"abjad", -- more precisely, impure abjad
aliases = {"อารบิก", "อาระบิก", "Arabic"},
varieties = {{"ยาวี", "Jawi"}, {"Nastaliq", "Nastaleeq"}},
ranges = {
0x0600, 0x06FF,
0x0750, 0x077F,
0x0870, 0x088E,
0x0890, 0x0891,
0x0898, 0x08E1,
0x08E3, 0x08FF,
0xFB50, 0xFBC2,
0xFBD3, 0xFD8F,
0xFD92, 0xFDC7,
0xFDCF, 0xFDCF,
0xFDF0, 0xFDFF,
0xFE70, 0xFE74,
0xFE76, 0xFEFC,
0x102E0, 0x102FB,
0x10E60, 0x10E7E,
0x10EFD, 0x10EFF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
direction = "rtl",
normalizationFixes = {
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"เปอร์โซ-อาหรับ", "Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ku-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ms-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["mzn-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ota-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["pa-Arab"] = {
"ชาห์มุขี",
m["Arab"][2],
aliases = {"Shahmukhi"},
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"อาหรับ", "Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["sd-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["tt-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ug-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ur-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["xka-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = process_ranges{
"แอราเมอิกจักรวรรดิ",
"abjad",
aliases = {"Imperial Aramaic"},
ranges = {
0x10840, 0x10855,
0x10857, 0x1085F,
},
direction = "rtl",
}
m["Armn"] = process_ranges{
"อาร์มีเนีย",
"alphabet",
aliases = {"อาร์เมเนีย", "Armenian"},
ranges = {
0x0531, 0x0556,
0x0559, 0x058A,
0x058D, 0x058F,
0xFB13, 0xFB17,
},
capitalized = true,
}
m["Avst"] = process_ranges{
"อเวสตะ",
"alphabet",
aliases = {"Avestan"},
ranges = {
0x10B00, 0x10B35,
0x10B39, 0x10B3F,
},
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
m["Avst"][2],
aliases = m["Avst"].aliases,
ranges = m["Avst"].ranges,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = process_ranges{
"บาหลี",
"abugida",
aliases = {"Balinese"},
ranges = {
0x1B00, 0x1B4C,
0x1B50, 0x1B7E,
},
}
m["Bamu"] = process_ranges{
"บามุม",
"syllabary",
aliases = {"Bamum"},
ranges = {
0xA6A0, 0xA6F7,
0x16800, 0x16A38,
},
}
m["Bass"] = process_ranges{
"บัสซา",
"alphabet",
aliases = {"วาห์", "Bassa", "Bassa Vah", "Vah"},
ranges = {
0x16AD0, 0x16AED,
0x16AF0, 0x16AF5,
},
}
m["Batk"] = process_ranges{
"บาตัก",
"abugida",
aliases = {"Batak"},
ranges = {
0x1BC0, 0x1BF3,
0x1BFC, 0x1BFF,
},
}
m["Beng"] = process_ranges{
"เบงกอล",
"abugida",
aliases = {"เบงกาลี", "บังลา", "Bengali"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09B0,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09EF,
0x09F2, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = {
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = process_ranges{
"อัสสัม",
m["Beng"][2],
otherNames = {"เบงกอล-อัสสัม", "เบงกาลี-อัสสัม", "นาครีตะวันออก", "Assamese", "Bengali-Assamese", "Eastern Nagari"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09AF,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = process_ranges{
"ไภกษุกี",
"abugida",
aliases = {"Bhaiksuki"},
ranges = {
0x11C00, 0x11C08,
0x11C0A, 0x11C36,
0x11C38, 0x11C45,
0x11C50, 0x11C6C,
},
}
m["Blis"] = {
"Blissymbols",
"logography",
aliases = {"Blissymbolics"},
-- Not in Unicode
}
m["Bopo"] = process_ranges{
"จู้อิน",
"semisyllabary",
aliases = {"จู้อินฝูเฮ่า", "ปอพอมอฟอ", "ปัวพัวมัวฟัว", "Zhuyin", "Zhuyin Fuhao", "Bopomofo"},
ranges = {
0x02EA, 0x02EB,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302A, 0x302D,
0x3030, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3105, 0x312F,
0x31A0, 0x31BF,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
},
}
m["Brah"] = process_ranges{
"พราหมี",
"abugida",
aliases = {"พราหฺมี", "Brahmi"},
ranges = {
0x11000, 0x1104D,
0x11052, 0x11075,
0x1107F, 0x1107F,
},
normalizationFixes = {
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = process_ranges{
"เบรลล์",
"alphabet",
aliases = {"Braille"},
ranges = {
0x2800, 0x28FF,
},
}
m["Bugi"] = process_ranges{
"บูกิส",
"abugida",
aliases = {"ลนตารา", "Buginese", "Lontara"},
ranges = {
0x1A00, 0x1A1B,
0x1A1E, 0x1A1F,
0xA9CF, 0xA9CF,
},
}
m["Buhd"] = process_ranges{
"บูฮิด",
"abugida",
aliases = {"Buhid"},
ranges = {
0x1735, 0x1736,
0x1740, 0x1751,
0x1752, 0x1753,
},
}
m["Cakm"] = process_ranges{
"จักมา",
"abugida",
aliases = {"Chakma"},
ranges = {
0x09E6, 0x09EF,
0x1040, 0x1049,
0x11100, 0x11134,
0x11136, 0x11147,
},
}
m["Cans"] = process_ranges{
"Canadian syllabics",
"abugida",
ranges = {
0x1400, 0x167F,
0x18B0, 0x18F5,
0x11AB0, 0x11ABF,
},
}
m["Cari"] = process_ranges{
"คาเรีย",
"alphabet",
aliases = {"Carian"},
ranges = {
0x102A0, 0x102D0,
},
}
m["Cham"] = process_ranges{
"จาม",
"abugida",
aliases = {"Cham"},
ranges = {
0xAA00, 0xAA36,
0xAA40, 0xAA4D,
0xAA50, 0xAA59,
0xAA5C, 0xAA5F,
},
}
m["Cher"] = process_ranges{
"เชโรกี",
"syllabary",
aliases = {"Cherokee"},
ranges = {
0x13A0, 0x13F5,
0x13F8, 0x13FD,
0xAB70, 0xABBF,
},
}
m["Chis"] = {
"Chisoi",
"abugida",
-- Not in Unicode
}
m["Chrs"] = process_ranges{
"Chorasmian",
"abjad",
ranges = {
0x10FB0, 0x10FCB,
},
direction = "rtl",
}
m["Copt"] = process_ranges{
"คอปติก",
"alphabet",
aliases = {"Coptic"},
ranges = {
0x03E2, 0x03EF,
0x2C80, 0x2CF3,
0x2CF9, 0x2CFF,
0x102E0, 0x102FB,
},
capitalized = true,
}
m["Cpmn"] = process_ranges{
"Cypro-Minoan",
"syllabary",
aliases = {"Cypro Minoan"},
ranges = {
0x10100, 0x10101,
0x12F90, 0x12FF2,
},
}
m["Cprt"] = process_ranges{
"ไซปรัส",
"syllabary",
aliases = {"ไซเปรียท", "Cypriot"},
ranges = {
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
0x10800, 0x10805,
0x10808, 0x10808,
0x1080A, 0x10835,
0x10837, 0x10838,
0x1083C, 0x1083C,
0x1083F, 0x1083F,
},
direction = "rtl",
}
m["Cyrl"] = process_ranges{
"ซีริลลิก",
"alphabet",
aliases = {"Cyrillic"},
ranges = {
0x0400, 0x052F,
0x1C80, 0x1C88,
0x1D2B, 0x1D2B,
0x1D78, 0x1D78,
0x1DF8, 0x1DF8,
0x2DE0, 0x2DFF,
0x2E43, 0x2E43,
0xA640, 0xA69F,
0xFE2E, 0xFE2F,
0x1E030, 0x1E06D,
0x1E08F, 0x1E08F,
},
capitalized = true,
}
m["Cyrs"] = {
"ซีริลลิกเก่า",
m["Cyrl"][2],
aliases = {"ซีริลลิกช่วงต้น", "Old Cyrillic", "Early Cyrillic"},
ranges = m["Cyrl"].ranges,
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
normalizationFixes = {
from = {"Ѹ", "ѹ"},
to = {"Ꙋ", "ꙋ"}
},
}
m["Deva"] = process_ranges{
"เทวนาครี",
"abugida",
aliases = {"Devanagari"},
ranges = {
0x0900, 0x097F,
0x1CD0, 0x1CF6,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0xA830, 0xA839,
0xA8E0, 0xA8FF,
0x11B00, 0x11B09,
},
normalizationFixes = {
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = process_ranges{
"ดิเวส อกุรุ",
"abugida",
aliases = {"ดิเวหิ อกุรุ", "Dhives Akuru", "Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
ranges = {
0x11900, 0x11906,
0x11909, 0x11909,
0x1190C, 0x11913,
0x11915, 0x11916,
0x11918, 0x11935,
0x11937, 0x11938,
0x1193B, 0x11946,
0x11950, 0x11959,
},
}
m["Dogr"] = process_ranges{
"โฑครี",
"abugida",
aliases = {"Dogri", "Dogra"},
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11800, 0x1183B,
},
}
m["Dsrt"] = process_ranges{
"Deseret",
"alphabet",
ranges = {
0x10400, 0x1044F,
},
capitalized = true,
}
m["Dupl"] = process_ranges{
"Duployan",
"alphabet",
ranges = {
0x1BC00, 0x1BC6A,
0x1BC70, 0x1BC7C,
0x1BC80, 0x1BC88,
0x1BC90, 0x1BC99,
0x1BC9C, 0x1BCA3,
},
}
m["Egyd"] = {
"Demotic",
"abjad, logography",
-- Not in Unicode
}
m["Egyh"] = {
"Hieratic",
"abjad, logography",
-- Unified with Egyptian hieroglyphic in Unicode
}
m["Egyp"] = process_ranges{
"ไฮเออโรกลีฟอียิปต์",
"abjad, logography",
aliases = {"Egyptian hieroglyphic"},
ranges = {
0x13000, 0x13455,
},
varieties = {"Hieratic"},
wikipedia_article = "ไฮเออโรกลีฟอียิปต์",
normalizationFixes = {
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = process_ranges{
"เอลบาซาน",
"alphabet",
aliases = {"Elbasan"},
ranges = {
0x10500, 0x10527,
},
}
m["Elym"] = process_ranges{
"Elymaic",
"abjad",
ranges = {
0x10FE0, 0x10FF6,
},
direction = "rtl",
}
m["Ethi"] = process_ranges{
"เอธิโอเปีย",
"abugida",
aliases = {"กืออึซ", "Ethiopic", "Ge'ez"},
ranges = {
0x1200, 0x1248,
0x124A, 0x124D,
0x1250, 0x1256,
0x1258, 0x1258,
0x125A, 0x125D,
0x1260, 0x1288,
0x128A, 0x128D,
0x1290, 0x12B0,
0x12B2, 0x12B5,
0x12B8, 0x12BE,
0x12C0, 0x12C0,
0x12C2, 0x12C5,
0x12C8, 0x12D6,
0x12D8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135A,
0x135D, 0x137C,
0x1380, 0x1399,
0x2D80, 0x2D96,
0x2DA0, 0x2DA6,
0x2DA8, 0x2DAE,
0x2DB0, 0x2DB6,
0x2DB8, 0x2DBE,
0x2DC0, 0x2DC6,
0x2DC8, 0x2DCE,
0x2DD0, 0x2DD6,
0x2DD8, 0x2DDE,
0xAB01, 0xAB06,
0xAB09, 0xAB0E,
0xAB11, 0xAB16,
0xAB20, 0xAB26,
0xAB28, 0xAB2E,
0x1E7E0, 0x1E7E6,
0x1E7E8, 0x1E7EB,
0x1E7ED, 0x1E7EE,
0x1E7F0, 0x1E7FE,
},
}
m["Gara"] = {
"Garay",
"alphabet",
capitalized = true,
direction = "rtl",
-- Not in Unicode
}
m["Geok"] = process_ranges{
"Khutsuri",
"alphabet",
ranges = { -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
0x10A0, 0x10C5,
0x10C7, 0x10C7,
0x10CD, 0x10CD,
0x10FB, 0x10FB,
0x2D00, 0x2D25,
0x2D27, 0x2D27,
0x2D2D, 0x2D2D,
},
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = process_ranges{
"จอร์เจีย",
"alphabet",
aliases = {"Georgian"},
ranges = { -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
0x10D0, 0x10FF,
0x1C90, 0x1CBA,
0x1CBD, 0x1CBF,
},
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = process_ranges{
"กลาโกลิติก",
"alphabet",
aliases = {"Glagolitic"},
ranges = {
0x0484, 0x0484,
0x0487, 0x0487,
0x2C00, 0x2C5F,
0x2E43, 0x2E43,
0xA66F, 0xA66F,
0x1E000, 0x1E006,
0x1E008, 0x1E018,
0x1E01B, 0x1E021,
0x1E023, 0x1E024,
0x1E026, 0x1E02A,
},
capitalized = true,
}
m["Gong"] = process_ranges{
"คุญชลาโคณฑี",
"abugida",
aliases = {"Gunjala Gondi"},
ranges = {
0x0964, 0x0965,
0x11D60, 0x11D65,
0x11D67, 0x11D68,
0x11D6A, 0x11D8E,
0x11D90, 0x11D91,
0x11D93, 0x11D98,
0x11DA0, 0x11DA9,
},
}
m["Gonm"] = process_ranges{
"มสรามโคณฑี",
"abugida",
aliases = {"Masaram Gondi"},
ranges = {
0x0964, 0x0965,
0x11D00, 0x11D06,
0x11D08, 0x11D09,
0x11D0B, 0x11D36,
0x11D3A, 0x11D3A,
0x11D3C, 0x11D3D,
0x11D3F, 0x11D47,
0x11D50, 0x11D59,
},
}
m["Goth"] = process_ranges{
"กอท",
"alphabet",
aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"},
ranges = {
0x10330, 0x1034A,
},
}
m["Gran"] = process_ranges{
"ครันถะ",
"abugida",
aliases = {"Grantha"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0BE6, 0x0BF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CF2, 0x1CF4,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0x11300, 0x11303,
0x11305, 0x1130C,
0x1130F, 0x11310,
0x11313, 0x11328,
0x1132A, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
0x1133B, 0x11344,
0x11347, 0x11348,
0x1134B, 0x1134D,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135D, 0x11363,
0x11366, 0x1136C,
0x11370, 0x11374,
0x11FD0, 0x11FD1,
0x11FD3, 0x11FD3,
},
}
m["Grek"] = process_ranges{
"กรีก",
"alphabet",
aliases = {"Greek"},
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DBF,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = true,
}
m["Polyt"] = process_ranges{
"กรีก",
m["Grek"][2],
aliases = m["Grek"].aliases,
ranges = union(m["Grek"].ranges, {
0x1F00, 0x1F15,
0x1F18, 0x1F1D,
0x1F20, 0x1F45,
0x1F48, 0x1F4D,
0x1F50, 0x1F57,
0x1F59, 0x1F59,
0x1F5B, 0x1F5B,
0x1F5D, 0x1F5D,
0x1F5F, 0x1F7D,
0x1F80, 0x1FB4,
0x1FB6, 0x1FC4,
0x1FC6, 0x1FD3,
0x1FD6, 0x1FDB,
0x1FDD, 0x1FEF,
0x1FF2, 0x1FF4,
0x1FF6, 0x1FFE,
}),
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = process_ranges{
"คุชราต",
"abugida",
aliases = {"คุชราตี", "Gujarati"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A81, 0x0A83,
0x0A85, 0x0A8D,
0x0A8F, 0x0A91,
0x0A93, 0x0AA8,
0x0AAA, 0x0AB0,
0x0AB2, 0x0AB3,
0x0AB5, 0x0AB9,
0x0ABC, 0x0AC5,
0x0AC7, 0x0AC9,
0x0ACB, 0x0ACD,
0x0AD0, 0x0AD0,
0x0AE0, 0x0AE3,
0x0AE6, 0x0AF1,
0x0AF9, 0x0AFF,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Gukh"] = {
"Khema",
"abugida",
aliases = {"Gurung Khema", "Khema Phri", "Khema Lipi"},
-- Not in Unicode
}
m["Guru"] = process_ranges{
"คุรมุขี",
"abugida",
aliases = {"กูร์มูคี", "เกอร์มุกห์", "Gurmukhi"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A01, 0x0A03,
0x0A05, 0x0A0A,
0x0A0F, 0x0A10,
0x0A13, 0x0A28,
0x0A2A, 0x0A30,
0x0A32, 0x0A33,
0x0A35, 0x0A36,
0x0A38, 0x0A39,
0x0A3C, 0x0A3C,
0x0A3E, 0x0A42,
0x0A47, 0x0A48,
0x0A4B, 0x0A4D,
0x0A51, 0x0A51,
0x0A59, 0x0A5C,
0x0A5E, 0x0A5E,
0x0A66, 0x0A76,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = process_ranges{
"ฮันกึล",
"syllabary",
aliases = {"ฮังกึล", "Hangul", "Hangeul"},
ranges = {
0x1100, 0x11FF,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302E, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3131, 0x318E,
0x3200, 0x321E,
0x3260, 0x327E,
0xA960, 0xA97C,
0xAC00, 0xD7A3,
0xD7B0, 0xD7C6,
0xD7CB, 0xD7FB,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFFA0, 0xFFBE,
0xFFC2, 0xFFC7,
0xFFCA, 0xFFCF,
0xFFD2, 0xFFD7,
0xFFDA, 0xFFDC,
},
}
m["Hani"] = process_ranges{
"จีน",
"logography",
aliases = {"ฮั่น", "Han"},
ranges = {
0x2E80, 0x2E99,
0x2E9B, 0x2EF3,
0x2F00, 0x2FD5,
0x3001, 0x3003,
0x3005, 0x3011,
0x3013, 0x301F,
0x3021, 0x302D,
0x3030, 0x3030,
0x3037, 0x303F,
0x3190, 0x319F,
0x31C0, 0x31E3,
0x3220, 0x3247,
0x3280, 0x32B0,
0x32C0, 0x32CB,
0x30FB, 0x30FB,
0x32FF, 0x32FF,
0x3358, 0x3370,
0x337B, 0x337F,
0x33E0, 0x33FE,
0x3400, 0x4DBF,
0x4E00, 0x9FFF,
0xA700, 0xA707,
0xF900, 0xFA6D,
0xFA70, 0xFAD9,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0x16FE2, 0x16FE3,
0x16FF0, 0x16FF1,
0x1D360, 0x1D371,
0x1F250, 0x1F251,
0x20000, 0x2A6DF,
0x2A700, 0x2B739,
0x2B740, 0x2B81D,
0x2B820, 0x2CEA1,
0x2CEB0, 0x2EBE0,
0x2EBF0, 0x2EE5D,
0x2F800, 0x2FA1D,
0x30000, 0x3134A,
0x31350, 0x323AF,
},
varieties = {{"ฮั่นจื่อ", "Hanzi"}, {"คันจิ", "Kanji"}, {"ฮันจา", "Hanja"}, {"จื๋อโนม", "Chu Nom"}},
spaces = false,
}
m["Hans"] = {
"จีนตัวย่อ",
m["Hani"][2],
aliases = {"Simplified Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"จีนตัวเต็ม",
m["Hani"][2],
aliases = {"Traditional Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = process_ranges{
"ฮานูโนโอ",
"abugida",
aliases = {"Hanunoo"},
ranges = {
0x1720, 0x1736,
},
}
m["Hatr"] = process_ranges{
"Hatran",
"abjad",
ranges = {
0x108E0, 0x108F2,
0x108F4, 0x108F5,
0x108FB, 0x108FF,
},
direction = "rtl",
}
m["Hebr"] = process_ranges{
"ฮีบรู",
"abjad", -- more precisely, impure abjad
aliases = {"Hebrew"},
ranges = {
0x0591, 0x05C7,
0x05D0, 0x05EA,
0x05EF, 0x05F4,
0x2135, 0x2138,
0xFB1D, 0xFB36,
0xFB38, 0xFB3C,
0xFB3E, 0xFB3E,
0xFB40, 0xFB41,
0xFB43, 0xFB44,
0xFB46, 0xFB4F,
},
direction = "rtl",
}
m["Hira"] = process_ranges{
"ฮิรางานะ",
"syllabary",
aliases = {"ฮิระงะนะ", "Hiragana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3041, 0x3096,
0x3099, 0x30A0,
0x30FB, 0x30FC,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFF70, 0xFF70,
0xFF9E, 0xFF9F,
0x1B001, 0x1B11F,
0x1B132, 0x1B132,
0x1B150, 0x1B152,
0x1F200, 0x1F200,
},
varieties = {{"เฮ็นไตงานะ", "Hentaigana"}},
spaces = false,
}
m["Hluw"] = process_ranges{
"ไฮเออโรกลีฟอานาโตเลีย",
"logography, syllabary",
aliases = {"Anatolian Hieroglyphs"},
ranges = {
0x14400, 0x14646,
},
wikipedia_article = "ไฮเออโรกลีฟอานาโตเลีย",
}
m["Hmng"] = process_ranges{
"Pahawh Hmong",
"semisyllabary",
aliases = {"ม้ง", "Hmong"},
ranges = {
0x16B00, 0x16B45,
0x16B50, 0x16B59,
0x16B5B, 0x16B61,
0x16B63, 0x16B77,
0x16B7D, 0x16B8F,
},
}
m["Hmnp"] = process_ranges{
"Nyiakeng Puachue Hmong",
"alphabet",
ranges = {
0x1E100, 0x1E12C,
0x1E130, 0x1E13D,
0x1E140, 0x1E149,
0x1E14E, 0x1E14F,
},
}
m["Hung"] = process_ranges{
"ฮังการีเก่า",
"alphabet",
aliases = {"รูนฮังการี", "Old Hungarian", "Hungarian runic"},
ranges = {
0x10C80, 0x10CB2,
0x10CC0, 0x10CF2,
0x10CFA, 0x10CFF,
},
capitalized = true,
direction = "rtl",
}
m["Ibrn"] = {
"ไอบีเรีย",
"semisyllabary",
aliases = {"Iberian"},
-- Not in Unicode
}
m["Imag"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Inds"] = {
"สินธุ",
aliases = {"อินดัส", "Indus", "Harappan", "Indus Valley"},
}
m["Ipach"] = {
"สัทอักษรสากล",
aliases = {"International Phonetic Alphabet", "IPA"},
}
m["Ital"] = process_ranges{
"อิตาลิกเก่า",
"alphabet",
aliases = {"Old Italic"},
ranges = {
0x10300, 0x10323,
0x1032D, 0x1032F,
},
}
m["Java"] = process_ranges{
"ชวา",
"abugida",
aliases = {"Javanese"},
ranges = {
0xA980, 0xA9CD,
0xA9CF, 0xA9D9,
0xA9DE, 0xA9DF,
},
}
m["Jurc"] = {
"จูร์เชน",
"logography",
aliases = {"Jurchen"},
spaces = false,
}
m["Kali"] = process_ranges{
"กะยา",
"abugida",
aliases = {"Kayah Li"},
ranges = {
0xA900, 0xA92F,
},
}
m["Kana"] = process_ranges{
"คาตากานะ",
"syllabary",
aliases = {"คะตะกะนะ", "Katakana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3099, 0x309C,
0x30A0, 0x30FF,
0x31F0, 0x31FF,
0x32D0, 0x32FE,
0x3300, 0x3357,
0xFE45, 0xFE46,
0xFF61, 0xFF9F,
0x1AFF0, 0x1AFF3,
0x1AFF5, 0x1AFFB,
0x1AFFD, 0x1AFFE,
0x1B000, 0x1B000,
0x1B120, 0x1B122,
0x1B155, 0x1B155,
0x1B164, 0x1B167,
},
spaces = false,
}
m["Kawi"] = process_ranges{
"กวิ",
"abugida",
aliases = {"Kawi"},
ranges = {
0x11F00, 0x11F10,
0x11F12, 0x11F3A,
0x11F3E, 0x11F59,
},
}
m["Khar"] = process_ranges{
"ขโรษฐี",
"abugida",
aliases = {"Kharoshthi"},
ranges = {
0x10A00, 0x10A03,
0x10A05, 0x10A06,
0x10A0C, 0x10A13,
0x10A15, 0x10A17,
0x10A19, 0x10A35,
0x10A38, 0x10A3A,
0x10A3F, 0x10A48,
0x10A50, 0x10A58,
},
direction = "rtl",
}
m["Khmr"] = process_ranges{
"เขมร",
"abugida",
aliases = {"Khmer"},
ranges = {
0x1780, 0x17DD,
0x17E0, 0x17E9,
0x17F0, 0x17F9,
0x19E0, 0x19FF,
},
spaces = false,
normalizationFixes = {
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = process_ranges{
"Khojki",
"abugida",
ranges = {
0x0AE6, 0x0AEF,
0xA830, 0xA839,
0x11200, 0x11211,
0x11213, 0x11241,
},
normalizationFixes = {
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Kitl"] = {
"คีตันใหญ่",
"logography",
aliases = {"Khitan Large"},
spaces = false,
}
m["Kits"] = process_ranges{
"คีตันเล็ก",
"logography, syllabary",
aliases = {"Khitan Small"},
ranges = {
0x16FE4, 0x16FE4,
0x18B00, 0x18CD5,
},
spaces = false,
}
m["Knda"] = process_ranges{
"กันนาดา",
"abugida",
aliases = {"Kannada"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C80, 0x0C8C,
0x0C8E, 0x0C90,
0x0C92, 0x0CA8,
0x0CAA, 0x0CB3,
0x0CB5, 0x0CB9,
0x0CBC, 0x0CC4,
0x0CC6, 0x0CC8,
0x0CCA, 0x0CCD,
0x0CD5, 0x0CD6,
0x0CDD, 0x0CDE,
0x0CE0, 0x0CE3,
0x0CE6, 0x0CEF,
0x0CF1, 0x0CF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0x1CF4, 0x1CF4,
0xA830, 0xA835,
},
normalizationFixes = {
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
"syllabary",
-- Not in Unicode
}
m["Krai"] = {
"Kirat Rai",
"abugida",
aliases = {"Rai", "Khambu Rai", "Rai Barṇamālā", "Kirat Khambu Rai"},
-- Not in Unicode
}
m["Kthi"] = process_ranges{
"ไกถี",
"abugida",
aliases = {"Kaithi"},
ranges = {
0x0966, 0x096F,
0xA830, 0xA839,
0x11080, 0x110C2,
0x110CD, 0x110CD,
},
}
m["Lana"] = process_ranges{
"ไทธรรม",
"abugida",
aliases = {"ธรรม", "ตัวเมือง", "ล้านนา", "Tai Tham", "Tham", "Tua Mueang", "Lanna"},
ranges = {
0x1A20, 0x1A5E,
0x1A60, 0x1A7C,
0x1A7F, 0x1A89,
0x1A90, 0x1A99,
0x1AA0, 0x1AAD,
},
spaces = false,
}
m["Laoo"] = process_ranges{
"ลาว",
"abugida",
aliases = {"Lao"},
ranges = {
0x0E81, 0x0E82,
0x0E84, 0x0E84,
0x0E86, 0x0E8A,
0x0E8C, 0x0EA3,
0x0EA5, 0x0EA5,
0x0EA7, 0x0EBD,
0x0EC0, 0x0EC4,
0x0EC6, 0x0EC6,
0x0EC8, 0x0ECE,
0x0ED0, 0x0ED9,
0x0EDC, 0x0EDF,
},
spaces = false,
}
m["Latn"] = process_ranges{
"ละติน",
"alphabet",
aliases = {"ลาติน", "โรมัน", "Latin", "Roman"},
ranges = {
0x0041, 0x005A,
0x0061, 0x007A,
0x00AA, 0x00AA,
0x00BA, 0x00BA,
0x00C0, 0x00D6,
0x00D8, 0x00F6,
0x00F8, 0x02B8,
0x02C0, 0x02C1,
0x02E0, 0x02E4,
0x0363, 0x036F,
0x0485, 0x0486,
0x0951, 0x0952,
0x10FB, 0x10FB,
0x1D00, 0x1D25,
0x1D2C, 0x1D5C,
0x1D62, 0x1D65,
0x1D6B, 0x1D77,
0x1D79, 0x1DBE,
0x1E00, 0x1EFF,
0x202F, 0x202F,
0x2071, 0x2071,
0x207F, 0x207F,
0x2090, 0x209C,
0x20F0, 0x20F0,
0x2100, 0x2125,
0x2128, 0x2128,
0x212A, 0x2134,
0x2139, 0x213B,
0x2141, 0x214E,
0x2160, 0x2188,
0x2C60, 0x2C7F,
0xA700, 0xA707,
0xA722, 0xA787,
0xA78B, 0xA7CA,
0xA7D0, 0xA7D1,
0xA7D3, 0xA7D3,
0xA7D5, 0xA7D9,
0xA7F2, 0xA7FF,
0xA92E, 0xA92E,
0xAB30, 0xAB5A,
0xAB5C, 0xAB64,
0xAB66, 0xAB69,
0xFB00, 0xFB06,
0xFF21, 0xFF3A,
0xFF41, 0xFF5A,
0x10780, 0x10785,
0x10787, 0x107B0,
0x107B2, 0x107BA,
0x1DF00, 0x1DF1E,
0x1DF25, 0x1DF2A,
},
varieties = {{"รูมี", "Rumi"}, {"โรมาจิ", "โรมะจิ", "Romaji", "Rōmaji"}, "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"ฟรักทูร์",
m["Latn"][2],
aliases = {"Fraktur"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"แบล็กเลตเทอร์", "Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"แกลิก",
m["Latn"][2],
aliases = {"Gaelic"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"ไอริช", "Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
"abugida",
-- Not in Unicode
}
m["Lepc"] = process_ranges{
"เลปชา",
"abugida",
aliases = {"Lepcha"},
ranges = {
0x1C00, 0x1C37,
0x1C3B, 0x1C49,
0x1C4D, 0x1C4F,
},
}
m["Limb"] = process_ranges{
"ลิมบู",
"abugida",
aliases = {"Limbu"},
ranges = {
0x0965, 0x0965,
0x1900, 0x191E,
0x1920, 0x192B,
0x1930, 0x193B,
0x1940, 0x1940,
0x1944, 0x194F,
},
}
m["Lina"] = process_ranges{
"ลิเนียร์เอ",
aliases = {"Linear A"},
ranges = {
0x10107, 0x10133,
0x10600, 0x10736,
0x10740, 0x10755,
0x10760, 0x10767,
},
}
m["Linb"] = process_ranges{
"ลิเนียร์บี",
aliases = {"Linear B"},
ranges = {
0x10000, 0x1000B,
0x1000D, 0x10026,
0x10028, 0x1003A,
0x1003C, 0x1003D,
0x1003F, 0x1004D,
0x10050, 0x1005D,
0x10080, 0x100FA,
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
},
}
m["Lisu"] = process_ranges{
"ลีสู่",
"alphabet",
aliases = {"ฟราเซอร์", "Lisu", "Fraser"},
ranges = {
0xA4D0, 0xA4FF,
0x11FB0, 0x11FB0,
},
normalizationFixes = {
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
"syllabary",
-- Not in Unicode
}
m["Lyci"] = process_ranges{
"ลิเชีย",
"alphabet",
aliases = {"Lycian"},
ranges = {
0x10280, 0x1029C,
},
}
m["Lydi"] = process_ranges{
"ลิเดีย",
"alphabet",
aliases = {"Lydian"},
ranges = {
0x10920, 0x10939,
0x1093F, 0x1093F,
},
direction = "rtl",
}
m["Mahj"] = process_ranges{
"Mahajani",
"abugida",
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11150, 0x11176,
},
}
m["Maka"] = process_ranges{
"ลนตารา",
"abugida",
aliases = {"Lontara", "Makasar"},
ranges = {
0x11EE0, 0x11EF8,
},
}
m["Mand"] = process_ranges{
"มันดาอิก",
aliases = {"Mandaic", "Mandaean"},
ranges = {
0x0640, 0x0640,
0x0840, 0x085B,
0x085E, 0x085E,
},
direction = "rtl",
}
m["Mani"] = process_ranges{
"Manichaean",
"abjad",
ranges = {
0x0640, 0x0640,
0x10AC0, 0x10AE6,
0x10AEB, 0x10AF6,
},
direction = "rtl",
}
m["Marc"] = process_ranges{
"Marchen",
"abugida",
ranges = {
0x11C70, 0x11C8F,
0x11C92, 0x11CA7,
0x11CA9, 0x11CB6,
},
}
m["Maya"] = process_ranges{
"มายา",
aliases = {"มายัน", "Maya", "Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
ranges = {
0x1D2E0, 0x1D2F3,
},
}
m["Medf"] = process_ranges{
"Medefaidrin",
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
ranges = {
0x16E40, 0x16E9A,
},
capitalized = true,
}
m["Mend"] = process_ranges{
"Mende",
aliases = {"Mende Kikakui"},
ranges = {
0x1E800, 0x1E8C4,
0x1E8C7, 0x1E8D6,
},
direction = "rtl",
}
m["Merc"] = process_ranges{
"Meroitic cursive",
"abugida",
ranges = {
0x109A0, 0x109B7,
0x109BC, 0x109CF,
0x109D2, 0x109FF,
},
direction = "rtl",
}
m["Mero"] = process_ranges{
"Meroitic hieroglyphic",
"abugida",
ranges = {
0x10980, 0x1099F,
},
direction = "rtl",
}
m["Mlym"] = process_ranges{
"มลยาฬัม",
"abugida",
aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0D00, 0x0D0C,
0x0D0E, 0x0D10,
0x0D12, 0x0D44,
0x0D46, 0x0D48,
0x0D4A, 0x0D4F,
0x0D54, 0x0D63,
0x0D66, 0x0D7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0xA830, 0xA832,
},
normalizationFixes = {
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = process_ranges{
"โมฑี",
"abugida",
aliases = {"Modi"},
ranges = {
0xA830, 0xA839,
0x11600, 0x11644,
0x11650, 0x11659,
},
normalizationFixes = {
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = process_ranges{
"มองโกเลีย",
"alphabet",
aliases = {"Mongolian", "Mongol bichig", "Hudum Mongol bichig"},
ranges = {
0x1800, 0x1805,
0x180A, 0x1819,
0x1820, 0x1842,
0x1878, 0x1878,
0x1880, 0x1897,
0x18A6, 0x18A6,
0x18A9, 0x18A9,
0x200C, 0x200D,
0x202F, 0x202F,
0x11660, 0x11668,
},
direction = "vertical-ltr",
}
m["mnc-Mong"] = process_ranges{
"แมนจู",
m["Mong"][2],
aliases = {"Manchu"},
ranges = {
0x1801, 0x1801,
0x1804, 0x1804,
0x1808, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x185D,
0x185F, 0x1861,
0x1864, 0x1869,
0x186C, 0x1871,
0x1873, 0x1877,
0x1880, 0x1888,
0x188F, 0x188F,
0x189A, 0x18A5,
0x18A8, 0x18A8,
0x18AA, 0x18AA,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["sjo-Mong"] = process_ranges{
"ซิเบ",
m["Mong"][2],
aliases = {"Xibe", "Sibe"},
ranges = {
0x1804, 0x1804,
0x1807, 0x1807,
0x180A, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x1828,
0x182A, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x1872,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "mnc-Mong",
}
m["xwo-Mong"] = process_ranges{
"Clear Script",
m["Mong"][2],
aliases = {"Todo", "Todo bichig"},
ranges = {
0x1800, 0x1801,
0x1804, 0x1806,
0x180A, 0x1820,
0x1828, 0x1828,
0x182F, 0x1831,
0x1834, 0x1834,
0x1837, 0x1838,
0x183A, 0x183B,
0x1840, 0x1840,
0x1843, 0x185C,
0x1880, 0x1887,
0x1889, 0x188F,
0x1894, 0x1894,
0x1896, 0x1899,
0x18A7, 0x18A7,
0x200C, 0x200D,
0x202F, 0x202F,
0x11669, 0x1166C,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["Moon"] = {
"Moon",
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"รหัสมอร์ส",
aliases = {"Morse code"},
}
m["Mroo"] = process_ranges{
"มโร",
aliases = {"Mro"},
ranges = {
0x16A40, 0x16A5E,
0x16A60, 0x16A69,
0x16A6E, 0x16A6F,
},
}
m["Mtei"] = process_ranges{
"มณีปุระ",
"abugida",
aliases = {"ไมไตมะเยก", "มีไตมะเยก", "Manipuri", "Meitei Mayek", "Meetei Mayek"},
ranges = {
0xAAE0, 0xAAF6,
0xABC0, 0xABED,
0xABF0, 0xABF9,
},
}
m["Mult"] = process_ranges{
"Multani",
"abugida",
ranges = {
0x0A66, 0x0A6F,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128A, 0x1128D,
0x1128F, 0x1129D,
0x1129F, 0x112A9,
},
}
m["Music"] = process_ranges{
"สัญกรณ์ดนตรี",
"pictography",
aliases = {"Musical notation"},
ranges = {
0x2669, 0x266F,
0x1D100, 0x1D126,
0x1D129, 0x1D1EA,
},
translit = false,
}
m["Mymr"] = process_ranges{
"พม่า",
"abugida",
aliases = {"เมียนมา", "Burmese", "Myanmar"},
ranges = {
0x1000, 0x109F,
0xA92E, 0xA92E,
0xA9E0, 0xA9FE,
0xAA60, 0xAA7F,
},
spaces = false,
}
m["Nagm"] = process_ranges{
"Nag Mundari",
"alphabet",
ranges = {
0x1E4D0, 0x1E4F9,
},
}
m["Nand"] = process_ranges{
"นันทินาครี",
"abugida",
aliases = {"Nandinagari"},
ranges = {
0x0964, 0x0965,
0x0CE6, 0x0CEF,
0x1CE9, 0x1CE9,
0x1CF2, 0x1CF2,
0x1CFA, 0x1CFA,
0xA830, 0xA835,
0x119A0, 0x119A7,
0x119AA, 0x119D7,
0x119DA, 0x119E4,
},
}
m["Narb"] = process_ranges{
"Old North Arabian",
"abjad",
ranges = {
0x10A80, 0x10A9F,
},
direction = "rtl",
}
m["Nbat"] = process_ranges{
"Nabataean",
"abjad",
aliases = {"Nabatean"},
ranges = {
0x10880, 0x1089E,
0x108A7, 0x108AF,
},
direction = "rtl",
}
m["Newa"] = process_ranges{
"Newa",
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
ranges = {
0x11400, 0x1145B,
0x1145D, 0x11461,
},
}
m["Nkdb"] = {
"Dongba",
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = process_ranges{
"N'Ko",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x07C0, 0x07FA,
0x07FD, 0x07FF,
0xFD3E, 0xFD3F,
},
direction = "rtl",
}
m["None"] = {
"ไม่ระบุ",
aliases = {"Unspecified"},
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Nshu"] = process_ranges{
"Nüshu",
"syllabary",
aliases = {"Nushu"},
ranges = {
0x16FE1, 0x16FE1,
0x1B170, 0x1B2FB,
},
spaces = false,
}
m["Ogam"] = process_ranges{
"Ogham",
ranges = {
0x1680, 0x169C,
},
}
m["Olck"] = process_ranges{
"Ol Chiki",
ranges = {
0x1C50, 0x1C7F,
},
}
m["Onao"] = {
"Ol Onal",
"alphabet",
-- Not in Unicode
}
m["Orkh"] = process_ranges{
"Orkhon runes",
aliases = {"Old Turkic"},
ranges = {
0x10C00, 0x10C48,
},
direction = "rtl",
}
m["Orya"] = process_ranges{
"โอริยา",
"abugida",
aliases = {"โอเดีย", "Oriya", "Odia"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B01, 0x0B03,
0x0B05, 0x0B0C,
0x0B0F, 0x0B10,
0x0B13, 0x0B28,
0x0B2A, 0x0B30,
0x0B32, 0x0B33,
0x0B35, 0x0B39,
0x0B3C, 0x0B44,
0x0B47, 0x0B48,
0x0B4B, 0x0B4D,
0x0B55, 0x0B57,
0x0B5C, 0x0B5D,
0x0B5F, 0x0B63,
0x0B66, 0x0B77,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = process_ranges{
"Osage",
ranges = {
0x104B0, 0x104D3,
0x104D8, 0x104FB,
},
capitalized = true,
}
m["Osma"] = process_ranges{
"อุสมาน",
aliases = {"Osmanya"},
ranges = {
0x10480, 0x1049D,
0x104A0, 0x104A9,
},
}
m["Ougr"] = process_ranges{
"อุยกูร์เก่า",
"abjad, alphabet",
aliases = {"Old Uyghur"},
ranges = {
0x0640, 0x0640,
0x10AF2, 0x10AF2,
0x10F70, 0x10F89,
},
-- This should ideally be "vertical-ltr", but getting the CSS right is tricky because it's right-to-left horizontally, but left-to-right vertically. Currently, displaying it vertically causes it to display bottom-to-top.
direction = "rtl",
}
m["Palm"] = process_ranges{
"Palmyrene",
ranges = {
0x10860, 0x1087F,
},
direction = "rtl",
}
m["Pauc"] = process_ranges{
"Pau Cin Hau",
ranges = {
0x11AC0, 0x11AF8,
},
}
m["Perm"] = process_ranges{
"Old Permic",
ranges = {
0x0483, 0x0483,
0x10350, 0x1037A,
},
}
m["Phag"] = process_ranges{
"Phags-pa",
"abugida",
ranges = {
0x1802, 0x1803,
0x1805, 0x1805,
0x200C, 0x200D,
0x202F, 0x202F,
0x3002, 0x3002,
0xA840, 0xA877,
},
direction = "vertical-ltr",
}
m["Phli"] = process_ranges{
"Inscriptional Pahlavi",
"abjad",
ranges = {
0x10B60, 0x10B72,
0x10B78, 0x10B7F,
},
direction = "rtl",
}
m["Phlp"] = process_ranges{
"Psalter Pahlavi",
"abjad",
ranges = {
0x0640, 0x0640,
0x10B80, 0x10B91,
0x10B99, 0x10B9C,
0x10BA9, 0x10BAF,
},
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Phnx"] = process_ranges{
"ฟินิเชีย",
"abjad",
aliases = {"Phoenician"},
ranges = {
0x10900, 0x1091B,
0x1091F, 0x1091F,
},
direction = "rtl",
}
m["Plrd"] = process_ranges{
"Pollard",
"abugida",
aliases = {"Miao"},
ranges = {
0x16F00, 0x16F4A,
0x16F4F, 0x16F87,
0x16F8F, 0x16F9F,
},
}
m["Prti"] = process_ranges{
"Inscriptional Parthian",
ranges = {
0x10B40, 0x10B55,
0x10B58, 0x10B5F,
},
direction = "rtl",
}
m["Ranj"] = {
"Ranjana",
"abugida",
-- Not in Unicode
}
m["Rjng"] = process_ranges{
"Rejang",
"abugida",
ranges = {
0xA930, 0xA953,
0xA95F, 0xA95F,
},
}
m["Rohg"] = process_ranges{
"ฮานิฟ",
"alphabet",
aliases = {"ฮานีฟี", "Hanifi Rohingya", "Hanifi"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0640, 0x0640,
0x06D4, 0x06D4,
0x10D00, 0x10D27,
0x10D30, 0x10D39,
},
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
-- Not in Unicode
}
m["Rumin"] = process_ranges{
"Rumi numerals",
ranges = {
0x10E60, 0x10E7E,
},
character_category = "Rumi numerals",
}
m["Runr"] = process_ranges{
"รูน",
"alphabet",
aliases = {"รูนิก", "Runic"},
ranges = {
0x16A0, 0x16EA,
0x16EE, 0x16F8,
},
}
m["Samr"] = process_ranges{
"Samaritan",
"abjad",
ranges = {
0x0800, 0x082D,
0x0830, 0x083E,
},
direction = "rtl",
}
m["Sarb"] = process_ranges{
"Old South Arabian",
"abjad",
ranges = {
0x10A60, 0x10A7F,
},
direction = "rtl",
}
m["Saur"] = process_ranges{
"Saurashtra",
"abugida",
ranges = {
0xA880, 0xA8C5,
0xA8CE, 0xA8D9,
},
}
m["Semap"] = {
"สัญญาณธง",
"pictography",
aliases = {"flag semaphore"},
}
m["Sgnw"] = process_ranges{
"SignWriting",
"pictography",
aliases = {"Sutton SignWriting"},
ranges = {
0x1D800, 0x1DA8B,
0x1DA9B, 0x1DA9F,
0x1DAA1, 0x1DAAF,
},
translit = false,
}
m["Shaw"] = process_ranges{
"Shavian",
aliases = {"Shaw"},
ranges = {
0x10450, 0x1047F,
},
}
m["Shrd"] = process_ranges{
"ศารทา",
"abugida",
aliases = {"Sharada"},
ranges = {
0x0951, 0x0951,
0x1CD7, 0x1CD7,
0x1CD9, 0x1CD9,
0x1CDC, 0x1CDD,
0x1CE0, 0x1CE0,
0xA830, 0xA835,
0xA838, 0xA838,
0x11180, 0x111DF,
},
}
m["Shui"] = {
"Sui",
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = process_ranges{
"สิทธัม",
"abugida",
aliases = {"Siddham"},
ranges = {
0x11580, 0x115B5,
0x115B8, 0x115DD,
},
}
m["Sidt"] = {
"Sidetic",
"alphabet",
direction = "rtl",
-- Not in Unicode
}
m["Sind"] = process_ranges{
"คุดาบาด",
"abugida",
aliases = {"Khudabadi", "Khudawadi"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x112B0, 0x112EA,
0x112F0, 0x112F9,
},
normalizationFixes = {
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = process_ranges{
"สิงหล",
"abugida",
aliases = {"Sinhalese", "Sinhala"},
ranges = {
0x0964, 0x0965,
0x0D81, 0x0D83,
0x0D85, 0x0D96,
0x0D9A, 0x0DB1,
0x0DB3, 0x0DBB,
0x0DBD, 0x0DBD,
0x0DC0, 0x0DC6,
0x0DCA, 0x0DCA,
0x0DCF, 0x0DD4,
0x0DD6, 0x0DD6,
0x0DD8, 0x0DDF,
0x0DE6, 0x0DEF,
0x0DF2, 0x0DF4,
0x1CF2, 0x1CF2,
0x111E1, 0x111F4,
},
normalizationFixes = {
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = process_ranges{
"ซอกเดีย",
"abjad",
aliases = {"Sogdian"},
ranges = {
0x0640, 0x0640,
0x10F30, 0x10F59,
},
direction = "rtl",
}
m["Sogo"] = process_ranges{
"ซอกเดียเก่า",
"abjad",
aliases = {"Old Sogdian"},
ranges = {
0x10F00, 0x10F27,
},
direction = "rtl",
}
m["Sora"] = process_ranges{
"Sorang Sompeng",
aliases = {"Sora Sompeng"},
ranges = {
0x110D0, 0x110E8,
0x110F0, 0x110F9,
},
}
m["Soyo"] = process_ranges{
"Soyombo",
"abugida",
ranges = {
0x11A50, 0x11AA2,
},
}
m["Sund"] = process_ranges{
"ซุนดา",
"abugida",
aliases = {"Sundanese"},
ranges = {
0x1B80, 0x1BBF,
0x1CC0, 0x1CC7,
},
}
m["Sunu"] = {
"Sunuwar",
"alphabet",
-- Not in Unicode
}
m["Sylo"] = process_ranges{
"สิเลฏินาครี",
"abugida",
aliases = {"สิลอฏินาครี", "Syloti Nagri", "Sylheti Nagari"},
ranges = {
0x0964, 0x0965,
0x09E6, 0x09EF,
0xA800, 0xA82C,
},
}
m["Syrc"] = process_ranges{
"ซีรีแอก",
"abjad", -- more precisely, impure abjad
aliases = {"ซีเรียค", "Syriac"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0640, 0x0640,
0x064B, 0x0655,
0x0670, 0x0670,
0x0700, 0x070D,
0x070F, 0x074A,
0x074D, 0x074F,
0x0860, 0x086A,
0x1DF8, 0x1DF8,
0x1DFA, 0x1DFA,
},
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = process_ranges{
"ตักบันวา",
"abugida",
aliases = {"Tagbanwa"},
ranges = {
0x1735, 0x1736,
0x1760, 0x176C,
0x176E, 0x1770,
0x1772, 0x1773,
},
}
m["Takr"] = process_ranges{
"ฏากรี",
"abugida",
aliases = {"ตากรี", "Takri"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x11680, 0x116B9,
0x116C0, 0x116C9,
},
normalizationFixes = {
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = process_ranges{
"ไทใต้คง",
"abugida",
aliases = {"ไทเหนือ", "ไทเหนือใหม่", "ไตเหลอ", "Tai Nüa", "Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
ranges = {
0x1040, 0x1049,
0x1950, 0x196D,
0x1970, 0x1974,
},
spaces = false,
}
m["Talu"] = process_ranges{
"ไทลื้อใหม่",
"abugida",
aliases = {"New Tai Lue"},
ranges = {
0x1980, 0x19AB,
0x19B0, 0x19C9,
0x19D0, 0x19DA,
0x19DE, 0x19DF,
},
spaces = false,
}
m["Taml"] = process_ranges{
"ทมิฬ",
"abugida",
aliases = {"Tamil"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B82, 0x0B83,
0x0B85, 0x0B8A,
0x0B8E, 0x0B90,
0x0B92, 0x0B95,
0x0B99, 0x0B9A,
0x0B9C, 0x0B9C,
0x0B9E, 0x0B9F,
0x0BA3, 0x0BA4,
0x0BA8, 0x0BAA,
0x0BAE, 0x0BB9,
0x0BBE, 0x0BC2,
0x0BC6, 0x0BC8,
0x0BCA, 0x0BCD,
0x0BD0, 0x0BD0,
0x0BD7, 0x0BD7,
0x0BE6, 0x0BFA,
0x1CDA, 0x1CDA,
0xA8F3, 0xA8F3,
0x11301, 0x11301,
0x11303, 0x11303,
0x1133B, 0x1133C,
0x11FC0, 0x11FF1,
0x11FFF, 0x11FFF,
},
normalizationFixes = {
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = process_ranges{
"ตังกุต",
"logography, syllabary",
aliases = {"Tangut"},
ranges = {
0x16FE0, 0x16FE0,
0x17000, 0x187F7,
0x18800, 0x18AFF,
0x18D00, 0x18D08,
},
spaces = false,
}
m["Tavt"] = process_ranges{
"ไทเวียด",
"abugida",
aliases = {"Tai Viet"},
ranges = {
0xAA80, 0xAAC2,
0xAADB, 0xAADF,
},
spaces = false,
}
m["Tayo"] = {
"Lai Tay",
"abugida",
aliases = {"Tai Yo"},
direction = "vertical-rtl",
-- Not in Unicode
}
m["Telu"] = process_ranges{
"เตลูกู",
"abugida",
aliases = {"Telugu"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C00, 0x0C0C,
0x0C0E, 0x0C10,
0x0C12, 0x0C28,
0x0C2A, 0x0C39,
0x0C3C, 0x0C44,
0x0C46, 0x0C48,
0x0C4A, 0x0C4D,
0x0C55, 0x0C56,
0x0C58, 0x0C5A,
0x0C5D, 0x0C5D,
0x0C60, 0x0C63,
0x0C66, 0x0C6F,
0x0C77, 0x0C7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"เทงกวาร์",
aliases = {"Tengwar"},
}
m["Tfng"] = process_ranges{
"ทิฟินาค",
"abjad, alphabet",
aliases = {"Tifinagh"},
ranges = {
0x2D30, 0x2D67,
0x2D6F, 0x2D70,
0x2D7F, 0x2D7F,
},
otherNames = {"ลิบีโค-เบอร์เบอร์", "เบอร์เบอร์", "Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
}
m["Tglg"] = process_ranges{
"ไบบายิน",
"abugida",
aliases = {"ตากาล็อก", "Baybayin", "Tagalog"},
ranges = {
0x1700, 0x1715,
0x171F, 0x171F,
0x1735, 0x1736,
},
}
m["Thaa"] = process_ranges{
"ทานะ",
"abugida",
aliases = {"Thaana"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0660, 0x0669,
0x0780, 0x07B1,
0xFDF2, 0xFDF2,
0xFDFD, 0xFDFD,
},
direction = "rtl",
}
m["Thai"] = process_ranges{
"ไทย",
"abugida",
aliases = {"Thai"},
ranges = {
0x0E01, 0x0E3A,
0x0E40, 0x0E5B,
},
spaces = false,
translit = false, --only for thwikt
}
m["Tibt"] = process_ranges{
"ทิเบต",
"abugida",
aliases = {"Tibetan"},
ranges = {
0x0F00, 0x0F47,
0x0F49, 0x0F6C,
0x0F71, 0x0F97,
0x0F99, 0x0FBC,
0x0FBE, 0x0FCC,
0x0FCE, 0x0FD4,
0x0FD9, 0x0FDA,
},
normalizationFixes = {
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"Tamyig",
m["Tibt"][2],
ranges = m["Tibt"].ranges,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = process_ranges{
"Tirhuta",
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x1CF2, 0x1CF2,
0xA830, 0xA839,
0x11480, 0x114C7,
0x114D0, 0x114D9,
},
normalizationFixes = {
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = process_ranges{
"Tangsa",
"alphabet",
ranges = {
0x16A70, 0x16ABE,
0x16AC0, 0x16AC9,
},
}
m["Todr"] = {
"Todhri",
"alphabet",
direction = "rtl",
-- Not in Unicode
}
m["Tols"] = {
"Tolong Siki",
"alphabet",
-- Not in Unicode
}
m["Toto"] = process_ranges{
"Toto",
"abugida",
ranges = {
0x1E290, 0x1E2AE,
},
}
m["Tutg"] = {
"Tigalari",
"abugida",
aliases = {"Tulu"},
-- Not in Unicode
}
m["Ugar"] = process_ranges{
"ยูการิต",
"abjad",
aliases = {"ยูการิติก", "Ugaritic"},
ranges = {
0x10380, 0x1039D,
0x1039F, 0x1039F,
},
}
m["Vaii"] = process_ranges{
"ไว",
"syllabary",
aliases = {"Vai"},
ranges = {
0xA500, 0xA62B,
},
}
m["Visp"] = {
"Visible Speech",
"alphabet",
-- Not in Unicode
}
m["Vith"] = process_ranges{
"Vithkuqi",
"alphabet",
ranges = {
0x10570, 0x1057A,
0x1057C, 0x1058A,
0x1058C, 0x10592,
0x10594, 0x10595,
0x10597, 0x105A1,
0x105A3, 0x105B1,
0x105B3, 0x105B9,
0x105BB, 0x105BC,
},
capitalized = true,
}
m["Wara"] = process_ranges{
"วรังจิติ",
aliases = {"วรังกษิติ", "Warang Citi", "Varang Kshiti"},
ranges = {
0x118A0, 0x118F2,
0x118FF, 0x118FF,
},
capitalized = true,
}
m["Wcho"] = process_ranges{
"Wancho",
"alphabet",
ranges = {
0x1E2C0, 0x1E2F9,
0x1E2FF, 0x1E2FF,
},
}
m["Wole"] = {
"Woleai",
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = process_ranges{
"เปอร์เซียเก่า",
aliases = {"Old Persian"},
ranges = {
0x103A0, 0x103C3,
0x103C8, 0x103D5,
},
}
m["Xsux"] = process_ranges{
"คูนิฟอร์ม",
aliases = {"Cuneiform", "Sumero-Akkadian Cuneiform"},
ranges = {
0x12000, 0x12399,
0x12400, 0x1246E,
0x12470, 0x12474,
0x12480, 0x12543,
},
}
m["Yezi"] = process_ranges{
"Yezidi",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0660, 0x0669,
0x10E80, 0x10EA9,
0x10EAB, 0x10EAD,
0x10EB0, 0x10EB1,
},
direction = "rtl",
}
m["Yiii"] = process_ranges{
"อี๋",
"syllabary",
aliases = {"Yi"},
ranges = {
0x3001, 0x3002,
0x3008, 0x3011,
0x3014, 0x301B,
0x30FB, 0x30FB,
0xA000, 0xA48C,
0xA490, 0xA4C6,
0xFF61, 0xFF65,
},
}
m["Zanb"] = process_ranges{
"Zanabazar Square",
ranges = {
0x11A00, 0x11A47,
},
}
m["Zmth"] = process_ranges{
"mathematical notation",
ranges = {
0x00AC, 0x00AC,
0x00B1, 0x00B1,
0x00D7, 0x00D7,
0x00F7, 0x00F7,
0x03D0, 0x03D2,
0x03D5, 0x03D5,
0x03F0, 0x03F1,
0x03F4, 0x03F6,
0x0606, 0x0608,
0x2016, 0x2016,
0x2032, 0x2034,
0x2040, 0x2040,
0x2044, 0x2044,
0x2052, 0x2052,
0x205F, 0x205F,
0x2061, 0x2064,
0x207A, 0x207E,
0x208A, 0x208E,
0x20D0, 0x20DC,
0x20E1, 0x20E1,
0x20E5, 0x20E6,
0x20EB, 0x20EF,
0x2102, 0x2102,
0x2107, 0x2107,
0x210A, 0x2113,
0x2115, 0x2115,
0x2118, 0x211D,
0x2124, 0x2124,
0x2128, 0x2129,
0x212C, 0x212D,
0x212F, 0x2131,
0x2133, 0x2138,
0x213C, 0x2149,
0x214B, 0x214B,
0x2190, 0x21A7,
0x21A9, 0x21AE,
0x21B0, 0x21B1,
0x21B6, 0x21B7,
0x21BC, 0x21DB,
0x21DD, 0x21DD,
0x21E4, 0x21E5,
0x21F4, 0x22FF,
0x2308, 0x230B,
0x2320, 0x2321,
0x237C, 0x237C,
0x239B, 0x23B5,
0x23B7, 0x23B7,
0x23D0, 0x23D0,
0x23DC, 0x23E2,
0x25A0, 0x25A1,
0x25AE, 0x25B7,
0x25BC, 0x25C1,
0x25C6, 0x25C7,
0x25CA, 0x25CB,
0x25CF, 0x25D3,
0x25E2, 0x25E2,
0x25E4, 0x25E4,
0x25E7, 0x25EC,
0x25F8, 0x25FF,
0x2605, 0x2606,
0x2640, 0x2640,
0x2642, 0x2642,
0x2660, 0x2663,
0x266D, 0x266F,
0x27C0, 0x27FF,
0x2900, 0x2AFF,
0x2B30, 0x2B44,
0x2B47, 0x2B4C,
0xFB29, 0xFB29,
0xFE61, 0xFE66,
0xFE68, 0xFE68,
0xFF0B, 0xFF0B,
0xFF1C, 0xFF1E,
0xFF3C, 0xFF3C,
0xFF3E, 0xFF3E,
0xFF5C, 0xFF5C,
0xFF5E, 0xFF5E,
0xFFE2, 0xFFE2,
0xFFE9, 0xFFEC,
0x1D400, 0x1D454,
0x1D456, 0x1D49C,
0x1D49E, 0x1D49F,
0x1D4A2, 0x1D4A2,
0x1D4A5, 0x1D4A6,
0x1D4A9, 0x1D4AC,
0x1D4AE, 0x1D4B9,
0x1D4BB, 0x1D4BB,
0x1D4BD, 0x1D4C3,
0x1D4C5, 0x1D505,
0x1D507, 0x1D50A,
0x1D50D, 0x1D514,
0x1D516, 0x1D51C,
0x1D51E, 0x1D539,
0x1D53B, 0x1D53E,
0x1D540, 0x1D544,
0x1D546, 0x1D546,
0x1D54A, 0x1D550,
0x1D552, 0x1D6A5,
0x1D6A8, 0x1D7CB,
0x1D7CE, 0x1D7FF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
translit = false,
character_category = "Mathematical notation symbols", -- ?
}
m["Zsym"] = process_ranges{
"สัญลักษณ์",
"pictography",
aliases = {"symbol"},
ranges = {
0x20DD, 0x20E0,
0x20E2, 0x20E4,
0x20E7, 0x20EA,
0x20F0, 0x20F0,
0x2100, 0x2101,
0x2103, 0x2106,
0x2108, 0x2109,
0x2114, 0x2114,
0x2116, 0x2117,
0x211E, 0x2123,
0x2125, 0x2127,
0x212A, 0x212B,
0x212E, 0x212E,
0x2132, 0x2132,
0x2139, 0x213B,
0x214A, 0x214A,
0x214C, 0x214F,
0x21A8, 0x21A8,
0x21AF, 0x21AF,
0x21B2, 0x21B5,
0x21B8, 0x21BB,
0x21DC, 0x21DC,
0x21DE, 0x21E3,
0x21E6, 0x21F3,
0x2300, 0x2307,
0x230C, 0x231F,
0x2322, 0x237B,
0x237D, 0x239A,
0x23B6, 0x23B6,
0x23B8, 0x23CF,
0x23D1, 0x23DB,
0x23E3, 0x23FF,
0x2500, 0x259F,
0x25A2, 0x25AD,
0x25B8, 0x25BB,
0x25C2, 0x25C5,
0x25C8, 0x25C9,
0x25CC, 0x25CE,
0x25D4, 0x25E1,
0x25E3, 0x25E3,
0x25E5, 0x25E6,
0x25ED, 0x25F7,
0x2600, 0x2604,
0x2607, 0x263F,
0x2641, 0x2641,
0x2643, 0x265F,
0x2664, 0x266C,
0x2670, 0x27BF,
0x2B00, 0x2B2F,
0x2B45, 0x2B46,
0x2B4D, 0x2B73,
0x2B76, 0x2B95,
0x2B97, 0x2BFF,
0x4DC0, 0x4DFF,
0x1F000, 0x1F02B,
0x1F030, 0x1F093,
0x1F0A0, 0x1F0AE,
0x1F0B1, 0x1F0BF,
0x1F0C1, 0x1F0CF,
0x1F0D1, 0x1F0F5,
0x1F300, 0x1F6D7,
0x1F6DC, 0x1F6EC,
0x1F6F0, 0x1F6FC,
0x1F700, 0x1F776,
0x1F77B, 0x1F7D9,
0x1F7E0, 0x1F7EB,
0x1F7F0, 0x1F7F0,
0x1F800, 0x1F80B,
0x1F810, 0x1F847,
0x1F850, 0x1F859,
0x1F860, 0x1F887,
0x1F890, 0x1F8AD,
0x1F8B0, 0x1F8B1,
0x1F900, 0x1FA53,
0x1FA60, 0x1FA6D,
0x1FA70, 0x1FA7C,
0x1FA80, 0x1FA88,
0x1FA90, 0x1FABD,
0x1FABF, 0x1FAC5,
0x1FACE, 0x1FADB,
0x1FAE0, 0x1FAE8,
0x1FAF0, 0x1FAF8,
0x1FB00, 0x1FB92,
0x1FB94, 0x1FBCA,
0x1FBF0, 0x1FBF9,
},
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"ยังไม่กำหนด",
aliases = {"undetermined"},
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"ยังไม่มีรหัส",
aliases = {"uncoded"},
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of.
m["Hrkt"] = process_ranges{
"คานะ",
"syllabary",
aliases = {"Kana", "Japanese syllabaries"},
ranges = union(
m["Hira"].ranges,
m["Kana"].ranges
),
spaces = false,
}
m["Jpan"] = process_ranges{
"ญี่ปุ่น",
"logography, syllabary",
aliases = {"Japanese"},
ranges = union(
m["Hrkt"].ranges,
m["Hani"].ranges,
m["Latn"].ranges
),
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = process_ranges{
"เกาหลี",
"logography, syllabary",
aliases = {"Korean"},
ranges = union(
m["Hang"].ranges,
m["Hani"].ranges
),
}
return m
ar0n1s13p5qp3po2ffge7fvaypzwcbs
1908590
1908589
2024-04-26T04:44:15Z
Octahedron80
267
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Common.css]].
]=]
local concat = table.concat
local insert = table.insert
local remove = table.remove
local select = select
local sort = table.sort
local u = require("Module:string utilities").char
------------------------------------------------------------------------------------
--
-- Helper functions
--
------------------------------------------------------------------------------------
-- Note: a[2] > b[2] means opens are sorted before closes if otherwise equal.
local function sort_ranges(a, b)
return a[1] < b[1] or a[1] == b[1] and a[2] > b[2]
end
-- Returns the union of two or more range tables.
local function union(...)
local ranges = {}
for i = 1, select("#", ...) do
local argt = select(i, ...)
for j, v in ipairs(argt) do
insert(ranges, {v, j % 2 == 1 and 1 or -1})
end
end
sort(ranges, sort_ranges)
local ret, i = {}, 0
for _, range in ipairs(ranges) do
i = i + range[2]
if i == 0 and range[2] == -1 then -- close
insert(ret, range[1])
elseif i == 1 and range[2] == 1 then -- open
if ret[#ret] and range[1] <= ret[#ret] + 1 then
remove(ret) -- merge adjacent ranges
else
insert(ret, range[1])
end
end
end
return ret
end
-- Adds the `characters` key, which is determined by a script's `ranges` table.
local function process_ranges(sc)
local ranges, chars = sc.ranges, {}
for i = 2, #ranges, 2 do
if ranges[i] == ranges[i - 1] then
insert(chars, u(ranges[i]))
else
insert(chars, u(ranges[i - 1]))
if ranges[i] > ranges[i - 1] + 1 then
insert(chars, "-")
end
insert(chars, u(ranges[i]))
end
end
sc.characters = concat(chars)
ranges.n = #ranges
return sc
end
------------------------------------------------------------------------------------
--
-- Data
--
------------------------------------------------------------------------------------
local m = {}
m["Adlm"] = process_ranges{
"อัดลัม",
"alphabet",
aliases = {"Adlam"},
ranges = {
0x061F, 0x061F,
0x0640, 0x0640,
0x1E900, 0x1E94B,
0x1E950, 0x1E959,
0x1E95E, 0x1E95F,
},
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"อาฟากา",
"syllabary",
aliases = {"Afaka"},
-- Not in Unicode
}
m["Aghb"] = process_ranges{
"Caucasian Albanian",
"alphabet",
ranges = {
0x10530, 0x10563,
0x1056F, 0x1056F,
},
}
m["Ahom"] = process_ranges{
"อาหม",
"abugida",
aliases = {"อะหม", "Ahom"},
ranges = {
0x11700, 0x1171A,
0x1171D, 0x1172B,
0x11730, 0x11746,
},
}
m["Arab"] = process_ranges{
"อาหรับ",
"abjad", -- more precisely, impure abjad
aliases = {"อารบิก", "อาระบิก", "Arabic"},
varieties = {{"ยาวี", "Jawi"}, {"Nastaliq", "Nastaleeq"}},
ranges = {
0x0600, 0x06FF,
0x0750, 0x077F,
0x0870, 0x088E,
0x0890, 0x0891,
0x0898, 0x08E1,
0x08E3, 0x08FF,
0xFB50, 0xFBC2,
0xFBD3, 0xFD8F,
0xFD92, 0xFDC7,
0xFDCF, 0xFDCF,
0xFDF0, 0xFDFF,
0xFE70, 0xFE74,
0xFE76, 0xFEFC,
0x102E0, 0x102FB,
0x10E60, 0x10E7E,
0x10EFD, 0x10EFF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
direction = "rtl",
normalizationFixes = {
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"เปอร์โซ-อาหรับ", "Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = m["fa-Arab"]
m["ku-Arab"] = m["fa-Arab"]
m["ms-Arab"] = m["kk-Arab"]
m["mzn-Arab"] = m["fa-Arab"]
m["ota-Arab"] = m["fa-Arab"]
m["pa-Arab"] = {
"ชาห์มุขี",
m["Arab"][2],
aliases = {"Shahmukhi"},
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"อารบิก", "อาระบิก", "Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = m["fa-Arab"]
m["sd-Arab"] = m["fa-Arab"]
m["tt-Arab"] = m["fa-Arab"]
m["ug-Arab"] = m["fa-Arab"]
m["ur-Arab"] = m["fa-Arab"]
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = process_ranges{
"แอราเมอิกจักรวรรดิ",
"abjad",
aliases = {"Imperial Aramaic"},
ranges = {
0x10840, 0x10855,
0x10857, 0x1085F,
},
direction = "rtl",
}
m["Armn"] = process_ranges{
"อาร์มีเนีย",
"alphabet",
aliases = {"อาร์เมเนีย", "Armenian"},
ranges = {
0x0531, 0x0556,
0x0559, 0x058A,
0x058D, 0x058F,
0xFB13, 0xFB17,
},
capitalized = true,
}
m["Avst"] = process_ranges{
"อเวสตะ",
"alphabet",
aliases = {"Avestan"},
ranges = {
0x10B00, 0x10B35,
0x10B39, 0x10B3F,
},
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
m["Avst"][2],
aliases = m["Avst"].aliases,
ranges = m["Avst"].ranges,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = process_ranges{
"บาหลี",
"abugida",
aliases = {"Balinese"},
ranges = {
0x1B00, 0x1B4C,
0x1B50, 0x1B7E,
},
}
m["Bamu"] = process_ranges{
"บามุม",
"syllabary",
aliases = {"Bamum"},
ranges = {
0xA6A0, 0xA6F7,
0x16800, 0x16A38,
},
}
m["Bass"] = process_ranges{
"บัสซา",
"alphabet",
aliases = {"วาห์", "Bassa", "Bassa Vah", "Vah"},
ranges = {
0x16AD0, 0x16AED,
0x16AF0, 0x16AF5,
},
}
m["Batk"] = process_ranges{
"บาตัก",
"abugida",
aliases = {"Batak"},
ranges = {
0x1BC0, 0x1BF3,
0x1BFC, 0x1BFF,
},
}
m["Beng"] = process_ranges{
"เบงกอล",
"abugida",
aliases = {"เบงกาลี", "บังลา", "Bengali"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09B0,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09EF,
0x09F2, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = {
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = process_ranges{
"อัสสัม",
m["Beng"][2],
otherNames = {"เบงกอล-อัสสัม", "เบงกาลี-อัสสัม", "นาครีตะวันออก", "Assamese", "Bengali-Assamese", "Eastern Nagari"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09AF,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = process_ranges{
"ไภกษุกี",
"abugida",
aliases = {"Bhaiksuki"},
ranges = {
0x11C00, 0x11C08,
0x11C0A, 0x11C36,
0x11C38, 0x11C45,
0x11C50, 0x11C6C,
},
}
m["Blis"] = {
"Blissymbols",
"logography",
aliases = {"Blissymbolics"},
-- Not in Unicode
}
m["Bopo"] = process_ranges{
"จู้อิน",
"semisyllabary",
aliases = {"จู้อินฝูเฮ่า", "ปอพอมอฟอ", "ปัวพัวมัวฟัว", "Zhuyin", "Zhuyin Fuhao", "Bopomofo"},
ranges = {
0x02EA, 0x02EB,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302A, 0x302D,
0x3030, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3105, 0x312F,
0x31A0, 0x31BF,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
},
}
m["Brah"] = process_ranges{
"พราหมี",
"abugida",
aliases = {"พราหฺมี", "Brahmi"},
ranges = {
0x11000, 0x1104D,
0x11052, 0x11075,
0x1107F, 0x1107F,
},
normalizationFixes = {
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = process_ranges{
"เบรลล์",
"alphabet",
aliases = {"Braille"},
ranges = {
0x2800, 0x28FF,
},
}
m["Bugi"] = process_ranges{
"บูกิส",
"abugida",
aliases = {"ลนตารา", "Buginese", "Lontara"},
ranges = {
0x1A00, 0x1A1B,
0x1A1E, 0x1A1F,
0xA9CF, 0xA9CF,
},
}
m["Buhd"] = process_ranges{
"บูฮิด",
"abugida",
aliases = {"Buhid"},
ranges = {
0x1735, 0x1736,
0x1740, 0x1751,
0x1752, 0x1753,
},
}
m["Cakm"] = process_ranges{
"จักมา",
"abugida",
aliases = {"Chakma"},
ranges = {
0x09E6, 0x09EF,
0x1040, 0x1049,
0x11100, 0x11134,
0x11136, 0x11147,
},
}
m["Cans"] = process_ranges{
"Canadian syllabics",
"abugida",
ranges = {
0x1400, 0x167F,
0x18B0, 0x18F5,
0x11AB0, 0x11ABF,
},
}
m["Cari"] = process_ranges{
"คาเรีย",
"alphabet",
aliases = {"Carian"},
ranges = {
0x102A0, 0x102D0,
},
}
m["Cham"] = process_ranges{
"จาม",
"abugida",
aliases = {"Cham"},
ranges = {
0xAA00, 0xAA36,
0xAA40, 0xAA4D,
0xAA50, 0xAA59,
0xAA5C, 0xAA5F,
},
}
m["Cher"] = process_ranges{
"เชโรกี",
"syllabary",
aliases = {"Cherokee"},
ranges = {
0x13A0, 0x13F5,
0x13F8, 0x13FD,
0xAB70, 0xABBF,
},
}
m["Chis"] = {
"Chisoi",
"abugida",
-- Not in Unicode
}
m["Chrs"] = process_ranges{
"Chorasmian",
"abjad",
ranges = {
0x10FB0, 0x10FCB,
},
direction = "rtl",
}
m["Copt"] = process_ranges{
"คอปติก",
"alphabet",
aliases = {"Coptic"},
ranges = {
0x03E2, 0x03EF,
0x2C80, 0x2CF3,
0x2CF9, 0x2CFF,
0x102E0, 0x102FB,
},
capitalized = true,
}
m["Cpmn"] = process_ranges{
"Cypro-Minoan",
"syllabary",
aliases = {"Cypro Minoan"},
ranges = {
0x10100, 0x10101,
0x12F90, 0x12FF2,
},
}
m["Cprt"] = process_ranges{
"ไซปรัส",
"syllabary",
aliases = {"ไซเปรียท", "Cypriot"},
ranges = {
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
0x10800, 0x10805,
0x10808, 0x10808,
0x1080A, 0x10835,
0x10837, 0x10838,
0x1083C, 0x1083C,
0x1083F, 0x1083F,
},
direction = "rtl",
}
m["Cyrl"] = process_ranges{
"ซีริลลิก",
"alphabet",
aliases = {"Cyrillic"},
ranges = {
0x0400, 0x052F,
0x1C80, 0x1C88,
0x1D2B, 0x1D2B,
0x1D78, 0x1D78,
0x1DF8, 0x1DF8,
0x2DE0, 0x2DFF,
0x2E43, 0x2E43,
0xA640, 0xA69F,
0xFE2E, 0xFE2F,
0x1E030, 0x1E06D,
0x1E08F, 0x1E08F,
},
capitalized = true,
}
m["Cyrs"] = {
"ซีริลลิกเก่า",
m["Cyrl"][2],
aliases = {"ซีริลลิกช่วงต้น", "Old Cyrillic", "Early Cyrillic"},
ranges = m["Cyrl"].ranges,
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
normalizationFixes = {
from = {"Ѹ", "ѹ"},
to = {"Ꙋ", "ꙋ"}
},
}
m["Deva"] = process_ranges{
"เทวนาครี",
"abugida",
aliases = {"Devanagari"},
ranges = {
0x0900, 0x097F,
0x1CD0, 0x1CF6,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0xA830, 0xA839,
0xA8E0, 0xA8FF,
0x11B00, 0x11B09,
},
normalizationFixes = {
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = process_ranges{
"ดิเวส อกุรุ",
"abugida",
aliases = {"ดิเวหิ อกุรุ", "Dhives Akuru", "Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
ranges = {
0x11900, 0x11906,
0x11909, 0x11909,
0x1190C, 0x11913,
0x11915, 0x11916,
0x11918, 0x11935,
0x11937, 0x11938,
0x1193B, 0x11946,
0x11950, 0x11959,
},
}
m["Dogr"] = process_ranges{
"โฑครี",
"abugida",
aliases = {"Dogri", "Dogra"},
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11800, 0x1183B,
},
}
m["Dsrt"] = process_ranges{
"Deseret",
"alphabet",
ranges = {
0x10400, 0x1044F,
},
capitalized = true,
}
m["Dupl"] = process_ranges{
"Duployan",
"alphabet",
ranges = {
0x1BC00, 0x1BC6A,
0x1BC70, 0x1BC7C,
0x1BC80, 0x1BC88,
0x1BC90, 0x1BC99,
0x1BC9C, 0x1BCA3,
},
}
m["Egyd"] = {
"Demotic",
"abjad, logography",
-- Not in Unicode
}
m["Egyh"] = {
"Hieratic",
"abjad, logography",
-- Unified with Egyptian hieroglyphic in Unicode
}
m["Egyp"] = process_ranges{
"ไฮเออโรกลีฟอียิปต์",
"abjad, logography",
aliases = {"Egyptian hieroglyphic"},
ranges = {
0x13000, 0x13455,
},
varieties = {"Hieratic"},
wikipedia_article = "ไฮเออโรกลีฟอียิปต์",
normalizationFixes = {
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = process_ranges{
"เอลบาซาน",
"alphabet",
aliases = {"Elbasan"},
ranges = {
0x10500, 0x10527,
},
}
m["Elym"] = process_ranges{
"Elymaic",
"abjad",
ranges = {
0x10FE0, 0x10FF6,
},
direction = "rtl",
}
m["Ethi"] = process_ranges{
"เอธิโอเปีย",
"abugida",
aliases = {"กืออึซ", "Ethiopic", "Ge'ez"},
ranges = {
0x1200, 0x1248,
0x124A, 0x124D,
0x1250, 0x1256,
0x1258, 0x1258,
0x125A, 0x125D,
0x1260, 0x1288,
0x128A, 0x128D,
0x1290, 0x12B0,
0x12B2, 0x12B5,
0x12B8, 0x12BE,
0x12C0, 0x12C0,
0x12C2, 0x12C5,
0x12C8, 0x12D6,
0x12D8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135A,
0x135D, 0x137C,
0x1380, 0x1399,
0x2D80, 0x2D96,
0x2DA0, 0x2DA6,
0x2DA8, 0x2DAE,
0x2DB0, 0x2DB6,
0x2DB8, 0x2DBE,
0x2DC0, 0x2DC6,
0x2DC8, 0x2DCE,
0x2DD0, 0x2DD6,
0x2DD8, 0x2DDE,
0xAB01, 0xAB06,
0xAB09, 0xAB0E,
0xAB11, 0xAB16,
0xAB20, 0xAB26,
0xAB28, 0xAB2E,
0x1E7E0, 0x1E7E6,
0x1E7E8, 0x1E7EB,
0x1E7ED, 0x1E7EE,
0x1E7F0, 0x1E7FE,
},
}
m["Gara"] = {
"Garay",
"alphabet",
capitalized = true,
direction = "rtl",
-- Not in Unicode
}
m["Geok"] = process_ranges{
"Khutsuri",
"alphabet",
ranges = { -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
0x10A0, 0x10C5,
0x10C7, 0x10C7,
0x10CD, 0x10CD,
0x10FB, 0x10FB,
0x2D00, 0x2D25,
0x2D27, 0x2D27,
0x2D2D, 0x2D2D,
},
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = process_ranges{
"จอร์เจีย",
"alphabet",
aliases = {"Georgian"},
ranges = { -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
0x10D0, 0x10FF,
0x1C90, 0x1CBA,
0x1CBD, 0x1CBF,
},
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = process_ranges{
"กลาโกลิติก",
"alphabet",
aliases = {"Glagolitic"},
ranges = {
0x0484, 0x0484,
0x0487, 0x0487,
0x2C00, 0x2C5F,
0x2E43, 0x2E43,
0xA66F, 0xA66F,
0x1E000, 0x1E006,
0x1E008, 0x1E018,
0x1E01B, 0x1E021,
0x1E023, 0x1E024,
0x1E026, 0x1E02A,
},
capitalized = true,
}
m["Gong"] = process_ranges{
"คุญชลาโคณฑี",
"abugida",
aliases = {"Gunjala Gondi"},
ranges = {
0x0964, 0x0965,
0x11D60, 0x11D65,
0x11D67, 0x11D68,
0x11D6A, 0x11D8E,
0x11D90, 0x11D91,
0x11D93, 0x11D98,
0x11DA0, 0x11DA9,
},
}
m["Gonm"] = process_ranges{
"มสรามโคณฑี",
"abugida",
aliases = {"Masaram Gondi"},
ranges = {
0x0964, 0x0965,
0x11D00, 0x11D06,
0x11D08, 0x11D09,
0x11D0B, 0x11D36,
0x11D3A, 0x11D3A,
0x11D3C, 0x11D3D,
0x11D3F, 0x11D47,
0x11D50, 0x11D59,
},
}
m["Goth"] = process_ranges{
"กอท",
"alphabet",
aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"},
ranges = {
0x10330, 0x1034A,
},
wikipedia_article = "Gothic alphabet",
}
m["Gran"] = process_ranges{
"ครันถะ",
"abugida",
aliases = {"Grantha"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0BE6, 0x0BF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CF2, 0x1CF4,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0x11300, 0x11303,
0x11305, 0x1130C,
0x1130F, 0x11310,
0x11313, 0x11328,
0x1132A, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
0x1133B, 0x11344,
0x11347, 0x11348,
0x1134B, 0x1134D,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135D, 0x11363,
0x11366, 0x1136C,
0x11370, 0x11374,
0x11FD0, 0x11FD1,
0x11FD3, 0x11FD3,
},
}
m["Grek"] = process_ranges{
"กรีก",
"alphabet",
aliases = {"Greek"},
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DBF,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = true,
}
m["Polyt"] = process_ranges{
"กรีก",
m["Grek"][2],
aliases = m["Grek"].aliases,
ranges = union(m["Grek"].ranges, {
0x1F00, 0x1F15,
0x1F18, 0x1F1D,
0x1F20, 0x1F45,
0x1F48, 0x1F4D,
0x1F50, 0x1F57,
0x1F59, 0x1F59,
0x1F5B, 0x1F5B,
0x1F5D, 0x1F5D,
0x1F5F, 0x1F7D,
0x1F80, 0x1FB4,
0x1FB6, 0x1FC4,
0x1FC6, 0x1FD3,
0x1FD6, 0x1FDB,
0x1FDD, 0x1FEF,
0x1FF2, 0x1FF4,
0x1FF6, 0x1FFE,
}),
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = process_ranges{
"คุชราต",
"abugida",
aliases = {"คุชราตี", "Gujarati"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A81, 0x0A83,
0x0A85, 0x0A8D,
0x0A8F, 0x0A91,
0x0A93, 0x0AA8,
0x0AAA, 0x0AB0,
0x0AB2, 0x0AB3,
0x0AB5, 0x0AB9,
0x0ABC, 0x0AC5,
0x0AC7, 0x0AC9,
0x0ACB, 0x0ACD,
0x0AD0, 0x0AD0,
0x0AE0, 0x0AE3,
0x0AE6, 0x0AF1,
0x0AF9, 0x0AFF,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Gukh"] = {
"Khema",
"abugida",
aliases = {"Gurung Khema", "Khema Phri", "Khema Lipi"},
-- Not in Unicode
}
m["Guru"] = process_ranges{
"คุรมุขี",
"abugida",
aliases = {"กูร์มูคี", "เกอร์มุกห์", "Gurmukhi"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A01, 0x0A03,
0x0A05, 0x0A0A,
0x0A0F, 0x0A10,
0x0A13, 0x0A28,
0x0A2A, 0x0A30,
0x0A32, 0x0A33,
0x0A35, 0x0A36,
0x0A38, 0x0A39,
0x0A3C, 0x0A3C,
0x0A3E, 0x0A42,
0x0A47, 0x0A48,
0x0A4B, 0x0A4D,
0x0A51, 0x0A51,
0x0A59, 0x0A5C,
0x0A5E, 0x0A5E,
0x0A66, 0x0A76,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = process_ranges{
"ฮันกึล",
"syllabary",
aliases = {"ฮังกึล", "Hangul", "Hangeul"},
ranges = {
0x1100, 0x11FF,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302E, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3131, 0x318E,
0x3200, 0x321E,
0x3260, 0x327E,
0xA960, 0xA97C,
0xAC00, 0xD7A3,
0xD7B0, 0xD7C6,
0xD7CB, 0xD7FB,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFFA0, 0xFFBE,
0xFFC2, 0xFFC7,
0xFFCA, 0xFFCF,
0xFFD2, 0xFFD7,
0xFFDA, 0xFFDC,
},
}
m["Hani"] = process_ranges{
"จีน",
"logography",
aliases = {"ฮั่น", "Han"},
ranges = {
0x2E80, 0x2E99,
0x2E9B, 0x2EF3,
0x2F00, 0x2FD5,
0x3001, 0x3003,
0x3005, 0x3011,
0x3013, 0x301F,
0x3021, 0x302D,
0x3030, 0x3030,
0x3037, 0x303F,
0x3190, 0x319F,
0x31C0, 0x31E3,
0x3220, 0x3247,
0x3280, 0x32B0,
0x32C0, 0x32CB,
0x30FB, 0x30FB,
0x32FF, 0x32FF,
0x3358, 0x3370,
0x337B, 0x337F,
0x33E0, 0x33FE,
0x3400, 0x4DBF,
0x4E00, 0x9FFF,
0xA700, 0xA707,
0xF900, 0xFA6D,
0xFA70, 0xFAD9,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0x16FE2, 0x16FE3,
0x16FF0, 0x16FF1,
0x1D360, 0x1D371,
0x1F250, 0x1F251,
0x20000, 0x2A6DF,
0x2A700, 0x2B739,
0x2B740, 0x2B81D,
0x2B820, 0x2CEA1,
0x2CEB0, 0x2EBE0,
0x2EBF0, 0x2EE5D,
0x2F800, 0x2FA1D,
0x30000, 0x3134A,
0x31350, 0x323AF,
},
varieties = {{"ฮั่นจื่อ", "Hanzi"}, {"คันจิ", "Kanji"}, {"ฮันจา", "Hanja"}, {"จื๋อโนม", "Chu Nom"}},
spaces = false,
}
m["Hans"] = {
"จีนตัวย่อ",
m["Hani"][2],
aliases = {"Simplified Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"จีนตัวเต็ม",
m["Hani"][2],
aliases = {"Traditional Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = process_ranges{
"ฮานูโนโอ",
"abugida",
aliases = {"Hanunoo"},
ranges = {
0x1720, 0x1736,
},
}
m["Hatr"] = process_ranges{
"Hatran",
"abjad",
ranges = {
0x108E0, 0x108F2,
0x108F4, 0x108F5,
0x108FB, 0x108FF,
},
direction = "rtl",
}
m["Hebr"] = process_ranges{
"ฮีบรู",
"abjad", -- more precisely, impure abjad
aliases = {"Hebrew"},
ranges = {
0x0591, 0x05C7,
0x05D0, 0x05EA,
0x05EF, 0x05F4,
0x2135, 0x2138,
0xFB1D, 0xFB36,
0xFB38, 0xFB3C,
0xFB3E, 0xFB3E,
0xFB40, 0xFB41,
0xFB43, 0xFB44,
0xFB46, 0xFB4F,
},
direction = "rtl",
}
m["Hira"] = process_ranges{
"ฮิรางานะ",
"syllabary",
aliases = {"ฮิระงะนะ", "Hiragana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3041, 0x3096,
0x3099, 0x30A0,
0x30FB, 0x30FC,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFF70, 0xFF70,
0xFF9E, 0xFF9F,
0x1B001, 0x1B11F,
0x1B132, 0x1B132,
0x1B150, 0x1B152,
0x1F200, 0x1F200,
},
varieties = {{"เฮ็นไตงานะ", "Hentaigana"}},
spaces = false,
}
m["Hluw"] = process_ranges{
"ไฮเออโรกลีฟอานาโตเลีย",
"logography, syllabary",
aliases = {"Anatolian Hieroglyphs"},
ranges = {
0x14400, 0x14646,
},
wikipedia_article = "ไฮเออโรกลีฟอานาโตเลีย",
}
m["Hmng"] = process_ranges{
"Pahawh Hmong",
"semisyllabary",
aliases = {"ม้ง", "Hmong"},
ranges = {
0x16B00, 0x16B45,
0x16B50, 0x16B59,
0x16B5B, 0x16B61,
0x16B63, 0x16B77,
0x16B7D, 0x16B8F,
},
}
m["Hmnp"] = process_ranges{
"Nyiakeng Puachue Hmong",
"alphabet",
ranges = {
0x1E100, 0x1E12C,
0x1E130, 0x1E13D,
0x1E140, 0x1E149,
0x1E14E, 0x1E14F,
},
}
m["Hung"] = process_ranges{
"ฮังการีเก่า",
"alphabet",
aliases = {"รูนฮังการี", "Old Hungarian", "Hungarian runic"},
ranges = {
0x10C80, 0x10CB2,
0x10CC0, 0x10CF2,
0x10CFA, 0x10CFF,
},
capitalized = true,
direction = "rtl",
}
m["Ibrn"] = {
"ไอบีเรีย",
"semisyllabary",
aliases = {"Iberian"},
-- Not in Unicode
}
m["Imag"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Inds"] = {
"สินธุ",
aliases = {"อินดัส", "Indus", "Harappan", "Indus Valley"},
}
m["Ipach"] = {
"สัทอักษรสากล",
aliases = {"International Phonetic Alphabet", "IPA"},
}
m["Ital"] = process_ranges{
"อิตาลิกเก่า",
"alphabet",
aliases = {"Old Italic"},
ranges = {
0x10300, 0x10323,
0x1032D, 0x1032F,
},
}
m["Java"] = process_ranges{
"ชวา",
"abugida",
aliases = {"Javanese"},
ranges = {
0xA980, 0xA9CD,
0xA9CF, 0xA9D9,
0xA9DE, 0xA9DF,
},
}
m["Jurc"] = {
"จูร์เชน",
"logography",
aliases = {"Jurchen"},
spaces = false,
}
m["Kali"] = process_ranges{
"กะยา",
"abugida",
aliases = {"Kayah Li"},
ranges = {
0xA900, 0xA92F,
},
}
m["Kana"] = process_ranges{
"คาตากานะ",
"syllabary",
aliases = {"คะตะกะนะ", "Katakana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3099, 0x309C,
0x30A0, 0x30FF,
0x31F0, 0x31FF,
0x32D0, 0x32FE,
0x3300, 0x3357,
0xFE45, 0xFE46,
0xFF61, 0xFF9F,
0x1AFF0, 0x1AFF3,
0x1AFF5, 0x1AFFB,
0x1AFFD, 0x1AFFE,
0x1B000, 0x1B000,
0x1B120, 0x1B122,
0x1B155, 0x1B155,
0x1B164, 0x1B167,
},
spaces = false,
}
m["Kawi"] = process_ranges{
"กวิ",
"abugida",
aliases = {"Kawi"},
ranges = {
0x11F00, 0x11F10,
0x11F12, 0x11F3A,
0x11F3E, 0x11F59,
},
}
m["Khar"] = process_ranges{
"ขโรษฐี",
"abugida",
aliases = {"Kharoshthi"},
ranges = {
0x10A00, 0x10A03,
0x10A05, 0x10A06,
0x10A0C, 0x10A13,
0x10A15, 0x10A17,
0x10A19, 0x10A35,
0x10A38, 0x10A3A,
0x10A3F, 0x10A48,
0x10A50, 0x10A58,
},
direction = "rtl",
}
m["Khmr"] = process_ranges{
"เขมร",
"abugida",
aliases = {"Khmer"},
ranges = {
0x1780, 0x17DD,
0x17E0, 0x17E9,
0x17F0, 0x17F9,
0x19E0, 0x19FF,
},
spaces = false,
normalizationFixes = {
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = process_ranges{
"Khojki",
"abugida",
ranges = {
0x0AE6, 0x0AEF,
0xA830, 0xA839,
0x11200, 0x11211,
0x11213, 0x11241,
},
normalizationFixes = {
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Kitl"] = {
"คีตันใหญ่",
"logography",
aliases = {"Khitan Large"},
spaces = false,
}
m["Kits"] = process_ranges{
"คีตันเล็ก",
"logography, syllabary",
aliases = {"Khitan Small"},
ranges = {
0x16FE4, 0x16FE4,
0x18B00, 0x18CD5,
},
spaces = false,
}
m["Knda"] = process_ranges{
"กันนาดา",
"abugida",
aliases = {"Kannada"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C80, 0x0C8C,
0x0C8E, 0x0C90,
0x0C92, 0x0CA8,
0x0CAA, 0x0CB3,
0x0CB5, 0x0CB9,
0x0CBC, 0x0CC4,
0x0CC6, 0x0CC8,
0x0CCA, 0x0CCD,
0x0CD5, 0x0CD6,
0x0CDD, 0x0CDE,
0x0CE0, 0x0CE3,
0x0CE6, 0x0CEF,
0x0CF1, 0x0CF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0x1CF4, 0x1CF4,
0xA830, 0xA835,
},
normalizationFixes = {
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
"syllabary",
-- Not in Unicode
}
m["Krai"] = {
"Kirat Rai",
"abugida",
aliases = {"Rai", "Khambu Rai", "Rai Barṇamālā", "Kirat Khambu Rai"},
-- Not in Unicode
}
m["Kthi"] = process_ranges{
"ไกถี",
"abugida",
aliases = {"Kaithi"},
ranges = {
0x0966, 0x096F,
0xA830, 0xA839,
0x11080, 0x110C2,
0x110CD, 0x110CD,
},
}
m["Lana"] = process_ranges{
"ไทธรรม",
"abugida",
aliases = {"ธรรม", "ตัวเมือง", "ล้านนา", "Tai Tham", "Tham", "Tua Mueang", "Lanna"},
ranges = {
0x1A20, 0x1A5E,
0x1A60, 0x1A7C,
0x1A7F, 0x1A89,
0x1A90, 0x1A99,
0x1AA0, 0x1AAD,
},
spaces = false,
}
m["Laoo"] = process_ranges{
"ลาว",
"abugida",
aliases = {"Lao"},
ranges = {
0x0E81, 0x0E82,
0x0E84, 0x0E84,
0x0E86, 0x0E8A,
0x0E8C, 0x0EA3,
0x0EA5, 0x0EA5,
0x0EA7, 0x0EBD,
0x0EC0, 0x0EC4,
0x0EC6, 0x0EC6,
0x0EC8, 0x0ECE,
0x0ED0, 0x0ED9,
0x0EDC, 0x0EDF,
},
spaces = false,
}
m["Latn"] = process_ranges{
"ละติน",
"alphabet",
aliases = {"ลาติน", "โรมัน", "Latin", "Roman"},
ranges = {
0x0041, 0x005A,
0x0061, 0x007A,
0x00AA, 0x00AA,
0x00BA, 0x00BA,
0x00C0, 0x00D6,
0x00D8, 0x00F6,
0x00F8, 0x02B8,
0x02C0, 0x02C1,
0x02E0, 0x02E4,
0x0363, 0x036F,
0x0485, 0x0486,
0x0951, 0x0952,
0x10FB, 0x10FB,
0x1D00, 0x1D25,
0x1D2C, 0x1D5C,
0x1D62, 0x1D65,
0x1D6B, 0x1D77,
0x1D79, 0x1DBE,
0x1E00, 0x1EFF,
0x202F, 0x202F,
0x2071, 0x2071,
0x207F, 0x207F,
0x2090, 0x209C,
0x20F0, 0x20F0,
0x2100, 0x2125,
0x2128, 0x2128,
0x212A, 0x2134,
0x2139, 0x213B,
0x2141, 0x214E,
0x2160, 0x2188,
0x2C60, 0x2C7F,
0xA700, 0xA707,
0xA722, 0xA787,
0xA78B, 0xA7CA,
0xA7D0, 0xA7D1,
0xA7D3, 0xA7D3,
0xA7D5, 0xA7D9,
0xA7F2, 0xA7FF,
0xA92E, 0xA92E,
0xAB30, 0xAB5A,
0xAB5C, 0xAB64,
0xAB66, 0xAB69,
0xFB00, 0xFB06,
0xFF21, 0xFF3A,
0xFF41, 0xFF5A,
0x10780, 0x10785,
0x10787, 0x107B0,
0x107B2, 0x107BA,
0x1DF00, 0x1DF1E,
0x1DF25, 0x1DF2A,
},
varieties = {{"รูมี", "Rumi"}, {"โรมาจิ", "โรมะจิ", "Romaji", "Rōmaji"}, "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"ฟรักทูร์",
m["Latn"][2],
aliases = {"Fraktur"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"แบล็กเลตเทอร์", "Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"แกลิก",
m["Latn"][2],
aliases = {"Gaelic"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"ไอริช", "Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
"abugida",
-- Not in Unicode
}
m["Lepc"] = process_ranges{
"เลปชา",
"abugida",
aliases = {"Lepcha"},
ranges = {
0x1C00, 0x1C37,
0x1C3B, 0x1C49,
0x1C4D, 0x1C4F,
},
}
m["Limb"] = process_ranges{
"ลิมบู",
"abugida",
aliases = {"Limbu"},
ranges = {
0x0965, 0x0965,
0x1900, 0x191E,
0x1920, 0x192B,
0x1930, 0x193B,
0x1940, 0x1940,
0x1944, 0x194F,
},
}
m["Lina"] = process_ranges{
"ลิเนียร์เอ",
aliases = {"Linear A"},
ranges = {
0x10107, 0x10133,
0x10600, 0x10736,
0x10740, 0x10755,
0x10760, 0x10767,
},
}
m["Linb"] = process_ranges{
"ลิเนียร์บี",
aliases = {"Linear B"},
ranges = {
0x10000, 0x1000B,
0x1000D, 0x10026,
0x10028, 0x1003A,
0x1003C, 0x1003D,
0x1003F, 0x1004D,
0x10050, 0x1005D,
0x10080, 0x100FA,
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
},
}
m["Lisu"] = process_ranges{
"ลีสู่",
"alphabet",
aliases = {"ฟราเซอร์", "Lisu", "Fraser"},
ranges = {
0xA4D0, 0xA4FF,
0x11FB0, 0x11FB0,
},
normalizationFixes = {
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
"syllabary",
-- Not in Unicode
}
m["Lyci"] = process_ranges{
"ลิเชีย",
"alphabet",
aliases = {"Lycian"},
ranges = {
0x10280, 0x1029C,
},
}
m["Lydi"] = process_ranges{
"ลิเดีย",
"alphabet",
aliases = {"Lydian"},
ranges = {
0x10920, 0x10939,
0x1093F, 0x1093F,
},
direction = "rtl",
}
m["Mahj"] = process_ranges{
"Mahajani",
"abugida",
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11150, 0x11176,
},
}
m["Maka"] = process_ranges{
"ลนตารา",
"abugida",
aliases = {"Lontara", "Makasar"},
ranges = {
0x11EE0, 0x11EF8,
},
}
m["Mand"] = process_ranges{
"มันดาอิก",
aliases = {"Mandaic", "Mandaean"},
ranges = {
0x0640, 0x0640,
0x0840, 0x085B,
0x085E, 0x085E,
},
direction = "rtl",
}
m["Mani"] = process_ranges{
"Manichaean",
"abjad",
ranges = {
0x0640, 0x0640,
0x10AC0, 0x10AE6,
0x10AEB, 0x10AF6,
},
direction = "rtl",
}
m["Marc"] = process_ranges{
"Marchen",
"abugida",
ranges = {
0x11C70, 0x11C8F,
0x11C92, 0x11CA7,
0x11CA9, 0x11CB6,
},
}
m["Maya"] = process_ranges{
"มายา",
aliases = {"มายัน", "Maya", "Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
ranges = {
0x1D2E0, 0x1D2F3,
},
}
m["Medf"] = process_ranges{
"Medefaidrin",
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
ranges = {
0x16E40, 0x16E9A,
},
capitalized = true,
}
m["Mend"] = process_ranges{
"Mende",
aliases = {"Mende Kikakui"},
ranges = {
0x1E800, 0x1E8C4,
0x1E8C7, 0x1E8D6,
},
direction = "rtl",
}
m["Merc"] = process_ranges{
"Meroitic cursive",
"abugida",
ranges = {
0x109A0, 0x109B7,
0x109BC, 0x109CF,
0x109D2, 0x109FF,
},
direction = "rtl",
}
m["Mero"] = process_ranges{
"Meroitic hieroglyphic",
"abugida",
ranges = {
0x10980, 0x1099F,
},
direction = "rtl",
}
m["Mlym"] = process_ranges{
"มลยาฬัม",
"abugida",
aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0D00, 0x0D0C,
0x0D0E, 0x0D10,
0x0D12, 0x0D44,
0x0D46, 0x0D48,
0x0D4A, 0x0D4F,
0x0D54, 0x0D63,
0x0D66, 0x0D7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0xA830, 0xA832,
},
normalizationFixes = {
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = process_ranges{
"โมฑี",
"abugida",
aliases = {"Modi"},
ranges = {
0xA830, 0xA839,
0x11600, 0x11644,
0x11650, 0x11659,
},
normalizationFixes = {
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = process_ranges{
"มองโกเลีย",
"alphabet",
aliases = {"Mongolian", "Mongol bichig", "Hudum Mongol bichig"},
ranges = {
0x1800, 0x1805,
0x180A, 0x1819,
0x1820, 0x1842,
0x1878, 0x1878,
0x1880, 0x1897,
0x18A6, 0x18A6,
0x18A9, 0x18A9,
0x200C, 0x200D,
0x202F, 0x202F,
0x11660, 0x11668,
},
direction = "vertical-ltr",
}
m["mnc-Mong"] = process_ranges{
"แมนจู",
m["Mong"][2],
aliases = {"Manchu"},
ranges = {
0x1801, 0x1801,
0x1804, 0x1804,
0x1808, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x185D,
0x185F, 0x1861,
0x1864, 0x1869,
0x186C, 0x1871,
0x1873, 0x1877,
0x1880, 0x1888,
0x188F, 0x188F,
0x189A, 0x18A5,
0x18A8, 0x18A8,
0x18AA, 0x18AA,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["sjo-Mong"] = process_ranges{
"ซิเบ",
m["Mong"][2],
aliases = {"Xibe", "Sibe"},
ranges = {
0x1804, 0x1804,
0x1807, 0x1807,
0x180A, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x1828,
0x182A, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x1872,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "mnc-Mong",
}
m["xwo-Mong"] = process_ranges{
"Clear Script",
m["Mong"][2],
aliases = {"Todo", "Todo bichig"},
ranges = {
0x1800, 0x1801,
0x1804, 0x1806,
0x180A, 0x1820,
0x1828, 0x1828,
0x182F, 0x1831,
0x1834, 0x1834,
0x1837, 0x1838,
0x183A, 0x183B,
0x1840, 0x1840,
0x1843, 0x185C,
0x1880, 0x1887,
0x1889, 0x188F,
0x1894, 0x1894,
0x1896, 0x1899,
0x18A7, 0x18A7,
0x200C, 0x200D,
0x202F, 0x202F,
0x11669, 0x1166C,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["Moon"] = {
"Moon",
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"รหัสมอร์ส",
aliases = {"Morse code"},
}
m["Mroo"] = process_ranges{
"มโร",
aliases = {"Mro"},
ranges = {
0x16A40, 0x16A5E,
0x16A60, 0x16A69,
0x16A6E, 0x16A6F,
},
}
m["Mtei"] = process_ranges{
"มณีปุระ",
"abugida",
aliases = {"ไมไตมะเยก", "มีไตมะเยก", "Manipuri", "Meitei Mayek", "Meetei Mayek"},
ranges = {
0xAAE0, 0xAAF6,
0xABC0, 0xABED,
0xABF0, 0xABF9,
},
}
m["Mult"] = process_ranges{
"Multani",
"abugida",
ranges = {
0x0A66, 0x0A6F,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128A, 0x1128D,
0x1128F, 0x1129D,
0x1129F, 0x112A9,
},
}
m["Music"] = process_ranges{
"สัญกรณ์ดนตรี",
"pictography",
aliases = {"Musical notation"},
ranges = {
0x2669, 0x266F,
0x1D100, 0x1D126,
0x1D129, 0x1D1EA,
},
translit = false,
}
m["Mymr"] = process_ranges{
"พม่า",
"abugida",
aliases = {"เมียนมา", "Burmese", "Myanmar"},
ranges = {
0x1000, 0x109F,
0xA92E, 0xA92E,
0xA9E0, 0xA9FE,
0xAA60, 0xAA7F,
},
spaces = false,
}
m["Nagm"] = process_ranges{
"Nag Mundari",
"alphabet",
ranges = {
0x1E4D0, 0x1E4F9,
},
}
m["Nand"] = process_ranges{
"นันทินาครี",
"abugida",
aliases = {"Nandinagari"},
ranges = {
0x0964, 0x0965,
0x0CE6, 0x0CEF,
0x1CE9, 0x1CE9,
0x1CF2, 0x1CF2,
0x1CFA, 0x1CFA,
0xA830, 0xA835,
0x119A0, 0x119A7,
0x119AA, 0x119D7,
0x119DA, 0x119E4,
},
}
m["Narb"] = process_ranges{
"Old North Arabian",
"abjad",
ranges = {
0x10A80, 0x10A9F,
},
direction = "rtl",
}
m["Nbat"] = process_ranges{
"Nabataean",
"abjad",
aliases = {"Nabatean"},
ranges = {
0x10880, 0x1089E,
0x108A7, 0x108AF,
},
direction = "rtl",
}
m["Newa"] = process_ranges{
"Newa",
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
ranges = {
0x11400, 0x1145B,
0x1145D, 0x11461,
},
}
m["Nkdb"] = {
"Dongba",
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = process_ranges{
"N'Ko",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x07C0, 0x07FA,
0x07FD, 0x07FF,
0xFD3E, 0xFD3F,
},
direction = "rtl",
}
m["None"] = {
"ไม่ระบุ",
aliases = {"Unspecified"},
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Nshu"] = process_ranges{
"Nüshu",
"syllabary",
aliases = {"Nushu"},
ranges = {
0x16FE1, 0x16FE1,
0x1B170, 0x1B2FB,
},
spaces = false,
}
m["Ogam"] = process_ranges{
"Ogham",
ranges = {
0x1680, 0x169C,
},
}
m["Olck"] = process_ranges{
"Ol Chiki",
ranges = {
0x1C50, 0x1C7F,
},
}
m["Onao"] = {
"Ol Onal",
"alphabet",
-- Not in Unicode
}
m["Orkh"] = process_ranges{
"Orkhon runes",
aliases = {"Old Turkic"},
ranges = {
0x10C00, 0x10C48,
},
direction = "rtl",
}
m["Orya"] = process_ranges{
"โอริยา",
"abugida",
aliases = {"โอเดีย", "Oriya", "Odia"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B01, 0x0B03,
0x0B05, 0x0B0C,
0x0B0F, 0x0B10,
0x0B13, 0x0B28,
0x0B2A, 0x0B30,
0x0B32, 0x0B33,
0x0B35, 0x0B39,
0x0B3C, 0x0B44,
0x0B47, 0x0B48,
0x0B4B, 0x0B4D,
0x0B55, 0x0B57,
0x0B5C, 0x0B5D,
0x0B5F, 0x0B63,
0x0B66, 0x0B77,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = process_ranges{
"Osage",
ranges = {
0x104B0, 0x104D3,
0x104D8, 0x104FB,
},
capitalized = true,
}
m["Osma"] = process_ranges{
"อุสมาน",
aliases = {"Osmanya"},
ranges = {
0x10480, 0x1049D,
0x104A0, 0x104A9,
},
}
m["Ougr"] = process_ranges{
"อุยกูร์เก่า",
"abjad, alphabet",
aliases = {"Old Uyghur"},
ranges = {
0x0640, 0x0640,
0x10AF2, 0x10AF2,
0x10F70, 0x10F89,
},
-- This should ideally be "vertical-ltr", but getting the CSS right is tricky because it's right-to-left horizontally, but left-to-right vertically. Currently, displaying it vertically causes it to display bottom-to-top.
direction = "rtl",
}
m["Palm"] = process_ranges{
"Palmyrene",
ranges = {
0x10860, 0x1087F,
},
direction = "rtl",
}
m["Pauc"] = process_ranges{
"Pau Cin Hau",
ranges = {
0x11AC0, 0x11AF8,
},
}
m["Perm"] = process_ranges{
"Old Permic",
ranges = {
0x0483, 0x0483,
0x10350, 0x1037A,
},
}
m["Phag"] = process_ranges{
"Phags-pa",
"abugida",
ranges = {
0x1802, 0x1803,
0x1805, 0x1805,
0x200C, 0x200D,
0x202F, 0x202F,
0x3002, 0x3002,
0xA840, 0xA877,
},
direction = "vertical-ltr",
}
m["Phli"] = process_ranges{
"Inscriptional Pahlavi",
"abjad",
ranges = {
0x10B60, 0x10B72,
0x10B78, 0x10B7F,
},
direction = "rtl",
}
m["Phlp"] = process_ranges{
"Psalter Pahlavi",
"abjad",
ranges = {
0x0640, 0x0640,
0x10B80, 0x10B91,
0x10B99, 0x10B9C,
0x10BA9, 0x10BAF,
},
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Phnx"] = process_ranges{
"ฟินิเชีย",
"abjad",
aliases = {"Phoenician"},
ranges = {
0x10900, 0x1091B,
0x1091F, 0x1091F,
},
direction = "rtl",
}
m["Plrd"] = process_ranges{
"Pollard",
"abugida",
aliases = {"Miao"},
ranges = {
0x16F00, 0x16F4A,
0x16F4F, 0x16F87,
0x16F8F, 0x16F9F,
},
}
m["Prti"] = process_ranges{
"Inscriptional Parthian",
ranges = {
0x10B40, 0x10B55,
0x10B58, 0x10B5F,
},
direction = "rtl",
}
m["Ranj"] = {
"Ranjana",
"abugida",
-- Not in Unicode
}
m["Rjng"] = process_ranges{
"Rejang",
"abugida",
ranges = {
0xA930, 0xA953,
0xA95F, 0xA95F,
},
}
m["Rohg"] = process_ranges{
"ฮานิฟ",
"alphabet",
aliases = {"ฮานีฟี", "Hanifi Rohingya", "Hanifi"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0640, 0x0640,
0x06D4, 0x06D4,
0x10D00, 0x10D27,
0x10D30, 0x10D39,
},
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
-- Not in Unicode
}
m["Rumin"] = process_ranges{
"Rumi numerals",
ranges = {
0x10E60, 0x10E7E,
},
character_category = "Rumi numerals",
}
m["Runr"] = process_ranges{
"รูน",
"alphabet",
aliases = {"รูนิก", "Runic"},
ranges = {
0x16A0, 0x16EA,
0x16EE, 0x16F8,
},
}
m["Samr"] = process_ranges{
"Samaritan",
"abjad",
ranges = {
0x0800, 0x082D,
0x0830, 0x083E,
},
direction = "rtl",
}
m["Sarb"] = process_ranges{
"Old South Arabian",
"abjad",
ranges = {
0x10A60, 0x10A7F,
},
direction = "rtl",
}
m["Saur"] = process_ranges{
"Saurashtra",
"abugida",
ranges = {
0xA880, 0xA8C5,
0xA8CE, 0xA8D9,
},
}
m["Semap"] = {
"สัญญาณธง",
"pictography",
aliases = {"flag semaphore"},
}
m["Sgnw"] = process_ranges{
"SignWriting",
"pictography",
aliases = {"Sutton SignWriting"},
ranges = {
0x1D800, 0x1DA8B,
0x1DA9B, 0x1DA9F,
0x1DAA1, 0x1DAAF,
},
translit = false,
}
m["Shaw"] = process_ranges{
"Shavian",
aliases = {"Shaw"},
ranges = {
0x10450, 0x1047F,
},
}
m["Shrd"] = process_ranges{
"ศารทา",
"abugida",
aliases = {"Sharada"},
ranges = {
0x0951, 0x0951,
0x1CD7, 0x1CD7,
0x1CD9, 0x1CD9,
0x1CDC, 0x1CDD,
0x1CE0, 0x1CE0,
0xA830, 0xA835,
0xA838, 0xA838,
0x11180, 0x111DF,
},
}
m["Shui"] = {
"Sui",
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = process_ranges{
"สิทธัม",
"abugida",
aliases = {"Siddham"},
ranges = {
0x11580, 0x115B5,
0x115B8, 0x115DD,
},
}
m["Sidt"] = {
"Sidetic",
"alphabet",
direction = "rtl",
-- Not in Unicode
}
m["Sind"] = process_ranges{
"คุดาบาด",
"abugida",
aliases = {"Khudabadi", "Khudawadi"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x112B0, 0x112EA,
0x112F0, 0x112F9,
},
normalizationFixes = {
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = process_ranges{
"สิงหล",
"abugida",
aliases = {"Sinhalese", "Sinhala"},
ranges = {
0x0964, 0x0965,
0x0D81, 0x0D83,
0x0D85, 0x0D96,
0x0D9A, 0x0DB1,
0x0DB3, 0x0DBB,
0x0DBD, 0x0DBD,
0x0DC0, 0x0DC6,
0x0DCA, 0x0DCA,
0x0DCF, 0x0DD4,
0x0DD6, 0x0DD6,
0x0DD8, 0x0DDF,
0x0DE6, 0x0DEF,
0x0DF2, 0x0DF4,
0x1CF2, 0x1CF2,
0x111E1, 0x111F4,
},
normalizationFixes = {
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = process_ranges{
"ซอกเดีย",
"abjad",
aliases = {"Sogdian"},
ranges = {
0x0640, 0x0640,
0x10F30, 0x10F59,
},
direction = "rtl",
}
m["Sogo"] = process_ranges{
"ซอกเดียเก่า",
"abjad",
aliases = {"Old Sogdian"},
ranges = {
0x10F00, 0x10F27,
},
direction = "rtl",
}
m["Sora"] = process_ranges{
"Sorang Sompeng",
aliases = {"Sora Sompeng"},
ranges = {
0x110D0, 0x110E8,
0x110F0, 0x110F9,
},
}
m["Soyo"] = process_ranges{
"Soyombo",
"abugida",
ranges = {
0x11A50, 0x11AA2,
},
}
m["Sund"] = process_ranges{
"ซุนดา",
"abugida",
aliases = {"Sundanese"},
ranges = {
0x1B80, 0x1BBF,
0x1CC0, 0x1CC7,
},
}
m["Sunu"] = {
"Sunuwar",
"alphabet",
-- Not in Unicode
}
m["Sylo"] = process_ranges{
"สิเลฏินาครี",
"abugida",
aliases = {"สิลอฏินาครี", "Syloti Nagri", "Sylheti Nagari"},
ranges = {
0x0964, 0x0965,
0x09E6, 0x09EF,
0xA800, 0xA82C,
},
}
m["Syrc"] = process_ranges{
"ซีรีแอก",
"abjad", -- more precisely, impure abjad
aliases = {"ซีเรียค", "Syriac"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0640, 0x0640,
0x064B, 0x0655,
0x0670, 0x0670,
0x0700, 0x070D,
0x070F, 0x074A,
0x074D, 0x074F,
0x0860, 0x086A,
0x1DF8, 0x1DF8,
0x1DFA, 0x1DFA,
},
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = process_ranges{
"ตักบันวา",
"abugida",
aliases = {"Tagbanwa"},
ranges = {
0x1735, 0x1736,
0x1760, 0x176C,
0x176E, 0x1770,
0x1772, 0x1773,
},
}
m["Takr"] = process_ranges{
"ฏากรี",
"abugida",
aliases = {"ตากรี", "Takri"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x11680, 0x116B9,
0x116C0, 0x116C9,
},
normalizationFixes = {
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = process_ranges{
"ไทใต้คง",
"abugida",
aliases = {"ไทเหนือ", "ไทเหนือใหม่", "ไตเหลอ", "Tai Nüa", "Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
ranges = {
0x1040, 0x1049,
0x1950, 0x196D,
0x1970, 0x1974,
},
spaces = false,
}
m["Talu"] = process_ranges{
"ไทลื้อใหม่",
"abugida",
aliases = {"New Tai Lue"},
ranges = {
0x1980, 0x19AB,
0x19B0, 0x19C9,
0x19D0, 0x19DA,
0x19DE, 0x19DF,
},
spaces = false,
}
m["Taml"] = process_ranges{
"ทมิฬ",
"abugida",
aliases = {"Tamil"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B82, 0x0B83,
0x0B85, 0x0B8A,
0x0B8E, 0x0B90,
0x0B92, 0x0B95,
0x0B99, 0x0B9A,
0x0B9C, 0x0B9C,
0x0B9E, 0x0B9F,
0x0BA3, 0x0BA4,
0x0BA8, 0x0BAA,
0x0BAE, 0x0BB9,
0x0BBE, 0x0BC2,
0x0BC6, 0x0BC8,
0x0BCA, 0x0BCD,
0x0BD0, 0x0BD0,
0x0BD7, 0x0BD7,
0x0BE6, 0x0BFA,
0x1CDA, 0x1CDA,
0xA8F3, 0xA8F3,
0x11301, 0x11301,
0x11303, 0x11303,
0x1133B, 0x1133C,
0x11FC0, 0x11FF1,
0x11FFF, 0x11FFF,
},
normalizationFixes = {
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = process_ranges{
"ตังกุต",
"logography, syllabary",
aliases = {"Tangut"},
ranges = {
0x16FE0, 0x16FE0,
0x17000, 0x187F7,
0x18800, 0x18AFF,
0x18D00, 0x18D08,
},
spaces = false,
}
m["Tavt"] = process_ranges{
"ไทเวียด",
"abugida",
aliases = {"Tai Viet"},
ranges = {
0xAA80, 0xAAC2,
0xAADB, 0xAADF,
},
spaces = false,
}
m["Tayo"] = {
"Lai Tay",
"abugida",
aliases = {"Tai Yo"},
direction = "vertical-rtl",
-- Not in Unicode
}
m["Telu"] = process_ranges{
"เตลูกู",
"abugida",
aliases = {"Telugu"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C00, 0x0C0C,
0x0C0E, 0x0C10,
0x0C12, 0x0C28,
0x0C2A, 0x0C39,
0x0C3C, 0x0C44,
0x0C46, 0x0C48,
0x0C4A, 0x0C4D,
0x0C55, 0x0C56,
0x0C58, 0x0C5A,
0x0C5D, 0x0C5D,
0x0C60, 0x0C63,
0x0C66, 0x0C6F,
0x0C77, 0x0C7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"เทงกวาร์",
aliases = {"Tengwar"},
}
m["Tfng"] = process_ranges{
"ทิฟินาค",
"abjad, alphabet",
aliases = {"Tifinagh"},
ranges = {
0x2D30, 0x2D67,
0x2D6F, 0x2D70,
0x2D7F, 0x2D7F,
},
otherNames = {"ลิบีโค-เบอร์เบอร์", "เบอร์เบอร์", "Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
}
m["Tglg"] = process_ranges{
"ไบบายิน",
"abugida",
aliases = {"ตากาล็อก", "Baybayin", "Tagalog"},
ranges = {
0x1700, 0x1715,
0x171F, 0x171F,
0x1735, 0x1736,
},
}
m["Thaa"] = process_ranges{
"ทานะ",
"abugida",
aliases = {"Thaana"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0660, 0x0669,
0x0780, 0x07B1,
0xFDF2, 0xFDF2,
0xFDFD, 0xFDFD,
},
direction = "rtl",
}
m["Thai"] = process_ranges{
"ไทย",
"abugida",
aliases = {"Thai"},
ranges = {
0x0E01, 0x0E3A,
0x0E40, 0x0E5B,
},
spaces = false,
translit = false, --only for thwikt
}
m["Tibt"] = process_ranges{
"ทิเบต",
"abugida",
aliases = {"Tibetan"},
ranges = {
0x0F00, 0x0F47,
0x0F49, 0x0F6C,
0x0F71, 0x0F97,
0x0F99, 0x0FBC,
0x0FBE, 0x0FCC,
0x0FCE, 0x0FD4,
0x0FD9, 0x0FDA,
},
normalizationFixes = {
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"Tamyig",
m["Tibt"][2],
ranges = m["Tibt"].ranges,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = process_ranges{
"Tirhuta",
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x1CF2, 0x1CF2,
0xA830, 0xA839,
0x11480, 0x114C7,
0x114D0, 0x114D9,
},
normalizationFixes = {
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = process_ranges{
"Tangsa",
"alphabet",
ranges = {
0x16A70, 0x16ABE,
0x16AC0, 0x16AC9,
},
}
m["Todr"] = {
"Todhri",
"alphabet",
direction = "rtl",
-- Not in Unicode
}
m["Tols"] = {
"Tolong Siki",
"alphabet",
-- Not in Unicode
}
m["Toto"] = process_ranges{
"Toto",
"abugida",
ranges = {
0x1E290, 0x1E2AE,
},
}
m["Tutg"] = {
"Tigalari",
"abugida",
aliases = {"Tulu"},
-- Not in Unicode
}
m["Ugar"] = process_ranges{
"ยูการิต",
"abjad",
aliases = {"ยูการิติก", "Ugaritic"},
ranges = {
0x10380, 0x1039D,
0x1039F, 0x1039F,
},
}
m["Vaii"] = process_ranges{
"ไว",
"syllabary",
aliases = {"Vai"},
ranges = {
0xA500, 0xA62B,
},
}
m["Visp"] = {
"Visible Speech",
"alphabet",
-- Not in Unicode
}
m["Vith"] = process_ranges{
"Vithkuqi",
"alphabet",
ranges = {
0x10570, 0x1057A,
0x1057C, 0x1058A,
0x1058C, 0x10592,
0x10594, 0x10595,
0x10597, 0x105A1,
0x105A3, 0x105B1,
0x105B3, 0x105B9,
0x105BB, 0x105BC,
},
capitalized = true,
}
m["Wara"] = process_ranges{
"วรังจิติ",
aliases = {"วรังกษิติ", "Warang Citi", "Varang Kshiti"},
ranges = {
0x118A0, 0x118F2,
0x118FF, 0x118FF,
},
capitalized = true,
}
m["Wcho"] = process_ranges{
"Wancho",
"alphabet",
ranges = {
0x1E2C0, 0x1E2F9,
0x1E2FF, 0x1E2FF,
},
}
m["Wole"] = {
"Woleai",
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = process_ranges{
"เปอร์เซียเก่า",
aliases = {"Old Persian"},
ranges = {
0x103A0, 0x103C3,
0x103C8, 0x103D5,
},
}
m["Xsux"] = process_ranges{
"คูนิฟอร์ม",
aliases = {"Cuneiform", "Sumero-Akkadian Cuneiform"},
ranges = {
0x12000, 0x12399,
0x12400, 0x1246E,
0x12470, 0x12474,
0x12480, 0x12543,
},
}
m["Yezi"] = process_ranges{
"Yezidi",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0660, 0x0669,
0x10E80, 0x10EA9,
0x10EAB, 0x10EAD,
0x10EB0, 0x10EB1,
},
direction = "rtl",
}
m["Yiii"] = process_ranges{
"อี๋",
"syllabary",
aliases = {"Yi"},
ranges = {
0x3001, 0x3002,
0x3008, 0x3011,
0x3014, 0x301B,
0x30FB, 0x30FB,
0xA000, 0xA48C,
0xA490, 0xA4C6,
0xFF61, 0xFF65,
},
}
m["Zanb"] = process_ranges{
"Zanabazar Square",
ranges = {
0x11A00, 0x11A47,
},
}
m["Zmth"] = process_ranges{
"mathematical notation",
ranges = {
0x00AC, 0x00AC,
0x00B1, 0x00B1,
0x00D7, 0x00D7,
0x00F7, 0x00F7,
0x03D0, 0x03D2,
0x03D5, 0x03D5,
0x03F0, 0x03F1,
0x03F4, 0x03F6,
0x0606, 0x0608,
0x2016, 0x2016,
0x2032, 0x2034,
0x2040, 0x2040,
0x2044, 0x2044,
0x2052, 0x2052,
0x205F, 0x205F,
0x2061, 0x2064,
0x207A, 0x207E,
0x208A, 0x208E,
0x20D0, 0x20DC,
0x20E1, 0x20E1,
0x20E5, 0x20E6,
0x20EB, 0x20EF,
0x2102, 0x2102,
0x2107, 0x2107,
0x210A, 0x2113,
0x2115, 0x2115,
0x2118, 0x211D,
0x2124, 0x2124,
0x2128, 0x2129,
0x212C, 0x212D,
0x212F, 0x2131,
0x2133, 0x2138,
0x213C, 0x2149,
0x214B, 0x214B,
0x2190, 0x21A7,
0x21A9, 0x21AE,
0x21B0, 0x21B1,
0x21B6, 0x21B7,
0x21BC, 0x21DB,
0x21DD, 0x21DD,
0x21E4, 0x21E5,
0x21F4, 0x22FF,
0x2308, 0x230B,
0x2320, 0x2321,
0x237C, 0x237C,
0x239B, 0x23B5,
0x23B7, 0x23B7,
0x23D0, 0x23D0,
0x23DC, 0x23E2,
0x25A0, 0x25A1,
0x25AE, 0x25B7,
0x25BC, 0x25C1,
0x25C6, 0x25C7,
0x25CA, 0x25CB,
0x25CF, 0x25D3,
0x25E2, 0x25E2,
0x25E4, 0x25E4,
0x25E7, 0x25EC,
0x25F8, 0x25FF,
0x2605, 0x2606,
0x2640, 0x2640,
0x2642, 0x2642,
0x2660, 0x2663,
0x266D, 0x266F,
0x27C0, 0x27FF,
0x2900, 0x2AFF,
0x2B30, 0x2B44,
0x2B47, 0x2B4C,
0xFB29, 0xFB29,
0xFE61, 0xFE66,
0xFE68, 0xFE68,
0xFF0B, 0xFF0B,
0xFF1C, 0xFF1E,
0xFF3C, 0xFF3C,
0xFF3E, 0xFF3E,
0xFF5C, 0xFF5C,
0xFF5E, 0xFF5E,
0xFFE2, 0xFFE2,
0xFFE9, 0xFFEC,
0x1D400, 0x1D454,
0x1D456, 0x1D49C,
0x1D49E, 0x1D49F,
0x1D4A2, 0x1D4A2,
0x1D4A5, 0x1D4A6,
0x1D4A9, 0x1D4AC,
0x1D4AE, 0x1D4B9,
0x1D4BB, 0x1D4BB,
0x1D4BD, 0x1D4C3,
0x1D4C5, 0x1D505,
0x1D507, 0x1D50A,
0x1D50D, 0x1D514,
0x1D516, 0x1D51C,
0x1D51E, 0x1D539,
0x1D53B, 0x1D53E,
0x1D540, 0x1D544,
0x1D546, 0x1D546,
0x1D54A, 0x1D550,
0x1D552, 0x1D6A5,
0x1D6A8, 0x1D7CB,
0x1D7CE, 0x1D7FF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
translit = false,
character_category = "Mathematical notation symbols", -- ?
}
m["Zsym"] = process_ranges{
"สัญลักษณ์",
"pictography",
aliases = {"symbol"},
ranges = {
0x20DD, 0x20E0,
0x20E2, 0x20E4,
0x20E7, 0x20EA,
0x20F0, 0x20F0,
0x2100, 0x2101,
0x2103, 0x2106,
0x2108, 0x2109,
0x2114, 0x2114,
0x2116, 0x2117,
0x211E, 0x2123,
0x2125, 0x2127,
0x212A, 0x212B,
0x212E, 0x212E,
0x2132, 0x2132,
0x2139, 0x213B,
0x214A, 0x214A,
0x214C, 0x214F,
0x21A8, 0x21A8,
0x21AF, 0x21AF,
0x21B2, 0x21B5,
0x21B8, 0x21BB,
0x21DC, 0x21DC,
0x21DE, 0x21E3,
0x21E6, 0x21F3,
0x2300, 0x2307,
0x230C, 0x231F,
0x2322, 0x237B,
0x237D, 0x239A,
0x23B6, 0x23B6,
0x23B8, 0x23CF,
0x23D1, 0x23DB,
0x23E3, 0x23FF,
0x2500, 0x259F,
0x25A2, 0x25AD,
0x25B8, 0x25BB,
0x25C2, 0x25C5,
0x25C8, 0x25C9,
0x25CC, 0x25CE,
0x25D4, 0x25E1,
0x25E3, 0x25E3,
0x25E5, 0x25E6,
0x25ED, 0x25F7,
0x2600, 0x2604,
0x2607, 0x263F,
0x2641, 0x2641,
0x2643, 0x265F,
0x2664, 0x266C,
0x2670, 0x27BF,
0x2B00, 0x2B2F,
0x2B45, 0x2B46,
0x2B4D, 0x2B73,
0x2B76, 0x2B95,
0x2B97, 0x2BFF,
0x4DC0, 0x4DFF,
0x1F000, 0x1F02B,
0x1F030, 0x1F093,
0x1F0A0, 0x1F0AE,
0x1F0B1, 0x1F0BF,
0x1F0C1, 0x1F0CF,
0x1F0D1, 0x1F0F5,
0x1F300, 0x1F6D7,
0x1F6DC, 0x1F6EC,
0x1F6F0, 0x1F6FC,
0x1F700, 0x1F776,
0x1F77B, 0x1F7D9,
0x1F7E0, 0x1F7EB,
0x1F7F0, 0x1F7F0,
0x1F800, 0x1F80B,
0x1F810, 0x1F847,
0x1F850, 0x1F859,
0x1F860, 0x1F887,
0x1F890, 0x1F8AD,
0x1F8B0, 0x1F8B1,
0x1F900, 0x1FA53,
0x1FA60, 0x1FA6D,
0x1FA70, 0x1FA7C,
0x1FA80, 0x1FA88,
0x1FA90, 0x1FABD,
0x1FABF, 0x1FAC5,
0x1FACE, 0x1FADB,
0x1FAE0, 0x1FAE8,
0x1FAF0, 0x1FAF8,
0x1FB00, 0x1FB92,
0x1FB94, 0x1FBCA,
0x1FBF0, 0x1FBF9,
},
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"ยังไม่กำหนด",
aliases = {"undetermined"},
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"ยังไม่มีรหัส",
aliases = {"uncoded"},
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of.
m["Hrkt"] = process_ranges{
"คานะ",
"syllabary",
aliases = {"Kana", "Japanese syllabaries"},
ranges = union(
m["Hira"].ranges,
m["Kana"].ranges
),
spaces = false,
}
m["Jpan"] = process_ranges{
"ญี่ปุ่น",
"logography, syllabary",
aliases = {"Japanese"},
ranges = union(
m["Hrkt"].ranges,
m["Hani"].ranges,
m["Latn"].ranges
),
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = process_ranges{
"เกาหลี",
"logography, syllabary",
aliases = {"Korean"},
ranges = union(
m["Hang"].ranges,
m["Hani"].ranges
),
}
return m
jjebwgdt1fgo9r6y9bm1qf01xmoav28
1908591
1908590
2024-04-26T04:57:06Z
Octahedron80
267
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Common.css]].
]=]
local concat = table.concat
local insert = table.insert
local remove = table.remove
local select = select
local sort = table.sort
local u = require("Module:string utilities").char
------------------------------------------------------------------------------------
--
-- Helper functions
--
------------------------------------------------------------------------------------
-- Note: a[2] > b[2] means opens are sorted before closes if otherwise equal.
local function sort_ranges(a, b)
return a[1] < b[1] or a[1] == b[1] and a[2] > b[2]
end
-- Returns the union of two or more range tables.
local function union(...)
local ranges = {}
for i = 1, select("#", ...) do
local argt = select(i, ...)
for j, v in ipairs(argt) do
insert(ranges, {v, j % 2 == 1 and 1 or -1})
end
end
sort(ranges, sort_ranges)
local ret, i = {}, 0
for _, range in ipairs(ranges) do
i = i + range[2]
if i == 0 and range[2] == -1 then -- close
insert(ret, range[1])
elseif i == 1 and range[2] == 1 then -- open
if ret[#ret] and range[1] <= ret[#ret] + 1 then
remove(ret) -- merge adjacent ranges
else
insert(ret, range[1])
end
end
end
return ret
end
-- Adds the `characters` key, which is determined by a script's `ranges` table.
local function process_ranges(sc)
local ranges, chars = sc.ranges, {}
for i = 2, #ranges, 2 do
if ranges[i] == ranges[i - 1] then
insert(chars, u(ranges[i]))
else
insert(chars, u(ranges[i - 1]))
if ranges[i] > ranges[i - 1] + 1 then
insert(chars, "-")
end
insert(chars, u(ranges[i]))
end
end
sc.characters = concat(chars)
ranges.n = #ranges
return sc
end
------------------------------------------------------------------------------------
--
-- Data
--
------------------------------------------------------------------------------------
local m = {}
m["Adlm"] = process_ranges{
"อัดลัม",
"alphabet",
aliases = {"Adlam"},
ranges = {
0x061F, 0x061F,
0x0640, 0x0640,
0x1E900, 0x1E94B,
0x1E950, 0x1E959,
0x1E95E, 0x1E95F,
},
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"อาฟากา",
"syllabary",
aliases = {"Afaka"},
-- Not in Unicode
}
m["Aghb"] = process_ranges{
"Caucasian Albanian",
"alphabet",
ranges = {
0x10530, 0x10563,
0x1056F, 0x1056F,
},
}
m["Ahom"] = process_ranges{
"อาหม",
"abugida",
aliases = {"อะหม", "Ahom"},
ranges = {
0x11700, 0x1171A,
0x1171D, 0x1172B,
0x11730, 0x11746,
},
}
m["Arab"] = process_ranges{
"อาหรับ",
"abjad", -- more precisely, impure abjad
aliases = {"อารบิก", "อาระบิก", "Arabic"},
varieties = {{"ยาวี", "Jawi"}, {"Nastaliq", "Nastaleeq"}},
ranges = {
0x0600, 0x06FF,
0x0750, 0x077F,
0x0870, 0x088E,
0x0890, 0x0891,
0x0898, 0x08E1,
0x08E3, 0x08FF,
0xFB50, 0xFBC2,
0xFBD3, 0xFD8F,
0xFD92, 0xFDC7,
0xFDCF, 0xFDCF,
0xFDF0, 0xFDFF,
0xFE70, 0xFE74,
0xFE76, 0xFEFC,
0x102E0, 0x102FB,
0x10E60, 0x10E7E,
0x10EFD, 0x10EFF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
direction = "rtl",
normalizationFixes = {
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"เปอร์โซ-อาหรับ", "Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"อาหรับ",
m["Arab"][2],
aliases = m["Arab"].aliases,
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = m["fa-Arab"]
m["ku-Arab"] = m["fa-Arab"]
m["ms-Arab"] = m["kk-Arab"]
m["mzn-Arab"] = m["fa-Arab"]
m["ota-Arab"] = m["fa-Arab"]
m["pa-Arab"] = {
"ชาห์มุขี",
m["Arab"][2],
aliases = {"Shahmukhi"},
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"อารบิก", "อาระบิก", "Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = m["fa-Arab"]
m["sd-Arab"] = m["fa-Arab"]
m["tt-Arab"] = m["fa-Arab"]
m["ug-Arab"] = m["fa-Arab"]
m["ur-Arab"] = m["fa-Arab"]
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = process_ranges{
"แอราเมอิกจักรวรรดิ",
"abjad",
aliases = {"Imperial Aramaic"},
ranges = {
0x10840, 0x10855,
0x10857, 0x1085F,
},
direction = "rtl",
}
m["Armn"] = process_ranges{
"อาร์มีเนีย",
"alphabet",
aliases = {"อาร์เมเนีย", "Armenian"},
ranges = {
0x0531, 0x0556,
0x0559, 0x058A,
0x058D, 0x058F,
0xFB13, 0xFB17,
},
capitalized = true,
}
m["Avst"] = process_ranges{
"อเวสตะ",
"alphabet",
aliases = {"Avestan"},
ranges = {
0x10B00, 0x10B35,
0x10B39, 0x10B3F,
},
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
m["Avst"][2],
aliases = m["Avst"].aliases,
ranges = m["Avst"].ranges,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = process_ranges{
"บาหลี",
"abugida",
aliases = {"Balinese"},
ranges = {
0x1B00, 0x1B4C,
0x1B50, 0x1B7E,
},
}
m["Bamu"] = process_ranges{
"บามุม",
"syllabary",
aliases = {"Bamum"},
ranges = {
0xA6A0, 0xA6F7,
0x16800, 0x16A38,
},
}
m["Bass"] = process_ranges{
"บัสซา",
"alphabet",
aliases = {"วาห์", "Bassa", "Bassa Vah", "Vah"},
ranges = {
0x16AD0, 0x16AED,
0x16AF0, 0x16AF5,
},
}
m["Batk"] = process_ranges{
"บาตัก",
"abugida",
aliases = {"Batak"},
ranges = {
0x1BC0, 0x1BF3,
0x1BFC, 0x1BFF,
},
}
m["Beng"] = process_ranges{
"เบงกอล",
"abugida",
aliases = {"เบงกาลี", "บังลา", "Bengali"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09B0,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09EF,
0x09F2, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = {
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = process_ranges{
"อัสสัม",
m["Beng"][2],
otherNames = {"เบงกอล-อัสสัม", "เบงกาลี-อัสสัม", "นาครีตะวันออก", "Assamese", "Bengali-Assamese", "Eastern Nagari"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09AF,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = process_ranges{
"ไภกษุกี",
"abugida",
aliases = {"Bhaiksuki"},
ranges = {
0x11C00, 0x11C08,
0x11C0A, 0x11C36,
0x11C38, 0x11C45,
0x11C50, 0x11C6C,
},
}
m["Blis"] = {
"Blissymbols",
"logography",
aliases = {"Blissymbolics"},
-- Not in Unicode
}
m["Bopo"] = process_ranges{
"จู้อิน",
"semisyllabary",
aliases = {"จู้อินฝูเฮ่า", "ปอพอมอฟอ", "ปัวพัวมัวฟัว", "Zhuyin", "Zhuyin Fuhao", "Bopomofo"},
ranges = {
0x02EA, 0x02EB,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302A, 0x302D,
0x3030, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3105, 0x312F,
0x31A0, 0x31BF,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
},
}
m["Brah"] = process_ranges{
"พราหมี",
"abugida",
aliases = {"พราหฺมี", "Brahmi"},
ranges = {
0x11000, 0x1104D,
0x11052, 0x11075,
0x1107F, 0x1107F,
},
normalizationFixes = {
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = process_ranges{
"เบรลล์",
"alphabet",
aliases = {"Braille"},
ranges = {
0x2800, 0x28FF,
},
}
m["Bugi"] = process_ranges{
"บูกิส",
"abugida",
aliases = {"ลนตารา", "Buginese", "Lontara"},
ranges = {
0x1A00, 0x1A1B,
0x1A1E, 0x1A1F,
0xA9CF, 0xA9CF,
},
}
m["Buhd"] = process_ranges{
"บูฮิด",
"abugida",
aliases = {"Buhid"},
ranges = {
0x1735, 0x1736,
0x1740, 0x1751,
0x1752, 0x1753,
},
}
m["Cakm"] = process_ranges{
"จักมา",
"abugida",
aliases = {"Chakma"},
ranges = {
0x09E6, 0x09EF,
0x1040, 0x1049,
0x11100, 0x11134,
0x11136, 0x11147,
},
}
m["Cans"] = process_ranges{
"Canadian syllabics",
"abugida",
ranges = {
0x1400, 0x167F,
0x18B0, 0x18F5,
0x11AB0, 0x11ABF,
},
}
m["Cari"] = process_ranges{
"คาเรีย",
"alphabet",
aliases = {"Carian"},
ranges = {
0x102A0, 0x102D0,
},
}
m["Cham"] = process_ranges{
"จาม",
"abugida",
aliases = {"Cham"},
ranges = {
0xAA00, 0xAA36,
0xAA40, 0xAA4D,
0xAA50, 0xAA59,
0xAA5C, 0xAA5F,
},
}
m["Cher"] = process_ranges{
"เชโรกี",
"syllabary",
aliases = {"Cherokee"},
ranges = {
0x13A0, 0x13F5,
0x13F8, 0x13FD,
0xAB70, 0xABBF,
},
}
m["Chis"] = {
"Chisoi",
"abugida",
-- Not in Unicode
}
m["Chrs"] = process_ranges{
"Chorasmian",
"abjad",
ranges = {
0x10FB0, 0x10FCB,
},
direction = "rtl",
}
m["Copt"] = process_ranges{
"คอปติก",
"alphabet",
aliases = {"Coptic"},
ranges = {
0x03E2, 0x03EF,
0x2C80, 0x2CF3,
0x2CF9, 0x2CFF,
0x102E0, 0x102FB,
},
capitalized = true,
}
m["Cpmn"] = process_ranges{
"Cypro-Minoan",
"syllabary",
aliases = {"Cypro Minoan"},
ranges = {
0x10100, 0x10101,
0x12F90, 0x12FF2,
},
}
m["Cprt"] = process_ranges{
"ไซปรัส",
"syllabary",
aliases = {"ไซเปรียท", "Cypriot"},
ranges = {
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
0x10800, 0x10805,
0x10808, 0x10808,
0x1080A, 0x10835,
0x10837, 0x10838,
0x1083C, 0x1083C,
0x1083F, 0x1083F,
},
direction = "rtl",
}
m["Cyrl"] = process_ranges{
"ซีริลลิก",
"alphabet",
aliases = {"Cyrillic"},
ranges = {
0x0400, 0x052F,
0x1C80, 0x1C88,
0x1D2B, 0x1D2B,
0x1D78, 0x1D78,
0x1DF8, 0x1DF8,
0x2DE0, 0x2DFF,
0x2E43, 0x2E43,
0xA640, 0xA69F,
0xFE2E, 0xFE2F,
0x1E030, 0x1E06D,
0x1E08F, 0x1E08F,
},
capitalized = true,
}
m["Cyrs"] = {
"ซีริลลิกเก่า",
m["Cyrl"][2],
aliases = {"ซีริลลิกช่วงต้น", "Old Cyrillic", "Early Cyrillic"},
ranges = m["Cyrl"].ranges,
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
normalizationFixes = {
from = {"Ѹ", "ѹ"},
to = {"Ꙋ", "ꙋ"}
},
}
m["Deva"] = process_ranges{
"เทวนาครี",
"abugida",
aliases = {"Devanagari"},
ranges = {
0x0900, 0x097F,
0x1CD0, 0x1CF6,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0xA830, 0xA839,
0xA8E0, 0xA8FF,
0x11B00, 0x11B09,
},
normalizationFixes = {
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = process_ranges{
"ดิเวส อกุรุ",
"abugida",
aliases = {"ดิเวหิ อกุรุ", "Dhives Akuru", "Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
ranges = {
0x11900, 0x11906,
0x11909, 0x11909,
0x1190C, 0x11913,
0x11915, 0x11916,
0x11918, 0x11935,
0x11937, 0x11938,
0x1193B, 0x11946,
0x11950, 0x11959,
},
}
m["Dogr"] = process_ranges{
"โฑครี",
"abugida",
aliases = {"Dogri", "Dogra"},
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11800, 0x1183B,
},
}
m["Dsrt"] = process_ranges{
"Deseret",
"alphabet",
ranges = {
0x10400, 0x1044F,
},
capitalized = true,
}
m["Dupl"] = process_ranges{
"Duployan",
"alphabet",
ranges = {
0x1BC00, 0x1BC6A,
0x1BC70, 0x1BC7C,
0x1BC80, 0x1BC88,
0x1BC90, 0x1BC99,
0x1BC9C, 0x1BCA3,
},
}
m["Egyd"] = {
"Demotic",
"abjad, logography",
-- Not in Unicode
}
m["Egyh"] = {
"Hieratic",
"abjad, logography",
-- Unified with Egyptian hieroglyphic in Unicode
}
m["Egyp"] = process_ranges{
"ไฮเออโรกลีฟอียิปต์",
"abjad, logography",
aliases = {"Egyptian hieroglyphic"},
ranges = {
0x13000, 0x13455,
},
varieties = {"Hieratic"},
wikipedia_article = "ไฮเออโรกลีฟอียิปต์",
normalizationFixes = {
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = process_ranges{
"เอลบาซาน",
"alphabet",
aliases = {"Elbasan"},
ranges = {
0x10500, 0x10527,
},
}
m["Elym"] = process_ranges{
"Elymaic",
"abjad",
ranges = {
0x10FE0, 0x10FF6,
},
direction = "rtl",
}
m["Ethi"] = process_ranges{
"เอธิโอเปีย",
"abugida",
aliases = {"กืออึซ", "Ethiopic", "Ge'ez"},
ranges = {
0x1200, 0x1248,
0x124A, 0x124D,
0x1250, 0x1256,
0x1258, 0x1258,
0x125A, 0x125D,
0x1260, 0x1288,
0x128A, 0x128D,
0x1290, 0x12B0,
0x12B2, 0x12B5,
0x12B8, 0x12BE,
0x12C0, 0x12C0,
0x12C2, 0x12C5,
0x12C8, 0x12D6,
0x12D8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135A,
0x135D, 0x137C,
0x1380, 0x1399,
0x2D80, 0x2D96,
0x2DA0, 0x2DA6,
0x2DA8, 0x2DAE,
0x2DB0, 0x2DB6,
0x2DB8, 0x2DBE,
0x2DC0, 0x2DC6,
0x2DC8, 0x2DCE,
0x2DD0, 0x2DD6,
0x2DD8, 0x2DDE,
0xAB01, 0xAB06,
0xAB09, 0xAB0E,
0xAB11, 0xAB16,
0xAB20, 0xAB26,
0xAB28, 0xAB2E,
0x1E7E0, 0x1E7E6,
0x1E7E8, 0x1E7EB,
0x1E7ED, 0x1E7EE,
0x1E7F0, 0x1E7FE,
},
}
m["Gara"] = {
"Garay",
"alphabet",
capitalized = true,
direction = "rtl",
-- Not in Unicode
}
m["Geok"] = process_ranges{
"Khutsuri",
"alphabet",
ranges = { -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
0x10A0, 0x10C5,
0x10C7, 0x10C7,
0x10CD, 0x10CD,
0x10FB, 0x10FB,
0x2D00, 0x2D25,
0x2D27, 0x2D27,
0x2D2D, 0x2D2D,
},
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = process_ranges{
"จอร์เจีย",
"alphabet",
aliases = {"Georgian"},
ranges = { -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
0x10D0, 0x10FF,
0x1C90, 0x1CBA,
0x1CBD, 0x1CBF,
},
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = process_ranges{
"กลาโกลิติก",
"alphabet",
aliases = {"Glagolitic"},
ranges = {
0x0484, 0x0484,
0x0487, 0x0487,
0x2C00, 0x2C5F,
0x2E43, 0x2E43,
0xA66F, 0xA66F,
0x1E000, 0x1E006,
0x1E008, 0x1E018,
0x1E01B, 0x1E021,
0x1E023, 0x1E024,
0x1E026, 0x1E02A,
},
capitalized = true,
}
m["Gong"] = process_ranges{
"คุญชลาโคณฑี",
"abugida",
aliases = {"Gunjala Gondi"},
ranges = {
0x0964, 0x0965,
0x11D60, 0x11D65,
0x11D67, 0x11D68,
0x11D6A, 0x11D8E,
0x11D90, 0x11D91,
0x11D93, 0x11D98,
0x11DA0, 0x11DA9,
},
}
m["Gonm"] = process_ranges{
"มสรามโคณฑี",
"abugida",
aliases = {"Masaram Gondi"},
ranges = {
0x0964, 0x0965,
0x11D00, 0x11D06,
0x11D08, 0x11D09,
0x11D0B, 0x11D36,
0x11D3A, 0x11D3A,
0x11D3C, 0x11D3D,
0x11D3F, 0x11D47,
0x11D50, 0x11D59,
},
}
m["Goth"] = process_ranges{
"กอท",
"alphabet",
aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"},
ranges = {
0x10330, 0x1034A,
},
wikipedia_article = "Gothic alphabet",
}
m["Gran"] = process_ranges{
"ครันถะ",
"abugida",
aliases = {"Grantha"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0BE6, 0x0BF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CF2, 0x1CF4,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0x11300, 0x11303,
0x11305, 0x1130C,
0x1130F, 0x11310,
0x11313, 0x11328,
0x1132A, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
0x1133B, 0x11344,
0x11347, 0x11348,
0x1134B, 0x1134D,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135D, 0x11363,
0x11366, 0x1136C,
0x11370, 0x11374,
0x11FD0, 0x11FD1,
0x11FD3, 0x11FD3,
},
}
m["Grek"] = process_ranges{
"กรีก",
"alphabet",
aliases = {"Greek"},
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DBF,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = true,
}
m["Polyt"] = process_ranges{
"กรีก",
m["Grek"][2],
aliases = m["Grek"].aliases,
ranges = union(m["Grek"].ranges, {
0x1F00, 0x1F15,
0x1F18, 0x1F1D,
0x1F20, 0x1F45,
0x1F48, 0x1F4D,
0x1F50, 0x1F57,
0x1F59, 0x1F59,
0x1F5B, 0x1F5B,
0x1F5D, 0x1F5D,
0x1F5F, 0x1F7D,
0x1F80, 0x1FB4,
0x1FB6, 0x1FC4,
0x1FC6, 0x1FD3,
0x1FD6, 0x1FDB,
0x1FDD, 0x1FEF,
0x1FF2, 0x1FF4,
0x1FF6, 0x1FFE,
}),
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = process_ranges{
"คุชราต",
"abugida",
aliases = {"คุชราตี", "Gujarati"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A81, 0x0A83,
0x0A85, 0x0A8D,
0x0A8F, 0x0A91,
0x0A93, 0x0AA8,
0x0AAA, 0x0AB0,
0x0AB2, 0x0AB3,
0x0AB5, 0x0AB9,
0x0ABC, 0x0AC5,
0x0AC7, 0x0AC9,
0x0ACB, 0x0ACD,
0x0AD0, 0x0AD0,
0x0AE0, 0x0AE3,
0x0AE6, 0x0AF1,
0x0AF9, 0x0AFF,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Gukh"] = {
"Khema",
"abugida",
aliases = {"Gurung Khema", "Khema Phri", "Khema Lipi"},
-- Not in Unicode
}
m["Guru"] = process_ranges{
"คุรมุขี",
"abugida",
aliases = {"กูร์มูคี", "เกอร์มุกห์", "Gurmukhi"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A01, 0x0A03,
0x0A05, 0x0A0A,
0x0A0F, 0x0A10,
0x0A13, 0x0A28,
0x0A2A, 0x0A30,
0x0A32, 0x0A33,
0x0A35, 0x0A36,
0x0A38, 0x0A39,
0x0A3C, 0x0A3C,
0x0A3E, 0x0A42,
0x0A47, 0x0A48,
0x0A4B, 0x0A4D,
0x0A51, 0x0A51,
0x0A59, 0x0A5C,
0x0A5E, 0x0A5E,
0x0A66, 0x0A76,
0xA830, 0xA839,
},
normalizationFixes = {
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = process_ranges{
"ฮันกึล",
"syllabary",
aliases = {"ฮังกึล", "Hangul", "Hangeul"},
ranges = {
0x1100, 0x11FF,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302E, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3131, 0x318E,
0x3200, 0x321E,
0x3260, 0x327E,
0xA960, 0xA97C,
0xAC00, 0xD7A3,
0xD7B0, 0xD7C6,
0xD7CB, 0xD7FB,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFFA0, 0xFFBE,
0xFFC2, 0xFFC7,
0xFFCA, 0xFFCF,
0xFFD2, 0xFFD7,
0xFFDA, 0xFFDC,
},
}
m["Hani"] = process_ranges{
"จีน",
"logography",
aliases = {"ฮั่น", "Han"},
ranges = {
0x2E80, 0x2E99,
0x2E9B, 0x2EF3,
0x2F00, 0x2FD5,
0x3001, 0x3003,
0x3005, 0x3011,
0x3013, 0x301F,
0x3021, 0x302D,
0x3030, 0x3030,
0x3037, 0x303F,
0x3190, 0x319F,
0x31C0, 0x31E3,
0x3220, 0x3247,
0x3280, 0x32B0,
0x32C0, 0x32CB,
0x30FB, 0x30FB,
0x32FF, 0x32FF,
0x3358, 0x3370,
0x337B, 0x337F,
0x33E0, 0x33FE,
0x3400, 0x4DBF,
0x4E00, 0x9FFF,
0xA700, 0xA707,
0xF900, 0xFA6D,
0xFA70, 0xFAD9,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0x16FE2, 0x16FE3,
0x16FF0, 0x16FF1,
0x1D360, 0x1D371,
0x1F250, 0x1F251,
0x20000, 0x2A6DF,
0x2A700, 0x2B739,
0x2B740, 0x2B81D,
0x2B820, 0x2CEA1,
0x2CEB0, 0x2EBE0,
0x2EBF0, 0x2EE5D,
0x2F800, 0x2FA1D,
0x30000, 0x3134A,
0x31350, 0x323AF,
},
varieties = {{"ฮั่นจื่อ", "Hanzi"}, {"คันจิ", "Kanji"}, {"ฮันจา", "Hanja"}, {"จื๋อโนม", "Chu Nom"}},
spaces = false,
}
m["Hans"] = {
"จีนตัวย่อ",
m["Hani"][2],
aliases = {"Simplified Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"จีนตัวเต็ม",
m["Hani"][2],
aliases = {"Traditional Han"},
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = process_ranges{
"ฮานูโนโอ",
"abugida",
aliases = {"Hanunoo"},
ranges = {
0x1720, 0x1736,
},
}
m["Hatr"] = process_ranges{
"Hatran",
"abjad",
ranges = {
0x108E0, 0x108F2,
0x108F4, 0x108F5,
0x108FB, 0x108FF,
},
direction = "rtl",
}
m["Hebr"] = process_ranges{
"ฮีบรู",
"abjad", -- more precisely, impure abjad
aliases = {"Hebrew"},
ranges = {
0x0591, 0x05C7,
0x05D0, 0x05EA,
0x05EF, 0x05F4,
0x2135, 0x2138,
0xFB1D, 0xFB36,
0xFB38, 0xFB3C,
0xFB3E, 0xFB3E,
0xFB40, 0xFB41,
0xFB43, 0xFB44,
0xFB46, 0xFB4F,
},
direction = "rtl",
}
m["Hira"] = process_ranges{
"ฮิรางานะ",
"syllabary",
aliases = {"ฮิระงะนะ", "Hiragana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3041, 0x3096,
0x3099, 0x30A0,
0x30FB, 0x30FC,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFF70, 0xFF70,
0xFF9E, 0xFF9F,
0x1B001, 0x1B11F,
0x1B132, 0x1B132,
0x1B150, 0x1B152,
0x1F200, 0x1F200,
},
varieties = {{"เฮ็นไตงานะ", "Hentaigana"}},
spaces = false,
}
m["Hluw"] = process_ranges{
"ไฮเออโรกลีฟอานาโตเลีย",
"logography, syllabary",
aliases = {"Anatolian Hieroglyphs"},
ranges = {
0x14400, 0x14646,
},
wikipedia_article = "ไฮเออโรกลีฟอานาโตเลีย",
}
m["Hmng"] = process_ranges{
"Pahawh Hmong",
"semisyllabary",
aliases = {"ม้ง", "Hmong"},
ranges = {
0x16B00, 0x16B45,
0x16B50, 0x16B59,
0x16B5B, 0x16B61,
0x16B63, 0x16B77,
0x16B7D, 0x16B8F,
},
}
m["Hmnp"] = process_ranges{
"Nyiakeng Puachue Hmong",
"alphabet",
ranges = {
0x1E100, 0x1E12C,
0x1E130, 0x1E13D,
0x1E140, 0x1E149,
0x1E14E, 0x1E14F,
},
}
m["Hung"] = process_ranges{
"ฮังการีเก่า",
"alphabet",
aliases = {"รูนฮังการี", "Old Hungarian", "Hungarian runic"},
ranges = {
0x10C80, 0x10CB2,
0x10CC0, 0x10CF2,
0x10CFA, 0x10CFF,
},
capitalized = true,
direction = "rtl",
}
m["Ibrn"] = {
"ไอบีเรีย",
"semisyllabary",
aliases = {"Iberian"},
-- Not in Unicode
}
m["Imag"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Inds"] = {
"สินธุ",
aliases = {"อินดัส", "Indus", "Harappan", "Indus Valley"},
}
m["Ipach"] = {
"สัทอักษรสากล",
aliases = {"International Phonetic Alphabet", "IPA"},
}
m["Ital"] = process_ranges{
"อิตาลิกเก่า",
"alphabet",
aliases = {"Old Italic"},
ranges = {
0x10300, 0x10323,
0x1032D, 0x1032F,
},
}
m["Java"] = process_ranges{
"ชวา",
"abugida",
aliases = {"Javanese"},
ranges = {
0xA980, 0xA9CD,
0xA9CF, 0xA9D9,
0xA9DE, 0xA9DF,
},
}
m["Jurc"] = {
"จูร์เชน",
"logography",
aliases = {"Jurchen"},
spaces = false,
}
m["Kali"] = process_ranges{
"กะยา",
"abugida",
aliases = {"Kayah Li"},
ranges = {
0xA900, 0xA92F,
},
}
m["Kana"] = process_ranges{
"คาตากานะ",
"syllabary",
aliases = {"คะตะกะนะ", "Katakana"},
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3099, 0x309C,
0x30A0, 0x30FF,
0x31F0, 0x31FF,
0x32D0, 0x32FE,
0x3300, 0x3357,
0xFE45, 0xFE46,
0xFF61, 0xFF9F,
0x1AFF0, 0x1AFF3,
0x1AFF5, 0x1AFFB,
0x1AFFD, 0x1AFFE,
0x1B000, 0x1B000,
0x1B120, 0x1B122,
0x1B155, 0x1B155,
0x1B164, 0x1B167,
},
spaces = false,
}
m["Kawi"] = process_ranges{
"กวิ",
"abugida",
aliases = {"Kawi"},
ranges = {
0x11F00, 0x11F10,
0x11F12, 0x11F3A,
0x11F3E, 0x11F59,
},
}
m["Khar"] = process_ranges{
"ขโรษฐี",
"abugida",
aliases = {"Kharoshthi"},
ranges = {
0x10A00, 0x10A03,
0x10A05, 0x10A06,
0x10A0C, 0x10A13,
0x10A15, 0x10A17,
0x10A19, 0x10A35,
0x10A38, 0x10A3A,
0x10A3F, 0x10A48,
0x10A50, 0x10A58,
},
direction = "rtl",
}
m["Khmr"] = process_ranges{
"เขมร",
"abugida",
aliases = {"Khmer"},
ranges = {
0x1780, 0x17DD,
0x17E0, 0x17E9,
0x17F0, 0x17F9,
0x19E0, 0x19FF,
},
spaces = false,
normalizationFixes = {
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = process_ranges{
"Khojki",
"abugida",
ranges = {
0x0AE6, 0x0AEF,
0xA830, 0xA839,
0x11200, 0x11211,
0x11213, 0x11241,
},
normalizationFixes = {
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Kitl"] = {
"คีตันใหญ่",
"logography",
aliases = {"Khitan Large"},
spaces = false,
}
m["Kits"] = process_ranges{
"คีตันเล็ก",
"logography, syllabary",
aliases = {"Khitan Small"},
ranges = {
0x16FE4, 0x16FE4,
0x18B00, 0x18CD5,
},
spaces = false,
}
m["Knda"] = process_ranges{
"กันนาดา",
"abugida",
aliases = {"Kannada"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C80, 0x0C8C,
0x0C8E, 0x0C90,
0x0C92, 0x0CA8,
0x0CAA, 0x0CB3,
0x0CB5, 0x0CB9,
0x0CBC, 0x0CC4,
0x0CC6, 0x0CC8,
0x0CCA, 0x0CCD,
0x0CD5, 0x0CD6,
0x0CDD, 0x0CDE,
0x0CE0, 0x0CE3,
0x0CE6, 0x0CEF,
0x0CF1, 0x0CF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0x1CF4, 0x1CF4,
0xA830, 0xA835,
},
normalizationFixes = {
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
"syllabary",
-- Not in Unicode
}
m["Krai"] = {
"Kirat Rai",
"abugida",
aliases = {"Rai", "Khambu Rai", "Rai Barṇamālā", "Kirat Khambu Rai"},
-- Not in Unicode
}
m["Kthi"] = process_ranges{
"ไกถี",
"abugida",
aliases = {"Kaithi"},
ranges = {
0x0966, 0x096F,
0xA830, 0xA839,
0x11080, 0x110C2,
0x110CD, 0x110CD,
},
}
m["Lana"] = process_ranges{
"ไทธรรม",
"abugida",
aliases = {"ธรรม", "ตัวเมือง", "ล้านนา", "Tai Tham", "Tham", "Tua Mueang", "Lanna"},
ranges = {
0x1A20, 0x1A5E,
0x1A60, 0x1A7C,
0x1A7F, 0x1A89,
0x1A90, 0x1A99,
0x1AA0, 0x1AAD,
},
spaces = false,
}
m["Laoo"] = process_ranges{
"ลาว",
"abugida",
aliases = {"Lao"},
ranges = {
0x0E81, 0x0E82,
0x0E84, 0x0E84,
0x0E86, 0x0E8A,
0x0E8C, 0x0EA3,
0x0EA5, 0x0EA5,
0x0EA7, 0x0EBD,
0x0EC0, 0x0EC4,
0x0EC6, 0x0EC6,
0x0EC8, 0x0ECE,
0x0ED0, 0x0ED9,
0x0EDC, 0x0EDF,
},
spaces = false,
}
m["Latn"] = process_ranges{
"ละติน",
"alphabet",
aliases = {"ลาติน", "โรมัน", "Latin", "Roman"},
ranges = {
0x0041, 0x005A,
0x0061, 0x007A,
0x00AA, 0x00AA,
0x00BA, 0x00BA,
0x00C0, 0x00D6,
0x00D8, 0x00F6,
0x00F8, 0x02B8,
0x02C0, 0x02C1,
0x02E0, 0x02E4,
0x0363, 0x036F,
0x0485, 0x0486,
0x0951, 0x0952,
0x10FB, 0x10FB,
0x1D00, 0x1D25,
0x1D2C, 0x1D5C,
0x1D62, 0x1D65,
0x1D6B, 0x1D77,
0x1D79, 0x1DBE,
0x1E00, 0x1EFF,
0x202F, 0x202F,
0x2071, 0x2071,
0x207F, 0x207F,
0x2090, 0x209C,
0x20F0, 0x20F0,
0x2100, 0x2125,
0x2128, 0x2128,
0x212A, 0x2134,
0x2139, 0x213B,
0x2141, 0x214E,
0x2160, 0x2188,
0x2C60, 0x2C7F,
0xA700, 0xA707,
0xA722, 0xA787,
0xA78B, 0xA7CA,
0xA7D0, 0xA7D1,
0xA7D3, 0xA7D3,
0xA7D5, 0xA7D9,
0xA7F2, 0xA7FF,
0xA92E, 0xA92E,
0xAB30, 0xAB5A,
0xAB5C, 0xAB64,
0xAB66, 0xAB69,
0xFB00, 0xFB06,
0xFF21, 0xFF3A,
0xFF41, 0xFF5A,
0x10780, 0x10785,
0x10787, 0x107B0,
0x107B2, 0x107BA,
0x1DF00, 0x1DF1E,
0x1DF25, 0x1DF2A,
},
varieties = {{"รูมี", "Rumi"}, {"โรมาจิ", "โรมะจิ", "Romaji", "Rōmaji"}, "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"ฟรักทูร์",
m["Latn"][2],
aliases = {"Fraktur"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"แบล็กเลตเทอร์", "Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"แกลิก",
m["Latn"][2],
aliases = {"Gaelic"},
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"ไอริช", "Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"ละติน",
m["Latn"][2],
aliases = m["Latn"].aliases,
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
"abugida",
-- Not in Unicode
}
m["Lepc"] = process_ranges{
"เลปชา",
"abugida",
aliases = {"Lepcha"},
ranges = {
0x1C00, 0x1C37,
0x1C3B, 0x1C49,
0x1C4D, 0x1C4F,
},
}
m["Limb"] = process_ranges{
"ลิมบู",
"abugida",
aliases = {"Limbu"},
ranges = {
0x0965, 0x0965,
0x1900, 0x191E,
0x1920, 0x192B,
0x1930, 0x193B,
0x1940, 0x1940,
0x1944, 0x194F,
},
}
m["Lina"] = process_ranges{
"ลิเนียร์เอ",
aliases = {"Linear A"},
ranges = {
0x10107, 0x10133,
0x10600, 0x10736,
0x10740, 0x10755,
0x10760, 0x10767,
},
}
m["Linb"] = process_ranges{
"ลิเนียร์บี",
aliases = {"Linear B"},
ranges = {
0x10000, 0x1000B,
0x1000D, 0x10026,
0x10028, 0x1003A,
0x1003C, 0x1003D,
0x1003F, 0x1004D,
0x10050, 0x1005D,
0x10080, 0x100FA,
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
},
}
m["Lisu"] = process_ranges{
"ลีสู่",
"alphabet",
aliases = {"ฟราเซอร์", "Lisu", "Fraser"},
ranges = {
0xA4D0, 0xA4FF,
0x11FB0, 0x11FB0,
},
normalizationFixes = {
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
"syllabary",
-- Not in Unicode
}
m["Lyci"] = process_ranges{
"ลิเชีย",
"alphabet",
aliases = {"Lycian"},
ranges = {
0x10280, 0x1029C,
},
}
m["Lydi"] = process_ranges{
"ลิเดีย",
"alphabet",
aliases = {"Lydian"},
ranges = {
0x10920, 0x10939,
0x1093F, 0x1093F,
},
direction = "rtl",
}
m["Mahj"] = process_ranges{
"Mahajani",
"abugida",
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11150, 0x11176,
},
}
m["Maka"] = process_ranges{
"ลนตารา",
"abugida",
aliases = {"Lontara", "Makasar"},
ranges = {
0x11EE0, 0x11EF8,
},
}
m["Mand"] = process_ranges{
"มันดาอิก",
aliases = {"Mandaic", "Mandaean"},
ranges = {
0x0640, 0x0640,
0x0840, 0x085B,
0x085E, 0x085E,
},
direction = "rtl",
}
m["Mani"] = process_ranges{
"Manichaean",
"abjad",
ranges = {
0x0640, 0x0640,
0x10AC0, 0x10AE6,
0x10AEB, 0x10AF6,
},
direction = "rtl",
}
m["Marc"] = process_ranges{
"Marchen",
"abugida",
ranges = {
0x11C70, 0x11C8F,
0x11C92, 0x11CA7,
0x11CA9, 0x11CB6,
},
}
m["Maya"] = process_ranges{
"มายา",
aliases = {"มายัน", "Maya", "Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
ranges = {
0x1D2E0, 0x1D2F3,
},
}
m["Medf"] = process_ranges{
"Medefaidrin",
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
ranges = {
0x16E40, 0x16E9A,
},
capitalized = true,
}
m["Mend"] = process_ranges{
"Mende",
aliases = {"Mende Kikakui"},
ranges = {
0x1E800, 0x1E8C4,
0x1E8C7, 0x1E8D6,
},
direction = "rtl",
}
m["Merc"] = process_ranges{
"Meroitic cursive",
"abugida",
ranges = {
0x109A0, 0x109B7,
0x109BC, 0x109CF,
0x109D2, 0x109FF,
},
direction = "rtl",
}
m["Mero"] = process_ranges{
"Meroitic hieroglyphic",
"abugida",
ranges = {
0x10980, 0x1099F,
},
direction = "rtl",
}
m["Mlym"] = process_ranges{
"มลยาฬัม",
"abugida",
aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0D00, 0x0D0C,
0x0D0E, 0x0D10,
0x0D12, 0x0D44,
0x0D46, 0x0D48,
0x0D4A, 0x0D4F,
0x0D54, 0x0D63,
0x0D66, 0x0D7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0xA830, 0xA832,
},
normalizationFixes = {
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = process_ranges{
"โมฑี",
"abugida",
aliases = {"Modi"},
ranges = {
0xA830, 0xA839,
0x11600, 0x11644,
0x11650, 0x11659,
},
normalizationFixes = {
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = process_ranges{
"มองโกเลีย",
"alphabet",
aliases = {"Mongolian", "Mongol bichig", "Hudum Mongol bichig"},
ranges = {
0x1800, 0x1805,
0x180A, 0x1819,
0x1820, 0x1842,
0x1878, 0x1878,
0x1880, 0x1897,
0x18A6, 0x18A6,
0x18A9, 0x18A9,
0x200C, 0x200D,
0x202F, 0x202F,
0x11660, 0x11668,
},
direction = "vertical-ltr",
}
m["mnc-Mong"] = process_ranges{
"แมนจู",
m["Mong"][2],
aliases = {"Manchu"},
ranges = {
0x1801, 0x1801,
0x1804, 0x1804,
0x1808, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x185D,
0x185F, 0x1861,
0x1864, 0x1869,
0x186C, 0x1871,
0x1873, 0x1877,
0x1880, 0x1888,
0x188F, 0x188F,
0x189A, 0x18A5,
0x18A8, 0x18A8,
0x18AA, 0x18AA,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["sjo-Mong"] = process_ranges{
"ซิเบ",
m["Mong"][2],
aliases = {"Xibe", "Sibe"},
ranges = {
0x1804, 0x1804,
0x1807, 0x1807,
0x180A, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x1828,
0x182A, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x1872,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "mnc-Mong",
}
m["xwo-Mong"] = process_ranges{
"Clear Script",
m["Mong"][2],
aliases = {"Todo", "Todo bichig"},
ranges = {
0x1800, 0x1801,
0x1804, 0x1806,
0x180A, 0x1820,
0x1828, 0x1828,
0x182F, 0x1831,
0x1834, 0x1834,
0x1837, 0x1838,
0x183A, 0x183B,
0x1840, 0x1840,
0x1843, 0x185C,
0x1880, 0x1887,
0x1889, 0x188F,
0x1894, 0x1894,
0x1896, 0x1899,
0x18A7, 0x18A7,
0x200C, 0x200D,
0x202F, 0x202F,
0x11669, 0x1166C,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["Moon"] = {
"Moon",
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"รหัสมอร์ส",
aliases = {"Morse code"},
}
m["Mroo"] = process_ranges{
"มโร",
aliases = {"Mro"},
ranges = {
0x16A40, 0x16A5E,
0x16A60, 0x16A69,
0x16A6E, 0x16A6F,
},
}
m["Mtei"] = process_ranges{
"มณีปุระ",
"abugida",
aliases = {"ไมไตมะเยก", "มีไตมะเยก", "Manipuri", "Meitei Mayek", "Meetei Mayek"},
ranges = {
0xAAE0, 0xAAF6,
0xABC0, 0xABED,
0xABF0, 0xABF9,
},
}
m["Mult"] = process_ranges{
"Multani",
"abugida",
ranges = {
0x0A66, 0x0A6F,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128A, 0x1128D,
0x1128F, 0x1129D,
0x1129F, 0x112A9,
},
}
m["Music"] = process_ranges{
"สัญกรณ์ดนตรี",
"pictography",
aliases = {"Musical notation"},
ranges = {
0x2669, 0x266F,
0x1D100, 0x1D126,
0x1D129, 0x1D1EA,
},
translit = false,
}
m["Mymr"] = process_ranges{
"พม่า",
"abugida",
aliases = {"เมียนมา", "Burmese", "Myanmar"},
ranges = {
0x1000, 0x109F,
0xA92E, 0xA92E,
0xA9E0, 0xA9FE,
0xAA60, 0xAA7F,
},
spaces = false,
}
m["Nagm"] = process_ranges{
"Nag Mundari",
"alphabet",
ranges = {
0x1E4D0, 0x1E4F9,
},
}
m["Nand"] = process_ranges{
"นันทินาครี",
"abugida",
aliases = {"Nandinagari"},
ranges = {
0x0964, 0x0965,
0x0CE6, 0x0CEF,
0x1CE9, 0x1CE9,
0x1CF2, 0x1CF2,
0x1CFA, 0x1CFA,
0xA830, 0xA835,
0x119A0, 0x119A7,
0x119AA, 0x119D7,
0x119DA, 0x119E4,
},
}
m["Narb"] = process_ranges{
"Old North Arabian",
"abjad",
ranges = {
0x10A80, 0x10A9F,
},
direction = "rtl",
}
m["Nbat"] = process_ranges{
"Nabataean",
"abjad",
aliases = {"Nabatean"},
ranges = {
0x10880, 0x1089E,
0x108A7, 0x108AF,
},
direction = "rtl",
}
m["Newa"] = process_ranges{
"Newa",
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
ranges = {
0x11400, 0x1145B,
0x1145D, 0x11461,
},
}
m["Nkdb"] = {
"Dongba",
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = process_ranges{
"N'Ko",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x07C0, 0x07FA,
0x07FD, 0x07FF,
0xFD3E, 0xFD3F,
},
direction = "rtl",
}
m["None"] = {
"ไม่ระบุ",
aliases = {"Unspecified"},
-- This should not have any characters listed
translit = false,
character_category = false,
}
m["Nshu"] = process_ranges{
"Nüshu",
"syllabary",
aliases = {"Nushu"},
ranges = {
0x16FE1, 0x16FE1,
0x1B170, 0x1B2FB,
},
spaces = false,
}
m["Ogam"] = process_ranges{
"Ogham",
ranges = {
0x1680, 0x169C,
},
}
m["Olck"] = process_ranges{
"Ol Chiki",
ranges = {
0x1C50, 0x1C7F,
},
}
m["Onao"] = {
"Ol Onal",
"alphabet",
-- Not in Unicode
}
m["Orkh"] = process_ranges{
"Orkhon runes",
aliases = {"Old Turkic"},
ranges = {
0x10C00, 0x10C48,
},
direction = "rtl",
}
m["Orya"] = process_ranges{
"โอริยา",
"abugida",
aliases = {"โอเดีย", "Oriya", "Odia"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B01, 0x0B03,
0x0B05, 0x0B0C,
0x0B0F, 0x0B10,
0x0B13, 0x0B28,
0x0B2A, 0x0B30,
0x0B32, 0x0B33,
0x0B35, 0x0B39,
0x0B3C, 0x0B44,
0x0B47, 0x0B48,
0x0B4B, 0x0B4D,
0x0B55, 0x0B57,
0x0B5C, 0x0B5D,
0x0B5F, 0x0B63,
0x0B66, 0x0B77,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = process_ranges{
"Osage",
ranges = {
0x104B0, 0x104D3,
0x104D8, 0x104FB,
},
capitalized = true,
}
m["Osma"] = process_ranges{
"อุสมาน",
aliases = {"Osmanya"},
ranges = {
0x10480, 0x1049D,
0x104A0, 0x104A9,
},
}
m["Ougr"] = process_ranges{
"อุยกูร์เก่า",
"abjad, alphabet",
aliases = {"Old Uyghur"},
ranges = {
0x0640, 0x0640,
0x10AF2, 0x10AF2,
0x10F70, 0x10F89,
},
-- This should ideally be "vertical-ltr", but getting the CSS right is tricky because it's right-to-left horizontally, but left-to-right vertically. Currently, displaying it vertically causes it to display bottom-to-top.
direction = "rtl",
}
m["Palm"] = process_ranges{
"Palmyrene",
ranges = {
0x10860, 0x1087F,
},
direction = "rtl",
}
m["Pauc"] = process_ranges{
"Pau Cin Hau",
ranges = {
0x11AC0, 0x11AF8,
},
}
m["Perm"] = process_ranges{
"Old Permic",
ranges = {
0x0483, 0x0483,
0x10350, 0x1037A,
},
}
m["Phag"] = process_ranges{
"Phags-pa",
"abugida",
ranges = {
0x1802, 0x1803,
0x1805, 0x1805,
0x200C, 0x200D,
0x202F, 0x202F,
0x3002, 0x3002,
0xA840, 0xA877,
},
direction = "vertical-ltr",
}
m["Phli"] = process_ranges{
"Inscriptional Pahlavi",
"abjad",
ranges = {
0x10B60, 0x10B72,
0x10B78, 0x10B7F,
},
direction = "rtl",
}
m["Phlp"] = process_ranges{
"Psalter Pahlavi",
"abjad",
ranges = {
0x0640, 0x0640,
0x10B80, 0x10B91,
0x10B99, 0x10B9C,
0x10BA9, 0x10BAF,
},
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Phnx"] = process_ranges{
"ฟินิเชีย",
"abjad",
aliases = {"Phoenician"},
ranges = {
0x10900, 0x1091B,
0x1091F, 0x1091F,
},
direction = "rtl",
}
m["Plrd"] = process_ranges{
"Pollard",
"abugida",
aliases = {"Miao"},
ranges = {
0x16F00, 0x16F4A,
0x16F4F, 0x16F87,
0x16F8F, 0x16F9F,
},
}
m["Prti"] = process_ranges{
"Inscriptional Parthian",
ranges = {
0x10B40, 0x10B55,
0x10B58, 0x10B5F,
},
direction = "rtl",
}
m["Ranj"] = {
"Ranjana",
"abugida",
-- Not in Unicode
}
m["Rjng"] = process_ranges{
"Rejang",
"abugida",
ranges = {
0xA930, 0xA953,
0xA95F, 0xA95F,
},
}
m["Rohg"] = process_ranges{
"ฮานิฟ",
"alphabet",
aliases = {"ฮานีฟี", "Hanifi Rohingya", "Hanifi"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0640, 0x0640,
0x06D4, 0x06D4,
0x10D00, 0x10D27,
0x10D30, 0x10D39,
},
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
-- Not in Unicode
}
m["Rumin"] = process_ranges{
"Rumi numerals",
ranges = {
0x10E60, 0x10E7E,
},
character_category = "Rumi numerals",
}
m["Runr"] = process_ranges{
"รูน",
"alphabet",
aliases = {"รูนิก", "Runic"},
ranges = {
0x16A0, 0x16EA,
0x16EE, 0x16F8,
},
}
m["Samr"] = process_ranges{
"Samaritan",
"abjad",
ranges = {
0x0800, 0x082D,
0x0830, 0x083E,
},
direction = "rtl",
}
m["Sarb"] = process_ranges{
"Old South Arabian",
"abjad",
ranges = {
0x10A60, 0x10A7F,
},
direction = "rtl",
}
m["Saur"] = process_ranges{
"Saurashtra",
"abugida",
ranges = {
0xA880, 0xA8C5,
0xA8CE, 0xA8D9,
},
}
m["Semap"] = {
"สัญญาณธง",
"pictography",
aliases = {"flag semaphore"},
}
m["Sgnw"] = process_ranges{
"SignWriting",
"pictography",
aliases = {"Sutton SignWriting"},
ranges = {
0x1D800, 0x1DA8B,
0x1DA9B, 0x1DA9F,
0x1DAA1, 0x1DAAF,
},
translit = false,
}
m["Shaw"] = process_ranges{
"Shavian",
aliases = {"Shaw"},
ranges = {
0x10450, 0x1047F,
},
}
m["Shrd"] = process_ranges{
"ศารทา",
"abugida",
aliases = {"Sharada"},
ranges = {
0x0951, 0x0951,
0x1CD7, 0x1CD7,
0x1CD9, 0x1CD9,
0x1CDC, 0x1CDD,
0x1CE0, 0x1CE0,
0xA830, 0xA835,
0xA838, 0xA838,
0x11180, 0x111DF,
},
}
m["Shui"] = {
"Sui",
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = process_ranges{
"สิทธัม",
"abugida",
aliases = {"Siddham"},
ranges = {
0x11580, 0x115B5,
0x115B8, 0x115DD,
},
}
m["Sidt"] = {
"Sidetic",
"alphabet",
direction = "rtl",
-- Not in Unicode
}
m["Sind"] = process_ranges{
"คุดาบาด",
"abugida",
aliases = {"Khudabadi", "Khudawadi"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x112B0, 0x112EA,
0x112F0, 0x112F9,
},
normalizationFixes = {
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = process_ranges{
"สิงหล",
"abugida",
aliases = {"Sinhalese", "Sinhala"},
ranges = {
0x0964, 0x0965,
0x0D81, 0x0D83,
0x0D85, 0x0D96,
0x0D9A, 0x0DB1,
0x0DB3, 0x0DBB,
0x0DBD, 0x0DBD,
0x0DC0, 0x0DC6,
0x0DCA, 0x0DCA,
0x0DCF, 0x0DD4,
0x0DD6, 0x0DD6,
0x0DD8, 0x0DDF,
0x0DE6, 0x0DEF,
0x0DF2, 0x0DF4,
0x1CF2, 0x1CF2,
0x111E1, 0x111F4,
},
normalizationFixes = {
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = process_ranges{
"ซอกเดีย",
"abjad",
aliases = {"Sogdian"},
ranges = {
0x0640, 0x0640,
0x10F30, 0x10F59,
},
direction = "rtl",
}
m["Sogo"] = process_ranges{
"ซอกเดียเก่า",
"abjad",
aliases = {"Old Sogdian"},
ranges = {
0x10F00, 0x10F27,
},
direction = "rtl",
}
m["Sora"] = process_ranges{
"Sorang Sompeng",
aliases = {"Sora Sompeng"},
ranges = {
0x110D0, 0x110E8,
0x110F0, 0x110F9,
},
}
m["Soyo"] = process_ranges{
"Soyombo",
"abugida",
ranges = {
0x11A50, 0x11AA2,
},
}
m["Sund"] = process_ranges{
"ซุนดา",
"abugida",
aliases = {"Sundanese"},
ranges = {
0x1B80, 0x1BBF,
0x1CC0, 0x1CC7,
},
}
m["Sunu"] = {
"Sunuwar",
"alphabet",
-- Not in Unicode
}
m["Sylo"] = process_ranges{
"สิเลฏินาครี",
"abugida",
aliases = {"สิลอฏินาครี", "Syloti Nagri", "Sylheti Nagari"},
ranges = {
0x0964, 0x0965,
0x09E6, 0x09EF,
0xA800, 0xA82C,
},
}
m["Syrc"] = process_ranges{
"ซีรีแอก",
"abjad", -- more precisely, impure abjad
aliases = {"ซีเรียค", "Syriac"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0640, 0x0640,
0x064B, 0x0655,
0x0670, 0x0670,
0x0700, 0x070D,
0x070F, 0x074A,
0x074D, 0x074F,
0x0860, 0x086A,
0x1DF8, 0x1DF8,
0x1DFA, 0x1DFA,
},
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = process_ranges{
"ตักบันวา",
"abugida",
aliases = {"Tagbanwa"},
ranges = {
0x1735, 0x1736,
0x1760, 0x176C,
0x176E, 0x1770,
0x1772, 0x1773,
},
}
m["Takr"] = process_ranges{
"ฏากรี",
"abugida",
aliases = {"ตากรี", "Takri"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x11680, 0x116B9,
0x116C0, 0x116C9,
},
normalizationFixes = {
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = process_ranges{
"ไทใต้คง",
"abugida",
aliases = {"ไทเหนือ", "ไทเหนือใหม่", "ไตเหลอ", "Tai Nüa", "Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
ranges = {
0x1040, 0x1049,
0x1950, 0x196D,
0x1970, 0x1974,
},
spaces = false,
}
m["Talu"] = process_ranges{
"ไทลื้อใหม่",
"abugida",
aliases = {"New Tai Lue"},
ranges = {
0x1980, 0x19AB,
0x19B0, 0x19C9,
0x19D0, 0x19DA,
0x19DE, 0x19DF,
},
spaces = false,
}
m["Taml"] = process_ranges{
"ทมิฬ",
"abugida",
aliases = {"Tamil"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B82, 0x0B83,
0x0B85, 0x0B8A,
0x0B8E, 0x0B90,
0x0B92, 0x0B95,
0x0B99, 0x0B9A,
0x0B9C, 0x0B9C,
0x0B9E, 0x0B9F,
0x0BA3, 0x0BA4,
0x0BA8, 0x0BAA,
0x0BAE, 0x0BB9,
0x0BBE, 0x0BC2,
0x0BC6, 0x0BC8,
0x0BCA, 0x0BCD,
0x0BD0, 0x0BD0,
0x0BD7, 0x0BD7,
0x0BE6, 0x0BFA,
0x1CDA, 0x1CDA,
0xA8F3, 0xA8F3,
0x11301, 0x11301,
0x11303, 0x11303,
0x1133B, 0x1133C,
0x11FC0, 0x11FF1,
0x11FFF, 0x11FFF,
},
normalizationFixes = {
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = process_ranges{
"ตังกุต",
"logography, syllabary",
aliases = {"Tangut"},
ranges = {
0x16FE0, 0x16FE0,
0x17000, 0x187F7,
0x18800, 0x18AFF,
0x18D00, 0x18D08,
},
spaces = false,
}
m["Tavt"] = process_ranges{
"ไทเวียด",
"abugida",
aliases = {"Tai Viet"},
ranges = {
0xAA80, 0xAAC2,
0xAADB, 0xAADF,
},
spaces = false,
}
m["Tayo"] = {
"Lai Tay",
"abugida",
aliases = {"Tai Yo"},
direction = "vertical-rtl",
-- Not in Unicode
}
m["Telu"] = process_ranges{
"เตลูกู",
"abugida",
aliases = {"Telugu"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C00, 0x0C0C,
0x0C0E, 0x0C10,
0x0C12, 0x0C28,
0x0C2A, 0x0C39,
0x0C3C, 0x0C44,
0x0C46, 0x0C48,
0x0C4A, 0x0C4D,
0x0C55, 0x0C56,
0x0C58, 0x0C5A,
0x0C5D, 0x0C5D,
0x0C60, 0x0C63,
0x0C66, 0x0C6F,
0x0C77, 0x0C7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = {
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"เทงกวาร์",
aliases = {"Tengwar"},
}
m["Tfng"] = process_ranges{
"ทิฟินาค",
"abjad, alphabet",
aliases = {"Tifinagh"},
ranges = {
0x2D30, 0x2D67,
0x2D6F, 0x2D70,
0x2D7F, 0x2D7F,
},
otherNames = {"ลิบีโค-เบอร์เบอร์", "เบอร์เบอร์", "Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
}
m["Tglg"] = process_ranges{
"ไบบายิน",
"abugida",
aliases = {"ตากาล็อก", "Baybayin", "Tagalog"},
ranges = {
0x1700, 0x1715,
0x171F, 0x171F,
0x1735, 0x1736,
},
}
m["Thaa"] = process_ranges{
"ทานะ",
"abugida",
aliases = {"Thaana"},
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0660, 0x0669,
0x0780, 0x07B1,
0xFDF2, 0xFDF2,
0xFDFD, 0xFDFD,
},
direction = "rtl",
}
m["Thai"] = process_ranges{
"ไทย",
"abugida",
aliases = {"Thai"},
ranges = {
0x0E01, 0x0E3A,
0x0E40, 0x0E5B,
},
spaces = false,
translit = false, --only for thwikt
}
m["Tibt"] = process_ranges{
"ทิเบต",
"abugida",
aliases = {"Tibetan"},
ranges = {
0x0F00, 0x0F47,
0x0F49, 0x0F6C,
0x0F71, 0x0F97,
0x0F99, 0x0FBC,
0x0FBE, 0x0FCC,
0x0FCE, 0x0FD4,
0x0FD9, 0x0FDA,
},
normalizationFixes = {
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"ตัมยิก",
m["Tibt"][2],
aliases = {"Tamyig"},
ranges = m["Tibt"].ranges,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = process_ranges{
"Tirhuta",
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x1CF2, 0x1CF2,
0xA830, 0xA839,
0x11480, 0x114C7,
0x114D0, 0x114D9,
},
normalizationFixes = {
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = process_ranges{
"Tangsa",
"alphabet",
ranges = {
0x16A70, 0x16ABE,
0x16AC0, 0x16AC9,
},
}
m["Todr"] = {
"Todhri",
"alphabet",
direction = "rtl",
-- Not in Unicode
}
m["Tols"] = {
"Tolong Siki",
"alphabet",
-- Not in Unicode
}
m["Toto"] = process_ranges{
"Toto",
"abugida",
ranges = {
0x1E290, 0x1E2AE,
},
}
m["Tutg"] = {
"Tigalari",
"abugida",
aliases = {"Tulu"},
-- Not in Unicode
}
m["Ugar"] = process_ranges{
"ยูการิต",
"abjad",
aliases = {"ยูการิติก", "Ugaritic"},
ranges = {
0x10380, 0x1039D,
0x1039F, 0x1039F,
},
}
m["Vaii"] = process_ranges{
"ไว",
"syllabary",
aliases = {"Vai"},
ranges = {
0xA500, 0xA62B,
},
}
m["Visp"] = {
"Visible Speech",
"alphabet",
-- Not in Unicode
}
m["Vith"] = process_ranges{
"Vithkuqi",
"alphabet",
ranges = {
0x10570, 0x1057A,
0x1057C, 0x1058A,
0x1058C, 0x10592,
0x10594, 0x10595,
0x10597, 0x105A1,
0x105A3, 0x105B1,
0x105B3, 0x105B9,
0x105BB, 0x105BC,
},
capitalized = true,
}
m["Wara"] = process_ranges{
"วรังจิติ",
aliases = {"วรังกษิติ", "Warang Citi", "Varang Kshiti"},
ranges = {
0x118A0, 0x118F2,
0x118FF, 0x118FF,
},
capitalized = true,
}
m["Wcho"] = process_ranges{
"Wancho",
"alphabet",
ranges = {
0x1E2C0, 0x1E2F9,
0x1E2FF, 0x1E2FF,
},
}
m["Wole"] = {
"Woleai",
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = process_ranges{
"เปอร์เซียเก่า",
aliases = {"Old Persian"},
ranges = {
0x103A0, 0x103C3,
0x103C8, 0x103D5,
},
}
m["Xsux"] = process_ranges{
"คูนิฟอร์ม",
aliases = {"Cuneiform", "Sumero-Akkadian Cuneiform"},
ranges = {
0x12000, 0x12399,
0x12400, 0x1246E,
0x12470, 0x12474,
0x12480, 0x12543,
},
}
m["Yezi"] = process_ranges{
"Yezidi",
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0660, 0x0669,
0x10E80, 0x10EA9,
0x10EAB, 0x10EAD,
0x10EB0, 0x10EB1,
},
direction = "rtl",
}
m["Yiii"] = process_ranges{
"อี๋",
"syllabary",
aliases = {"Yi"},
ranges = {
0x3001, 0x3002,
0x3008, 0x3011,
0x3014, 0x301B,
0x30FB, 0x30FB,
0xA000, 0xA48C,
0xA490, 0xA4C6,
0xFF61, 0xFF65,
},
}
m["Zanb"] = process_ranges{
"Zanabazar Square",
ranges = {
0x11A00, 0x11A47,
},
}
m["Zmth"] = process_ranges{
"mathematical notation",
ranges = {
0x00AC, 0x00AC,
0x00B1, 0x00B1,
0x00D7, 0x00D7,
0x00F7, 0x00F7,
0x03D0, 0x03D2,
0x03D5, 0x03D5,
0x03F0, 0x03F1,
0x03F4, 0x03F6,
0x0606, 0x0608,
0x2016, 0x2016,
0x2032, 0x2034,
0x2040, 0x2040,
0x2044, 0x2044,
0x2052, 0x2052,
0x205F, 0x205F,
0x2061, 0x2064,
0x207A, 0x207E,
0x208A, 0x208E,
0x20D0, 0x20DC,
0x20E1, 0x20E1,
0x20E5, 0x20E6,
0x20EB, 0x20EF,
0x2102, 0x2102,
0x2107, 0x2107,
0x210A, 0x2113,
0x2115, 0x2115,
0x2118, 0x211D,
0x2124, 0x2124,
0x2128, 0x2129,
0x212C, 0x212D,
0x212F, 0x2131,
0x2133, 0x2138,
0x213C, 0x2149,
0x214B, 0x214B,
0x2190, 0x21A7,
0x21A9, 0x21AE,
0x21B0, 0x21B1,
0x21B6, 0x21B7,
0x21BC, 0x21DB,
0x21DD, 0x21DD,
0x21E4, 0x21E5,
0x21F4, 0x22FF,
0x2308, 0x230B,
0x2320, 0x2321,
0x237C, 0x237C,
0x239B, 0x23B5,
0x23B7, 0x23B7,
0x23D0, 0x23D0,
0x23DC, 0x23E2,
0x25A0, 0x25A1,
0x25AE, 0x25B7,
0x25BC, 0x25C1,
0x25C6, 0x25C7,
0x25CA, 0x25CB,
0x25CF, 0x25D3,
0x25E2, 0x25E2,
0x25E4, 0x25E4,
0x25E7, 0x25EC,
0x25F8, 0x25FF,
0x2605, 0x2606,
0x2640, 0x2640,
0x2642, 0x2642,
0x2660, 0x2663,
0x266D, 0x266F,
0x27C0, 0x27FF,
0x2900, 0x2AFF,
0x2B30, 0x2B44,
0x2B47, 0x2B4C,
0xFB29, 0xFB29,
0xFE61, 0xFE66,
0xFE68, 0xFE68,
0xFF0B, 0xFF0B,
0xFF1C, 0xFF1E,
0xFF3C, 0xFF3C,
0xFF3E, 0xFF3E,
0xFF5C, 0xFF5C,
0xFF5E, 0xFF5E,
0xFFE2, 0xFFE2,
0xFFE9, 0xFFEC,
0x1D400, 0x1D454,
0x1D456, 0x1D49C,
0x1D49E, 0x1D49F,
0x1D4A2, 0x1D4A2,
0x1D4A5, 0x1D4A6,
0x1D4A9, 0x1D4AC,
0x1D4AE, 0x1D4B9,
0x1D4BB, 0x1D4BB,
0x1D4BD, 0x1D4C3,
0x1D4C5, 0x1D505,
0x1D507, 0x1D50A,
0x1D50D, 0x1D514,
0x1D516, 0x1D51C,
0x1D51E, 0x1D539,
0x1D53B, 0x1D53E,
0x1D540, 0x1D544,
0x1D546, 0x1D546,
0x1D54A, 0x1D550,
0x1D552, 0x1D6A5,
0x1D6A8, 0x1D7CB,
0x1D7CE, 0x1D7FF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
translit = false,
character_category = "Mathematical notation symbols", -- ?
}
m["Zsym"] = process_ranges{
"สัญลักษณ์",
"pictography",
aliases = {"symbol"},
ranges = {
0x20DD, 0x20E0,
0x20E2, 0x20E4,
0x20E7, 0x20EA,
0x20F0, 0x20F0,
0x2100, 0x2101,
0x2103, 0x2106,
0x2108, 0x2109,
0x2114, 0x2114,
0x2116, 0x2117,
0x211E, 0x2123,
0x2125, 0x2127,
0x212A, 0x212B,
0x212E, 0x212E,
0x2132, 0x2132,
0x2139, 0x213B,
0x214A, 0x214A,
0x214C, 0x214F,
0x21A8, 0x21A8,
0x21AF, 0x21AF,
0x21B2, 0x21B5,
0x21B8, 0x21BB,
0x21DC, 0x21DC,
0x21DE, 0x21E3,
0x21E6, 0x21F3,
0x2300, 0x2307,
0x230C, 0x231F,
0x2322, 0x237B,
0x237D, 0x239A,
0x23B6, 0x23B6,
0x23B8, 0x23CF,
0x23D1, 0x23DB,
0x23E3, 0x23FF,
0x2500, 0x259F,
0x25A2, 0x25AD,
0x25B8, 0x25BB,
0x25C2, 0x25C5,
0x25C8, 0x25C9,
0x25CC, 0x25CE,
0x25D4, 0x25E1,
0x25E3, 0x25E3,
0x25E5, 0x25E6,
0x25ED, 0x25F7,
0x2600, 0x2604,
0x2607, 0x263F,
0x2641, 0x2641,
0x2643, 0x265F,
0x2664, 0x266C,
0x2670, 0x27BF,
0x2B00, 0x2B2F,
0x2B45, 0x2B46,
0x2B4D, 0x2B73,
0x2B76, 0x2B95,
0x2B97, 0x2BFF,
0x4DC0, 0x4DFF,
0x1F000, 0x1F02B,
0x1F030, 0x1F093,
0x1F0A0, 0x1F0AE,
0x1F0B1, 0x1F0BF,
0x1F0C1, 0x1F0CF,
0x1F0D1, 0x1F0F5,
0x1F300, 0x1F6D7,
0x1F6DC, 0x1F6EC,
0x1F6F0, 0x1F6FC,
0x1F700, 0x1F776,
0x1F77B, 0x1F7D9,
0x1F7E0, 0x1F7EB,
0x1F7F0, 0x1F7F0,
0x1F800, 0x1F80B,
0x1F810, 0x1F847,
0x1F850, 0x1F859,
0x1F860, 0x1F887,
0x1F890, 0x1F8AD,
0x1F8B0, 0x1F8B1,
0x1F900, 0x1FA53,
0x1FA60, 0x1FA6D,
0x1FA70, 0x1FA7C,
0x1FA80, 0x1FA88,
0x1FA90, 0x1FABD,
0x1FABF, 0x1FAC5,
0x1FACE, 0x1FADB,
0x1FAE0, 0x1FAE8,
0x1FAF0, 0x1FAF8,
0x1FB00, 0x1FB92,
0x1FB94, 0x1FBCA,
0x1FBF0, 0x1FBF9,
},
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"ยังไม่กำหนด",
aliases = {"undetermined"},
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"ยังไม่มีรหัส",
aliases = {"uncoded"},
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of.
m["Hrkt"] = process_ranges{
"คานะ",
"syllabary",
aliases = {"Kana", "Japanese syllabaries"},
ranges = union(
m["Hira"].ranges,
m["Kana"].ranges
),
spaces = false,
}
m["Jpan"] = process_ranges{
"ญี่ปุ่น",
"logography, syllabary",
aliases = {"Japanese"},
ranges = union(
m["Hrkt"].ranges,
m["Hani"].ranges,
m["Latn"].ranges
),
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = process_ranges{
"เกาหลี",
"logography, syllabary",
aliases = {"Korean"},
ranges = union(
m["Hang"].ranges,
m["Hani"].ranges
),
}
return m
3lwt776zfa8frl90rp0fx36qcur21sn
มกรา
0
41958
1908644
1558668
2024-04-26T05:39:43Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|มะ-กะ-รา|มก-กะ-รา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|มกราคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
750wcv2hdbqcxhrwd7sjopdj74dh19v
มีนา
0
41959
1908648
1883279
2024-04-26T05:40:16Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|มี-นา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|มีนาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
0t3pn8hrgjlzuce755at9p0gmjwkrnk
เมษา
0
41960
1908650
1558673
2024-04-26T05:40:27Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|เม-สา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|เมษายน}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
boanobwoozgq3ybekm6wdv2ucarx5ik
พฤษภา
0
41961
1908642
1558669
2024-04-26T05:39:24Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|พฺรึด-สะ-พา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|พฤษภาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
ogs1ufvvis62veyw1akosiz693uriiz
มิถุนา
0
41962
1908646
1558671
2024-04-26T05:39:55Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|มิ-ถุ-นา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|มิถุนายน}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
cae4yhevkloyi1jna434j2f8lu303xp
กรกฎา
0
41971
1908632
1558662
2024-04-26T05:38:04Z
Octahedron80
267
/* คำแปลภาษาอื่น */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|กะ-ระ-กะ-ดา|กะ-รัก-กะ-ดา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|กรกฎาคม}}
==== คำแปลภาษาอื่น ====
{{trans-see|กรกฎาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
r5cvysngxrg9jlmd3w64tqwoa16sop1
สิงหา
0
41972
1908652
1558675
2024-04-26T05:40:39Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|สิง-หา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|สิงหาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
t01y4334d40nqkyod8nahjpvmp3hj33
ตุลา
0
41973
1908636
1896590
2024-04-26T05:38:42Z
Octahedron80
267
/* คำนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ตุ-ลา}}
=== รากศัพท์ 1 ===
{{bor+|th|sa|तुला||ตราชู; มาตราชั่ง}} หรือ{{bor|th|pi|ตุลา||ตราชู; มาตราชั่ง}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|แบบ}} [[คันชั่ง]], [[ตราชู]]
# [[ชื่อ]][[มาตรา]][[วัด]][[น้ำหนัก]][[มคธ]] [[เท่า]][[กับ]] 100 [[ปละ]]
=== รากศัพท์ 2 ===
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|ตุลาคม}}
=== รากศัพท์ 3 ===
{{clipping|th|มาตุลา}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ราชา}} [[น้า]], น้องชายของแม่
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
mupvjuvqk7blvktplzz6444h0dkly3b
พฤศจิกา
0
41974
1908641
1558670
2024-04-26T05:39:19Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|พฺรึด-สะ-จิ-กา|พฺรึด-จิ-กา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|พฤศจิกายน}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
7ndkxjvcnl74s8zy05au8ysist5wqnm
ธันวา
0
41975
1908638
1558667
2024-04-26T05:39:01Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ทัน-วา}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{lb|th|ไม่ทางการ}} {{clipping of|th|ธันวาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
2e7phw7r29q2ys7q8w58cz9eki9mdku
ม.ค.
0
42085
1908643
1883117
2024-04-26T05:39:35Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|มอ-คอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|มกราคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
f1fdmmpzcfxdpnl37eai77l8z8r8izw
มี.ค.
0
42086
1908647
1883121
2024-04-26T05:40:13Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|มี-คอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|มีนาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
hpafxr0gw0smoffxp810dukew349tul
เม.ย.
0
42087
1908649
1885229
2024-04-26T05:40:22Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|เม-ยอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|เมษายน}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
hb6i042o0cila2kteqwc320n5izl960
พ.ค.
0
42088
1908639
1510775
2024-04-26T05:39:08Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|พอ-คอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|พฤษภาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
ggzdcqgydnc06p3wygzhqgd6vp3d3pg
มิ.ย.
0
42089
1908645
1883253
2024-04-26T05:39:49Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|มิ-ยอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|มิถุนายน}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
4a829pqtj38djvz74r4uis5mb89ryic
ส.ค.
0
42090
1908651
1883879
2024-04-26T05:40:36Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|สอ-คอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|สิงหาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
q324oseqvpq09ww1spi7m9iu1nmnd76
พ.ย.
0
42091
1908640
1882859
2024-04-26T05:39:13Z
Octahedron80
267
/* ดูเพิ่ม */
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|พอ-ยอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|พฤศจิกายน}}
==== ดูเพิ่ม ====
* [[พย]]
* [[พย.]]
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
6cmo0db0u87b1b8ccyi3w90g9bv23lp
ธ.ค.
0
42092
1908637
1510822
2024-04-26T05:38:50Z
Octahedron80
267
/* คำวิสามานยนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== การออกเสียง ===
{{th-pron|ทอ-คอ}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# {{อักษรย่อ|th|ธันวาคม}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
4rpc5t2s0bixql2x8okto88jrpihpi5
มอดูล:auto cat
828
142075
1908592
1908035
2024-04-26T05:13:21Z
Octahedron80
267
Scribunto
text/plain
local export = {}
-- Used in multiple places; create a variable for ease in testing.
local poscatboiler_template = "poscatboiler"
local match = mw.ustring.match
local labelPatterns = {
"คำ.-", "เลข", "รูปผัน.-", "พาร์ทิซิเพิล.-", "อุปสรรค", "ปัจจัย", "อาคม", "หน่วยคำ.-", "อักษรย่อ.-",
"เครื่องหมายวรรคตอน", "ตัวอักษร", "ตัวเลข", "พยางค์", "สัญลักษณ์", "วลี", "ประโยค", "ฮิรางานะ.-", "คาตากานะ.-",
"ภาพพจน์", "สำนวน", "เฉิงยฺหวี่", "พาลินโดรม", "สแลง.-", "ชื่อ.-", "นามสกุล",
"จำนวน.-", --เป็นได้ทั้ง POS และ topic
"การ.-", "ภาคผนวก", "มอดูล.-", "แม่แบบ.-", "หน้าที่มีลิงก์แดง.-", "รายการอรรถาภิธาน",
"ภาษาใน.-" --ประเทศ/รัฐ/ฯลฯ...
}
local function split_label_lang(titleObject)
local getByCanonicalName = require("Module:languages").getByCanonicalName
local canonicalName
local label, lang
local pattern
--[=[
-- Progressively add another word to the potential canonical name until it
-- matches an actual canonical name.
local words = mw.text.split(titleObject.text, " ")
for i = #words - 1, 1, -1 do
canonicalName = table.concat(words, " ", 1, i)
lang = getByCanonicalName(canonicalName)
if lang then
break
end
end
local label = lang and titleObject.text:sub(#canonicalName + 2)
or titleObject.text
--]=]
if titleObject.text:find("^ศัพท์") and not titleObject.text:find("^ศัพท์ที่") then
-- ตามลำดับ "แบ่ง" ขึ้นก่อนเพราะมีหมวดหมู่ "หน้าที่"
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(แบ่ง.+)$")
if not canonicalName then
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(ที่.+)$")
end
if canonicalName then
label = "ศัพท์" .. label
lang = getByCanonicalName(canonicalName)
end
else
for _,pattern in ipairs(labelPatterns) do
label, canonicalName = match(titleObject.text, "^(" .. pattern .. ")ภาษา(.+)$")
if canonicalName then
canonicalName1, inScript = canonicalName:match("^(.+)(ในอักษร.+)$")
if canonicalName1 and inScript then
canonicalName = canonicalName1
label = label .. inScript
end
lang = getByCanonicalName(canonicalName)
break
end
end
end
return label, lang
end
--[==[
Copy the arguments in `source` to those in `receiver`, offsetting numeric arguments by `offset`.
Handlers that invoke {{tl|poscatboiler}} use this to pass user-specified arguments to {{tl|poscatboiler}} along with
arguments specifying the category and its type. Specifically, {{tl|poscatboiler}} requires arguments specified in 1=
(the language name embedded in the category), 2= (the category name minus the language name and any suffixed script),
3= (the script code of categories of the form [[:Category:Pali nouns in Devanagari script]]) and raw= (true for raw
categories). User-specified numeric parameters are passed in 4= and above hence `offset` will normally be 3.
]==]
function export.copy_args(receiver, source, offset)
for k, v in pairs(source) do
if type(k) == "number" then
receiver[k + offset] = v
else
receiver[k] = v
end
end
return receiver
end
-- List of handler functions that try to match the page name. A handler should return a table of template title plus
-- arguments to be passed to frame:expandTemplate(). If a handler does not recognize the page name, it should return
-- nil. Note that the order of functions matters!
local handlers = {}
local function add_handler(func)
table.insert(handlers, func)
end
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not titleObject.text:find("^อรรถาภิธาน:[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^อรรถาภิธาน:([a-z-]+):(.+)$")
return {title = "ws topic cat", args = {code, label}}
end)
--]=]
-- Topical categories
add_handler(function(titleObject)
--[=[
if not titleObject.text:find("^[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^([a-z-]+):(.+)$")
--]=]
-- เขียนใหม่
if not titleObject.text:find("^ภาษา.+:.") then
return nil
end
langName, label = match(titleObject.text, "^ภาษา(.+):(.+)$")
code = (langName and require("Module:languages").getByCanonicalName(langName):getCode() or nil)
return {title = "topic cat", args = {code, label}}
end)
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
function export.ine(arg)
if not arg then return nil end
arg = mw.text.trim(arg)
if arg == "" then return nil end
return arg
end
-- Dialect categories e.g. for [[:Category:New Zealand English]] or [[:Category:Issime Walser]]
add_handler(function(titleObject, args)
if export.ine(args.dialect) then
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end
end)
-- poscatboiler lang-specific
add_handler(function(titleObject, args)
local label, lang = split_label_lang(titleObject)
if lang then
local baseLabel, script = label:match("(.+)ในอักษร(.-)$")
if script and baseLabel ~= "ศัพท์" then
local scriptObj = require("Module:scripts").getByCanonicalName(script)
if scriptObj then
return {title = poscatboiler_template, args =
export.copy_args({lang:getCode(), baseLabel, scriptObj:getCode()}, args, 3)}, true
end
end
return {title = poscatboiler_template, args = export.copy_args({lang:getCode(), label}, args, 3)}, true
end
end)
-- poscatboiler umbrella category
add_handler(function(titleObject, args)
local label = match(titleObject.text, "(.+)แบ่งตามภาษา$")
if label then
return {
title = poscatboiler_template,
-- The poscatboiler code will appropriately lowercase if needed.
args = export.copy_args({nil, label}, args, 3)
}, true
end
end)
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not titleObject.text:find("^อรรถาภิธาน:") then
return nil
end
return {title = "ws topic cat", args = {nil, string.sub(titleObject.text, 11)}}
end)
--]=]
-- topic cat
add_handler(function(titleObject)
return {title = "topic cat", args = {nil, titleObject.text}}
end)
-- poscatboiler raw handlers
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end)
-- poscatboiler umbrella handlers without 'by language'
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
return {
title = poscatboiler_template,
args = args,
}, true
end)
function export.show(frame)
local args = frame:getParent().args
local titleObject = mw.title.getCurrentTitle()
if titleObject.nsText == "แม่แบบ" then
return "(This template should be used on pages in the Category: namespace.)"
elseif titleObject.nsText ~= "หมวดหมู่" then
error("This template/module can only be used on pages in the Category: namespace.")
end
local function extra_args_error(templateObject)
local numargstext = {}
local argstext = {}
local maxargnum = 0
for k, v in pairs(templateObject.args) do
if type(v) == "number" and v > maxargnum then
maxargnum = v
else
table.insert(numargstext, "|" .. k .. "=" .. v)
end
end
for i = 1, maxargnum do
local v = templateObject.args[i]
if v == nil then
v = "(nil)"
elseif v == true then
v = "(true)"
elseif v == false then
v = "(false)"
end
table.insert(argstext, "|" .. v)
end
error("Extra arguments to {{auto cat}} not allowed for this category (recognized as {{[[Template:" ..
templateObject.title .. "|" .. templateObject.title .. "]]" .. numargstext .. argstext .. "}}")
end
local first_error_templateObject, first_error_args_handled, first_error_cattext
-- Go through each handler in turn. If a handler doesn't recognize the format of the
-- category, it will return nil, and we will consider the next handler. Otherwise,
-- it returns a template name and arguments to call it with, but even then, that template
-- might return an error, and we need to consider the next handler. This happens,
-- for example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of
-- a language, so the handler for {{poscatboiler}} fires and tries to find a label
-- "Grosso, Brazil". This throws an error, and previously, this blocked fruther handler
-- consideration, but now we check for the error and continue checking handlers;
-- eventually, {{topic cat}} will fire and correctly handle the category.
for _, handler in ipairs(handlers) do
local templateObject, args_handled = handler(titleObject, args)
if templateObject then
require("Module:debug").track("auto cat/" .. templateObject.title)
local cattext = frame:expandTemplate(templateObject)
-- FIXME! We check for specific text found in most or all error messages generated
-- by category tree templates (in particular, the second piece of text below should be
-- in all error messages generated when a given module doesn't recognize a category name).
-- If this text ever changes in the source modules (e.g. [[Module:category tree]],
-- it needs to be changed here as well.)
if cattext:find("Category:Categories that are not defined in the category tree") or
cattext:find("The automatically%-generated contents of this category has errors") then
if not first_error_cattext then
first_error_templateObject = templateObject
first_error_args_handled = args_handled
first_error_cattext = cattext
end
else
if not args_handled and next(args) then
extra_args_error(templateObject)
end
return cattext
end
end
end
if first_error_cattext then
if not first_error_args_handled and next(args) then
extra_args_error(first_error_templateObject)
end
return first_error_cattext
end
error("{{auto cat}} couldn't recognize format of category name")
end
-- test function for injecting title string
function export.test(title)
local args = {}
if type(title) == "table" then
if type(title.args[1]) == "string" then
args = title.args
else
args = title:getParent().args
end
title = args[1]
end
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, args)
if t then
return t.title
end
end
end
-- use ExpandTemplates to "transclude" this on any Category: namespace page
function export.testTransclusion(frame)
local args = frame.args
local title = args[1]
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, {})
if t then
return frame:expandTemplate(t)
end
end
end
return export
1aygibcbhd4ulcmocqidn3secvkkf2l
1908593
1908592
2024-04-26T05:14:50Z
Octahedron80
267
Scribunto
text/plain
local export = {}
-- Used in multiple places; create a variable for ease in testing.
local poscatboiler_template = "poscatboiler"
local find = mw.ustring.find
local match = mw.ustring.match
local labelPatterns = {
"คำ.-", "เลข", "รูปผัน.-", "พาร์ทิซิเพิล.-", "อุปสรรค", "ปัจจัย", "อาคม", "หน่วยคำ.-", "อักษรย่อ.-",
"เครื่องหมายวรรคตอน", "ตัวอักษร", "ตัวเลข", "พยางค์", "สัญลักษณ์", "วลี", "ประโยค", "ฮิรางานะ.-", "คาตากานะ.-",
"ภาพพจน์", "สำนวน", "เฉิงยฺหวี่", "พาลินโดรม", "สแลง.-", "ชื่อ.-", "นามสกุล",
"จำนวน.-", --เป็นได้ทั้ง POS และ topic
"การ.-", "ภาคผนวก", "มอดูล.-", "แม่แบบ.-", "หน้าที่มีลิงก์แดง.-", "รายการอรรถาภิธาน",
"ภาษาใน.-" --ประเทศ/รัฐ/ฯลฯ...
}
local function split_label_lang(titleObject)
local getByCanonicalName = require("Module:languages").getByCanonicalName
local canonicalName
local label, lang
local pattern
--[=[
-- Progressively add another word to the potential canonical name until it
-- matches an actual canonical name.
local words = mw.text.split(titleObject.text, " ")
for i = #words - 1, 1, -1 do
canonicalName = table.concat(words, " ", 1, i)
lang = getByCanonicalName(canonicalName)
if lang then
break
end
end
local label = lang and titleObject.text:sub(#canonicalName + 2)
or titleObject.text
--]=]
if find(titleObject.text, "^ศัพท์") and not find(titleObject.text, "^ศัพท์ที่") then
-- ตามลำดับ "แบ่ง" ขึ้นก่อนเพราะมีหมวดหมู่ "หน้าที่"
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(แบ่ง.+)$")
if not canonicalName then
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(ที่.+)$")
end
if canonicalName then
label = "ศัพท์" .. label
lang = getByCanonicalName(canonicalName)
end
else
for _,pattern in ipairs(labelPatterns) do
label, canonicalName = match(titleObject.text, "^(" .. pattern .. ")ภาษา(.+)$")
if canonicalName then
canonicalName1, inScript = canonicalName:match("^(.+)(ในอักษร.+)$")
if canonicalName1 and inScript then
canonicalName = canonicalName1
label = label .. inScript
end
lang = getByCanonicalName(canonicalName)
break
end
end
end
return label, lang
end
--[==[
Copy the arguments in `source` to those in `receiver`, offsetting numeric arguments by `offset`.
Handlers that invoke {{tl|poscatboiler}} use this to pass user-specified arguments to {{tl|poscatboiler}} along with
arguments specifying the category and its type. Specifically, {{tl|poscatboiler}} requires arguments specified in 1=
(the language name embedded in the category), 2= (the category name minus the language name and any suffixed script),
3= (the script code of categories of the form [[:Category:Pali nouns in Devanagari script]]) and raw= (true for raw
categories). User-specified numeric parameters are passed in 4= and above hence `offset` will normally be 3.
]==]
function export.copy_args(receiver, source, offset)
for k, v in pairs(source) do
if type(k) == "number" then
receiver[k + offset] = v
else
receiver[k] = v
end
end
return receiver
end
-- List of handler functions that try to match the page name. A handler should return a table of template title plus
-- arguments to be passed to frame:expandTemplate(). If a handler does not recognize the page name, it should return
-- nil. Note that the order of functions matters!
local handlers = {}
local function add_handler(func)
table.insert(handlers, func)
end
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^อรรถาภิธาน:([a-z-]+):(.+)$")
return {title = "ws topic cat", args = {code, label}}
end)
--]=]
-- Topical categories
add_handler(function(titleObject)
--[=[
if not find(titleObject.text, "^[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^([a-z-]+):(.+)$")
--]=]
-- เขียนใหม่
if not find(titleObject.text, "^ภาษา.+:.") then
return nil
end
langName, label = match(titleObject.text, "^ภาษา(.+):(.+)$")
code = (langName and require("Module:languages").getByCanonicalName(langName):getCode() or nil)
return {title = "topic cat", args = {code, label}}
end)
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
function export.ine(arg)
if not arg then return nil end
arg = mw.text.trim(arg)
if arg == "" then return nil end
return arg
end
-- Dialect categories e.g. for [[:Category:New Zealand English]] or [[:Category:Issime Walser]]
add_handler(function(titleObject, args)
if export.ine(args.dialect) then
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end
end)
-- poscatboiler lang-specific
add_handler(function(titleObject, args)
local label, lang = split_label_lang(titleObject)
if lang then
local baseLabel, script = label:match("(.+)ในอักษร(.-)$")
if script and baseLabel ~= "ศัพท์" then
local scriptObj = require("Module:scripts").getByCanonicalName(script)
if scriptObj then
return {title = poscatboiler_template, args =
export.copy_args({lang:getCode(), baseLabel, scriptObj:getCode()}, args, 3)}, true
end
end
return {title = poscatboiler_template, args = export.copy_args({lang:getCode(), label}, args, 3)}, true
end
end)
-- poscatboiler umbrella category
add_handler(function(titleObject, args)
local label = match(titleObject.text, "(.+)แบ่งตามภาษา$")
if label then
return {
title = poscatboiler_template,
-- The poscatboiler code will appropriately lowercase if needed.
args = export.copy_args({nil, label}, args, 3)
}, true
end
end)
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:") then
return nil
end
return {title = "ws topic cat", args = {nil, string.sub(titleObject.text, 11)}}
end)
--]=]
-- topic cat
add_handler(function(titleObject)
return {title = "topic cat", args = {nil, titleObject.text}}
end)
-- poscatboiler raw handlers
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end)
-- poscatboiler umbrella handlers without 'by language'
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
return {
title = poscatboiler_template,
args = args,
}, true
end)
function export.show(frame)
local args = frame:getParent().args
local titleObject = mw.title.getCurrentTitle()
if titleObject.nsText == "แม่แบบ" then
return "(This template should be used on pages in the Category: namespace.)"
elseif titleObject.nsText ~= "หมวดหมู่" then
error("This template/module can only be used on pages in the Category: namespace.")
end
local function extra_args_error(templateObject)
local numargstext = {}
local argstext = {}
local maxargnum = 0
for k, v in pairs(templateObject.args) do
if type(v) == "number" and v > maxargnum then
maxargnum = v
else
table.insert(numargstext, "|" .. k .. "=" .. v)
end
end
for i = 1, maxargnum do
local v = templateObject.args[i]
if v == nil then
v = "(nil)"
elseif v == true then
v = "(true)"
elseif v == false then
v = "(false)"
end
table.insert(argstext, "|" .. v)
end
error("Extra arguments to {{auto cat}} not allowed for this category (recognized as {{[[Template:" ..
templateObject.title .. "|" .. templateObject.title .. "]]" .. numargstext .. argstext .. "}}")
end
local first_error_templateObject, first_error_args_handled, first_error_cattext
-- Go through each handler in turn. If a handler doesn't recognize the format of the
-- category, it will return nil, and we will consider the next handler. Otherwise,
-- it returns a template name and arguments to call it with, but even then, that template
-- might return an error, and we need to consider the next handler. This happens,
-- for example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of
-- a language, so the handler for {{poscatboiler}} fires and tries to find a label
-- "Grosso, Brazil". This throws an error, and previously, this blocked fruther handler
-- consideration, but now we check for the error and continue checking handlers;
-- eventually, {{topic cat}} will fire and correctly handle the category.
for _, handler in ipairs(handlers) do
local templateObject, args_handled = handler(titleObject, args)
if templateObject then
require("Module:debug").track("auto cat/" .. templateObject.title)
local cattext = frame:expandTemplate(templateObject)
-- FIXME! We check for specific text found in most or all error messages generated
-- by category tree templates (in particular, the second piece of text below should be
-- in all error messages generated when a given module doesn't recognize a category name).
-- If this text ever changes in the source modules (e.g. [[Module:category tree]],
-- it needs to be changed here as well.)
if cattext:find("Category:Categories that are not defined in the category tree") or
cattext:find("The automatically%-generated contents of this category has errors") then
if not first_error_cattext then
first_error_templateObject = templateObject
first_error_args_handled = args_handled
first_error_cattext = cattext
end
else
if not args_handled and next(args) then
extra_args_error(templateObject)
end
return cattext
end
end
end
if first_error_cattext then
if not first_error_args_handled and next(args) then
extra_args_error(first_error_templateObject)
end
return first_error_cattext
end
error("{{auto cat}} couldn't recognize format of category name")
end
-- test function for injecting title string
function export.test(title)
local args = {}
if type(title) == "table" then
if type(title.args[1]) == "string" then
args = title.args
else
args = title:getParent().args
end
title = args[1]
end
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, args)
if t then
return t.title
end
end
end
-- use ExpandTemplates to "transclude" this on any Category: namespace page
function export.testTransclusion(frame)
local args = frame.args
local title = args[1]
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, {})
if t then
return frame:expandTemplate(t)
end
end
end
return export
31nr1eecmskeocxk8qg8qlw7e06mcjz
1908594
1908593
2024-04-26T05:15:59Z
Octahedron80
267
Scribunto
text/plain
local export = {}
-- Used in multiple places; create a variable for ease in testing.
local poscatboiler_template = "poscatboiler"
local find = mw.ustring.find
local match = mw.ustring.match
local sub = mw.ustring.sub
local labelPatterns = {
"คำ.-", "เลข", "รูปผัน.-", "พาร์ทิซิเพิล.-", "อุปสรรค", "ปัจจัย", "อาคม", "หน่วยคำ.-", "อักษรย่อ.-",
"เครื่องหมายวรรคตอน", "ตัวอักษร", "ตัวเลข", "พยางค์", "สัญลักษณ์", "วลี", "ประโยค", "ฮิรางานะ.-", "คาตากานะ.-",
"ภาพพจน์", "สำนวน", "เฉิงยฺหวี่", "พาลินโดรม", "สแลง.-", "ชื่อ.-", "นามสกุล",
"จำนวน.-", --เป็นได้ทั้ง POS และ topic
"การ.-", "ภาคผนวก", "มอดูล.-", "แม่แบบ.-", "หน้าที่มีลิงก์แดง.-", "รายการอรรถาภิธาน",
"ภาษาใน.-" --ประเทศ/รัฐ/ฯลฯ...
}
local function split_label_lang(titleObject)
local getByCanonicalName = require("Module:languages").getByCanonicalName
local canonicalName
local label, lang
local pattern
--[=[
-- Progressively add another word to the potential canonical name until it
-- matches an actual canonical name.
local words = mw.text.split(titleObject.text, " ")
for i = #words - 1, 1, -1 do
canonicalName = table.concat(words, " ", 1, i)
lang = getByCanonicalName(canonicalName)
if lang then
break
end
end
local label = lang and sub(titleObject.text, #canonicalName + 2)
or titleObject.text
--]=]
if find(titleObject.text, "^ศัพท์") and not find(titleObject.text, "^ศัพท์ที่") then
-- ตามลำดับ "แบ่ง" ขึ้นก่อนเพราะมีหมวดหมู่ "หน้าที่"
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(แบ่ง.+)$")
if not canonicalName then
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(ที่.+)$")
end
if canonicalName then
label = "ศัพท์" .. label
lang = getByCanonicalName(canonicalName)
end
else
for _,pattern in ipairs(labelPatterns) do
label, canonicalName = match(titleObject.text, "^(" .. pattern .. ")ภาษา(.+)$")
if canonicalName then
canonicalName1, inScript = canonicalName:match("^(.+)(ในอักษร.+)$")
if canonicalName1 and inScript then
canonicalName = canonicalName1
label = label .. inScript
end
lang = getByCanonicalName(canonicalName)
break
end
end
end
return label, lang
end
--[==[
Copy the arguments in `source` to those in `receiver`, offsetting numeric arguments by `offset`.
Handlers that invoke {{tl|poscatboiler}} use this to pass user-specified arguments to {{tl|poscatboiler}} along with
arguments specifying the category and its type. Specifically, {{tl|poscatboiler}} requires arguments specified in 1=
(the language name embedded in the category), 2= (the category name minus the language name and any suffixed script),
3= (the script code of categories of the form [[:Category:Pali nouns in Devanagari script]]) and raw= (true for raw
categories). User-specified numeric parameters are passed in 4= and above hence `offset` will normally be 3.
]==]
function export.copy_args(receiver, source, offset)
for k, v in pairs(source) do
if type(k) == "number" then
receiver[k + offset] = v
else
receiver[k] = v
end
end
return receiver
end
-- List of handler functions that try to match the page name. A handler should return a table of template title plus
-- arguments to be passed to frame:expandTemplate(). If a handler does not recognize the page name, it should return
-- nil. Note that the order of functions matters!
local handlers = {}
local function add_handler(func)
table.insert(handlers, func)
end
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^อรรถาภิธาน:([a-z-]+):(.+)$")
return {title = "ws topic cat", args = {code, label}}
end)
--]=]
-- Topical categories
add_handler(function(titleObject)
--[=[
if not find(titleObject.text, "^[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^([a-z-]+):(.+)$")
--]=]
-- เขียนใหม่
if not find(titleObject.text, "^ภาษา.+:.") then
return nil
end
langName, label = match(titleObject.text, "^ภาษา(.+):(.+)$")
code = (langName and require("Module:languages").getByCanonicalName(langName):getCode() or nil)
return {title = "topic cat", args = {code, label}}
end)
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
function export.ine(arg)
if not arg then return nil end
arg = mw.text.trim(arg)
if arg == "" then return nil end
return arg
end
-- Dialect categories e.g. for [[:Category:New Zealand English]] or [[:Category:Issime Walser]]
add_handler(function(titleObject, args)
if export.ine(args.dialect) then
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end
end)
-- poscatboiler lang-specific
add_handler(function(titleObject, args)
local label, lang = split_label_lang(titleObject)
if lang then
local baseLabel, script = label:match("(.+)ในอักษร(.-)$")
if script and baseLabel ~= "ศัพท์" then
local scriptObj = require("Module:scripts").getByCanonicalName(script)
if scriptObj then
return {title = poscatboiler_template, args =
export.copy_args({lang:getCode(), baseLabel, scriptObj:getCode()}, args, 3)}, true
end
end
return {title = poscatboiler_template, args = export.copy_args({lang:getCode(), label}, args, 3)}, true
end
end)
-- poscatboiler umbrella category
add_handler(function(titleObject, args)
local label = match(titleObject.text, "(.+)แบ่งตามภาษา$")
if label then
return {
title = poscatboiler_template,
-- The poscatboiler code will appropriately lowercase if needed.
args = export.copy_args({nil, label}, args, 3)
}, true
end
end)
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:") then
return nil
end
return {title = "ws topic cat", args = {nil, string.sub(titleObject.text, 11)}}
end)
--]=]
-- topic cat
add_handler(function(titleObject)
return {title = "topic cat", args = {nil, titleObject.text}}
end)
-- poscatboiler raw handlers
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end)
-- poscatboiler umbrella handlers without 'by language'
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
return {
title = poscatboiler_template,
args = args,
}, true
end)
function export.show(frame)
local args = frame:getParent().args
local titleObject = mw.title.getCurrentTitle()
if titleObject.nsText == "แม่แบบ" then
return "(This template should be used on pages in the Category: namespace.)"
elseif titleObject.nsText ~= "หมวดหมู่" then
error("This template/module can only be used on pages in the Category: namespace.")
end
local function extra_args_error(templateObject)
local numargstext = {}
local argstext = {}
local maxargnum = 0
for k, v in pairs(templateObject.args) do
if type(v) == "number" and v > maxargnum then
maxargnum = v
else
table.insert(numargstext, "|" .. k .. "=" .. v)
end
end
for i = 1, maxargnum do
local v = templateObject.args[i]
if v == nil then
v = "(nil)"
elseif v == true then
v = "(true)"
elseif v == false then
v = "(false)"
end
table.insert(argstext, "|" .. v)
end
error("Extra arguments to {{auto cat}} not allowed for this category (recognized as {{[[Template:" ..
templateObject.title .. "|" .. templateObject.title .. "]]" .. numargstext .. argstext .. "}}")
end
local first_error_templateObject, first_error_args_handled, first_error_cattext
-- Go through each handler in turn. If a handler doesn't recognize the format of the
-- category, it will return nil, and we will consider the next handler. Otherwise,
-- it returns a template name and arguments to call it with, but even then, that template
-- might return an error, and we need to consider the next handler. This happens,
-- for example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of
-- a language, so the handler for {{poscatboiler}} fires and tries to find a label
-- "Grosso, Brazil". This throws an error, and previously, this blocked fruther handler
-- consideration, but now we check for the error and continue checking handlers;
-- eventually, {{topic cat}} will fire and correctly handle the category.
for _, handler in ipairs(handlers) do
local templateObject, args_handled = handler(titleObject, args)
if templateObject then
require("Module:debug").track("auto cat/" .. templateObject.title)
local cattext = frame:expandTemplate(templateObject)
-- FIXME! We check for specific text found in most or all error messages generated
-- by category tree templates (in particular, the second piece of text below should be
-- in all error messages generated when a given module doesn't recognize a category name).
-- If this text ever changes in the source modules (e.g. [[Module:category tree]],
-- it needs to be changed here as well.)
if cattext:find("Category:Categories that are not defined in the category tree") or
cattext:find("The automatically%-generated contents of this category has errors") then
if not first_error_cattext then
first_error_templateObject = templateObject
first_error_args_handled = args_handled
first_error_cattext = cattext
end
else
if not args_handled and next(args) then
extra_args_error(templateObject)
end
return cattext
end
end
end
if first_error_cattext then
if not first_error_args_handled and next(args) then
extra_args_error(first_error_templateObject)
end
return first_error_cattext
end
error("{{auto cat}} couldn't recognize format of category name")
end
-- test function for injecting title string
function export.test(title)
local args = {}
if type(title) == "table" then
if type(title.args[1]) == "string" then
args = title.args
else
args = title:getParent().args
end
title = args[1]
end
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, args)
if t then
return t.title
end
end
end
-- use ExpandTemplates to "transclude" this on any Category: namespace page
function export.testTransclusion(frame)
local args = frame.args
local title = args[1]
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, {})
if t then
return frame:expandTemplate(t)
end
end
end
return export
gj4trfz5hyb4b33qguz82xdkckizpkp
1908595
1908594
2024-04-26T05:16:55Z
Octahedron80
267
Scribunto
text/plain
local export = {}
-- Used in multiple places; create a variable for ease in testing.
local poscatboiler_template = "poscatboiler"
local find = mw.ustring.find
local match = mw.ustring.match
local sub = mw.ustring.sub
local labelPatterns = {
"คำ.-", "เลข", "รูปผัน.-", "พาร์ทิซิเพิล.-", "อุปสรรค", "ปัจจัย", "อาคม", "หน่วยคำ.-", "อักษรย่อ.-",
"เครื่องหมายวรรคตอน", "ตัวอักษร", "ตัวเลข", "พยางค์", "สัญลักษณ์", "วลี", "ประโยค", "ฮิรางานะ.-", "คาตากานะ.-",
"ภาพพจน์", "สำนวน", "เฉิงยฺหวี่", "พาลินโดรม", "สแลง.-", "ชื่อ.-", "นามสกุล",
"จำนวน.-", --เป็นได้ทั้ง POS และ topic
"การ.-", "ภาคผนวก", "มอดูล.-", "แม่แบบ.-", "หน้าที่มีลิงก์แดง.-", "รายการอรรถาภิธาน",
"ภาษาใน.-" --ประเทศ/รัฐ/ฯลฯ...
}
local function split_label_lang(titleObject)
local getByCanonicalName = require("Module:languages").getByCanonicalName
local canonicalName
local label, lang
local pattern
--[=[
-- Progressively add another word to the potential canonical name until it
-- matches an actual canonical name.
local words = mw.text.split(titleObject.text, " ")
for i = #words - 1, 1, -1 do
canonicalName = table.concat(words, " ", 1, i)
lang = getByCanonicalName(canonicalName)
if lang then
break
end
end
local label = lang and sub(titleObject.text, #canonicalName + 2)
or titleObject.text
--]=]
if find(titleObject.text, "^ศัพท์") and not find(titleObject.text, "^ศัพท์ที่") then
-- ตามลำดับ "แบ่ง" ขึ้นก่อนเพราะมีหมวดหมู่ "หน้าที่"
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(แบ่ง.+)$")
if not canonicalName then
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(ที่.+)$")
end
if canonicalName then
label = "ศัพท์" .. label
lang = getByCanonicalName(canonicalName)
end
else
for _,pattern in ipairs(labelPatterns) do
label, canonicalName = match(titleObject.text, "^(" .. pattern .. ")ภาษา(.+)$")
if canonicalName then
canonicalName1, inScript = match(canonicalName, "^(.+)(ในอักษร.+)$")
if canonicalName1 and inScript then
canonicalName = canonicalName1
label = label .. inScript
end
lang = getByCanonicalName(canonicalName)
break
end
end
end
return label, lang
end
--[==[
Copy the arguments in `source` to those in `receiver`, offsetting numeric arguments by `offset`.
Handlers that invoke {{tl|poscatboiler}} use this to pass user-specified arguments to {{tl|poscatboiler}} along with
arguments specifying the category and its type. Specifically, {{tl|poscatboiler}} requires arguments specified in 1=
(the language name embedded in the category), 2= (the category name minus the language name and any suffixed script),
3= (the script code of categories of the form [[:Category:Pali nouns in Devanagari script]]) and raw= (true for raw
categories). User-specified numeric parameters are passed in 4= and above hence `offset` will normally be 3.
]==]
function export.copy_args(receiver, source, offset)
for k, v in pairs(source) do
if type(k) == "number" then
receiver[k + offset] = v
else
receiver[k] = v
end
end
return receiver
end
-- List of handler functions that try to match the page name. A handler should return a table of template title plus
-- arguments to be passed to frame:expandTemplate(). If a handler does not recognize the page name, it should return
-- nil. Note that the order of functions matters!
local handlers = {}
local function add_handler(func)
table.insert(handlers, func)
end
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^อรรถาภิธาน:([a-z-]+):(.+)$")
return {title = "ws topic cat", args = {code, label}}
end)
--]=]
-- Topical categories
add_handler(function(titleObject)
--[=[
if not find(titleObject.text, "^[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^([a-z-]+):(.+)$")
--]=]
-- เขียนใหม่
if not find(titleObject.text, "^ภาษา.+:.") then
return nil
end
langName, label = match(titleObject.text, "^ภาษา(.+):(.+)$")
code = (langName and require("Module:languages").getByCanonicalName(langName):getCode() or nil)
return {title = "topic cat", args = {code, label}}
end)
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
function export.ine(arg)
if not arg then return nil end
arg = mw.text.trim(arg)
if arg == "" then return nil end
return arg
end
-- Dialect categories e.g. for [[:Category:New Zealand English]] or [[:Category:Issime Walser]]
add_handler(function(titleObject, args)
if export.ine(args.dialect) then
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end
end)
-- poscatboiler lang-specific
add_handler(function(titleObject, args)
local label, lang = split_label_lang(titleObject)
if lang then
local baseLabel, script = label:match("(.+)ในอักษร(.-)$")
if script and baseLabel ~= "ศัพท์" then
local scriptObj = require("Module:scripts").getByCanonicalName(script)
if scriptObj then
return {title = poscatboiler_template, args =
export.copy_args({lang:getCode(), baseLabel, scriptObj:getCode()}, args, 3)}, true
end
end
return {title = poscatboiler_template, args = export.copy_args({lang:getCode(), label}, args, 3)}, true
end
end)
-- poscatboiler umbrella category
add_handler(function(titleObject, args)
local label = match(titleObject.text, "(.+)แบ่งตามภาษา$")
if label then
return {
title = poscatboiler_template,
-- The poscatboiler code will appropriately lowercase if needed.
args = export.copy_args({nil, label}, args, 3)
}, true
end
end)
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:") then
return nil
end
return {title = "ws topic cat", args = {nil, string.sub(titleObject.text, 11)}}
end)
--]=]
-- topic cat
add_handler(function(titleObject)
return {title = "topic cat", args = {nil, titleObject.text}}
end)
-- poscatboiler raw handlers
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end)
-- poscatboiler umbrella handlers without 'by language'
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
return {
title = poscatboiler_template,
args = args,
}, true
end)
function export.show(frame)
local args = frame:getParent().args
local titleObject = mw.title.getCurrentTitle()
if titleObject.nsText == "แม่แบบ" then
return "(This template should be used on pages in the Category: namespace.)"
elseif titleObject.nsText ~= "หมวดหมู่" then
error("This template/module can only be used on pages in the Category: namespace.")
end
local function extra_args_error(templateObject)
local numargstext = {}
local argstext = {}
local maxargnum = 0
for k, v in pairs(templateObject.args) do
if type(v) == "number" and v > maxargnum then
maxargnum = v
else
table.insert(numargstext, "|" .. k .. "=" .. v)
end
end
for i = 1, maxargnum do
local v = templateObject.args[i]
if v == nil then
v = "(nil)"
elseif v == true then
v = "(true)"
elseif v == false then
v = "(false)"
end
table.insert(argstext, "|" .. v)
end
error("Extra arguments to {{auto cat}} not allowed for this category (recognized as {{[[Template:" ..
templateObject.title .. "|" .. templateObject.title .. "]]" .. numargstext .. argstext .. "}}")
end
local first_error_templateObject, first_error_args_handled, first_error_cattext
-- Go through each handler in turn. If a handler doesn't recognize the format of the
-- category, it will return nil, and we will consider the next handler. Otherwise,
-- it returns a template name and arguments to call it with, but even then, that template
-- might return an error, and we need to consider the next handler. This happens,
-- for example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of
-- a language, so the handler for {{poscatboiler}} fires and tries to find a label
-- "Grosso, Brazil". This throws an error, and previously, this blocked fruther handler
-- consideration, but now we check for the error and continue checking handlers;
-- eventually, {{topic cat}} will fire and correctly handle the category.
for _, handler in ipairs(handlers) do
local templateObject, args_handled = handler(titleObject, args)
if templateObject then
require("Module:debug").track("auto cat/" .. templateObject.title)
local cattext = frame:expandTemplate(templateObject)
-- FIXME! We check for specific text found in most or all error messages generated
-- by category tree templates (in particular, the second piece of text below should be
-- in all error messages generated when a given module doesn't recognize a category name).
-- If this text ever changes in the source modules (e.g. [[Module:category tree]],
-- it needs to be changed here as well.)
if cattext:find("Category:Categories that are not defined in the category tree") or
cattext:find("The automatically%-generated contents of this category has errors") then
if not first_error_cattext then
first_error_templateObject = templateObject
first_error_args_handled = args_handled
first_error_cattext = cattext
end
else
if not args_handled and next(args) then
extra_args_error(templateObject)
end
return cattext
end
end
end
if first_error_cattext then
if not first_error_args_handled and next(args) then
extra_args_error(first_error_templateObject)
end
return first_error_cattext
end
error("{{auto cat}} couldn't recognize format of category name")
end
-- test function for injecting title string
function export.test(title)
local args = {}
if type(title) == "table" then
if type(title.args[1]) == "string" then
args = title.args
else
args = title:getParent().args
end
title = args[1]
end
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, args)
if t then
return t.title
end
end
end
-- use ExpandTemplates to "transclude" this on any Category: namespace page
function export.testTransclusion(frame)
local args = frame.args
local title = args[1]
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, {})
if t then
return frame:expandTemplate(t)
end
end
end
return export
erb6hfs6z4242nu8l1fs22r83gfhu2q
1908596
1908595
2024-04-26T05:17:59Z
Octahedron80
267
Scribunto
text/plain
local export = {}
-- Used in multiple places; create a variable for ease in testing.
local poscatboiler_template = "poscatboiler"
local find = mw.ustring.find
local match = mw.ustring.match
local sub = mw.ustring.sub
local labelPatterns = {
"คำ.-", "เลข", "รูปผัน.-", "พาร์ทิซิเพิล.-", "อุปสรรค", "ปัจจัย", "อาคม", "หน่วยคำ.-", "อักษรย่อ.-",
"เครื่องหมายวรรคตอน", "ตัวอักษร", "ตัวเลข", "พยางค์", "สัญลักษณ์", "วลี", "ประโยค", "ฮิรางานะ.-", "คาตากานะ.-",
"ภาพพจน์", "สำนวน", "เฉิงยฺหวี่", "พาลินโดรม", "สแลง.-", "ชื่อ.-", "นามสกุล",
"จำนวน.-", --เป็นได้ทั้ง POS และ topic
"การ.-", "ภาคผนวก", "มอดูล.-", "แม่แบบ.-", "หน้าที่มีลิงก์แดง.-", "รายการอรรถาภิธาน",
"ภาษาใน.-" --ประเทศ/รัฐ/ฯลฯ...
}
local function split_label_lang(titleObject)
local getByCanonicalName = require("Module:languages").getByCanonicalName
local canonicalName
local label, lang
local pattern
--[=[
-- Progressively add another word to the potential canonical name until it
-- matches an actual canonical name.
local words = mw.text.split(titleObject.text, " ")
for i = #words - 1, 1, -1 do
canonicalName = table.concat(words, " ", 1, i)
lang = getByCanonicalName(canonicalName)
if lang then
break
end
end
local label = lang and sub(titleObject.text, #canonicalName + 2)
or titleObject.text
--]=]
if find(titleObject.text, "^ศัพท์") and not find(titleObject.text, "^ศัพท์ที่") then
-- ตามลำดับ "แบ่ง" ขึ้นก่อนเพราะมีหมวดหมู่ "หน้าที่"
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(แบ่ง.+)$")
if not canonicalName then
canonicalName, label = match(titleObject.text, "^ศัพท์ภาษา(.+)(ที่.+)$")
end
if canonicalName then
label = "ศัพท์" .. label
lang = getByCanonicalName(canonicalName)
end
else
for _,pattern in ipairs(labelPatterns) do
label, canonicalName = match(titleObject.text, "^(" .. pattern .. ")ภาษา(.+)$")
if canonicalName then
canonicalName1, inScript = match(canonicalName, "^(.+)(ในอักษร.+)$")
if canonicalName1 and inScript then
canonicalName = canonicalName1
label = label .. inScript
end
lang = getByCanonicalName(canonicalName)
break
end
end
end
return label, lang
end
--[==[
Copy the arguments in `source` to those in `receiver`, offsetting numeric arguments by `offset`.
Handlers that invoke {{tl|poscatboiler}} use this to pass user-specified arguments to {{tl|poscatboiler}} along with
arguments specifying the category and its type. Specifically, {{tl|poscatboiler}} requires arguments specified in 1=
(the language name embedded in the category), 2= (the category name minus the language name and any suffixed script),
3= (the script code of categories of the form [[:Category:Pali nouns in Devanagari script]]) and raw= (true for raw
categories). User-specified numeric parameters are passed in 4= and above hence `offset` will normally be 3.
]==]
function export.copy_args(receiver, source, offset)
for k, v in pairs(source) do
if type(k) == "number" then
receiver[k + offset] = v
else
receiver[k] = v
end
end
return receiver
end
-- List of handler functions that try to match the page name. A handler should return a table of template title plus
-- arguments to be passed to frame:expandTemplate(). If a handler does not recognize the page name, it should return
-- nil. Note that the order of functions matters!
local handlers = {}
local function add_handler(func)
table.insert(handlers, func)
end
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^อรรถาภิธาน:([a-z-]+):(.+)$")
return {title = "ws topic cat", args = {code, label}}
end)
--]=]
-- Topical categories
add_handler(function(titleObject)
--[=[
if not find(titleObject.text, "^[a-z-]+:.") then
return nil
end
local code, label = match(titleObject.text, "^([a-z-]+):(.+)$")
--]=]
-- เขียนใหม่
if not find(titleObject.text, "^ภาษา.+:.") then
return nil
end
langName, label = match(titleObject.text, "^ภาษา(.+):(.+)$")
code = (langName and require("Module:languages").getByCanonicalName(langName):getCode() or nil)
return {title = "topic cat", args = {code, label}}
end)
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
function export.ine(arg)
if not arg then return nil end
arg = mw.text.trim(arg)
if arg == "" then return nil end
return arg
end
-- Dialect categories e.g. for [[:Category:New Zealand English]] or [[:Category:Issime Walser]]
add_handler(function(titleObject, args)
if export.ine(args.dialect) then
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end
end)
-- poscatboiler lang-specific
add_handler(function(titleObject, args)
local label, lang = split_label_lang(titleObject)
if lang then
local baseLabel, script = match(label, "(.+)ในอักษร(.-)$")
if script and baseLabel ~= "ศัพท์" then
local scriptObj = require("Module:scripts").getByCanonicalName(script)
if scriptObj then
return {title = poscatboiler_template, args =
export.copy_args({lang:getCode(), baseLabel, scriptObj:getCode()}, args, 3)}, true
end
end
return {title = poscatboiler_template, args = export.copy_args({lang:getCode(), label}, args, 3)}, true
end
end)
-- poscatboiler umbrella category
add_handler(function(titleObject, args)
local label = match(titleObject.text, "(.+)แบ่งตามภาษา$")
if label then
return {
title = poscatboiler_template,
-- The poscatboiler code will appropriately lowercase if needed.
args = export.copy_args({nil, label}, args, 3)
}, true
end
end)
--[=[
-- ws topic cat
add_handler(function(titleObject)
if not find(titleObject.text, "^อรรถาภิธาน:") then
return nil
end
return {title = "ws topic cat", args = {nil, string.sub(titleObject.text, 11)}}
end)
--]=]
-- topic cat
add_handler(function(titleObject)
return {title = "topic cat", args = {nil, titleObject.text}}
end)
-- poscatboiler raw handlers
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_template,
args = args,
}, true
end)
-- poscatboiler umbrella handlers without 'by language'
add_handler(function(titleObject, args)
local args = export.copy_args({nil, titleObject.text}, args, 3)
return {
title = poscatboiler_template,
args = args,
}, true
end)
function export.show(frame)
local args = frame:getParent().args
local titleObject = mw.title.getCurrentTitle()
if titleObject.nsText == "แม่แบบ" then
return "(This template should be used on pages in the Category: namespace.)"
elseif titleObject.nsText ~= "หมวดหมู่" then
error("This template/module can only be used on pages in the Category: namespace.")
end
local function extra_args_error(templateObject)
local numargstext = {}
local argstext = {}
local maxargnum = 0
for k, v in pairs(templateObject.args) do
if type(v) == "number" and v > maxargnum then
maxargnum = v
else
table.insert(numargstext, "|" .. k .. "=" .. v)
end
end
for i = 1, maxargnum do
local v = templateObject.args[i]
if v == nil then
v = "(nil)"
elseif v == true then
v = "(true)"
elseif v == false then
v = "(false)"
end
table.insert(argstext, "|" .. v)
end
error("Extra arguments to {{auto cat}} not allowed for this category (recognized as {{[[Template:" ..
templateObject.title .. "|" .. templateObject.title .. "]]" .. numargstext .. argstext .. "}}")
end
local first_error_templateObject, first_error_args_handled, first_error_cattext
-- Go through each handler in turn. If a handler doesn't recognize the format of the
-- category, it will return nil, and we will consider the next handler. Otherwise,
-- it returns a template name and arguments to call it with, but even then, that template
-- might return an error, and we need to consider the next handler. This happens,
-- for example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of
-- a language, so the handler for {{poscatboiler}} fires and tries to find a label
-- "Grosso, Brazil". This throws an error, and previously, this blocked fruther handler
-- consideration, but now we check for the error and continue checking handlers;
-- eventually, {{topic cat}} will fire and correctly handle the category.
for _, handler in ipairs(handlers) do
local templateObject, args_handled = handler(titleObject, args)
if templateObject then
require("Module:debug").track("auto cat/" .. templateObject.title)
local cattext = frame:expandTemplate(templateObject)
-- FIXME! We check for specific text found in most or all error messages generated
-- by category tree templates (in particular, the second piece of text below should be
-- in all error messages generated when a given module doesn't recognize a category name).
-- If this text ever changes in the source modules (e.g. [[Module:category tree]],
-- it needs to be changed here as well.)
if cattext:find("Category:Categories that are not defined in the category tree") or
cattext:find("The automatically%-generated contents of this category has errors") then
if not first_error_cattext then
first_error_templateObject = templateObject
first_error_args_handled = args_handled
first_error_cattext = cattext
end
else
if not args_handled and next(args) then
extra_args_error(templateObject)
end
return cattext
end
end
end
if first_error_cattext then
if not first_error_args_handled and next(args) then
extra_args_error(first_error_templateObject)
end
return first_error_cattext
end
error("{{auto cat}} couldn't recognize format of category name")
end
-- test function for injecting title string
function export.test(title)
local args = {}
if type(title) == "table" then
if type(title.args[1]) == "string" then
args = title.args
else
args = title:getParent().args
end
title = args[1]
end
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, args)
if t then
return t.title
end
end
end
-- use ExpandTemplates to "transclude" this on any Category: namespace page
function export.testTransclusion(frame)
local args = frame.args
local title = args[1]
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject, {})
if t then
return frame:expandTemplate(t)
end
end
end
return export
hz73jxc874b68z7fxt76g14pz5nl0jp
กรกฎาคม
0
230319
1908623
1632113
2024-04-26T05:35:24Z
Octahedron80
267
/* คำนาม */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
{{com|th|กรกฎ|อาคม}}
=== การออกเสียง ===
{{th-pron|กะ-ระ-กะ-ดา-คม|กะ-รัก-กะ-ดา-คม}}
=== คำนาม ===
{{th-noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 7 [[ตาม]][[สุริยคติ]] [[มี]] 31 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 4 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|ก.ค.}}
* {{sense|คำย่อ}} {{l|th|กรกฎา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
==== คำแปลภาษาอื่น ====
{{trans-top|ชื่อเดือนที่ 7}}
* Lingala: {{t|ln|yúli}}
* Romansch: {{t|rm|fanadour|m}}, {{t|rm|fanadur|m}}
* Svan: {{t|sva|გვირკ}}
* Swazi: {{t+|ss|Khólwáne}}
* Venetian: {{t+|vec|lujo}}, {{t|vec|tháng bảy}}
* กรีก: {{t+|el|Ιούλιος|m}}
* กรีนแลนด์: {{t|kl|juuli}}
* กาลิเซีย: {{t+|gl|xullo|m}}
* คองโก: {{t|kg|yuli}}
* คอร์ซิกา: {{t|co|утӑ|alt=lugliu}}
* คาซัค: {{t+|kk|шілде}}
* กาตาลา: {{t+|ca|juliol|m}}
* คีร์กีซ: {{t+|ky|июль}}
* จอร์เจีย: {{t+|ka|ივლისი}}
* จีน:
*: กวางตุ้ง: {{t|yue|七月|tr=cat1 jyut6}}
*: จีนกลาง: {{t+|cmn|七月}}, {{t|cmn|7月|tr=qīyuè}}
*: หมิ่นใต้: {{t|nan|七月|tr=chhit-go̍eh, chhit-ge̍h, chhit-gōe}}
*: แคะ: {{t|hak|七月|tr=chhit-ngie̍t}}
* ชวา: {{t|jv|juli}}
* ซามัว: {{t|sm|iulai}}
* ซาร์ดิเนีย: {{t|sc|alzolas}}
* เซอร์โบ-โครเอเชีย:
*: ซีริลลิก: {{t|sh|јул|m|sc=Cyrl}}
*: โรมัน: {{t|sh|jul|m}}
* ซูทู: {{t+|st|Phupu}}
* ญี่ปุ่น: {{t+|ja|七月|tr=しちがつ, ชิช̱ิงะสึ}}
* ดัตช์: {{t+|nl|juli}}
* มัลดีฟส์: {{t|dv|ޖުލައި}}
* ตองกา: {{t|to|siulai}}
* ตากาล็อก: {{t+|tl|Hulyo}}
* ตาตาร์: {{t|tt|июль}}
* ตาฮีตี: {{t|ty|tiurai}}
* ตุรกี: {{t+|tr|temmuz}}
* ทาจิก: {{t+|tg|июл}}
* นอร์เวย์:
*: นือนอสก์: {{t+|nn|juli|m}}
*: บุ๊กมอล: {{t+|nb|juli|m}}
* นาวาโฮ: {{t|nv|Yaʼiishjáástsoh}}
* บัลแกเรีย: {{t+|bg|ю́ли|m}}
* บาสก์: {{t+|eu|uztail}}
* ฝรั่งเศส: {{t+|fr|juillet|m}}
* พม่า: {{t+|my|ဇူလိုင်}}
* ฟรีเชียตะวันตก: {{t+|fy|july}}
* ฟิจิ: {{t|fj|Jiulai}}
* ฟินแลนด์: {{t+|fi|heinäkuu}}
* มราฐี: {{t|mr|जुलै}}
* มอลตา: {{t|mt|Lulju}}
* มาซิโดเนีย: {{t+|mk|јули|m}}
* มาวรี: {{t|mi|Hūrae}}
* มาเลเซีย: {{t|ms|julai}}
* ยิดดิช: {{t+|yi|יולי|m}}
* ยูเครน: {{t+|uk|ли́пень|m}}
* รัสเซีย: {{t+|ru|ию́ль|m}}
* ละติน: {{t+|la|iūlius}}
* ลักเซมเบิร์ก: {{t+|lb|Juli}}
* ลัตเวีย: {{t+|lv|jūlijs|m}}
* ลาว: {{t+|lo|ກໍລະກົດ}}
* ลิทัวเนีย: {{t+|lt|liepa|f}}
* ลิมเบิร์ก: {{t|li|Juli}}
* วัลลูน: {{t+|wa|djulete}}
* สกอต: {{t|sco|Julie}}
* สวีเดน: {{t+|sv|juli}}
* สิงหล: {{t+|si|ජූලි}}
* สเปน: {{t+|es|julio|m}}
* สโลวัก: {{t+|sk|júl}}
* สโลวีเนีย: {{t+|sl|júlij|m}}
* ออสซีเซีย: {{t|os|июль}}
* อัมฮารา: {{t|am|ጁላይ}}
* อัสตูเรียส: {{t+|ast|xunetu|m}}
* อารากอน: {{t+|an|chulio|m}}
* อาร์มีเนีย: {{t+|hy|հուլիս}}
* อาหรับ: {{t+|ar|يُولِيُو|m}}, {{t+|ar|تَمُّوز|m}}
* อาเซอร์ไบจาน: {{t+|az|iyul}}
* อีโด: {{t+|io|julio}}
* อิตาลี: {{t+|it|luglio|m}}
* อินุกติตุต: {{t+|iu|ᔪᓚᐃ}}
* อินเทอร์ลิงกวา: {{t|ia|julio}}
* อินโดนีเซีย: {{t|id|juli}}
* อุซเบก: {{t+|uz|iyul}}
* อูรดู: {{t|ur|جولائ|f}}
* อุตซิตา: {{t+|oc|julhet|m}}
* ฮังการี: {{t+|hu|július}}
* ฮาวาย: {{t|haw|Iulai}}
* ฮินดี: {{t+|hi|जूलाई|f}}
* ฮีบรู: {{t+|he|יוּלִי}}
* เกาหลี: {{t+|ko|7월}}, {{t+|ko|칠월}}, {{t|ko|7月}}, {{t+|ko|七月}}
* เขมร: {{t+|km|កក្កដា}}
* เชโรกี: {{t|chr|ᎫᏰᏉᏂ}}
* เช็ก: {{t+|cs|červenec|m}}
* เดนมาร์ก: {{t+|da|juli}}
* เตลูกู: {{t+|te|జూలై}}
* เติร์กเมน: {{t|tk|iýul}}
* เบงกอล: {{t|bn|জুলাই}}
* เบรอตง: {{t+|br|Gouere}}
* เบลารุส: {{t|be|лі́пень|m}}
* เปอร์เซีย: {{t+|fa|ژوئیه}}
* เยอรมัน: {{t+|de|Juli|m}}
* เวลส์: {{t+|cy|Gorffennaf|m}}
* เอสเปรันโต: {{t+|eo|julio}}, {{t|eo|Julio}}
* เอสโตเนีย: {{t+|et|juuli}}
* เฮาซา: {{t|ha|Yuli}}
* แกลิกแบบสกอตแลนด์: {{t|gd|Iuchar|m}}
* แอฟริคานส์: {{t+|af|Julie}}
* แอลเบเนีย: {{t|sq|korrik|m}}
* โปรตุเกส: {{t+|pt|julho|m}}
* โปแลนด์: {{t+|pl|lipiec|m}}
* โรมาเนีย: {{t+|ro|iulie|m}}
* โวลอฟ: {{t|wo|Sulet}}
* โอริยา: {{t+|or|ଜୁଲାଇ}}
* ไอซ์แลนด์: {{t+|is|júlí|m}}, {{t|is|júlímánuður|m}}
* ไอริช: {{t+|ga|Iúil|m}}
{{trans-bottom}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
mdjcovlf6q2av07rce07w4kw7sd2015
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr
10
282338
1908598
1207377
2024-04-26T05:24:12Z
Octahedron80
267
wikitext
text/x-wiki
{{list helper
|title=เดือนในปฏิทินกริกอเรียน
|cat=ภาษาฝรั่งเศส:เดือนในปฏิทินกริกอเรียน
|hypernym={{l|fr|mois}} du {{l|fr|calendrier}} {{l|fr|grégorien}}
|list=<!--
-->{{l-self|fr|janvier}}, <!--
-->{{l-self|fr|février}}, <!--
-->{{l-self|fr|mars}}, <!--
-->{{l-self|fr|avril}}, <!--
-->{{l-self|fr|mai}}, <!--
-->{{l-self|fr|juin}}, <!--
-->{{l-self|fr|juillet}}, <!--
-->{{l-self|fr|août}}, <!--
-->{{l-self|fr|septembre}}, <!--
-->{{l-self|fr|octobre}}, <!--
-->{{l-self|fr|novembre}}, <!--
-->{{l-self|fr|décembre}}<!--
-->}}<!--
-->
ad6mvb8vmrnc7k23p79cm2yhglt6pig
1908599
1908598
2024-04-26T05:25:27Z
Octahedron80
267
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=fr:เดือน
|hypernym={{l|fr|mois}} du {{l|fr|calendrier grégorien}}
|list=<!--
-->{{l-self|fr|janvier}}, <!--
-->{{l-self|fr|février}}, <!--
-->{{l-self|fr|mars}}, <!--
-->{{l-self|fr|avril}}, <!--
-->{{l-self|fr|mai}}, <!--
-->{{l-self|fr|juin}}, <!--
-->{{l-self|fr|juillet}}, <!--
-->{{l-self|fr|août}}, <!--
-->{{l-self|fr|septembre}}, <!--
-->{{l-self|fr|octobre}}, <!--
-->{{l-self|fr|novembre}}, <!--
-->{{l-self|fr|décembre}}<!--
-->}}<!--
--><noinclude>
{{list doc}}
</noinclude>
mh1ikje4khmz5zxosbevoyuh3xojsr3
1908600
1908599
2024-04-26T05:25:54Z
Octahedron80
267
Octahedron80 ย้ายหน้า [[แม่แบบ:list:Gregorian calendar months/fr]] ไปยัง [[แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/fr]]
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=fr:เดือน
|hypernym={{l|fr|mois}} du {{l|fr|calendrier grégorien}}
|list=<!--
-->{{l-self|fr|janvier}}, <!--
-->{{l-self|fr|février}}, <!--
-->{{l-self|fr|mars}}, <!--
-->{{l-self|fr|avril}}, <!--
-->{{l-self|fr|mai}}, <!--
-->{{l-self|fr|juin}}, <!--
-->{{l-self|fr|juillet}}, <!--
-->{{l-self|fr|août}}, <!--
-->{{l-self|fr|septembre}}, <!--
-->{{l-self|fr|octobre}}, <!--
-->{{l-self|fr|novembre}}, <!--
-->{{l-self|fr|décembre}}<!--
-->}}<!--
--><noinclude>
{{list doc}}
</noinclude>
mh1ikje4khmz5zxosbevoyuh3xojsr3
1908614
1908600
2024-04-26T05:30:47Z
Octahedron80
267
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=fr:เดือนในปฏิทินกริกอเรียน
|hypernym={{l|fr|mois}} du {{l|fr|calendrier grégorien}}
|list=<!--
-->{{l-self|fr|janvier}}, <!--
-->{{l-self|fr|février}}, <!--
-->{{l-self|fr|mars}}, <!--
-->{{l-self|fr|avril}}, <!--
-->{{l-self|fr|mai}}, <!--
-->{{l-self|fr|juin}}, <!--
-->{{l-self|fr|juillet}}, <!--
-->{{l-self|fr|août}}, <!--
-->{{l-self|fr|septembre}}, <!--
-->{{l-self|fr|octobre}}, <!--
-->{{l-self|fr|novembre}}, <!--
-->{{l-self|fr|décembre}}<!--
-->}}<!--
--><noinclude>
{{list doc}}
</noinclude>
ebj7i1ayiat6wovz0qmet5206dqqlw9
ตั้งธง
0
287149
1908581
1365948
2024-04-26T02:58:24Z
Octahedron80
267
/* คำกริยา */
wikitext
text/x-wiki
== ภาษาไทย ==
=== รากศัพท์ ===
{{com|th|ตั้ง|ธง}}
=== การออกเสียง ===
{{th-pron|ตั้ง-ทง}}
=== คำกริยา ===
{{th-verb}}
# {{lb|th|ปาก}} [[กำหนด]][[ไว้]][[ให้]][[เป็น]][[เช่น]][[นั้น]]
lu9i6atbfo7nt9jo1v0t3z4iwt1hq2e
1908582
1908581
2024-04-26T02:58:32Z
Octahedron80
267
/* คำกริยา */
wikitext
text/x-wiki
== ภาษาไทย ==
=== รากศัพท์ ===
{{com|th|ตั้ง|ธง}}
=== การออกเสียง ===
{{th-pron|ตั้ง-ทง}}
=== คำกริยา ===
{{th-verb}}
# {{lb|th|สำ|ปาก}} [[กำหนด]][[ไว้]][[ให้]][[เป็น]][[เช่น]][[นั้น]]
cjld4m6xwzknota166njghtjrmjjhv0
ᨸᩖᩦ
0
293351
1908673
1651892
2024-04-26T06:48:38Z
Octahedron80
267
/* คำนาม */
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|c=ᨸ᩠ᩃᩦ|l=ปลี|s=ปี๋}}
=== รากศัพท์ ===
{{inh+|nod|tai-pro|*pliːᴬ}}; ร่วมเชื้อสายกับ{{cog|th|ปลี}}, {{cog|lo|ປີ}}, {{cog|shn|ပီ}}, {{cog|phk|ပီ}}
=== การออกเสียง ===
* {{a|เชียงใหม่}} {{IPA|nod|/piː˨˦/}}
=== คำนาม ===
{{nod-noun}}
# [[ปลี]]
# {{lb|nod|ไม่มาตรฐาน}} [[ปี]]
a28gx19i9absv1exm89h3y4ez7nwz0z
กุมภาพันธ์
0
300368
1908617
1552801
2024-04-26T05:34:02Z
Octahedron80
267
/* คำพ้องความ */
wikitext
text/x-wiki
== ภาษาไทย ==
{{wp}}
=== รูปแบบอื่น ===
* {{alt|th|กุมภาพันธุ์||สะกดผิด}}
=== รากศัพท์ ===
{{com|th|กุมภ|อาพันธ์}}
=== การออกเสียง ===
{{th-pron|กุม-พา-พัน}}
=== คำวิสามานยนาม ===
{{th-proper noun}}
# [[ชื่อ]][[เดือน]][[ที่]] 2 [[ตาม]][[สุริยคติ]] [[มี]] 28 [[หรือ]] 29 [[วัน]]
# {{lb|th|เลิก}} ชื่อเดือนที่ 11 ตามสุริยคติ [[ซึ่ง]][[เริ่ม]][[ด้วย]]เดือน[[เมษายน]]
==== คำพ้องความ ====
* {{sense|อักษรย่อ}} {{l|th|ก.พ.}}
* {{sense|คำย่อ}} {{l|th|กุมภา}}
==== คำเกี่ยวข้อง ====
* {{รายชื่อ:เดือนในปฏิทินกริกอเรียน/th}}
{{topics|th|เดือนในปฏิทินกริกอเรียน}}
odvhlyst2xaz3b61u33smtiqkhhk7xs
มอดูล:parse utilities
828
311764
1908584
1766242
2024-04-26T03:35:56Z
Octahedron80
267
Scribunto
text/plain
local export = {}
local m_string_utilities = require("Module:string utilities")
local rfind = mw.ustring.find
local rsplit = mw.text.split
local u = mw.ustring.char
local rsubn = mw.ustring.gsub
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
--[=[
In order to understand the following parsing code, you need to understand how inflected text specs work. They are
intended to work with inflected text where individual words to be inflected may be followed by inflection specs in
angle brackets. The format of the text inside of the angle brackets is up to the individual language and part-of-speech
specific implementation. A real-world example is as follows: "[[медичний|меди́чна]]<+> [[сестра́]]<*,*#.pr>". This is the
inflection of a multiword expression "меди́чна сестра́", which means "nurse" in Ukrainian (literally "medical sister"),
consisting of two words: the adjective меди́чна ("medical" in the feminine singular) and the noun сестра́ ("sister"). The
specs in angle brackets follow each word to be inflected; for example, <+> means that the preceding word should be
declined as an adjective.
The code below works in terms of balanced expressions, which are bounded by delimiters such as < > or [ ]. The
intention is to allow separators such as spaces to be embedded inside of delimiters; such embedded separators will not
be parsed as separators. For example, Ukrainian noun specs allow footnotes in brackets to be inserted inside of angle
brackets; something like "меди́чна<+> сестра́<pr.[this is a footnote]>" is legal, as is
"[[медичний|меди́чна]]<+> [[сестра́]]<pr.[this is an <i>italicized footnote</i>]>", and the parsing code should not be
confused by the embedded brackets, spaces or angle brackets.
The parsing is done by two functions, which work in close concert: parse_balanced_segment_run() and
split_alternating_runs(). To illustrate, consider the following:
parse_balanced_segment_run("foo<M.proper noun> bar<F>", "<", ">") =
{"foo", "<M.proper noun>", " bar", "<F>", ""}
then
split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ") =
{{"foo", "<M.proper noun>", ""}, {"bar", "<F>", ""}}
Here, we start out with a typical inflected text spec "foo<M.proper noun> bar<F>", call parse_balanced_segment_run() on
it, and call split_alternating_runs() on the result. The output of parse_balanced_segment_run() is a list where
even-numbered segments are bounded by the bracket-like characters passed into the function, and odd-numbered segments
consist of the surrounding text. split_alternating_runs() is called on this, and splits *only* the odd-numbered
segments, grouping all segments between the specified character. Note that the inner lists output by
split_alternating_runs() are themselves in the same format as the output of parse_balanced_segment_run(), with
bracket-bounded text in the even-numbered segments. Hence, such lists can be passed again to split_alternating_runs().
]=]
--[==[
Parse a string containing matched instances of parens, brackets or the like. Return a list of strings, alternating
between textual runs not containing the open/close characters and runs beginning and ending with the open/close
characters. For example,
{parse_balanced_segment_run("foo(x(1)), bar(2)", "(", ")") = {"foo", "(x(1))", ", bar", "(2)", ""}}
]==]
function export.parse_balanced_segment_run(segment_run, open, close)
return m_string_utilities.capturing_split(segment_run, "(%b" .. open .. close .. ")")
end
-- The following is an equivalent, older implementation that does not use %b (written before I was aware of %b).
--[=[
function export.parse_balanced_segment_run(segment_run, open, close)
local break_on_open_close = m_string_utilities.capturing_split(segment_run, "([%" .. open .. "%" .. close .. "])")
local text_and_specs = {}
local level = 0
local seg_group = {}
for i, seg in ipairs(break_on_open_close) do
if i % 2 == 0 then
if seg == open then
table.insert(seg_group, seg)
level = level + 1
else
assert(seg == close)
table.insert(seg_group, seg)
level = level - 1
if level < 0 then
error("Unmatched " .. close .. " sign: '" .. segment_run .. "'")
elseif level == 0 then
table.insert(text_and_specs, table.concat(seg_group))
seg_group = {}
end
end
elseif level > 0 then
table.insert(seg_group, seg)
else
table.insert(text_and_specs, seg)
end
end
if level > 0 then
error("Unmatched " .. open .. " sign: '" .. segment_run .. "'")
end
return text_and_specs
end
]=]
--[==[
Like parse_balanced_segment_run() but accepts multiple sets of delimiters. For example,
{parse_multi_delimiter_balanced_segment_run("foo[bar(baz[bat])], quux<glorp>", {{"[", "]"}, {"(", ")"}, {"<", ">"}}) =
{"foo", "[bar(baz[bat])]", ", quux", "<glorp>", ""}}.
Each element in the list of delimiter pairs is a string specifying an equivalence class of possible delimiter
characters. You can use this, for example, to allow either "[" or "&#91;" to be treated equivalently, with either
one closed by either "]" or "&#93;". To do this, first replace "&#91;" and "&#93;" with single Unicode
characters such as U+FFF0 and U+FFF1, and then specify a two-character string containing "[" and U+FFF0 as the opening
delimiter, and a two-character string containing "]" and U+FFF1 as the corresponding closing delimiter.
If `no_error_on_unmatched` is given and an error is found during parsing, a string is returned containing the error
message instead of throwing an error.
]==]
function export.parse_multi_delimiter_balanced_segment_run(segment_run, delimiter_pairs, no_error_on_unmatched)
local escaped_delimiter_pairs = {}
local open_to_close_map = {}
local open_close_items = {}
local open_items = {}
for _, open_close in ipairs(delimiter_pairs) do
local open, close = unpack(open_close)
open = rsub(open, "([%[%]%%%%-])", "%%%1")
close = rsub(close, "([%[%]%%%%-])", "%%%1")
table.insert(open_close_items, open)
table.insert(open_close_items, close)
table.insert(open_items, open)
open = "[" .. open .. "]"
close = "[" .. close .. "]"
open_to_close_map[open] = close
table.insert(escaped_delimiter_pairs, {open, close})
end
local open_close_pattern = "([" .. table.concat(open_close_items) .. "])"
local open_pattern = "([" .. table.concat(open_items) .. "])"
local break_on_open_close = m_string_utilities.capturing_split(segment_run, open_close_pattern)
local text_and_specs = {}
local level = 0
local seg_group = {}
local open_at_level_zero
for i, seg in ipairs(break_on_open_close) do
if i % 2 == 0 then
table.insert(seg_group, seg)
if level == 0 then
if not rfind(seg, open_pattern) then
local errmsg = "Unmatched close sign " .. seg .. ": '" .. segment_run .. "'"
if no_error_on_unmatched then
return errmsg
else
error(errmsg)
end
end
assert(open_at_level_zero == nil)
for _, open_close in ipairs(escaped_delimiter_pairs) do
local open, close = unpack(open_close)
if rfind(seg, open) then
open_at_level_zero = open
break
end
end
if open_at_level_zero == nil then
error(("Internal error: Segment %s didn't match any open regex"):format(seg))
end
level = level + 1
elseif rfind(seg, open_at_level_zero) then
level = level + 1
elseif rfind(seg, open_to_close_map[open_at_level_zero]) then
level = level - 1
assert(level >= 0)
if level == 0 then
table.insert(text_and_specs, table.concat(seg_group))
seg_group = {}
open_at_level_zero = nil
end
end
elseif level > 0 then
table.insert(seg_group, seg)
else
table.insert(text_and_specs, seg)
end
end
if level > 0 then
local errmsg = "Unmatched open sign " .. open_at_level_zero .. ": '" .. segment_run .. "'"
if no_error_on_unmatched then
return errmsg
else
error(errmsg)
end
end
return text_and_specs
end
--[==[
Split a list of alternating textual runs of the format returned by `parse_balanced_segment_run` on `splitchar`. This
only splits the odd-numbered textual runs (the portions between the balanced open/close characters). The return value
is a list of lists, where each list contains an odd number of elements, where the even-numbered elements of the sublists
are the original balanced textual run portions. For example, if we do
{parse_balanced_segment_run("foo<M.proper noun> bar<F>", "<", ">") =
{"foo", "<M.proper noun>", " bar", "<F>", ""}}
then
{split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ") =
{{"foo", "<M.proper noun>", ""}, {"bar", "<F>", ""}}}
Note that we did not touch the text "<M.proper noun>" even though it contains a space in it, because it is an
even-numbered element of the input list. This is intentional and allows for embedded separators inside of
brackets/parens/etc. Note also that the inner lists in the return value are of the same form as the input list (i.e.
they consist of alternating textual runs where the even-numbered segments are balanced runs), and can in turn be passed
to split_alternating_runs().
If `preserve_splitchar` is passed in, the split character is included in the output, as follows:
{split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ", true) =
{{"foo", "<M.proper noun>", ""}, {" "}, {"bar", "<F>", ""}}}
Consider what happens if the original string has multiple spaces between brackets, and multiple sets of brackets
without spaces between them.
{parse_balanced_segment_run("foo[dated][low colloquial] baz-bat quux xyzzy[archaic]", "[", "]") =
{"foo", "[dated]", "", "[low colloquial]", " baz-bat quux xyzzy", "[archaic]", ""}}
then
{split_alternating_runs({"foo", "[dated]", "", "[low colloquial]", " baz-bat quux xyzzy", "[archaic]", ""}, "[ %-]") =
{{"foo", "[dated]", "", "[low colloquial]", ""}, {"baz"}, {"bat"}, {"quux"}, {"xyzzy", "[archaic]", ""}}}
If `preserve_splitchar` is passed in, the split character is included in the output,
as follows:
{split_alternating_runs({"foo", "[dated]", "", "[low colloquial]", " baz bat quux xyzzy", "[archaic]", ""}, "[ %-]", true) =
{{"foo", "[dated]", "", "[low colloquial]", ""}, {" "}, {"baz"}, {"-"}, {"bat"}, {" "}, {"quux"}, {" "}, {"xyzzy", "[archaic]", ""}}}
As can be seen, the even-numbered elements in the outer list are one-element lists consisting of the separator text.
]==]
function export.split_alternating_runs(segment_runs, splitchar, preserve_splitchar)
local grouped_runs = {}
local run = {}
for i, seg in ipairs(segment_runs) do
if i % 2 == 0 then
table.insert(run, seg)
else
local parts =
preserve_splitchar and m_string_utilities.capturing_split(seg, "(" .. splitchar .. ")") or
rsplit(seg, splitchar)
table.insert(run, parts[1])
for j=2,#parts do
table.insert(grouped_runs, run)
run = {parts[j]}
end
end
end
if #run > 0 then
table.insert(grouped_runs, run)
end
return grouped_runs
end
function export.strip_spaces(text)
return rsub(text, "^%s*(.-)%s*$", "%1")
end
--[==[
Apply an arbitrary function `frob` to the "raw-text" segments in a split run set (the output of
split_alternating_runs()). We leave alone stuff within balanced delimiters (footnotes, inflection specs and the
like), as well as splitchars themselves if present. `preserve_splitchar` indicates whether splitchars are present
in the split run set. `frob` is a function of one argument (the string to frob) and should return one argument (the
frobbed string). We operate by only frobbing odd-numbered segments, and only in odd-numbered runs if
preserve_splitchar is given.
]==]
function export.frob_raw_text_alternating_runs(split_run_set, frob, preserve_splitchar)
for i, run in ipairs(split_run_set) do
if not preserve_splitchar or i % 2 == 1 then
for j, segment in ipairs(run) do
if j % 2 == 1 then
run[j] = frob(segment)
end
end
end
end
end
--[==[
Like split_alternating_runs() but applies an arbitrary function `frob` to "raw-text" segments in the result (i.e.
not stuff within balanced delimiters such as footnotes and inflection specs, and not splitchars if present). `frob`
is a function of one argument (the string to frob) and should return one argument (the frobbed string).
]==]
function export.split_alternating_runs_and_frob_raw_text(run, splitchar, frob, preserve_splitchar)
local split_runs = export.split_alternating_runs(run, splitchar, preserve_splitchar)
export.frob_raw_text_alternating_runs(split_runs, frob, preserve_splitchar)
return split_runs
end
--[==[
Split the non-modifier parts of an alternating run (after parse_balanced_segment_run() is called) on a Lua pattern,
but not on certain sequences involving characters in that pattern (e.g. comma+whitespace). `splitchar` is the pattern
to split on; `preserve_splitchar` indicates whether to preserve the delimiter and is the same as in
split_alternating_runs(). `escape_fun` is called beforehand on each run of raw text and should return two values:
the escaped run and whether unescaping is needed. If any call to `escape_fun` indicates that unescaping is needed,
`unescape_fun` will be called on each run of raw text after splitting on `splitchar`. The return value of this
function is as in split_alternating_runs().
]==]
function export.split_alternating_runs_escaping(run, splitchar, preserve_splitchar, escape_fun, unescape_fun)
-- First replace comma with a temporary character in comma+whitespace sequences.
local need_unescape = false
for i, seg in ipairs(run) do
if i % 2 == 1 then
local this_need_unescape
run[i], this_need_unescape = escape_fun(run[i])
need_unescape = need_unescape or this_need_unescape
end
end
if need_unescape then
return export.split_alternating_runs_and_frob_raw_text(run, splitchar, unescape_fun, preserve_splitchar)
else
return export.split_alternating_runs(run, splitchar, preserve_splitchar)
end
end
--[==[
Replace comma with a temporary char in comma + whitespace.
]==]
function export.escape_comma_whitespace(run, tempcomma)
tempcomma = tempcomma or u(0xFFF0)
local escaped = false
if run:find("\\,") then
run = run:gsub("\\,", "\\" .. tempcomma) -- assign to temp to discard second return value
escaped = true
end
if run:find(",%s") then
run = run:gsub(",(%s)", tempcomma .. "%1") -- assign to temp to discard second return value
escaped = true
end
return run, escaped
end
--[==[
Undo the replacement of comma with a temporary char.
]==]
function export.unescape_comma_whitespace(run, tempcomma)
tempcomma = tempcomma or u(0xFFF0)
run = run:gsub(tempcomma, ",") -- assign to temp to discard second return value
return run
end
--[==[
Split the non-modifier parts of an alternating run (after parse_balanced_segment_run() is called) on comma, but not
on comma+whitespace. See `split_on_comma()` above for more information and the meaning of `tempcomma`.
]==]
function export.split_alternating_runs_on_comma(run, tempcomma)
tempcomma = tempcomma or u(0xFFF0)
-- Replace comma with a temporary char in comma + whitespace.
local function escape_comma_whitespace(seg)
return export.escape_comma_whitespace(seg, tempcomma)
end
-- Undo replacement of comma with a temporary char in comma + whitespace.
local function unescape_comma_whitespace(seg)
return export.unescape_comma_whitespace(seg, tempcomma)
end
return export.split_alternating_runs_escaping(run, ",", false, escape_comma_whitespace, unescape_comma_whitespace)
end
--[==[
Split text on a Lua pattern, but not on certain sequences involving characters in that pattern (e.g.
comma+whitespace). `splitchar` is the pattern to split on; `preserve_splitchar` indicates whether to preserve the
delimiter between split segments. `escape_fun` is called beforehand on the text and should return two values: the
escaped run and whether unescaping is needed. If the call to `escape_fun` indicates that unescaping is needed,
`unescape_fun` will be called on each run of text after splitting on `splitchar`. The return value of this a list
of runs, interspersed with delimiters if `preserve_splitchar` is specified.
]==]
function export.split_escaping(text, splitchar, preserve_splitchar, escape_fun, unescape_fun)
if not rfind(text, splitchar) then
return {text}
end
-- If there are square or angle brackets, we don't want to split on delimiters inside of them. To effect this, we
-- use parse_multi_delimiter_balanced_segment_run() to parse balanced brackets, then do delimiter splitting on the
-- non-bracketed portions of text using split_alternating_runs_escaping(), and concatenate back to a list of
-- strings. When calling parse_multi_delimiter_balanced_segment_run(), we make sure not to throw an error on
-- unbalanced brackets; in that case, we fall through to the code below that handles the case without brackets.
if text:find("[%[<]") then
local runs = export.parse_multi_delimiter_balanced_segment_run(text, {{"[", "]"}, {"<", ">"}},
"no error on unmatched")
if type(runs) ~= "string" then
local split_runs = export.split_alternating_runs_escaping(runs, splitchar, preserve_splitchar, escape_fun,
unescape_fun)
for i = 1, #split_runs, (preserve_splitchar and 2 or 1) do
split_runs[i] = table.concat(split_runs[i])
end
return split_runs
end
end
-- First escape sequences we don't want to count for splitting.
local need_unescape
text, need_unescape = escape_fun(text)
local parts =
preserve_splitchar and m_string_utilities.capturing_split(text, "(" .. splitchar .. ")") or
rsplit(text, splitchar)
if need_unescape then
for i = 1, #parts, (preserve_splitchar and 2 or 1) do
parts[i] = unescape_fun(parts[i])
end
end
return parts
end
--[==[
Split text on comma, but not on comma+whitespace. This is similar to `mw.text.split(text, ",")` but will not split
on commas directly followed by whitespace, to handle embedded commas in terms (which are almost always followed by
a space). `tempcomma` is the Unicode character to temporarily use when doing the splitting; normally U+FFF0, but
you can specify a different character if you use U+FFF0 for some internal purpose.
]==]
function export.split_on_comma(text, tempcomma)
-- Don't do anything if no comma. Note that split_escaping() has a similar check at the beginning, so if there's a
-- comma we effectively do this check twice, but this is worth it to optimize for the common no-comma case.
if not text:find(",") then
return {text}
end
tempcomma = tempcomma or u(0xFFF0)
-- Replace comma with a temporary char in comma + whitespace.
local function escape_comma_whitespace(run)
return export.escape_comma_whitespace(run, tempcomma)
end
-- Undo replacement of comma with a temporary char in comma + whitespace.
local function unescape_comma_whitespace(run)
return export.unescape_comma_whitespace(run, tempcomma)
end
return export.split_escaping(text, ",", false, escape_comma_whitespace, unescape_comma_whitespace)
end
--[==[
Ensure that Wikicode (bracketed links, HTML, bold/italics, etc.) displays literally in error messages by inserting
a Unicode word-joiner symbol after all characters that may trigger Wikicode interpr. Replacing with equivalent
HTML escapes doesn't work because they are displayed literally. I could not get this to work using
<nowiki>...</nowiki> (those tags display literally) and using using {{#tag:nowiki|...}} (same thing).
FIXME: This is a massive hack; there must be a better way.
]==]
function export.escape_wikicode(term)
term = term:gsub("([%[<'])", "%1" .. u(0x2060))
return term
end
function export.make_parse_err(arg_gloss)
return function(msg, stack_frames_to_ignore)
error(export.escape_wikicode(("%s: %s"):format(msg, arg_gloss)), stack_frames_to_ignore)
end
end
-- Parse a term that may include a link '[[LINK]]' or a two-part link '[[LINK|DISPLAY]]'. FIXME: Doesn't currently
-- handle embedded links like '[[FOO]] [[BAR]]' or [[FOO|BAR]] [[BAZ]]' or '[[FOO]]s'; if they are detected, it returns
-- the term unchanged and `nil` for the display form.
local function parse_bracketed_term(term, parse_err)
local inside = term:match("^%[%[(.*)%]%]$")
if inside then
if inside:find("%[%[") or inside:find("%]%]") then
-- embedded links, e.g. '[[FOO]] [[BAR]]'; FIXME: we should process them properly
return term, nil
end
local parts = rsplit(inside, "|")
if #parts > 2 then
parse_err("Saw more than two parts inside a bracketed link")
end
return unpack(parts)
end
return term, nil
end
--[==[
Parse a term that may have a language code (or possibly multiple comma-separated language codes, if `allow_multiple`
is given) preceding it (e.g. {la:minūtia} or {grc:[[σκῶρ|σκατός]]} or {nan-hbl,hak:[[毋]][[知]]}). Return four
arguments:
# the term minus the language code;
# the language object corresponding to the language code (possibly a family object if `allow_family` is given), or a
list of such objects if `allow_multiple` is given;
# the link if the term is of the form {[[<var>link</var>|<var>display</var>]]} (it may be generated into that form with
Wikipedia and Wikisource prefixes) or of the form {{[[<var>link</var>]]}, otherwise the full term;
# the display part if the term is of the form {[[<var>link</var>|<var>display</var>]]}, otherwise nil.
Etymology-only languages are allowed. This function also correctly handles Wikipedia prefixes (e.g. {w:Abatemarco}
or {w:it:Colle Val d'Elsa} or {lw:ru:Филарет}) and Wikisource prefixes (e.g. {s:Twelve O'Clock} or
{s:[[Walden/Chapter XVIII|Walden]]} or {s:fr:Perceval ou le conte du Graal} or {s:ro:[[Domnul Vucea|Mr. Vucea]]} or
{ls:ko:이상적 부인} or {ls:ko:[[조선 독립의 서#一. 槪論|조선 독립의 서]]}) and converts them into two-part links,
with the display form not including the Wikipedia or Wikisource prefix unless it was explicitly specified using a
two-part link as in {lw:ru:[[Филарет (Дроздов)|Митрополи́т Филаре́т]]} or
{ls:ko:[[조선 독립의 서#一. 槪論|조선 독립의 서]]}. The difference between {w:} ("Wikipedia") and {lw:} ("Wikipedia
link") is that the latter requires a language code and returns the corresponding language object; same for the
difference between {s:} ("Wikisource") and {ls:} ("Wikisource link").
NOTE: Embedded links are not correctly handled currently. If an embedded link is detected, the whole term is returned
as the link part (third argument), and the display part is nil. If you construct your own link from the link and
display parts, you must check for this.
`parse_err_or_paramname` is an optional function of one or two arguments to display an error, or a string naming a
parameter to display in the error message. If omitted, a function is generated based off of `term`. (The second
argument to the function is the number of stack frames to ignore when calling error(); if you declare your error
function with only one argument, things will still work fine.)
]==]
function export.parse_term_with_lang(data_or_term, parse_err_or_paramname)
if type(data_or_term) == "string" then
data_or_term = {
term = data_or_term
}
if type(parse_err_or_paramname) == "function" then
data_or_term.parse_err = parse_err_or_paramname
else
data_or_term.paramname = parse_err_or_paramname
end
end
local term = data_or_term.term
local parse_err = data_or_term.parse_err or
data_or_term.paramname and export.make_parse_err(("%s=%s"):format(data_or_term.paramname, term)) or
export.make_parse_err(term)
-- Parse off an initial language code (e.g. 'la:minūtia' or 'grc:[[σκῶρ|σκατός]]'). First check for Wikipedia
-- prefixes ('w:Abatemarco' or 'w:it:Colle Val d'Elsa' or 'lw:zh:邹衡') and Wikisource prefixes
-- ('s:ro:[[Domnul Vucea|Mr. Vucea]]' or 'ls:ko:이상적 부인'). Wikipedia/Wikisource language codes follow a similar
-- format to Wiktionary language codes (see below). Here and below we don't parse if there's a space after the
-- colon (happens e.g. if the user uses {{desc|...}} inside of {{col}}, grrr ...).
local termlang, foreign_wiki, actual_term = term:match("^(l?[ws]):([a-z][a-z][a-z-]*):([^ ].*)$")
if not termlang then
termlang, actual_term = term:match("^([ws]):([^ ].*)$")
end
if termlang then
local wiki_links = termlang:find("^l")
local base_wiki_prefix = termlang:find("w$") and "w:" or "s:"
local wiki_prefix = base_wiki_prefix .. (foreign_wiki and foreign_wiki .. ":" or "")
local link, display = parse_bracketed_term(actual_term, parse_err)
if link:find("%[%[") or display and display:find("%[%[") then
-- FIXME, this should be handlable with the right parsing code
parse_err("Cannot have embedded brackets following a Wikipedia (w:... or lw:...) link; expand the term to a fully bracketed term w:[[LINK|DISPLAY]] or similar")
end
local lang = wiki_links and require("Module:languages").getByCode(foreign_wiki, parse_err, "allow etym") or nil
local prefixed_link = wiki_prefix .. link
return ("[[%s|%s]]"):format(prefixed_link, display or link), lang, prefixed_link, display
end
-- Wiktionary language codes are in one of the following formats, where 'x' is a lowercase letter and 'X' an
-- uppercase letter:
-- xx
-- xxx
-- xxx-xxx
-- xxx-xxx-xxx (esp. for protolanguages)
-- xx-xxx (for etymology-only languages)
-- xx-xxx-xxx (maybe? for etymology-only languages)
-- xx-XX (for etymology-only languages, where XX is a country code, e.g. en-US)
-- xxx-XX (for etymology-only languages, where XX is a country code)
-- xx-xxx-XX (for etymology-only languages, where XX is a country code)
-- xxx-xxx-XX (for etymology-only langauges, where XX is a country code, e.g. nan-hbl-PH)
-- Things like xxx-x+ (e.g. cmn-pinyin, cmn-tongyong)
-- VL., LL., etc.
--
-- We check the for nonstandard Latin etymology language codes separately, and otherwise make only the following
-- assumptions:
-- (1) There are one to three hyphen-separated components.
-- (2) The last component can consist of two uppercase ASCII letters; otherwise, all components contain only
-- lowercase ASCII letters.
-- (3) Each component must have at least two letters.
-- (4) The first component must have two or three letters.
local function is_possible_lang_code(code)
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
if code:find("^[A-Z]L%.$") then
return true
end
return code:find("^([a-z][a-z][a-z]?)$") or
code:find("^[a-z][a-z][a-z]?%-[A-Z][A-Z]$") or
code:find("^[a-z][a-z][a-z]?%-[a-z][a-z]+$") or
code:find("^[a-z][a-z][a-z]?%-[a-z][a-z]+%-[A-Z][A-Z]$") or
code:find("^[a-z][a-z][a-z]?%-[a-z][a-z]+%-[a-z][a-z]+$")
end
local function get_by_code(code, allow_bad)
local lang
if data_or_term.lang_cache then
lang = data_or_term.lang_cache[code]
end
if lang == nil then
lang = require("Module:languages").getByCode(code, not allow_bad and parse_err or nil, "allow etym",
data_or_term.allow_family)
if data_or_term.lang_cache then
data_or_term.lang_cache[code] = lang or false
end
end
return lang or nil
end
if data_or_term.allow_multiple then
local termlang_spec
termlang_spec, actual_term = term:match("^([a-zA-Z.,-]+):([^ ].*)$")
if termlang_spec then
termlang = rsplit(termlang_spec, ",")
local all_possible_code = true
for _, code in ipairs(termlang) do
if not is_possible_lang_code(code) then
all_possible_code = false
break
end
end
if all_possible_code then
local saw_nil = false
for i, code in ipairs(termlang) do
termlang[i] = get_by_code(code, data_or_term.allow_bad)
if not termlang[i] then
saw_nil = true
end
end
if saw_nil then
termlang = nil
else
term = actual_term
end
else
termlang = nil
end
end
else
termlang, actual_term = term:match("^([a-zA-Z.-]+):([^ ].*)$")
if termlang then
if is_possible_lang_code(termlang) then
termlang = get_by_code(termlang, data_or_term.allow_bad)
if termlang then
term = actual_term
end
else
termlang = nil
end
end
end
local link, display = parse_bracketed_term(term, parse_err)
return term, termlang, link, display
end
--[==[
Parse a term that may have inline modifiers attached (e.g. {rifiuti<q:plural-only>} or
{rinfusa<t:bulk cargo><lit:resupplying><qq:more common in the plural {{m|it|rinfuse}}>}).
* `arg` is the term to parse.
* `props` is an object holding further properties controlling how to parse the term (only `param_mods` and
`generate_obj` are required):
** `paramname` is the name of the parameter where `arg` comes from, or nil if this isn't available (it is used only in
error messages).
** `param_mods` is a table describing the allowed inline modifiers (see below).
** `generate_obj` is a function of one or two arguments that should parse the argument minus the inline modifiers and
return a corresponding parsed object (into which the inline modifiers will be rewritten). If declared with one
argument, that will be the raw value to parse; if declared with two arguments, the second argument will be the
`parse_err` function (see below).
** `parse_err` is an optional function of one argument (an error message) and should display the error message, along
with any desired contextual text (e.g. the argument name and value that triggered the error). If omitted, a default
function will be generated which displays the error along with the original value of `arg` (passed through
{escape_wikicode()} above to ensure that Wikicode (such as links) is displayed literally).
** `splitchar` is a Lua pattern. If specified, `arg` can consist of multiple delimiter-separated terms, each of which
may be followed by inline modifiers, and the return value will be a list of parsed objects instead of a single
object. Note that splitting on delimiters will not happen in certain protected sequences (by default
comma+whitespace; see below). The algorithm to split on delimiters is sensitive to inline modifier syntax and will
not be confused by delimiters inside of inline modifiers, which do not trigger splitting (whether or not contained
within protected sequences).
** `outer_container`, if specified, is used when multiple delimiter-separated terms are possible, and is the object
into which the list of per-term objects is stored (into the `terms` field) and into which any modifiers that are
given the `overall` property (see below) will be stored. If given, this value will be returned as the value of
{parse_inline_modifiers()}. If `outer_container` is not given, {parse_inline_modifiers()} will return the list of
per-term objects directly, and no modifier may have an `overall` property.
** `preserve_splitchar`, if specified, causes the actual delimiter matched by `splitchar` to be returned in the
parsed object describing the element that comes after the delimiter. The delimiter is stored in a key whose
name is controlled by `separator_key`, which defaults to "separator".
** `separator_key` controls the key into which the actual delimiter is written when `preserve_splitchar` is used.
See above.
** `escape_fun` and `unescape_fun` are as in split_escaping() and split_alternating_runs_escaping() above and
control the protected sequences that won't be split. By default, `escape_comma_whitespace` and
`unescape_comma_whitespace` are used, so that comma+whitespace sequences won't be split.
`param_mods` is a table describing allowed modifiers. The keys of the table are modifier prefixes and the values are
tables describing how to parse and store the associated modifier values. Here is a typical example:
<pre>
local param_mods = {
t = {
item_dest = "gloss",
},
gloss = {},
pos = {},
alt = {},
lit = {},
id = {},
g = {
item_dest = "genders",
convert = function(arg)
return rsplit(arg, ",")
end,
},
}
</pre>
In the table values:
* `item_dest` specifies the destination key to store the object into (if not the same as the modifier key itself).
* `convert` is a function of one or two arguments (the modifier value and optionally the {parse_err} function as passed
in or generated), and should parse and convert the value into the appropriate object. If omitted, the string value is
stored unchanged.
* `store` describes how to store the converted modifier value into the parsed object. If omitted, the converted value
is simply written into the parsed object under the appropriate key; but an error is generated if the key already has
a value. (This means that multiple occurrences of a given modifier are allowed if `store` is given, but not
otherwise.) `store` can be one of the following:
** {"insert"}: the converted value is appended to the key's value using {table.insert()}; if the key has no value, it
is first converted to an empty list;
** {"insertIfNot"}: is similar but appends the value using {insertIfNot()} in [[Module:table]];
** {"insert-flattened"}, the converted value is assumed to be a list and the objects are appended one-by-one into the
key's existing value using {table.insert()};
** {"insertIfNot-flattened"} is similar but appends using {insertIfNot()} in [[Module:table]]; (WARNING: When using
{"insert-flattened"} and {"insertIfNot-flattened"}, if there is no existing value for the key, the converted value is
just stored directly. This means that future appends will side-effect that value, so make sure that the return value
of the conversion function for this key generates a fresh list each time.)
** a function of one argument, an object with the following properties:
*** `dest`: the object to write the value into;
*** `key`: the field where the value should be written;
*** `converted`: the (converted) value to write;
*** `raw_val`: the raw, user-specified value (a string);
*** `parse_err`: a function of one argument (an error string), which signals an error, and includes extra context in
the message about the modifier in question, the angle-bracket spec that includes the modifier in it, the overall
value, and (if `paramname` was given) the parameter holding the overall value.
* `overall` only applies if `splitchar` is given. In this case, the modifier applies to the entire argument rather than
to an individual term in the argument, and must occur after the last item separated by `splitchar`, instead of being
allowed to occur after any of them. The modifier will be stored into the outer container object, which must exist
(i.e. `outer_container` must have been given).
The return value of {parse_inline_modifiers()} depends on whether `splitchar` and `outer_container` have been given. If
neither is given, the return value is the object returned by `generate_obj`. If `splitchar` but not `outer_container` is
given, the return value is a list of per-term objects, each of which is generated by `generate_obj`. If both `splitchar`
and `outer_container` are given, the return value is the value of `outer_container` and the per-term objects are stored
into the `terms` field of this object.
]==]
function export.parse_inline_modifiers(arg, props)
local segments = export.parse_balanced_segment_run(arg, "<", ">")
local function verify_no_overall()
for mod, mod_props in pairs(props.param_mods) do
if mod_props.overall then
error("Internal caller error: Can't specify `overall` for a modifier in `param_mods` unless `outer_container` property is given")
end
end
end
if not props.splitchar then
if props.outer_container then
error("Internal caller error: Can't specify `outer_container` property unless `splitchar` is given")
end
verify_no_overall()
return export.parse_inline_modifiers_from_segments {
group = segments,
group_index = nil,
separated_groups = nil,
arg = arg,
props = props
}
else
local terms = {}
if props.outer_container then
props.outer_container.terms = terms
else
verify_no_overall()
end
local separated_groups = export.split_alternating_runs_escaping(segments, props.splitchar,
props.preserve_splitchar, props.escape_fun or export.escape_comma_whitespace,
props.unescape_fun or export.unescape_comma_whitespace)
for j = 1, #separated_groups, (props.preserve_splitchar and 2 or 1) do
local parsed = export.parse_inline_modifiers_from_segments {
group = separated_groups[j],
group_index = j,
separated_groups = separated_groups,
arg = arg,
props = props
}
if props.preserve_splitchar and j > 1 then
parsed[props.separator_key or "separator"] = separated_groups[j - 1][1]
end
table.insert(terms, parsed)
end
if props.outer_container then
return props.outer_container
else
return terms
end
end
end
--[==[
Parse a single term that may have inline modifiers attached. This is a helper function of {parse_inline_modifiers()} but
is exported separately in case the caller needs to make their own call to {parse_balanced_segment_run()} (as in
[[Module:quote]], which splits on several matched delimiters simultaneously). It takes only a single argument, `data`,
which is an object with the following fields:
* `group`: A list of segments as output by {parse_balanced_segment_run()} (see the overall comment at the top of
[[Module:parse utilities]]), or one of the lists returned by calling {split_alternating_runs()}.
* `separated_groups`: The list of groups (each of which is of the form of `group`) describing all the terms in the
argument parsed by {parse_inline_modifiers()}, or {nil} if this isn't applicable (i.e. multiple terms aren't allowed
in the argument).
* `group_index`: The index into `separated_groups` where `group` can be found, or {nil} if not applicable.
* `arg`: The original user-specified argument being parsed; used only for error messages.
* `props`: The `props` argument to {parse_inline_modifiers()}.
The return value is the object created by `generate_obj`, with properties filled in describing the modifiers of the
term in question.
]==]
function export.parse_inline_modifiers_from_segments(data)
local props = data.props
local group = data.group
local function get_valid_prefixes()
local valid_prefixes = {}
for param_mod, _ in pairs(props.param_mods) do
table.insert(valid_prefixes, param_mod)
end
table.sort(valid_prefixes)
return valid_prefixes
end
local function get_arg_gloss()
if props.paramname then
return ("%s=%s"):format(props.paramname, data.arg)
else
return data.arg
end
end
local parse_err = props.parse_err or export.make_parse_err(get_arg_gloss())
local term_obj = props.generate_obj(group[1], parse_err)
for k = 2, #group - 1, 2 do
if group[k + 1] ~= "" then
parse_err("Extraneous text '" .. group[k + 1] .. "' after modifier")
end
local modtext = group[k]:match("^<(.*)>$")
if not modtext then
parse_err("Internal error: Modifier '" .. group[k] .. "' isn't surrounded by angle brackets")
end
local prefix, val = modtext:match("^([a-zA-Z0-9+_-]+):(.*)$")
if not prefix then
local valid_prefixes = get_valid_prefixes()
for i, valid_prefix in ipairs(valid_prefixes) do
valid_prefixes[i] = "'" .. valid_prefix .. ":'"
end
parse_err("Modifier " .. group[k] .. " lacks a prefix, should begin with one of " ..
require("Module:table").serialCommaJoin(valid_prefixes, {dontTag = true}))
end
local prefix_parse_err =
export.make_parse_err(("modifier prefix '%s' in %s in %s"):format(prefix, group[k], get_arg_gloss()))
if props.param_mods[prefix] then
local mod_props = props.param_mods[prefix]
local key = mod_props.item_dest or prefix
local convert = mod_props.convert
local dest
if mod_props.overall then
if not data.separated_groups then
prefix_parse_err("Internal error: `data.separated_groups` not given when `overall` is seen")
end
if not props.outer_container then
-- This should have been caught earlier during validation in parse_inline_modifiers().
prefix_parse_err("Internal error: `props.outer_container` not given when `overall` is seen")
end
if data.group_index ~= #data.separated_groups then
prefix_parse_err("Prefix should occur after the last comma-separated term")
end
dest = props.outer_container
else
dest = term_obj
end
local converted
if convert then
converted = convert(val, prefix_parse_err)
else
converted = val
end
local store = props.param_mods[prefix].store
if not store then
if dest[key] then
prefix_parse_err("Prefix occurs twice")
end
dest[key] = converted
elseif store == "insert" then
if not dest[key] then
dest[key] = {converted}
else
table.insert(dest[key], converted)
end
elseif store == "insertIfNot" then
if not dest[key] then
dest[key] = {converted}
else
require("Module:table").insertIfNot(dest[key], converted)
end
elseif store == "insert-flattened" then
if not dest[key] then
dest[key] = obj
else
for _, obj in ipairs(converted) do
table.insert(dest[key], obj)
end
end
elseif store == "insertIfNot-flattened" then
if not dest[key] then
dest[key] = obj
else
for _, obj in ipairs(converted) do
require("Module:table").insertIfNot(dest[key], obj)
end
end
elseif type(store) == "string" then
prefix_parse_err(("Internal caller error: Unrecognized value '%s' for `store` property"):format(store))
elseif type(store) ~= "function" then
prefix_parse_err(("Internal caller error: Unrecognized type for `store` property %s"):format(
mw.dumpObject(store)))
else
store {
dest = dest,
key = key,
converted = converted,
raw = val,
parse_err = prefix_parse_err
}
end
else
local valid_prefixes = get_valid_prefixes()
for i, valid_prefix in ipairs(valid_prefixes) do
valid_prefixes[i] = "'" .. valid_prefix .. "'"
end
prefix_parse_err("Unrecognized prefix, should be one of " ..
require("Module:table").serialCommaJoin(valid_prefixes, {dontTag = true}))
end
end
return term_obj
end
return export
jd8bmg3rlcnr1fz1byn0pxk4xzf7u72
คุยกับผู้ใช้:ChristinaJiJoo As
3
315868
1908579
1608207
2024-04-25T16:03:49Z
EmausBot
8119
แก้หน้าเปลี่ยนทางซ้ำซ้อนไปเป็น [[คุยกับผู้ใช้:Aphichat JiJoo Phatcharasophonwanit]]
wikitext
text/x-wiki
#เปลี่ยนทาง [[คุยกับผู้ใช้:Aphichat JiJoo Phatcharasophonwanit]]
rulto7916vn7ezn08gxrc3l22qqhfrg
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/th
10
338305
1908615
2024-04-26T05:32:32Z
Octahedron80
267
สร้างหน้าด้วย "{{list helper 2 |title=เดือนในปฏิทินกริกอเรียน |cat=th:เดือนในปฏิทินกริกอเรียน |list=<!-- -->{{l-self|th|มกราคม}}, <!-- -->{{l-self|th|กุมภาพันธ์}}, <!-- -->{{l-self|th|มีนาคม}}, <!-- -->{{l-self|th|เมษายน}}, <!-- -->{{l-self|th|พฤษภาคม}}, <!-- -->{{l-self|th|มิถุนายน}}, <!-..."
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=th:เดือนในปฏิทินกริกอเรียน
|list=<!--
-->{{l-self|th|มกราคม}}, <!--
-->{{l-self|th|กุมภาพันธ์}}, <!--
-->{{l-self|th|มีนาคม}}, <!--
-->{{l-self|th|เมษายน}}, <!--
-->{{l-self|th|พฤษภาคม}}, <!--
-->{{l-self|th|มิถุนายน}}, <!--
-->{{l-self|th|กรกฎาคม}}, <!--
-->{{l-self|th|สิงหาคม}}, <!--
-->{{l-self|th|กันยายน}}, <!--
-->{{l-self|th|ตุลาคม}}, <!--
-->{{l-self|th|พฤศจิกายน}}, <!--
-->{{l-self|th|ธันวาคม}}<!--
-->}}<!--
--><noinclude>{{list doc}}</noinclude>
f1dgn5me28ebq1u7k6niru67fxr3s5m
คุยกับผู้ใช้:Pure
3
338306
1908619
2024-04-26T05:34:16Z
New user message
2698
เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=Pure}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 12:34, 26 เมษายน 2567 (+07)
5imc1q4apapkh4p1wvub7cc2me39mj3
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/en
10
338307
1908653
2024-04-26T05:45:16Z
Octahedron80
267
สร้างหน้าด้วย "{{list helper 2 |title=เดือนในปฏิทินกริกอเรียน |cat=en:เดือนในปฏิทินกริกอเรียน |hypernym={{l|en|Gregorian calendar}} {{l|en|month}} |list=<!-- -->{{l-self|en|January}}, <!-- -->{{l-self|en|February}}, <!-- -->{{l-self|en|March}}, <!-- -->{{l-self|en|April}}, <!-- -->{{l-self|en|May}}, <!-- -->{{l-self|en|June}}, <!-- -->{{l-self|en|July}}, <!-- -->{{l-self|en..."
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=en:เดือนในปฏิทินกริกอเรียน
|hypernym={{l|en|Gregorian calendar}} {{l|en|month}}
|list=<!--
-->{{l-self|en|January}}, <!--
-->{{l-self|en|February}}, <!--
-->{{l-self|en|March}}, <!--
-->{{l-self|en|April}}, <!--
-->{{l-self|en|May}}, <!--
-->{{l-self|en|June}}, <!--
-->{{l-self|en|July}}, <!--
-->{{l-self|en|August}}, <!--
-->{{l-self|en|September}}, <!--
-->{{l-self|en|October}}, <!--
-->{{l-self|en|November}}, <!--
-->{{l-self|en|December}}<!--
-->}}<!--
--><noinclude>
{{list doc}}
</noinclude>
6kgvpyt36dnexftqfr8qra37kjvz8kw
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/de
10
338308
1908654
2024-04-26T05:50:00Z
Octahedron80
267
สร้างหน้าด้วย "{{list helper 2 |title=เดือนในปฏิทินกริกอเรียน |cat=de:เดือนในปฏิทินกริกอเรียน |hypernym={{l|de|Monat}} im {{l|de|gregorianischer Kalender|gregorianischen Kalender}} ({{l|de|Gregorianischer Kalender|Gregorianischen Kalender}}) |list=<br/> * {{q|สามัญ}} <!-- -->{{l-self|de|Januar}} / {{l-self|de|Jänner}}, <!-- -->{{l-self|de|Februar}} / {{l-self|de|..."
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=de:เดือนในปฏิทินกริกอเรียน
|hypernym={{l|de|Monat}} im {{l|de|gregorianischer Kalender|gregorianischen Kalender}} ({{l|de|Gregorianischer Kalender|Gregorianischen Kalender}})
|list=<br/>
* {{q|สามัญ}} <!--
-->{{l-self|de|Januar}} / {{l-self|de|Jänner}}, <!--
-->{{l-self|de|Februar}} / {{l-self|de|Feber}}, <!--
-->{{l-self|de|März}}, <!--
-->{{l-self|de|April}}, <!--
-->{{l-self|de|Mai}}, <!--
-->{{l-self|de|Juni}} ({{l-self|de|Juno}}), <!--
-->{{l-self|de|Juli}} ({{l-self|de|Julei}}), <!--
-->{{l-self|de|August}}, <!--
-->{{l-self|de|September}}, <!--
-->{{l-self|de|Oktober}}, <!--
-->{{l-self|de|November}}, <!--
-->{{l-self|de|Dezember}}<br/>
* {{q|โบราณ|ร้อยกรอง}} <!--
-->{{l-self|de|Hartung}}, <!--
-->{{l-self|de|Hornung}}, <!--
-->{{l-self|de|Lenzing}}, <!--
-->{{l-self|de|Launing}} / {{l-self|de|Ostermond}} / {{l-self|de|Ostermonat}}, <!--
-->{{l-self|de|Wonnemond}}, <!--
-->{{l-self|de|Brachet}}, <!--
-->{{l-self|de|Heuert}} / {{l-self|de|Heumonat}}, <!--
-->{{l-self|de|Ernting}} / {{l-self|de|Erntemond}} / {{l-self|de|Erntemonat}}, <!--
-->{{l-self|de|Scheiding}}, <!--
-->{{l-self|de|Gilbhart}}, <!--
-->{{l-self|de|Nebelung}}, <!--
-->{{l-self|de|Julmond}} <!--
-->}}<!--
--><noinclude>
{{list doc}}
</noinclude>
dlpfokg8mb5vb1dpc5zei57kf13sub0
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/ja
10
338309
1908655
2024-04-26T05:51:31Z
Octahedron80
267
สร้างหน้าด้วย "* {{list helper 2 |title=เดือนในปฏิทินกริกอเรียน |cat=ja:เดือนในปฏิทินกริกอเรียน |list=<!-- -->{{ja-r|一%月|いち%がつ}}, <!-- -->{{ja-r|二%月|に%がつ}}, <!-- -->{{ja-r|三%月|さん%がつ}}, <!-- -->{{ja-r|四%月|し%がつ}}, <!-- -->{{ja-r|五%月|ご%がつ}}, <!-- -->{{ja-r|六%月|ろく%がつ}}, <!-- -->{{ja-r|七%月|しち%がつ}}, <!-..."
wikitext
text/x-wiki
* {{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=ja:เดือนในปฏิทินกริกอเรียน
|list=<!--
-->{{ja-r|一%月|いち%がつ}}, <!--
-->{{ja-r|二%月|に%がつ}}, <!--
-->{{ja-r|三%月|さん%がつ}}, <!--
-->{{ja-r|四%月|し%がつ}}, <!--
-->{{ja-r|五%月|ご%がつ}}, <!--
-->{{ja-r|六%月|ろく%がつ}}, <!--
-->{{ja-r|七%月|しち%がつ}}, <!--
-->{{ja-r|八%月|はち%がつ}}, <!--
-->{{ja-r|九%月|く%がつ}}, <!--
-->{{ja-r|十%月|じゅう%がつ}}, <!--
-->{{ja-r|十%一%月|じゅう%いち%がつ}}, <!--
-->{{ja-r|十%二%月|じゅう%に%がつ}}<!--
-->}}<noinclude>{{list doc}}</noinclude>
gfxznfzrofqdmun8qs2g6ywz1l2ow7i
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/el
10
338310
1908656
2024-04-26T05:54:53Z
Octahedron80
267
สร้างหน้าด้วย "{{list helper 2 |title=เดือนในปฏิทินกริกอเรียน |cat=el:เดือนในปฏิทินกริกอเรียน |hypernym={{l|el|μήνες}} |list=<!-- -->{{l-self|el|Ιανουάριος}}, <!-- -->{{l-self|el|Φεβρουάριος}}, <!-- -->{{l-self|el|Μάρτιος}}, <!-- -->{{l-self|el|Απρίλιος}}, <!-- -->{{l-self|el|Μάιος}}, <!-- -->{{l-self|el|Ιούνιος}}, <!-- -..."
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=el:เดือนในปฏิทินกริกอเรียน
|hypernym={{l|el|μήνες}}
|list=<!--
-->{{l-self|el|Ιανουάριος}}, <!--
-->{{l-self|el|Φεβρουάριος}}, <!--
-->{{l-self|el|Μάρτιος}}, <!--
-->{{l-self|el|Απρίλιος}}, <!--
-->{{l-self|el|Μάιος}}, <!--
-->{{l-self|el|Ιούνιος}}, <!--
-->{{l-self|el|Ιούλιος}}, <!--
-->{{l-self|el|Αύγουστος}}, <!--
-->{{l-self|el|Σεπτέμβριος}}, <!--
-->{{l-self|el|Οκτώβριος}}, <!--
-->{{l-self|el|Νοέμβριος}}, <!--
-->{{l-self|el|Δεκέμβριος}}<!--
-->}}<!--
--><noinclude>
{{list doc}}</noinclude>
g4zsi1gx6y11dq16xmnwk74k8fz3vcj
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/km
10
338311
1908657
2024-04-26T05:57:32Z
Octahedron80
267
สร้างหน้าด้วย "{{list helper 2 |title=เดือนในปฏิทินกริกอเรียน |cat=km:เดือนในปฏิทินกริกอเรียน |hypernym={{l|km|[[ខែ]][[សុរិយ]][[គតិ]]}} |list=<!-- -->{{l-self|km|មករា}}, <!-- -->{{l-self|km|កុម្ភៈ}}, <!-- -->{{l-self|km|មីនា}}, <!-- -->{{l-self|km|មេសា}}, <!-- -->{{l-self|km|ឧសភា}}, <!-- -->{{l-self|km|មិ..."
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=km:เดือนในปฏิทินกริกอเรียน
|hypernym={{l|km|[[ខែ]][[សុរិយ]][[គតិ]]}}
|list=<!--
-->{{l-self|km|មករា}}, <!--
-->{{l-self|km|កុម្ភៈ}}, <!--
-->{{l-self|km|មីនា}}, <!--
-->{{l-self|km|មេសា}}, <!--
-->{{l-self|km|ឧសភា}}, <!--
-->{{l-self|km|មិថុនា}}, <!--
-->{{l-self|km|កក្កដា}}, <!--
-->{{l-self|km|សីហា}}, <!--
-->{{l-self|km|កញ្ញា}}, <!--
-->{{l-self|km|តុលា}}, <!--
-->{{l-self|km|វិច្ឆិកា}}, <!--
-->{{l-self|km|ធ្នូ}}<!--
-->}}<!--
--><noinclude>{{list doc}}</noinclude>
lydujfs1lirufalkwklw9o4t5ifqduo
แม่แบบ:รายชื่อ:เดือนในปฏิทินกริกอเรียน/shn
10
338312
1908658
2024-04-26T05:59:54Z
Octahedron80
267
สร้างหน้าด้วย "{{list helper 2 |title=เดือนในปฏิทินกริกอเรียน |cat=shn:เดือนในปฏิทินกริกอเรียน |list=<!-- -->{{l-self|shn|ၸၼ်ႇဝႃႇရီႇ}}, <!-- -->{{l-self|shn|ၾႅပ်ႇဝႃႇရီႇ}}, <!-- -->{{l-self|shn|မၢတ်ႉ}} / {{l-self|shn|မၢတ်ႉၶျ်}}, <!-- -->{{l-self|shn|ဢေႇပရႄႇ}}, <!-- -->{{l-self|shn|မေႇ}},..."
wikitext
text/x-wiki
{{list helper 2
|title=เดือนในปฏิทินกริกอเรียน
|cat=shn:เดือนในปฏิทินกริกอเรียน
|list=<!--
-->{{l-self|shn|ၸၼ်ႇဝႃႇရီႇ}}, <!--
-->{{l-self|shn|ၾႅပ်ႇဝႃႇရီႇ}}, <!--
-->{{l-self|shn|မၢတ်ႉ}} / {{l-self|shn|မၢတ်ႉၶျ်}}, <!--
-->{{l-self|shn|ဢေႇပရႄႇ}}, <!--
-->{{l-self|shn|မေႇ}}, <!--
-->{{l-self|shn|ၵျုၼ်ႇ}}, <!--
-->{{l-self|shn|ၵျူႇလၢႆႇ}}, <!--
-->{{l-self|shn|ဢေႃးၵုတ်ႉ}} / {{l-self|shn|ဢေႃးၵၢတ်ႉ}}, <!--
-->{{l-self|shn|သႅပ်ႇထႅမ်ႇပႃႇ}}, <!--
-->{{l-self|shn|ဢွၵ်ႇတူဝ်ႇပိူဝ်}} / {{l-self|shn|ဢွၵ်ႇထူဝ်ႇပႃႇ}}, <!--
-->{{l-self|shn|ၼူဝ်ႇဝႅမ်ႇပိူဝ်ႇ}} / {{l-self|shn|ၼူဝ်ႇဝႅမ်ႇပႃႇ}}, <!--
-->{{l-self|shn|တီႇၸႅမ်ႇပိူဝ်ႇ}} / {{l-self|shn|တီႇသႅမ်ႇပႃႇ}}<!--
-->}}<!--
--><noinclude>{{list doc}}</noinclude>
c8n6hvn52c73px5vlz8k2fk7ecwdilh
ᨾᩦᨶᩣᨣᩫ᩠ᨾ
0
338313
1908659
2024-04-26T06:07:47Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|มีนาคม}} === คำวิสามานยนาม === {{nod-proper noun}} # [[มีนาคม]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|มีนาคม}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[มีนาคม]]
rdd7npsfhtgsw2wu28xczn99jyx1kv3
ᨾᩥᨳᩩᨶᩣᨿᩫ᩠ᨶ
0
338314
1908660
2024-04-26T06:09:11Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|มิถุนายน}} === คำวิสามานยนาม === {{nod-proper noun}} # [[มิถุนายน]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|มิถุนายน}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[มิถุนายน]]
lb34ea20mh2h48zgcc6imfe2p4etba1
ᨾᨠᩁᩣᨣᩫ᩠ᨾ
0
338315
1908661
2024-04-26T06:11:10Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|มกราคม}} === คำวิสามานยนาม === {{nod-proper noun}} # [[มกราคม]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|มกราคม}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[มกราคม]]
pah1rjjzwrnnm8ovyygx20i6urgfgjz
ᨾᩮᩇᩣᨿᩫ᩠ᨶ
0
338316
1908662
2024-04-26T06:12:47Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|เมษายน}} === คำวิสามานยนาม === {{nod-proper noun}} # [[เมษายน]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|เมษายน}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[เมษายน]]
oz4i51we2fjc69lhbzfozumfcex5ei5
1908665
1908662
2024-04-26T06:28:40Z
Octahedron80
267
/* ภาษาคำเมือง */
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
* {{alt|nod|ᨾᩮ᩠ᩇᩣᨿᩫ᩠ᨶ||ไม่มาตรฐาน}}
=== รากศัพท์ ===
{{bor+|nod|th|เมษายน}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[เมษายน]]
hkv7nw8vnzbyr6kx4b3g41p8rqcm9ck
ᨲᩩᩃᩣᨣᩫ᩠ᨾ
0
338317
1908663
2024-04-26T06:19:53Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|ตุลาคม}} === คำวิสามานยนาม === {{nod-proper noun}} # [[ตุลาคม]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|ตุลาคม}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[ตุลาคม]]
8cahgbbatisju4mkln23y83vbdd36cn
ᨠᩩᨾ᩠ᨽᩣᨻᩢᨶ᩠ᨵ᩺
0
338318
1908664
2024-04-26T06:22:09Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|กุมภาพันธ์}} === คำวิสามานยนาม === {{nod-proper noun}} # [[กุมภาพันธ์]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|กุมภาพันธ์}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[กุมภาพันธ์]]
gc00raqishvgddo7ntlog2iuaun4ggk
ᨻᩁᩂᩇ᩠ᨽᩣᨣᩫ᩠ᨾ
0
338319
1908666
2024-04-26T06:29:59Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|พฤษภาคม}} === คำวิสามานยนาม === {{nod-proper noun}} # [[พฤษภาคม]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|พฤษภาคม}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[พฤษภาคม]]
qgwea6z98kzltwk9anozy6z0e6fmraf
ᨠᩁᨠᨯᩣᨣᩫ᩠ᨾ
0
338320
1908667
2024-04-26T06:33:38Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === * {{alt|nod|ᨠᩁᨠᨭᩣᨣᩫ᩠ᨾ}} === รากศัพท์ === {{bor+|nod|th|กรกฎาคม}} === คำวิสามานยนาม === {{nod-proper noun}} # [[กรกฎาคม]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
* {{alt|nod|ᨠᩁᨠᨭᩣᨣᩫ᩠ᨾ}}
=== รากศัพท์ ===
{{bor+|nod|th|กรกฎาคม}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[กรกฎาคม]]
232wlzvobd5y8u9l6757dq3xn1ybwdu
ᨠᩢᨶ᩠ᨿᩣᨿᩫ᩠ᨶ
0
338321
1908668
2024-04-26T06:36:06Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === * {{alt|nod|ᨠᩢ᩠ᨶᨿᩣᨿᩫ᩠ᨶ||ไม่มาตรฐาน}} === รากศัพท์ === {{bor+|nod|th|กันยายน}} === คำวิสามานยนาม === {{nod-proper noun}} # [[กันยายน]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
* {{alt|nod|ᨠᩢ᩠ᨶᨿᩣᨿᩫ᩠ᨶ||ไม่มาตรฐาน}}
=== รากศัพท์ ===
{{bor+|nod|th|กันยายน}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[กันยายน]]
7qa6od0ciw1rekzl08cut2skt23naol
ᩈᩥᩘᩉᩣᨣᩫ᩠ᨾ
0
338322
1908669
2024-04-26T06:39:36Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|สิงหาคม}} === คำวิสามานยนาม === {{nod-proper noun}} # [[สิงหาคม]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|สิงหาคม}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[สิงหาคม]]
bjn20qg2w6sr6oec0pwnhg6kn2p25q1
ᨻᩁᩂᩆ᩠ᨧᩥᨠᩣᨿᩫ᩠ᨶ
0
338323
1908670
2024-04-26T06:41:02Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รากศัพท์ === {{bor+|nod|th|พฤศจิกายน}} === คำวิสามานยนาม === {{nod-proper noun}} # [[พฤศจิกายน]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รากศัพท์ ===
{{bor+|nod|th|พฤศจิกายน}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[พฤศจิกายน]]
q9qpvpmk8dr5yk3sjctvvo1o2ahudcs
ᨵᩢᨶ᩠ᩅᩣᨣᩫ᩠ᨾ
0
338324
1908671
2024-04-26T06:43:02Z
Octahedron80
267
สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === * {{alt|nod|ᨵᩢᨶᩣ᩠ᩅᨣᩫ᩠ᨾ||ไม่มาตรฐาน}} === รากศัพท์ === {{bor+|nod|th|ธันวาคม}} === คำวิสามานยนาม === {{nod-proper noun}} # [[ธันวาคม]]"
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
* {{alt|nod|ᨵᩢᨶᩣ᩠ᩅᨣᩫ᩠ᨾ||ไม่มาตรฐาน}}
=== รากศัพท์ ===
{{bor+|nod|th|ธันวาคม}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# [[ธันวาคม]]
sfhswq5kwoikeudjrszdw2jn23jlnt0
คุยกับผู้ใช้:Isaacmarchand
3
338325
1908675
2024-04-26T06:54:43Z
New user message
2698
เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=Isaacmarchand}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 13:54, 26 เมษายน 2567 (+07)
lt563h3h48pgl9qi67gf19s6n6zd53e