【核心提示】
只要改一下每个皮肤中FONT.XML这个文件中的几个字符位置,
就可以实现中文界面下切换皮肤全程无乱码。

【友情提示】
1、以下研究,基于KODI 19.3 64位版本。内容转载敬请署名:TXK

2、在字体配置文件里,必须使用Default 和 Arial 两个字体配置方案名称,而且!!!【不可以删除、更改】这两个字体配置方案【英文名称】。否则,KODI会出现皮肤切换失败,甚至,KODI出现[退出时报错]!

3、为了个性化皮肤字体,你可以复制默认的字体配置方案(Default),新增并修改一套字体配置方案,修改的内容包括字体方案名称、修改字体方案中的ID数字(数字规律未研究),个性化成自己字体字号大小和使用不同字体【请先自行增加中文TTF字体】。

4、低于KODI 18 的旧版本修改思路,大同小于,甚至更简单。

5、FONT.XML这个文件,一般在1080、720等开头的这些文件夹里,或者,在XML这个文件夹里(默认皮肤)。WINDOWS系统的用户,请用[写字板]程序打开,按提示,以纯文本的方式保存。

6、KODI 19版本的默认皮肤在C:\Program Files\Kodi\addons这个安装目录里,下载安装的皮肤在:C:\Users\Administrator\AppData\Roaming\Kodi\addons 这个目录里。皮肤文件夹以[skin.皮肤名称]开头,

7、下载的各种插件、皮肤、语言安装包,都在这个文件夹里,安装包可以复制出来备用:C:\Users\Administrator\AppData\Roaming\Kodi\addons\packages

-------------正文开始-----------------

【皮肤切换过程全中文的修改研究】

A、【中文字体显示研究】
通过对新版KODI(19.3)的皮肤配置研究,发现,每个皮肤的默认,都不是支持中文的,要显示中文,皮肤的字体都要切换成【基于Arial字体】(就是带有Arial字体名称的那个字体)的配置方案

B、【皮肤字体显示顺序研究】
所有的皮肤,每次配置好并使用Arial字体方案后,在不切换的情况下,都会一直显示使用【Arial字体方案】显示中文。但是,只要再次切换皮肤,关于皮肤字体的配置方案,都会自动改回皮肤自带的第一套【Default】这个默认的字体方案。使用都还是要手动再次切换为【Arial字体】配置方案。

C、【皮肤字体配置方案中的命名规则研究】
每个皮肤里,在FONT.XML这个字体配置方案文件里,一般至少会有一个以【Default】名称命名的字体方案,如果需要皮肤支持中文等其他非英文字体的显示,至少还需要一个以【Arial】名称命名的配置方案(也许这个名称可以改名,但可能KODI不会出错)。【Default】和【Arial】这两个是系统默认的配置字体。其中,如果Default这个默认的名称如果缺失,会导致皮肤的【切换功能】不能正常工作、KODI退出时报错。

D、【皮肤字体配置方案增、减规则研究】
每个皮肤里,在FONT.XML这个配置文件里,【Default】和【Arial】这两套默认的方案,[方案内容]不可删除(可以修改)、[方案名称]不可更改。其他的字体配置方案(有的皮肤会带多个字体),都可以随意增加、删除。每个字体配置方案以<fontset **** >这一行作为开头,</fontset>这一行作为结尾。

E、【皮肤全中文切换过程的修改思路】
基于以上的研究,既然每个皮肤切换的时候,KODI系统自动会恢复为每个皮肤的【第一套】默认字体方案,那么,我就可以通过把皮肤里的字体方案【顺序对调】,把支持中文的那个【Arial字体】变更为第一套。

F、【皮肤全中文切换过程的修改过程】

1、皮肤字体方案代码完整的。像这种字体方案名称:<fontset id="Default" idloc="31053">, 在< >里面还有ID数字的,如 idloc="31053", 只要互换一下Default 和 Arial 两个方案名称的字符,如:把第一套默认字体方案的<fontset id="Default" idloc="31053"> 中"Default"和第二套字体方案<fontset id="Arial" idloc="11058">中的"Arial"互换一下,就可以做到切换皮肤中文不乱码显示。其他不需要调整。【特殊例子】:APPLE TV皮肤没有Arial字体方案,是Default 和 KODI Default互相对换。

2、皮肤字体方案代码简洁、不完整的。像这种字体方案名称:<fontset id="Default">, 在< >里面没有ID数字的,
第一回试验,我只是交换一下方案名称的第一行<fontset id="Default">的"Default"。好像不行。

第二回试验,我直接把整个【Arial】方案,从第二顺序剪切到【Default】方案的前面,变成第一顺序。好像也不行。

第三回试验,我把【Arial】方案所有内容,从第二顺序剪切到【Default】方案的前面,变成第一顺序。并且,把原始方案名称(fontset id="Arial")中“Arial”名称字符,和原始方案名称(fontset id="Default")中的“Default”对换(仅对换英文字符),成功。(原理:把排在第一顺序的字体方案,变更为支持中文的字体(Arial.ttf)、名称变更为Default这个系统要求的、必须的默认方案名称)

有没有其他方法,未知。

此方法有没有不妥?科学不科学?未知。

-------------正文结束-----------------

【附录1】

1645395284-【教程】[中文界面语言]状态下,皮肤切换过程无乱码方法

本压缩包里,包含了多个修改过的皮肤FONT.XML字体配置方案,替换对应的皮肤目录里的FONT.XML,可以实现切换皮肤的过程全中文。【友情提示】-同名覆盖/替换之前,请【备份原始文件】:皮肤目录下的FONT.XML文件,以备复原。

【附录2】
1、KODI皮肤的字体配置方案文件名是FONT.XML,在这个文件里面,可以包含多套字体方案。以下是某一套完整的字体方案必须包含的【基本构造】单元要素的注解

<fontset id="Default" idloc="31053">---字体配置方案的开头(后面的数字不同皮肤会不相同,数字不是必须的,可以不要)

<!-- Fonts from TXK-QQ:1712248308 --> ---这种用<!-- -->包含的代码行,是代码的注解行,本行不工作。

<font>-------字体配置开始
<name>font12</name>-------皮肤字体配置名
<filename>arial.ttf</filename>-------字体文件夹里的字体名
<size>28</size>-------皮肤字体配置的字号
<linespacing>1.11</linespacing>-------皮肤字体的行间距
<style>uppercase</style>-------皮肤字体的样式,例:bold 是加粗。
<aspect>0.80</aspect>-------皮肤字体的宽高比
</font>-------字体配置结束

</fontset >---字体配置方案的结尾

 

2、包含多套字体方案的完整FONT.XML【基本构造】。以下内容包含两种字体方案。多套字体方案的代码,不可以互相嵌套,只以按顺序接龙。

<?xml version="1.0" encoding="utf-8"?>

<!-- 全部字体方案 开始-->
<fonts>

<!-- 第一套方案:默认方案 开始-->
<fontset id="Default">

<!-- 默认方案里的某个字体配置,开始 -->
<font>
<name>font12</name>
<size>28</size>
</font>
<!-- 默认方案里的某个字体配置,结束 -->

</fontset>
<!-- 第一套方案:默认方案 结束-->

 

<!-- 第二套方案:自己修改的方案 开始-->
<fontset id="TXK的字体方案">

<!-- 方案里的某个字体配置,开始 -->
<font>
<name>font12</name>
<size>28</size>
</font>
<!-- 方案里的某个字体配置,结束 -->

</fontset>
<!-- 第二套方案:自己修改的方案 结束-->

</fonts>
<!-- 全部字体方案 结束-->

Loading



微信扫描下方的二维码阅读本文

作者 txk

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据