diff --git a/Makefile b/Makefile index ff6e44e3..95738b5e 100644 --- a/Makefile +++ b/Makefile @@ -124,10 +124,10 @@ android-aab-release: ls -R build/app/outputs windows-release: - flutter_distributor package --flutter-build-args=--enable-software-rendering --platform windows --targets exe,msix $(DISTRIBUTOR_ARGS) + flutter_distributor package --flutter-build-args=verbose --platform windows --targets exe,msix $(DISTRIBUTOR_ARGS) linux-release: - flutter_distributor package --flutter-build-args=--enable-software-rendering --platform linux --targets deb,rpm,appimage $(DISTRIBUTOR_ARGS) + flutter_distributor package --flutter-build-args=verbose --platform linux --targets deb,rpm,appimage $(DISTRIBUTOR_ARGS) macos-release: flutter_distributor package --platform macos --targets dmg,pkg $(DISTRIBUTOR_ARGS) diff --git a/assets/fonts/Emoji.ttf b/assets/fonts/Emoji.ttf index f40a13bf..598ec743 100644 Binary files a/assets/fonts/Emoji.ttf and b/assets/fonts/Emoji.ttf differ diff --git a/assets/fonts/emoji_source.txt b/assets/fonts/emoji_source.txt index 90639d10..6ea41613 100644 --- a/assets/fonts/emoji_source.txt +++ b/assets/fonts/emoji_source.txt @@ -1 +1,4 @@ -https://github.com/googlefonts/noto-emoji/ \ No newline at end of file +https://github.com/hiddify-com/noto-emoji + + +pyftsubset "Emoji3.ttf" --output-file=Emoji.ttf --unicodes=U+1F1E6+1F1E9,U+1F1E6+1F1EA,U+1F1E6+1F1EB,U+1F1E6+1F1EC,U+1F1E6+1F1EE,U+1F1E6+1F1F1,U+1F1E6+1F1F2,U+1F1E6+1F1F4,U+1F1E6+1F1F6,U+1F1E6+1F1F7,U+1F1E6+1F1F8,U+1F1E6+1F1F9,U+1F1E6+1F1FA,U+1F1E6+1F1FC,U+1F1E6+1F1FD,U+1F1E6+1F1FF,U+1F1E7+1F1E6,U+1F1E7+1F1E7,U+1F1E7+1F1E9,U+1F1E7+1F1EA,U+1F1E7+1F1EB,U+1F1E7+1F1EC,U+1F1E7+1F1ED,U+1F1E7+1F1EE,U+1F1E7+1F1EF,U+1F1E7+1F1F1,U+1F1E7+1F1F2,U+1F1E7+1F1F3,U+1F1E7+1F1F4,U+1F1E7+1F1F6,U+1F1E7+1F1F7,U+1F1E7+1F1F8,U+1F1E7+1F1F9,U+1F1E7+1F1FB,U+1F1E7+1F1FC,U+1F1E7+1F1FE,U+1F1E7+1F1FF,U+1F1E8+1F1E6,U+1F1E8+1F1E8,U+1F1E8+1F1E9,U+1F1E8+1F1EB,U+1F1E8+1F1EC,U+1F1E8+1F1ED,U+1F1E8+1F1EE,U+1F1E8+1F1F0,U+1F1E8+1F1F1,U+1F1E8+1F1F2,U+1F1E8+1F1F3,U+1F1E8+1F1F4,U+1F1E8+1F1F7,U+1F1E8+1F1FA,U+1F1E8+1F1FB,U+1F1E8+1F1FC,U+1F1E8+1F1FD,U+1F1E8+1F1FE,U+1F1E8+1F1FF,U+1F1E9+1F1EA,U+1F1E9+1F1EF,U+1F1E9+1F1F0,U+1F1E9+1F1F2,U+1F1E9+1F1F4,U+1F1E9+1F1FF,U+1F1EA+1F1E8,U+1F1EA+1F1EA,U+1F1EA+1F1EC,U+1F1EA+1F1ED,U+1F1EA+1F1F7,U+1F1EA+1F1F8,U+1F1EA+1F1F9,U+1F1EB+1F1EE,U+1F1EB+1F1EF,U+1F1EB+1F1F0,U+1F1EB+1F1F2,U+1F1EB+1F1F4,U+1F1EB+1F1F7,U+1F1EC+1F1E6,U+1F1EC+1F1E7,U+1F1EC+1F1E9,U+1F1EC+1F1EA,U+1F1EC+1F1EB,U+1F1EC+1F1EC,U+1F1EC+1F1ED,U+1F1EC+1F1EE,U+1F1EC+1F1F1,U+1F1EC+1F1F2,U+1F1EC+1F1F3,U+1F1EC+1F1F5,U+1F1EC+1F1F6,U+1F1EC+1F1F7,U+1F1EC+1F1F8,U+1F1EC+1F1F9,U+1F1EC+1F1FA,U+1F1EC+1F1FC,U+1F1EC+1F1FE,U+1F1ED+1F1F0,U+1F1ED+1F1F2,U+1F1ED+1F1F3,U+1F1ED+1F1F7,U+1F1ED+1F1F9,U+1F1ED+1F1FA,U+1F1EE+1F1E9,U+1F1EE+1F1EA,U+1F1EE+1F1F1,U+1F1EE+1F1F2,U+1F1EE+1F1F3,U+1F1EE+1F1F4,U+1F1EE+1F1F6,U+1F1EE+1F1F7,U+1F1EE+1F1F8,U+1F1EE+1F1F9,U+1F1EF+1F1EA,U+1F1EF+1F1F2,U+1F1EF+1F1F4,U+1F1EF+1F1F5,U+1F1F0+1F1EA,U+1F1F0+1F1EC,U+1F1F0+1F1ED,U+1F1F0+1F1EE,U+1F1F0+1F1F2,U+1F1F0+1F1F3,U+1F1F0+1F1F5,U+1F1F0+1F1F7,U+1F1F0+1F1FC,U+1F1F0+1F1FE,U+1F1F0+1F1FF,U+1F1F1+1F1E6,U+1F1F1+1F1E7,U+1F1F1+1F1E8,U+1F1F1+1F1EE,U+1F1F1+1F1F0,U+1F1F1+1F1F7,U+1F1F1+1F1F8,U+1F1F1+1F1F9,U+1F1F1+1F1FA,U+1F1F1+1F1FB,U+1F1F1+1F1FE,U+1F1F2+1F1E6,U+1F1F2+1F1E8,U+1F1F2+1F1E9,U+1F1F2+1F1EA,U+1F1F2+1F1EB,U+1F1F2+1F1EC,U+1F1F2+1F1ED,U+1F1F2+1F1F0,U+1F1F2+1F1F1,U+1F1F2+1F1F2,U+1F1F2+1F1F3,U+1F1F2+1F1F4,U+1F1F2+1F1F5,U+1F1F2+1F1F6,U+1F1F2+1F1F7,U+1F1F2+1F1F8,U+1F1F2+1F1F9,U+1F1F2+1F1FA,U+1F1F2+1F1FB,U+1F1F2+1F1FC,U+1F1F2+1F1FD,U+1F1F2+1F1FE,U+1F1F2+1F1FF,U+1F1F3+1F1E6,U+1F1F3+1F1E8,U+1F1F3+1F1EA,U+1F1F3+1F1EB,U+1F1F3+1F1EC,U+1F1F3+1F1EE,U+1F1F3+1F1F1,U+1F1F3+1F1F4,U+1F1F3+1F1F5,U+1F1F3+1F1F7,U+1F1F3+1F1FA,U+1F1F3+1F1FF,U+1F1F4+1F1F2,U+1F1F5+1F1E6,U+1F1F5+1F1EA,U+1F1F5+1F1EB,U+1F1F5+1F1EC,U+1F1F5+1F1ED,U+1F1F5+1F1F0,U+1F1F5+1F1F1,U+1F1F5+1F1F2,U+1F1F5+1F1F3,U+1F1F5+1F1F7,U+1F1F5+1F1F8,U+1F1F5+1F1F9,U+1F1F5+1F1FC,U+1F1F5+1F1FE,U+1F1F6+1F1E6,U+1F1F7+1F1EA,U+1F1F7+1F1F4,U+1F1F7+1F1F8,U+1F1F7+1F1FA,U+1F1F7+1F1FC,U+1F1F8+1F1E6,U+1F1F8+1F1E7,U+1F1F8+1F1E8,U+1F1F8+1F1E9,U+1F1F8+1F1EA,U+1F1F8+1F1EC,U+1F1F8+1F1ED,U+1F1F8+1F1EE,U+1F1F8+1F1EF,U+1F1F8+1F1F0,U+1F1F8+1F1F1,U+1F1F8+1F1F2,U+1F1F8+1F1F3,U+1F1F8+1F1F4,U+1F1F8+1F1F7,U+1F1F8+1F1F8,U+1F1F8+1F1F9,U+1F1F8+1F1FB,U+1F1F8+1F1FD,U+1F1F8+1F1FE,U+1F1F8+1F1FF,U+1F1F9+1F1E8,U+1F1F9+1F1E9,U+1F1F9+1F1EB,U+1F1F9+1F1EC,U+1F1F9+1F1ED,U+1F1F9+1F1EF,U+1F1F9+1F1F0,U+1F1F9+1F1F1,U+1F1F9+1F1F2,U+1F1F9+1F1F3,U+1F1F9+1F1F4,U+1F1F9+1F1F7,U+1F1F9+1F1F9,U+1F1F9+1F1FB,U+1F1F9+1F1FC,U+1F1F9+1F1FF,U+1F1FA+1F1E6,U+1F1FA+1F1EC,U+1F1FA+1F1F2,U+1F1FA+1F1F8,U+1F1FA+1F1FE,U+1F1FA+1F1FF,U+1F1FB+1F1E6,U+1F1FB+1F1E8,U+1F1FB+1F1EA,U+1F1FB+1F1EC,U+1F1FB+1F1EE,U+1F1FB+1F1F3,U+1F1FB+1F1FA,U+1F1FC+1F1EB,U+1F1FC+1F1F8,U+1F1FE+1F1EA,U+1F1FE+1F1F9,U+1F1FF+1F1E6,U+1F1FF+1F1F2,U+1F1FF+1F1FC diff --git a/lib/core/localization/locale_extensions.dart b/lib/core/localization/locale_extensions.dart index 91d839f0..32bb4813 100644 --- a/lib/core/localization/locale_extensions.dart +++ b/lib/core/localization/locale_extensions.dart @@ -3,7 +3,7 @@ import 'package:hiddify/gen/translations.g.dart'; extension AppLocaleX on AppLocale { String get preferredFontFamily => - this == AppLocale.fa ? FontFamily.shabnam : ""; + this == AppLocale.fa ? FontFamily.shabnam : FontFamily.emoji; String get localeName => switch (flutterLocale.toString()) { "en" => "English", diff --git a/lib/features/profile/widget/profile_tile.dart b/lib/features/profile/widget/profile_tile.dart index 05553404..522a3a12 100644 --- a/lib/features/profile/widget/profile_tile.dart +++ b/lib/features/profile/widget/profile_tile.dart @@ -14,6 +14,7 @@ import 'package:hiddify/features/common/qr_code_dialog.dart'; import 'package:hiddify/features/profile/model/profile_entity.dart'; import 'package:hiddify/features/profile/notifier/profile_notifier.dart'; import 'package:hiddify/features/profile/overview/profiles_overview_notifier.dart'; +import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hiddify/utils/utils.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:percent_indicator/percent_indicator.dart'; @@ -127,7 +128,10 @@ class ProfileTile extends HookConsumerWidget { profile.name, maxLines: 2, overflow: TextOverflow.ellipsis, - style: theme.textTheme.titleMedium, + style: + theme.textTheme.titleMedium?.copyWith( + fontFamily: FontFamily.emoji, + ), semanticsLabel: t.profile .activeProfileNameSemanticLabel( name: profile.name, @@ -391,8 +395,7 @@ class ProfileSubscriptionInfo extends HookConsumerWidget { consumed: subInfo.consumption.sizeGB(), total: subInfo.total.sizeGB(), ), - style: theme.textTheme.bodySmall - ?.copyWith(fontFamily: getEmojiFont4Desktop()), + style: theme.textTheme.bodySmall, overflow: TextOverflow.ellipsis, ), ), diff --git a/lib/features/proxy/active/active_proxy_sidebar_card.dart b/lib/features/proxy/active/active_proxy_sidebar_card.dart index 0e1424ab..462d8c59 100644 --- a/lib/features/proxy/active/active_proxy_sidebar_card.dart +++ b/lib/features/proxy/active/active_proxy_sidebar_card.dart @@ -7,6 +7,7 @@ import 'package:hiddify/core/widget/shimmer_skeleton.dart'; import 'package:hiddify/features/proxy/active/active_proxy_notifier.dart'; import 'package:hiddify/features/proxy/active/ip_widget.dart'; import 'package:hiddify/features/proxy/model/proxy_failure.dart'; +import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; class ActiveProxySideBarCard extends HookConsumerWidget { @@ -34,7 +35,8 @@ class ActiveProxySideBarCard extends HookConsumerWidget { return Text( txt, overflow: TextOverflow.ellipsis, - style: theme.textTheme.bodySmall, + style: + theme.textTheme.bodySmall?.copyWith(fontFamily: FontFamily.emoji), ); } diff --git a/lib/features/proxy/active/ip_widget.dart b/lib/features/proxy/active/ip_widget.dart index 40b4431a..75ea7ae9 100644 --- a/lib/features/proxy/active/ip_widget.dart +++ b/lib/features/proxy/active/ip_widget.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:hiddify/core/haptic/haptic_service.dart'; import 'package:hiddify/core/localization/translations.dart'; import 'package:hiddify/core/utils/ip_utils.dart'; +import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hiddify/utils/riverpod_utils.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -33,7 +34,10 @@ class IPText extends HookConsumerWidget { final t = ref.watch(translationsProvider); final isVisible = ref.watch(_showIp); final textTheme = Theme.of(context).textTheme; - final ipStyle = constrained ? textTheme.labelMedium : textTheme.labelLarge; + final ipStyle = + (constrained ? textTheme.labelMedium : textTheme.labelLarge)?.copyWith( + fontFamily: FontFamily.emoji, + ); return Semantics( label: t.proxies.ipInfoSemantics.address, diff --git a/lib/features/proxy/widget/proxy_tile.dart b/lib/features/proxy/widget/proxy_tile.dart index c891dbd3..134f6f04 100644 --- a/lib/features/proxy/widget/proxy_tile.dart +++ b/lib/features/proxy/widget/proxy_tile.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:hiddify/core/localization/locale_extensions.dart'; import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hiddify/features/proxy/model/proxy_entity.dart'; import 'package:hiddify/utils/custom_loggers.dart'; @@ -26,7 +27,7 @@ class ProxyTile extends HookConsumerWidget with PresLogger { title: Text( proxy.name, overflow: TextOverflow.ellipsis, - style: TextStyle(fontFamily: getEmojiFont4Desktop()), + style: TextStyle(fontFamily: FontFamily.emoji), ), leading: Padding( padding: const EdgeInsets.symmetric(vertical: 8), diff --git a/lib/utils/text_utils.dart b/lib/utils/text_utils.dart index 4c7decc9..4a6e2ea4 100644 --- a/lib/utils/text_utils.dart +++ b/lib/utils/text_utils.dart @@ -29,10 +29,3 @@ extension TextEditingControllerX on TextEditingController { return text.textDirection; } } - -String getEmojiFont4Desktop() { - if (Platform.isLinux || Platform.isWindows) { - return FontFamily.emoji; - } - return ""; -} diff --git a/libcore b/libcore index 43fd1ceb..f9e6f022 160000 --- a/libcore +++ b/libcore @@ -1 +1 @@ -Subproject commit 43fd1ceb1707854f736315f5e11c99d2d0dca7e5 +Subproject commit f9e6f022c89604c2dac87d0ddd0831f8337fcdc3