Skip to content

Commit 65fea2e

Browse files
committed
app: build lexeicons.ttf font for custom/brand icons
1 parent 0d7d4e4 commit 65fea2e

File tree

9 files changed

+51
-9
lines changed

9 files changed

+51
-9
lines changed

app/fonts/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,25 @@ and place it in `app/fonts/Hubot-Sans.ttf`.
2525
```bash
2626
$ cp ~/Downloads/"HubotSans[slnt,wdth,wght].ttf" ~/dev/lexe/public/app/fonts/Hubot-Sans.ttf
2727
```
28+
29+
30+
## Rebuild `lexeicons.ttf` from raw SVGs
31+
32+
The <./lexeicons-svgs> directory contains raw, unprocessed SVG icons that we
33+
use. These are currently sourced from: <https://simpleicons.org>.
34+
35+
We can't easily or efficiently render .svg icons in flutter, so we need to
36+
process and collect these .svg icons into a .ttf font file, <./lexeicons.ttf>.
37+
38+
### Process
39+
40+
1. Open <https://fontello.com>.
41+
2. Drag all the raw .svg icon files in the <./lexeicons-svgs> directory into the
42+
"Custom Icons" section on Fontello.
43+
3. Select all "Custom Icons".
44+
4. Name the font `lexeicons` and hit "Download webfont".
45+
5. Unzip and extract `lexeicons.ttf` from the downloaded zip file to
46+
`public/app/fonts/lexeicons.ttf`.
47+
6. Open <../lib/style.dart> and update the corresponding `LxIcons` codepoints
48+
to match the codepoints assigned by Fontello (under the "Customize Codes"
49+
tab).
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

app/fonts/lexeicons-svgs/02_x.svg

Lines changed: 3 additions & 0 deletions
Loading

app/fonts/lexeicons.ttf

6.25 KB
Binary file not shown.

app/ios/Podfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ EXTERNAL SOURCES:
7676

7777
SPEC CHECKSUMS:
7878
app_links: f3e17e4ee5e357b39d8b95290a9b2c299fca71c6
79-
app_rs_dart: dfe0493fb21658411a6fc4d887c967e35e311cb7
79+
app_rs_dart: a1e1f11cc54d38820b575dc2d1634810e88a4acb
8080
camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4
8181
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342
8282
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7

app/lib/route/wallet.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ class WalletDrawer extends StatelessWidget {
701701
),
702702
IconButton(
703703
onPressed: () => url.open("https://x.com/lexeapp"),
704-
icon: const Icon(LxIcons.twitter, size: Fonts.size600),
704+
icon: const Icon(LxIcons.x, size: Fonts.size600),
705705
color: LxColors.foreground,
706706
),
707707
IconButton(
@@ -710,7 +710,8 @@ class WalletDrawer extends StatelessWidget {
710710
color: LxColors.foreground,
711711
),
712712
IconButton(
713-
onPressed: () => url.open("https://github.com/lexe-app"),
713+
onPressed: () =>
714+
url.open("https://github.com/lexe-app/lexe-public"),
714715
icon: const Icon(LxIcons.github, size: Fonts.size600),
715716
color: LxColors.foreground,
716717
),

app/lib/style.dart

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -941,14 +941,21 @@ final class LxIcons {
941941
/// Website icon (globe/web)
942942
static const IconData website = Symbols.language_rounded;
943943

944-
/// X/Twitter icon (bird/twitter)
945-
static const IconData twitter = Symbols.group_rounded;
944+
// Custom brand icons (Material Icons/Symbols don't have any brand logos)
945+
// See: <app/fonts/README.md> for how these were sourced and generated.
946946

947-
/// Discord icon (chat bubble)
948-
static const IconData discord = Symbols.forum_rounded;
947+
/// Discord icon (discord logo)
948+
static const IconData discord = LxCustomIconData(0xe800);
949949

950-
/// GitHub icon (code/repository)
951-
static const IconData github = Symbols.code_rounded;
950+
/// GitHub icon (github logo)
951+
static const IconData github = LxCustomIconData(0xe801);
952+
953+
/// X/Twitter icon (X logo)
954+
static const IconData x = LxCustomIconData(0xe802);
955+
}
956+
957+
class LxCustomIconData extends IconData {
958+
const LxCustomIconData(super.codePoint) : super(fontFamily: 'Lexe Icons');
952959
}
953960

954961
/// Screen width breakpoints

app/pubspec.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ flutter:
192192
- asset: fonts/InterVariable.ttf
193193
- asset: fonts/InterVariable-Italic.ttf
194194
style: italic
195+
- family: "Lexe Icons"
196+
fonts:
197+
- asset: fonts/lexeicons.ttf
195198

196199
# GLSL GPU fragment shaders
197200
#

0 commit comments

Comments
 (0)