I had the same problem today with manually installing a new font by replacing the default fonts (Roboto-Regular.ttf
and Roboto-Bold.ttf
on my CyanogenMod 10.1/Android 4.2 Jellybean phone, but probably DroidSans.ttf
and DroidSans-Bold.ttf
on your phone because it's on the older Gingerbread version).
There are two ways I found to fix it. You can either reflash the Android image like Sourc7 suggested or you can use adb
to restore from a backup. Using adb is quicker, but you need to have already enabled it before your phone got stuck in the reboot loop.
Here's how I fixed it on my phone with adb from my computer.
- Run
adb root
to make adb use root permissions.
- Run
adb remount
to remount /system
as writable.
- Run
adb shell ls -l /system/fonts/
to see which font files have changed recently.
- Run
adb push /path/to/backup/DroidSans-Bold.ttf /system/fonts/
to restore the font, repeating for any system fonts that may have been changed. It's possible that other fonts may be at fault, but DroidSans-Bold.ttf
and Roboto-Bold.ttf
seem to be the main culprits when things break.
If reflashing or adb worked, your phone should now be back to where it started before the change. If you want to try changing fonts again, I recommend this method to prevent the problem from happening again.
- Use
adb pull /etc/system_fonts.xml
and adb pull /etc/fallback_fonts.xml
to get copies of your phone's font configurations.
- Make copies of those files in different folders (e.g., "backup" and "new_font").
In the "new_font" copy of system_fonts.xml
, go to the first <fileset>
XML tag and replace the listed font file names with the name of your custom font (assuming you want your phone to use it for normal, bold, italic, and bold-italic text). It should look something like this (Dotsies.ttf
is the custom font I'm using on my phone).
<family>
<nameset>
<name>sans-serif</name>
<name>arial</name>
<name>helvetica</name>
<name>tahoma</name>
<name>verdana</name>
</nameset>
<fileset>
<file>Dotsies.ttf</file>
<file>Dotsies.ttf</file>
<file>Dotsies.ttf</file>
<file>Dotsies.ttf</file>
</fileset>
</family>
Add the fonts you removed from system_fonts.xml
to a new <family>
tag in fallback_fonts.xml
, right after the opening <familyset>
tag. This way Android can find missing glyphs that aren't in your custom font. The fallback configuration should look something like this.
<family>
<fileset>
<file>Roboto-Regular.ttf</file>
<file>Roboto-Bold.ttf</file>
<file>Roboto-Italic.ttf</file>
<file>Roboto-BoldItalic.ttf</file>
</fileset>
</family>
Add your custom font to you phone via adb push /path/to/Custom-Font.ttf /system/fonts/
. As long as your custom font uses a different than than the built-in Android fonts, this should be safe.
- Replace your phone's font configuration files to the changed ones via
adb push /path/to/new_font/system_fonts.xml /etc/
and adb push /path/to/new_font/fallback_fonts.xml /etc/
.
- Reboot your phone. It should now be using the new font wherever it should, but gracefully fall back to the system fonts as-needed, without getting caught in a boot loop.