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 "&amp;#91;" to be treated equivalently, with either one closed by either "]" or "&amp;#93;". To do this, first replace "&amp;#91;" and "&amp;#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