小编seg*_*ult的帖子

使用CSS3 @ font-face字体渲染在Windows上使用ClearType可以很好地使用

首先是一些背景信息.

似乎使用CSS3 @ font-face规则可以在任何浏览器,任何版本的Windows(XP及更高版本)上以意外和不受欢迎的方式与ClearType字体renderv进行交互.

当我遇到它时,我首先将此记录为Google Font Directory错误.进一步的研究似乎产生相互矛盾的信息; 启用或禁用ClearType可以帮助或损害@ font-face字体在Windows中的任何Web浏览器中呈现的方式.ClearType是帮助还是伤害似乎完全依赖于所使用的字体,以及它们内置了什么样的提示.

例如,当ClearType为DISABLED时,TypeKit支持站点上线程似乎指向字体呈现问题.但是,当ClearType为ENABLED时,开发了一个jQuery插件来改进字体呈现,但该插件仅适用于Internet Explorer.有趣的是,插件的演示页面上使用的字体在启用ClearType时渲染效果很差,但是当它被禁用时,两个演示页面的渲染方式相同/正确.

因此,鉴于所有背景信息和先前的研究,我的问题是:

无论Windows ClearType设置如何,在所有平台上为现代浏览器确保适当的字体呈现的最佳方式/妥协是什么?

我的第一个想法是默认使用包含@ font-face字体的样式表.JavaScript可以检测用户的操作系统,如果检测到Windows,可以通过编程方式修改样式表类,以使用不包含@ font-face字体的字体系列,以便使用系统本机回退字体.我后来意识到别人也想到了这一点.虽然这是一个hacky和不优雅的解决方案.理想情况下,我希望我的网络字体无论平台如何都可以使用,而不依赖于像sIFR或Cufon这样的东西.

有没有人有指针或更好的想法?

css windows cleartype css3 font-face

12
推荐指数
1
解决办法
1万
查看次数

Java中的通用方法和类型推理

鉴于以下不是非常有用的代码:

package com.something;

import java.util.ArrayList;
import java.util.Collection;

//Not a generic class!
public class Test {

  public <T> void plain(T param1, T param2) {}
  public <T> void fancy(T param1, Collection<T> param2) {}

  public void testMethod() {

    //No error
    fancy("", new ArrayList<String>());

    //Compiler error here!
    fancy("", new ArrayList<Integer>());

    //No error
    plain("", new ArrayList<Integer>());

  }

}
Run Code Online (Sandbox Code Playgroud)

(如果错了,请纠正我的理解!)

第二次调用fancy()是编译器错误,因为Java无法推断两个参数之间的任何常见类型(无法推断,Object因为第二个参数必须是Collection.)

该呼叫plain()不是一个编译器错误,因为Java推断的普通型Object两个参数之间.

我最近遇到了类似于方法签名的代码plain().

我的问题是:

plain()的签名什么有用的东西?

也许编写该代码的人认为plain()签名会强制两个参数在编译时具有相同的类型,显然不是这种情况.

使用签名编写方法是否有任何区别或好处,plain() …

java generics type-inference

8
推荐指数
1
解决办法
1684
查看次数

为什么JavaScript的'Promise.all`在失败条件下没有运行所有承诺?

MDN称:

如果任何传入的承诺拒绝,则所有承诺立即拒绝拒绝的承诺的价值,放弃所有其他承诺,无论他们是否已经解决.

ES6规格似乎证实了这一点.

我的问题是:如果他们中的任何人拒绝,为什么Promise.all放弃承诺,因为我希望它等待"所有"承诺解决,"丢弃"究竟是什么意思?(很难说"丢弃"对于飞行中的承诺与可能尚未运行的承诺意味着什么.)

我问,因为我经常遇到一些情况,我有一份承诺清单,并希望等待他们全部解决,并得到可能已经发生的所有拒绝,这Promise.all是不满足的.相反,我必须使用这样的黑客:

const promises = []; // Array of promises
const settle = promise => promise.then(result => ({ result }), reason => ({ reason }));
Promise.all(promises.map(settle))
  .then(/ * check "reason" property in each element for rejection */);
Run Code Online (Sandbox Code Playgroud)

javascript promise es6-promise

7
推荐指数
2
解决办法
3355
查看次数