Add emoji navigation icons and more ASCII emoji

This commit is contained in:
Aleksandras Kostarevas 2024-06-08 18:59:26 +03:00
parent 412fdd0d0c
commit a93cfd83bd
13 changed files with 325 additions and 43 deletions

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M24.32,96.96Q28.71,94.83 32.96,92.56Q37.21,90.29 41.01,87.44Q48.27,82.09 53.39,76.08Q58.52,70.08 62.36,62.42Q66.21,54.77 69.43,44.66Q71.78,37.34 73.53,32.47Q75.29,27.6 77.38,24.45Q79.47,21.3 82.62,19.25L78.66,12.88Q71.78,17.42 68.22,24.41Q64.67,31.41 60.94,42.1Q58.23,49.86 55.3,56.53Q52.37,63.19 47.86,69.05Q43.36,74.91 35.74,80.41Q32.23,82.9 28.42,85.02Q24.61,87.14 20.65,89.05ZM151.17,139.22L154.25,131.02Q141.06,125.96 127.11,118.67Q113.16,111.39 99.72,102.49Q86.28,93.59 74.38,83.66Q62.47,73.74 53.32,63.3Q44.16,52.87 38.89,42.54L31.13,46.64Q36.69,57.55 46.21,68.47Q55.74,79.38 68,89.74Q80.27,100.11 94.19,109.37Q108.1,118.64 122.68,126.25Q137.25,133.87 151.17,139.22ZM91.92,161.34L100.12,157.46Q94.77,150.79 89.87,143.25Q84.96,135.7 81.85,127.79Q78.73,119.88 78.73,112.19Q78.73,102.6 82.91,96.08Q87.08,89.56 94.15,85.61Q101.22,81.65 110.16,79.93Q119.09,78.21 128.54,78.21Q138.57,78.21 148.5,79.53Q158.42,80.84 168.16,82.97L170.07,74.33Q159.89,72.13 149.45,70.77Q139.01,69.42 128.54,69.42Q117.04,69.42 106.49,71.8Q95.95,74.18 87.71,79.27Q79.47,84.36 74.71,92.53Q69.95,100.69 69.95,112.27Q69.95,120.4 72.98,128.89Q76.02,137.39 81,145.63Q85.99,153.87 91.92,161.34ZM46.87,139.22Q47.53,126.99 51.89,115.2Q56.25,103.4 62.99,92.67Q69.73,81.94 77.49,72.79Q85.03,63.85 94.7,55.28Q104.37,46.71 115.43,40.42Q126.49,34.12 138.21,31.99L136.74,23.35Q123.92,25.62 111.91,32.29Q99.9,38.95 89.5,48.11Q79.1,57.26 70.82,67Q62.91,76.38 55.99,87.25Q49.07,98.13 44.38,110.03Q39.7,121.93 38.38,134.38ZM95.29,164.63Q111.18,164.63 125.1,158.66Q139.01,152.7 149.6,142.11Q160.18,131.53 166.15,117.58Q172.12,103.62 172.12,87.73Q172.12,71.76 166.15,57.85Q160.18,43.93 149.6,33.35Q139.01,22.76 125.1,16.79Q111.18,10.83 95.29,10.83Q79.32,10.83 65.37,16.79Q51.42,22.76 40.83,33.35Q30.25,43.93 24.28,57.85Q18.31,71.76 18.31,87.73Q18.31,103.62 24.28,117.58Q30.25,131.53 40.83,142.11Q51.42,152.7 65.37,158.66Q79.32,164.63 95.29,164.63ZM95.29,155.84Q81.15,155.84 68.77,150.57Q56.4,145.3 47.02,135.92Q37.65,126.55 32.37,114.21Q27.1,101.87 27.1,87.73Q27.1,73.52 32.41,61.18Q37.72,48.84 47.09,39.5Q56.47,30.16 68.85,24.89Q81.22,19.61 95.29,19.61Q109.35,19.61 121.65,24.89Q133.96,30.16 143.33,39.5Q152.71,48.84 158.02,61.18Q163.33,73.52 163.33,87.73Q163.33,101.87 158.06,114.21Q152.78,126.55 143.41,135.92Q134.03,145.3 121.69,150.57Q109.35,155.84 95.29,155.84Z"
android:fillColor="#FFFFFF"/>
</vector>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M45.78,114.46L39.18,109.78Q41.97,105.82 47.35,103.44Q52.73,101.06 58.74,101.06Q60.35,101.06 62.88,101.13Q65.4,101.21 67.82,101.28Q70.24,101.35 71.26,101.35Q76.98,101.35 82.51,100.14Q88.04,98.94 94.59,96.12Q101.15,93.3 109.94,88.46Q117.19,84.51 122.94,82.13Q128.69,79.75 133.7,78.68Q138.72,77.62 143.63,77.62Q146.7,77.62 149.34,77.81Q151.98,77.99 154.69,78.35Q152.78,67 150.95,57.74Q149.12,48.47 147.18,39.76Q145.24,31.04 142.75,21.37Q138.72,20.13 134.33,19.5Q129.93,18.88 126.05,18.88Q120.92,18.88 116.45,20.27Q111.99,21.67 106.57,24.67Q99.1,28.77 93.68,30.78Q88.26,32.8 84.04,33.46Q79.83,34.12 75.88,34.12Q73.31,34.12 69.32,33.82Q65.33,33.53 61.63,33.27Q57.93,33.02 56.25,33.02Q41.45,33.02 32.81,42.1L26.95,36.53Q38.01,24.96 56.25,24.96Q60.13,24.96 65.4,25.51Q70.68,26.06 75.88,26.06Q79.25,26.06 82.91,25.51Q86.57,24.96 91.33,23.17Q96.09,21.37 102.76,17.56Q108.84,14.12 114.44,12.47Q120.04,10.83 126.05,10.83Q131.54,10.83 137.58,11.92Q143.63,13.02 149.85,15.15Q152.2,24.16 154.06,32.1Q155.93,40.05 157.62,48.25Q159.3,56.46 161.02,66.09Q162.74,75.72 164.79,88.1Q159.89,87.22 156.52,86.67Q153.15,86.12 150.22,85.9Q147.29,85.68 143.63,85.68Q139.31,85.68 134.95,86.63Q130.59,87.58 125.5,89.74Q120.41,91.9 113.74,95.57Q104.52,100.62 97.26,103.66Q90.01,106.7 83.79,108.05Q77.56,109.41 71.26,109.41Q68.04,109.41 64.71,109.26Q61.38,109.12 58.74,109.12Q54.64,109.12 51.01,110.62Q47.39,112.12 45.78,114.46ZM47.09,164.63Q45.7,164.63 44.38,163.68Q43.07,162.73 42.77,160.75L25.71,30.16Q25.41,28.26 26.59,26.72Q27.76,25.18 30.1,25.18Q31.57,25.18 32.85,26.13Q34.13,27.08 34.42,29.06L51.49,159.65Q51.78,161.56 50.68,163.1Q49.58,164.63 47.09,164.63Z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M95.15,91.68Q73.92,91.68 58.68,87.9Q43.45,84.11 35.27,76.53Q27.1,68.95 27.1,57.7Q27.1,49.72 31.39,41.47Q35.68,33.23 44.22,26.28Q52.76,19.33 65.48,15.08Q78.19,10.83 95.13,10.83Q112.06,10.83 124.8,15.08Q137.55,19.33 146.08,26.28Q154.61,33.23 158.9,41.47Q163.18,49.72 163.18,57.7Q163.18,68.97 155.02,76.55Q146.85,84.14 131.62,87.91Q116.38,91.68 95.15,91.68ZM95.12,164.63Q80.86,164.63 68.74,161.89Q56.62,159.14 47.65,154.17Q38.68,149.2 33.69,142.53Q28.71,135.85 28.71,128.09Q28.71,126.04 29.04,123.91Q29.37,121.79 30.1,119.66L38.45,123.18Q37.57,125.82 37.57,128.38Q37.57,134.4 41.86,139.54Q46.15,144.68 53.92,148.5Q61.69,152.32 72.2,154.45Q82.71,156.58 95.15,156.58Q107.59,156.58 118.1,154.45Q128.6,152.32 136.37,148.5Q144.14,144.68 148.42,139.54Q152.71,134.4 152.71,128.38Q152.71,125.82 151.83,123.18L160.18,119.66Q160.91,121.79 161.24,123.91Q161.57,126.04 161.57,128.09Q161.57,135.85 156.58,142.53Q151.59,149.2 142.61,154.17Q133.63,159.14 121.51,161.89Q109.39,164.63 95.12,164.63ZM95.05,146.62Q85.6,146.62 76.66,145.33Q67.73,144.05 60.38,141.71Q53.03,139.37 48.27,136.22Q36.4,133.14 31.82,127.5Q27.25,121.86 27.25,115.93Q27.25,112.12 29.37,108.9L97.26,141.27L158.57,106.92Q160.69,111.09 160.69,115.93Q160.69,121.84 155.31,127.34Q149.93,132.85 140.62,137.2Q131.32,141.56 119.58,144.09Q107.83,146.62 95.05,146.62ZM98.36,145.44Q83.87,138.26 72.03,132.67Q60.2,127.08 49.11,122.01Q38.01,116.93 25.59,111.45Q22.63,110.12 22.63,107.23Q22.63,105.45 23.82,103.97L33.98,91.39L39.26,94.83L30.03,105.89Q29.74,106.32 29.81,106.77Q29.88,107.21 30.39,107.43Q45.41,113.73 61.52,121.13Q77.64,128.53 94.85,137.53Q96.46,138.34 98,137.46Q111.11,130.28 125.5,122.67Q139.89,115.05 156.59,106.63Q157.54,106.26 156.96,105.38L151.1,95.27L156.44,93.37L162.74,104.36Q163.4,105.53 163.4,106.8Q163.4,109.41 160.69,110.8Q144.29,118.78 129.05,127.17Q113.82,135.56 98.36,145.44ZM92.55,118.86Q78.88,118.86 67.67,116.4Q56.47,113.95 49.36,110.87Q40.87,107.21 37.32,102.39Q33.76,97.57 33.76,89.41L46.65,100.62L71.41,102.45L82.18,109.78L106.86,103.4L130.59,104.94L142.6,98.06L153.08,95.93Q151.24,100.84 147.25,104.36Q143.26,107.87 136.52,110.87Q129.42,114.02 118.11,116.44Q106.81,118.86 92.55,118.86ZM83.35,113.88Q77.34,113.88 73.68,112.05Q70.02,110.21 67.38,105.53Q60.57,106.77 55.66,106.77Q47.31,106.77 42.56,103.82Q37.8,100.87 35.89,93.81Q28.12,92.56 23.77,89.41Q19.41,86.26 19.41,81.72Q19.41,77.62 22.96,73.86Q26.52,70.1 32.37,68.03L34.79,75.06Q29.88,76.96 28.27,78.43Q26.66,79.89 26.66,81.28Q26.66,83.02 30.06,84.57Q33.47,86.12 41.16,87.88Q42.41,94.25 46.36,97.18Q50.32,100.11 58.37,100.11Q61.16,100.11 64.53,99.78Q67.9,99.45 71.85,98.79Q73.39,101.94 74.67,103.63Q75.95,105.33 77.92,105.94Q79.89,106.55 83.35,106.55Q87.82,106.55 92.39,104.65Q96.97,102.74 101.62,100.88Q106.27,99.01 110.89,99.01Q115.59,99.01 120.63,100.58Q125.67,102.16 129.64,102.16Q133.45,102.16 136.01,99.78Q138.57,97.4 140.04,94.03Q141.38,94.32 143.03,94.58Q144.68,94.83 146.41,94.83Q150.07,94.83 153.33,93.44Q156.59,92.06 156.59,89.34Q156.59,88.02 156.26,86.26Q155.93,84.51 155.93,82.6Q155.93,79.17 158.46,76.64Q160.99,74.11 164.28,71.91L163.62,73.89Q163.62,71.03 161.37,69.49Q159.11,67.95 155.64,67.95L155.64,60.56Q162.08,60.56 166.55,64.3Q171.02,68.04 171.02,73.45Q171.02,75.76 169.12,77.31Q167.21,78.87 165.27,80.11Q163.33,81.36 163.33,82.9Q163.33,84.51 163.62,85.86Q163.92,87.22 163.92,89.34Q163.92,94.88 159.24,98.45Q154.56,102.01 148.71,102.01Q145.97,102.01 142.97,101.21Q139.31,109.41 129.56,109.41Q124.22,109.41 119.44,107.87Q114.67,106.33 111.11,106.33Q105.98,106.33 101.62,108.2Q97.26,110.07 92.91,111.97Q88.55,113.88 83.35,113.88ZM62.84,42.91Q61.65,42.32 60.38,41.99Q59.11,41.66 57.71,41.51L58.54,36.39Q62.04,36.83 65.04,38.29ZM78.29,50.38Q77.56,48.62 77.2,46.91Q76.83,45.2 76.68,43.82L81.44,42.76Q81.59,44.08 82.1,45.65Q82.62,47.23 83.13,48.5ZM95.1,83.63Q124.44,83.63 139.42,76.74Q154.39,69.86 154.39,57.7Q154.39,49.72 149.9,42.69Q145.41,35.66 137.34,30.31Q129.27,24.96 118.5,21.92Q107.74,18.88 95.14,18.88Q82.54,18.88 71.78,21.92Q61.01,24.96 52.94,30.31Q44.87,35.66 40.38,42.69Q35.89,49.72 35.89,57.7Q35.89,69.86 50.87,76.74Q65.84,83.63 95.1,83.63ZM85.33,35.95L82.18,31.77Q83.71,30.6 85.26,29.78Q86.8,28.97 88.18,28.48L90.38,32.8Q89.13,33.24 87.74,34.15Q86.35,35.07 85.33,35.95ZM103.78,49.57L98.66,48.76Q98.88,46.87 99.39,45.22Q99.9,43.56 100.56,42.25L105.17,43.71Q104.65,44.87 104.31,46.52Q103.96,48.17 103.78,49.57ZM109.86,35.8Q108.54,35.43 107.23,35.36Q105.91,35.29 104.44,35.29L104.44,30.16Q105.92,30.16 107.86,30.27Q109.79,30.38 111.18,30.89ZM128.18,44.44Q126.71,44.37 125.02,43.97Q123.34,43.56 121.58,42.83L123.49,38Q125.9,39.02 128.61,39.39Z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M111.25,164.63L82.18,153.21L87.38,126.25L87.38,76.67L93.31,77.55L93.31,126.69L89.13,148.89L111.55,157.53L161.21,150.57L156.59,122.45L156.59,77.04L163.77,77.04L163.77,122.23L169.19,155.99ZM54.64,151.23L41.16,116.51L45.19,109.63L60.42,148.89ZM31.05,141.2L25.85,137.75L41.23,113.07L41.23,45.4L46.51,45.4L46.51,116.51ZM57.42,152.62L52.29,48.03L59.84,48.03L65.33,152.11ZM55.15,156.14L21.24,141.86L27.54,109.04L27.54,40.71L34.86,40.71L34.86,109.48L29.81,136.87L56.4,147.79L87.3,143.39L87.6,151.45ZM107.74,161.04L98.22,132.48L102.76,129.7L112.43,159.07ZM90.89,152.77L86.64,149.99L98.44,129.7L98.44,80.7L103.56,80.7L103.56,132.48ZM110.74,162.14L107.37,83.99L113.16,83.99L116.89,161.78ZM53.91,53.82L43.58,47.08L34.35,46.2L27.54,40.71L107.08,31.85L112.65,36.83L128.54,37.71L128.54,44.88ZM50.83,43.64Q48.56,36.75 48.56,30.67Q48.56,21.74 53.06,16.28Q57.57,10.83 65.62,10.83Q73.9,10.83 79.39,17.12Q84.89,23.42 86.57,36.17L79.17,37.71Q77.42,27.3 74.01,22.8Q70.6,18.3 65.4,18.3Q61.16,18.3 58.67,21.88Q56.18,25.47 56.18,31.41Q56.18,36.17 57.93,41.88ZM109.28,87.66L101.07,82.09L90.89,81.06L87.38,76.67L145.97,69.57L163.77,74.33L163.77,79.75ZM66.36,48.4Q64.09,41.51 64.09,35.36Q64.09,26.57 68.63,21.12Q73.17,15.66 81.15,15.66Q89.43,15.66 94.92,21.96Q100.41,28.26 102.1,40.93L94.63,42.54Q92.94,32.14 89.54,27.63Q86.13,23.13 80.93,23.13Q76.68,23.13 74.19,26.72Q71.7,30.31 71.7,36.24Q71.7,41 73.46,46.71ZM101.37,79.6Q99.54,73.89 99.54,68.69Q99.54,61.29 103.31,56.78Q107.08,52.28 113.74,52.28Q120.7,52.28 125.5,57.44Q130.3,62.61 131.69,73.23L125.02,74.69Q123.63,65.98 120.74,62.24Q117.85,58.51 113.52,58.51Q110.01,58.51 107.96,61.44Q105.91,64.37 105.91,69.35Q105.91,73.52 107.37,78.13ZM114.26,83.55Q112.43,77.84 112.43,72.79Q112.43,65.39 116.2,60.85Q119.97,56.31 126.63,56.31Q133.59,56.31 138.13,61.55Q142.67,66.78 144.07,77.33L137.91,78.65Q136.45,70 133.59,66.27Q130.74,62.53 126.42,62.53Q122.83,62.53 120.78,65.5Q118.72,68.47 118.72,73.45Q118.72,75.35 119.09,77.59Q119.46,79.82 120.19,82.16ZM120.48,61.8L120.48,37.71L128.54,37.71L128.54,61.44Z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M126.78,164.63Q115.65,164.63 104.48,159.58Q93.31,154.53 83.5,145L42.7,105.6Q37.65,100.62 37.65,94.47Q37.65,90.07 40.28,86.34Q42.92,82.6 46.95,81.14L44.75,78.94Q40.72,74.91 40.72,69.57Q40.72,65.02 43.43,61.44Q46.14,57.85 50.39,56.6L48.85,55.06Q45.04,51.25 45.04,45.76Q45.04,40.12 49.03,35.95Q53.03,31.77 58.67,31.77Q64.16,31.77 68.11,35.73L70.02,37.63Q71.34,33.31 75.18,30.78Q79.03,28.26 83.57,28.26Q86.13,28.26 88.51,29.1Q90.89,29.94 92.72,31.85L126.49,65.61Q126.12,63.34 125.9,61.29Q125.68,59.24 125.68,57.33Q125.68,51.47 127.99,46.53Q130.3,41.59 134.33,38.58Q138.35,35.58 143.55,35.58Q148.46,35.58 151.68,38.8Q154.91,42.03 154.91,46.57Q154.91,49.2 154.25,51.36Q153.59,53.53 153.59,56.09Q153.59,61.14 156.15,68.83Q158.71,76.52 164.13,89.05L166.26,93.96Q168.6,99.45 169.81,104.43Q171.02,109.41 171.02,114.39Q171.02,125.38 167.8,134.57Q164.57,143.76 158.68,150.5Q152.78,157.24 144.69,160.94Q136.6,164.63 126.78,164.63ZM39.55,140.24Q32.23,139 26.73,133.8Q21.24,128.6 19.41,121.27L26.51,119.52Q27.83,124.79 31.71,128.45Q35.59,132.11 40.79,133.07ZM46.73,127.5Q41.38,126.55 37.39,122.78Q33.4,119 32.15,113.73L39.33,112.05Q40.06,115.2 42.44,117.43Q44.82,119.66 47.97,120.25ZM127,156.58Q134.91,156.58 141.39,153.54Q147.87,150.5 152.53,144.89Q157.18,139.29 159.7,131.56Q162.23,123.84 162.23,114.39Q162.23,109.85 161.35,105.78Q160.47,101.72 158.71,97.69L156.59,92.78Q150.8,79.31 147.98,70.74Q145.17,62.17 145.17,56.09Q145.17,53.75 145.79,51Q146.41,48.25 146.41,47.15Q146.41,45.91 145.42,45.03Q144.43,44.15 142.97,44.15Q140.18,44.15 138.21,45.87Q136.23,47.59 135.17,50.38Q134.11,53.16 134.11,56.38Q134.11,57.77 134.22,59.35Q134.33,60.92 134.69,63.56L136.67,77.4Q129.27,88.75 129.27,99.52Q129.27,104.94 131.21,110.07Q133.15,115.2 136.96,119.81L130.52,125.23Q120.78,113.73 120.78,99.52Q120.78,88.61 126.63,77.7L87.23,38.29Q85.47,36.53 82.98,36.53Q80.71,36.53 78.92,38.11Q77.12,39.68 77.12,42.03Q77.12,44.74 79.03,46.64L110.52,78.13L105.03,83.55L63.13,41.66Q61.23,39.76 58.89,39.76Q56.62,39.76 54.86,41.55Q53.1,43.34 53.1,45.76Q53.1,48.33 54.86,50.08L96.68,91.98L91.26,97.4L58.67,64.88Q57.93,64.07 56.94,63.85Q55.96,63.63 55,63.63Q52.51,63.63 50.76,65.39Q49,67.15 49,69.64Q49,72.06 50.76,73.96L82.69,105.97L77.27,111.39L55.44,89.63Q54.05,88.24 51.85,88.24Q49.58,88.24 47.75,89.93Q45.92,91.61 45.92,93.88Q45.92,96.96 49.22,100.18L89.35,139Q98.22,147.5 107.92,152.04Q117.63,156.58 127,156.58ZM112.79,38.58Q111.55,35.58 108.8,33.79Q106.05,31.99 102.83,31.99L102.83,24.67Q108.25,24.67 112.83,27.67Q117.41,30.67 119.53,35.65ZM123.34,28.99Q121.14,24.01 116.71,21.08Q112.28,18.15 106.93,18.15L106.93,10.83Q114.4,10.83 120.7,14.96Q127,19.1 130.08,26.06Z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M95.21,164.63Q78.51,164.63 64.34,158.88Q50.17,153.13 39.7,142.73Q29.22,132.33 23.4,118.31Q17.58,104.28 17.58,87.73Q17.58,71.18 23.4,57.15Q29.22,43.12 39.7,32.72Q50.17,22.32 64.34,16.57Q78.51,10.83 95.21,10.83Q111.91,10.83 126.09,16.57Q140.26,22.32 150.73,32.72Q161.21,43.12 167.03,57.15Q172.85,71.18 172.85,87.73Q172.85,104.28 167.03,118.31Q161.21,132.33 150.73,142.73Q140.26,153.13 126.09,158.88Q111.91,164.63 95.21,164.63ZM95.21,135.19Q106.2,135.19 115.72,131.24Q105.25,125.16 95.21,125.16Q85.18,125.16 74.71,131.24Q84.23,135.19 95.21,135.19ZM95.21,140.32Q85.69,140.32 76.57,137.24Q67.46,134.17 60.13,129Q52.81,123.84 48.45,117.61Q44.09,111.39 44.09,105.09Q44.09,101.21 45.85,99.63Q47.61,98.06 50.54,98.06Q52.37,98.06 55.19,98.5Q58.01,98.94 61.67,99.67Q68.19,100.91 76.83,102.05Q85.47,103.18 95.21,103.18Q105.03,103.18 113.67,102.05Q122.31,100.91 128.76,99.67Q132.42,98.94 135.24,98.5Q138.06,98.06 139.89,98.06Q142.82,98.06 144.58,99.63Q146.34,101.21 146.34,105.09Q146.34,111.39 141.98,117.61Q137.62,123.84 130.3,129Q122.97,134.17 113.85,137.24Q104.74,140.32 95.21,140.32ZM95.21,115.63Q102.1,115.63 109.94,115.09Q117.77,114.54 125.61,113.33Q133.45,112.12 140.26,110.29L140.26,105.09Q140.26,103.99 139.38,103.66Q138.5,103.33 137.55,103.55Q131.32,105.01 123.81,106.08Q116.31,107.14 108.87,107.72Q101.44,108.31 95.21,108.31Q89.06,108.31 81.59,107.72Q74.12,107.14 66.65,106.08Q59.18,105.01 52.88,103.55Q51.93,103.33 51.05,103.66Q50.17,103.99 50.17,105.09L50.17,110.29Q56.98,112.12 64.82,113.33Q72.66,114.54 80.53,115.09Q88.4,115.63 95.21,115.63ZM69.43,83.7Q65.26,83.7 62.29,80.15Q59.33,76.6 59.33,71.62Q59.33,66.64 62.29,63.08Q65.26,59.53 69.43,59.53Q73.53,59.53 76.54,63.08Q79.54,66.64 79.54,71.62Q79.54,76.52 76.57,80.11Q73.61,83.7 69.43,83.7ZM95.21,156.58Q110.08,156.58 122.64,151.41Q135.2,146.25 144.47,136.98Q153.73,127.72 158.9,115.12Q164.06,102.52 164.06,87.73Q164.06,72.86 158.9,60.3Q153.73,47.74 144.47,38.47Q135.2,29.21 122.64,24.05Q110.08,18.88 95.21,18.88Q80.42,18.88 67.86,24.05Q55.3,29.21 46,38.47Q36.69,47.74 31.53,60.3Q26.37,72.86 26.37,87.73Q26.37,102.52 31.53,115.12Q36.69,127.72 45.96,136.98Q55.22,146.25 67.82,151.41Q80.42,156.58 95.21,156.58ZM121,83.7Q116.82,83.7 113.85,80.15Q110.89,76.6 110.89,71.62Q110.89,66.64 113.85,63.08Q116.82,59.53 121,59.53Q125.1,59.53 128.1,63.08Q131.1,66.64 131.1,71.62Q131.1,76.52 128.14,80.11Q125.17,83.7 121,83.7Z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M95.21,164.63Q79.32,164.63 65.37,158.66Q51.42,152.7 40.83,142.11Q30.25,131.53 24.28,117.58Q18.31,103.62 18.31,87.66Q18.31,71.76 24.28,57.85Q30.25,43.93 40.83,33.35Q51.42,22.76 65.37,16.79Q79.32,10.83 95.21,10.83Q111.18,10.83 125.1,16.79Q139.01,22.76 149.6,33.35Q160.18,43.93 166.15,57.85Q172.12,71.76 172.12,87.66Q172.12,103.62 166.15,117.58Q160.18,131.53 149.6,142.11Q139.01,152.7 125.1,158.66Q111.18,164.63 95.21,164.63ZM95.21,133.21Q104.66,133.21 112.9,129.66Q121.14,126.11 127.4,119.88Q133.67,113.66 137.18,105.38Q140.7,97.1 140.7,87.66Q140.7,78.28 137.18,70.04Q133.67,61.8 127.4,55.54Q121.14,49.28 112.9,45.76Q104.66,42.25 95.21,42.25Q85.77,42.25 77.53,45.76Q69.29,49.28 63.02,55.54Q56.76,61.8 53.25,70.04Q49.73,78.28 49.73,87.66Q49.73,97.1 53.25,105.38Q56.76,113.66 63.02,119.88Q69.29,126.11 77.53,129.66Q85.77,133.21 95.21,133.21Z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="190.44dp"
android:height="176dp"
android:viewportWidth="190.44"
android:viewportHeight="176">
<path
android:pathData="M41.16,150.06L32.88,141.78Q36.4,136.22 41.23,128.78Q46.07,121.35 51.63,113.07Q57.2,104.79 62.91,96.96Q78.95,74.91 93.2,58.69Q107.45,42.47 119.64,31.85Q131.83,21.23 141.76,16.03Q151.68,10.83 159.15,10.83Q165.23,10.83 168.68,14.27Q172.12,17.71 172.12,23.79Q172.12,31.26 166.92,41.18Q161.72,51.11 151.1,63.3Q140.48,75.5 124.25,89.74Q108.03,103.99 85.99,120.03Q78.15,125.74 69.87,131.31Q61.6,136.87 54.16,141.71Q46.73,146.54 41.16,150.06ZM47.83,127.87L18.31,110.14L25.63,99.81L61.96,107.36ZM72.95,164.63L55.22,135.12L75.73,120.98L83.28,157.31ZM41.6,48.47L36.99,44.96L41.67,38.8L46.36,42.32ZM138.13,145.96L134.62,141.34L140.77,136.58L144.29,141.27ZM59.47,58.65L54.93,54.92L59.62,49.13L64.16,52.87ZM128.17,128.01L124.44,123.47L130.22,118.78L133.96,123.33ZM76.1,68.39L71.48,64.8L75.95,59.02L80.57,62.68ZM118.29,111.46L114.7,106.85L120.41,102.38L124.07,106.99ZM106.86,96.23Q105.47,96.23 104.52,94.83Q103.56,93.44 103.56,91.54Q103.56,89.63 104.52,88.24Q105.47,86.85 106.86,86.85Q108.25,86.85 109.2,88.24Q110.16,89.63 110.16,91.54ZM87.45,72.86L77.78,62.31L18.31,30.75L32.01,15.51L118.94,40.2L111.33,46.86L35.23,24.01L30.69,29.06L83.06,55.58L93.02,66.49ZM152.2,164.63L120.63,105.16L110.08,95.49L116.45,89.93L127.37,99.89L153.88,152.26L158.93,147.71L136.08,71.62L142.75,64L167.43,150.94ZM50.1,134.24Q59.69,128.09 68.88,121.57Q78.08,115.05 86.94,108.27Q95.8,101.5 104.19,94.47Q112.57,87.44 120.48,80.26Q134.4,67.59 144.32,56.78Q154.25,45.98 159.52,37.6Q164.79,29.21 164.79,23.79Q164.79,21.01 163.37,19.58Q161.94,18.15 159.15,18.15Q154.03,18.15 145.6,23.42Q137.18,28.7 126.23,38.58Q115.28,48.47 102.68,62.46Q93.16,73.01 83.71,84.73Q74.27,96.45 65.44,108.64Q56.62,120.83 48.71,132.99ZM119.09,85.61Q117.7,85.61 116.75,84.21Q115.79,82.82 115.79,80.92Q115.79,78.94 116.75,77.59Q117.7,76.23 119.09,76.23Q120.48,76.23 121.43,77.62Q122.39,79.01 122.39,80.92ZM130.15,75.28Q128.76,75.28 127.81,73.89Q126.85,72.5 126.85,70.59Q126.85,68.69 127.81,67.29Q128.76,65.9 130.15,65.9Q131.54,65.9 132.49,67.29Q133.45,68.69 133.45,70.59ZM101.88,41.29L89.28,33.75Q89.28,31.04 90.45,28.66Q91.62,26.28 94.77,23.35L102.68,15.95Q106.35,16.68 109.97,20.31Q113.6,23.94 114.33,27.82ZM149.34,93.66L141.8,81.06L155.27,68.61Q159.15,69.35 162.78,72.97Q166.41,76.6 167.14,80.26L159.74,88.17Q156.81,91.32 154.43,92.49Q152.05,93.66 149.34,93.66ZM140.84,64.29Q139.45,64.29 138.5,62.9Q137.55,61.51 137.55,59.6Q137.55,57.7 138.5,56.31Q139.45,54.92 140.84,54.92Q142.24,54.92 143.19,56.31Q144.14,57.7 144.14,59.6ZM158.13,48.4L154.91,45.47Q156.66,43.64 157.43,41.7Q158.2,39.76 158.2,37.85Q158.2,34.7 156.22,31.74Q154.25,28.77 151.24,26.83Q148.24,24.89 145.09,24.89Q143.19,24.89 141.25,25.66Q139.31,26.43 137.47,28.18L134.54,24.96Q137.47,22.25 140.51,21.04Q143.55,19.83 146.48,19.83Q150.8,19.83 154.65,22.18Q158.5,24.52 160.88,28.33Q163.26,32.14 163.26,36.46Q163.26,39.39 162.05,42.43Q160.84,45.47 158.13,48.4Z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -19124,7 +19124,7 @@
, "ios_version": "6.0" , "ios_version": "6.0"
} }
, { , {
"emoji": "✴️" "emoji": "✴️"
, "description": "eight-pointed star" , "description": "eight-pointed star"
, "category": "Symbols" , "category": "Symbols"
, "aliases": [ , "aliases": [
@ -23475,25 +23475,193 @@
, "ios_version": "12.1" , "ios_version": "12.1"
}, },
{ {
"emoji": ":)" "emoji": ":)",
, "description": "smiley" "description": "smiley face",
, "category": "ASCII" "category": "ASCII",
, "aliases": [ "aliases": [],
] "tags": [],
, "tags": [ "unicode_version": "",
] "ios_version": ""
, "unicode_version": "" },
, "ios_version": "" {
"emoji": ":(",
"description": "sad face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ":D",
"description": "big smile",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ";)",
"description": "winking face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ":P",
"description": "sticking out tongue",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ":O",
"description": "surprised face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "XD",
"description": "laughing face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ":3",
"description": "cat face",
"category": "ASCII",
"aliases": ["catface", "meow"],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ":-/",
"description": "skeptical face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ":'(",
"description": "crying face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ">:(",
"description": "angry face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "<3",
"description": "heart",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "O_O",
"description": "wide eyes",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "-_-",
"description": "disappointed face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ">.<",
"description": "frustrated face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "^_^",
"description": "happy face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "T_T",
"description": "crying face",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": ">:D",
"description": "evil smile",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "B)",
"description": "cool face with sunglasses",
"category": "ASCII",
"aliases": [],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "(╯°□°)╯︵ ┻━┻",
"description": "tableflip",
"category": "ASCII",
"aliases": ["tableflip"],
"tags": [],
"unicode_version": "",
"ios_version": ""
},
{
"emoji": "¯\\_(ツ)_/¯",
"description": "shruggie",
"category": "ASCII",
"aliases": ["shruggie", "idk"],
"tags": [],
"unicode_version": "",
"ios_version": ""
} }
, {
"emoji": ":3"
, "description": "cat face"
, "category": "ASCII"
, "aliases": [
]
, "tags": [
]
, "unicode_version": ""
, "ios_version": ""
}
] ]

View File

@ -2,18 +2,12 @@ package org.futo.inputmethod.latin.uix.actions
import android.content.Context import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.text.InputType
import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityEvent
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection
import android.widget.EditText
import android.widget.TextView import android.widget.TextView
import androidx.annotation.UiThread import androidx.annotation.UiThread
import androidx.appcompat.widget.AppCompatEditText
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas
import androidx.compose.foundation.background import androidx.compose.foundation.background
@ -31,6 +25,7 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@ -66,8 +61,11 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.clearAndSetSemantics import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.role
import androidx.compose.ui.semantics.text import androidx.compose.ui.semantics.text
import androidx.compose.ui.semantics.toggleableState
import androidx.compose.ui.state.ToggleableState
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntOffset
@ -94,7 +92,6 @@ import org.futo.inputmethod.latin.uix.ActionWindow
import org.futo.inputmethod.latin.uix.AutoFitText import org.futo.inputmethod.latin.uix.AutoFitText
import org.futo.inputmethod.latin.uix.EmojiTracker.getRecentEmojis import org.futo.inputmethod.latin.uix.EmojiTracker.getRecentEmojis
import org.futo.inputmethod.latin.uix.EmojiTracker.useEmoji import org.futo.inputmethod.latin.uix.EmojiTracker.useEmoji
import org.futo.inputmethod.latin.uix.LocalManager
import org.futo.inputmethod.latin.uix.PersistentActionState import org.futo.inputmethod.latin.uix.PersistentActionState
import org.futo.inputmethod.latin.uix.actions.emoji.EmojiItem import org.futo.inputmethod.latin.uix.actions.emoji.EmojiItem
import org.futo.inputmethod.latin.uix.actions.emoji.EmojiView import org.futo.inputmethod.latin.uix.actions.emoji.EmojiView
@ -435,7 +432,6 @@ fun EmojiNavigation(
} }
EmojiCategoriesContainer(Modifier.weight(1.0f), categories, goToCategory, activeCategoryItem) EmojiCategoriesContainer(Modifier.weight(1.0f), categories, goToCategory, activeCategoryItem)
//CustomEditTextView()
if(showKeys) { if(showKeys) {
BackspaceKey(onBackspace) BackspaceKey(onBackspace)
@ -444,6 +440,19 @@ fun EmojiNavigation(
} }
} }
val iconMap = mapOf(
"Recent" to R.drawable.ic_emoji_recents_activated_lxx_dark,
"Smileys & Emotion" to R.drawable.smileys_and_emotion,
"People & Body" to R.drawable.people_and_body,
"Animals & Nature" to R.drawable.animals_and_nature,
"Food & Drink" to R.drawable.food_and_drink,
"Travel & Places" to R.drawable.travel_and_places,
"Activities" to R.drawable.activities,
"Objects" to R.drawable.objects,
"Symbols" to R.drawable.symbols,
"Flags" to R.drawable.flags,
"ASCII" to R.drawable.ic_emoji_emoticons_activated_lxx_dark,
)
@Composable @Composable
private fun EmojiCategoriesContainer( private fun EmojiCategoriesContainer(
modifier: Modifier, modifier: Modifier,
@ -471,20 +480,33 @@ private fun EmojiCategoriesContainer(
) )
} else { } else {
Modifier Modifier
}.clearAndSetSemantics {
contentDescription = "Jump to ${it.title}"
toggleableState = ToggleableState(it == activeCategoryItem)
} }
) { ) {
AutoFitText( val color = MaterialTheme.colorScheme.onBackground.copy(
it.title, alpha = if (it == activeCategoryItem) {
style = Typography.labelSmall.copy( 1.0f
color = MaterialTheme.colorScheme.onBackground.copy( } else {
alpha = if (it == activeCategoryItem) { 0.6f
1.0f }
} else {
0.6f
}
)
)
) )
val icon = iconMap[it.title]
if(icon != null) {
Icon(
painterResource(id = icon),
contentDescription = null,
tint = color,
modifier = Modifier.size(24.dp)
)
} else {
AutoFitText(
it.title,
style = Typography.labelSmall.copy(color = color)
)
}
} }
} }
} }
@ -746,7 +768,7 @@ fun EmojiGridPreview() {
onExit = {}, onExit = {},
onSpace = {}, onSpace = {},
emojis = listOf("😀", "😃", "😄", "😁", "😆", "😅", "😂", "🤣", "😊", "😇").map { emojis = listOf("😀", "😃", "😄", "😁", "😆", "😅", "😂", "🤣", "😊", "😇").map {
EmojiItem(emoji = it, description = "", category = "Category", skinTones = false, aliases = listOf(), tags = listOf()) EmojiItem(emoji = it, description = "", category = "Smileys & Emotion", skinTones = false, aliases = listOf(), tags = listOf())
}, },
keyboardShown = false, keyboardShown = false,
emojiMap = hashMapOf(), emojiMap = hashMapOf(),

View File

@ -125,7 +125,13 @@ class EmojiView @JvmOverloads constructor(
if (emoji is Spanned) { if (emoji is Spanned) {
createStaticLayout(emoji, width).draw(this) createStaticLayout(emoji, width).draw(this)
} else { } else {
val textWidth = textPaint.measureText(emoji, 0, emoji.length) var textWidth = textPaint.measureText(emoji, 0, emoji.length)
if(textWidth > width) {
scale(width / textWidth, 1.0f)
textWidth = width.toFloat()
} else {
scale(1.0f, 1.0f)
}
drawText( drawText(
emoji, emoji,
/* start = */ 0, /* start = */ 0,

View File

@ -52,12 +52,17 @@ fun CreditsScreen(navController: NavHostController = rememberNavController()) {
modifier = Modifier.clickable { modifier = Modifier.clickable {
context.openURI("https://github.com/gkonovalov/android-vad") context.openURI("https://github.com/gkonovalov/android-vad")
}) })
ParagraphText("Some keyboard layouts were taken from the CyanogenMod/LineageOS fork of the LatinIME keyboard. Their fork is Apache-2.0 licensed. Copyright (C) 2015 The CyanogenMod Project", ParagraphText("Some keyboard layouts were taken from the CyanogenMod/LineageOS fork of the LatinIME keyboard. Their fork is Apache-2.0 licensed. Copyright (C) 2015 The CyanogenMod Project",
modifier = Modifier.clickable { modifier = Modifier.clickable {
context.openURI("https://github.com/LineageOS/android_packages_inputmethods_LatinIME") context.openURI("https://github.com/LineageOS/android_packages_inputmethods_LatinIME")
}) })
ParagraphText("Emoji icons are taken from the Noto Emoji font, licensed under OFL.",
modifier = Modifier.clickable {
context.openURI("https://fonts.google.com/noto/specimen/Noto+Emoji")
})
Spacer(modifier = Modifier.height(16.dp)) Spacer(modifier = Modifier.height(16.dp))
ParagraphText("Note: The authors listed above are not affiliated with us and do not endorse or promote us") ParagraphText("Note: The authors listed above are not affiliated with us and do not endorse or promote us")
} }