diff --git a/.ci/tags.html b/.ci/tags.html index 4510cbfba0..bd70b26db0 100644 --- a/.ci/tags.html +++ b/.ci/tags.html @@ -1,17 +1,19 @@ + + +
- - +

Google Fonts Tagger

- @@ -33,8 +35,7 @@

Google Fonts Tagger

Edited
-
- +
{{ family.Family }}
@@ -42,8 +43,11 @@

Google Fonts Tagger

-
- The quick brown fox jumps over the lazy dog +
+ {{ familyPangram(family) }} +
+
+ Loading...
@@ -56,16 +60,36 @@

Google Fonts Tagger

el: '#app', data() { return { + ready: false, isEdited: false, newFamily: '', newWeight: '', CurrentCategory: "/Expressive/Calm", Categories: new Set(), - Families: [] + Families: [], + Pangrams: new Map([ + ["English", "The quick brown fox jumps over the lazy dog."], + ["Greek", "Ζαφείρι δέξου πάγκαλο, βαθῶν ψυχῆς τὸ σῆμα"], + ["Cyrillic", "В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!"], + ["Japanese", "いろはにほへと ちりぬるを わかよたれそ つねならむ うゐのおくやま けふこえて あさきゆめみし ゑひもせす(ん"], + ["Chinese", "視野無限廣,窗外有藍天"], + ["Arabic", "نص حكيم له سر قاطع وذو شأن عظيم مكتوب على ثوب أخضر ومغلف بجلد أزرق"], + ["Hebrew", "שפן אכל קצת גזר בטעם חסה, ודי."], + ["Devanagari", "ऋषियों को सताने वाले दुष्ट राक्षसों के राजा रावण का सर्वनाश करने वाले विष्णुवतार भगवान श्रीराम, अयोध्या के महाराज दशरथ के बड़े सपुत्र थे।"], + ["Bengali", "যেহেতু মানব পরিবারের সকল সদস্যের সমান ও অবিচ্ছেদ্য অধিকারসমূহ"], + ["Gujarati", "કેમ કે માનવકુટુંબના દરેક સભ્યની પરંપરાપ્રાપ્ત પ્રતિષ્ઠાને અને"], + ["Telugu", "మానవకుటంబమునందలి వ్యక్తులందరికిని గల ఆజన్మసిద్ధమైన ప్రతిపత్తిని"], + ["Kannada", "ಎಲ್ಲಾ ಮಾನವರೂ ಸ್ವತಂತ್ರರಾಗಿಯೇ ಜನಿಸಿದ್ದಾರೆ. ಹಾಗೂ ಘನತೆ ಮತ್ತು ಹಕ್ಕುಗಳಲ್ಲಿ"], + ["Khmer", "ដោយយល់ឃើញថា ការទទួលស្គាល់សេចក្ដីថ្លៃថ្នូរជាប់ពីកំណើត និងសិទ្ធិស្មើភាពគ្នា"], + ["Phags Pa", "ꡗ ꡈꡱ ᠂ ꡒ ꡂ ꡈꡞ ᠂ ꡚꡖꡋ ꡈꡞꡋꡨꡖ ꡗꡛꡧꡖ ꡈꡋ ꡈꡱꡨꡖ ꡳꡬꡖ"], + ["Tamil", "மனிதக் குடும்பத்தினைச் சேர்ந்த யாவரதும் உள்ளார்ந்த"], + ]), + FamilyScripts: new Map(), }; }, created() { this.loadCSV(); + this.loadFamilyPangrams(); }, computed: { sortedFamilies() { @@ -74,16 +98,64 @@

Google Fonts Tagger

filtered.sort(function(a, b) {return b.Weight - a.Weight;}); return filtered; }, + uniqueFamilies() { + return Array.from(new Set(this.Families.map((family) => family.Family))); + }, sortedCategories() { return Array.from(this.Categories).sort(); } }, methods: { + familyPangram(family) { + return this.Pangrams.get(this.FamilyScripts.get(family.Family)); + }, edited() { this.isEdited = true; }, + parseUnicode(str) { + let ranges = str.split(","); + let script = "English"; + let scripts = { + "U+600-6FF": "Arabic", + "U+900-97F": "Devanagari", + "U+590-5FF": "Hebrew", + "U+A80-AFF": "Gujarati", + "U+C00-C7F": "Telugu", + "U+C80-CFF": "Kannada", + "U+980-9FE": "Bengali", + "U+1780-17FF": "Khmer", + "U+A840-A877": "Phags Pa", + "U+0B82-0BFA": "Tamil", + } + for (let i = 0; i < ranges.length; i++) { + for (let key in scripts) { + if (ranges[i].includes(key)) { + script = scripts[key]; + break; + } + } + } + return script; + }, + async loadFamilyPangrams(delay = 1000) { + await document.fonts.ready; + let result = new Map(); + let fonts = document.fonts; + fonts.forEach((font) => { + if (!result.has(font.family)) { + result.set(font.family, this.parseUnicode(font.unicodeRange)); + } + }); + console.log(result.size) + if (result.size < 1000) { + console.log("retry") + setTimeout(() => this.loadFamilyPangrams(), delay); + } + this.FamilyScripts = result; + this.ready = true; + }, familyLink(Family) { - return "https://fonts.googleapis.com/css2?family=" + Family.Family.replace(" ", "+") + "&display=swap" + return "https://fonts.googleapis.com/css2?family=" + Family.replace(" ", "+") + "&display=swap" }, familyCSSClass(Family) { let cssName = Family.family.replace(" ", "-").toLowerCase(); @@ -110,7 +182,6 @@

Google Fonts Tagger

}, saveCSV() { this.Families = this.Families.filter((t) => t.Family !== ""); - console.log(this.Families); let csv = Papa.unparse(this.Families, { columns: ["Family", "Group/Tag", "Weight"], @@ -130,7 +201,6 @@

Google Fonts Tagger

}, prCSV() { this.Families = this.Families.filter((t) => t.Family !== ""); - console.log(this.Families); let csv = Papa.unparse(this.Families, { columns: ["Family", "Group/Tag", "Weight"],