From 9f6f843cd3b11f84b6e9f750716466e21fb0104b Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Sat, 16 Nov 2024 10:27:49 -0600 Subject: [PATCH 1/4] remove node-branching from icon font --- modules/ui/src/main/Icon.scala | 241 ++++++------ public/font/lichess.sfd | 577 ++++++++++++++--------------- public/font/lichess.ttf | Bin 29640 -> 29516 bytes public/font/lichess.woff | Bin 18624 -> 18580 bytes public/font/lichess.woff2 | Bin 15272 -> 15160 bytes public/oops/font.html | 241 ++++++------ ui/analyse/src/study/studyView.ts | 3 +- ui/common/css/abstract/_licon.scss | 241 ++++++------ ui/common/src/device.ts | 18 +- ui/common/src/licon.ts | 241 ++++++------ 10 files changed, 762 insertions(+), 800 deletions(-) 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 67bc4daefecc71e3f4ae932d415eb48f44b25fe2..0106e97733d04ac1f5a30405fc47e3c33cd1864b 100644 GIT binary patch delta 856 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

FZLdw4idy9mAmL|D5C3K|8j)Z^y!f}_5u*)d2 z0OY885wVCTWAezN;!s7_9yhh@_8_TGe)@AGOU#7=0+0;rh`qnzqgw5s5)fSm8^sG zB|(GJ8oMhm49c+aQe*V8Waj4KjCtc501Qrg>UwHcRx`_*d1hrhDAYu(duAMbQ7oSV z(9Vm{bpDFaIJ<4t?P2CkB*@JL{+T^sJOH67py-m|k5oqTY$NQ1c?n@lwqW6w2$gB@ zY~voY>@iE4IH+*HRLk@7bOHw)BUNlr;R6~Mm+33xjZCE`Ph0Eb?POVt#uD1_0gB(x z-Q85s!$cw5-SNK8gXKxuLd+&|Z$i|Y6?HaQS55}&Bqj3!_Ogn|RX*1H@(Ce$E3on$N6*6JeOA2EuijzSctMs@Z z(*1cyZ!ub6;aT$oAjXYjMdg1c8zb zxt}cPS0<0%51P;8Lb=H^I)%Hj+}+)5dGjtpV$tp1=ZUU(NQssK@Kswk6ADX|-2Mqg@?M18PW4^^)h6bn1xrvZ7wFIn&HKV|7zw+%D+F-0y#r zKK?lT1g40fg4zph00SVy@x;zH%O1FKG@7WLl`}7~G~4?-@VNtn-~!k)nm%k|kgk@N zpFZsW(N*=jQ3->%SPoX3OT+oOy>Er-6vMlU4M#Y<79X7c;TMt2T& z%Z^vi*|$E!^gQz!x7u@Xy=l4n?8zu!b!9`np7>HS* z#5Nm@wmsB`J75F#?QZWvl&x+v1!T+Ox;)&q(8eSs6nL@K=$vmRZIr5Bs&;?a*p#|q zXubNbbUrt;!t%^k>-(ufm{LM&PcYT$hL>uFq03E!Gp$#1ovg_WziFW+d?Sl3Sw%>f6Y#gn(Z z^s2c-9bCKX#<#xV=j^36w(ch*(GCp(=!@2my|~f1)PChn z*S|^A3s{G}zZV5QyTDr6(KeNJEs4`;ErD@vj$=0ULYWL1ImQ95&X%>;+IBleQj z?0PG^+>2)akBkf|81zd&2D?;feDS~=u5oT4G?>o~!b$lNN zJ1)W9emw~4{+q544RM@!=DRI#9MpZk9$a{?NW~ZZ-)R5nHvp69L*IW>$Cl$Z5LE3@ zlr++4XPtA-Hk@->=bW>>PED{yVg&-&1|W^b2Os_0e&mGblXx{PKEvnu0$<`Qe2s7LExyC|_yIrSC;W_Ga0S2OH~fx2 z@FxfrG-@zbXwbsoD%P;*;NTH(4T6Y-j19Ip!Vbsy>rhip#yfwN#E@$&7uL9SDO6P^ z&0h4Oaoz@!J_Wvc6Gi zGnE+Cin*T0l89SOy9# zii`wHjwi?7cgnbuj{>>6pya#4nwVzfk{N{TcSehk+6P|hmSS(iz%R~+O^U5aT&}Wn zY-fYEj%2+w?!RIVf~DR0Cs;JXlvq@1$;~XsIG|~5qE>&EX%5eT@;UWN4u?xr-R~3A zv}t+L$l;`%2b-g+a!TGUI^)iZVr7I6hPkul^Bm4`8Mj{QIJ=s=pe)6-KcJP7m`<9G zk4{k#-i!m~$g`HZDoevMZmh4ksJvg#Dv}e!%Qf!;)su=PvaBb8YU}lSF@)n(&_R`} z%Cd@qS+{?S(@J}{@l$piwm$H<5uZbu#D{h_OKt9|sB$PO((C0}s@09k|OBvW{V+-w@xRz>Lu3B|U^k!2AR$r-DnFAh2{eD2U5?|2;imSx(z z*r&CO+~<0-^0FnV7uhBuRb^{AjbrlCjg$8_PWyjW?B}Urm-afN2a|M5lIF&({3-io z)WYmk&2gQ4ScKL)R-Lbm<^3+(WQN2av`muDxLz9U6w-Yl`=2xJYoX&^>vQBX#nwm~ z4-<2t+IW?E5sQkgJ(t_ZY`pDf7enGs`;(Sj9XXw*F13;sgh4qau-YSuWa delta 18320 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 diff --git a/public/font/lichess.woff2 b/public/font/lichess.woff2 index 2eb7e131a6d4719e040bed0fcd271786bf3431da..03f0892cdfbbec5f1a23f6bd4646e903ec6b50aa 100644 GIT binary patch literal 15160 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 literal 15272 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

FlP&&eR1O|AaFT`a9&M_+6`8uLn$X3OjK9?vsx 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - + + + + diff --git a/ui/analyse/src/study/studyView.ts b/ui/analyse/src/study/studyView.ts index 2ffc7021212d..7406de6dcf75 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..3bf24b6adadc 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,13 @@ export const getFirefoxMajorVersion = (): number | undefined => { return match && match.length > 1 ? parseInt(match[1]) : undefined; }; -export const isIOSChrome = (): boolean => /CriOS/.test(navigator.userAgent); +export const isSafari = (): boolean => /^((?!chrome|android).)*safari/i.test(navigator.userAgent); -export const isTouchDevice = (): boolean => !hasMouse(); +export const isIOSChrome = (): boolean => /CriOS/.test(navigator.userAgent); -export const isIPad = (): boolean => - navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(navigator.userAgent); +export const shareIcon: string = /Macintosh|iPhone|iPad|iPod/.test(navigator.userAgent) // macOS or iOS + ? 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 From 0e0cb373c03765fc41ad8e905818a83d4f6565a8 Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Sat, 16 Nov 2024 10:29:16 -0600 Subject: [PATCH 2/4] enforce incremental sequence numbers in lichess.sfd --- bin/gen/licon.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/bin/gen/licon.py b/bin/gen/licon.py index 1c227617b503..f7abc53f2a7a 100755 --- a/bin/gen/licon.py +++ b/bin/gen/licon.py @@ -114,19 +114,28 @@ def parse_codes(): unnamed_re = re.compile(r'$|uni[a-f0-9]{4}', re.IGNORECASE) codes = {} warnings = [] + corrected = [] with open('lichess.sfd', 'r') as f: lines = f.readlines() name = None + n = 0 + line_ok = True 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: + code_point = 57344 + n + n += 1 + 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) + 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])) From 14214b329e7d6179880ba51b7ebb4b2e89727b0a Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Sat, 16 Nov 2024 10:39:34 -0600 Subject: [PATCH 3/4] only touch lichess.sfd when changed --- bin/gen/licon.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/bin/gen/licon.py b/bin/gen/licon.py index f7abc53f2a7a..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,32 +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 - line_ok = True 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: - code_point = 57344 + n 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') else: codes[name] = code_point corrected.append(line) - with open('lichess.sfd', 'w') as f: - f.write(''.join(corrected)) + 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])) From ab14fa8b6de89a355b10898bde0702e6d85975e6 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 17 Nov 2024 10:47:13 +0100 Subject: [PATCH 4/4] memoized ui/common device.isApple, compute device.shareIcon when needed --- ui/analyse/src/study/studyView.ts | 2 +- ui/common/src/device.ts | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ui/analyse/src/study/studyView.ts b/ui/analyse/src/study/studyView.ts index 7406de6dcf75..e443e3bdca9f 100644 --- a/ui/analyse/src/study/studyView.ts +++ b/ui/analyse/src/study/studyView.ts @@ -109,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(shareIcon) }), + 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/src/device.ts b/ui/common/src/device.ts index 3bf24b6adadc..3826875adff5 100644 --- a/ui/common/src/device.ts +++ b/ui/common/src/device.ts @@ -93,9 +93,11 @@ export const isSafari = (): boolean => /^((?!chrome|android).)*safari/i.test(nav export const isIOSChrome = (): boolean => /CriOS/.test(navigator.userAgent); -export const shareIcon: string = /Macintosh|iPhone|iPad|iPod/.test(navigator.userAgent) // macOS or iOS - ? licon.ShareIos - : licon.ShareAndroid; +export const isApple: () => boolean = memoize( + () => /Macintosh|iPhone|iPad|iPod/.test(navigator.userAgent), // macOS or iOS +); + +export const shareIcon: () => string = () => (isApple() ? licon.ShareIos : licon.ShareAndroid); export type Feature = 'wasm' | 'sharedMem' | 'simd';