它是有据可查的(如这里),其IE9将忽略字体平滑(又名抗锯齿)的OS范围的设置.即使在Windows中禁用了字体平滑和ClearType,IE仍会显示抗锯齿字体,有些用户难以阅读,特别是在小字体时.
如何在IE9中禁用所有字体抗锯齿(ClearType或其他)?
更多细节:
我们公司构建了一个使用大量小字体的Web应用程序.随着IE9的发布,我们的一些用户抱怨IE9的默认抗锯齿使我们的小字体模糊或模糊.因此,我们需要帮助已安装IE9并希望关闭抗锯齿功能的用户.
另外,就个人而言,我无法阅读小型的抗锯齿字体,所以我想要一个自己使用的解决方案,即使对于我无法控制的网站也是如此.
在IE8中,我可以取消选中"始终使用ClearType for HTML",然后在操作系统中禁用ClearType,IE8将显示所有字体别名.但在IE9中,缺少此选项.
经过一些关于这个问题的研究,这就是我所学到的:核心问题是IE依靠DirectWrite进行文本渲染,并且不支持任何更新的渲染选项,这些选项可以在没有抗锯齿的情况下绘制文本并尊重用户的OS-广泛的默认选择.
更糟糕的是,如果你在操作系统中禁用ClearType,在某些情况下,IE将回退到DirectWrite的默认非cleartype抗锯齿,它甚至比ClearType更模糊.
[原标题:IE 9文字渲染效果很差; 有解决方法吗?)
IE 9正在渲染我的应用程序中的文本非常糟糕.问题不在我的显示器的清除类型设置中,因为兼容模式下的IE 9,Firefox和Chrome都能很好地呈现文本.以下是对IE 9,兼容模式下的IE 9和Chrome进行文本渲染的并排比较:



我尝试应用这个答案,但它似乎不适用于IE 7后的任何内容.有人知道我们可以应用于我们的网站来修复IE 9的坏文本呈现的任何变通方法吗?
编辑:
我把问题页面简化为最基本的要点.正如您所看到的,重现并不需要太多.如果IE9和IE9标准的文档模式,请确保IE具有浏览器模式:
<html xmlns="http://www.w3.org/1999/xhtml">
<body style="background-color: rgb(30, 34, 59); color: rgb(255, 85, 0); font-size: 20px">
Home
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我想用绘制图像UIImage的drawInRect:方法.这是代码:
UIImage *image = [UIImage imageNamed:@"OrangeBadge.png"];
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
问题是生成的图像模糊.这是与源图像(左侧)相比得到的图像(在右侧):

我试过了两个,CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), NO) CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), NO)但这并没有解决问题.
有任何想法吗?
提前致谢.
我正在尝试为AWT Graphics2D实现类似SWT GC的xor-mode绘图.使用内置的XORComposite不是一个选项,因为它不像SWT那样实现xor-mode绘图.
SWT xor-mode绘图通过二进制异或结合源和目标颜色.AWT XORComposite(可用于g2d.setXORMode(Color))使用常量xor颜色,通过二进制异或与源颜色组合,或者目标颜色不影响结果颜色.
因此,我唯一想到的选择是编写自己的Composite和CompositeContext实现,它们适当地组合了源和目标.
一些阅读后,我想出了这个简单的实现:(是的,我知道与getPixel(...),setPixel(...)开销,我希望它优化之前正常工作的.)
private static class XorComposite implements Composite {
public static XorComposite INSTANCE = new XorComposite();
private XorContext context = new XorContext();
@Override
public CompositeContext createContext(ColorModel srcColorModel,
ColorModel dstColorModel, RenderingHints hints) {
return context;
}
}
private static class XorContext implements CompositeContext {
public XorContext() {
}
@Override
public void compose(Raster src, Raster dstIn, WritableRaster dstOut) {
int w = Math.min(src.getWidth(), dstIn.getWidth());
int …Run Code Online (Sandbox Code Playgroud) 使用MacVim,我使用大小为10的Monaco字体,在标准的MacVim配置下没有消除锯齿.当我在MacVim首选项(高级选项卡)中打开高级渲染时,摩纳哥10pt现在已经消除锯齿,这不是我想要的.有没有办法在MacVim中关闭字体抗锯齿?
我通过直接调用绘制的图表DrawLine上DrawingContext.由于我想避免任何抗锯齿功能,我试图将SnapToDevicePixels = true放在父UIElement上,但我仍然有反别名:

该项目是一个不是为WPF4编写的旧操作系统项目,但是我将其重新定位到Framework4,这也是一个问题吗?
当我使用CATransform3DRotate设置CALayer的transform属性时,图层被正确旋转.但是,图层的边缘是锯齿状的,没有消除锯齿.我读了几篇关于这个主题的帖子:
我试图通过在对角层上设置以下属性来结合他们的建议
CALayer* layer = myView.layer;
layer.shadowOpacity = 0.01;
layer.edgeAntialiasingMask = kCALayerTopEdge | kCALayerBottomEdge | kCALayerRightEdge | kCALayerLeftEdge;
layer.borderWidth = 1.0;
layer.borderColor = [UIColor clearColor].CGColor;
layer.backgroundColor = [UIColor greenColor].CGColor;
Run Code Online (Sandbox Code Playgroud)
我还覆盖了drawLayer:inContext:我的对角线层的方法以确保消除锯齿:
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
{
CGContextSetAllowsAntialiasing(context, true);
CGContextSetShouldAntialias(context, true);
CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
CGContextFillRect(context, self.bounds);
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
对于PIL中的线条和椭圆,图像很粗糙.
我只在resize和缩略图中找到了抗锯齿.
绘制直线或椭圆时有没有办法做抗锯齿?