diff --git a/bin/gen/licon.py b/bin/gen/licon.py index 1c227617b503..068d981cfa8a 100755 --- a/bin/gen/licon.py +++ b/bin/gen/licon.py @@ -83,7 +83,7 @@ def main(): gen_fonts() - codes = parse_codes() + codes = read_write_codes() gen_sources(codes) @@ -110,23 +110,33 @@ def dash_camel(s): return ''.join([w.title() for w in s.split('-')]) -def parse_codes(): +def read_write_codes(): unnamed_re = re.compile(r'$|uni[a-f0-9]{4}', re.IGNORECASE) codes = {} warnings = [] + corrected = [] + lines = [] with open('lichess.sfd', 'r') as f: lines = f.readlines() name = None + n = 0 for line in lines: if line.startswith('StartChar:'): name = dash_camel(line.split(': ')[1].strip()) elif line.startswith('Encoding:') and name is not None: code_point = int(line.split(' ')[1]) if code_point >= 0xe000 and code_point <= 0xefff: + n += 1 + code_point = 57343 + n + line = f'Encoding: {code_point} {code_point} {n}\n' if unnamed_re.match(name): warnings.append(f' Unnamed glyph "{name}" at code point {code_point}\n') - continue - codes[name] = code_point + else: + codes[name] = code_point + corrected.append(line) + if corrected != lines: + with open('lichess.sfd', 'w') as f: + f.write(''.join(corrected)) print('' if not warnings else f'\nWarnings:\n{"".join(warnings)}') return dict(sorted(codes.items(), key=lambda x: x[1])) diff --git a/modules/ui/src/main/Icon.scala b/modules/ui/src/main/Icon.scala index 2466a9bd7d2d..c103fba0a836 100644 --- a/modules/ui/src/main/Icon.scala +++ b/modules/ui/src/main/Icon.scala @@ -19,128 +19,127 @@ object Icon: given scalalib.Iso.StringIso[Icon] = scalalib.Iso.string(apply, value) import play.api.libs.json.{ Writes, JsString } given iconWrites: Writes[Icon] = icon => JsString(Icon.value(icon)) - val Tools: Icon = "" // e000 - val Bullseye: Icon = "" // e001 - val Agent: Icon = "" // e002 - val Mic: Icon = "" // e003 - val BarChart: Icon = "" // e004 - val InfoCircle: Icon = "" // e005 - val ScreenDesktop: Icon = "" // e006 - val PhoneMobile: Icon = "" // e007 - val Multiboard: Icon = "" // e008 - val HeartOutline: Icon = "" // e009 - val FlagRacingKings: Icon = "" // e00a - val Crazyhouse: Icon = "" // e00b - val Tshirt: Icon = "" // e00c - val Heart: Icon = "" // e00d - val RadioTower: Icon = "" // e00e - val BellOutline: Icon = "" // e00f - val Disc: Icon = "" // e010 - val Wings: Icon = "" // e011 - val DiscOutline: Icon = "" // e012 - val Handset: Icon = "" // e013 - val ArrowThruApple: Icon = "" // e014 - val CautionTriangle: Icon = "" // e015 - val Link: Icon = "" // e016 - val Rabbit: Icon = "" // e017 - val NodeBranching: Icon = "" // e018 - val Gear: Icon = "" // e019 - val Reload: Icon = "" // e01a - val DieSix: Icon = "" // e01b - val FlagKingHill: Icon = "" // e01c - val FlameBlitz: Icon = "" // e01d - val Feather: Icon = "" // e01e - val Turtle: Icon = "" // e01f - val FlagChessboard: Icon = "" // e020 - val ArcheryTarget: Icon = "" // e021 - val ThreeCheckStack: Icon = "" // e022 - val UploadCloud: Icon = "" // e023 - val ExternalArrow: Icon = "" // e024 - val AnalogTv: Icon = "" // e025 - val RssFeed: Icon = "" // e026 - val StudyBoard: Icon = "" // e027 - val Shield: Icon = "" // e028 - val InkQuill: Icon = "" // e029 - val Target: Icon = "" // e02a - val Crown: Icon = "" // e02b - val LineGraph: Icon = "" // e02c - val GraduateCap: Icon = "" // e02d - val PaperAirplane: Icon = "" // e02e - val ZoomIn: Icon = "" // e02f - val Expand: Icon = "" // e030 - val Atom: Icon = "" // e031 - val List: Icon = "" // e032 - val Antichess: Icon = "" // e033 - val Microscope: Icon = "" // e034 - val ChasingArrows: Icon = "" // e035 - val CrownElite: Icon = "" // e036 - val Funnel: Icon = "" // e037 - val Checkmark: Icon = "" // e038 - val InternalArrow: Icon = "" // e039 - val PlayTriangle: Icon = "" // e03a - val GreaterThan: Icon = "" // e03b - val LessThan: Icon = "" // e03c - val DiscBig: Icon = "" // e03d - val DiscBigOutline: Icon = "" // e03e - val X: Icon = "" // e03f - val ArrowDownRight: Icon = "" // e040 - val ArrowUpRight: Icon = "" // e041 - val PlusButton: Icon = "" // e042 - val MinusButton: Icon = "" // e043 - val Fire: Icon = "" // e044 - val DownTriangle: Icon = "" // e045 - val UpTriangle: Icon = "" // e046 - val Bullet: Icon = "" // e047 - val Swords: Icon = "" // e048 - val JumpLast: Icon = "" // e049 - val JumpFirst: Icon = "" // e04a - val JumpNext: Icon = "" // e04b - val JumpPrev: Icon = "" // e04c - val Pause: Icon = "" // e04d - val Hamburger: Icon = "" // e04e - val Globe: Icon = "" // e04f - val Book: Icon = "" // e050 - val BarGraph: Icon = "" // e051 - val Keypad: Icon = "" // e052 - val Berserk: Icon = "" // e053 - val Padlock: Icon = "" // e054 - val FlagOutline: Icon = "" // e055 - val BubbleSpeech: Icon = "" // e056 - val BubbleConvo: Icon = "" // e057 - val Envelope: Icon = "" // e058 - val Group: Icon = "" // e059 - val Trophy: Icon = "" // e05a - val ThumbsUp: Icon = "" // e05b - val Back: Icon = "" // e05c - val CautionCircle: Icon = "" // e05d - val NotAllowed: Icon = "" // e05e - val RandomColor: Icon = "" // e05f - val Pencil: Icon = "" // e060 - val Cogs: Icon = "" // e061 - val Tag: Icon = "" // e062 - val Clock: Icon = "" // e063 - val Trash: Icon = "" // e064 - val User: Icon = "" // e065 - val StarOutline: Icon = "" // e066 - val Star: Icon = "" // e067 - val MoreTriangle: Icon = "" // e068 - val Eye: Icon = "" // e069 - val Power: Icon = "" // e06a - val Download: Icon = "" // e06b - val Search: Icon = "" // e06c - val Forward: Icon = "" // e06d - val UltraBullet: Icon = "" // e06e - val Storm: Icon = "" // e06f + val CautionTriangle: Icon = "" // e000 + val Link: Icon = "" // e001 + val Rabbit: Icon = "" // e002 + val ShareIos: Icon = "" // e003 + val ShareAndroid: Icon = "" // e004 + val Gear: Icon = "" // e005 + val DieSix: Icon = "" // e006 + val FlagKingHill: Icon = "" // e007 + val FlameBlitz: Icon = "" // e008 + val Feather: Icon = "" // e009 + val Turtle: Icon = "" // e00a + val FlagChessboard: Icon = "" // e00b + val ArcheryTarget: Icon = "" // e00c + val ThreeCheckStack: Icon = "" // e00d + val UploadCloud: Icon = "" // e00e + val ExternalArrow: Icon = "" // e00f + val AnalogTv: Icon = "" // e010 + val RssFeed: Icon = "" // e011 + val StudyBoard: Icon = "" // e012 + val Shield: Icon = "" // e013 + val InkQuill: Icon = "" // e014 + val Target: Icon = "" // e015 + val Crown: Icon = "" // e016 + val LineGraph: Icon = "" // e017 + val GraduateCap: Icon = "" // e018 + val PaperAirplane: Icon = "" // e019 + val ZoomIn: Icon = "" // e01a + val Expand: Icon = "" // e01b + val Atom: Icon = "" // e01c + val List: Icon = "" // e01d + val Antichess: Icon = "" // e01e + val Microscope: Icon = "" // e01f + val ChasingArrows: Icon = "" // e020 + val CrownElite: Icon = "" // e021 + val Funnel: Icon = "" // e022 + val Checkmark: Icon = "" // e023 + val InternalArrow: Icon = "" // e024 + val PlayTriangle: Icon = "" // e025 + val GreaterThan: Icon = "" // e026 + val LessThan: Icon = "" // e027 + val DiscBig: Icon = "" // e028 + val DiscBigOutline: Icon = "" // e029 + val X: Icon = "" // e02a + val ArrowDownRight: Icon = "" // e02b + val ArrowUpRight: Icon = "" // e02c + val PlusButton: Icon = "" // e02d + val MinusButton: Icon = "" // e02e + val Fire: Icon = "" // e02f + val DownTriangle: Icon = "" // e030 + val UpTriangle: Icon = "" // e031 + val Bullet: Icon = "" // e032 + val Swords: Icon = "" // e033 + val JumpLast: Icon = "" // e034 + val JumpFirst: Icon = "" // e035 + val JumpNext: Icon = "" // e036 + val JumpPrev: Icon = "" // e037 + val Pause: Icon = "" // e038 + val Hamburger: Icon = "" // e039 + val Globe: Icon = "" // e03a + val Book: Icon = "" // e03b + val BarGraph: Icon = "" // e03c + val Keypad: Icon = "" // e03d + val Berserk: Icon = "" // e03e + val Padlock: Icon = "" // e03f + val FlagOutline: Icon = "" // e040 + val BubbleSpeech: Icon = "" // e041 + val BubbleConvo: Icon = "" // e042 + val Envelope: Icon = "" // e043 + val Group: Icon = "" // e044 + val Trophy: Icon = "" // e045 + val ThumbsUp: Icon = "" // e046 + val Back: Icon = "" // e047 + val CautionCircle: Icon = "" // e048 + val NotAllowed: Icon = "" // e049 + val RandomColor: Icon = "" // e04a + val Pencil: Icon = "" // e04b + val Cogs: Icon = "" // e04c + val Tag: Icon = "" // e04d + val Clock: Icon = "" // e04e + val Trash: Icon = "" // e04f + val User: Icon = "" // e050 + val StarOutline: Icon = "" // e051 + val Star: Icon = "" // e052 + val MoreTriangle: Icon = "" // e053 + val Eye: Icon = "" // e054 + val Power: Icon = "" // e055 + val Download: Icon = "" // e056 + val Search: Icon = "" // e057 + val Forward: Icon = "" // e058 + val UltraBullet: Icon = "" // e059 + val Storm: Icon = "" // e05a + val Tools: Icon = "" // e05b + val Bullseye: Icon = "" // e05c + val Agent: Icon = "" // e05d + val Mic: Icon = "" // e05e + val BarChart: Icon = "" // e05f + val InfoCircle: Icon = "" // e060 + val ScreenDesktop: Icon = "" // e061 + val PhoneMobile: Icon = "" // e062 + val Multiboard: Icon = "" // e063 + val HeartOutline: Icon = "" // e064 + val FlagRacingKings: Icon = "" // e065 + val Crazyhouse: Icon = "" // e066 + val Tshirt: Icon = "" // e067 + val Heart: Icon = "" // e068 + val RadioTower: Icon = "" // e069 + val BellOutline: Icon = "" // e06a + val Disc: Icon = "" // e06b + val Wings: Icon = "" // e06c + val DiscOutline: Icon = "" // e06d + val Handset: Icon = "" // e06e + val ArrowThruApple: Icon = "" // e06f val Clipboard: Icon = "" // e070 - val Cancel: Icon = "" // e071 + val Move: Icon = "" // e071 val Ibeam: Icon = "" // e072 - val Voice: Icon = "" // e073 - val Mask: Icon = "" // e074 - val Move: Icon = "" // e075 + val Cancel: Icon = "" // e073 + val Voice: Icon = "" // e074 + val Mask: Icon = "" // e075 val OneHalf: Icon = "" // e076 val Mute: Icon = "" // e077 - val AccountCircle: Icon = "" // e078 - val Logo: Icon = "" // e079 - val Switch: Icon = "" // e07a - val ShareIos: Icon = "" // e07b - val ShareAndroid: Icon = "" // e07c + val Reload: Icon = "" // e078 + val AccountCircle: Icon = "" // e079 + val Logo: Icon = "" // e07a + val Switch: Icon = "" // e07b diff --git a/public/font/lichess.sfd b/public/font/lichess.sfd index e5562c1ebb0d..df0a8a6ec6bd 100644 --- a/public/font/lichess.sfd +++ b/public/font/lichess.sfd @@ -181,7 +181,7 @@ Validated: 1 EndChar StartChar: caution-triangle -Encoding: 57365 57365 3 +Encoding: 57344 57344 1 Width: 512 GlyphClass: 2 Flags: W @@ -233,7 +233,7 @@ Validated: 545 EndChar StartChar: link -Encoding: 57366 57366 4 +Encoding: 57345 57345 2 Width: 512 GlyphClass: 2 Flags: W @@ -290,7 +290,7 @@ Validated: 33 EndChar StartChar: rabbit -Encoding: 57367 57367 5 +Encoding: 57346 57346 3 Width: 512 GlyphClass: 2 Flags: W @@ -390,49 +390,161 @@ EndSplineSet Validated: 33 EndChar -StartChar: node-branching -Encoding: 57368 57368 6 +StartChar: share-ios +Encoding: 57347 57347 4 Width: 512 -GlyphClass: 2 -Flags: W LayerCount: 2 Fore SplineSet -384 219 m 0,0,1 - 423 219 423 219 449 193 c 128,-1,2 - 475 167 475 167 475 128 c 128,-1,3 - 475 89 475 89 449 63 c 128,-1,4 - 423 37 423 37 384 37 c 128,-1,5 - 345 37 345 37 319 63 c 128,-1,6 - 293 89 293 89 293 128 c 2,7,-1 - 293 138 l 1,8,-1 - 190 189 l 1,9,10 - 164 165 164 165 128 165 c 0,11,12 - 89 165 89 165 63 191 c 128,-1,13 - 37 217 37 217 37 256 c 128,-1,14 - 37 295 37 295 63 321 c 128,-1,15 - 89 347 89 347 128 347 c 0,16,17 - 164 347 164 347 190 323 c 1,18,-1 - 293 374 l 1,19,-1 - 293 384 l 2,20,21 - 293 423 293 423 319 449 c 128,-1,22 - 345 475 345 475 384 475 c 128,-1,23 - 423 475 423 475 449 449 c 128,-1,24 - 475 423 475 423 475 384 c 128,-1,25 - 475 345 475 345 449 319 c 128,-1,26 - 423 293 423 293 384 293 c 0,27,28 - 348 293 348 293 322 317 c 1,29,-1 - 219 266 l 1,30,-1 - 219 256 l 1,31,-1 - 219 246 l 1,32,-1 - 322 195 l 1,33,34 - 348 219 348 219 384 219 c 0,0,1 +229.599609375 448.971679688 m 6,0,1 + 229.599609375 460.19140625 229.599609375 460.19140625 237.190429688 467.782226562 c 132,-1,2 + 244.780273438 475.372070312 244.780273438 475.372070312 256 475.372070312 c 132,-1,3 + 267.219726562 475.372070312 267.219726562 475.372070312 274.809570312 467.782226562 c 132,-1,4 + 282.400390625 460.19140625 282.400390625 460.19140625 282.400390625 448.971679688 c 6,5,-1 + 282.400390625 171.771484375 l 6,6,7 + 282.400390625 160.551757812 282.400390625 160.551757812 274.809570312 152.961914062 c 132,-1,8 + 267.219726562 145.372070312 267.219726562 145.372070312 256 145.372070312 c 132,-1,9 + 244.780273438 145.372070312 244.780273438 145.372070312 237.190429688 152.961914062 c 132,-1,10 + 229.599609375 160.551757812 229.599609375 160.551757812 229.599609375 171.771484375 c 6,11,-1 + 229.599609375 448.971679688 l 6,0,1 +272.901367188 455.08984375 m 6,12,-1 + 193.701171875 389.08984375 l 6,13,14 + 185.30078125 382.08984375 185.30078125 382.08984375 174.41015625 383.079101562 c 132,-1,15 + 163.51953125 384.069335938 163.51953125 384.069335938 156.51953125 392.470703125 c 132,-1,16 + 149.518554688 400.87109375 149.518554688 400.87109375 150.5078125 411.760742188 c 132,-1,17 + 151.498046875 422.651367188 151.498046875 422.651367188 159.899414062 429.65234375 c 6,18,-1 + 239.098632812 495.65234375 l 6,19,20 + 247.5 502.65234375 247.5 502.65234375 258.390625 501.662109375 c 132,-1,21 + 269.28125 500.672851562 269.28125 500.672851562 276.280273438 492.272460938 c 132,-1,22 + 283.28125 483.87109375 283.28125 483.87109375 282.291992188 472.98046875 c 132,-1,23 + 281.302734375 462.090820312 281.302734375 462.090820312 272.901367188 455.08984375 c 6,12,-1 +239.098632812 455.08984375 m 6,24,25 + 230.698242188 462.090820312 230.698242188 462.090820312 229.708007812 472.98046875 c 132,-1,26 + 228.717773438 483.87109375 228.717773438 483.87109375 235.71875 492.272460938 c 132,-1,27 + 242.719726562 500.672851562 242.719726562 500.672851562 253.610351562 501.662109375 c 132,-1,28 + 264.5 502.65234375 264.5 502.65234375 272.901367188 495.65234375 c 6,29,-1 + 352.1015625 429.65234375 l 6,30,31 + 360.501953125 422.651367188 360.501953125 422.651367188 361.4921875 411.760742188 c 132,-1,32 + 362.481445312 400.87109375 362.481445312 400.87109375 355.48046875 392.470703125 c 132,-1,33 + 348.481445312 384.069335938 348.481445312 384.069335938 337.590820312 383.079101562 c 132,-1,34 + 326.700195312 382.08984375 326.700195312 382.08984375 318.298828125 389.08984375 c 6,35,-1 + 239.098632812 455.08984375 l 6,24,25 +335.200195312 290.572265625 m 6,36,37 + 323.98046875 290.572265625 323.98046875 290.572265625 316.389648438 298.162109375 c 132,-1,38 + 308.799804688 305.751953125 308.799804688 305.751953125 308.799804688 316.971679688 c 132,-1,39 + 308.799804688 328.19140625 308.799804688 328.19140625 316.389648438 335.782226562 c 132,-1,40 + 323.98046875 343.372070312 323.98046875 343.372070312 335.200195312 343.372070312 c 6,41,-1 + 361.599609375 343.372070312 l 6,42,43 + 394.103515625 343.372070312 394.103515625 343.372070312 417.452148438 322.794921875 c 132,-1,44 + 440.799804688 302.21875 440.799804688 302.21875 440.799804688 272.294921875 c 6,45,-1 + 440.799804688 71.2490234375 l 6,46,47 + 440.799804688 41.326171875 440.799804688 41.326171875 417.452148438 20.748046875 c 132,-1,48 + 394.103515625 0.171875 394.103515625 0.171875 361.599609375 0.171875 c 6,49,-1 + 150.400390625 0.171875 l 6,50,51 + 117.896484375 0.171875 117.896484375 0.171875 94.5478515625 20.748046875 c 132,-1,52 + 71.2001953125 41.326171875 71.2001953125 41.326171875 71.2001953125 71.2490234375 c 6,53,-1 + 71.2001953125 272.294921875 l 6,54,55 + 71.2001953125 302.21875 71.2001953125 302.21875 94.5478515625 322.794921875 c 132,-1,56 + 117.896484375 343.372070312 117.896484375 343.372070312 150.400390625 343.372070312 c 6,57,-1 + 176.799804688 343.372070312 l 6,58,59 + 188.01953125 343.372070312 188.01953125 343.372070312 195.610351562 335.782226562 c 132,-1,60 + 203.200195312 328.19140625 203.200195312 328.19140625 203.200195312 316.971679688 c 132,-1,61 + 203.200195312 305.751953125 203.200195312 305.751953125 195.610351562 298.162109375 c 132,-1,62 + 188.01953125 290.572265625 188.01953125 290.572265625 176.799804688 290.572265625 c 6,63,-1 + 150.400390625 290.572265625 l 6,64,65 + 139.203125 290.572265625 139.203125 290.572265625 131.6015625 284.966796875 c 132,-1,66 + 124 279.361328125 124 279.361328125 124 272.294921875 c 6,67,-1 + 124 71.2490234375 l 6,68,69 + 124 64.181640625 124 64.181640625 131.6015625 58.576171875 c 132,-1,70 + 139.203125 52.9716796875 139.203125 52.9716796875 150.400390625 52.9716796875 c 6,71,-1 + 361.599609375 52.9716796875 l 6,72,73 + 372.797851562 52.9716796875 372.797851562 52.9716796875 380.3984375 58.576171875 c 132,-1,74 + 388 64.181640625 388 64.181640625 388 71.2490234375 c 6,75,-1 + 388 272.294921875 l 6,76,77 + 388 279.361328125 388 279.361328125 380.3984375 284.966796875 c 132,-1,78 + 372.797851562 290.572265625 372.797851562 290.572265625 361.599609375 290.572265625 c 6,79,-1 + 335.200195312 290.572265625 l 6,36,37 +EndSplineSet +EndChar + +StartChar: share-android +Encoding: 57348 57348 5 +Width: 512 +Flags: WO +LayerCount: 2 +Fore +SplineSet +407.46875 3.552734375 m 132,-1,1 + 375.913085938 3.552734375 375.913085938 3.552734375 353.82421875 25.6416015625 c 132,-1,2 + 331.734375 47.73046875 331.734375 47.73046875 331.734375 79.2861328125 c 4,3,4 + 331.734375 83.0830078125 331.734375 83.0830078125 333.6328125 96.962890625 c 5,5,-1 + 156.278320312 200.45703125 l 5,6,7 + 146.1953125 190.990234375 146.1953125 190.990234375 132.931640625 185.639648438 c 132,-1,8 + 119.66796875 180.265625 119.66796875 180.265625 104.53125 180.265625 c 4,9,10 + 72.9755859375 180.265625 72.9755859375 180.265625 50.8857421875 202.354492188 c 132,-1,11 + 28.796875 224.443359375 28.796875 224.443359375 28.796875 256 c 132,-1,12 + 28.796875 287.556640625 28.796875 287.556640625 50.8857421875 309.645507812 c 132,-1,13 + 72.9755859375 331.734375 72.9755859375 331.734375 104.53125 331.734375 c 4,14,15 + 119.66796875 331.734375 119.66796875 331.734375 132.931640625 326.360351562 c 132,-1,16 + 146.1953125 321.009765625 146.1953125 321.009765625 156.278320312 311.54296875 c 5,17,-1 + 333.6328125 415.037109375 l 5,18,19 + 332.375 419.450195312 332.375 419.450195312 332.055664062 423.567382812 c 132,-1,20 + 331.734375 427.66015625 331.734375 427.66015625 331.734375 432.713867188 c 4,21,22 + 331.734375 464.26953125 331.734375 464.26953125 353.82421875 486.358398438 c 132,-1,23 + 375.913085938 508.447265625 375.913085938 508.447265625 407.46875 508.447265625 c 132,-1,24 + 439.024414062 508.447265625 439.024414062 508.447265625 461.114257812 486.358398438 c 132,-1,25 + 483.203125 464.26953125 483.203125 464.26953125 483.203125 432.713867188 c 132,-1,26 + 483.203125 401.158203125 483.203125 401.158203125 461.114257812 379.068359375 c 132,-1,27 + 439.024414062 356.979492188 439.024414062 356.979492188 407.46875 356.979492188 c 4,28,29 + 392.33203125 356.979492188 392.33203125 356.979492188 379.068359375 362.353515625 c 132,-1,30 + 365.8046875 367.704101562 365.8046875 367.704101562 355.721679688 377.169921875 c 5,31,-1 + 178.3671875 273.676757812 l 5,32,33 + 179.625 269.263671875 179.625 269.263671875 179.944335938 265.146484375 c 132,-1,34 + 180.265625 261.053710938 180.265625 261.053710938 180.265625 256 c 132,-1,35 + 180.265625 250.946289062 180.265625 250.946289062 179.944335938 246.853515625 c 132,-1,36 + 179.625 242.736328125 179.625 242.736328125 178.3671875 238.323242188 c 5,37,-1 + 355.721679688 134.830078125 l 5,38,39 + 365.8046875 144.295898438 365.8046875 144.295898438 379.068359375 149.646484375 c 132,-1,40 + 392.33203125 155.020507812 392.33203125 155.020507812 407.46875 155.020507812 c 4,41,42 + 439.024414062 155.020507812 439.024414062 155.020507812 461.114257812 132.931640625 c 132,-1,43 + 483.203125 110.841796875 483.203125 110.841796875 483.203125 79.2861328125 c 132,-1,44 + 483.203125 47.73046875 483.203125 47.73046875 461.114257812 25.6416015625 c 132,-1,0 + 439.024414062 3.552734375 439.024414062 3.552734375 407.46875 3.552734375 c 132,-1,1 +407.46875 54.0419921875 m 132,-1,46 + 418.193359375 54.0419921875 418.193359375 54.0419921875 425.465820312 61.2900390625 c 132,-1,47 + 432.713867188 68.5625 432.713867188 68.5625 432.713867188 79.2861328125 c 132,-1,48 + 432.713867188 90.0107421875 432.713867188 90.0107421875 425.465820312 97.283203125 c 132,-1,49 + 418.193359375 104.53125 418.193359375 104.53125 407.46875 104.53125 c 132,-1,50 + 396.745117188 104.53125 396.745117188 104.53125 389.47265625 97.283203125 c 132,-1,51 + 382.223632812 90.0107421875 382.223632812 90.0107421875 382.223632812 79.2861328125 c 132,-1,52 + 382.223632812 68.5625 382.223632812 68.5625 389.47265625 61.2900390625 c 132,-1,45 + 396.745117188 54.0419921875 396.745117188 54.0419921875 407.46875 54.0419921875 c 132,-1,46 +104.53125 230.755859375 m 132,-1,54 + 115.254882812 230.755859375 115.254882812 230.755859375 122.52734375 238.002929688 c 132,-1,55 + 129.776367188 245.275390625 129.776367188 245.275390625 129.776367188 256 c 132,-1,56 + 129.776367188 266.724609375 129.776367188 266.724609375 122.52734375 273.997070312 c 132,-1,57 + 115.254882812 281.244140625 115.254882812 281.244140625 104.53125 281.244140625 c 132,-1,58 + 93.806640625 281.244140625 93.806640625 281.244140625 86.5341796875 273.997070312 c 132,-1,59 + 79.2861328125 266.724609375 79.2861328125 266.724609375 79.2861328125 256 c 132,-1,60 + 79.2861328125 245.275390625 79.2861328125 245.275390625 86.5341796875 238.002929688 c 132,-1,53 + 93.806640625 230.755859375 93.806640625 230.755859375 104.53125 230.755859375 c 132,-1,54 +407.46875 407.46875 m 132,-1,62 + 418.193359375 407.46875 418.193359375 407.46875 425.465820312 414.716796875 c 132,-1,63 + 432.713867188 421.989257812 432.713867188 421.989257812 432.713867188 432.713867188 c 132,-1,64 + 432.713867188 443.4375 432.713867188 443.4375 425.465820312 450.709960938 c 132,-1,65 + 418.193359375 457.958007812 418.193359375 457.958007812 407.46875 457.958007812 c 132,-1,66 + 396.745117188 457.958007812 396.745117188 457.958007812 389.47265625 450.709960938 c 132,-1,67 + 382.223632812 443.4375 382.223632812 443.4375 382.223632812 432.713867188 c 132,-1,68 + 382.223632812 421.989257812 382.223632812 421.989257812 389.47265625 414.716796875 c 132,-1,61 + 396.745117188 407.46875 396.745117188 407.46875 407.46875 407.46875 c 132,-1,62 +407.46875 79.2861328125 m 1028,69,-1 +104.53125 256 m 1028,70,-1 +407.46875 432.713867188 m 1028,71,-1 EndSplineSet -Validated: 513 EndChar StartChar: gear -Encoding: 57369 57369 7 +Encoding: 57349 57349 6 Width: 512 GlyphClass: 2 Flags: W @@ -494,7 +606,7 @@ Validated: 1 EndChar StartChar: die-six -Encoding: 57371 57371 8 +Encoding: 57350 57350 7 Width: 512 GlyphClass: 2 Flags: W @@ -572,7 +684,7 @@ EndSplineSet EndChar StartChar: flag-king-hill -Encoding: 57372 57372 9 +Encoding: 57351 57351 8 Width: 512 GlyphClass: 2 Flags: W @@ -605,7 +717,7 @@ Validated: 33 EndChar StartChar: flame-blitz -Encoding: 57373 57373 10 +Encoding: 57352 57352 9 Width: 512 GlyphClass: 2 Flags: W @@ -647,7 +759,7 @@ Validated: 41 EndChar StartChar: feather -Encoding: 57374 57374 11 +Encoding: 57353 57353 10 Width: 512 GlyphClass: 2 Flags: W @@ -695,7 +807,7 @@ Validated: 33 EndChar StartChar: turtle -Encoding: 57375 57375 12 +Encoding: 57354 57354 11 Width: 512 GlyphClass: 2 Flags: W @@ -777,7 +889,7 @@ Validated: 41 EndChar StartChar: flag-chessboard -Encoding: 57376 57376 13 +Encoding: 57355 57355 12 Width: 512 GlyphClass: 2 Flags: W @@ -1066,7 +1178,7 @@ Validated: 37 EndChar StartChar: archery-target -Encoding: 57377 57377 14 +Encoding: 57356 57356 13 Width: 512 GlyphClass: 2 Flags: W @@ -1189,7 +1301,7 @@ Validated: 553 EndChar StartChar: three-check-stack -Encoding: 57378 57378 15 +Encoding: 57357 57357 14 Width: 512 GlyphClass: 2 Flags: W @@ -1248,7 +1360,7 @@ Validated: 1 EndChar StartChar: upload-cloud -Encoding: 57379 57379 16 +Encoding: 57358 57358 15 Width: 512 GlyphClass: 2 Flags: W @@ -1285,7 +1397,7 @@ Validated: 513 EndChar StartChar: external-arrow -Encoding: 57380 57380 17 +Encoding: 57359 57359 16 Width: 512 GlyphClass: 2 Flags: W @@ -1349,7 +1461,7 @@ Validated: 513 EndChar StartChar: analog-tv -Encoding: 57381 57381 18 +Encoding: 57360 57360 17 Width: 512 GlyphClass: 2 Flags: W @@ -1399,7 +1511,7 @@ Validated: 553 EndChar StartChar: rss-feed -Encoding: 57382 57382 19 +Encoding: 57361 57361 18 Width: 512 GlyphClass: 2 Flags: W @@ -1434,7 +1546,7 @@ Validated: 1 EndChar StartChar: study-board -Encoding: 57383 57383 20 +Encoding: 57362 57362 19 Width: 512 GlyphClass: 2 Flags: W @@ -1472,7 +1584,7 @@ Validated: 5 EndChar StartChar: shield -Encoding: 57384 57384 21 +Encoding: 57363 57363 20 Width: 512 GlyphClass: 2 Flags: W @@ -1504,7 +1616,7 @@ Validated: 5 EndChar StartChar: ink-quill -Encoding: 57385 57385 22 +Encoding: 57364 57364 21 Width: 512 GlyphClass: 2 Flags: W @@ -1562,7 +1674,7 @@ Validated: 553 EndChar StartChar: target -Encoding: 57386 57386 23 +Encoding: 57365 57365 22 Width: 512 GlyphClass: 2 Flags: W @@ -1614,7 +1726,7 @@ Validated: 513 EndChar StartChar: crown -Encoding: 57387 57387 24 +Encoding: 57366 57366 23 Width: 512 GlyphClass: 2 Flags: W @@ -1698,7 +1810,7 @@ Validated: 5 EndChar StartChar: line-graph -Encoding: 57388 57388 25 +Encoding: 57367 57367 24 Width: 512 GlyphClass: 2 Flags: W @@ -1747,7 +1859,7 @@ Validated: 545 EndChar StartChar: graduate-cap -Encoding: 57389 57389 26 +Encoding: 57368 57368 25 Width: 512 GlyphClass: 2 Flags: W @@ -1801,7 +1913,7 @@ Validated: 517 EndChar StartChar: paper-airplane -Encoding: 57390 57390 27 +Encoding: 57369 57369 26 Width: 512 GlyphClass: 2 Flags: W @@ -1825,7 +1937,7 @@ Validated: 517 EndChar StartChar: zoom-in -Encoding: 57391 57391 28 +Encoding: 57370 57370 27 Width: 512 GlyphClass: 2 Flags: W @@ -1874,7 +1986,7 @@ Validated: 513 EndChar StartChar: expand -Encoding: 57392 57392 29 +Encoding: 57371 57371 28 Width: 512 GlyphClass: 2 Flags: W @@ -1924,7 +2036,7 @@ Validated: 521 EndChar StartChar: atom -Encoding: 57393 57393 30 +Encoding: 57372 57372 29 Width: 512 GlyphClass: 2 Flags: W @@ -2029,7 +2141,7 @@ Validated: 41 EndChar StartChar: list -Encoding: 57394 57394 31 +Encoding: 57373 57373 30 Width: 512 GlyphClass: 2 Flags: W @@ -2145,7 +2257,7 @@ Validated: 1 EndChar StartChar: antichess -Encoding: 57395 57395 32 +Encoding: 57374 57374 31 Width: 512 GlyphClass: 2 Flags: W @@ -2275,7 +2387,7 @@ Validated: 41 EndChar StartChar: microscope -Encoding: 57396 57396 33 +Encoding: 57375 57375 32 Width: 512 GlyphClass: 2 Flags: W @@ -2338,7 +2450,7 @@ Validated: 41 EndChar StartChar: chasing-arrows -Encoding: 57397 57397 34 +Encoding: 57376 57376 33 Width: 512 GlyphClass: 2 Flags: W @@ -2390,7 +2502,7 @@ Validated: 513 EndChar StartChar: crown-elite -Encoding: 57398 57398 35 +Encoding: 57377 57377 34 Width: 512 GlyphClass: 2 Flags: W @@ -2439,7 +2551,7 @@ Validated: 521 EndChar StartChar: funnel -Encoding: 57399 57399 36 +Encoding: 57378 57378 35 Width: 512 GlyphClass: 2 Flags: W @@ -2466,7 +2578,7 @@ Validated: 545 EndChar StartChar: checkmark -Encoding: 57400 57400 37 +Encoding: 57379 57379 36 Width: 512 GlyphClass: 2 Flags: W @@ -2496,7 +2608,7 @@ Validated: 513 EndChar StartChar: internal-arrow -Encoding: 57401 57401 38 +Encoding: 57380 57380 37 Width: 512 GlyphClass: 2 Flags: W @@ -2564,7 +2676,7 @@ Validated: 513 EndChar StartChar: play-triangle -Encoding: 57402 57402 39 +Encoding: 57381 57381 38 Width: 512 GlyphClass: 2 Flags: W @@ -2586,7 +2698,7 @@ Validated: 513 EndChar StartChar: greater-than -Encoding: 57403 57403 40 +Encoding: 57382 57382 39 Width: 512 GlyphClass: 2 Flags: W @@ -2615,7 +2727,7 @@ Validated: 513 EndChar StartChar: less-than -Encoding: 57404 57404 41 +Encoding: 57383 57383 40 Width: 512 GlyphClass: 2 Flags: W @@ -2644,7 +2756,7 @@ Validated: 513 EndChar StartChar: disc-big -Encoding: 57405 57405 42 +Encoding: 57384 57384 41 Width: 512 GlyphClass: 2 Flags: W @@ -2669,7 +2781,7 @@ Validated: 513 EndChar StartChar: disc-big-outline -Encoding: 57406 57406 43 +Encoding: 57385 57385 42 Width: 512 GlyphClass: 2 Flags: W @@ -2707,7 +2819,7 @@ Validated: 513 EndChar StartChar: x -Encoding: 57407 57407 44 +Encoding: 57386 57386 43 Width: 512 GlyphClass: 2 Flags: W @@ -2747,7 +2859,7 @@ EndSplineSet EndChar StartChar: arrow-down-right -Encoding: 57408 57408 45 +Encoding: 57387 57387 44 Width: 512 GlyphClass: 2 Flags: W @@ -2767,7 +2879,7 @@ Validated: 521 EndChar StartChar: arrow-up-right -Encoding: 57409 57409 46 +Encoding: 57388 57388 45 Width: 512 GlyphClass: 2 Flags: W @@ -2787,7 +2899,7 @@ Validated: 513 EndChar StartChar: plus-button -Encoding: 57410 57410 47 +Encoding: 57389 57389 46 Width: 512 GlyphClass: 2 Flags: W @@ -2841,7 +2953,7 @@ Validated: 513 EndChar StartChar: minus-button -Encoding: 57411 57411 48 +Encoding: 57390 57390 47 Width: 512 GlyphClass: 2 Flags: W @@ -2880,7 +2992,7 @@ EndSplineSet EndChar StartChar: fire -Encoding: 57412 57412 49 +Encoding: 57391 57391 48 Width: 512 GlyphClass: 2 Flags: W @@ -2940,7 +3052,7 @@ Validated: 553 EndChar StartChar: down-triangle -Encoding: 57413 57413 50 +Encoding: 57392 57392 49 Width: 512 GlyphClass: 2 Flags: W @@ -2956,7 +3068,7 @@ Validated: 521 EndChar StartChar: up-triangle -Encoding: 57414 57414 51 +Encoding: 57393 57393 50 Width: 512 GlyphClass: 2 Flags: W @@ -2972,7 +3084,7 @@ Validated: 521 EndChar StartChar: bullet -Encoding: 57415 57415 52 +Encoding: 57394 57394 51 Width: 512 GlyphClass: 2 Flags: W @@ -3105,7 +3217,7 @@ Validated: 549 EndChar StartChar: swords -Encoding: 57416 57416 53 +Encoding: 57395 57395 52 Width: 512 GlyphClass: 2 Flags: W @@ -3152,7 +3264,7 @@ Validated: 513 EndChar StartChar: jump-last -Encoding: 57417 57417 54 +Encoding: 57396 57396 53 Width: 512 GlyphClass: 2 Flags: W @@ -3197,7 +3309,7 @@ Validated: 513 EndChar StartChar: jump-first -Encoding: 57418 57418 55 +Encoding: 57397 57397 54 Width: 512 GlyphClass: 2 Flags: W @@ -3242,7 +3354,7 @@ Validated: 513 EndChar StartChar: jump-next -Encoding: 57419 57419 56 +Encoding: 57398 57398 55 Width: 512 GlyphClass: 2 Flags: W @@ -3277,7 +3389,7 @@ Validated: 513 EndChar StartChar: jump-prev -Encoding: 57420 57420 57 +Encoding: 57399 57399 56 Width: 512 GlyphClass: 2 Flags: W @@ -3312,7 +3424,7 @@ Validated: 513 EndChar StartChar: pause -Encoding: 57421 57421 58 +Encoding: 57400 57400 57 Width: 512 GlyphClass: 2 Flags: W @@ -3350,7 +3462,7 @@ Validated: 513 EndChar StartChar: hamburger -Encoding: 57422 57422 59 +Encoding: 57401 57401 58 Width: 512 GlyphClass: 2 Flags: W @@ -3395,7 +3507,7 @@ Validated: 1 EndChar StartChar: globe -Encoding: 57423 57423 60 +Encoding: 57402 57402 59 Width: 512 GlyphClass: 2 Flags: W @@ -3461,7 +3573,7 @@ Validated: 553 EndChar StartChar: book -Encoding: 57424 57424 61 +Encoding: 57403 57403 60 Width: 512 GlyphClass: 2 Flags: W @@ -3563,7 +3675,7 @@ Validated: 33 EndChar StartChar: bar-graph -Encoding: 57425 57425 62 +Encoding: 57404 57404 61 Width: 512 GlyphClass: 2 Flags: W @@ -3615,7 +3727,7 @@ Validated: 9 EndChar StartChar: keypad -Encoding: 57426 57426 63 +Encoding: 57405 57405 62 Width: 512 GlyphClass: 2 Flags: W @@ -3717,7 +3829,7 @@ Validated: 1 EndChar StartChar: berserk -Encoding: 57427 57427 64 +Encoding: 57406 57406 63 Width: 512 GlyphClass: 2 Flags: W @@ -3907,7 +4019,7 @@ Validated: 553 EndChar StartChar: padlock -Encoding: 57428 57428 65 +Encoding: 57407 57407 64 Width: 512 GlyphClass: 2 Flags: W @@ -3946,7 +4058,7 @@ EndSplineSet EndChar StartChar: flag-outline -Encoding: 57429 57429 66 +Encoding: 57408 57408 65 Width: 512 GlyphClass: 2 Flags: W @@ -4021,7 +4133,7 @@ Validated: 545 EndChar StartChar: bubble-speech -Encoding: 57430 57430 67 +Encoding: 57409 57409 66 Width: 512 GlyphClass: 2 Flags: W @@ -4086,7 +4198,7 @@ Validated: 513 EndChar StartChar: bubble-convo -Encoding: 57431 57431 68 +Encoding: 57410 57410 67 Width: 512 GlyphClass: 2 Flags: W @@ -4186,7 +4298,7 @@ Validated: 513 EndChar StartChar: envelope -Encoding: 57432 57432 69 +Encoding: 57411 57411 68 Width: 512 GlyphClass: 2 Flags: W @@ -4253,7 +4365,7 @@ Validated: 513 EndChar StartChar: group -Encoding: 57433 57433 70 +Encoding: 57412 57412 69 Width: 512 GlyphClass: 2 Flags: W @@ -4346,7 +4458,7 @@ Validated: 513 EndChar StartChar: trophy -Encoding: 57434 57434 71 +Encoding: 57413 57413 70 Width: 512 GlyphClass: 2 Flags: W @@ -4415,7 +4527,7 @@ Validated: 513 EndChar StartChar: thumbs-up -Encoding: 57435 57435 72 +Encoding: 57414 57414 71 Width: 512 GlyphClass: 2 Flags: W @@ -4512,7 +4624,7 @@ Validated: 513 EndChar StartChar: back -Encoding: 57436 57436 73 +Encoding: 57415 57415 72 Width: 512 GlyphClass: 2 Flags: W @@ -4560,7 +4672,7 @@ Validated: 513 EndChar StartChar: caution-circle -Encoding: 57437 57437 74 +Encoding: 57416 57416 73 Width: 512 GlyphClass: 2 Flags: W @@ -4611,7 +4723,7 @@ Validated: 513 EndChar StartChar: not-allowed -Encoding: 57438 57438 75 +Encoding: 57417 57417 74 Width: 512 GlyphClass: 2 Flags: W @@ -4655,7 +4767,7 @@ Validated: 513 EndChar StartChar: random-color -Encoding: 57439 57439 76 +Encoding: 57418 57418 75 Width: 512 GlyphClass: 2 Flags: W @@ -4688,7 +4800,7 @@ Validated: 513 EndChar StartChar: pencil -Encoding: 57440 57440 77 +Encoding: 57419 57419 76 Width: 512 GlyphClass: 2 Flags: W @@ -4732,7 +4844,7 @@ Validated: 513 EndChar StartChar: cogs -Encoding: 57441 57441 78 +Encoding: 57420 57420 77 Width: 512 GlyphClass: 2 Flags: W @@ -4933,7 +5045,7 @@ Validated: 1 EndChar StartChar: tag -Encoding: 57442 57442 79 +Encoding: 57421 57421 78 Width: 512 GlyphClass: 2 Flags: W @@ -4983,7 +5095,7 @@ Validated: 9 EndChar StartChar: clock -Encoding: 57443 57443 80 +Encoding: 57422 57422 79 Width: 512 GlyphClass: 2 Flags: W @@ -5038,7 +5150,7 @@ Validated: 513 EndChar StartChar: trash -Encoding: 57444 57444 81 +Encoding: 57423 57423 80 Width: 512 GlyphClass: 2 Flags: W @@ -5136,7 +5248,7 @@ Validated: 513 EndChar StartChar: user -Encoding: 57445 57445 82 +Encoding: 57424 57424 81 Width: 512 GlyphClass: 2 Flags: W @@ -5185,7 +5297,7 @@ Validated: 513 EndChar StartChar: star-outline -Encoding: 57446 57446 83 +Encoding: 57425 57425 82 Width: 512 GlyphClass: 2 Flags: W @@ -5232,7 +5344,7 @@ Validated: 513 EndChar StartChar: star -Encoding: 57447 57447 84 +Encoding: 57426 57426 83 Width: 512 GlyphClass: 2 Flags: W @@ -5269,7 +5381,7 @@ Validated: 513 EndChar StartChar: more-triangle -Encoding: 57448 57448 85 +Encoding: 57427 57427 84 Width: 512 GlyphClass: 2 Flags: W @@ -5293,7 +5405,7 @@ Validated: 513 EndChar StartChar: eye -Encoding: 57449 57449 86 +Encoding: 57428 57428 85 Width: 512 GlyphClass: 2 Flags: W @@ -5333,7 +5445,7 @@ Validated: 553 EndChar StartChar: power -Encoding: 57450 57450 87 +Encoding: 57429 57429 86 Width: 512 GlyphClass: 2 Flags: W @@ -5389,7 +5501,7 @@ Validated: 545 EndChar StartChar: download -Encoding: 57451 57451 88 +Encoding: 57430 57430 87 Width: 512 GlyphClass: 2 Flags: W @@ -5455,7 +5567,7 @@ Validated: 545 EndChar StartChar: search -Encoding: 57452 57452 89 +Encoding: 57431 57431 88 Width: 512 GlyphClass: 2 Flags: W @@ -5496,7 +5608,7 @@ EndSplineSet EndChar StartChar: forward -Encoding: 57453 57453 90 +Encoding: 57432 57432 89 Width: 512 GlyphClass: 2 Flags: W @@ -5543,7 +5655,7 @@ Validated: 513 EndChar StartChar: ultra-bullet -Encoding: 57454 57454 91 +Encoding: 57433 57433 90 Width: 512 GlyphClass: 2 Flags: W @@ -5608,7 +5720,7 @@ Validated: 33 EndChar StartChar: storm -Encoding: 57455 57455 92 +Encoding: 57434 57434 91 Width: 512 GlyphClass: 2 Flags: W @@ -5707,7 +5819,7 @@ Validated: 37 EndChar StartChar: tools -Encoding: 57344 57344 93 +Encoding: 57435 57435 92 Width: 512 GlyphClass: 2 Flags: W @@ -5791,7 +5903,7 @@ Validated: 33 EndChar StartChar: bullseye -Encoding: 57345 57345 94 +Encoding: 57436 57436 93 Width: 512 GlyphClass: 2 Flags: W @@ -5860,7 +5972,7 @@ Validated: 1 EndChar StartChar: agent -Encoding: 57346 57346 95 +Encoding: 57437 57437 94 Width: 512 GlyphClass: 2 Flags: W @@ -5977,7 +6089,7 @@ Validated: 41 EndChar StartChar: mic -Encoding: 57347 57347 96 +Encoding: 57438 57438 95 Width: 512 GlyphClass: 2 Flags: W @@ -6035,7 +6147,7 @@ Validated: 5 EndChar StartChar: bar-chart -Encoding: 57348 57348 97 +Encoding: 57439 57439 96 Width: 512 GlyphClass: 2 Flags: W @@ -6093,7 +6205,7 @@ Validated: 513 EndChar StartChar: info-circle -Encoding: 57349 57349 98 +Encoding: 57440 57440 97 Width: 512 GlyphClass: 2 Flags: W @@ -6137,7 +6249,7 @@ Validated: 545 EndChar StartChar: screen-desktop -Encoding: 57350 57350 99 +Encoding: 57441 57441 98 Width: 512 GlyphClass: 2 Flags: W @@ -6187,7 +6299,7 @@ Validated: 513 EndChar StartChar: phone-mobile -Encoding: 57351 57351 100 +Encoding: 57442 57442 99 Width: 512 GlyphClass: 2 Flags: W @@ -6241,7 +6353,7 @@ Validated: 513 EndChar StartChar: multiboard -Encoding: 57352 57352 101 +Encoding: 57443 57443 100 Width: 512 GlyphClass: 2 Flags: W @@ -6305,7 +6417,7 @@ Validated: 513 EndChar StartChar: heart-outline -Encoding: 57353 57353 102 +Encoding: 57444 57444 101 Width: 512 GlyphClass: 2 Flags: W @@ -6368,7 +6480,7 @@ Validated: 513 EndChar StartChar: flag-racing-kings -Encoding: 57354 57354 103 +Encoding: 57445 57445 102 Width: 512 GlyphClass: 2 Flags: W @@ -6471,7 +6583,7 @@ Validated: 549 EndChar StartChar: crazyhouse -Encoding: 57355 57355 104 +Encoding: 57446 57446 103 Width: 512 GlyphClass: 2 Flags: W @@ -6525,7 +6637,7 @@ Validated: 513 EndChar StartChar: tshirt -Encoding: 57356 57356 105 +Encoding: 57447 57447 104 Width: 512 GlyphClass: 2 Flags: W @@ -6580,7 +6692,7 @@ Validated: 553 EndChar StartChar: heart -Encoding: 57357 57357 106 +Encoding: 57448 57448 105 Width: 512 GlyphClass: 2 Flags: W @@ -6616,7 +6728,7 @@ Validated: 1 EndChar StartChar: radio-tower -Encoding: 57358 57358 107 +Encoding: 57449 57449 106 Width: 512 GlyphClass: 2 Flags: W @@ -6703,7 +6815,7 @@ Validated: 553 EndChar StartChar: bell-outline -Encoding: 57359 57359 108 +Encoding: 57450 57450 107 Width: 512 GlyphClass: 2 Flags: W @@ -6767,7 +6879,7 @@ Validated: 513 EndChar StartChar: disc -Encoding: 57360 57360 109 +Encoding: 57451 57451 108 Width: 512 GlyphClass: 2 Flags: W @@ -6792,7 +6904,7 @@ Validated: 1 EndChar StartChar: wings -Encoding: 57361 57361 110 +Encoding: 57452 57452 109 Width: 512 GlyphClass: 2 Flags: W @@ -6885,7 +6997,7 @@ Validated: 553 EndChar StartChar: disc-outline -Encoding: 57362 57362 111 +Encoding: 57453 57453 110 Width: 512 GlyphClass: 2 Flags: W @@ -6923,7 +7035,7 @@ Validated: 1 EndChar StartChar: handset -Encoding: 57363 57363 112 +Encoding: 57454 57454 111 Width: 512 GlyphClass: 2 Flags: W @@ -6952,7 +7064,7 @@ Validated: 33 EndChar StartChar: arrow-thru-apple -Encoding: 57364 57364 113 +Encoding: 57455 57455 112 Width: 512 GlyphClass: 2 Flags: W @@ -7029,7 +7141,7 @@ Validated: 37 EndChar StartChar: clipboard -Encoding: 57456 57456 114 +Encoding: 57456 57456 113 Width: 512 VWidth: 544 LayerCount: 2 @@ -7090,7 +7202,7 @@ Validated: 1 EndChar StartChar: move -Encoding: 57461 57461 115 +Encoding: 57457 57457 114 Width: 512 Flags: W LayerCount: 2 @@ -7162,7 +7274,7 @@ EndSplineSet EndChar StartChar: ibeam -Encoding: 57458 57458 116 +Encoding: 57458 57458 115 Width: 512 Flags: W LayerCount: 2 @@ -7196,7 +7308,7 @@ EndSplineSet EndChar StartChar: cancel -Encoding: 57457 57457 117 +Encoding: 57459 57459 116 Width: 512 Flags: W LayerCount: 2 @@ -7248,7 +7360,7 @@ EndSplineSet EndChar StartChar: voice -Encoding: 57459 57459 118 +Encoding: 57460 57460 117 Width: 768 Flags: W LayerCount: 2 @@ -7312,7 +7424,7 @@ EndSplineSet EndChar StartChar: mask -Encoding: 57460 57460 119 +Encoding: 57461 57461 118 Width: 512 Flags: W LayerCount: 2 @@ -7371,7 +7483,7 @@ EndSplineSet EndChar StartChar: one-half -Encoding: 57462 57462 120 +Encoding: 57462 57462 119 Width: 512 Flags: W LayerCount: 2 @@ -7419,7 +7531,7 @@ EndSplineSet EndChar StartChar: mute -Encoding: 57463 57463 121 +Encoding: 57463 57463 120 Width: 512 LayerCount: 2 Fore @@ -7461,7 +7573,7 @@ EndSplineSet EndChar StartChar: reload -Encoding: 57370 57370 122 +Encoding: 57464 57464 121 Width: 512 Flags: W LayerCount: 2 @@ -7511,7 +7623,7 @@ EndSplineSet EndChar StartChar: account-circle -Encoding: 57464 57464 123 +Encoding: 57465 57465 122 Width: 512 Flags: W LayerCount: 2 @@ -7579,7 +7691,7 @@ EndSplineSet EndChar StartChar: logo -Encoding: 57465 57465 124 +Encoding: 57466 57466 123 Width: 512 Flags: W LayerCount: 2 @@ -7623,7 +7735,7 @@ EndSplineSet EndChar StartChar: switch -Encoding: 57466 57466 125 +Encoding: 57467 57467 124 Width: 512 LayerCount: 2 Fore @@ -7682,158 +7794,5 @@ SplineSet 332.514648438 263.379882812 332.514648438 263.379882812 338.904296875 260.184570312 c 6,49,-1 EndSplineSet EndChar - -StartChar: share-ios -Encoding: 57467 57467 126 -Width: 512 -LayerCount: 2 -Fore -SplineSet -229.599609375 448.971679688 m 6,0,1 - 229.599609375 460.19140625 229.599609375 460.19140625 237.190429688 467.782226562 c 132,-1,2 - 244.780273438 475.372070312 244.780273438 475.372070312 256 475.372070312 c 132,-1,3 - 267.219726562 475.372070312 267.219726562 475.372070312 274.809570312 467.782226562 c 132,-1,4 - 282.400390625 460.19140625 282.400390625 460.19140625 282.400390625 448.971679688 c 6,5,-1 - 282.400390625 171.771484375 l 6,6,7 - 282.400390625 160.551757812 282.400390625 160.551757812 274.809570312 152.961914062 c 132,-1,8 - 267.219726562 145.372070312 267.219726562 145.372070312 256 145.372070312 c 132,-1,9 - 244.780273438 145.372070312 244.780273438 145.372070312 237.190429688 152.961914062 c 132,-1,10 - 229.599609375 160.551757812 229.599609375 160.551757812 229.599609375 171.771484375 c 6,11,-1 - 229.599609375 448.971679688 l 6,0,1 -272.901367188 455.08984375 m 6,12,-1 - 193.701171875 389.08984375 l 6,13,14 - 185.30078125 382.08984375 185.30078125 382.08984375 174.41015625 383.079101562 c 132,-1,15 - 163.51953125 384.069335938 163.51953125 384.069335938 156.51953125 392.470703125 c 132,-1,16 - 149.518554688 400.87109375 149.518554688 400.87109375 150.5078125 411.760742188 c 132,-1,17 - 151.498046875 422.651367188 151.498046875 422.651367188 159.899414062 429.65234375 c 6,18,-1 - 239.098632812 495.65234375 l 6,19,20 - 247.5 502.65234375 247.5 502.65234375 258.390625 501.662109375 c 132,-1,21 - 269.28125 500.672851562 269.28125 500.672851562 276.280273438 492.272460938 c 132,-1,22 - 283.28125 483.87109375 283.28125 483.87109375 282.291992188 472.98046875 c 132,-1,23 - 281.302734375 462.090820312 281.302734375 462.090820312 272.901367188 455.08984375 c 6,12,-1 -239.098632812 455.08984375 m 6,24,25 - 230.698242188 462.090820312 230.698242188 462.090820312 229.708007812 472.98046875 c 132,-1,26 - 228.717773438 483.87109375 228.717773438 483.87109375 235.71875 492.272460938 c 132,-1,27 - 242.719726562 500.672851562 242.719726562 500.672851562 253.610351562 501.662109375 c 132,-1,28 - 264.5 502.65234375 264.5 502.65234375 272.901367188 495.65234375 c 6,29,-1 - 352.1015625 429.65234375 l 6,30,31 - 360.501953125 422.651367188 360.501953125 422.651367188 361.4921875 411.760742188 c 132,-1,32 - 362.481445312 400.87109375 362.481445312 400.87109375 355.48046875 392.470703125 c 132,-1,33 - 348.481445312 384.069335938 348.481445312 384.069335938 337.590820312 383.079101562 c 132,-1,34 - 326.700195312 382.08984375 326.700195312 382.08984375 318.298828125 389.08984375 c 6,35,-1 - 239.098632812 455.08984375 l 6,24,25 -335.200195312 290.572265625 m 6,36,37 - 323.98046875 290.572265625 323.98046875 290.572265625 316.389648438 298.162109375 c 132,-1,38 - 308.799804688 305.751953125 308.799804688 305.751953125 308.799804688 316.971679688 c 132,-1,39 - 308.799804688 328.19140625 308.799804688 328.19140625 316.389648438 335.782226562 c 132,-1,40 - 323.98046875 343.372070312 323.98046875 343.372070312 335.200195312 343.372070312 c 6,41,-1 - 361.599609375 343.372070312 l 6,42,43 - 394.103515625 343.372070312 394.103515625 343.372070312 417.452148438 322.794921875 c 132,-1,44 - 440.799804688 302.21875 440.799804688 302.21875 440.799804688 272.294921875 c 6,45,-1 - 440.799804688 71.2490234375 l 6,46,47 - 440.799804688 41.326171875 440.799804688 41.326171875 417.452148438 20.748046875 c 132,-1,48 - 394.103515625 0.171875 394.103515625 0.171875 361.599609375 0.171875 c 6,49,-1 - 150.400390625 0.171875 l 6,50,51 - 117.896484375 0.171875 117.896484375 0.171875 94.5478515625 20.748046875 c 132,-1,52 - 71.2001953125 41.326171875 71.2001953125 41.326171875 71.2001953125 71.2490234375 c 6,53,-1 - 71.2001953125 272.294921875 l 6,54,55 - 71.2001953125 302.21875 71.2001953125 302.21875 94.5478515625 322.794921875 c 132,-1,56 - 117.896484375 343.372070312 117.896484375 343.372070312 150.400390625 343.372070312 c 6,57,-1 - 176.799804688 343.372070312 l 6,58,59 - 188.01953125 343.372070312 188.01953125 343.372070312 195.610351562 335.782226562 c 132,-1,60 - 203.200195312 328.19140625 203.200195312 328.19140625 203.200195312 316.971679688 c 132,-1,61 - 203.200195312 305.751953125 203.200195312 305.751953125 195.610351562 298.162109375 c 132,-1,62 - 188.01953125 290.572265625 188.01953125 290.572265625 176.799804688 290.572265625 c 6,63,-1 - 150.400390625 290.572265625 l 6,64,65 - 139.203125 290.572265625 139.203125 290.572265625 131.6015625 284.966796875 c 132,-1,66 - 124 279.361328125 124 279.361328125 124 272.294921875 c 6,67,-1 - 124 71.2490234375 l 6,68,69 - 124 64.181640625 124 64.181640625 131.6015625 58.576171875 c 132,-1,70 - 139.203125 52.9716796875 139.203125 52.9716796875 150.400390625 52.9716796875 c 6,71,-1 - 361.599609375 52.9716796875 l 6,72,73 - 372.797851562 52.9716796875 372.797851562 52.9716796875 380.3984375 58.576171875 c 132,-1,74 - 388 64.181640625 388 64.181640625 388 71.2490234375 c 6,75,-1 - 388 272.294921875 l 6,76,77 - 388 279.361328125 388 279.361328125 380.3984375 284.966796875 c 132,-1,78 - 372.797851562 290.572265625 372.797851562 290.572265625 361.599609375 290.572265625 c 6,79,-1 - 335.200195312 290.572265625 l 6,36,37 -EndSplineSet -EndChar - -StartChar: share-android -Encoding: 57468 57468 127 -Width: 512 -Flags: WO -LayerCount: 2 -Fore -SplineSet -407.46875 3.552734375 m 132,-1,1 - 375.913085938 3.552734375 375.913085938 3.552734375 353.82421875 25.6416015625 c 132,-1,2 - 331.734375 47.73046875 331.734375 47.73046875 331.734375 79.2861328125 c 4,3,4 - 331.734375 83.0830078125 331.734375 83.0830078125 333.6328125 96.962890625 c 5,5,-1 - 156.278320312 200.45703125 l 5,6,7 - 146.1953125 190.990234375 146.1953125 190.990234375 132.931640625 185.639648438 c 132,-1,8 - 119.66796875 180.265625 119.66796875 180.265625 104.53125 180.265625 c 4,9,10 - 72.9755859375 180.265625 72.9755859375 180.265625 50.8857421875 202.354492188 c 132,-1,11 - 28.796875 224.443359375 28.796875 224.443359375 28.796875 256 c 132,-1,12 - 28.796875 287.556640625 28.796875 287.556640625 50.8857421875 309.645507812 c 132,-1,13 - 72.9755859375 331.734375 72.9755859375 331.734375 104.53125 331.734375 c 4,14,15 - 119.66796875 331.734375 119.66796875 331.734375 132.931640625 326.360351562 c 132,-1,16 - 146.1953125 321.009765625 146.1953125 321.009765625 156.278320312 311.54296875 c 5,17,-1 - 333.6328125 415.037109375 l 5,18,19 - 332.375 419.450195312 332.375 419.450195312 332.055664062 423.567382812 c 132,-1,20 - 331.734375 427.66015625 331.734375 427.66015625 331.734375 432.713867188 c 4,21,22 - 331.734375 464.26953125 331.734375 464.26953125 353.82421875 486.358398438 c 132,-1,23 - 375.913085938 508.447265625 375.913085938 508.447265625 407.46875 508.447265625 c 132,-1,24 - 439.024414062 508.447265625 439.024414062 508.447265625 461.114257812 486.358398438 c 132,-1,25 - 483.203125 464.26953125 483.203125 464.26953125 483.203125 432.713867188 c 132,-1,26 - 483.203125 401.158203125 483.203125 401.158203125 461.114257812 379.068359375 c 132,-1,27 - 439.024414062 356.979492188 439.024414062 356.979492188 407.46875 356.979492188 c 4,28,29 - 392.33203125 356.979492188 392.33203125 356.979492188 379.068359375 362.353515625 c 132,-1,30 - 365.8046875 367.704101562 365.8046875 367.704101562 355.721679688 377.169921875 c 5,31,-1 - 178.3671875 273.676757812 l 5,32,33 - 179.625 269.263671875 179.625 269.263671875 179.944335938 265.146484375 c 132,-1,34 - 180.265625 261.053710938 180.265625 261.053710938 180.265625 256 c 132,-1,35 - 180.265625 250.946289062 180.265625 250.946289062 179.944335938 246.853515625 c 132,-1,36 - 179.625 242.736328125 179.625 242.736328125 178.3671875 238.323242188 c 5,37,-1 - 355.721679688 134.830078125 l 5,38,39 - 365.8046875 144.295898438 365.8046875 144.295898438 379.068359375 149.646484375 c 132,-1,40 - 392.33203125 155.020507812 392.33203125 155.020507812 407.46875 155.020507812 c 4,41,42 - 439.024414062 155.020507812 439.024414062 155.020507812 461.114257812 132.931640625 c 132,-1,43 - 483.203125 110.841796875 483.203125 110.841796875 483.203125 79.2861328125 c 132,-1,44 - 483.203125 47.73046875 483.203125 47.73046875 461.114257812 25.6416015625 c 132,-1,0 - 439.024414062 3.552734375 439.024414062 3.552734375 407.46875 3.552734375 c 132,-1,1 -407.46875 54.0419921875 m 132,-1,46 - 418.193359375 54.0419921875 418.193359375 54.0419921875 425.465820312 61.2900390625 c 132,-1,47 - 432.713867188 68.5625 432.713867188 68.5625 432.713867188 79.2861328125 c 132,-1,48 - 432.713867188 90.0107421875 432.713867188 90.0107421875 425.465820312 97.283203125 c 132,-1,49 - 418.193359375 104.53125 418.193359375 104.53125 407.46875 104.53125 c 132,-1,50 - 396.745117188 104.53125 396.745117188 104.53125 389.47265625 97.283203125 c 132,-1,51 - 382.223632812 90.0107421875 382.223632812 90.0107421875 382.223632812 79.2861328125 c 132,-1,52 - 382.223632812 68.5625 382.223632812 68.5625 389.47265625 61.2900390625 c 132,-1,45 - 396.745117188 54.0419921875 396.745117188 54.0419921875 407.46875 54.0419921875 c 132,-1,46 -104.53125 230.755859375 m 132,-1,54 - 115.254882812 230.755859375 115.254882812 230.755859375 122.52734375 238.002929688 c 132,-1,55 - 129.776367188 245.275390625 129.776367188 245.275390625 129.776367188 256 c 132,-1,56 - 129.776367188 266.724609375 129.776367188 266.724609375 122.52734375 273.997070312 c 132,-1,57 - 115.254882812 281.244140625 115.254882812 281.244140625 104.53125 281.244140625 c 132,-1,58 - 93.806640625 281.244140625 93.806640625 281.244140625 86.5341796875 273.997070312 c 132,-1,59 - 79.2861328125 266.724609375 79.2861328125 266.724609375 79.2861328125 256 c 132,-1,60 - 79.2861328125 245.275390625 79.2861328125 245.275390625 86.5341796875 238.002929688 c 132,-1,53 - 93.806640625 230.755859375 93.806640625 230.755859375 104.53125 230.755859375 c 132,-1,54 -407.46875 407.46875 m 132,-1,62 - 418.193359375 407.46875 418.193359375 407.46875 425.465820312 414.716796875 c 132,-1,63 - 432.713867188 421.989257812 432.713867188 421.989257812 432.713867188 432.713867188 c 132,-1,64 - 432.713867188 443.4375 432.713867188 443.4375 425.465820312 450.709960938 c 132,-1,65 - 418.193359375 457.958007812 418.193359375 457.958007812 407.46875 457.958007812 c 132,-1,66 - 396.745117188 457.958007812 396.745117188 457.958007812 389.47265625 450.709960938 c 132,-1,67 - 382.223632812 443.4375 382.223632812 443.4375 382.223632812 432.713867188 c 132,-1,68 - 382.223632812 421.989257812 382.223632812 421.989257812 389.47265625 414.716796875 c 132,-1,61 - 396.745117188 407.46875 396.745117188 407.46875 407.46875 407.46875 c 132,-1,62 -407.46875 79.2861328125 m 1028,69,-1 -104.53125 256 m 1028,70,-1 -407.46875 432.713867188 m 1028,71,-1 -EndSplineSet -EndChar EndChars EndSplineFont diff --git a/public/font/lichess.ttf b/public/font/lichess.ttf index 67bc4daefecc..0106e97733d0 100644 Binary files a/public/font/lichess.ttf and b/public/font/lichess.ttf differ diff --git a/public/font/lichess.woff b/public/font/lichess.woff index 13c05667b540..eb0a6e7f8ff7 100644 Binary files a/public/font/lichess.woff and b/public/font/lichess.woff differ diff --git a/public/font/lichess.woff2 b/public/font/lichess.woff2 index 2eb7e131a6d4..03f0892cdfbb 100644 Binary files a/public/font/lichess.woff2 and b/public/font/lichess.woff2 differ diff --git a/public/oops/font.html b/public/oops/font.html index 6fc37b663a6a..205b03e47fbc 100644 --- a/public/oops/font.html +++ b/public/oops/font.html @@ -41,130 +41,129 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - + + + + diff --git a/ui/analyse/src/study/studyView.ts b/ui/analyse/src/study/studyView.ts index 2ffc7021212d..e443e3bdca9f 100644 --- a/ui/analyse/src/study/studyView.ts +++ b/ui/analyse/src/study/studyView.ts @@ -22,6 +22,7 @@ import { view as topicsView, formView as topicsFormView } from './topics'; import { view as searchView } from './studySearch'; import { render as renderTrainingView } from '../view/roundTraining'; import type StudyCtrl from './studyCtrl'; +import { shareIcon } from 'common/device'; interface ToolButtonOpts { ctrl: StudyCtrl; @@ -108,7 +109,7 @@ function buttons(root: AnalyseCtrl): VNode { count: root.data.analysis && '✓', }), toolButton({ ctrl, tab: 'multiBoard', hint: 'Multiboard', icon: iconTag(licon.Multiboard) }), - toolButton({ ctrl, tab: 'share', hint: i18n.study.shareAndExport, icon: iconTag(licon.NodeBranching) }), + toolButton({ ctrl, tab: 'share', hint: i18n.study.shareAndExport, icon: iconTag(shareIcon()) }), !ctrl.relay && !ctrl.data.chapter.gamebook && h('span.help', { diff --git a/ui/common/css/abstract/_licon.scss b/ui/common/css/abstract/_licon.scss index 39d827f0f724..e87b5a864ed6 100644 --- a/ui/common/css/abstract/_licon.scss +++ b/ui/common/css/abstract/_licon.scss @@ -10,128 +10,127 @@ * licon.py) and then add it to your editor's font list. */ -$licon-Tools: ''; // e000 -$licon-Bullseye: ''; // e001 -$licon-Agent: ''; // e002 -$licon-Mic: ''; // e003 -$licon-BarChart: ''; // e004 -$licon-InfoCircle: ''; // e005 -$licon-ScreenDesktop: ''; // e006 -$licon-PhoneMobile: ''; // e007 -$licon-Multiboard: ''; // e008 -$licon-HeartOutline: ''; // e009 -$licon-FlagRacingKings: ''; // e00a -$licon-Crazyhouse: ''; // e00b -$licon-Tshirt: ''; // e00c -$licon-Heart: ''; // e00d -$licon-RadioTower: ''; // e00e -$licon-BellOutline: ''; // e00f -$licon-Disc: ''; // e010 -$licon-Wings: ''; // e011 -$licon-DiscOutline: ''; // e012 -$licon-Handset: ''; // e013 -$licon-ArrowThruApple: ''; // e014 -$licon-CautionTriangle: ''; // e015 -$licon-Link: ''; // e016 -$licon-Rabbit: ''; // e017 -$licon-NodeBranching: ''; // e018 -$licon-Gear: ''; // e019 -$licon-Reload: ''; // e01a -$licon-DieSix: ''; // e01b -$licon-FlagKingHill: ''; // e01c -$licon-FlameBlitz: ''; // e01d -$licon-Feather: ''; // e01e -$licon-Turtle: ''; // e01f -$licon-FlagChessboard: ''; // e020 -$licon-ArcheryTarget: ''; // e021 -$licon-ThreeCheckStack: ''; // e022 -$licon-UploadCloud: ''; // e023 -$licon-ExternalArrow: ''; // e024 -$licon-AnalogTv: ''; // e025 -$licon-RssFeed: ''; // e026 -$licon-StudyBoard: ''; // e027 -$licon-Shield: ''; // e028 -$licon-InkQuill: ''; // e029 -$licon-Target: ''; // e02a -$licon-Crown: ''; // e02b -$licon-LineGraph: ''; // e02c -$licon-GraduateCap: ''; // e02d -$licon-PaperAirplane: ''; // e02e -$licon-ZoomIn: ''; // e02f -$licon-Expand: ''; // e030 -$licon-Atom: ''; // e031 -$licon-List: ''; // e032 -$licon-Antichess: ''; // e033 -$licon-Microscope: ''; // e034 -$licon-ChasingArrows: ''; // e035 -$licon-CrownElite: ''; // e036 -$licon-Funnel: ''; // e037 -$licon-Checkmark: ''; // e038 -$licon-InternalArrow: ''; // e039 -$licon-PlayTriangle: ''; // e03a -$licon-GreaterThan: ''; // e03b -$licon-LessThan: ''; // e03c -$licon-DiscBig: ''; // e03d -$licon-DiscBigOutline: ''; // e03e -$licon-X: ''; // e03f -$licon-ArrowDownRight: ''; // e040 -$licon-ArrowUpRight: ''; // e041 -$licon-PlusButton: ''; // e042 -$licon-MinusButton: ''; // e043 -$licon-Fire: ''; // e044 -$licon-DownTriangle: ''; // e045 -$licon-UpTriangle: ''; // e046 -$licon-Bullet: ''; // e047 -$licon-Swords: ''; // e048 -$licon-JumpLast: ''; // e049 -$licon-JumpFirst: ''; // e04a -$licon-JumpNext: ''; // e04b -$licon-JumpPrev: ''; // e04c -$licon-Pause: ''; // e04d -$licon-Hamburger: ''; // e04e -$licon-Globe: ''; // e04f -$licon-Book: ''; // e050 -$licon-BarGraph: ''; // e051 -$licon-Keypad: ''; // e052 -$licon-Berserk: ''; // e053 -$licon-Padlock: ''; // e054 -$licon-FlagOutline: ''; // e055 -$licon-BubbleSpeech: ''; // e056 -$licon-BubbleConvo: ''; // e057 -$licon-Envelope: ''; // e058 -$licon-Group: ''; // e059 -$licon-Trophy: ''; // e05a -$licon-ThumbsUp: ''; // e05b -$licon-Back: ''; // e05c -$licon-CautionCircle: ''; // e05d -$licon-NotAllowed: ''; // e05e -$licon-RandomColor: ''; // e05f -$licon-Pencil: ''; // e060 -$licon-Cogs: ''; // e061 -$licon-Tag: ''; // e062 -$licon-Clock: ''; // e063 -$licon-Trash: ''; // e064 -$licon-User: ''; // e065 -$licon-StarOutline: ''; // e066 -$licon-Star: ''; // e067 -$licon-MoreTriangle: ''; // e068 -$licon-Eye: ''; // e069 -$licon-Power: ''; // e06a -$licon-Download: ''; // e06b -$licon-Search: ''; // e06c -$licon-Forward: ''; // e06d -$licon-UltraBullet: ''; // e06e -$licon-Storm: ''; // e06f +$licon-CautionTriangle: ''; // e000 +$licon-Link: ''; // e001 +$licon-Rabbit: ''; // e002 +$licon-ShareIos: ''; // e003 +$licon-ShareAndroid: ''; // e004 +$licon-Gear: ''; // e005 +$licon-DieSix: ''; // e006 +$licon-FlagKingHill: ''; // e007 +$licon-FlameBlitz: ''; // e008 +$licon-Feather: ''; // e009 +$licon-Turtle: ''; // e00a +$licon-FlagChessboard: ''; // e00b +$licon-ArcheryTarget: ''; // e00c +$licon-ThreeCheckStack: ''; // e00d +$licon-UploadCloud: ''; // e00e +$licon-ExternalArrow: ''; // e00f +$licon-AnalogTv: ''; // e010 +$licon-RssFeed: ''; // e011 +$licon-StudyBoard: ''; // e012 +$licon-Shield: ''; // e013 +$licon-InkQuill: ''; // e014 +$licon-Target: ''; // e015 +$licon-Crown: ''; // e016 +$licon-LineGraph: ''; // e017 +$licon-GraduateCap: ''; // e018 +$licon-PaperAirplane: ''; // e019 +$licon-ZoomIn: ''; // e01a +$licon-Expand: ''; // e01b +$licon-Atom: ''; // e01c +$licon-List: ''; // e01d +$licon-Antichess: ''; // e01e +$licon-Microscope: ''; // e01f +$licon-ChasingArrows: ''; // e020 +$licon-CrownElite: ''; // e021 +$licon-Funnel: ''; // e022 +$licon-Checkmark: ''; // e023 +$licon-InternalArrow: ''; // e024 +$licon-PlayTriangle: ''; // e025 +$licon-GreaterThan: ''; // e026 +$licon-LessThan: ''; // e027 +$licon-DiscBig: ''; // e028 +$licon-DiscBigOutline: ''; // e029 +$licon-X: ''; // e02a +$licon-ArrowDownRight: ''; // e02b +$licon-ArrowUpRight: ''; // e02c +$licon-PlusButton: ''; // e02d +$licon-MinusButton: ''; // e02e +$licon-Fire: ''; // e02f +$licon-DownTriangle: ''; // e030 +$licon-UpTriangle: ''; // e031 +$licon-Bullet: ''; // e032 +$licon-Swords: ''; // e033 +$licon-JumpLast: ''; // e034 +$licon-JumpFirst: ''; // e035 +$licon-JumpNext: ''; // e036 +$licon-JumpPrev: ''; // e037 +$licon-Pause: ''; // e038 +$licon-Hamburger: ''; // e039 +$licon-Globe: ''; // e03a +$licon-Book: ''; // e03b +$licon-BarGraph: ''; // e03c +$licon-Keypad: ''; // e03d +$licon-Berserk: ''; // e03e +$licon-Padlock: ''; // e03f +$licon-FlagOutline: ''; // e040 +$licon-BubbleSpeech: ''; // e041 +$licon-BubbleConvo: ''; // e042 +$licon-Envelope: ''; // e043 +$licon-Group: ''; // e044 +$licon-Trophy: ''; // e045 +$licon-ThumbsUp: ''; // e046 +$licon-Back: ''; // e047 +$licon-CautionCircle: ''; // e048 +$licon-NotAllowed: ''; // e049 +$licon-RandomColor: ''; // e04a +$licon-Pencil: ''; // e04b +$licon-Cogs: ''; // e04c +$licon-Tag: ''; // e04d +$licon-Clock: ''; // e04e +$licon-Trash: ''; // e04f +$licon-User: ''; // e050 +$licon-StarOutline: ''; // e051 +$licon-Star: ''; // e052 +$licon-MoreTriangle: ''; // e053 +$licon-Eye: ''; // e054 +$licon-Power: ''; // e055 +$licon-Download: ''; // e056 +$licon-Search: ''; // e057 +$licon-Forward: ''; // e058 +$licon-UltraBullet: ''; // e059 +$licon-Storm: ''; // e05a +$licon-Tools: ''; // e05b +$licon-Bullseye: ''; // e05c +$licon-Agent: ''; // e05d +$licon-Mic: ''; // e05e +$licon-BarChart: ''; // e05f +$licon-InfoCircle: ''; // e060 +$licon-ScreenDesktop: ''; // e061 +$licon-PhoneMobile: ''; // e062 +$licon-Multiboard: ''; // e063 +$licon-HeartOutline: ''; // e064 +$licon-FlagRacingKings: ''; // e065 +$licon-Crazyhouse: ''; // e066 +$licon-Tshirt: ''; // e067 +$licon-Heart: ''; // e068 +$licon-RadioTower: ''; // e069 +$licon-BellOutline: ''; // e06a +$licon-Disc: ''; // e06b +$licon-Wings: ''; // e06c +$licon-DiscOutline: ''; // e06d +$licon-Handset: ''; // e06e +$licon-ArrowThruApple: ''; // e06f $licon-Clipboard: ''; // e070 -$licon-Cancel: ''; // e071 +$licon-Move: ''; // e071 $licon-Ibeam: ''; // e072 -$licon-Voice: ''; // e073 -$licon-Mask: ''; // e074 -$licon-Move: ''; // e075 +$licon-Cancel: ''; // e073 +$licon-Voice: ''; // e074 +$licon-Mask: ''; // e075 $licon-OneHalf: ''; // e076 $licon-Mute: ''; // e077 -$licon-AccountCircle: ''; // e078 -$licon-Logo: ''; // e079 -$licon-Switch: ''; // e07a -$licon-ShareIos: ''; // e07b -$licon-ShareAndroid: ''; // e07c +$licon-Reload: ''; // e078 +$licon-AccountCircle: ''; // e079 +$licon-Logo: ''; // e07a +$licon-Switch: ''; // e07b diff --git a/ui/common/src/device.ts b/ui/common/src/device.ts index 8367be20ec63..3826875adff5 100644 --- a/ui/common/src/device.ts +++ b/ui/common/src/device.ts @@ -1,6 +1,7 @@ import { type Hooks } from 'snabbdom'; import { memoize } from './common'; import { bind } from './snabbdom'; +import * as licon from './licon'; const longPressDuration = 610; @@ -60,12 +61,13 @@ export function isCol1(): boolean { return col1cache; } +export const isTouchDevice = (): boolean => !hasMouse(); // prefer isTouchDevice() +// only use other matches for workarounds or specific presentation issues + export const isMobile = (): boolean => isAndroid() || isIOS(); export const isAndroid = (): boolean => /Android/.test(navigator.userAgent); -export const isSafari = (): boolean => /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - export const isIOS = (constraint?: { below?: number; atLeast?: number }): boolean => { let answer = ios(); if (!constraint || !answer) return answer; @@ -75,6 +77,9 @@ export const isIOS = (constraint?: { below?: number; atLeast?: number }): boolea return answer; }; +export const isIPad = (): boolean => + navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(navigator.userAgent); + export const isChrome = (): boolean => /Chrome\//.test(navigator.userAgent); export const isFirefox = (): boolean => /Firefox/.test(navigator.userAgent); @@ -84,12 +89,15 @@ export const getFirefoxMajorVersion = (): number | undefined => { return match && match.length > 1 ? parseInt(match[1]) : undefined; }; +export const isSafari = (): boolean => /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + export const isIOSChrome = (): boolean => /CriOS/.test(navigator.userAgent); -export const isTouchDevice = (): boolean => !hasMouse(); +export const isApple: () => boolean = memoize( + () => /Macintosh|iPhone|iPad|iPod/.test(navigator.userAgent), // macOS or iOS +); -export const isIPad = (): boolean => - navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(navigator.userAgent); +export const shareIcon: () => string = () => (isApple() ? licon.ShareIos : licon.ShareAndroid); export type Feature = 'wasm' | 'sharedMem' | 'simd'; diff --git a/ui/common/src/licon.ts b/ui/common/src/licon.ts index eef6d2e9cabd..521c0ef5f7ee 100644 --- a/ui/common/src/licon.ts +++ b/ui/common/src/licon.ts @@ -10,128 +10,127 @@ * licon.py) and then add it to your editor's font list. */ -export const Tools = ''; // e000 -export const Bullseye = ''; // e001 -export const Agent = ''; // e002 -export const Mic = ''; // e003 -export const BarChart = ''; // e004 -export const InfoCircle = ''; // e005 -export const ScreenDesktop = ''; // e006 -export const PhoneMobile = ''; // e007 -export const Multiboard = ''; // e008 -export const HeartOutline = ''; // e009 -export const FlagRacingKings = ''; // e00a -export const Crazyhouse = ''; // e00b -export const Tshirt = ''; // e00c -export const Heart = ''; // e00d -export const RadioTower = ''; // e00e -export const BellOutline = ''; // e00f -export const Disc = ''; // e010 -export const Wings = ''; // e011 -export const DiscOutline = ''; // e012 -export const Handset = ''; // e013 -export const ArrowThruApple = ''; // e014 -export const CautionTriangle = ''; // e015 -export const Link = ''; // e016 -export const Rabbit = ''; // e017 -export const NodeBranching = ''; // e018 -export const Gear = ''; // e019 -export const Reload = ''; // e01a -export const DieSix = ''; // e01b -export const FlagKingHill = ''; // e01c -export const FlameBlitz = ''; // e01d -export const Feather = ''; // e01e -export const Turtle = ''; // e01f -export const FlagChessboard = ''; // e020 -export const ArcheryTarget = ''; // e021 -export const ThreeCheckStack = ''; // e022 -export const UploadCloud = ''; // e023 -export const ExternalArrow = ''; // e024 -export const AnalogTv = ''; // e025 -export const RssFeed = ''; // e026 -export const StudyBoard = ''; // e027 -export const Shield = ''; // e028 -export const InkQuill = ''; // e029 -export const Target = ''; // e02a -export const Crown = ''; // e02b -export const LineGraph = ''; // e02c -export const GraduateCap = ''; // e02d -export const PaperAirplane = ''; // e02e -export const ZoomIn = ''; // e02f -export const Expand = ''; // e030 -export const Atom = ''; // e031 -export const List = ''; // e032 -export const Antichess = ''; // e033 -export const Microscope = ''; // e034 -export const ChasingArrows = ''; // e035 -export const CrownElite = ''; // e036 -export const Funnel = ''; // e037 -export const Checkmark = ''; // e038 -export const InternalArrow = ''; // e039 -export const PlayTriangle = ''; // e03a -export const GreaterThan = ''; // e03b -export const LessThan = ''; // e03c -export const DiscBig = ''; // e03d -export const DiscBigOutline = ''; // e03e -export const X = ''; // e03f -export const ArrowDownRight = ''; // e040 -export const ArrowUpRight = ''; // e041 -export const PlusButton = ''; // e042 -export const MinusButton = ''; // e043 -export const Fire = ''; // e044 -export const DownTriangle = ''; // e045 -export const UpTriangle = ''; // e046 -export const Bullet = ''; // e047 -export const Swords = ''; // e048 -export const JumpLast = ''; // e049 -export const JumpFirst = ''; // e04a -export const JumpNext = ''; // e04b -export const JumpPrev = ''; // e04c -export const Pause = ''; // e04d -export const Hamburger = ''; // e04e -export const Globe = ''; // e04f -export const Book = ''; // e050 -export const BarGraph = ''; // e051 -export const Keypad = ''; // e052 -export const Berserk = ''; // e053 -export const Padlock = ''; // e054 -export const FlagOutline = ''; // e055 -export const BubbleSpeech = ''; // e056 -export const BubbleConvo = ''; // e057 -export const Envelope = ''; // e058 -export const Group = ''; // e059 -export const Trophy = ''; // e05a -export const ThumbsUp = ''; // e05b -export const Back = ''; // e05c -export const CautionCircle = ''; // e05d -export const NotAllowed = ''; // e05e -export const RandomColor = ''; // e05f -export const Pencil = ''; // e060 -export const Cogs = ''; // e061 -export const Tag = ''; // e062 -export const Clock = ''; // e063 -export const Trash = ''; // e064 -export const User = ''; // e065 -export const StarOutline = ''; // e066 -export const Star = ''; // e067 -export const MoreTriangle = ''; // e068 -export const Eye = ''; // e069 -export const Power = ''; // e06a -export const Download = ''; // e06b -export const Search = ''; // e06c -export const Forward = ''; // e06d -export const UltraBullet = ''; // e06e -export const Storm = ''; // e06f +export const CautionTriangle = ''; // e000 +export const Link = ''; // e001 +export const Rabbit = ''; // e002 +export const ShareIos = ''; // e003 +export const ShareAndroid = ''; // e004 +export const Gear = ''; // e005 +export const DieSix = ''; // e006 +export const FlagKingHill = ''; // e007 +export const FlameBlitz = ''; // e008 +export const Feather = ''; // e009 +export const Turtle = ''; // e00a +export const FlagChessboard = ''; // e00b +export const ArcheryTarget = ''; // e00c +export const ThreeCheckStack = ''; // e00d +export const UploadCloud = ''; // e00e +export const ExternalArrow = ''; // e00f +export const AnalogTv = ''; // e010 +export const RssFeed = ''; // e011 +export const StudyBoard = ''; // e012 +export const Shield = ''; // e013 +export const InkQuill = ''; // e014 +export const Target = ''; // e015 +export const Crown = ''; // e016 +export const LineGraph = ''; // e017 +export const GraduateCap = ''; // e018 +export const PaperAirplane = ''; // e019 +export const ZoomIn = ''; // e01a +export const Expand = ''; // e01b +export const Atom = ''; // e01c +export const List = ''; // e01d +export const Antichess = ''; // e01e +export const Microscope = ''; // e01f +export const ChasingArrows = ''; // e020 +export const CrownElite = ''; // e021 +export const Funnel = ''; // e022 +export const Checkmark = ''; // e023 +export const InternalArrow = ''; // e024 +export const PlayTriangle = ''; // e025 +export const GreaterThan = ''; // e026 +export const LessThan = ''; // e027 +export const DiscBig = ''; // e028 +export const DiscBigOutline = ''; // e029 +export const X = ''; // e02a +export const ArrowDownRight = ''; // e02b +export const ArrowUpRight = ''; // e02c +export const PlusButton = ''; // e02d +export const MinusButton = ''; // e02e +export const Fire = ''; // e02f +export const DownTriangle = ''; // e030 +export const UpTriangle = ''; // e031 +export const Bullet = ''; // e032 +export const Swords = ''; // e033 +export const JumpLast = ''; // e034 +export const JumpFirst = ''; // e035 +export const JumpNext = ''; // e036 +export const JumpPrev = ''; // e037 +export const Pause = ''; // e038 +export const Hamburger = ''; // e039 +export const Globe = ''; // e03a +export const Book = ''; // e03b +export const BarGraph = ''; // e03c +export const Keypad = ''; // e03d +export const Berserk = ''; // e03e +export const Padlock = ''; // e03f +export const FlagOutline = ''; // e040 +export const BubbleSpeech = ''; // e041 +export const BubbleConvo = ''; // e042 +export const Envelope = ''; // e043 +export const Group = ''; // e044 +export const Trophy = ''; // e045 +export const ThumbsUp = ''; // e046 +export const Back = ''; // e047 +export const CautionCircle = ''; // e048 +export const NotAllowed = ''; // e049 +export const RandomColor = ''; // e04a +export const Pencil = ''; // e04b +export const Cogs = ''; // e04c +export const Tag = ''; // e04d +export const Clock = ''; // e04e +export const Trash = ''; // e04f +export const User = ''; // e050 +export const StarOutline = ''; // e051 +export const Star = ''; // e052 +export const MoreTriangle = ''; // e053 +export const Eye = ''; // e054 +export const Power = ''; // e055 +export const Download = ''; // e056 +export const Search = ''; // e057 +export const Forward = ''; // e058 +export const UltraBullet = ''; // e059 +export const Storm = ''; // e05a +export const Tools = ''; // e05b +export const Bullseye = ''; // e05c +export const Agent = ''; // e05d +export const Mic = ''; // e05e +export const BarChart = ''; // e05f +export const InfoCircle = ''; // e060 +export const ScreenDesktop = ''; // e061 +export const PhoneMobile = ''; // e062 +export const Multiboard = ''; // e063 +export const HeartOutline = ''; // e064 +export const FlagRacingKings = ''; // e065 +export const Crazyhouse = ''; // e066 +export const Tshirt = ''; // e067 +export const Heart = ''; // e068 +export const RadioTower = ''; // e069 +export const BellOutline = ''; // e06a +export const Disc = ''; // e06b +export const Wings = ''; // e06c +export const DiscOutline = ''; // e06d +export const Handset = ''; // e06e +export const ArrowThruApple = ''; // e06f export const Clipboard = ''; // e070 -export const Cancel = ''; // e071 +export const Move = ''; // e071 export const Ibeam = ''; // e072 -export const Voice = ''; // e073 -export const Mask = ''; // e074 -export const Move = ''; // e075 +export const Cancel = ''; // e073 +export const Voice = ''; // e074 +export const Mask = ''; // e075 export const OneHalf = ''; // e076 export const Mute = ''; // e077 -export const AccountCircle = ''; // e078 -export const Logo = ''; // e079 -export const Switch = ''; // e07a -export const ShareIos = ''; // e07b -export const ShareAndroid = ''; // e07c +export const Reload = ''; // e078 +export const AccountCircle = ''; // e079 +export const Logo = ''; // e07a +export const Switch = ''; // e07b