掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1185|回复: 2

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

[复制链接]

该用户从未签到

发表于 2016-3-11 08:51:12 | 显示全部楼层 |阅读模式
本帖最后由 belleyeah 于 2016-3-11 08:55 编辑 # @/ V" k4 c( t1 `! J% ]- N

; [% m/ v$ v' f/ u) H论坛里的老字典:Oxford Talking Dictionary
0 g8 `  t8 F5 j2 h7 p; N9 R这个词典,需要一个字体显示音标,解开mdx里面是这样的:
$ P* N) C& Q) a( u4 s- l
<FONT face='Ipa-samd Uclphon1 SILDoulosL'>&#34;
, @3 f3 ^5 w; C- ]3 \6 c+ ?
于是乎,放狗一搜,第一个就搜到这个字体文件,电脑这个字体安装后完美显示音标,
% y6 x/ [# s, ]然后我在安卓是这样操作的:  P  o# _3 ?- P- U/ N
建立一个与字典的同名css文件:Oxford Talking Dictionary.css,这个css会被读取。. r. w) P- _; x
里面这样写:7 j9 l8 t. x% L/ S# H
@font-face {
, u6 q2 ]5 \/ J" K" ]7 k    font-family: 'Ipa-samd Uclphon1 SILDoulosL';" W6 X* U' U/ ^; O$ Y! o
    src: url('ip769292.TTF');/ e4 {+ f1 p2 L7 ~
}

& b' d8 \4 s- c) X  I1 N9 i然后把css和字体文件跟mdx放在一起。- D, R8 h2 K7 E8 c# x
结果发现设置无效。) H- `6 A0 h% T4 L  w

2 `1 q* l, c2 K( S! t6 ~  R, B然后我又试了把文件设成绝对路径,同时把字体放到mdict/fonts下面9 q% N/ s- W( \" c
    src: url('file:///sdcard/Mdict/fonts/ip769292.TTF');

' z8 z+ x7 _  {& U# _0 @3 w% Q. x还是失败。! U5 W5 u" y& X5 ~- a- S3 c  @
请教问题出在什么地方?
( ~. b/ I( A3 K/ O

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

发表于 2016-3-11 10:36:01 | 显示全部楼层
本帖最后由 gnoweb 于 2016-3-11 10:45 编辑 2 ^3 C$ J5 Y6 _8 z2 q" ]
$ s9 B2 H3 @2 S  W5 {1 q) ~" L
举例来说,如果你的 CSS 文件放在 /sdcard/Mdict/doc/style.css 这里,你要用 /sdcard/Mdict/fonts/ip769292.TTF,那 CSS 文件里面就要写成:
5 z7 r& A1 m) U: z7 I" `8 V8 x" m, c
src: url('/sdcard/Mdict/fonts/ip769292.TTF');
; S* h" B5 f7 Q- z. j( {
7 M- a" f# C9 E! s8 r! M) B; r( I1 U+ u
. T, r' B3 H; s4 S
src: url('../fonts/ip769292.TTF');) }. G3 ~" j, B9 L9 R4 Z/ Y% s, t% M/ q1 ^
- [0 |2 O  V8 S5 r. i5 L
file:/// 这种前缀,貌似 Android 上没这样用的,是 Windows 下的写法吧。
: ~/ P4 Z$ S/ I9 j* m% m& r
+ O1 ?' ~" v1 J3 W. q3 c# m另外,即使你 CSS 都设置好了,也不会工作的。因为你的 CSS 文件里面,还没有为 font 标签指定字体,必须要为 HTML 标记指定样式规则才可以出来效果。所以应该加上:
& w6 x8 U' Q& x7 J# Y8 v
" m# {  C* x: Z" Z1 U8 ]: q, S4 vfont {
" f. }, c$ X$ T, h        font-family: 'Ipa-samd Uclphon1 SILDoulosL';' R5 e. j% q! \) ]* G
}
3 y+ x' j. h* a* R" ~7 S
7 c1 x" A; ], J1 p3 k才行。
8 D+ `$ ~& l" ^- G. G( I; p9 C% t+ I0 \5 N5 U) w: Y
但是问题来了:
+ o- }$ y) J; b/ ~1 [" R+ E7 X- M. {1 D/ I& t
我们这样写的话,对于 font 这个标记来说,浏览器会看到两个规则:
: T; p# K' M4 H9 {" H
" R, S+ d- M: m* K, r, Rface='Ipa-samd Uclphon1 SILDoulosL'                        $ P, Q- {) W0 f: g/ s9 T# k) |) V
style="font-family: 'Ipa-samd Uclphon1 SILDoulosL';"  (从外部 CSS 文件读到的规则)4 c& t  Q/ O" l: N

; l( f6 S: l3 R6 J  Y8 i: T, O+ L0 s这时浏览器怎么处理?如果它选第一个,抛弃第二个,那么,浏览器它肯定找不到 'Ipa-samd Uclphon1 SILDoulosL' 这个字体,这样就没效果了。
) S( {/ Y% v+ V  V4 i) @. U2 r4 }7 b如果它选第二个,抛弃第一个,那一切完美,因为它可以从 CSS 文件里的路径信息那里得到它需要的字体。8 i# J3 D! T+ o5 P) ^7 x  j
或者它觉得两个规则不好选,那就干脆全部都抛弃,那和选第一个规则后的结局相同。! L% V- U4 x; Y7 o) j) d
; g$ Y. ^5 {6 n0 H1 Q5 ~
<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 之类的组合。$ L) c0 n  B% T  R

1 D/ M  Y4 j, F+ o3 J所以如果在手机上没效果的话,你要解包 MDX,把 FONT 标记替换为 SPAN,把 face 属性及里面的字体信息都删掉。改成如下类似的形式:
- S; x; S6 j& \. x+ W. F6 I" r
. ~4 ^2 k  J5 L: C6 w, a  X7 k<span class="ipa">...</span>0 ?1 p( {. ~6 @
/ W4 T2 M$ }  p; G8 K

; J. b; B# V! e( H( a7 S2 X把 CSS 里面加上:7 L4 a7 a* ?  W4 ?/ _* _' T3 c2 s

0 G- j; O. T. M& e; W# [.ipa {- {) ^( b2 O) i0 Y9 L! i7 E6 {% ~
        font-family: 'Ipa-samd Uclphon1 SILDoulosL';. g7 ~8 S4 s7 ?2 z' G
}
  G) F' v% u5 Z. A5 i: d0 G( ^# Y  J- A
才行。4 M! |! _* a4 G8 }
3 |$ E) f1 l$ a& E8 \4 h' h$ q: Z

, }4 B  }- ]( L* P* P# g) F! A( q0 A* q- W  @

点评

多谢指教!真乃高人也。  发表于 2016-3-15 12:09
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

小黑屋|手机版|Archiver|PDAWIKI |网站地图

GMT+8, 2025-5-8 09:51 , Processed in 0.022821 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表