gpt4 book ai didi

java - Android 中不显示 BitmapFont 特殊字符,但在桌面版中可以使用

转载 作者:行者123 更新时间:2023-11-29 21:06:35 35 4
gpt4 key购买 nike

我有一个支持安卓和桌面版本的libgdx项目。对于字体,我之前使用 FreeTypeFontGenerator 来生成我的字体。字体工作正常,但后来我决定用 .fnt 和 .png 文件创建我的 BitmapFonts,以便选择也支持 html 项目(FreeTypeFontGenerator 与 html 不兼容)

问题:如果我启动 android 项目,则不会显示(ü、ñ 等)等特殊字符:

--> 在android中文本是这样显示的:ber

--> 在桌面文本中正确显示如下:über

奇怪的是,如果我运行桌面版,特殊字符就可以正常工作,尽管桌面版使用完全相同的代码(因为我在 core 项目中创建字体):

font = new BitmapFont(Gdx.files.internal("fonts/gooddog40.fnt"), 
new TextureRegion(new Texture("fonts/gooddog40.png")));

.fnt 和 .png 文件对我来说看起来很好(而且它在桌面上运行良好!),因为我可以看到其中包含的特殊字符。我使用 Hiero 字体生成器创建以下内容:

gooddog40.png

enter image description here

gooddog40.fnt

info face="GoodDog" size=40 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0
common lineHeight=42 base=34 scaleW=512 scaleH=512 pages=1 packed=0
page id=0 file="gooddog40.png"
chars count=149
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=34 xadvance=7 page=0 chnl=0
char id=106 x=0 y=0 width=19 height=34 xoffset=-5 yoffset=8 xadvance=8 page=0 chnl=0
char id=116 x=19 y=0 width=18 height=32 xoffset=0 yoffset=10 xadvance=16 page=0 chnl=0
char id=89 x=37 y=0 width=16 height=31 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=124 x=53 y=0 width=8 height=30 xoffset=1 yoffset=7 xadvance=7 page=0 chnl=0
char id=125 x=61 y=0 width=14 height=30 xoffset=0 yoffset=7 xadvance=13 page=0 chnl=0
char id=83 x=75 y=0 width=21 height=30 xoffset=-1 yoffset=7 xadvance=18 page=0 chnl=0
char id=82 x=96 y=0 width=19 height=30 xoffset=0 yoffset=6 xadvance=16 page=0 chnl=0
char id=80 x=115 y=0 width=22 height=30 xoffset=-1 yoffset=6 xadvance=19 page=0 chnl=0
char id=75 x=137 y=0 width=16 height=30 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=92 x=153 y=0 width=20 height=29 xoffset=-1 yoffset=7 xadvance=17 page=0 chnl=0
char id=64 x=173 y=0 width=22 height=29 xoffset=0 yoffset=7 xadvance=20 page=0 chnl=0
char id=123 x=195 y=0 width=21 height=29 xoffset=-1 yoffset=7 xadvance=18 page=0 chnl=0
char id=93 x=216 y=0 width=21 height=29 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
char id=91 x=237 y=0 width=24 height=29 xoffset=0 yoffset=7 xadvance=21 page=0 chnl=0
char id=33 x=261 y=0 width=11 height=29 xoffset=0 yoffset=7 xadvance=9 page=0 chnl=0
char id=121 x=272 y=0 width=22 height=29 xoffset=-4 yoffset=13 xadvance=14 page=0 chnl=0
char id=112 x=294 y=0 width=16 height=29 xoffset=0 yoffset=13 xadvance=14 page=0 chnl=0
char id=108 x=310 y=0 width=8 height=29 xoffset=0 yoffset=7 xadvance=8 page=0 chnl=0
char id=107 x=318 y=0 width=18 height=29 xoffset=-1 yoffset=7 xadvance=15 page=0 chnl=0
char id=103 x=336 y=0 width=15 height=29 xoffset=0 yoffset=13 xadvance=13 page=0 chnl=0
char id=98 x=351 y=0 width=18 height=29 xoffset=0 yoffset=7 xadvance=16 page=0 chnl=0
char id=88 x=369 y=0 width=23 height=29 xoffset=-1 yoffset=7 xadvance=20 page=0 chnl=0
char id=84 x=392 y=0 width=20 height=29 xoffset=-1 yoffset=7 xadvance=17 page=0 chnl=0
char id=81 x=412 y=0 width=20 height=29 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
char id=77 x=432 y=0 width=27 height=29 xoffset=-1 yoffset=7 xadvance=24 page=0 chnl=0
char id=193 x=459 y=0 width=18 height=37 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=0
char id=192 x=477 y=0 width=18 height=37 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=0
char id=196 x=0 y=37 width=18 height=36 xoffset=0 yoffset=1 xadvance=16 page=0 chnl=0
char id=195 x=18 y=37 width=20 height=36 xoffset=0 yoffset=1 xadvance=16 page=0 chnl=0
char id=194 x=38 y=37 width=18 height=36 xoffset=0 yoffset=1 xadvance=16 page=0 chnl=0
char id=217 x=56 y=37 width=21 height=35 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=0
char id=203 x=77 y=37 width=16 height=35 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=0
char id=220 x=93 y=37 width=21 height=34 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=219 x=114 y=37 width=21 height=34 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=218 x=135 y=37 width=21 height=34 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=202 x=156 y=37 width=17 height=34 xoffset=-1 yoffset=1 xadvance=14 page=0 chnl=0
char id=200 x=173 y=37 width=16 height=34 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=0
char id=197 x=189 y=37 width=18 height=34 xoffset=0 yoffset=3 xadvance=16 page=0 chnl=0
char id=251 x=207 y=37 width=16 height=33 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=0
char id=249 x=223 y=37 width=16 height=33 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=0
char id=227 x=239 y=37 width=17 height=33 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=0
char id=209 x=256 y=37 width=17 height=33 xoffset=-1 yoffset=1 xadvance=14 page=0 chnl=0
char id=207 x=273 y=37 width=19 height=33 xoffset=-3 yoffset=1 xadvance=6 page=0 chnl=0
char id=206 x=292 y=37 width=19 height=33 xoffset=-3 yoffset=1 xadvance=6 page=0 chnl=0
char id=204 x=311 y=37 width=9 height=33 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=0
char id=201 x=320 y=37 width=16 height=33 xoffset=0 yoffset=2 xadvance=14 page=0 chnl=0
char id=250 x=336 y=37 width=16 height=32 xoffset=0 yoffset=5 xadvance=15 page=0 chnl=0
char id=224 x=352 y=37 width=17 height=32 xoffset=0 yoffset=5 xadvance=14 page=0 chnl=0
char id=205 x=369 y=37 width=13 height=32 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0
char id=252 x=382 y=37 width=16 height=31 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=0
char id=228 x=398 y=37 width=17 height=31 xoffset=0 yoffset=6 xadvance=14 page=0 chnl=0
char id=226 x=415 y=37 width=17 height=31 xoffset=0 yoffset=6 xadvance=14 page=0 chnl=0
char id=165 x=432 y=37 width=16 height=31 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=225 x=448 y=37 width=17 height=30 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=213 x=465 y=37 width=19 height=30 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=0
char id=232 x=484 y=37 width=15 height=29 xoffset=0 yoffset=6 xadvance=14 page=0 chnl=0
char id=231 x=0 y=73 width=18 height=29 xoffset=-1 yoffset=12 xadvance=15 page=0 chnl=0
char id=212 x=18 y=73 width=19 height=29 xoffset=0 yoffset=5 xadvance=16 page=0 chnl=0
char id=211 x=37 y=73 width=19 height=29 xoffset=0 yoffset=5 xadvance=16 page=0 chnl=0
char id=210 x=56 y=73 width=19 height=29 xoffset=0 yoffset=5 xadvance=16 page=0 chnl=0
char id=161 x=75 y=73 width=11 height=29 xoffset=0 yoffset=7 xadvance=9 page=0 chnl=0
char id=76 x=86 y=73 width=20 height=29 xoffset=-1 yoffset=7 xadvance=17 page=0 chnl=0
char id=72 x=106 y=73 width=17 height=29 xoffset=0 yoffset=8 xadvance=16 page=0 chnl=0
char id=70 x=123 y=73 width=16 height=29 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=66 x=139 y=73 width=18 height=29 xoffset=0 yoffset=7 xadvance=16 page=0 chnl=0
char id=65 x=157 y=73 width=18 height=29 xoffset=0 yoffset=8 xadvance=16 page=0 chnl=0
char id=235 x=175 y=73 width=15 height=28 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=234 x=190 y=73 width=16 height=28 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=0
char id=233 x=206 y=73 width=15 height=28 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=229 x=221 y=73 width=17 height=28 xoffset=0 yoffset=9 xadvance=14 page=0 chnl=0
char id=214 x=238 y=73 width=19 height=28 xoffset=0 yoffset=6 xadvance=16 page=0 chnl=0
char id=191 x=257 y=73 width=15 height=28 xoffset=0 yoffset=7 xadvance=13 page=0 chnl=0
char id=38 x=272 y=73 width=13 height=28 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=0
char id=35 x=285 y=73 width=22 height=28 xoffset=-1 yoffset=8 xadvance=20 page=0 chnl=0
char id=47 x=307 y=73 width=19 height=28 xoffset=-1 yoffset=8 xadvance=15 page=0 chnl=0
char id=41 x=326 y=73 width=14 height=28 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=0
char id=40 x=340 y=73 width=16 height=28 xoffset=-1 yoffset=8 xadvance=13 page=0 chnl=0
char id=63 x=356 y=73 width=16 height=28 xoffset=-1 yoffset=8 xadvance=13 page=0 chnl=0
char id=102 x=372 y=73 width=16 height=28 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=90 x=388 y=73 width=25 height=28 xoffset=-1 yoffset=8 xadvance=22 page=0 chnl=0
char id=86 x=413 y=73 width=18 height=28 xoffset=0 yoffset=7 xadvance=16 page=0 chnl=0
char id=242 x=431 y=73 width=13 height=27 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=0
char id=241 x=444 y=73 width=18 height=27 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=0
char id=199 x=462 y=73 width=20 height=27 xoffset=0 yoffset=14 xadvance=18 page=0 chnl=0
char id=37 x=482 y=73 width=26 height=27 xoffset=-1 yoffset=9 xadvance=25 page=0 chnl=0
char id=36 x=0 y=102 width=16 height=27 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=113 x=16 y=102 width=27 height=27 xoffset=0 yoffset=15 xadvance=15 page=0 chnl=0
char id=85 x=43 y=102 width=21 height=27 xoffset=0 yoffset=9 xadvance=19 page=0 chnl=0
char id=245 x=64 y=102 width=19 height=26 xoffset=-1 yoffset=5 xadvance=11 page=0 chnl=0
char id=244 x=83 y=102 width=14 height=26 xoffset=-1 yoffset=5 xadvance=11 page=0 chnl=0
char id=239 x=97 y=102 width=18 height=26 xoffset=-2 yoffset=8 xadvance=7 page=0 chnl=0
char id=238 x=115 y=102 width=18 height=26 xoffset=-3 yoffset=8 xadvance=7 page=0 chnl=0
char id=237 x=133 y=102 width=10 height=26 xoffset=1 yoffset=8 xadvance=7 page=0 chnl=0
char id=59 x=143 y=102 width=8 height=26 xoffset=0 yoffset=14 xadvance=6 page=0 chnl=0
char id=71 x=151 y=102 width=18 height=26 xoffset=0 yoffset=11 xadvance=16 page=0 chnl=0
char id=69 x=169 y=102 width=16 height=26 xoffset=0 yoffset=9 xadvance=14 page=0 chnl=0
char id=246 x=185 y=102 width=15 height=25 xoffset=0 yoffset=6 xadvance=11 page=0 chnl=0
char id=243 x=200 y=102 width=13 height=25 xoffset=0 yoffset=6 xadvance=11 page=0 chnl=0
char id=236 x=213 y=102 width=10 height=25 xoffset=-1 yoffset=9 xadvance=7 page=0 chnl=0
char id=100 x=223 y=102 width=16 height=25 xoffset=0 yoffset=11 xadvance=15 page=0 chnl=0
char id=78 x=239 y=102 width=15 height=25 xoffset=0 yoffset=9 xadvance=14 page=0 chnl=0
char id=74 x=254 y=102 width=17 height=25 xoffset=0 yoffset=9 xadvance=15 page=0 chnl=0
char id=56 x=271 y=102 width=19 height=24 xoffset=0 yoffset=12 xadvance=17 page=0 chnl=0
char id=120 x=290 y=102 width=23 height=24 xoffset=-1 yoffset=15 xadvance=19 page=0 chnl=0
char id=117 x=313 y=102 width=16 height=24 xoffset=0 yoffset=13 xadvance=15 page=0 chnl=0
char id=104 x=329 y=102 width=15 height=24 xoffset=0 yoffset=12 xadvance=14 page=0 chnl=0
char id=97 x=344 y=102 width=17 height=24 xoffset=0 yoffset=13 xadvance=14 page=0 chnl=0
char id=87 x=361 y=102 width=27 height=24 xoffset=0 yoffset=10 xadvance=24 page=0 chnl=0
char id=73 x=388 y=102 width=8 height=24 xoffset=0 yoffset=10 xadvance=6 page=0 chnl=0
char id=68 x=396 y=102 width=19 height=24 xoffset=0 yoffset=10 xadvance=15 page=0 chnl=0
char id=57 x=415 y=102 width=14 height=23 xoffset=0 yoffset=13 xadvance=12 page=0 chnl=0
char id=54 x=429 y=102 width=18 height=23 xoffset=-1 yoffset=13 xadvance=15 page=0 chnl=0
char id=115 x=447 y=102 width=17 height=23 xoffset=-1 yoffset=14 xadvance=14 page=0 chnl=0
char id=114 x=464 y=102 width=16 height=23 xoffset=-1 yoffset=13 xadvance=13 page=0 chnl=0
char id=109 x=480 y=102 width=25 height=23 xoffset=0 yoffset=15 xadvance=24 page=0 chnl=0
char id=105 x=0 y=129 width=8 height=23 xoffset=1 yoffset=11 xadvance=7 page=0 chnl=0
char id=99 x=8 y=129 width=18 height=23 xoffset=-1 yoffset=12 xadvance=15 page=0 chnl=0
char id=79 x=26 y=129 width=19 height=23 xoffset=0 yoffset=11 xadvance=16 page=0 chnl=0
char id=167 x=45 y=129 width=24 height=22 xoffset=0 yoffset=14 xadvance=23 page=0 chnl=0
char id=58 x=69 y=129 width=8 height=22 xoffset=0 yoffset=14 xadvance=6 page=0 chnl=0
char id=48 x=77 y=129 width=21 height=22 xoffset=0 yoffset=13 xadvance=17 page=0 chnl=0
char id=55 x=98 y=129 width=19 height=22 xoffset=-1 yoffset=13 xadvance=16 page=0 chnl=0
char id=53 x=117 y=129 width=17 height=22 xoffset=0 yoffset=14 xadvance=16 page=0 chnl=0
char id=52 x=134 y=129 width=19 height=22 xoffset=-1 yoffset=14 xadvance=15 page=0 chnl=0
char id=50 x=153 y=129 width=18 height=22 xoffset=0 yoffset=14 xadvance=17 page=0 chnl=0
char id=49 x=171 y=129 width=9 height=22 xoffset=0 yoffset=14 xadvance=7 page=0 chnl=0
char id=118 x=180 y=129 width=20 height=22 xoffset=-1 yoffset=11 xadvance=17 page=0 chnl=0
char id=67 x=200 y=129 width=20 height=22 xoffset=0 yoffset=14 xadvance=18 page=0 chnl=0
char id=42 x=220 y=129 width=19 height=21 xoffset=0 yoffset=8 xadvance=17 page=0 chnl=0
char id=62 x=239 y=129 width=19 height=21 xoffset=-1 yoffset=11 xadvance=15 page=0 chnl=0
char id=122 x=258 y=129 width=21 height=21 xoffset=0 yoffset=15 xadvance=19 page=0 chnl=0
char id=119 x=279 y=129 width=26 height=21 xoffset=0 yoffset=15 xadvance=24 page=0 chnl=0
char id=60 x=305 y=129 width=20 height=20 xoffset=0 yoffset=12 xadvance=18 page=0 chnl=0
char id=51 x=325 y=129 width=17 height=20 xoffset=-1 yoffset=14 xadvance=14 page=0 chnl=0
char id=101 x=342 y=129 width=15 height=20 xoffset=0 yoffset=15 xadvance=14 page=0 chnl=0
char id=110 x=357 y=129 width=13 height=18 xoffset=1 yoffset=17 xadvance=14 page=0 chnl=0
char id=111 x=370 y=129 width=13 height=17 xoffset=0 yoffset=14 xadvance=11 page=0 chnl=0
char id=61 x=383 y=129 width=13 height=16 xoffset=0 yoffset=13 xadvance=11 page=0 chnl=0
char id=43 x=396 y=129 width=15 height=15 xoffset=0 yoffset=14 xadvance=13 page=0 chnl=0
char id=34 x=411 y=129 width=13 height=14 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=0
char id=94 x=424 y=129 width=14 height=13 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=0
char id=44 x=438 y=129 width=8 height=13 xoffset=0 yoffset=27 xadvance=6 page=0 chnl=0
char id=39 x=446 y=129 width=7 height=13 xoffset=0 yoffset=7 xadvance=5 page=0 chnl=0
char id=126 x=453 y=129 width=17 height=11 xoffset=0 yoffset=7 xadvance=15 page=0 chnl=0
char id=96 x=470 y=129 width=9 height=10 xoffset=0 yoffset=7 xadvance=7 page=0 chnl=0
char id=180 x=479 y=129 width=8 height=9 xoffset=0 yoffset=8 xadvance=6 page=0 chnl=0
char id=168 x=487 y=129 width=14 height=9 xoffset=1 yoffset=7 xadvance=13 page=0 chnl=0
char id=46 x=501 y=129 width=8 height=9 xoffset=0 yoffset=27 xadvance=6 page=0 chnl=0
char id=45 x=0 y=152 width=16 height=6 xoffset=0 yoffset=21 xadvance=14 page=0 chnl=0
kernings count=-1

我尝试调试的内容:

  1. 清理项目并再次启动
  2. 添加了一条日志语句:Gdx.app.log("font", "contains ü: "+ font.containsCharacter('ü')); 打印 font: contains ü : true 对于 android 和桌面项目!!所以在某些时候,android 项目知道字体中存在特殊字符,但为什么它不能显示它?

此字体在 android 中不显示特殊字符,但在桌面中却显示特殊字符的原因可能是什么?

最佳答案

现在我确定了问题的根本原因:最终是编码问题。

有点惊讶,因为我在桌面和安卓上使用了相同的文本资源,但事实证明安卓版本不喜欢编码ISO-8859-1,而桌面是没关系。

将编码更改为 utf-8 修复了 android 中特殊字符的显示。


最后,我有以下解决方案来获取文本翻译,同时我继续为两个项目使用相同的资源包属性(以 utf-8 编码):

public String get(String key) {
if(dictBundle.containsKey(key)) {
if (isDesktop) {
try {
return new String(dictBundle.getString(key).getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return dictBundle.getString(key);
}
return key;
}

其中 dictBundle 是我的 ResourceBundle,我通过以下方式设置 boolean 值 isDesktop:

isDesktop = Gdx.app.getType().equals(Application.ApplicationType.Desktop);

关于java - Android 中不显示 BitmapFont 特殊字符,但在桌面版中可以使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24341691/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com