*/}}
Browse Source

Icon gen and scrolling fix

YimingWu 3 months ago
parent
commit
09a9e73f57
9 changed files with 1007 additions and 326 deletions
  1. 1 0
      CMakeLists.txt
  2. BIN
      fonts/NotoSansMath-Regular.ttf
  3. 561 224
      la_icon.h
  4. 415 77
      la_icon_gen.py
  5. 22 20
      la_kernel.c
  6. 1 1
      resources/la_nodes_basic.c
  7. 3 3
      resources/la_operators.c
  8. 1 1
      resources/la_templates.c
  9. 3 0
      resources/la_widgets.c

+ 1 - 0
CMakeLists.txt

@@ -125,6 +125,7 @@ set(LAGUI_FONTS
     "fonts/NotoSansMono-Regular.ttf"
     "fonts/NotoSansSymbols-Regular.ttf"
     "fonts/NotoSansSymbols2-Regular.ttf"
+    "fonts/NotoSansMath-Regular.ttf"
 )
 
 add_library(lagui ${HEADER_FILES} ${SOURCE_FILES})

BIN
fonts/NotoSansMath-Regular.ttf


+ 561 - 224
la_icon.h

@@ -1,263 +1,600 @@
-/*
-* LaGUI: A graphical application framework.
-* Copyright (C) 2022-2023 Wu Yiming
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 3 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
 #pragma once
 
-// arrows
+// Latin-1 Supplement
+#ifndef _LA_ICO_LATIN_1_SUPPLEMENT
+#define _LA_ICO_LATIN_1_SUPPLEMENT\
+" «»×÷ÁÂÄÀÅÃÆÇÐÉÊËÈÍÎÏÌÑÓÔÖÒØÕÞÚÛÜÙÝáâäàå"\
+"ãæçðéêëèíîïìñóôöòøõþßúûüùýÿªº¡¿·¶§©®°¢£¥"\
+"¨´¯¸ €‚ƒ„…†‡ˆ‰‘’“”•–—˜™Š‹ŒŽš›œžŸ©®÷"\
+"¬× ±§"
+;
+#endif
+
+// Latin Extended-A
+#ifndef _LA_ICO_LATIN_EXTENDED_A
+#define _LA_ICO_LATIN_EXTENDED_A\
+"ĂĀĄĆČĊĎĐĚĖĒĘĞĢĠĦIJİĪĮĶĹĽĻŁŃŇŅŊŐŌŒŔŘŖŚŠŞŤŬ"\
+"ŰŪŲŮŴŶŸŹŽŻăāąćčċďđěėēęğģġħıijīįķĺľļłńňņŋő"\
+"ōœŕřŗśšşťŭűūųůŵŷźžż"
+;
+#endif
+
+// Latin Extended-B
+#ifndef _LA_ICO_LATIN_EXTENDED_B
+#define _LA_ICO_LATIN_EXTENDED_B\
+"ǍȘȚǎȷșț"
+;
+#endif
+
+// Spacing Modifier Letters
+#ifndef _LA_ICO_SPACING_MODIFIER_LETTERS
+#define _LA_ICO_SPACING_MODIFIER_LETTERS\
+"˙˝ˆˇ˘˚˜˛ˉ"
+;
+#endif
+
+// Combining Diacritical Marks
+#ifndef _LA_ICO_COMBINING_DIACRITICAL_MARKS
+#define _LA_ICO_COMBINING_DIACRITICAL_MARKS\
+"̧̨̦̰̈̀́̋̄̇̂̌̆̊̃̒̂̈̇̅̃"
+;
+#endif
+
+// Greek and Coptic
+#ifndef _LA_ICO_GREEK_AND_COPTIC
+#define _LA_ICO_GREEK_AND_COPTIC\
+"ΑΒΧΔΕΗΓΙΚΛΜΝΩΟΦΠΨΡΣΤΘϴΥΞΖαβχδεϵηγικϰλμνω"\
+"οφϕπϖψρϱσςτθϑυξζ"
+;
+#endif
+
+// Latin Extended Additional
+#ifndef _LA_ICO_LATIN_EXTENDED_ADDITIONAL
+#define _LA_ICO_LATIN_EXTENDED_ADDITIONAL\
+"ẞẂẄẀỲẃẅẁỳ"
+;
+#endif
+
+// General Punctuation
+#ifndef _LA_ICO_GENERAL_PUNCTUATION
+#define _LA_ICO_GENERAL_PUNCTUATION\
+"…“”‘’•–—‚„‹›•‍‼⁉‶′‵⁗″‴‷"
+;
+#endif
+
+// Currency Symbols
+#ifndef _LA_ICO_CURRENCY_SYMBOLS
+#define _LA_ICO_CURRENCY_SYMBOLS\
+"€"
+;
+#endif
+
+// Combining Diacritical Marks for Symbols
+#ifndef _LA_ICO_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS
+#define _LA_ICO_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS\
+"⃠⃝⃟⃣⃢⃞⃤⃣⃢⃣⃚⃙⃦⃪⃫⃒⃥⃘⃓⃮⃭⃯⃬⃨⃧⃔⃕⃜⃖⃐⃡⃗⃑⃛⃩"
+;
+#endif
+
+// Letterlike Symbols
+#ifndef _LA_ICO_LETTERLIKE_SYMBOLS
+#define _LA_ICO_LETTERLIKE_SYMBOLS\
+"™™ℹℬℭℂⅅℰℱℾℌℍℋℑℐℒℳℕℙℿℚℜℝℛℨℤℵℶℸⅆⅇℯℽℷℊⅈⅉℴℼℎ"\
+"⅀"
+;
+#endif
+
+// Number Forms
+#ifndef _LA_ICO_NUMBER_FORMS
+#define _LA_ICO_NUMBER_FORMS\
+"ⅧⅪⅬⅤⅮↁⅣⅭⅨⅠↃↈↀⅦⅥⅩↂⅯⅢⅫⅡⅷⅺⅼↆↇⅴⅾⅳⅽⅸⅰⅿⅶⅵↅⅹⅲ↋ⅻ"\
+"ⅱ↊"
+;
+#endif
+
+// Arrows
 #ifndef _LA_ICO_ARROWS
-#define _LA_ICO_ARROWS \
-"←↑→↓↔↕↖↗↘↙↩↪↯⇦⇧⇨⇩⇪⇫⇬⇭⇮⇯⇰⇳⤡⤢⤴⤵🠀🠁🠂🠃🠄🠅🠆🠇🠈🠉🠊" \
-"🠋🠐🠑🠒🠓🠔🠕🠖🠗🠘🠙🠚🠛🠜🠝🠞🠟🠠🠡🠢🠣🠤🠥🠦🠧🠨🠩🠪🠫🠬🠭🠮🠯🠰🠱🠲🠳🠴🠵🠶" \
-"🠷🠸🠹🠺🠻🠼🠽🠾🠿🡀🡁🡂🡃🡄🡅🡆🡇🡐🡑🡒🡓🡔🡕🡖🡗🡘🡙🡠🡡🡢🡣🡤🡥🡦🡧🡨🡩🡪🡫🡬" \
-"🡭🡮🡯🡰🡱🡲🡳🡴🡵🡶🡷🡸🡹🡺🡻🡼🡽🡾🡿🢀🢁🢂🢃🢄🢅🢆🢇🢐🢑🢒🢓🢔🢕🢖🢗🢘🢙🢚🢛🢜" \
-"🢝🢞🢟🢠🢡🢢🢣🢤🢥🢦🢧🢨🢩🢪🢫🢬🢭🢰🢱"
+#define _LA_ICO_ARROWS\
+"↓←↔↗↖→↘↙↑↕⇧⇨⇩⇦⇫⇬⇭⇮⇯⇰⇳⇪↯↔↕↖↗↘↙↩↪↺↵↻⇣⇵↓⇃⇂⇓"\
+"⇊↧↲↳↡⇆←↽↼⇠⇐⇇⇍⇺↤↩↫⇽⇋↔⇔⇎⇼⇿↮⇹↭⇜↚⇤↢↹⇚↞⇷↜↗⇗↖⇱"\
+"⇖↸⇟⇞→⇀⇁⇴↴⇢⇒⇉⇏⇻↦↪↬⇾⇄⇌⇝↛⇥↣⇛↠⇸↝↘⇲⇘↙⇙⇶↶↷⇅↑↿↾"\
+"⇡⇑⇈↕⇕↨↥↰↱↟"
+;
+#endif
+
+// Mathematical Operators
+#ifndef _LA_ICO_MATHEMATICAL_OPERATORS
+#define _LA_ICO_MATHEMATICAL_OPERATORS\
+"−⋅∙⊙⋄∘⋆≌≊∠∳≐≈≒≆⊦∗⊛≃∵≬⋈∙∲∱≔∁≅∍⊳⊵⋺⋽⋻∮∐≘∛⋏⋎"\
+"⊝∬≜⋄≏∣∕⋇⋫⋭∤⊮⋠⊬⋡⋅∸∔⋒⋐⋑⋓⊫⋱∈∊⋵⋲⋶⋹⋸⋳⋮∅∎⋕⊜≕≝⋝"\
+"⋜⋞⋟≚≡≍≙∹∃⊩∜⊘≑≎∺∇≩⋧⋗≥⋛≳≷≧⊹∻⊷≓∆∞∫⊺∩∾⋉⋋≨⋦⋖≤"\
+"⋚≲≶≦∧∨∡≞⋯−⊖∓≂⊧≫≪⊸⊗⊌⊍⊎⋂⋀⋁⋃⊼⊯≇⊈⊉≵≴≸⊽⊲⊴≉≄∌∉"\
+"≠≭≯≱≹≢≮≰⋪⋬∦⊀≁⋢⋣⊄⊁⊅⊭⊙⊶∟∥∂⋔⊕≺⋨≼≾⊰∏∷∝≟√∶⊆⊇∽"\
+"⋍⊾⋊⋌⊢⊿≗≖∘⊚∖∼∿⋾⋼⋷⋴∢⊓⊔⊡⊟⊞⊠⊏⊑⋤⊐⊒⋥≛⋆≣⊂⊊≻⋩≽≿⊱"\
+"∋∑⊃⊋∯⊤⊣∄∴∭≋⊪⊨∪∀⋰⊥⋙⋘∰≀⊻⋿"
 ;
 #endif
 
-// dingbats
+// Miscellaneous Technical
+#ifndef _LA_ICO_MISCELLANEOUS_TECHNICAL
+#define _LA_ICO_MISCELLANEOUS_TECHNICAL\
+"⏦⌮⎇〈〉⌒⌬⏣⌞⌍⌟⌌⎋⎚⎄⌲⎁⌃⌴⌵⌭⏨⎖⌀⌱⎓⎂⌄⎊⏉⏁⏄⏇⏚⌁⏧⎃⎆⏥⌢"\
+"⏛⎈⎉⎯⌂⎎⎀⌈⌊⏑⏒⏔⏙⏓⏘⏗⏖⏕⎍⎘⎏⎐⎑⎒⌆⎗⎙⌅⌉⌋⍼⌔⌓⌳⌣⎔⌑⏍⏤⌯"\
+"⌕⌜⌏⌎⌝⌰⎌⏊⏂⏅⏈⏌⎿⏋⎾⏆⏀⏐⏃⌗⌇⎅⏢⌤⏺⏪⏮⏷⏴⏵⏶⏩⏭⏯⏹⏸⌛⏳⌧⌫"\
+"⌦⏏⌨⌥⌘⏎⍽⏱⏲⌚⌖⍾⍻⏿⏻⏼⏽⎔⏾⍿⌚⌛⌨⏏⏩⏪⏫⏬⏭⏮⏯⏰⏱⏲⏳⏸⏹⏺⌶⍺"\
+"⍶⍀⍉⍥⌾⍟⌽⍜⍪⍢⍒⍋⍙⍫⍚⍱⍦⍎⍊⍖⍷⍩⍳⍸⍤⍛⍧⍅⍵⍹⎕⍂⌼⍠⍔⍍⌺⌹⍗⍌"\
+"⌸⍄⌻⍇⍃⍯⍰⍈⍁⍐⍓⍞⍘⍴⍆⍮⌿⌷⍣⍭⍨⍲⍝⍡⍕⍑⍏⍬⌞⌟⏟⏝⎵⎶⏡⎪⎯⌡⎮⌠"\
+"⌈⌊⎩⎨⎧⎢⎣⎡⌐⎜⎝⎛⎟⎠⎞⌉⌋⍼⎭⎬⎫⎥⎦⎤⎳⎲⌜⌝⏞⏜⎴⏠⌙⎰⎱⏐"
+;
+#endif
+
+// Control Pictures
+#ifndef _LA_ICO_CONTROL_PICTURES
+#define _LA_ICO_CONTROL_PICTURES\
+"␣␢␆␈␇␘␍␐␡␥␔␑␓␒␙␃␗␄␅␛␜␌␝␉␊␕␤␀␞␏␎␠␁␂␚␦␖␟␋"
+;
+#endif
+
+// Optical Character Recognition
+#ifndef _LA_ICO_OPTICAL_CHARACTER_RECOGNITION
+#define _LA_ICO_OPTICAL_CHARACTER_RECOGNITION\
+"⑇⑄⑅⑆⑁⑉⑈⑊⑂⑀⑃"
+;
+#endif
+
+// Enclosed Alphanumerics
+#ifndef _LA_ICO_ENCLOSED_ALPHANUMERICS
+#define _LA_ICO_ENCLOSED_ALPHANUMERICS\
+"ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐ⒜ⓑ⒝ⓒ⒞ⓓ⒟ⓔ⒠⑧⓼⑻⒏"\
+"ⓕ⒡⑤⓹⑸⒌④⓸⑷⒋ⓖ⒢ⓗ⒣ⓘ⒤ⓙ⒥ⓚ⒦ⓛ⒧ⓜ⒨ⓝ⒩⑨⓽⑼⒐ⓞ⒪①⓵⑴⓲⑱⒅⒙⓯"\
+"⑮⒂⒖⓮⑭⒁⒕⓳⑲⒆⒚⓫⑪⑾⒒⒈⓱⑰⒄⒘⓰⑯⒃⒗⓭⑬⒀⒔⓬⑫⑿⒓⑩⓾⑽⒑ⓟ⒫ⓠ⒬"\
+"ⓡ⒭ⓢ⒮⑦⓻⑺⒎⑥⓺⑹⒍ⓣ⒯③⓷⑶⒊②⓶⑵⒉⓴⑳⒇⒛ⓤ⒰ⓥ⒱ⓦ⒲ⓧ⒳ⓨ⒴ⓩ⒵⓿⓪"\
+"Ⓜ⑴⑵"
+;
+#endif
+
+// Geometric Shapes
+#ifndef _LA_ICO_GEOMETRIC_SHAPES
+#define _LA_ICO_GEOMETRIC_SHAPES\
+"◌◊●○◯◐◑◒◓◖◗◔◕◴◵◶◷◍◌◉◎◦◘◙◚◛◠◡◜◝◞◟◆◇◈▰▱▮▬▭"\
+"▯■□▢▣▤▥▦▧▨▩▪▫◧◨◩◪◫◰◱◲◳◻◼◽◾▲▶▼◀△▷▽◁◬◭◮►◄▻"\
+"◅▴▸▾◂▵▹▿◃◥◢◣◤◹◿◺◸▪▫▶◀◻◼◽◾◌▽◁◊◻▷△▯"
+;
+#endif
+
+// Miscellaneous Symbols
+#ifndef _LA_ICO_MISCELLANEOUS_SYMBOLS
+#define _LA_ICO_MISCELLANEOUS_SYMBOLS\
+"☬⚗⚓☥♒♈☊⛢⚛♬⛨⚑⚸♻☻☤♋♑⛫⚳⚷⛪⚰☌☧⚔⛾☋⚮⚢⚣♁♱☫⛴☽⛳♭⚜⚘"\
+"⛲⛽⚱⚙⛮⛭♊⚒☭⛼⛣⛬⚩⛸⚤⛧⛻☩⚵♃☾⛦♌♎☨⚥⚧⚦⛯⚭♂☿⛰♮♆⚲♪♫⛎☍"\
+"☦⚝⚴♽☮⛤♾⛹♓♇♩⚻♼♲♺♳♴♵♶♷♸♹⛥♐⛵☓♄⚖♏⚺⚼⚹♯⛩⛷⛶⚕⚚☪♉"\
+"⛺⛱⚯♅♀⚨⚶♍♰☸⚐⛿☹☺☯☀☁☂☃☄☇☈☉☔★☆☎☏☐☑☒☕☖☗☚☛☜☝☞☟"\
+"☠☡☢☣☰☱☲☳☴☵☶☷♨♿⚆⚇⚈⚉⚊⚋⚌⚍⚎⚏⚞⚟⚡⚪⚫⚬⚽⚾⚿⛀⛁⛂⛃⛄⛅⛆"\
+"⛇⛈⛉⛊⛋☼☘☙♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥♦♧⚀⚁⚂⚃⚄⚅⚠⛌⛍⛏⛐⛑"\
+"⛒⛓⛔⛕⛖⛗⛘⛙⛚⛛⛜⛝⛞⛟⛠⛡☀☁☂☃☄☎☑☔☕☘☝☠☢☣☦☪☮☯☸☹☺♀♂♈"\
+"♉♊♋♌♍♎♏♐♑♒♓♟♠♣♥♦♨♻♾♿⚒⚓⚔⚕⚖⚗⚙⚛⚜⚠⚡⚧⚪⚫⚰⚱⚽⚾⛄⛅"\
+"⛈⛎⛏⛑⛓⛔⛩⛪⛰⛱⛲⛳⛴⛵⛷⛸⛹⛺⛽♭♮♯"
+;
+#endif
+
+// Dingbats
 #ifndef _LA_ICO_DINGBATS
-#define _LA_ICO_DINGBATS \
-"∘∙⊙⋄⋅⋆✀✁✂✃✄✅✆✇✈✉✊✋✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟✠✡" \
-"✢✣✤✥✦✧✨✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉" \
-"❊❋❌❍❎❏❐❑❒❓❔❕❖❗❘❙❚❛❜❝❞❟❠❡❢❣❤❥❦❧❨❩❪❫❬❭❮❯❰❱" \
-"❲❳❴❵❶❷❸❹❺❻❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓➔➕➖➗➘➙" \
-"➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➰➱➲➳➴➵➶➷➸➹➺➻➼➽➾➿🙐🙑" \
-"🙒🙓🙔🙕🙖🙗🙘🙙🙚🙛🙜🙝🙞🙟🙠🙡🙢🙣🙤🙥🙦🙧🙨🙩🙪🙫🙬🙭🙮🙯🙰🙱🙲🙳🙴🙵🙶🙷🙸🙹" \
-"🙺🙻🙼🙽🙾🙿"
-;
-#endif
-
-// tech
-#ifndef _LA_ICO_TECH
-#define _LA_ICO_TECH \
-"⌀⌁⌂⌃⌄⌅⌆⌇⌈⌉⌊⌋⌌⌍⌎⌏⌑⌒⌓⌔⌕⌖⌗⌘⌚⌛⌜⌝⌞⌟⌢⌣⌤⌥⌦⌧⌨〈〉⌫" \
-"⌬⌭⌮⌯⌰⌱⌲⌳⌴⌵⍻⍼⍽⍾⍿⎀⎁⎂⎃⎄⎅⎆⎇⎈⎉⎊⎋⎌⎍⎎⎏⎐⎑⎒⎓⎔⎖⎗⎘⎙" \
-"⎚⎯⎾⎿⏀⏁⏂⏃⏄⏅⏆⏇⏈⏉⏊⏋⏌⏍⏎⏏⏐⏑⏒⏓⏔⏕⏖⏗⏘⏙⏚⏛⏢⏣⏤⏥⏦⏧⏨⏩" \
-"⏪⏫⏬⏭⏮⏯⏰⏱⏲⏳⏴⏵⏶⏷⏸⏹⏺⏻⏼⏽⏾⏿"
-;
-#endif
-
-// geom
-#ifndef _LA_ICO_GEOM
-#define _LA_ICO_GEOM \
-"■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▲△▴▵▶▷▸▹►▻▼▽▾▿◀◁◂◃◄◅◆◇" \
-"◈◉◊○◌◍◎●◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯" \
-"◰◱◲◳◴◵◶◷◸◹◺◻◼◽◾◿🞀🞁🞂🞃🞄🞅🞆🞇🞈🞉🞊🞋🞌🞍🞎🞏🞐🞑🞒🞓🞔🞕🞖🞗" \
-"🞘🞙🞚🞛🞜🞝🞞🞟🞠🞡🞢🞣🞤🞥🞦🞧🞨🞩🞪🞫🞬🞭🞮🞯🞰🞱🞲🞳🞴🞵🞶🞷🞸🞹🞺🞻🞼🞽🞾🞿" \
-"🟀🟁🟂🟃🟄🟅🟆🟇🟈🟉🟊🟋🟌🟍🟎🟏🟐🟑🟒🟓🟔🟕🟖🟗🟘🟠🟡🟢🟣🟤🟥🟦🟧🟨🟩🟪🟫🟰"
-;
-#endif
-
-// misc
-#ifndef _LA_ICO_MISC
-#define _LA_ICO_MISC \
-"☀☁☂☃☄★☆☇☈☉☊☋☌☍☎☏☐☑☒☓☔☕☖☗☘☙☚☛☜☝☞☟☠☡☢☣☤☥☦☧" \
-"☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♀♁♂♃♄♅♆♇♈♉♊♋♌♍♎♏" \
-"♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷" \
-"♸♹♺♻♼♽♾♿⚀⚁⚂⚃⚄⚅⚆⚇⚈⚉⚊⚋⚌⚍⚎⚏⚐⚑⚒⚓⚔⚕⚖⚗⚘⚙⚚⚛⚜⚝⚞⚟" \
-"⚠⚡⚢⚣⚤⚥⚦⚧⚨⚩⚪⚫⚬⚭⚮⚯⚰⚱⚲⚳⚴⚵⚶⚷⚸⚹⚺⚻⚼⚽⚾⚿⛀⛁⛂⛃⛄⛅⛆⛇" \
-"⛈⛉⛊⛋⛌⛍⛎⛏⛐⛑⛒⛓⛔⛕⛖⛗⛘⛙⛚⛛⛜⛝⛞⛟⛠⛡⛢⛣⛤⛥⛦⛧⛨⛩⛪⛫⛬⛭⛮⛯" \
-"⛰⛱⛲⛳⛴⛵⛶⛷⛸⛹⛺⛻⛼⛽⛾⛿⬀⬁⬂⬃⬄⬅⬆⬇⬈⬉⬊⬋⬌⬍⬒⬓⬔⬕⬖⬗⬘⬙⬚⬛" \
-"⬜⬝⬞⬟⬠⬡⬢⬣⬤⬥⬦⬧⬨⬩⬪⬫⬬⬭⬮⬯⭍⭎⭏⭐⭑⭒⭓⭔⭕⭖⭗⭘⭙⭚⭛⭜⭝⭞⭟⭠" \
-"⭡⭢⭣⭤⭥⭦⭧⭨⭩⭪⭫⭬⭭⭮⭯⭰⭱⭲⭳⭶⭷⭸⭹⭺⭻⭼⭽⭾⭿⮀⮁⮂⮃⮄⮅⮆⮇⮈⮉⮊" \
-"⮋⮌⮍⮎⮏⮐⮑⮒⮓⮔⮕⮗⮘⮙⮚⮛⮜⮝⮞⮟⮠⮡⮢⮣⮤⮥⮦⮧⮨⮩⮪⮫⮬⮭⮮⮯⮰⮱⮲⮳" \
-"⮴⮵⮶⮷⮸⮹⮺⮻⮼⮽⮾⮿⯀⯁⯂⯃⯄⯅⯆⯇⯈⯉⯊⯋⯌⯍⯎⯏⯐⯑⯒⯓⯔⯕⯖⯗⯘⯙⯚⯛" \
-"⯜⯝⯞⯟⯠⯡⯢⯣⯤⯥⯦⯧⯨⯩⯪⯫⯬⯭⯮⯯⯰⯱⯲⯳⯴⯵⯶⯷⯸⯹⯺⯻⯼⯽⯿🌀🌁🌂🌃🌄" \
-"🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌝🌞🌟🌠🌡🌢🌣🌤🌥🌦🌧🌨🌩🌪🌫🌬" \
-"🌭🌮🌯🌰🌱🌲🌳🌴🌵🌶🌷🌸🌹🌺🌻🌼🌽🌾🌿🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍔" \
-"🍕🍖🍗🍘🍙🍚🍛🍜🍝🍞🍟🍠🍡🍢🍣🍤🍥🍦🍧🍨🍩🍪🍫🍬🍭🍮🍯🍰🍱🍲🍳🍴🍵🍶🍷🍸🍹🍺🍻🍼" \
-"🍽🍾🍿🎀🎁🎂🎃🎄🎅🎆🎇🎈🎉🎊🎋🎌🎍🎎🎏🎐🎑🎒🎓🎔🎕🎖🎗🎘🎙🎚🎛🎜🎝🎞🎟🎠🎡🎢🎣🎤" \
-"🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏋🏌" \
-"🏍🏎🏏🏐🏑🏒🏓🏔🏕🏖🏗🏘🏙🏚🏛🏜🏝🏞🏟🏠🏡🏢🏣🏤🏥🏦🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰🏱🏲🏳🏴" \
-"🏵🏶🏷🏸🏹🏺🏻🏼🏽🏾🏿🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜" \
-"🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾🐿👀👁👂👃👄" \
-"👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟👠👡👢👣👤👥👦👧👨👩👪👫👬" \
-"👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔" \
-"💕💖💗💘💙💚💛💜💝💞💟💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸💹💺💻💼" \
-"💽💾💿📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📑📒📓📔📕📖📗📘📙📚📛📜📝📞📟📠📡📢📣📤" \
-"📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📽📾📿🔀🔁🔂🔃🔄🔅🔆🔇🔈🔉🔊🔋🔌" \
-"🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🔙🔚🔛🔜🔝🔞🔟🔠🔡🔢🔣🔤🔥🔦🔧🔨🔩🔪🔫🔬🔭🔮🔯🔰🔱🔲🔳🔴" \
-"🔵🔶🔷🔸🔹🔺🔻🔼🔽🔾🔿🕀🕁🕂🕃🕄🕅🕆🕇🕈🕉🕊🕋🕌🕍🕎🕏🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕜" \
-"🕝🕞🕟🕠🕡🕢🕣🕤🕥🕦🕧🕨🕩🕪🕫🕬🕭🕮🕯🕰🕱🕲🕳🕴🕵🕶🕷🕸🕹🕺🕻🕼🕽🕾🕿🖀🖁🖂🖃🖄" \
-"🖅🖆🖇🖈🖉🖊🖋🖌🖍🖎🖏🖐🖑🖒🖓🖔🖕🖖🖗🖘🖙🖚🖛🖜🖝🖞🖟🖠🖡🖢🖣🖤🖥🖦🖧🖨🖩🖪🖫🖬" \
-"🖭🖮🖯🖰🖱🖲🖳🖴🖵🖶🖷🖸🖹🖺🖻🖼🖽🖾🖿🗀🗁🗂🗃🗄🗅🗆🗇🗈🗉🗊🗋🗌🗍🗎🗏🗐🗑🗒🗓🗔" \
-"🗕🗖🗗🗘🗙🗚🗛🗜🗝🗞🗟🗠🗡🗢🗣🗤🗥🗦🗧🗨🗩🗪🗫🗬🗭🗮🗯🗰🗱🗲🗳🗴🗵🗶🗷🗸🗹🗺🗻🗼" \
-"🗽🗾🗿"
-;
-#endif
-
-// math
-#ifndef _LA_ICO_MATH
-#define _LA_ICO_MATH \
-"⦁⦿⧫"
-;
-#endif
-
-// braille
-#ifndef _LA_ICO_BRAILLE
-#define _LA_ICO_BRAILLE \
-"⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧" \
-"⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏" \
-"⡐⡑⡒⡓⡔⡕⡖⡗⡘⡙⡚⡛⡜⡝⡞⡟⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷" \
-"⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘⢙⢚⢛⢜⢝⢞⢟" \
-"⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸⢹⢺⢻⢼⢽⢾⢿⣀⣁⣂⣃⣄⣅⣆⣇" \
-"⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘⣙⣚⣛⣜⣝⣞⣟⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯" \
-"⣰⣱⣲⣳⣴⣵⣶⣷⣸⣹⣺⣻⣼⣽⣾⣿"
-;
-#endif
-
-// egyptian
-#ifndef _LA_ICO_EGYPTIAN
-#define _LA_ICO_EGYPTIAN \
-"𓀀𓀁𓀂𓀃𓀄𓀅𓀆𓀇𓀈𓀉𓀊𓀋𓀌𓀍𓀎𓀏𓀐𓀑𓀒𓀓𓀔𓀕𓀖𓀗𓀘𓀙𓀚𓀛𓀜𓀝𓀞𓀟𓀠𓀡𓀢𓀣𓀤𓀥𓀦𓀧" \
-"𓀨𓀩𓀪𓀫𓀬𓀭𓀮𓀯𓀰𓀱𓀲𓀳𓀴𓀵𓀶𓀷𓀸𓀹𓀺𓀻𓀼𓀽𓀾𓀿𓁀𓁁𓁂𓁃𓁄𓁅𓁆𓁇𓁈𓁉𓁊𓁋𓁌𓁍𓁎𓁏" \
-"𓁐𓁑𓁒𓁓𓁔𓁕𓁖𓁗𓁘𓁙𓁚𓁛𓁜𓁝𓁞𓁟𓁠𓁡𓁢𓁣𓁤𓁥𓁦𓁧𓁨𓁩𓁪𓁫𓁬𓁭𓁮𓁯𓁰𓁱𓁲𓁳𓁴𓁵𓁶𓁷" \
-"𓁸𓁹𓁺𓁻𓁼𓁽𓁾𓁿𓂀𓂁𓂂𓂃𓂄𓂅𓂆𓂇𓂈𓂉𓂊𓂋𓂌𓂍𓂎𓂏𓂐𓂑𓂒𓂓𓂔𓂕𓂖𓂗𓂘𓂙𓂚𓂛𓂜𓂝𓂞𓂟" \
-"𓂠𓂡𓂢𓂣𓂤𓂥𓂦𓂧𓂨𓂩𓂪𓂫𓂬𓂭𓂮𓂯𓂰𓂱𓂲𓂳𓂴𓂵𓂶𓂷𓂸𓂹𓂺𓂻𓂼𓂽𓂾𓂿𓃀𓃁𓃂𓃃𓃄𓃅𓃆𓃇" \
-"𓃈𓃉𓃊𓃋𓃌𓃍𓃎𓃏𓃐𓃑𓃒𓃓𓃔𓃕𓃖𓃗𓃘𓃙𓃚𓃛𓃜𓃝𓃞𓃟𓃠𓃡𓃢𓃣𓃤𓃥𓃦𓃧𓃨𓃩𓃪𓃫𓃬𓃭𓃮𓃯" \
-"𓃰𓃱𓃲𓃳𓃴𓃵𓃶𓃷𓃸𓃹𓃺𓃻𓃼𓃽𓃾𓃿𓄀𓄁𓄂𓄃𓄄𓄅𓄆𓄇𓄈𓄉𓄊𓄋𓄌𓄍𓄎𓄏𓄐𓄑𓄒𓄓𓄔𓄕𓄖𓄗" \
-"𓄘𓄙𓄚𓄛𓄜𓄝𓄞𓄟𓄠𓄡𓄢𓄣𓄤𓄥𓄦𓄧𓄨𓄩𓄪𓄫𓄬𓄭𓄮𓄯𓄰𓄱𓄲𓄳𓄴𓄵𓄶𓄷𓄸𓄹𓄺𓄻𓄼𓄽𓄾𓄿" \
-"𓅀𓅁𓅂𓅃𓅄𓅅𓅆𓅇𓅈𓅉𓅊𓅋𓅌𓅍𓅎𓅏𓅐𓅑𓅒𓅓𓅔𓅕𓅖𓅗𓅘𓅙𓅚𓅛𓅜𓅝𓅞𓅟𓅠𓅡𓅢𓅣𓅤𓅥𓅦𓅧" \
-"𓅨𓅩𓅪𓅫𓅬𓅭𓅮𓅯𓅰𓅱𓅲𓅳𓅴𓅵𓅶𓅷𓅸𓅹𓅺𓅻𓅼𓅽𓅾𓅿𓆀𓆁𓆂𓆃𓆄𓆅𓆆𓆇𓆈𓆉𓆊𓆋𓆌𓆍𓆎𓆏" \
-"𓆐𓆑𓆒𓆓𓆔𓆕𓆖𓆗𓆘𓆙𓆚𓆛𓆜𓆝𓆞𓆟𓆠𓆡𓆢𓆣𓆤𓆥𓆦𓆧𓆨𓆩𓆪𓆫𓆬𓆭𓆮𓆯𓆰𓆱𓆲𓆳𓆴𓆵𓆶𓆷" \
-"𓆸𓆹𓆺𓆻𓆼𓆽𓆾𓆿𓇀𓇁𓇂𓇃𓇄𓇅𓇆𓇇𓇈𓇉𓇊𓇋𓇌𓇍𓇎𓇏𓇐𓇑𓇒𓇓𓇔𓇕𓇖𓇗𓇘𓇙𓇚𓇛𓇜𓇝𓇞𓇟" \
-"𓇠𓇡𓇢𓇣𓇤𓇥𓇦𓇧𓇨𓇩𓇪𓇫𓇬𓇭𓇮𓇯𓇰𓇱𓇲𓇳𓇴𓇵𓇶𓇷𓇸𓇹𓇺𓇻𓇼𓇽𓇾𓇿𓈀𓈁𓈂𓈃𓈄𓈅𓈆𓈇" \
-"𓈈𓈉𓈊𓈋𓈌𓈍𓈎𓈏𓈐𓈑𓈒𓈓𓈔𓈕𓈖𓈗𓈘𓈙𓈚𓈛𓈜𓈝𓈞𓈟𓈠𓈡𓈢𓈣𓈤𓈥𓈦𓈧𓈨𓈩𓈪𓈫𓈬𓈭𓈮𓈯" \
-"𓈰𓈱𓈲𓈳𓈴𓈵𓈶𓈷𓈸𓈹𓈺𓈻𓈼𓈽𓈾𓈿𓉀𓉁𓉂𓉃𓉄𓉅𓉆𓉇𓉈𓉉𓉊𓉋𓉌𓉍𓉎𓉏𓉐𓉑𓉒𓉓𓉔𓉕𓉖𓉗" \
-"𓉘𓉙𓉚𓉛𓉜𓉝𓉞𓉟𓉠𓉡𓉢𓉣𓉤𓉥𓉦𓉧𓉨𓉩𓉪𓉫𓉬𓉭𓉮𓉯𓉰𓉱𓉲𓉳𓉴𓉵𓉶𓉷𓉸𓉹𓉺𓉻𓉼𓉽𓉾𓉿" \
-"𓊀𓊁𓊂𓊃𓊄𓊅𓊆𓊇𓊈𓊉𓊊𓊋𓊌𓊍𓊎𓊏𓊐𓊑𓊒𓊓𓊔𓊕𓊖𓊗𓊘𓊙𓊚𓊛𓊜𓊝𓊞𓊟𓊠𓊡𓊢𓊣𓊤𓊥𓊦𓊧" \
-"𓊨𓊩𓊪𓊫𓊬𓊭𓊮𓊯𓊰𓊱𓊲𓊳𓊴𓊵𓊶𓊷𓊸𓊹𓊺𓊻𓊼𓊽𓊾𓊿𓋀𓋁𓋂𓋃𓋄𓋅𓋆𓋇𓋈𓋉𓋊𓋋𓋌𓋍𓋎𓋏" \
-"𓋐𓋑𓋒𓋓𓋔𓋕𓋖𓋗𓋘𓋙𓋚𓋛𓋜𓋝𓋞𓋟𓋠𓋡𓋢𓋣𓋤𓋥𓋦𓋧𓋨𓋩𓋪𓋫𓋬𓋭𓋮𓋯𓋰𓋱𓋲𓋳𓋴𓋵𓋶𓋷" \
-"𓋸𓋹𓋺𓋻𓋼𓋽𓋾𓋿𓌀𓌁𓌂𓌃𓌄𓌅𓌆𓌇𓌈𓌉𓌊𓌋𓌌𓌍𓌎𓌏𓌐𓌑𓌒𓌓𓌔𓌕𓌖𓌗𓌘𓌙𓌚𓌛𓌜𓌝𓌞𓌟" \
-"𓌠𓌡𓌢𓌣𓌤𓌥𓌦𓌧𓌨𓌩𓌪𓌫𓌬𓌭𓌮𓌯𓌰𓌱𓌲𓌳𓌴𓌵𓌶𓌷𓌸𓌹𓌺𓌻𓌼𓌽𓌾𓌿𓍀𓍁𓍂𓍃𓍄𓍅𓍆𓍇" \
-"𓍈𓍉𓍊𓍋𓍌𓍍𓍎𓍏𓍐𓍑𓍒𓍓𓍔𓍕𓍖𓍗𓍘𓍙𓍚𓍛𓍜𓍝𓍞𓍟𓍠𓍡𓍢𓍣𓍤𓍥𓍦𓍧𓍨𓍩𓍪𓍫𓍬𓍭𓍮𓍯" \
-"𓍰𓍱𓍲𓍳𓍴𓍵𓍶𓍷𓍸𓍹𓍺𓍻𓍼𓍽𓍾𓍿𓎀𓎁𓎂𓎃𓎄𓎅𓎆𓎇𓎈𓎉𓎊𓎋𓎌𓎍𓎎𓎏𓎐𓎑𓎒𓎓𓎔𓎕𓎖𓎗" \
-"𓎘𓎙𓎚𓎛𓎜𓎝𓎞𓎟𓎠𓎡𓎢𓎣𓎤𓎥𓎦𓎧𓎨𓎩𓎪𓎫𓎬𓎭𓎮𓎯𓎰𓎱𓎲𓎳𓎴𓎵𓎶𓎷𓎸𓎹𓎺𓎻𓎼𓎽𓎾𓎿" \
-"𓏀𓏁𓏂𓏃𓏄𓏅𓏆𓏇𓏈𓏉𓏊𓏋𓏌𓏍𓏎𓏏𓏐𓏑𓏒𓏓𓏔𓏕𓏖𓏗𓏘𓏙𓏚𓏛𓏜𓏝𓏞𓏟𓏠𓏡𓏢𓏣𓏤𓏥𓏦𓏧" \
-"𓏨𓏩𓏪𓏫𓏬𓏭𓏮𓏯𓏰𓏱𓏲𓏳𓏴𓏵𓏶𓏷𓏸𓏹𓏺𓏻𓏼𓏽𓏾𓏿𓐀𓐁𓐂𓐃𓐄𓐅𓐆𓐇𓐈𓐉𓐊𓐋𓐌𓐍𓐎𓐏" \
-"𓐐𓐑𓐒𓐓𓐔𓐕𓐖𓐗𓐘𓐙𓐚𓐛𓐜𓐝𓐞𓐟𓐠𓐡𓐢𓐣𓐤𓐥𓐦𓐧𓐨𓐩𓐪𓐫𓐬𓐭𓐮"
-;
-#endif
-
-// musical
-#ifndef _LA_ICO_MUSICAL
-#define _LA_ICO_MUSICAL \
-"𝀀𝀁𝀂𝀃𝀄𝀅𝀆𝀇𝀈𝀉𝀊𝀋𝀌𝀍𝀎𝀏𝀐𝀑𝀒𝀓𝀔𝀕𝀖𝀗𝀘𝀙𝀚𝀛𝀜𝀝𝀞𝀟𝀠𝀡𝀢𝀣𝀤𝀥𝀦𝀧" \
-"𝀨𝀩𝀪𝀫𝀬𝀭𝀮𝀯𝀰𝀱𝀲𝀳𝀴𝀵𝀶𝀷𝀸𝀹𝀺𝀻𝀼𝀽𝀾𝀿𝁀𝁁𝁂𝁃𝁄𝁅𝁆𝁇𝁈𝁉𝁊𝁋𝁌𝁍𝁎𝁏" \
-"𝁐𝁑𝁒𝁓𝁔𝁕𝁖𝁗𝁘𝁙𝁚𝁛𝁜𝁝𝁞𝁟𝁠𝁡𝁢𝁣𝁤𝁥𝁦𝁧𝁨𝁩𝁪𝁫𝁬𝁭𝁮𝁯𝁰𝁱𝁲𝁳𝁴𝁵𝁶𝁷" \
-"𝁸𝁹𝁺𝁻𝁼𝁽𝁾𝁿𝂀𝂁𝂂𝂃𝂄𝂅𝂆𝂇𝂈𝂉𝂊𝂋𝂌𝂍𝂎𝂏𝂐𝂑𝂒𝂓𝂔𝂕𝂖𝂗𝂘𝂙𝂚𝂛𝂜𝂝𝂞𝂟" \
-"𝂠𝂡𝂢𝂣𝂤𝂥𝂦𝂧𝂨𝂩𝂪𝂫𝂬𝂭𝂮𝂯𝂰𝂱𝂲𝂳𝂴𝂵𝂶𝂷𝂸𝂹𝂺𝂻𝂼𝂽𝂾𝂿𝃀𝃁𝃂𝃃𝃄𝃅𝃆𝃇" \
-"𝃈𝃉𝃊𝃋𝃌𝃍𝃎𝃏𝃐𝃑𝃒𝃓𝃔𝃕𝃖𝃗𝃘𝃙𝃚𝃛𝃜𝃝𝃞𝃟𝃠𝃡𝃢𝃣𝃤𝃥𝃦𝃧𝃨𝃩𝃪𝃫𝃬𝃭𝃮𝃯" \
-"𝃰𝃱𝃲𝃳𝃴𝃵𝄀𝄁𝄂𝄃𝄄𝄅𝄆𝄇𝄈𝄉𝄊𝄋𝄌𝄍𝄎𝄏𝄐𝄑𝄒𝄓𝄔𝄕𝄖𝄗𝄘𝄙𝄚𝄛𝄜𝄝𝄞𝄟𝄠𝄡" \
-"𝄢𝄣𝄤𝄥𝄦𝄩𝄪𝄫𝄬𝄭𝄮𝄯𝄰𝄱𝄲𝄳𝄴𝄵𝄶𝄷𝄸𝄹𝄺𝄻𝄼𝄽𝄾𝄿𝅀𝅁𝅂𝅃𝅄𝅅𝅆𝅇𝅈𝅉𝅊𝅋" \
-"𝅌𝅍𝅎𝅏𝅐𝅑𝅒𝅓𝅔𝅕𝅖𝅗𝅘𝅙𝅚𝅛𝅜𝅝𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅧𝅨𝅩𝅥𝅲𝅥𝅦𝅪𝅫𝅬𝅮𝅯𝅰𝅱𝅲𝅭𝅳" \
-"𝅴𝅵𝅶𝅷𝅸𝅹𝅺𝅻𝅼𝅽𝅾𝅿𝆀𝆁𝆂𝆃𝆄𝆊𝆋𝆅𝆆𝆇𝆈𝆉𝆌𝆍𝆎𝆏𝆐𝆑𝆒𝆓𝆔𝆕𝆖𝆗𝆘𝆙𝆚𝆛" \
-"𝆜𝆝𝆞𝆟𝆠𝆡𝆢𝆣𝆤𝆥𝆦𝆧𝆨𝆩𝆪𝆫𝆬𝆭𝆮𝆯𝆰𝆱𝆲𝆳𝆴𝆵𝆶𝆷𝆸𝆹𝆺𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯𝇁𝇂𝇃" \
-"𝇄𝇅𝇆𝇇𝇈𝇉𝇊𝇋𝇌𝇍𝇎𝇏𝇐𝇑𝇒𝇓𝇔𝇕𝇖𝇗𝇘𝇙𝇚𝇛𝇜𝇝𝇞𝇟𝇠𝇡𝇢𝇣𝇤𝇥𝇦𝇧𝇨𝈀𝈁𝈂" \
-"𝈃𝈄𝈅𝈆𝈇𝈈𝈉𝈊𝈋𝈌𝈍𝈎𝈏𝈐𝈑𝈒𝈓𝈔𝈕𝈖𝈗𝈘𝈙𝈚𝈛𝈜𝈝𝈞𝈟𝈠𝈡𝈢𝈣𝈤𝈥𝈦𝈧𝈨𝈩𝈪" \
-"𝈫𝈬𝈭𝈮𝈯𝈰𝈱𝈲𝈳𝈴𝈵𝈶𝈷𝈸𝈹𝈺𝈻𝈼𝈽𝈾𝈿𝉀𝉁𝉂𝉃𝉄𝉅"
-;
-#endif
-
-// mayan_num
-#ifndef _LA_ICO_MAYAN_NUM
-#define _LA_ICO_MAYAN_NUM \
+#define _LA_ICO_DINGBATS\
+"✝❽➑➇❺➎➄❹➍➃✠❾➒➈❶➊➀❿➓➉✟❼➐➆✞❻➏➅✡❸➌➂❷➋➁❰❮❱❯❲"\
+"❳❪❫❴❬❨❩❵❭➔➘➙➚➛➜➝➞➟➠➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➶➵➴➹"\
+"➸➷➺➻➼➽➾➡❖✙✚✛✜✁✃✄✆✇✈✉✌✍✎✏✐✑✒✓✔✕✖✗✘✢✣✤✥✦✧✩"\
+"✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❍❏❐❑❒❓"\
+"❗❘❙❚❛❜❝❞❟❠❡❢❣❤❥❦❧✀✂✋✂✅✈✉✊✋✌✍✏✒✔✖✝✡✨✳✴❄❇❌"\
+"❎❓❔❕❗❣❤➕➖➗➡➰➿"
+;
+#endif
+
+// Miscellaneous Mathematical Symbols-A
+#ifndef _LA_ICO_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
+#define _LA_ICO_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A\
+"⟑⟒⟍⟗⟙⟘⟚⟛⟜⟕⟨⟪⟮⟅⟦⟬⟌⟞⟝⟓⟠⟃⟄⟇⟂⟈⟖⟩⟫⟯⟆⟧⟭⟋⟎⟏⟉⟀⟟⟔"\
+"⟊⟡⟢⟣⟐⟤⟥⟁"
+;
+#endif
+
+// Supplemental Arrows-A
+#ifndef _LA_ICO_SUPPLEMENTAL_ARROWS_A
+#define _LA_ICO_SUPPLEMENTAL_ARROWS_A\
+"⟲⟳⟱⟵⟸⟽⟻⟷⟺⟴⟹⟾⟼⟿⟶⟰"
+;
+#endif
+
+// Braille Patterns
+#ifndef _LA_ICO_BRAILLE_PATTERNS
+#define _LA_ICO_BRAILLE_PATTERNS\
+"⠀⠁⠃⠇⠏⠟⠿⡿⣿⢿⡟⣟⢟⠯⡯⣯⢯⡏⣏⢏⠗⠷⡷⣷⢷⡗⣗⢗⠧⡧⣧⢧⡇⣇⢇⠋⠛⠻⡻⣻"\
+"⢻⡛⣛⢛⠫⡫⣫⢫⡋⣋⢋⠓⠳⡳⣳⢳⡓⣓⢓⠣⡣⣣⢣⡃⣃⢃⠅⠍⠝⠽⡽⣽⢽⡝⣝⢝⠭⡭⣭⢭"\
+"⡍⣍⢍⠕⠵⡵⣵⢵⡕⣕⢕⠥⡥⣥⢥⡅⣅⢅⠉⠙⠹⡹⣹⢹⡙⣙⢙⠩⡩⣩⢩⡉⣉⢉⠑⠱⡱⣱⢱⡑"\
+"⣑⢑⠡⡡⣡⢡⡁⣁⢁⠂⠆⠎⠞⠾⡾⣾⢾⡞⣞⢞⠮⡮⣮⢮⡎⣎⢎⠖⠶⡶⣶⢶⡖⣖⢖⠦⡦⣦⢦⡆"\
+"⣆⢆⠊⠚⠺⡺⣺⢺⡚⣚⢚⠪⡪⣪⢪⡊⣊⢊⠒⠲⡲⣲⢲⡒⣒⢒⠢⡢⣢⢢⡂⣂⢂⠄⠌⠜⠼⡼⣼⢼"\
+"⡜⣜⢜⠬⡬⣬⢬⡌⣌⢌⠔⠴⡴⣴⢴⡔⣔⢔⠤⡤⣤⢤⡄⣄⢄⠈⠘⠸⡸⣸⢸⡘⣘⢘⠨⡨⣨⢨⡈⣈"\
+"⢈⠐⠰⡰⣰⢰⡐⣐⢐⠠⡠⣠⢠⡀⣀⢀"
+;
+#endif
+
+// Supplemental Arrows-B
+#ifndef _LA_ICO_SUPPLEMENTAL_ARROWS_B
+#define _LA_ICO_SUPPLEMENTAL_ARROWS_B\
+"⤢⤡⤴⤵⥀⤻⥁⤓⤈⥿⥥⥯⥡⥙⥝⥕⤶⤷⤋⥱⤯⤬⥸⥃⥳⤟⤙⥷⥺⤝⥆⥐⥋⥊⥎⤆⤛⤂⤌⥼"\
+"⥧⥫⥞⥖⥢⥪⥦⥚⥒⤄⤹⤎⥈⥶⤿⤾⤢⤨⤱⤮⤤⤡⤧⤲⤣⥵⥂⥴⤠⤚⥇⤞⤑⥅⤕⤔⤇⤜⥰⤃"\
+"⤍⥽⥩⥭⥟⥗⥨⥬⥤⥛⥓⤸⤵⤴⤏⤅⤁⤖⤘⤗⤀⤐⤫⤰⥄⤩⤭⤥⤪⤦⥹⥻⥲⤺⤽⤼⤒⤉⥑⥍"\
+"⥌⥏⥾⥮⥣⥠⥘⥜⥔⤊⥉⤳"
+;
+#endif
+
+// Miscellaneous Mathematical Symbols-B
+#ifndef _LA_ICO_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
+#define _LA_ICO_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B\
+"⧫⦁⦿⦟⦞⦤⦼⦶⧹⧸⧓⧭⧪⧗⧫⧑⧒⦿⦺⧂⧃⦵⦻⦙⧟⧺⦕⦖⧨⧩⦴⦱⦳⦲⧣⧤⧳⧱⧯⧲"\
+"⧰⧮⧦⧁⧥⧜⧡⧞⧏⦑⦓⦗⧚⧼⦏⦍⦋⦃⧘⧀⦛⦫⦪⦯⦭⦮⦬⦩⦨⦝⧿⦧⦦⦷⦹⦸⧵⧷⦣⦥"\
+"⦰⦜⧎⦒⦔⦘⧛⧽⦎⦐⦌⦄⧙⧴⧌⧢⧶⦠⦡⧠⧆⧅⧄⧈⧇⧧⧝⧔⧕⧾⧊⧍⧋⧻⦀⦢⧉⦽⧐⦚"\
+"⦾⧬⧖⦅⦆⦁⦂⦉⦇⦊⦈"
+;
+#endif
+
+// Supplemental Mathematical Operators
+#ifndef _LA_ICO_SUPPLEMENTAL_MATHEMATICAL_OPERATORS
+#define _LA_ICO_SUPPLEMENTAL_MATHEMATICAL_OPERATORS\
+"⩯⨿⨑⩰⨐⩍⫏⫑⫐⫒⩌⩐⩭⨸⫮⩴⫪⪚⪙⪜⪛⫺⫹⩓⩔⪢⪡⪣⪻⫽⩎⩏⫬⪼⫫⫥⫣⫱⫙⩱"\
+"⩳⪮⩦⩷⩮⩸⪪⪬⨍⫝̸⪌⪒⪐⪎⪔⪊⪈⪥⪧⪩⪆⩾⪂⪄⪀⪤⩺⩼⩧⨕⨏⨎⨙⨗⨛⨘⨜⨚⨼⩉"\
+"⩇⩋⩀⩄⩃⨝⨞⫼⪫⪭⪋⪑⪏⪍⪓⪉⪇⪦⪨⪅⩽⪁⪃⩿⩹⩻⨔⨒⨓⩑⩞⩠⩜⩚⩟⩙⩒⩢⩣⩝"\
+"⩛⫦⨺⨩⨪⨫⨬⨊⨷⨴⨵⨻⨶⨰⨱⨀⨁⨂⨅⨆⨉⨃⨄⫿⫝⫲⫳⫡⫚⩲⨭⨮⨹⨨⨣⨥⨧⨤⨦⨢"\
+"⪷⪳⪹⪵⪯⪱⨌⨖⫭⨽⨲⫟⫧⫞⫠⫩⫨⪠⪟⩬⪞⪝⪖⪘⪕⪗⩘⩗⨳⫍⫎⫕⫓⫉⫅⫋⫇⫃⪽⫁"\
+"⪿⪸⪴⪺⪶⪰⪲⨋⫔⫖⫘⫗⫊⫆⫌⫈⫄⪾⫂⫀⩶⩪⩫⫛⫶⩨⩩⫸⫷⫻⫴⫵⩵⩕⩖⨇⨈⩈⩆⩊"\
+"⩅⩁⩂⨯⩡⫤⫢⫯⫰⫾⩤⩥⨾⨟⨠⨡"
+;
+#endif
+
+// Miscellaneous Symbols and Arrows
+#ifndef _LA_ICO_MISCELLANEOUS_SYMBOLS_AND_ARROWS
+#define _LA_ICO_MISCELLANEOUS_SYMBOLS_AND_ARROWS\
+"⬀⬂⬃⬁⬄⬆⬈⮕⬊⬇⬋⬅⬉⬌⬍⬖⬗⬘⬙⬚⮍⮎⭯⮌⮏⭛⭝⮽⭞⮨⮩⮮⮬⮯⮭⮪⮫⯁⮟⬢"\
+"⬬⬤⬛⮜⬥⯆⯇⬧⯈⯅⯄⬟⮞⭓⬩⬪⭑⯀⮝⬮⬝⯋⮿⮾⭮⮃⭣⭽⭳⮠⮡⭭⭍⮇⮔⭘⭗⭙⭕⭖"\
+"⬣⯃⭤⭠⭺⭰⮦⮤⭪⮀⮄⯌⬒⬔⮒⮓⭧⭷⭦⭶⮐⮑⮰⮱⮶⮴⮷⮵⮲⮳⭢⭼⭲⮧⮥⭬⮂⮆⯍⯏"\
+"⭏⭟⭎⭚⭜⭨⭸⭩⭹⯐⭾⭿⮛⮙⮘⮚⯊⬓⬕⯂⯑⮹⭥⭡⭻⭱⮢⮣⭫⮸⮁⮅⯎⬡⬭⬜⬦⬨⭐⬠"\
+"⭔⬫⭒⬯⬞⮋⮈⮊⮉⮗⮺⮻⮼⯉⯒⯓⯔⯕⯖⯗⯘⯙⯚⯛⯜⯝⯞⯟⯠⯡⯢⯣⯤⯥⯦⯧⯨⯩⯪⯫"\
+"⯬⯭⯮⯯⯰⯱⯲⯳⯴⯵⯶⯷⯸⯹⯺⯻⯼⯽⯿⬅⬆⬇⬛⬜⭐⭕⬿⭀⭊⭂⭋⬾⬐⬑⬲⬸⬺⬹⭅⬶"\
+"⬵⬻⬽⬼⬴⬷⬰⬳⯾⭁⭇⭈⭌⭃⭄⭆⬎⬏⬱⭉"
+;
+#endif
+
+// CJK Symbols and Punctuation
+#ifndef _LA_ICO_CJK_SYMBOLS_AND_PUNCTUATION
+#define _LA_ICO_CJK_SYMBOLS_AND_PUNCTUATION\
+"〰〽"
+;
+#endif
+
+// Enclosed CJK Letters and Months
+#ifndef _LA_ICO_ENCLOSED_CJK_LETTERS_AND_MONTHS
+#define _LA_ICO_ENCLOSED_CJK_LETTERS_AND_MONTHS\
+"㊗㊙"
+;
+#endif
+
+// Yijing Hexagram Symbols
+#ifndef _LA_ICO_YIJING_HEXAGRAM_SYMBOLS
+#define _LA_ICO_YIJING_HEXAGRAM_SYMBOLS\
+"䷀䷁䷂䷃䷄䷅䷆䷇䷈䷉䷊䷋䷌䷍䷎䷏䷐䷑䷒䷓䷔䷕䷖䷗䷘䷙䷚䷛䷜䷝䷞䷟䷠䷡䷢䷣䷤䷥䷦䷧"\
+"䷨䷩䷪䷫䷬䷭䷮䷯䷰䷱䷲䷳䷴䷵䷶䷷䷸䷹䷺䷻䷼䷽䷾䷿"
+;
+#endif
+
+// Variation Selectors
+#ifndef _LA_ICO_VARIATION_SELECTORS
+#define _LA_ICO_VARIATION_SELECTORS\
+"︎️"
+;
+#endif
+
+// Halfwidth and Fullwidth Forms
+#ifndef _LA_ICO_HALFWIDTH_AND_FULLWIDTH_FORMS
+#define _LA_ICO_HALFWIDTH_AND_FULLWIDTH_FORMS\
+"{}"
+;
+#endif
+
+// Specials
+#ifndef _LA_ICO_SPECIALS
+#define _LA_ICO_SPECIALS\
+""
+;
+#endif
+
+// Ancient Greek Numbers
+#ifndef _LA_ICO_ANCIENT_GREEK_NUMBERS
+#define _LA_ICO_ANCIENT_GREEK_NUMBERS\
+"𐅵𐅶𐅷𐅸𐆊𐆋𐅀𐅁𐅂𐅃𐅄𐅅𐅆𐅇𐅈𐅉𐅊𐅋𐅌𐅍𐅎𐅏𐅐𐅑𐅒𐅓𐅔𐅕𐅖𐅗𐅘𐅙𐅚𐅛𐅜𐅝𐅞𐅟𐅠𐅡"\
+"𐅢𐅣𐅤𐅥𐅦𐅧𐅨𐅩𐅪𐅫𐅬𐅭𐅮𐅯𐅰𐅱𐅲𐅳𐅴𐅹𐅺𐅻𐅼𐅽𐅾𐅿𐆀𐆁𐆂𐆃𐆄𐆅𐆆𐆇𐆈𐆉𐆌𐆍𐆎"
+;
+#endif
+
+// Ancient Symbols
+#ifndef _LA_ICO_ANCIENT_SYMBOLS
+#define _LA_ICO_ANCIENT_SYMBOLS\
+"𐆠𐆐𐆑𐆒𐆓𐆔𐆕𐆖𐆗𐆘𐆙𐆚𐆛𐆜"
+;
+#endif
+
+// Phaistos Disc
+#ifndef _LA_ICO_PHAISTOS_DISC
+#define _LA_ICO_PHAISTOS_DISC\
+"𐇐𐇑𐇒𐇓𐇔𐇕𐇖𐇗𐇘𐇙𐇚𐇛𐇜𐇝𐇞𐇟𐇠𐇡𐇢𐇣𐇤𐇥𐇦𐇧𐇨𐇩𐇪𐇫𐇬𐇭𐇮𐇯𐇰𐇱𐇲𐇳𐇴𐇵𐇶𐇷"\
+"𐇸𐇹𐇺𐇻𐇼𐇽"
+;
+#endif
+
+// Coptic Epact Numbers
+#ifndef _LA_ICO_COPTIC_EPACT_NUMBERS
+#define _LA_ICO_COPTIC_EPACT_NUMBERS\
+"𐋡𐋢𐋣𐋤𐋥𐋦𐋧𐋨𐋩𐋪𐋫𐋬𐋭𐋮𐋯𐋰𐋱𐋲𐋳𐋴𐋵𐋶𐋷𐋸𐋹𐋺𐋻𐋠"
+;
+#endif
+
+// Rumi Numeral Symbols
+#ifndef _LA_ICO_RUMI_NUMERAL_SYMBOLS
+#define _LA_ICO_RUMI_NUMERAL_SYMBOLS\
+"𐹠𐹡𐹢𐹣𐹤𐹥𐹦𐹧𐹨𐹩𐹪𐹫𐹬𐹭𐹮𐹯𐹰𐹱𐹲𐹳𐹴𐹵𐹶𐹷𐹸𐹹𐹺𐹻𐹼𐹽𐹾"
+;
+#endif
+
+// Mayan Numerals
+#ifndef _LA_ICO_MAYAN_NUMERALS
+#define _LA_ICO_MAYAN_NUMERALS\
 "𝋠𝋡𝋢𝋣𝋤𝋥𝋦𝋧𝋨𝋩𝋪𝋫𝋬𝋭𝋮𝋯𝋰𝋱𝋲𝋳"
 ;
 #endif
 
-// taixuan
-#ifndef _LA_ICO_TAIXUAN
-#define _LA_ICO_TAIXUAN \
-"𝌀𝌁𝌂𝌃𝌄𝌅𝌆𝌇𝌈𝌉𝌊𝌋𝌌𝌍𝌎𝌏𝌐𝌑𝌒𝌓𝌔𝌕𝌖𝌗𝌘𝌙𝌚𝌛𝌜𝌝𝌞𝌟𝌠𝌡𝌢𝌣𝌤𝌥𝌦𝌧" \
-"𝌨𝌩𝌪𝌫𝌬𝌭𝌮𝌯𝌰𝌱𝌲𝌳𝌴𝌵𝌶𝌷𝌸𝌹𝌺𝌻𝌼𝌽𝌾𝌿𝍀𝍁𝍂𝍃𝍄𝍅𝍆𝍇𝍈𝍉𝍊𝍋𝍌𝍍𝍎𝍏" \
+// Tai Xuan Jing Symbols
+#ifndef _LA_ICO_TAI_XUAN_JING_SYMBOLS
+#define _LA_ICO_TAI_XUAN_JING_SYMBOLS\
+"𝌀𝌁𝌂𝌃𝌄𝌅𝌆𝌇𝌈𝌉𝌊𝌋𝌌𝌍𝌎𝌏𝌐𝌑𝌒𝌓𝌔𝌕𝌖𝌗𝌘𝌙𝌚𝌛𝌜𝌝𝌞𝌟𝌠𝌡𝌢𝌣𝌤𝌥𝌦𝌧"\
+"𝌨𝌩𝌪𝌫𝌬𝌭𝌮𝌯𝌰𝌱𝌲𝌳𝌴𝌵𝌶𝌷𝌸𝌹𝌺𝌻𝌼𝌽𝌾𝌿𝍀𝍁𝍂𝍃𝍄𝍅𝍆𝍇𝍈𝍉𝍊𝍋𝍌𝍍𝍎𝍏"\
 "𝍐𝍑𝍒𝍓𝍔𝍕𝍖"
 ;
 #endif
 
-// rod
-#ifndef _LA_ICO_ROD
-#define _LA_ICO_ROD \
+// Counting Rod Numerals
+#ifndef _LA_ICO_COUNTING_ROD_NUMERALS
+#define _LA_ICO_COUNTING_ROD_NUMERALS\
 "𝍠𝍡𝍢𝍣𝍤𝍥𝍦𝍧𝍨𝍩𝍪𝍫𝍬𝍭𝍮𝍯𝍰𝍱𝍲𝍳𝍴𝍵𝍶𝍷𝍸"
 ;
 #endif
 
-// enclosed
-#ifndef _LA_ICO_ENCLOSED
-#define _LA_ICO_ENCLOSED \
-"🄀🄁🄂🄃🄄🄅🄆🄇🄈🄉🄊🄋🄌🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡🄢🄣🄤🄥🄦🄧🄨🄩🄪" \
-"🄫🄬🄭🄮🄯🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉🅊🅋🅌🅍🅎🅏🅐🅑🅒" \
-"🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩🅪🅫🅬🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽" \
-"🅾🅿🆀🆁🆂🆃🆄🆅🆆🆇🆈🆉🆊🆋🆌🆍🆎🆏🆐🆑🆒🆓🆔🆕🆖🆗🆘🆙🆚🆛🆜🆝🆞🆟🆠🆡🆢🆣🆤🆥" \
-"🆦🆧🆨🆩🆪🆫🆬🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿🈁🈂🈚🈯🈲🈳🈴" \
-"🈵🈶🈷🈸🈹🈺🉐🉑"
+// Mathematical Alphanumeric Symbols
+#ifndef _LA_ICO_MATHEMATICAL_ALPHANUMERIC_SYMBOLS
+#define _LA_ICO_MATHEMATICAL_ALPHANUMERIC_SYMBOLS\
+"𝔄𝐀𝑨𝓐𝔸𝐴𝒜𝔅𝕭𝐁𝑩𝓑𝔹𝐵𝐂𝑪𝓒𝐶𝒞𝔇𝐃𝑫𝓓𝔻𝐷𝒟𝔈𝐄𝑬𝓔𝔼𝐸𝔉𝐅𝑭𝓕𝔽𝐹𝔊𝐆"\
+"𝑮𝓖𝔾𝐺𝒢𝐇𝑯𝓗𝐻𝐈𝑰𝓘𝕀𝐼𝔍𝐉𝑱𝓙𝕁𝐽𝒥𝔎𝐊𝑲𝓚𝕂𝐾𝒦𝔏𝐋𝑳𝓛𝕃𝐿𝔐𝐌𝑴𝓜𝕄𝑀"\
+"𝔑𝕹𝐍𝑵𝓝𝑁𝒩𝔒𝐎𝑶𝓞𝕆𝑂𝒪𝔓𝐏𝑷𝓟𝑃𝒫𝔔𝐐𝑸𝓠𝑄𝒬𝕽𝐑𝑹𝓡𝑅𝔖𝐒𝑺𝓢𝕊𝑆𝒮𝔗𝐓"\
+"𝑻𝓣𝕋𝑇𝒯𝔘𝐔𝑼𝓤𝕌𝑈𝒰𝔙𝐕𝑽𝓥𝕍𝑉𝒱𝔚𝐖𝑾𝓦𝕎𝑊𝒲𝔛𝐗𝑿𝓧𝕏𝑋𝒳𝔜𝐘𝒀𝓨𝕐𝑌𝒴"\
+"𝖅𝐙𝒁𝓩𝑍𝒵𝔞𝐚𝒂𝓪𝕒𝑎𝒶𝔟𝐛𝒃𝓫𝕓𝑏𝒷𝔠𝐜𝒄𝓬𝕔𝑐𝒸𝔡𝐝𝒅𝓭𝕕𝑑𝒹𝔢𝐞𝒆𝓮𝕖𝑒"\
+"𝔣𝐟𝒇𝓯𝕗𝑓𝒻𝔤𝐠𝒈𝓰𝕘𝑔𝔥𝐡𝒉𝓱𝕙𝒽𝔦𝐢𝒊𝓲𝕚𝑖𝒾𝔧𝐣𝒋𝓳𝕛𝑗𝒿𝔨𝐤𝒌𝓴𝕜𝑘𝓀"\
+"𝔩𝐥𝒍𝓵𝕝𝑙𝓁𝔪𝐦𝒎𝓶𝕞𝑚𝓂𝔫𝐧𝒏𝓷𝕟𝑛𝓃𝔬𝐨𝒐𝓸𝕠𝑜𝔭𝐩𝒑𝓹𝕡𝑝𝓅𝔮𝐪𝒒𝓺𝕢𝑞"\
+"𝓆𝔯𝐫𝒓𝓻𝕣𝑟𝓇𝔰𝐬𝒔𝓼𝕤𝑠𝓈𝔱𝐭𝒕𝓽𝕥𝑡𝓉𝔲𝕬𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕺𝕻𝕼𝕾𝕿"\
+"𝖀𝖁𝖂𝖃𝖄𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨"\
+"𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐"\
+"𝗑𝗒𝗓𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸"\
+"𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠"\
+"𝘡𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈"\
+"𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯𝙰"\
+"𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘"\
+"𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣𝚤𝚥𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹𝚺𝚻𝚼𝚽𝚾𝚿𝛀𝛁𝛂"\
+"𝛃𝛄𝛅𝛆𝛇𝛈𝛉𝛊𝛋𝛌𝛍𝛎𝛏𝛐𝛑𝛒𝛓𝛔𝛕𝛖𝛗𝛘𝛙𝛚𝛛𝛜𝛝𝛞𝛟𝛠𝛡𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪"\
+"𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹𝛺𝛻𝛼𝛽𝛾𝛿𝜀𝜁𝜂𝜃𝜄𝜅𝜆𝜇𝜈𝜉𝜊𝜋𝜌𝜍𝜎𝜏𝜐𝜑𝜒"\
+"𝜓𝜔𝜕𝜖𝜗𝜘𝜙𝜚𝜛𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴𝜵𝜶𝜷𝜸𝜹𝜺"\
+"𝜻𝜼𝜽𝜾𝜿𝝀𝝁𝝂𝝃𝝄𝝅𝝆𝝇𝝈𝝉𝝊𝝋𝝌𝝍𝝎𝝏𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢"\
+"𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮𝝯𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺𝝻𝝼𝝽𝝾𝝿𝞀𝞁𝞂𝞃𝞄𝞅𝞆𝞇𝞈𝞉𝞊"\
+"𝞋𝞌𝞍𝞎𝞏𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨𝞩𝞪𝞫𝞬𝞭𝞮𝞯𝞰𝞱𝞲"\
+"𝞳𝞴𝞵𝞶𝞷𝞸𝞹𝞺𝞻𝞼𝞽𝞾𝞿𝟀𝟁𝟂𝟃𝟄𝟅𝟆𝟇𝟈𝟉𝟊𝟋𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗𝟘𝟙𝟚𝟛𝟜"\
+"𝟝𝟞𝟟𝟠𝟡𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿𝐮𝒖𝓾𝕦𝑢"\
+"𝓊𝔳𝐯𝒗𝓿𝕧𝑣𝓋𝔴𝐰𝒘𝔀𝕨𝑤𝓌𝔵𝐱𝒙𝔁𝕩𝑥𝓍𝔶𝐲𝒚𝔂𝕪𝑦𝓎𝔷𝐳𝒛𝔃𝕫𝑧𝓏"
 ;
 #endif
 
-// emo
-#ifndef _LA_ICO_EMO
-#define _LA_ICO_EMO \
-"😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧" \
-"😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏"
+// Arabic Mathematical Alphabetic Symbols
+#ifndef _LA_ICO_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS
+#define _LA_ICO_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS\
+"𞻱𞻰𞸏𞸀𞸁𞸜𞸙𞸃𞺯𞺡𞺹𞺣𞺰𞺻𞺧𞺢𞺷𞺫𞺬𞺭𞺲𞺳𞺱𞺮𞺴𞺨𞺵𞺸𞺶𞺥𞺩𞺺𞺦𞸐𞸞𞸛𞸇𞸯𞸡𞸹"\
+"𞸰𞸻𞸧𞸤𞸢𞸪𞸷𞸫𞸬𞸭𞸲𞸱𞸮𞸴𞸵𞸶𞸩𞸂𞸊𞸗𞸋𞺏𞺀𞺁𞺙𞺃𞺐𞺛𞺇𞺄𞺂𞺗𞺋𞺌𞺍𞺒𞺓𞺑𞺎𞺔"\
+"𞺈𞺕𞺘𞺖𞺅𞺉𞺚𞺆𞸌𞸍𞸝𞸒𞸟𞸓𞸑𞸎𞸔𞹯𞹡𞹹𞹼𞹾𞹰𞹻𞹧𞹤𞹢𞹪𞹷𞹬𞹭𞹲𞹱𞹮𞹴𞹨𞹵𞹶𞹩𞹺"\
+"𞸈𞹏𞹙𞹝𞹟𞹛𞹇𞹂𞹗𞹋𞹍𞹒𞹑𞹎𞹔𞹉𞸕𞸘𞸖𞸅𞸉𞸚𞸆"
+;
+#endif
+
+// Mahjong Tiles
+#ifndef _LA_ICO_MAHJONG_TILES
+#define _LA_ICO_MAHJONG_TILES\
+"🀀🀁🀂🀃🀄🀅🀆🀇🀈🀉🀊🀋🀌🀍🀎🀏🀐🀑🀒🀓🀔🀕🀖🀗🀘🀙🀚🀛🀜🀝🀞🀟🀠🀡🀢🀣🀤🀥🀦🀧"\
+"🀨🀩🀪🀫🀄"
+;
 #endif
 
-// transport
-#ifndef _LA_ICO_TRANSPORT
-#define _LA_ICO_TRANSPORT \
-"🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟🚠🚡🚢🚣🚤🚥🚦🚧" \
-"🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸🚹🚺🚻🚼🚽🚾🚿🛀🛁🛂🛃🛄🛅🛆🛇🛈🛉🛊🛋🛌🛍🛎🛏" \
-"🛐🛑🛒🛓🛔🛕🛖🛗🛝🛞🛟🛠🛡🛢🛣🛤🛥🛦🛧🛨🛩🛪🛫🛬🛰🛱🛲🛳🛴🛵🛶🛷🛸🛹🛺🛻🛼"
+// Domino Tiles
+#ifndef _LA_ICO_DOMINO_TILES
+#define _LA_ICO_DOMINO_TILES\
+"🀰🀱🀲🀳🀴🀵🀶🀷🀸🀹🀺🀻🀼🀽🀾🀿🁀🁁🁂🁃🁄🁅🁆🁇🁈🁉🁊🁋🁌🁍🁎🁏🁐🁑🁒🁓🁔🁕🁖🁗"\
+"🁘🁙🁚🁛🁜🁝🁞🁟🁠🁡🁢🁣🁤🁥🁦🁧🁨🁩🁪🁫🁬🁭🁮🁯🁰🁱🁲🁳🁴🁵🁶🁷🁸🁹🁺🁻🁼🁽🁾🁿"\
+"🂀🂁🂂🂃🂄🂅🂆🂇🂈🂉🂊🂋🂌🂍🂎🂏🂐🂑🂒🂓"
 ;
 #endif
 
-// alchemical
-#ifndef _LA_ICO_ALCHEMICAL
-#define _LA_ICO_ALCHEMICAL \
-"🜀🜁🜂🜃🜄🜅🜆🜇🜈🜉🜊🜋🜌🜍🜎🜏🜐🜑🜒🜓🜔🜕🜖🜗🜘🜙🜚🜛🜜🜝🜞🜟🜠🜡🜢🜣🜤🜥🜦🜧" \
-"🜨🜩🜪🜫🜬🜭🜮🜯🜰🜱🜲🜳🜴🜵🜶🜷🜸🜹🜺🜻🜼🜽🜾🜿🝀🝁🝂🝃🝄🝅🝆🝇🝈🝉🝊🝋🝌🝍🝎🝏" \
-"🝐🝑🝒🝓🝔🝕🝖🝗🝘🝙🝚🝛🝜🝝🝞🝟🝠🝡🝢🝣🝤🝥🝦🝧🝨🝩🝪🝫🝬🝭🝮🝯🝰🝱🝲🝳"
+// Playing Cards
+#ifndef _LA_ICO_PLAYING_CARDS
+#define _LA_ICO_PLAYING_CARDS\
+"🂠🂡🂢🂣🂤🂥🂦🂧🂨🂩🂪🂫🂬🂭🂮🂱🂲🂳🂴🂵🂶🂷🂸🂹🂺🂻🂼🂽🂾🂿🃁🃂🃃🃄🃅🃆🃇🃈🃉🃊"\
+"🃋🃌🃍🃎🃏🃑🃒🃓🃔🃕🃖🃗🃘🃙🃚🃛🃜🃝🃞🃟🃠🃡🃢🃣🃤🃥🃦🃧🃨🃩🃪🃫🃬🃭🃮🃯🃰🃱🃲🃳"\
+"🃴🃵🃏"
 ;
 #endif
 
-// pic
-#ifndef _LA_ICO_PIC
-#define _LA_ICO_PIC \
-"🤌🤍🤎🤏🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞🤟🤠🤡🤢🤣🤤🤥🤦🤧🤨🤩🤪🤫🤬🤭🤮🤯🤰🤱🤲🤳" \
-"🤴🤵🤶🤷🤸🤹🤺🤻🤼🤽🤾🤿🥀🥁🥂🥃🥄🥅🥆🥇🥈🥉🥊🥋🥌🥍🥎🥏🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛" \
-"🥜🥝🥞🥟🥠🥡🥢🥣🥤🥥🥦🥧🥨🥩🥪🥫🥬🥭🥮🥯🥰🥱🥲🥳🥴🥵🥶🥷🥸🥹🥺🥻🥼🥽🥾🥿🦀🦁🦂🦃" \
-"🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🦎🦏🦐🦑🦒🦓🦔🦕🦖🦗🦘🦙🦚🦛🦜🦝🦞🦟🦠🦡🦢🦣🦤🦥🦦🦧🦨🦩🦪🦫" \
-"🦬🦭🦮🦯🦰🦱🦲🦳🦴🦵🦶🦷🦸🦹🦺🦻🦼🦽🦾🦿🧀🧁🧂🧃🧄🧅🧆🧇🧈🧉🧊🧋🧌🧍🧎🧏🧐🧑🧒🧓" \
-"🧔🧕🧖🧗🧘🧙🧚🧛🧜🧝🧞🧟🧠🧡🧢🧣🧤🧥🧦🧧🧨🧩🧪🧫🧬🧭🧮🧯🧰🧱🧲🧳🧴🧵🧶🧷🧸🧹🧺🧻" \
-"🧼🧽🧾🧿🩰🩱🩲🩳🩴🩸🩹🩺🩻🩼🪀🪁🪂🪃🪄🪅🪆🪐🪑🪒🪓🪔🪕🪖🪗🪘🪙🪚🪛🪜🪝🪞🪟🪠🪡🪢" \
-"🪣🪤🪥🪦🪧🪨🪩🪪🪫🪬🪰🪱🪲🪳🪴🪵🪶🪷🪸🪹🪺🫀🫁🫂🫃🫄🫅🫐🫑🫒🫓🫔🫕🫖🫗🫘🫙🫠🫡🫢" \
-"🫣🫤🫥🫦🫧🫰🫱🫲🫳🫴🫵🫶"
+// Enclosed Alphanumeric Supplement
+#ifndef _LA_ICO_ENCLOSED_ALPHANUMERIC_SUPPLEMENT
+#define _LA_ICO_ENCLOSED_ALPHANUMERIC_SUPPLEMENT\
+"🅐🄰🄐🅰🅑🄱🄑🅱🅒🄲🄒🅲🅓🄳🄓🅳🅔🄴🄔🅴🅕🄵🄕🅵🅖🄶🄖🅶🅗🄷🄗🅷🅊🅘🄸🄘🅸🅙🄹🄙"\
+"🅹🅚🄺🄚🅺🅛🄻🄛🅻🅜🄼🄜🅼🅋🅝🄽🄝🅽🅞🄾🄞🅾🅟🄿🄟🅿🅎🅠🅀🄠🆀🅡🅁🄡🆁🅢🅂🄢🆂🅌"\
+"🅍🅣🅃🄣🆃🅤🅄🄤🆄🅥🅅🄥🆅🅦🅆🄦🆆🅏🅧🅇🄧🆇🅨🅈🄨🆈🅩🅉🄩🆉🄯🄉🄆🄅🄊🄂🅪🅫🅬🄈"\
+"🄇🄄🄃🄪🄫🄬🄭🄮🆊🆋🆌🆍🆎🆏🆐🆛🆜🆝🆞🆟🆠🆡🆢🆣🆤🆥🆦🆧🆨🆩🆪🆫🆬🄌🄋🄁🄀🅰🅱🅾"\
+"🅿🆎🆑🆒🆓🆔🆕🆖🆗🆘🆙🆚🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿"
 ;
 #endif
 
-// chess
-#ifndef _LA_ICO_CHESS
-#define _LA_ICO_CHESS \
-"🨀🨁🨂🨃🨄🨅🨆🨇🨈🨉🨊🨋🨌🨍🨎🨏🨐🨑🨒🨓🨔🨕🨖🨗🨘🨙🨚🨛🨜🨝🨞🨟🨠🨡🨢🨣🨤🨥🨦🨧" \
-"🨨🨩🨪🨫🨬🨭🨮🨯🨰🨱🨲🨳🨴🨵🨶🨷🨸🨹🨺🨻🨼🨽🨾🨿🩀🩁🩂🩃🩄🩅🩆🩇🩈🩉🩊🩋🩌🩍🩎🩏" \
+// Enclosed Ideographic Supplement
+#ifndef _LA_ICO_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT
+#define _LA_ICO_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT\
+"🈁🈂🈚🈯🈲🈳🈴🈵🈶🈷🈸🈹🈺🉐🉑"
+;
+#endif
+
+// Miscellaneous Symbols and Pictographs
+#ifndef _LA_ICO_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS
+#define _LA_ICO_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS\
+"🕈🕇🕉🕏🕆🎟🖂🗶🗳🗹🗷🗵🗴📊🏖🎜🎝🐦🖣🌢🖿🖪🖜🏲🖈🖝🏶🕱🕿🖢💣🕮📚🎕🏗🕫🕬📷🏕🗙"\
+"🕯🗃🗂🐈📉📈💹🐿🏙🖁🎬🏛📋🕗🕣🕚🕦🕔🕠🕓🕟🕘🕤🕐🕜🕖🕢🕕🕡🕙🕥🕒🕞🕛🕧🕑🕝🗘📪📫"\
+"🌩🌧🌨🌪🍸🗜🎛💳🕂🕁🗡🕶🗛🏚🏜🏝🖥🗔🗎🖻🖹🖺🐕🕊👂🌎🌏🌍🗋🗅🗇🗆🗌🗍🖄👽👁👓🏭👪"\
+"🖷🗄🎞📽🐟🖅🌫🗀🍽🖾🖼🖽🌕🏌🎓🖴🎧🎔🕳🌶🏠🏘📥🗚🕹🖦🏷🌜🗮🕻🔍🗨🗬🖎🎚🗸🗲🗱🖇🗢"\
+"🔒🖊🖍🖋🖌🖉🔾🕴🕰🗖🎖🗕💰🗰🎘🏞🕲🕃🕄🗈🗊🗉👌🗝🖳🖯🗁🔓📭📬💿🖸📤🗗📦🗏🗟📟🗐🖆"\
+"🎭💻🖩📾🖨🖶🏎🏍📻🖐🎗🖑🖓🖒🖔🗯🕽🕨🕩🕪🗩🗭🕭🗞🏵🖵🖡🖚🖛🖠🖟🖘🖙🖞🕵🏔🏂🖬🔈🔇"\
+"🔉🔊🗣🕷🕸🗓🗒🏟🖃🗠🎙🏄🏊🕅🖭🖀🕼📺🌡🖱🖧🗤🗥🗦🗧🗫👎👍🖲🏆🖏🖰🗪🔿📹🎮🗑🏳🏋👇"\
+"🖗🖫👈🏱👉🌣🌥🌦🕾👆🌤🌬🖮🗺🕀🔃🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗"\
+"🌘🌙🌚🌛🌜🌝🌞🌟🌠🌡🌤🌥🌦🌧🌨🌩🌪🌫🌬🌭🌮🌯🌰🌱🌲🌳🌴🌵🌶🌷🌸🌹🌺🌻🌼🌽🌾🌿🍀🍁"\
+"🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍔🍕🍖🍗🍘🍙🍚🍛🍜🍝🍞🍟🍠🍡🍢🍣🍤🍥🍦🍧🍨🍩"\
+"🍪🍫🍬🍭🍮🍯🍰🍱🍲🍳🍴🍵🍶🍷🍸🍹🍺🍻🍼🍽🍾🍿🎀🎁🎂🎃🎄🎅🎆🎇🎈🎉🎊🎋🎌🎍🎎🎏🎐🎑"\
+"🎒🎓🎖🎗🎙🎚🎛🎞🎟🎠🎡🎢🎣🎤🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾"\
+"🎿🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏋🏌🏍🏎🏏🏐🏑🏒🏓🏔🏕🏖🏗🏘🏙🏚🏛🏜🏝🏞🏟🏠🏡🏢🏣🏤🏥🏦"\
+"🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰🏳🏴🏵🏷🏸🏹🏺🏻🏼🏽🏾🏿🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑"\
+"🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹"\
+"🐺🐻🐼🐽🐾🐿👀👁👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟👠👡"\
+"👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿💀💁💂💃💄💅💆💇💈💉"\
+"💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱"\
+"💲💳💴💵💶💷💸💹💺💻💼💽💾💿📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📑📒📓📔📕📖📗📘📙"\
+"📚📛📜📝📞📟📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📽📿🔀🔁🔂"\
+"🔃🔄🔅🔆🔇🔈🔉🔊🔋🔌🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🔙🔚🔛🔜🔝🔞🔠🔡🔢🔣🔤🔥🔦🔧🔨🔩🔪🔫"\
+"🔬🔭🔮🔯🔰🔱🔲🔳🔴🔵🔶🔷🔸🔹🔺🔻🔼🔽🕉🕊🕋🕌🕍🕎🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕜🕝🕞🕟"\
+"🕠🕡🕢🕣🕤🕥🕦🕧🕯🕰🕳🕴🕵🕶🕷🕸🕹🕺🖇🖊🖋🖌🖍🖐🖕🖖🖤🖥🖨🖱🖲🖼🗂🗃🗄🗑🗒🗓🗜🗝"\
+"🗞🗡🗣🗨🗯🗳🗺🗻🗼🗽🗾🗿🔟"
+;
+#endif
+
+// Emoticons
+#ifndef _LA_ICO_EMOTICONS
+#define _LA_ICO_EMOTICONS\
+"😐😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦"\
+"😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎"\
+"🙏"
+;
+#endif
+
+// Ornamental Dingbats
+#ifndef _LA_ICO_ORNAMENTAL_DINGBATS
+#define _LA_ICO_ORNAMENTAL_DINGBATS\
+"🙾🙯🙴🙹🙳🙦🙞🙤🙜🙻🙱🙧🙟🙥🙝🙨🙩🙬🙲🙢🙒🙚🙠🙐🙘🙿🙮🙷🙶🙸🙺🙰🙪🙫🙣🙓🙛🙡🙑🙙"\
+"🙵🙖🙔🙗🙕🙭🙽🙼"
+;
+#endif
+
+// Transport and Map Symbols
+#ifndef _LA_ICO_TRANSPORT_AND_MAP_SYMBOLS
+#define _LA_ICO_TRANSPORT_AND_MAP_SYMBOLS\
+"🛩🚑🚼🛏🛎🚲🛉🛈🛋🛲🛊🛠🚹🚇🛥🛣🚭🛪🛢🚘🚍🛱🚔🛳🛇🛤🛰🛡🛍🛆🛧🛦🛨🚺🛓🛔🛕🛖🛗🛷"\
+"🛸🛹🛺🛻🛼🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟🚠🚡🚢"\
+"🚣🚤🚥🚦🚧🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸🚹🚺🚻🚼🚽🚾🚿🛀🛁🛂🛃🛄🛜🛅🛋🛌🛍🛎"\
+"🛏🛐🛑🛒🛕🛖🛗🛝🛞🛟🛠🛡🛢🛣🛤🛥🛩🛫🛬🛰🛳🛴🛵🛶🛷🛸🛹🛺🛻🛼"
+;
+#endif
+
+// Alchemical Symbols
+#ifndef _LA_ICO_ALCHEMICAL_SYMBOLS
+#define _LA_ICO_ALCHEMICAL_SYMBOLS\
+"🜁🝪🜶🜷🝅🝛🜫🜆🜇🜈🜉🜅🜺🝗🜽🝫🝬🜾🜏🝂🝃🝄🝙🝐🝌🝎🜓🜥🜠🜣🜤🜞🝥🝦🝧🝨🝩🝰🝡🝢"\
+"🝠🜃🜂🜚🝉🝲🝳🝖🝮🜡🜜🜝🜪🝓🜸🜐🜑🜒🝱🝯🜕🝆🜎🝘🝋🝚🝟🝣🝤🝁🜀🜻🜼🜲🜳🜴🜵🜰🜱🜟"\
+"🝭🜘🜙🜹🜔🜭🜦🝏🜛🝔🝇🝒🝜🝝🜬🜢🜮🜧🝞🜍🜿🝀🜩🝈🝑🝍🝕🜨🜊🜋🜌🜯🜖🜗🜄🝊"
+;
+#endif
+
+// Geometric Shapes Extended
+#ifndef _LA_ICO_GEOMETRIC_SHAPES_EXTENDED
+#define _LA_ICO_GEOMETRIC_SHAPES_EXTENDED\
+"🞃🞀🞙🞟🞂🞄🞍🞗🞝🞌🞁🞘🞞🞽🞱🞤🞫🞷🞆🞐🞜🞴🞧🞮🞺🞉🞓🟆🟏🟑🞾🟊🞲🞬🟌🞸🟓🟔🞇🞑"\
+"🞻🟉🞯🟄🞢🞩🞵🟀🟒🞎🞅🟎🞼🞰🟅🟇🞣🞪🟋🞶🟁🟃🞏🟈🞋🟍🞖🞡🞨🟂🞥🟐🞿🞳🞦🞭🞹🞈🞒🞊"\
+"🞛🞚🞠🞕🞔🟕🟖🟗🟘🟠🟡🟢🟣🟤🟥🟦🟧🟨🟩🟪🟫🟠🟡🟢🟣🟤🟥🟦🟧🟨🟩🟪🟫🟰"
+;
+#endif
+
+// Supplemental Arrows-C
+#ifndef _LA_ICO_SUPPLEMENTAL_ARROWS_C
+#define _LA_ICO_SUPPLEMENTAL_ARROWS_C\
+"🠗🠋🠇🢛🠃🠿🠷🡇🡃🡓🠻🠫🠯🠧🠣🠳🢓🢗🠓🢜🢞🢟🢝🠛🠟🠘🠜🠚🠞🠙🠝🠔🠈🠄🢘🠀🢨🢠🠼🠴"\
+"🢪🡄🡀🢤🡘🢦🡐🠸🢢🠨🠬🠤🠠🠰🢐🢔🠐🡕🡔🠖🠊🠆🢚🠂🢩🢡🠾🠶🢫🡆🡂🢧🢥🡒🠺🢣🠪🠮🠦🠢"\
+"🠲🢒🢖🠒🡖🡗🠕🠉🠅🢙🠁🠽🡙🠵🡅🡁🡑🠹🠩🠭🠥🠡🠱🢑🢕🠑🢬🢭🡫🡻🡣🡳🢃🡨🡸🡠🡰🢀🡭🡽"\
+"🡥🡵🢅🡬🡼🡤🡴🢄🡪🡺🡢🡲🢂🡮🡾🡦🡶🢆🡯🡿🡧🡷🢇🡩🡹🡡🡱🢁🢰🢱"
+;
+#endif
+
+// Supplemental Symbols and Pictographs
+#ifndef _LA_ICO_SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS
+#define _LA_ICO_SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS\
+"🤻🥆🤌🤍🤎🤏🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞🤟🤠🤡🤢🤣🤤🤥🤦🤧🤨🤩🤪🤫🤬🤭🤮🤯🤰🤱"\
+"🤲🤳🤴🤵🤶🤷🤸🤹🤺🤼🤽🤾🤿🥀🥁🥂🥃🥄🥅🥇🥈🥉🥊🥋🥌🥍🥎🥏🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛"\
+"🥜🥝🥞🥟🥠🥡🥢🥣🥤🥥🥦🥧🥨🥩🥪🥫🥬🥭🥮🥯🥰🥱🥲🥳🥴🥵🥶🥷🥸🥹🥺🥻🥼🥽🥾🥿🦀🦁🦂🦃"\
+"🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🦎🦏🦐🦑🦒🦓🦔🦕🦖🦗🦘🦙🦚🦛🦜🦝🦞🦟🦠🦡🦢🦣🦤🦥🦦🦧🦨🦩🦪🦫"\
+"🦬🦭🦮🦯🦰🦱🦲🦳🦴🦵🦶🦷🦸🦹🦺🦻🦼🦽🦾🦿🧀🧁🧂🧃🧄🧅🧆🧇🧈🧉🧊🧋🧌🧍🧎🧏🧐🧑🧒🧓"\
+"🧔🧕🧖🧗🧘🧙🧚🧛🧜🧝🧞🧟🧠🧡🧢🧣🧤🧥🧦🧧🧨🧩🧪🧫🧬🧭🧮🧯🧰🧱🧲🧳🧴🧵🧶🧷🧸🧹🧺🧻"\
+"🧼🧽🧾🧿"
+;
+#endif
+
+// Chess Symbols
+#ifndef _LA_ICO_CHESS_SYMBOLS
+#define _LA_ICO_CHESS_SYMBOLS\
+"🨀🨁🨂🨃🨄🨅🨆🨇🨈🨉🨊🨋🨌🨍🨎🨏🨐🨑🨒🨓🨔🨕🨖🨗🨘🨙🨚🨛🨜🨝🨞🨟🨠🨡🨢🨣🨤🨥🨦🨧"\
+"🨨🨩🨪🨫🨬🨭🨮🨯🨰🨱🨲🨳🨴🨵🨶🨷🨸🨹🨺🨻🨼🨽🨾🨿🩀🩁🩂🩃🩄🩅🩆🩇🩈🩉🩊🩋🩌🩍🩎🩏"\
 "🩐🩑🩒🩓🩠🩡🩢🩣🩤🩥🩦🩧🩨🩩🩪🩫🩬🩭"
 ;
 #endif
 
-// Generated 4968 characters
+// Symbols and Pictographs Extended-A
+#ifndef _LA_ICO_SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A
+#define _LA_ICO_SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A\
+"🩰🩱🩲🩳🩴🩸🩹🩺🪀🪁🪂🪃🪄🪅🪆🪐🪑🪒🪓🪔🪕🪖🪗🪘🪙🪚🪛🪜🪝🪞🪟🪠🪡🪢🪣🪤🪥🪦🪧🪨"\
+"🪰🪱🪲🪳🪴🪵🪶🫀🫁🫂🫐🫑🫒🫓🫔🫕🫖🪻🪇🪈🪼🫏🪿🩶🩷🩵🪯🫚🫛🫎🪽🪭🩰🩱🩲🩳🩴🩸🩹🩺"\
+"🩻🩼🪀🪁🪂🪃🪄🪅🪆🪐🪑🪒🪮🪓🪔🪕🪖🪗🪘🪙🪚🪛🪜🪝🪞🪟🪠🪡🪢🪣🪤🪥🪦🪧🪨🪩🪪🪫🪬🪰"\
+"🪱🪲🪳🪴🪵🪶🪷🪸🪹🪺🫀🫁🫂🫃🫄🫅🫐🫑🫒🫓🫔🫕🫖🫗🫘🫙🫠🫡🫢🫣🫤🫥🫨🫦🫧🫰🫱🫲🫳🫴"\
+"🫵🫶🫸🫷"
+;
+#endif
+
+// Symbols for Legacy Computing
+#ifndef _LA_ICO_SYMBOLS_FOR_LEGACY_COMPUTING
+#define _LA_ICO_SYMBOLS_FOR_LEGACY_COMPUTING\
+"🬀🬁🬂🬃🬄🬅🬆🬇🬈🬉🬊🬋🬌🬍🬎🬏🬐🬑🬒🬓🬔🬕🬖🬗🬘🬙🬚🬛🬜🬝🬞🬟🬠🬡🬢🬣🬤🬥🬦🬧"\
+"🬨🬩🬪🬫🬬🬭🬮🬯🬰🬱🬲🬳🬴🬵🬶🬷🬸🬹🬺🬻🬼🬽🬾🬿🭀🭁🭂🭃🭄🭅🭆🭇🭈🭉🭊🭋🭌🭍🭎🭏"\
+"🭐🭑🭒🭓🭔🭕🭖🭗🭘🭙🭚🭛🭜🭝🭞🭟🭠🭡🭢🭣🭤🭥🭦🭧🭨🭩🭪🭫🭬🭭🭮🭯🭰🭱🭲🭳🭴🭵🭶🭷"\
+"🭸🭹🭺🭻🭼🭽🭾🭿🮀🮁🮂🮃🮄🮅🮆🮇🮈🮉🮊🮋🮌🮍🮎🮏🮐🮑🮒🮔🮕🮖🮗🮘🮙🮚🮛🮜🮝🮞🮟🮠"\
+"🮡🮢🮣🮤🮥🮦🮧🮨🮩🮪🮫🮬🮭🮮🮯🮰🮱🮲🮳🮴🮵🮶🮷🮸🮹🮺🮻🮼🮽🮾🮿🯀🯁🯂🯃🯄🯅🯆🯇🯈"\
+"🯉🯊🯰🯱🯲🯳🯴🯵🯶🯷🯸🯹"
+;
+#endif
+
+// Tags
+#ifndef _LA_ICO_TAGS
+#define _LA_ICO_TAGS\
+"󠀰󠀱󠀲󠀳󠀴󠀵󠀶󠀷󠀸󠀹󠁡󠁢󠁣󠁤󠁥󠁦󠁧󠁨󠁩󠁪󠁫󠁬󠁭󠁮󠁯󠁰󠁱󠁲󠁳󠁴󠁵󠁶󠁷󠁸󠁹󠁺󠁿"
+;
+#endif
+
+// Supplementary Private Use Area-A
+#ifndef _LA_ICO_SUPPLEMENTARY_PRIVATE_USE_AREA_A
+#define _LA_ICO_SUPPLEMENTARY_PRIVATE_USE_AREA_A\
+"󾠬󾠮󾠯󾠰󾠱󾠲󾠳󾠴󾠵󾠶󾠷󾓭󾓨󾓫󾓧󾓩󾓥󾓮󾓬󾓪󾓦"
+;
+#endif
+
+// Generated 7470 characters
 // Glyphs with no names: 0
 // 

+ 415 - 77
la_icon_gen.py

@@ -1,5 +1,6 @@
 import fontforge
 import unicodedata
+import re
 
 gen=open("la_icon.h", "w")
 
@@ -21,91 +22,428 @@ def find_glyph(unicode):
             break
     return glyph
 
-groups=[
-[73, "currency", []],#Currency Symbols]
-[77, "arrows", []],#Arrows]
-[78, "dingbats", []],#Mathematical Operators]
-[79, "tech", []],#Miscellaneous Technical]
-#[83, "box", []],#Box Drawing]
-#[84, "block", []],#Block Elements]
-[85, "geom", []],#Geometric Shapes]
-[86, "misc", []],#Miscellaneous Symbols]
-[87, "dingbats", []],#Dingbats]
-[88, "math", []],#Miscellaneous Mathematical Symbols-A]
-[89, "arrows", []],#Supplemental Arrows-A]
-[90, "braille", []],#Braille Patterns]
-[91, "arrows", []],#Supplemental Arrows-B]
-[92, "math", []],#Miscellaneous Mathematical Symbols-B]
-[93, "math", []],#Supplemental Mathematical Operators]
-[94, "misc", []],#Miscellaneous Symbols and Arrows]
-#[163, "linear_b_s", []],#Linear B Syllabary]
-#[164, "linear_b_i", []],#Linear B Ideograms]
-#[238,, []],# Cuneiform]
-#[239,, []],# Cuneiform Numbers and Punctuation]
-#[240, "edc", []],#Early Dynastic Cuneiform]
-[241, "egyptian", []],#Egyptian Hieroglyphs]
-#[242,, []],# Egyptian Hieroglyph Format Controls]
-#[243, "anatonllian", []],#Anatolian Hieroglyphs]
-#[244, "bamum", []],#Bamum Supplement]
-#[257, "duployan", []],#Duployan]
-[259, "musical", []],#Byzantine Musical Symbols]
-[260, "musical", []],#Musical Symbols]
-[261, "musical", []],#Ancient Greek Musical Notation]
-[262, "mayan_num", []],#Mayan Numerals]
-[263, "taixuan", []],#Tai Xuan Jing Symbols]
-[264, "rod", []],#Counting Rod Numerals]
-#[274, "arabic_math", []],#Arabic Mathematical Alphabetic Symbols]
-#[275,, []],# Mahjong Tiles]
-#[276,, []],# Domino Tiles]
-#[277,, []],# Playing Cards]
-[278, "enclosed", []],#Enclosed Alphanumeric Supplement]
-[279, "enclosed", []],#Enclosed Ideographic Supplement]
-[280, "misc", []],#Miscellaneous Symbols and Pictographs]
-[281, "emo", []],#Emoticons]
-[282, "dingbats", []],#Ornamental Dingbats]
-[283, "transport", []],#Transport and Map Symbols]
-[284, "alchemical", []],#Alchemical Symbols]
-[285, "geom", []],#Geometric Shapes Extended]
-[286, "arrows", []],#Supplemental Arrows-C]
-[287, "pic", []],#Supplemental Symbols and Pictographs]
-[288, "chess", []],#Chess Symbols]
-[289, "pic", []],#Symbols and Pictographs Extended-A]
-#[290, "", []],#legact computing]
-]
-
-f.append(fontforge.open("/home/yiming/.local/share/fonts/NotoSansSymbols-Regular.ttf"))
-f.append(fontforge.open("/home/yiming/.local/share/fonts/NotoSansSymbols2-Regular.ttf"))
-f.append(fontforge.open("/home/yiming/.local/share/fonts/NotoEmoji-Regular.ttf"))
-f.append(fontforge.open("/home/yiming/.local/share/fonts/NotoMusic-Regular.ttf"))
-f.append(fontforge.open("/home/yiming/.local/share/fonts/NotoSansEgyptianHieroglyphs-Regular.ttf"))
-
-for i in range(len(groups)):
-    begin=fontforge.UnicodeBlockStartFromLib(groups[i][0])
-    end=fontforge.UnicodeBlockEndFromLib(groups[i][0])+1
-    for c in range(begin,end):
-        glyph=find_glyph(c)
-        if glyph is not None:
-            groups[i][2].append(glyph)
-
-for i in range(len(groups)):
-    for j in range(i+1,len(groups)):
-        if groups[j][1]!=groups[i][1] or len(groups[j][2])==0:
-            continue;
-        groups[i][2].extend(groups[j][2])
-        groups[j][2]=[]
+def uniblock(ch):
+  #assert isinstance(ch, unicode) and len(ch) == 1, repr(ch)
+  for i, block in enumerate(_blocks):
+    if block[0] <= ch <= block[1]:
+      return i
+  return None
+
+def _initBlocks(text):
+  global _blocks
+  _blocks = []
+  import re
+  pattern = re.compile(r'([0-9A-F]+)\.\.([0-9A-F]+);\ (\S.*\S)')
+  for line in text.splitlines():
+    m = pattern.match(line)
+    if m:
+      start, end, name = m.groups()
+      _blocks.append([int(start, 16), int(end, 16), name, []])
+
+# retrieved from http://unicode.org/Public/UNIDATA/Blocks.txt
+_initBlocks('''# Blocks-16.0.0.txt
+# Date: 2024-02-02
+# © 2024 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see https://www.unicode.org/reports/tr44/
+#
+# Format:
+# Start Code..End Code; Block Name
+
+# ================================================
+
+# Note:   When comparing block names, casing, whitespace, hyphens,
+#         and underbars are ignored.
+#         For example, "Latin Extended-A" and "latin extended a" are equivalent.
+#         For more information on the comparison of property values,
+#            see UAX #44: https://www.unicode.org/reports/tr44/
+#
+#  All block ranges start with a value where (cp MOD 16) = 0,
+#  and end with a value where (cp MOD 16) = 15. In other words,
+#  the last hexadecimal digit of the start of range is ...0
+#  and the last hexadecimal digit of the end of range is ...F.
+#  This constraint on block ranges guarantees that allocations
+#  are done in terms of whole columns, and that code chart display
+#  never involves splitting columns in the charts.
+#
+#  All code points not explicitly listed for Block
+#  have the value No_Block.
+
+# Property:	Block
+#
+# @missing: 0000..10FFFF; No_Block
+
+0000..007F; Basic Latin
+0080..00FF; Latin-1 Supplement
+0100..017F; Latin Extended-A
+0180..024F; Latin Extended-B
+0250..02AF; IPA Extensions
+02B0..02FF; Spacing Modifier Letters
+0300..036F; Combining Diacritical Marks
+0370..03FF; Greek and Coptic
+0400..04FF; Cyrillic
+0500..052F; Cyrillic Supplement
+0530..058F; Armenian
+0590..05FF; Hebrew
+0600..06FF; Arabic
+0700..074F; Syriac
+0750..077F; Arabic Supplement
+0780..07BF; Thaana
+07C0..07FF; NKo
+0800..083F; Samaritan
+0840..085F; Mandaic
+0860..086F; Syriac Supplement
+0870..089F; Arabic Extended-B
+08A0..08FF; Arabic Extended-A
+0900..097F; Devanagari
+0980..09FF; Bengali
+0A00..0A7F; Gurmukhi
+0A80..0AFF; Gujarati
+0B00..0B7F; Oriya
+0B80..0BFF; Tamil
+0C00..0C7F; Telugu
+0C80..0CFF; Kannada
+0D00..0D7F; Malayalam
+0D80..0DFF; Sinhala
+0E00..0E7F; Thai
+0E80..0EFF; Lao
+0F00..0FFF; Tibetan
+1000..109F; Myanmar
+10A0..10FF; Georgian
+1100..11FF; Hangul Jamo
+1200..137F; Ethiopic
+1380..139F; Ethiopic Supplement
+13A0..13FF; Cherokee
+1400..167F; Unified Canadian Aboriginal Syllabics
+1680..169F; Ogham
+16A0..16FF; Runic
+1700..171F; Tagalog
+1720..173F; Hanunoo
+1740..175F; Buhid
+1760..177F; Tagbanwa
+1780..17FF; Khmer
+1800..18AF; Mongolian
+18B0..18FF; Unified Canadian Aboriginal Syllabics Extended
+1900..194F; Limbu
+1950..197F; Tai Le
+1980..19DF; New Tai Lue
+19E0..19FF; Khmer Symbols
+1A00..1A1F; Buginese
+1A20..1AAF; Tai Tham
+1AB0..1AFF; Combining Diacritical Marks Extended
+1B00..1B7F; Balinese
+1B80..1BBF; Sundanese
+1BC0..1BFF; Batak
+1C00..1C4F; Lepcha
+1C50..1C7F; Ol Chiki
+1C80..1C8F; Cyrillic Extended-C
+1C90..1CBF; Georgian Extended
+1CC0..1CCF; Sundanese Supplement
+1CD0..1CFF; Vedic Extensions
+1D00..1D7F; Phonetic Extensions
+1D80..1DBF; Phonetic Extensions Supplement
+1DC0..1DFF; Combining Diacritical Marks Supplement
+1E00..1EFF; Latin Extended Additional
+1F00..1FFF; Greek Extended
+2000..206F; General Punctuation
+2070..209F; Superscripts and Subscripts
+20A0..20CF; Currency Symbols
+20D0..20FF; Combining Diacritical Marks for Symbols
+2100..214F; Letterlike Symbols
+2150..218F; Number Forms
+2190..21FF; Arrows
+2200..22FF; Mathematical Operators
+2300..23FF; Miscellaneous Technical
+2400..243F; Control Pictures
+2440..245F; Optical Character Recognition
+2460..24FF; Enclosed Alphanumerics
+2500..257F; Box Drawing
+2580..259F; Block Elements
+25A0..25FF; Geometric Shapes
+2600..26FF; Miscellaneous Symbols
+2700..27BF; Dingbats
+27C0..27EF; Miscellaneous Mathematical Symbols-A
+27F0..27FF; Supplemental Arrows-A
+2800..28FF; Braille Patterns
+2900..297F; Supplemental Arrows-B
+2980..29FF; Miscellaneous Mathematical Symbols-B
+2A00..2AFF; Supplemental Mathematical Operators
+2B00..2BFF; Miscellaneous Symbols and Arrows
+2C00..2C5F; Glagolitic
+2C60..2C7F; Latin Extended-C
+2C80..2CFF; Coptic
+2D00..2D2F; Georgian Supplement
+2D30..2D7F; Tifinagh
+2D80..2DDF; Ethiopic Extended
+2DE0..2DFF; Cyrillic Extended-A
+2E00..2E7F; Supplemental Punctuation
+2E80..2EFF; CJK Radicals Supplement
+2F00..2FDF; Kangxi Radicals
+2FF0..2FFF; Ideographic Description Characters
+3000..303F; CJK Symbols and Punctuation
+3040..309F; Hiragana
+30A0..30FF; Katakana
+3100..312F; Bopomofo
+3130..318F; Hangul Compatibility Jamo
+3190..319F; Kanbun
+31A0..31BF; Bopomofo Extended
+31C0..31EF; CJK Strokes
+31F0..31FF; Katakana Phonetic Extensions
+3200..32FF; Enclosed CJK Letters and Months
+3300..33FF; CJK Compatibility
+3400..4DBF; CJK Unified Ideographs Extension A
+4DC0..4DFF; Yijing Hexagram Symbols
+4E00..9FFF; CJK Unified Ideographs
+A000..A48F; Yi Syllables
+A490..A4CF; Yi Radicals
+A4D0..A4FF; Lisu
+A500..A63F; Vai
+A640..A69F; Cyrillic Extended-B
+A6A0..A6FF; Bamum
+A700..A71F; Modifier Tone Letters
+A720..A7FF; Latin Extended-D
+A800..A82F; Syloti Nagri
+A830..A83F; Common Indic Number Forms
+A840..A87F; Phags-pa
+A880..A8DF; Saurashtra
+A8E0..A8FF; Devanagari Extended
+A900..A92F; Kayah Li
+A930..A95F; Rejang
+A960..A97F; Hangul Jamo Extended-A
+A980..A9DF; Javanese
+A9E0..A9FF; Myanmar Extended-B
+AA00..AA5F; Cham
+AA60..AA7F; Myanmar Extended-A
+AA80..AADF; Tai Viet
+AAE0..AAFF; Meetei Mayek Extensions
+AB00..AB2F; Ethiopic Extended-A
+AB30..AB6F; Latin Extended-E
+AB70..ABBF; Cherokee Supplement
+ABC0..ABFF; Meetei Mayek
+AC00..D7AF; Hangul Syllables
+D7B0..D7FF; Hangul Jamo Extended-B
+D800..DB7F; High Surrogates
+DB80..DBFF; High Private Use Surrogates
+DC00..DFFF; Low Surrogates
+E000..F8FF; Private Use Area
+F900..FAFF; CJK Compatibility Ideographs
+FB00..FB4F; Alphabetic Presentation Forms
+FB50..FDFF; Arabic Presentation Forms-A
+FE00..FE0F; Variation Selectors
+FE10..FE1F; Vertical Forms
+FE20..FE2F; Combining Half Marks
+FE30..FE4F; CJK Compatibility Forms
+FE50..FE6F; Small Form Variants
+FE70..FEFF; Arabic Presentation Forms-B
+FF00..FFEF; Halfwidth and Fullwidth Forms
+FFF0..FFFF; Specials
+10000..1007F; Linear B Syllabary
+10080..100FF; Linear B Ideograms
+10100..1013F; Aegean Numbers
+10140..1018F; Ancient Greek Numbers
+10190..101CF; Ancient Symbols
+101D0..101FF; Phaistos Disc
+10280..1029F; Lycian
+102A0..102DF; Carian
+102E0..102FF; Coptic Epact Numbers
+10300..1032F; Old Italic
+10330..1034F; Gothic
+10350..1037F; Old Permic
+10380..1039F; Ugaritic
+103A0..103DF; Old Persian
+10400..1044F; Deseret
+10450..1047F; Shavian
+10480..104AF; Osmanya
+104B0..104FF; Osage
+10500..1052F; Elbasan
+10530..1056F; Caucasian Albanian
+10570..105BF; Vithkuqi
+105C0..105FF; Todhri
+10600..1077F; Linear A
+10780..107BF; Latin Extended-F
+10800..1083F; Cypriot Syllabary
+10840..1085F; Imperial Aramaic
+10860..1087F; Palmyrene
+10880..108AF; Nabataean
+108E0..108FF; Hatran
+10900..1091F; Phoenician
+10920..1093F; Lydian
+10980..1099F; Meroitic Hieroglyphs
+109A0..109FF; Meroitic Cursive
+10A00..10A5F; Kharoshthi
+10A60..10A7F; Old South Arabian
+10A80..10A9F; Old North Arabian
+10AC0..10AFF; Manichaean
+10B00..10B3F; Avestan
+10B40..10B5F; Inscriptional Parthian
+10B60..10B7F; Inscriptional Pahlavi
+10B80..10BAF; Psalter Pahlavi
+10C00..10C4F; Old Turkic
+10C80..10CFF; Old Hungarian
+10D00..10D3F; Hanifi Rohingya
+10D40..10D8F; Garay
+10E60..10E7F; Rumi Numeral Symbols
+10E80..10EBF; Yezidi
+10EC0..10EFF; Arabic Extended-C
+10F00..10F2F; Old Sogdian
+10F30..10F6F; Sogdian
+10F70..10FAF; Old Uyghur
+10FB0..10FDF; Chorasmian
+10FE0..10FFF; Elymaic
+11000..1107F; Brahmi
+11080..110CF; Kaithi
+110D0..110FF; Sora Sompeng
+11100..1114F; Chakma
+11150..1117F; Mahajani
+11180..111DF; Sharada
+111E0..111FF; Sinhala Archaic Numbers
+11200..1124F; Khojki
+11280..112AF; Multani
+112B0..112FF; Khudawadi
+11300..1137F; Grantha
+11380..113FF; Tulu-Tigalari
+11400..1147F; Newa
+11480..114DF; Tirhuta
+11580..115FF; Siddham
+11600..1165F; Modi
+11660..1167F; Mongolian Supplement
+11680..116CF; Takri
+116D0..116FF; Myanmar Extended-C
+11700..1174F; Ahom
+11800..1184F; Dogra
+118A0..118FF; Warang Citi
+11900..1195F; Dives Akuru
+119A0..119FF; Nandinagari
+11A00..11A4F; Zanabazar Square
+11A50..11AAF; Soyombo
+11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
+11AC0..11AFF; Pau Cin Hau
+11B00..11B5F; Devanagari Extended-A
+11BC0..11BFF; Sunuwar
+11C00..11C6F; Bhaiksuki
+11C70..11CBF; Marchen
+11D00..11D5F; Masaram Gondi
+11D60..11DAF; Gunjala Gondi
+11EE0..11EFF; Makasar
+11F00..11F5F; Kawi
+11FB0..11FBF; Lisu Supplement
+11FC0..11FFF; Tamil Supplement
+12000..123FF; Cuneiform
+12400..1247F; Cuneiform Numbers and Punctuation
+12480..1254F; Early Dynastic Cuneiform
+12F90..12FFF; Cypro-Minoan
+13000..1342F; Egyptian Hieroglyphs
+13430..1345F; Egyptian Hieroglyph Format Controls
+13460..143FF; Egyptian Hieroglyphs Extended-A
+14400..1467F; Anatolian Hieroglyphs
+16100..1613F; Gurung Khema
+16800..16A3F; Bamum Supplement
+16A40..16A6F; Mro
+16A70..16ACF; Tangsa
+16AD0..16AFF; Bassa Vah
+16B00..16B8F; Pahawh Hmong
+16D40..16D7F; Kirat Rai
+16E40..16E9F; Medefaidrin
+16F00..16F9F; Miao
+16FE0..16FFF; Ideographic Symbols and Punctuation
+17000..187FF; Tangut
+18800..18AFF; Tangut Components
+18B00..18CFF; Khitan Small Script
+18D00..18D7F; Tangut Supplement
+1AFF0..1AFFF; Kana Extended-B
+1B000..1B0FF; Kana Supplement
+1B100..1B12F; Kana Extended-A
+1B130..1B16F; Small Kana Extension
+1B170..1B2FF; Nushu
+1BC00..1BC9F; Duployan
+1BCA0..1BCAF; Shorthand Format Controls
+1CC00..1CEBF; Symbols for Legacy Computing Supplement
+1CF00..1CFCF; Znamenny Musical Notation
+1D000..1D0FF; Byzantine Musical Symbols
+1D100..1D1FF; Musical Symbols
+1D200..1D24F; Ancient Greek Musical Notation
+1D2C0..1D2DF; Kaktovik Numerals
+1D2E0..1D2FF; Mayan Numerals
+1D300..1D35F; Tai Xuan Jing Symbols
+1D360..1D37F; Counting Rod Numerals
+1D400..1D7FF; Mathematical Alphanumeric Symbols
+1D800..1DAAF; Sutton SignWriting
+1DF00..1DFFF; Latin Extended-G
+1E000..1E02F; Glagolitic Supplement
+1E030..1E08F; Cyrillic Extended-D
+1E100..1E14F; Nyiakeng Puachue Hmong
+1E290..1E2BF; Toto
+1E2C0..1E2FF; Wancho
+1E4D0..1E4FF; Nag Mundari
+1E5D0..1E5FF; Ol Onal
+1E7E0..1E7FF; Ethiopic Extended-B
+1E800..1E8DF; Mende Kikakui
+1E900..1E95F; Adlam
+1EC70..1ECBF; Indic Siyaq Numbers
+1ED00..1ED4F; Ottoman Siyaq Numbers
+1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
+1F000..1F02F; Mahjong Tiles
+1F030..1F09F; Domino Tiles
+1F0A0..1F0FF; Playing Cards
+1F100..1F1FF; Enclosed Alphanumeric Supplement
+1F200..1F2FF; Enclosed Ideographic Supplement
+1F300..1F5FF; Miscellaneous Symbols and Pictographs
+1F600..1F64F; Emoticons
+1F650..1F67F; Ornamental Dingbats
+1F680..1F6FF; Transport and Map Symbols
+1F700..1F77F; Alchemical Symbols
+1F780..1F7FF; Geometric Shapes Extended
+1F800..1F8FF; Supplemental Arrows-C
+1F900..1F9FF; Supplemental Symbols and Pictographs
+1FA00..1FA6F; Chess Symbols
+1FA70..1FAFF; Symbols and Pictographs Extended-A
+1FB00..1FBFF; Symbols for Legacy Computing
+20000..2A6DF; CJK Unified Ideographs Extension B
+2A700..2B73F; CJK Unified Ideographs Extension C
+2B740..2B81F; CJK Unified Ideographs Extension D
+2B820..2CEAF; CJK Unified Ideographs Extension E
+2CEB0..2EBEF; CJK Unified Ideographs Extension F
+2EBF0..2EE5F; CJK Unified Ideographs Extension I
+2F800..2FA1F; CJK Compatibility Ideographs Supplement
+30000..3134F; CJK Unified Ideographs Extension G
+31350..323AF; CJK Unified Ideographs Extension H
+E0000..E007F; Tags
+E0100..E01EF; Variation Selectors Supplement
+F0000..FFFFF; Supplementary Private Use Area-A
+100000..10FFFF; Supplementary Private Use Area-B
+
+# EOF
+''')
+
+f.append(fontforge.open("fonts/NotoSansSymbols-Regular.ttf"))
+f.append(fontforge.open("fonts/NotoSansSymbols2-Regular.ttf"))
+f.append(fontforge.open("fonts/NotoEmoji-Regular.ttf"))
+f.append(fontforge.open("fonts/NotoSansMath-Regular.ttf"))
+
+for i in range(len(f)):
+    for glyph in f[i].glyphs():
+        b=uniblock(glyph.unicode)
+        if b is not None:
+            _blocks[b][3].append(glyph.unicode)
 
 irow=0;
 row=40;
 
-for i in range(len(groups)):
+for i in range(len(_blocks)):
+    if i==0:
+        continue # no latin needed
     irow=0;
-    if len(groups[i][2])==0:
+    if len(_blocks[i][3])==0:
         continue;
-    gen.write("// "+groups[i][1]+"\n#ifndef _LA_ICO_"+groups[i][1].upper()+"\n#define _LA_ICO_"+groups[i][1].upper()+"\\\n")
-    for c in groups[i][2]:
+    name=_blocks[i][2].upper().replace(" ", "_").replace("-", "_")
+    gen.write("// "+_blocks[i][2]+"\n#ifndef _LA_ICO_"+name+"\n#define _LA_ICO_"+name+"\\\n")
+    for c in _blocks[i][3]:
         if (irow%row==0):
             gen.write("\"")
-        gen.write(str(chr(c.unicode)));
+        gen.write(str(chr(c)));
         written+=1;
         irow+=1
         if (irow%row==0):

+ 22 - 20
la_kernel.c

@@ -1353,6 +1353,7 @@ int laGetReadyWith(laInitArguments* ia){
     LOAD_FONT("NotoEmoji-Regular.ttf");
     LOAD_FONT("NotoSansSymbols-Regular.ttf");
     LOAD_FONT("NotoSansSymbols2-Regular.ttf");
+    LOAD_FONT("NotoSansMath-Regular.ttf");
     //LOAD_FONT("NotoMusic-Regular.ttf");
     //LOAD_FONT("NotoSansEgyptianHieroglyphs-Regular.ttf);
     if(!tnsLoadSystemFontMono(MAIN.SysFontDir, "NotoSansMono-Regular.ttf")) logPrintNew("Can't load font \"NotoSansMono-Regular.ttf\"\n");;
@@ -2393,11 +2394,12 @@ int la_SetUpUiListMatrix(laUiListDraw *uild, laUiList *Target, int _L, int _R, i
         return 0;
     }
 
-    tnsViewportWithScissor(uildi->L-1, PanelH - uildi->B, uildi->R - uildi->L+1, uildi->B - uildi->U-1);
-    tnsOrtho(Target->L + Target->PanX + uildi->DifX-1,
-             Target->L + Target->PanX + uildi->DifX+1+ (uildi->R - uildi->L),
-             Target->U + Target->PanY + uildi->DifY+ (uildi->B - uildi->U),
-             Target->U + Target->PanY + uildi->DifY+1,
+    int Pad=1;
+    tnsViewportWithScissor(uildi->L-Pad, PanelH - uildi->B-Pad, uildi->R - uildi->L+Pad*2, uildi->B - uildi->U+Pad*2);
+    tnsOrtho(Target->L + Target->PanX + uildi->DifX-Pad,
+             Target->L + Target->PanX + uildi->DifX+Pad+ (uildi->R - uildi->L),
+             Target->U + Target->PanY + uildi->DifY+Pad+ (uildi->B - uildi->U),
+             Target->U + Target->PanY + uildi->DifY-Pad,
              -100, 100);
 
     lstPushItem(&uild->Items, uildi);
@@ -6000,13 +6002,13 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
         }
 
 
-        if(!RowMode){ ui->TL = ui->C->IL + (NoGap?-LA_M:LA_M); ui->TR = ui->C->IR - (NoGap?-LA_M:LA_M); }
+        if(!RowMode){ ui->TL = ui->C->IL + (NoGap?0:LA_M); ui->TR = ui->C->IR - (NoGap?0:LA_M); }
 
         int GB=0;
-        if (ui->Type == _LA_UI_FIXED_GROUP && ui->Page->HeightCoeff < 0 && ui->Flags&LA_UI_FLAGS_PREFER_BOTTOM){ GB=ui->Page->TB-ui->Page->PanY; }
+        if (ui->Type == _LA_UI_FIXED_GROUP && ui->Page->HeightCoeff < 0 && ui->Flags&LA_UI_FLAGS_PREFER_BOTTOM){ GB=ui->Page->TB-ui->Page->PanY-LA_M; }
 
         H = ui->Type->GetHeight ? ui->Type->GetHeight(ui) : 1;
-        ui->TU = ui->C->B + (NoGap?-LA_M:LA_M);
+        ui->TU = ui->C->B + (NoGap?0:LA_M);
         if (H < 0){
             if(B){ H = B + (H+1) * LA_RH - ui->TU-LA_M+((H<-1)?-LA_M:0); }
             else{ H=LA_RH; }
@@ -6154,8 +6156,8 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
                     if(!Template) Template=laui_SubPropInfoDefault;
                     //ui->Template = Template;
                     int EraseWidth=(ui->Type == _LA_UI_COLLECTION_SELECTOR)?LA_RH:0;
-                    int TopPad = (ui->Type == _LA_UI_COLLECTION_SINGLE)?(NoDecal?-LA_M:LA_M):-LA_M;
-                    int SidePad = NoDecal?-LA_M:LA_M;
+                    int TopPad = (ui->Type == _LA_UI_COLLECTION_SINGLE)?(NoDecal?0:LA_M):-LA_M;
+                    int SidePad = NoDecal?0:LA_M;
                     if (!ui->Subs.pFirst && TInstance){
                         la_AddInstancePage(ui, TInstance, 0);
                         la_CalcUiTopInfluence(&uil->Columns, ui);
@@ -6239,7 +6241,7 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
             }else ui->TB = ui->TU + H;
         }
 
-        if (ui->TB > Lowest && (!NoHeight)) Lowest = ui->TB + (bt ? (NoGap?-LA_M:LA_M) : 0);
+        if (ui->TB > Lowest && (!NoHeight)) Lowest = ui->TB + (bt ? (NoGap?0:LA_M) : 0);
         if(!RowMode){
             if(!NoHeight) la_CalcUiItemInfluence(&uil->Columns, ui);
         }else{
@@ -6383,10 +6385,11 @@ laUiList *la_FindSubListWithInstance(laUiItem *ui, void *Instance){
 
 void la_DrawUiListArrows(laUiList *uil, int L, int R, int U, int B, real* color){
     int mx=(L+R)/2; int my=(U+B)/2;
-    if(uil->R-uil->PanX>R){ tnsDrawStringAuto("▷", color, R-LA_RH, R, my-LA_RH2, LA_TEXT_ALIGN_RIGHT); }
-    if(uil->L-uil->PanX<L){ tnsDrawStringAuto("◁", color, L, L+LA_RH, my-LA_RH2, LA_TEXT_ALIGN_LEFT); }
-    if(uil->U-uil->PanY<U){ tnsDrawStringAuto("△", color, mx-LA_RH2, mx+LA_RH2, U, LA_TEXT_ALIGN_CENTER); }
-    if(uil->B-uil->PanY>B){ tnsDrawStringAuto("▽", color, mx-LA_RH2, mx+LA_RH2, B-LA_RH, LA_TEXT_ALIGN_CENTER); }
+    int PadR=uil->ScrollerShownV?LA_SCROLL_W+LA_M*2:0;
+    if(uil->R-uil->PanX>R){ tnsDrawStringAuto("⯈", color, R-PadR-LA_RH, R-PadR, my-LA_RH2, LA_TEXT_ALIGN_RIGHT|LA_TEXT_SHADOW); }
+    if(uil->L-uil->PanX<L){ tnsDrawStringAuto("⯇", color, L, L+LA_RH, my-LA_RH2, LA_TEXT_ALIGN_LEFT|LA_TEXT_SHADOW); }
+    if(uil->U-uil->PanY<U){ tnsDrawStringAuto("⯅", color, mx-LA_RH2, mx+LA_RH2, U, LA_TEXT_ALIGN_CENTER|LA_TEXT_SHADOW); }
+    if(uil->B-uil->PanY>B){ tnsDrawStringAuto("⯆", color, mx-LA_RH2, mx+LA_RH2, B-LA_RH, LA_TEXT_ALIGN_CENTER|LA_TEXT_SHADOW); }
     tnsFlush();
 }
 void la_DrawUiListScrollerV(laUiList *uil, int DisplayOffset, int TotalH, int DisplayedH, int UiR, int BarTop, int BarBottom){
@@ -6438,7 +6441,7 @@ void la_DrawUiListScrollerV(laUiList *uil, int DisplayOffset, int TotalH, int Di
     tnsPackAs(GL_TRIANGLE_FAN);
 
     int HU=(U+B)/2+LA_RH2;
-    tnsDrawStringAuto("",laThemeColor(bt, LA_BT_BORDER),L-100,R+100,HU,LA_TEXT_REVERT_Y|LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto("",laThemeColor(bt, LA_BT_BORDER),L-100,R+100,HU,LA_TEXT_REVERT_Y|LA_TEXT_ALIGN_CENTER);
     tnsFlush();
 }
 void la_DrawUiListScrollerH(laUiList *uil, int DisplayOffset, int TotalW, int DisplayW, int UiB, int BarLeft, int BarRight){
@@ -6488,7 +6491,7 @@ void la_DrawUiListScrollerH(laUiList *uil, int DisplayOffset, int TotalW, int Di
     tnsPackAs(GL_TRIANGLE_FAN);
 
     int HU=(U+B)/2+LA_RH2;
-    tnsDrawStringAuto("⠶⠶",laThemeColor(bt, LA_BT_BORDER),L-100,R+100,HU,LA_TEXT_REVERT_Y|LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto("",laThemeColor(bt, LA_BT_BORDER),L-100,R+100,HU,LA_TEXT_REVERT_Y|LA_TEXT_ALIGN_CENTER);
     tnsFlush();
 }
 void la_DrawInstanceBkg(laUiList *uil, real* color, int LP, int RP){
@@ -6730,7 +6733,7 @@ int la_DrawUiListRecursive(laUiListDraw *uild, laUiList *uil, int L, int R, int
                         ui->Page->B-ui->Page->U, ui->B-ui->Page->U-PadBottom,ui->R,
                         ui->Page->U+LA_M,ui->B-LA_M-PadBottom);
                 }
-                if (ui->Page->AllowScale){ la_DrawUiListArrows(ui->Page,ui->L, ui->R, ui->Page->U, ui->B-LA_SCROLL_W-LA_M*2, laThemeColor(bt, LA_BT_BORDER)); }
+                if (ui->Page->AllowScale){ la_DrawUiListArrows(ui->Page,ui->L, ui->R, ui->Page->U, ui->B-LA_SCROLL_W-LA_M*2, laThemeColor(bt, LA_BT_TEXT)); }
             
             }elif (ui->Type == _LA_UI_COLLECTION){
                 int CanGetState = laCanGetState(ui->PP.LastPs->p);
@@ -7624,8 +7627,7 @@ int laInvokeUiP(laOperator *From, laOperatorType *at, laEvent *e, void *inst, la
 
     if (rev & LA_FINISH){
         a->StopNow = 1; if(From)From->Child=0;
-    }
-    if (rev & LA_BLOCK){
+    }elif (rev & LA_BLOCK){
         lstAppendItem(&MAIN.CurrentWindow->PendingOperators, a);
         a->State = rev;
     }else la_DestroyOperator(&a, 0, 0);

+ 1 - 1
resources/la_nodes_basic.c

@@ -1058,7 +1058,7 @@ void laui_AddNode(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *
     laColumn* c=laFirstColumn(uil),*cl,*cr; laSplitColumn(uil,c,0.4); cl=laLeftColumn(c,4); cr=laRightColumn(c,0);
     laShowItemFull(uil,cl,0,"la.node_categories",LA_WIDGET_COLLECTION,"feedback=NONE;",0,0);
     laUiItem* g=laMakeEmptyGroup(uil,cr,"Nodes",0); laUiList* gu=g->Page; laColumn* gc=laFirstColumn(gu); g->Flags|=LA_UI_FLAGS_NO_DECAL|LA_UI_FLAGS_NO_GAP;
-    laShowItemFull(gu,gc,0,"la.node_categories",LA_WIDGET_COLLECTION_SINGLE,0,laui_NodeCategory,0)->Flags|=LA_UI_FLAGS_NO_DECAL;
+    laShowItemFull(gu,gc,0,"la.node_categories",LA_WIDGET_COLLECTION_SINGLE,0,laui_NodeCategory,0)->Flags|=LA_UI_FLAGS_NO_DECAL|LA_UI_FLAGS_NO_GAP;
 }
 
 laNodeRack* la_NewRackAfter(laRackPage* parent,laNodeRack* rr){

+ 3 - 3
resources/la_operators.c

@@ -2077,12 +2077,12 @@ int la_ScrollPanel(laGeneralUiExtraData*ex, laPanel*p, laEvent* e){
                     if(uuil->AllowScale){ if((ran=laScaleUiList(uuil, 1.0f-dir*0.1, upui->L, upui->R, upui->U, upui->B))){ laRecalcCurrentPanel(); break;} }
                     else{ if((ran=laPanUiListAuto(uuil, 0, dir*MAIN.ScrollingSpeed*LA_RH,
                                 uuil->L, upui->R-(uuil->ScrollerShownV?(LA_SCROLL_W+LA_M):0),
-                                uuil->U, upui->B-LA_M-(uuil->ScrollerShownH?(LA_SCROLL_W+LA_M):0)))) break; }
+                                uuil->U, upui->B-(uuil->ScrollerShownH?(LA_SCROLL_W+LA_M):0)))) break; }
                     lip=lip->Item.pPrev; uuil=lip->uil;  upui=lip->Item.pPrev?((laUiListRecord*)lip->Item.pPrev)->pui:0; 
                 }
                 if(!ran){
                     laUiList* pan_uil=p->MenuRefer?p->MenuRefer:&p->UI;
-                    laPanUiListAuto(pan_uil, 0, dir*MAIN.ScrollingSpeed*LA_RH, 0, p->W, pan_uil->U, p->H-LA_M);
+                    laPanUiListAuto(pan_uil, 0, dir*MAIN.ScrollingSpeed*LA_RH, 0, p->W, pan_uil->U, p->H);
                 }
                 laRedrawCurrentPanel();
                 ret= 1;
@@ -2162,7 +2162,7 @@ int OPMOD_Panel(laOperator *a, laEvent *e){
     }
     if (ui && !a->Child && ui->Type->OperatorType && !la_UiOperatorExists(ui)){
         laSetOperatorLocalizer(p);
-        if (laInvokeUiP(a, ui->Type->OperatorType, e, ui, &Locals, 0) >= 0){ laRetriggerOperators(); }
+        if (!(laInvokeUiP(a, ui->Type->OperatorType, e, ui, &Locals, 0) & LA_FINISH)){ laRetriggerOperators(); }
         lstClearPointer(&Locals);
         //return LA_RUNNING;
     }

+ 1 - 1
resources/la_templates.c

@@ -1240,7 +1240,7 @@ void laui_NodeRack(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn
 void laui_RackPage(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context){
     laColumn* c=laFirstColumn(uil); laRackPage* r=This->EndInstance;
     laUiItem* b=laOnConditionThat(uil,c,laPropExpression(This,"has_rack"));{
-        laUiItem* g=laMakeGroup(uil,c,"Racks",0);{ g->Flags|=/*LA_UI_FLAGS_NO_GAP|LA_UI_FLAGS_NO_DECAL|*/LA_UI_FLAGS_NODE_CONTAINER;
+        laUiItem* g=laMakeGroup(uil,c,"Racks",0);{ g->Flags|=/*LA_UI_FLAGS_NO_GAP|LA_UI_FLAGS_NO_DECAL|*/LA_UI_FLAGS_NODE_CONTAINER|LA_UI_FLAGS_NO_GAP;
             laUiList* gu=g->Page; laColumn* gc=laFirstColumn(gu); gu->AllowScale=1; g->State=LA_UI_ACTIVE; gu->HeightCoeff=-1; 
             laUiItem* hui=laShowItemFull(gu,gc,This,"racks",0,0,laui_NodeRack,r?r->RackType:0); hui->Expand=15; hui->Flags|=LA_UI_FLAGS_NO_DECAL;
         }

+ 3 - 0
resources/la_widgets.c

@@ -2347,6 +2347,9 @@ int la_ProcessTextEdit(laEvent *e, laStringEdit *se, laUiItem* ui){
 
 int OPINV_UiItem(laOperator *a, laEvent *e){
     laUiItem *ui = a->Instance;
+    if (!laIsInUiItem(ui, a, e->x, e->y)){
+        return LA_FINISHED;
+    }
     a->CustomData = ui->Extra;
     return LA_RUNNING;
 }