From 13459ef2384f1f06b79a6514805117819fe1cedf Mon Sep 17 00:00:00 2001 From: kmmiio99o Date: Tue, 25 Aug 2026 22:29:16 +0200 Subject: [PATCH 1/2] fix: hook createAssetTypeface with fallback for older Discord versions --- .../xposed/modules/appearance/FontsModule.kt | 54 +++++++++++++------ 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt index ec6111e..d9e59e7 100644 --- a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt +++ b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt @@ -51,21 +51,45 @@ object FontsModule : Module() { } override fun onLoad(packageParam: XC_LoadPackage.LoadPackageParam) = with(packageParam) { - XposedHelpers.findAndHookMethod( - "com.facebook.react.views.text.ReactFontManager\$Companion", - classLoader, - "createAssetTypeface", - String::class.java, - Int::class.java, - "android.content.res.AssetManager", - object : XC_MethodReplacement() { - override fun replaceHookedMethod(param: MethodHookParam): Typeface? { - val fontFamilyName: String = param.args[0].toString() - val style: Int = param.args[1] as Int - val assetManager: AssetManager = param.args[2] as AssetManager - return createAssetTypeface(fontFamilyName, style, assetManager) - } - }) + val hookCallback = object : XC_MethodReplacement() { + override fun replaceHookedMethod(param: MethodHookParam): Typeface? { + val fontFamilyName: String = param.args[0].toString() + val style: Int = param.args[1] as Int + val assetManager: AssetManager = param.args[2] as AssetManager + return createAssetTypeface(fontFamilyName, style, assetManager) + } + } + + val hooked = try { + XposedHelpers.findAndHookMethod( + "com.facebook.react.common.assets.ReactFontManager\$Companion", + classLoader, + "createAssetTypeface", + String::class.java, + Int::class.java, + "android.content.res.AssetManager", + hookCallback + ) + true + } catch (_: Throwable) { + false + } + + if (!hooked) { + try { + XposedHelpers.findAndHookMethod( + "com.facebook.react.views.text.ReactFontManager\$Companion", + classLoader, + "createAssetTypeface", + String::class.java, + Int::class.java, + "android.content.res.AssetManager", + hookCallback + ) + } catch (e: Throwable) { + Log.e("Failed to hook createAssetTypeface in either class", e) + } + } val fontDefFile = File(appInfo.dataDir, "${Constants.FILES_DIR}/fonts.json").apply { asFile() } if (!fontDefFile.exists()) return@with From 32794a134ca7bd6c735e7022b334d5e2c8f0a53f Mon Sep 17 00:00:00 2001 From: kmmiio99o Date: Tue, 25 Aug 2026 22:29:27 +0200 Subject: [PATCH 2/2] chore: bump version to 1.3.5 and manify release --- app/build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index eb5546d..ef4f2be 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,8 +12,8 @@ android { applicationId = "ShiggyXposed.xposed" minSdk = 24 targetSdk = 36 - versionCode = 1340 - versionName = "1.3.4" + versionCode = 1350 + versionName = "1.3.5" } signingConfigs { @@ -33,7 +33,7 @@ android { } release { isDebuggable = false - isMinifyEnabled = false + isMinifyEnabled = true signingConfig = signingConfigs.getByName("release") } }