查看: 928|回复: 2
打印 上一主题 下一主题

[求助] 请教一个android Mdict的字体问题

[复制链接]

该用户从未签到

42

主题

1737

回帖

2万

积分

状元

Rank: 9Rank: 9Rank: 9

积分
20641

灌水大神章小蜜蜂章笑傲江湖章

跳转到指定楼层
1
发表于 2016-3-11 08:51:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 belleyeah 于 2016-3-11 08:55 编辑

论坛里的老字典:Oxford Talking Dictionary
这个词典,需要一个字体显示音标,解开mdx里面是这样的:
<FONT face='Ipa-samd Uclphon1 SILDoulosL'>&#34;

于是乎,放狗一搜,第一个就搜到这个字体文件,电脑这个字体安装后完美显示音标,
然后我在安卓是这样操作的:
建立一个与字典的同名css文件:Oxford Talking Dictionary.css,这个css会被读取。
里面这样写:
@font-face {
    font-family: 'Ipa-samd Uclphon1 SILDoulosL';
    src: url('ip769292.TTF');
}

然后把css和字体文件跟mdx放在一起。
结果发现设置无效。

然后我又试了把文件设成绝对路径,同时把字体放到mdict/fonts下面
    src: url('file:///sdcard/Mdict/fonts/ip769292.TTF');

还是失败。
请教问题出在什么地方?

ip769292.rar

27.3 KB, 下载次数: 4, 下载积分: 米 -5 粒

该用户从未签到

46

主题

468

回帖

3743

积分

贡士

Rank: 6Rank: 6

积分
3743

灌水大神章小蜜蜂章笑傲江湖章

2
发表于 2016-3-11 10:36:01 | 只看该作者
本帖最后由 gnoweb 于 2016-3-11 10:45 编辑

举例来说,如果你的 CSS 文件放在 /sdcard/Mdict/doc/style.css 这里,你要用 /sdcard/Mdict/fonts/ip769292.TTF,那 CSS 文件里面就要写成:

src: url('/sdcard/Mdict/fonts/ip769292.TTF');



src: url('../fonts/ip769292.TTF');

file:/// 这种前缀,貌似 Android 上没这样用的,是 Windows 下的写法吧。

另外,即使你 CSS 都设置好了,也不会工作的。因为你的 CSS 文件里面,还没有为 font 标签指定字体,必须要为 HTML 标记指定样式规则才可以出来效果。所以应该加上:

font {
        font-family: 'Ipa-samd Uclphon1 SILDoulosL';
}

才行。

但是问题来了:

我们这样写的话,对于 font 这个标记来说,浏览器会看到两个规则:

face='Ipa-samd Uclphon1 SILDoulosL'                        
style="font-family: 'Ipa-samd Uclphon1 SILDoulosL';"  (从外部 CSS 文件读到的规则)

这时浏览器怎么处理?如果它选第一个,抛弃第二个,那么,浏览器它肯定找不到 'Ipa-samd Uclphon1 SILDoulosL' 这个字体,这样就没效果了。
如果它选第二个,抛弃第一个,那一切完美,因为它可以从 CSS 文件里的路径信息那里得到它需要的字体。
或者它觉得两个规则不好选,那就干脆全部都抛弃,那和选第一个规则后的结局相同。

<FONT face='Ipa-samd Uclphon1 SILDoulosL'> 这个东西,HTML 的 font 标签,HTML 3.2 里面正常的东西, HTML 4.01 已经不推荐使用了,HTML 5 已经把它列为淘汰过时的元素标记了,所以不保证以后所有的浏览器都能支持。另外,最主要的是,它已经被 w3c 抛弃,对 CSS 来说,FONT 已死,CSS 与 FONT 组合用的话行为无法预测,因为从来没人会把 CSS 样式与 FONT 标签组合起来用,一般是与 SPAN 或 DIV 之类的组合。

所以如果在手机上没效果的话,你要解包 MDX,把 FONT 标记替换为 SPAN,把 face 属性及里面的字体信息都删掉。改成如下类似的形式:

<span class="ipa">...</span>


把 CSS 里面加上:

.ipa {
        font-family: 'Ipa-samd Uclphon1 SILDoulosL';
}

才行。



点评

多谢指教!真乃高人也。  发表于 2016-3-15 12:09