标签: text-rendering

如何使用Java 7中的FRACTIONALMETRICS呈现文本

我正在使用桌面Java应用程序,并且已经使用JDK 6通过IDE进行开发.我使用渲染提示VALUE_FRACTIONALMETRICS_ON和其他提示来更好地渲染JLabel中的文本.这些提示在JVM 1.6上运行得非常漂亮,但我最近注意到,VALUE_FRACTIONALMETRICS_ON当我使用JRE运行应用程序时,它似乎完全忽略了1.7我在这里做错了什么让Java 7忽略了这些提示?

lblDate = new ATimeLabel(ATimeLabel.DATE_LETTERS) {
    private static final long serialVersionUID = 1L;

    @Override
    protected void paintComponent(Graphics g) {

        Graphics2D g2d = (Graphics2D) g;

        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
                RenderingHints.VALUE_RENDER_QUALITY);
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
                RenderingHints.VALUE_FRACTIONALMETRICS_ON);

        super.paintComponent(g2d);
    }
};
Run Code Online (Sandbox Code Playgroud)

FRACTIONALMETRICS对文本具有最明显的视觉效果,因此让我的工作就是我想要做的.

这是一个屏幕截图比较,当我从我的IDE()运行应用程序时使用Java 6,当我双击Jar文件时,它自己()使用我的系统JRE,Java 7.(我还临时添加红色边框以显示paint方法确实有效)

任何帮助将非常感谢.

java swing java-2d text-rendering java-7

6
推荐指数
1
解决办法
1108
查看次数

在C#winforms中获得更好的文本渲染质量

有没有办法在窗体中获得更好的文本渲染质量.

我试过玩"TextRenderingHint",但没用.

字体为Helvetica Neue LT Pro,在photoshop中创建的所需结果显示在附加图像的左侧.我使用.otf文件作为资源在.NET中引入它.

在此输入图像描述

c# text-rendering winforms

6
推荐指数
1
解决办法
1232
查看次数

多行文字没有被椭圆化

我试图在矩形内的多行上绘制椭圆化文本.

因为NSLineBreakByTruncatingTail,文件说明

显示该行,以便开头适合容器,行末尾的缺失文本由省略号字符表示.虽然此模式适用于多行文本,但它更常用于单行文本.

但是使用那种模式我只得到一行:

使用NSLineBreakByTruncatingTail

但是NSLineBreakByWordWrapping,我没有获得超长文本的省略号:

使用NSLineBreakByWordWrapping

两张图片使用相同的代码(红色背景是文本绘制矩形),当然是相同的矩形大小,所以2行应该绝对适合.

NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
paragraphStyle.lineBreakMode = <<see above>>;
paragraphStyle.alignment = NSTextAlignmentNatural;
NSDictionary* drawingAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [UIFont fontWithName:@"HelveticaNeue" size:36],
                                   NSFontAttributeName,
                                   paragraphStyle,
                                   NSParagraphStyleAttributeName,
                                   nil];

const CGRect rect = CGRectMake(...);
[@"I do not get ellipsized in any way" drawInRect:rect withAttributes:drawingAttributes];
Run Code Online (Sandbox Code Playgroud)

有没有办法将椭圆化和多线渲染结合起来,正如文档所说的那样?使用UILabel,我只需要将行数设置为1以外的值,但是通过代码进行文本渲染呢?

multiline text-rendering nsattributedstring ios

6
推荐指数
1
解决办法
987
查看次数

从Hex值打印Unicode的Perl程序

我开始使用Perl,并且对于如何在给定十六进制字符串变量的情况下呈现unicode字符感到困惑.

#!/usr/bin/perl
use warnings;

foreach my $i (0..10000) {
    my $hex = sprintf("%X", $i);
    print("unicode of $i is \x{$hex}\n");
}
print("\x{2620}\n");
print("\x{BEEF}\n");
Run Code Online (Sandbox Code Playgroud)

给我警告: Illegal hexadecimal digit '$' ignored at perl.pl line 9.

没有值打印 \x{$hex}

string unicode perl text-rendering

6
推荐指数
1
解决办法
494
查看次数

主浏览器跨操作系统呈现有什么不同吗?

我一直认为,就不同平台上的主要浏览器的呈现而言,唯一的区别是操作系统的底层字体呈现技术,其他一切依赖于浏览器中包含的相同库.

就我的研究而言,这是前端开发人员相信或不相信的事情.看来我们也可以选择.我处在一个糟糕的地方,因为我一直认为没有区别,现在我被告知,在我发布任何影响前端的工作之前,我必须在Mac和Windows上进行彻底的测试.

要清楚,我知道文本呈现的差异(Tom Phiney在这里深入讨论了这个问题:http://www.thomasphinney.com/2009/12/browser-choice-vs-font-rendering/).我找不到任何文件的灰色区域是否有任何差异.

是否存在任何技术性权威的权威文章,无论如何都给出了明确的答案?

operating-system cross-browser rendering-engine text-rendering

5
推荐指数
1
解决办法
1074
查看次数

CSS转换(旋转)文本在Chrome和Firefox中看起来没有消除锯齿(Windows)

如果我对文本应用旋转,它将不会在Firefox和Chrome中呈现消除锯齿(仅在Windows中),但它在IE中正确呈现.此外,它在Mac OS X中的Chrome和Firefox中正确呈现.

以下是比较Windows 8中三个浏览器的屏幕截图:

http://d.pr/i/9qeg(Chrome)

http://d.pr/i/r8i0(Firefox)

http://d.pr/i/crZ7(IE10)

上面的CSS转换很简单

transform: rotate(-1.5deg) translateY(-2px);
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:

http://jsfiddle.net/sa6Nb/2/

有任何想法吗?

firefox google-chrome text-rendering css3 html-rendering

5
推荐指数
1
解决办法
2625
查看次数

HTML5 Canvas 中的像素字体已消除锯齿

我正在尝试在 HTML5 画布上绘制 8 位像素文本。我试过了:

_context['imageSmoothingEnabled'] = false;
_context['mozImageSmoothingEnabled'] = false;
_context['oImageSmoothingEnabled'] = false;
_context['webkitImageSmoothingEnabled'] = false;
_context['msImageSmoothingEnabled'] = false;
Run Code Online (Sandbox Code Playgroud)

以及其他一些与 HTML 和 CSS 字体有关的事情,同时谷歌搜索了一个多小时。这是字体:

@font-face {
    font-family: "undertalefont";
    src: url("bitops.ttf");
    font-style: normal;
    -webkit-font-smoothing: none;
}
Run Code Online (Sandbox Code Playgroud)

当在 HTML 中使用它时,它会尝试使用奇怪形式的子像素抗锯齿。它可以按照图像编辑程序中的预期呈现字体。

所以我的问题是,我该如何阻止这个...(缩放到 200% 以查看坏的 AA)

丑陋的AA

并使其像素完美清晰?

编辑:我正在渲染文本:

_context.fillStyle = "white";
_context.font = "24px 'undertalefont'";
_context.fillText("Font rendering.", 32, 20);
Run Code Online (Sandbox Code Playgroud)

javascript fonts canvas text-rendering html5-canvas

5
推荐指数
1
解决办法
2651
查看次数

Chrome 和 firefox 渲染不正确 OPEN SANS web 字体

因为几周前我的 chrome 使谷歌字体“open sans”变得糟糕,关于 firefox,它总是让它变得糟糕,

它在所有开放 sans 和任何重量或大小的网站中都变得糟糕。我已经阅读了一些关于更改 chrome://flags/#enable-direct-write 的内容,但我没有那个选项我已经清理了缓存,

我有一个屏幕截图,显示了它在我的屏幕上的外观和下面它应该是什么样子,

chrome open sans 渲染问题

该屏幕截图取自此处:http : //104.236.102.187/htmls/open/open.html

目前chrome的版本是52,windows 8.1 pro

64位

谢谢

google-chrome text-rendering webfonts

5
推荐指数
1
解决办法
1960
查看次数

如何阻止多行文本的透明背景在行之间重叠?

我面临的问题是,我有一个<span>包含多行文本且具有透明背景的内联文本。尽管有默认的行高,但文本上的背景重叠,导致背景覆盖在其​​自身上的较暗的水平行。

这是问题的一个很好的演示(图片+jsfiddle)

在此输入图像描述

JsFiddle 演示了这个问题。

问题的最小再现

HTML:

<h1>
    <span>Although it is set to a line height of 1, the background behind text still overlaps between rows.</span> 
</h1>
Run Code Online (Sandbox Code Playgroud)

CSS:

h1 {
    text-transform: uppercase;
    font-family: Arial;
    line-height: 1;
    font-size: 30px;
    background: rgba(0,0,0,0.5);
    color: #FFF;
    display: inline;
}
h1 span {
    position: relative;
}
Run Code Online (Sandbox Code Playgroud)

解决方案要求

  1. 背景颜色必须符合文字形状;所以设置spandisplay:inline-block不是一个可行的解决方案。
  2. 设置固定line-height(或padding)并不是最佳答案,因为确切的字体渲染在浏览器和用户设置之间会发生变化。line-height例如,在 Chrome 中设置完美会在 Firefox 中产生不完美的结果。
  3. 文本必须是动态的和语义的。解决方案不能涉及在服务器上为客户端渲染文本的图像表示。
  4. 优选地允许任意padding添加或删除以减少或增加文本与背景边缘之间的空间。
  5. JavaScript 可能没问题。我在这里使用 Angular 2,因此与其完美集成的答案甚至更好。

html javascript css text-rendering

5
推荐指数
1
解决办法
665
查看次数

Chrome 扩展程序徽章文本 - ? 呈现为“”

我正在尝试向我的 Chrome 扩展程序\xe2\x80\x99s 徽章文本添加一个重复选标记 ( \xe2\x9c\x94 )。当我从后台脚本更新徽章时,它工作正常。当我从弹出窗口中的脚本更新它时,它呈现为\xc3\xa2\xc5\x93\xe2\x80\x9d.

\n\n
chrome.browserAction.setBadgeText({\n  text: \'\xe2\x9c\x94\',\n  tabId: tabId\n});\n
Run Code Online (Sandbox Code Playgroud)\n

javascript unicode google-chrome text-rendering google-chrome-extension

5
推荐指数
1
解决办法
1248
查看次数