折腾了一下 web font - www.undozen.com - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
undozen
V2EX    分享创造

折腾了一下 web font - www.undozen.com

  •  
  •   undozen
    undoZen 2013-07-14 18:25:48 +08:00 5550 次点击
    这是一个创建于 4542 天前的主题,其中的信息可能已经有所发展或是发生改变。
    效果见我的个人主页 http://www.undozen.com
    请先忽略一下这个暴丑的版面设计吧

    会先以默认字体打开,加载完字体后再替换成我选的那个字体。因为有点大(2M+),可能要花一点时间下载,只需下载一次,完成后以后刷新都不用再下载。

    原理是把字体转成 base64,然后用 ajax 取下来存到 localStorage(如果连 localStorage 都不支持,就别跟我说 webfont 了),以后如果 localStorage 有字体的话就直接用了。默认的 localStorage 有 5M 空间呢。不用白不用。

    解决了 FOUT(Flash Of unstyled Text)问题(有没有这样的体验,访问 web font 的网页时如果网速慢,文字半天不出来)。现在不太好的体验是可能你阅读文章到一半,字体下好了,文字都会闪一下。

    不知怎么解决好。要不第一次就完全只用默认字体,只是把个性化字体保存下来,第二次开始再使用这个字体?或者加载字体时给个提示让用户有个“将会闪一下”的心理准备?
    17 条回复    1970-01-01 08:00:00 +08:00
    undozen
        1
    undozen  
    OP
       2013-07-14 19:04:40 +08:00
    现在把字体 json 做成 jsonp 放到又拍云,速度块一点了。普通网页上在加上很多图之类的,感觉应该就不明显。这应该是一个可用的方案如果非要用 web fonts 甚至用中文字体的话。
    msg7086
        2
    msg7086  
       2013-07-14 19:34:42 +08:00
    FontSubset 用于筛选字符精简字体的工具。供参考。

    http://www.sapikachu.net/用于mkv内嵌的字体精简工具2011-12-03更新/
    P233
        3
    P233  
       2013-07-14 19:40:26 +08:00
    多谢楼主,准备也折腾一下 :)
    wxm4ever
        4
    wxm4ever  
       2013-07-14 20:40:39 +08:00
    为什么不用 google 的 webfont loader?
    然后中文字体的话可以通过工具来把字库精简下.
    undozen
        5
    undozen  
    OP
       2013-07-14 21:10:00 +08:00
    @wxm4ever webfont loader 还是无法避免 FOUT 吧。
    并且即便 HTTP 上有 cache,也还是需要发起请求,仍然比不上直接用 localStorage 缓存
    aeryen
        6
    aeryen  
       2013-07-14 22:02:20 +08:00
    @undozen 我前几天试用了一下 webfont loader,似乎可以做到在体未加载时隐藏内容,加载后激活事件将内容显示,就避免了FOUT。
    undozen
        7
    undozen  
    OP
       2013-07-15 07:56:36 +08:00
    GBK 版的字体收到了,有 11M,转成 woff 也有 6M,再按这个方法用不了。真要想想 @msg7086 提供的工具要怎样用起来。
    kurtrossel
        8
    kurtrossel  
       2013-07-15 10:49:19 +08:00
    笔记本直接停止响应2分钟

    字体挺好看
    undozen
        9
    undozen  
    OP
       2013-07-15 13:22:30 +08:00
    @kurtrossel 汗……这……
    我还是上 application cache 吧
    kurtrossel
        10
    kurtrossel  
       2013-07-15 14:49:20 +08:00
    实际上不知道你对我的本子做了什么

    笔记本i3 2.1G,4G内存,win7 64位,按理说不应该卡的连我都不认了

    你可以看看其他人什么反应
    undozen
        11
    undozen  
    OP
       2013-07-15 15:25:48 +08:00
    @kurtrossel 就是把文件用 base64 存取。是 IE 吗?
    看来在某些操作系统和浏览器上还是会有性能问题。
    kurtrossel
        12
    kurtrossel  
       2013-07-15 15:38:55 +08:00
    搜狗浏览器,高速模式,应该是chrome内核吧?
    leonardoleung
        13
    leonardoleung  
       2013-07-15 16:03:19 +08:00
    10秒,chrome 28
    wxm4ever
        14
    wxm4ever  
       2013-07-16 14:11:01 +08:00
    webfont loader 可以在字体未下载完毕时用默认字体显示,然后等待下载完毕后会更新页面显示.
    bsbgong
        15
    bsbgong  
       2013-07-17 09:13:55 +08:00
    我这儿一点卡顿都没有
    但好像没感觉到字体有变化
    win7 64bit, chrome
    localstorage里你的域名下倒是有两个key: song, verilyserifmono
    LZ是不是可以加一栏,以展示前后字体的对比
    undozen
        16
    undozen  
    OP
       2013-07-17 22:37:03 +08:00
    @bsbgong 我现在是中文和 mono 存 localStorage,英文存 sessionStorage(两个都存 localStorage 存不下),两个都加载完才换字体。不知道是不是 sessionStorage 这边出了问题。
    otakustay
        17
    otakustay  
       2013-07-17 23:05:46 +08:00
    只想吐槽没有localStorage就别提webfont是啥意思,webfont从ie6一路支持到ie11,怎么就肯定要有localStorage了- -

    另外webfont设了缓存还要发请求是不是缓存没搞好,有用Expires头么?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2285 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:48 PVG 09:48 LAX 17:48 JFK 20:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86