Skip to content

TextMeshPro Fallback Font not working on Unity 6000.0.58f2 (IL2CPP) despite using u6000 font asset #812

@lieyanqzu

Description

@lieyanqzu

Hello,

I am trying to use the TextMeshPro fallback font feature for Chinese translation in an IL2CPP game running on a very recent Unity 6000 build, but the fallback font is not being applied, and translated text appears as missing characters/squares.

I am already using the arialuni_sdf_u6000 font asset provided by the community in issue #787 specifically made for Unity 6000, but it still has no effect.

Environment

  • Game: Duel Masters Play's
  • Unity Version: 6000.0.58f2
  • Architecture: IL2CPP (64-bit)
  • BepInEx Version: 6.0.0-be.754
  • AutoTranslator Version: 5.5.1

Steps to Reproduce

  1. Place the arialuni_sdf_u6000 asset bundle into the game root.
  2. Configure AutoTranslatorConfig.ini with FallbackFontTextMeshPro=arialuni_sdf_u6000.
  3. Launch the game. The translations are generated, but the TMP text fails to render the Chinese characters properly (still lots of square characters).

Relevant Logs

[Message: Preloader] BepInEx 6.0.0-be.754 - DuelMastersPlay's (2026/3/3 20:51:04)
[Message: Preloader] Built from commit c0386134c69e9a1b9935db7264a1e1e35ebb2b88
[Info   :   BepInEx] System platform: Windows 10 64-bit
[Info   :   BepInEx] Process bitness: 64-bit (x64)
[Info   :   BepInEx] Running under Unity 6000.0.58f2
[Info   :   BepInEx] Runtime version: 6.0.7
[Info   :   BepInEx] Runtime information: .NET 6.0.7
[Info   : Preloader] 0 patcher plugins loaded
[Info   : Preloader] 0 assemblies discovered
[Message:AssemblyPatcher] Executing 0 patch(es)
[Message:   BepInEx] Chainloader initialized
[Debug  : Preloader] Runtime invoke pointer: 0x7FFE4EC9AF90
[Debug  :DobbyDetour] Preparing detour from 0x7FFE4EC9AF90 to 0x7FFECA433264
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE0ECA0000
[Debug  :DobbyDetour] Original: 7FFE4EC9AF90, Trampoline: 7FFE0ECA0000, diff: 3FFFAF90
[Debug  : Preloader] Runtime invoke patched
[Info   :   BepInEx] 3 plugins to load
[Info   :   BepInEx] Loading [Graphics Settings 0.7.0]
[Info   :Graphics Settings] Plugin is loaded!
[Info   :Graphics Settings] VSync Off & FPS 144 applied!
[Debug  :Il2CppInterop] GenericMethod::GetMethod found: 0x7FFE4EC604A0
[Debug  :DobbyDetour] Preparing detour from 0x7FFE4EC604A0 to 0x7FFECA4332A4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE0ECA0020
[Debug  :DobbyDetour] Original: 7FFE4EC604A0, Trampoline: 7FFE0ECA0020, diff: 3FFC0480
[Debug  :Il2CppInterop] il2cpp_image_get_class: 0x7FFE4EC9AB40
[Debug  :Il2CppInterop] Image::GetType: 0x7FFE4EC72580
[Debug  :Il2CppInterop] imageGetTypeXrefs.Length: 2
[Debug  :Il2CppInterop] getTypeInfoFromHandle: 7FFE4EC7F110
[Debug  :Il2CppInterop] MetadataCache::GetTypeInfoFromTypeDefinitionIndex found: 0x7FFE4EC31F10
[Debug  :DobbyDetour] Preparing detour from 0x7FFE4EC31F10 to 0x7FFECA4332E4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE0ECA0040
[Debug  :DobbyDetour] Original: 7FFE4EC31F10, Trampoline: 7FFE0ECA0040, diff: 3FF91ED0
[Debug  :Il2CppInterop] Couldn't fetch Class::GetDefaultFieldValue with signatures, using method traversal
[Debug  :Il2CppInterop] il2cpp_field_static_get_value: 0x7FFE4EC9A840
[Debug  :Il2CppInterop] Field::StaticGetValue: 0x7FFE4EC275B0
[Debug  :Il2CppInterop] Field::StaticGetValueInternal: 0x7FFE4EC275C0
[Debug  :Il2CppInterop] Class::GetDefaultFieldValue found: 0x7FFE4EC7D0B0
[Debug  :DobbyDetour] Preparing detour from 0x7FFE4EC7D0B0 to 0x7FFECA433324
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE0ECA0060
[Debug  :DobbyDetour] Original: 7FFE4EC7D0B0, Trampoline: 7FFE0ECA0060, diff: 3FFDD050
[Warning:Il2CppInterop] Class::Init signatures have been exhausted, using a substitute!
[Debug  :Il2CppInterop] Picked mono_class_instance_size as a Class::Init substitute
[Debug  :Il2CppInterop] Class::Init: 0x7FFE4EC9B7D0
[Debug  :Il2CppInterop] il2cpp_class_from_il2cpp_type: 0x7FFE4EC22420
[Debug  :Il2CppInterop] Class::FromIl2CppType found: 0x7FFE4EC7C100
[Debug  :DobbyDetour] Preparing detour from 0x7FFE4EC7C100 to 0x7FFECA433364
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE0ECA0080
[Debug  :DobbyDetour] Original: 7FFE4EC7C100, Trampoline: 7FFE0ECA0080, diff: 3FFDC080
[Debug  :Il2CppInterop] il2cpp_class_from_name: 0x7FFE4EC9A410
[Debug  :Il2CppInterop] Class::FromName found: 0x7FFE4EC7C660
[Debug  :DobbyDetour] Preparing detour from 0x7FFE4EC7C660 to 0x7FFECA4333A4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE0ECA00A0
[Debug  :DobbyDetour] Original: 7FFE4EC7C660, Trampoline: 7FFE0ECA00A0, diff: 3FFDC5C0
[Info   :Il2CppInterop] Registered mono type Il2CppInterop.Runtime.DelegateSupport+Il2CppToMonoDelegateReference in il2cpp domain
[Info   :   BepInEx] Loading [XUnity Auto Translator 5.5.1]
[Info   :Il2CppInterop] Registered mono type XUnity.AutoTranslator.Plugin.Core.PluginLoader+AutoTranslatorProxyBehaviour in il2cpp domain
[Info   :   BepInEx] Loading [XUnity Resource Redirector 2.1.0]
[Message:   BepInEx] Chainloader startup complete
[Debug  : Preloader] Runtime invoke unpatched
[Info   :Graphics Settings] VSync Off & FPS 144 applied!
[Error  :Il2CppInterop] Nested type ToolbarButtonSize on GUI not found!
[Debug  :DobbyDetour] Preparing detour from 0x7FFE52E55B20 to 0x7FFECA4336E4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E60000
[Debug  :DobbyDetour] Original: 7FFE52E55B20, Trampoline: 7FFE12E60000, diff: 3FFF5B20
[Debug  :DobbyDetour] Preparing detour from 0x7FFE52E54500 to 0x7FFECA433724
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E60020
[Debug  :DobbyDetour] Original: 7FFE52E54500, Trampoline: 7FFE12E60020, diff: 3FFF44E0
[Debug  :DobbyDetour] Preparing detour from 0x7FFE527E3F90 to 0x7FFECA433764
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E60040
[Debug  :DobbyDetour] Original: 7FFE527E3F90, Trampoline: 7FFE12E60040, diff: 3F983F50
[Debug  :DobbyDetour] Preparing detour from 0x7FFE527ECF40 to 0x7FFECA4337A4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E60060
[Debug  :DobbyDetour] Original: 7FFE527ECF40, Trampoline: 7FFE12E60060, diff: 3F98CEE0
[Debug  :DobbyDetour] Preparing detour from 0x7FFE5283C220 to 0x7FFECA4337E4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E60080
[Debug  :DobbyDetour] Original: 7FFE5283C220, Trampoline: 7FFE12E60080, diff: 3F9DC1A0
[Debug  :DobbyDetour] Preparing detour from 0x7FFE52830DF0 to 0x7FFECA433824
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E600A0
[Debug  :DobbyDetour] Original: 7FFE52830DF0, Trampoline: 7FFE12E600A0, diff: 3F9D0D50
[Debug  :DobbyDetour] Preparing detour from 0x7FFE528310F0 to 0x7FFECA433864
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E600C0
[Debug  :DobbyDetour] Original: 7FFE528310F0, Trampoline: 7FFE12E600C0, diff: 3F9D1030
[Debug  :DobbyDetour] Preparing detour from 0x7FFE52831350 to 0x7FFECA4338A4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E600E0
[Debug  :DobbyDetour] Original: 7FFE52831350, Trampoline: 7FFE12E600E0, diff: 3F9D1270
[Debug  :DobbyDetour] Preparing detour from 0x7FFE52830C80 to 0x7FFECA4338E4
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E60100
[Debug  :DobbyDetour] Original: 7FFE52830C80, Trampoline: 7FFE12E60100, diff: 3F9D0B80
[Debug  :DobbyDetour] Preparing detour from 0x7FFE52830B00 to 0x7FFECA433924
[Debug  :DobbyDetour] Prepared detour; Trampoline: 0x7FFE12E60120
[Debug  :DobbyDetour] Original: 7FFE52830B00, Trampoline: 7FFE12E60120, diff: 3F9D09E0
[Warning:  HarmonyX] AccessTools.Method: Could not find method for type TMPro.TMP_Text and name SetCharArray and parameters (Il2CppInterop.Runtime.InteropTypes.Arrays.Il2CppStructArray<int>, int, int)
[Debug  :Il2CppInterop] ICall UnityEngine.AssetBundle::LoadFromFile_Internal(System.String,System.UInt32,System.UInt64) not resolved
[Debug  :Il2CppInterop] ICall UnityEngine.AssetBundle::LoadAssetWithSubAssets_Internal not resolved
[Debug  :Il2CppInterop] ICall UnityEngine.Font::CreateDynamicFontFromOSFont(System.String,System.Int32) not resolved
[Info   :Il2CppInterop] Registered mono type XUnity.AutoTranslator.Plugin.Core.Il2CppManagedEnumerator in il2cpp domain
[Info   :Graphics Settings] VSync Off & FPS 144 applied!
[Info   :Graphics Settings] VSync Off & FPS 144 applied!
[Info   :Graphics Settings] VSync Off & FPS 144 applied!

Relevant Configuration (AutoTranslatorConfig.ini)

[General]
Language=zh
FromLanguage=ja

[TextFrameworks]
EnableIMGUI=False
EnableUGUI=True
EnableNGUI=True
EnableTextMeshPro=True
EnableTextMesh=False
EnableFairyGUI=True

[Behaviour]
OverrideFont=
OverrideFontSize=
OverrideFontTextMeshPro=
FallbackFontTextMeshPro=arialuni_sdf_u6000

Question

Are the LoadFromFile_Internal and SetCharArray missing methods indicative of Unity code stripping in this specific game, or is there an updated approach to injecting TMP fonts for Unity 6000.0.58f2? Any guidance or workarounds would be greatly appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions