我有一个在Firefox上看起来很棒的webfont,而不是Chrome.我试过玩这个text-rendering房子,结果不那么引人注目.我的CSS是这样的:
@font-face {
font-family: 'TextFont';
src: url('[my font file url]') format('truetype');
font-weight: normal;
font-style: normal;
}
body {
font-family: TextFont, Tahoma, Geneva, sans-serif;
text-rendering: auto;
}
Run Code Online (Sandbox Code Playgroud)
改变text-rendering似乎没有在Firefox中做任何事情,所以我发布了一个截图.
结果:
Firefox(又名"应该是什么样子")

Chrome - text-rendering: auto

Chrome - text-rendering: optimizeLegibility

Chrome - text-rendering: optimizeSpeed

Chrome - text-rendering: geometricPrecision

与Firefox版相比,所有Chrome屏幕截图看起来都很糟糕.CSS中缺少什么东西?
我使用的是Windows 7,Firefox 8.0和Chrome 15.0.
我@font-face在CSS 中遇到了麻烦.我使用的字体在每个浏览器中看起来都非常不同.
在Firefox中查看此示例:

在Chrome中:

我不知道是什么原因引起了这个问题.我已经尝试使用text-rendering,我也尝试url在@font-face声明中更改-properties 的顺序.
我使用的是Windows 7 Professional和Firefox V30.
有人可以告诉我这个问题的原因,并告诉我如何解决它?
非常感谢.
//编辑:这是@font-face我正在使用的声明:
@font-face {
font-family: 'MyFont';
src: url('myFont.eot');
src: url('myFont.eot?#iefix') format('embedded-opentype'),
url('myFont.svg#myfont') format('svg'),
url('myFont.woff') format('woff'),
url('myFont.ttf') format('truetype');
font-style: normal;
font-weight : normal;
}
Run Code Online (Sandbox Code Playgroud)
正如我上面所写,我已经按照这个命令的顺序玩了.
在我的特定问题中,您可以看到此页面(页脚)显示问题.
我有一些问题,文本和图标字体在电子应用程序中看起来模糊.我在Chrome中测试了相同的HTML页面,文字和图标字体看起来更加清晰.
在缩放图像后,我可以看到Chrome正在使用子像素渲染,但Electron仅以灰度渲染.我尝试过使用-webkit-font-smoothing: subpixel-antialiased;但它似乎没有改变任何东西.
Chrome浏览器版本:53.0.2785.116
电子版(process.versions.electron):1.4.1
Electron Chrome版本(process.versions.chrome):53.0.2785.113
是什么导致这种情况,我该如何解决?
过去几年我们一直在Web应用程序中使用ASAP字体而没有任何问题.突然间,我们开始使用'ASAP'谷歌字体注意畸形.它们仅在使用字体呈现<16px字体大小时发生."Ubuntu"字体也出现了同样的问题.
有谁知道造成这些问题的原因是什么?
我们已经注意到这些问题:操作系统的Win10,MacOS上的IE11,最新的Chrome,Edge,Firefox,Safari.
我有一个关于打印条形码附加信息的问题.我正在使用http://barbecue.sourceforge.net/来创建我的条形码.
在我创建条形码后,我想添加一些额外的信息.目前我用以下方式做到这一点!例如:
Graphics2D g2d5 = container4Barcode.createGraphics();
g2d5.setBackground(Color.WHITE);
g2d5.clearRect(0, 33, 200, 200);
g2d5.setColor(Color.BLACK);
g2d5.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d5.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
g2d5.setFont(new Font("Arial", Font.PLAIN, 8));
g2d5.drawString(barcode, 8, 40);
g2d5.drawString(generateRandomNumber(ekPreis), 57, 40);
String datumResult = datum;
g2d5.drawString(location, 98, 40);
g2d5.drawString(datum.substring(2), 114, 40);
g2d5.dispose();
Run Code Online (Sandbox Code Playgroud)
输出结果如下:

正如你所看到的那样,我的文本质量(条形码上方和下方)非常糟糕......我怎样才能提高文本质量,使文本更加流畅而不是像素化?!
(当我打印我的条形码时,条形码看起来非常像素化......)
有小费吗?
更新:
所以,我在这里添加了我最新结果的图片......当我打印出这些条形码时,它们看起来很可怕!以下是我所做的代码:
Graphics2D g2d6 = container4Barcode.createGraphics();
g2d6.setColor(Color.black);
g2d6.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d6.setFont(new Font("Verdana", Font.BOLD, 7));
g2d6.drawString("FLORETT", 9, 20);
g2d6.drawString("50-521-60", 57, 20);
Graphics2D g2d4 = container4Barcode.createGraphics();
g2d4.setColor(Color.black);
g2d4.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d4.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d4.setFont(new Font("Verdana", Font.BOLD, 11));
g2d4.drawString("SSYYS", 105, 19);
g2d4.dispose();
Run Code Online (Sandbox Code Playgroud)
有了该代码,我获得了最好的结果!当然我玩"Metrics,AA_GASP,LCS_HRGB,不同的字体(Verdana在我看来是最好的)......"还有更多,但其中一些我无法使用,因为那时我的条形码变得模糊了!因此,我正在强迫我无法从graphics2d提高我的文本质量的束带的问题! …
我注意到,与基于Scintilla的编辑器相比,Sublime Text对某些字体和大小的渲染要好得多.这是如何实现的?它下面是否有一些着名的文字渲染器或者它们自己开发了?
我正在寻找一种从字体文件(.ttf,.otf)中提取字形位图,字形度量和字距调整数据的方法,并支持GPos字距表.
我以前使用过FreeType Library,但它不支持GPos Tables.
在使用默认的mathtext而不是LaTeX数学渲染引擎时,我在matplotlib 2.0.2中渲染数学时发现了错误.似乎一些字形(在我的情况下是减号和乘号)不能被mathtext识别.真正奇怪的是,只有当这些特定字形出现在刻度标签中时才会出现错误.当我故意在图标题中输入一些蹩脚的表达时,它可以正常工作.
考虑以下示例和结果图像:
import matplotlib
import matplotlib.pyplot as plt
# Customize matplotlib
matplotlib.rcParams.update({# Use mathtext, not LaTeX
'text.usetex': False,
# Use the Computer modern font
'font.family': 'serif',
'font.serif': 'cmr10',
'mathtext.fontset': 'cm',
})
# Plot
plt.semilogy([-0.03, 0.05], [0.3, 0.05])
plt.title(r'$-6\times 10^{-2}$')
plt.savefig('test.png')
Run Code Online (Sandbox Code Playgroud)
如图所示,刻度标签中的乘法和一些减号已被其他字符替换.如果我使用LaTeX(通过设置'text.usetex'为True),一切都很好.为什么会发生这种情况,更重要的是,如何在不将mathtext更改为LaTeX的情况下修复它?
这是运行示例代码时打印的警告:
mathtext.py:866: MathTextWarning: Font 'default' does not have a glyph for '\times' [U+d7]
MathTextWarning)
mathtext.py:867: MathTextWarning: Substituting with a dummy symbol.
warn("Substituting with a dummy symbol.", MathTextWarning)
Run Code Online (Sandbox Code Playgroud)
请注意,指数中出现的减号会正确呈现.如果我遗漏'mathtext.fontset': …
这可能是一件非常简单的事情,我也认为是这样,但显然不是。我一定花了一个星期的时间来尝试完成这项工作,但出于对我的热爱,我无法做到。
我需要的
我需要在 Python 中使用任何给定的字体(类似手写的)呈现任何给定的字符串(仅包含标准字符)。字体必须从 TTF 文件加载。我还需要能够准确地检测它的边界(获得文本的确切开始和结束位置,垂直和水平),最好在绘制之前。最后,如果输出是一个我可以继续处理的数组,而不是写入光盘的图像文件,那真的会让我的生活更轻松。
我试过的
Imagemagick 绑定(即 Wand):在设置图像大小并在其上渲染文本之前,无法弄清楚如何获取文本度量。
Pango 通过 Pycairo 绑定:几乎不存在的文档,无法弄清楚如何从文件中加载 TrueType 字体。
PIL(枕头):最有前途的选择。我已经设法准确地计算出任何文本的高度(令人惊讶的是它不是高度getsize返回值),但是某些字体的宽度似乎有问题。不仅如此,那些宽度有问题的字体也会被错误地渲染。即使使图像足够大,它们也会被切断。
以下是一些示例,文本为“Puzzling”:
字体:恋人争吵
结果:
字体:法哈多斯小姐
结果:
这是我用来生成图像的代码:
from PIL import Image, ImageDraw, ImageFont
import cv2
import numpy as np
import glob
import os
font_size = 75
font_paths = sorted(glob.glob('./fonts/*.ttf'))
text = "Puzzling"
background_color = 180
text_color = 50
color_variance = 60
cv2.namedWindow('display', 0)
for font_path in font_paths:
font = ImageFont.truetype(font_path, font_size)
text_width, text_height = font.getsize(text)
ascent, descent = font.getmetrics() …Run Code Online (Sandbox Code Playgroud) 我正在实现一个自定义文本布局引擎,我需要一个简单的文本输出函数,它的功能类似于 WinAPI 的 TabbedTextOut。也就是说,它不应该包装单词或类似的东西。
为此,QPainter 的 drawText 似乎很慢。一般来说,它不是很快,但一些 Unicode 字符(笑脸)可能导致渲染耗时长达 500 毫秒(在 Ryzen 3900x 上)!与 TabbedTextOut 相比,它可能做了很多不必要的事情,这显然会导致巨大的问题。
我不想求助于依赖平台的解决方案。我认为应该有一种方法可以大大加快速度。
我试过的:
请提示我值得进一步探索的方向。谢谢!
PS 我在 Windows 10 上使用 Qt 5.15。
text-rendering ×10
fonts ×3
css ×2
python ×2
barcode ×1
c++ ×1
electron ×1
firefox ×1
freetype ×1
graphics2d ×1
java ×1
kerning ×1
latex ×1
matplotlib ×1
performance ×1
qt ×1
qwidget ×1
rendering ×1
sublimetext ×1
unicode ×1
webfonts ×1