很久之前入手了一个Garmin的eTrex32x作为爬山爱好的辅助,按现在评论电子产品的角度,算是个功能单一,响应极慢,界面也不太美观的史前产品,但是因为手持GPS现在又完全竞争不过手机APP,从实用的角度出发,确实是个很尴尬的产品线,最近些年完全没有升级。
虽然Garmin后面有推出新的GPSMAP 67和eTrex SE之类 ,但是eTrex SE居然是个黑白屏,分辨率且不说,屏占比堪比早期诺基亚,真不明白它的用户群体是哪些。与其买这些,就不如买产品线还在更新Edge系列的码表了,看上去观察还差不多。
当前Garmin的主要地图来源还是openstreetmap(除了它自家那些死贵又不怎么更新的地图),但是Garmin有很多设备是默认没有中文等语言的,所以大部分人下载的还是英文(拼音)地图,但拼音的问题就是实在是太难读了,与日文设备上的片假名有得一拼(以前有些软件没有中文改日文是因为汉字在,经常比英文好读,但是现在往往一片片的片假名,简直就是灾难)。
回到正题,虽然网络上的大部分openstreetmap下载只提供拼音地图,但是官方网站上的地图默认都是显示当地语言的,所以也是有中文的地图下载,以下是主要的地图下载网站,不需要注册就能下载世界各地(大部分)的地图:
之前测试,下载到设备上的中文地图也可以识别,但是所有的字符其实都没有显示,得到了一张没有文字的地图。最近重新折腾的时候发现其实很多Garmin设备的语言显示其实是字库问题,字库载入了就可以显示中文,于是开始了找资料的过程。
参考资料:Garmin 64S(理论上64系列、62系列都可用)的汉化、地图安装等资源和教程
从以上信息,中文化有两部分,一个是字库支持,也就是006-d0952-05.bin这个文件,一个是chinese.gtt这个界面汉化,这个呢我其实不太需要,就不去研究了。
从搜索的结果来看,这个bin文件在Garmin的系统中是有定义的。
006-D0952-01.bin – Chinese symbols
006-D0952-02.bin – Japanese True Type Font
006-D0952-03.bin – Korean True Type Font
006-D0952-04.bin – Thai True Type Font
006-D0952-05.bin – Arabic Bold True Type Font
006-D0952-06.bin – Arabic True Type Font
006-D0952-07.bin – Hebrew Bold True Type Font
006-D0952-08.bin – Hebrew True Type Font
006-D0952-09.bin – Vietnam Bold True Type Font
006-D0952-10.bin – Vietnam True Type Font
但是为什么我们要命名为006-D0952-05.bin这个看上来是作为阿拉伯文字的字库呢,也从网上能找到答案
Modern “On the Trail” devices (Astro, Dakota, Edge 800, eTrex 20/30, GPSMAP 62/78, Montana, Oregon, Rino 6xx) only recognize the font files 05 and 06.
The 3.xx firmwares for GPSMAP 62/78, and all FWs for GPSMAP 62c/sc also can use the fonts 07 and 08.
所以命名为006-D0952-05.bin显然是没有问题的,然而上面链接中提供的006-D0952-05.bin链接已经失效了,使用这个文件名搜索,可以得到另外一个网友制作的繁体中文版的字库
经过测试简体中文它也能显示,但是会缺少很多字,比如正常是XX大街,可能在地图上你就只能找到“大街”这两个字,甚至都不会有乱码或方框来提醒字型缺失。所以还得继续查找 。
从其他的网上资源,有以下的新的知识Get.
006-D0952-*.bin files in ExtData folder are simple TTF (TrueType) font files XORed with 0x76 byte, in the very end, zero character is added, and then the filename without an extension.
所以事实上,我们就可以自己来制作所需要的字库文件,最常用易读的还是“中文雅黑”,所以按照以下的说明,先使用系统里的雅黑字体
这其中只需要一个工具是是xor,用它来生成Garmin的字库文件。
xor msyh.ttf 006-D0952-05.bin 0x76
然而一开始就想到一个可能的问题是雅黑字体其实因为字库过于全面,它是个很大的字体,超过20M,Garmin这类的旧设备很可能根本就吃不消,但是先要一试再说。
试验结果:NG
具体过程就略过了,结果就是说打开设备变得非常卡,不知是其他原因还是确实因为这个字库,系统还自动重启了一次,字体也没有正常显示,所以还得另找字体。
网上的各种字体很多,而完整的字体文件通常都很大,其中下载了一个所谓的精简字库的雅黑字体,只包含了3000+的常用字,大小仅1M,经过测试其实是可以的(也验证以上的方式是正确的),看到的所有文字都显示正常,然而3000的常用字确实还是偏小,作为地图中的字符很可能不太全面,所以还得另找合适的字体。
最终找到合适而且开源的字体居然是阿里巴巴的开源字体。
Alibaba PuHuiTi 3.0 – 55 RegularGB18030-2022 (实现级别1+实现级别2)
这个黑体和雅黑差别不大,而且实现级别1/2已经覆盖了绝大部分汉字(8.13M),而实现级别3(20.7M)大小就和雅黑几无区别了。
具体过程这里忽略,结果就是,确实可用,系统也没有再出现卡死/自动重启的现象,所有字符也都能显示。
而地图中生僻字的会不会有不在字库的问题呢?其实根本不会有。。。因为alternativaslibres.org提供的中文地图即使是不那么生僻的字,它也经常没有准确的生成出来,而是变成了一个’?’代替,尽管你在openstreetmap网站上看到是正常的字符。而这并不是字库可以解决的问题,而是alternativaslibres.org自身提供的地图中并没有包含这个字符 ,它原生就是一个?号。
这个问题大概是不会解决的吧,除非自己制作一个openstreetmap地图文件,然而这显然已经不在个我的知识范围,或许有其他网站能提供更好的中文地图下载,然而这个的影响,实在小到可以忽略,因为地名中生僻字能生到不被显示的微乎其微,不影响实际体验。