在WPF4,我怎么可以计算'Size'
的FormattedText
或者GlyphRun
一个drawingvisual
.
我在画布上使用drawingvisual.当我更改文本大小或文本时,会发生更改但实际宽度和高度相同或不会更新.
Using dc As DrawingContext = drawingvisual.RenderOpen
Dim ft As New FormattedText(...)
dc.DrawText(ft, New Point(0, 0))
dc.Close()
End Using
Run Code Online (Sandbox Code Playgroud) 我的应用程序允许用户即时切换语言.我发现大约有10%的时间用户切换到中文或日文,UI文本的字形呈现不正确.
此应用程序在iMX6平台上的Linux下运行.Qt 5.5.0正在使用中.QML用于呈现UI.使用QML Text控件呈现损坏的文本.
正在使用的字体是Source Hans Sans Regular.我尝试使用QML FontLoader加载它,并将它在C++端加载到应用程序字体数据库中(两种方法都表现出问题).我尝试过使用(公认的非常强烈相关的)Noto字体; 同样的问题.
在使用Roboto进行非CJK文本时,我从未见过文本呈现的损坏,如上所述,这对CJK/Source Hans Sans来说更常见.
腐败是有趣的,因为它看起来像是在渲染的位图级别,而不是字形定义级别(请注意一些字形如何使下半部分正确,但上半部分已损坏).
腐败确实有时会进展.这让我认为字形位图缓存内存正在被进一步覆盖(只是一个理论,因为我不确定Qt如何进行字体渲染).我认为可能是QML垃圾收集做了一些奇怪的事情,但在C++端加载字体没有什么区别.
接下来,我将尝试使用"本机渲染"进行QML Text控件.
谁看过这个吗?任何人都可以确认FreeType用于Qt 5.5.0下的字体管理/渲染吗?有没有办法影响字体位图缓存的管理方式?
谢谢!
更新:使用'renderType:Text.NativeRendering'并没有消除问题(虽然腐败表现略有不同).而且,鉴于该模式的局限性,最终导致文本渲染效果差(软,缩放等等 - 如文档所述).
更新2:我建立了Qt(据我所知)所有禁用的字形缓存 - shouldDrawCachedGlyphs()在我的本地构建中为我能够找到的那个调用的四个实例返回false - 但仍然遇到字形损坏.
更新3:尝试通过设置QMLSCENE_DEVICE = softwarecontext per docs切换到使用软件(非OpenGL)Qt Quick 2渲染器; 字形腐败仍然发生.
在Windows 10上使用Java 32bit中的某些特定真实字体字体绘制字符串时,我遇到了一个奇怪的问题.
从Java 7u13开始,每当字体的字符/字形宽度超过其高度的4倍时,它就不会使用Graphics2D.drawString进行渲染(例如,字形4001em宽,基本字体大小为1000em):
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setFont(new Font("myFontWithWideGlyphForX", Font.PLAIN, 12));
g2.drawString("XXXX", 10, 10);
}
Run Code Online (Sandbox Code Playgroud)
但是,字体在JLabel上正确呈现,因此在对底层Swing代码进行一些调查之后,我意识到将渲染提示KEY_TEXT_ANTIALIASING设置为VALUE_TEXT_ANTIALIAS_LCD_HRGB会使文本正确呈现:
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
g2.setFont(new Font("myFontWithWideGlyphForX", Font.PLAIN, 12));
g2.drawString("XXXX", 10, 10);
}
Run Code Online (Sandbox Code Playgroud)
在设置子像素atialiasig并正确呈现字体后,渲染算法似乎有所不同.
如果我切换到Java 7u11或更早版本,文本呈现没有任何问题,并且没有设置VALUE_TEXT_ANTIALIAS_LCD_HRGB.
对于具有如此宽字形的任何其他字体也会发生同样的情况 - 例如,这个随机字体具有字符"J"的宽字形:http: //www.fontspace.com/digital-magic/hdgems5 - 它可以用Java 7u11渲染,但是没有任何比这更新的东西.
设置子像素抗锯齿VALUE_TEXT_ANTIALIAS_LCD_HRGB只是为了呈现字体看起来很丑陋,并不总是可行(例如,在使用第三方库时).有没有人知道自7u13以来awt没有渲染这些角色的原因是什么?这样的字体是否不受支持?或者这可能是一个错误?
在objective-c中的字符串中,如果我说类似[myStr length];
它返回一个数字,这是一个字节数,但我可以用什么来返回字符串中的字符数.
例如:
一个字母"a"
的字符串返回长度为1
的字符串,其中包含一个表情符号,返回长度为2(有时甚至长度为4)
这是因为这是字符串中的字节数...我只需要字符数.
示例'BLACK STAR'★(U + 2605)
.a:after {
content: "\2605";
position:absolute;
}
.b:after {
content: "?";
position:absolute;
}
Run Code Online (Sandbox Code Playgroud)
演示: http ://jsfiddle.net/l2aelba/vBjxX/
为什么有人/最推荐使用HEX像\2605
在CSS值?两者都得到相同的结果.
澄清.画一个圆圈.我们开始从特定坐标绘制圆.现在让我们从另一个坐标开始绘制圆圈.
我正在使用从SVG字形派生的路径数据,然后使用d3js补间来动画路径之间的变化.
对于此示例,从1 - > 9,0开始计数,然后重复.
http://jsfiddle.net/chrisloughnane/HL2ET/
正如您所看到的,一些转换并不像其他转换那样好.他们绘制一条线来关闭下一条路径的路径.(我猜测)当进行新形状的计算时,当路径的起点和终点相距很远时会发生这种情况.当它工作时它非常好.
任何人都可以建议解决丑陋的线条吗?
没有路径数据的CODE
svg.append("path")
.attr("transform", "translate(150,300)scale(.2,-.2)")
.style("stroke", "red")
.style("fill", "gray")
.style("stroke-width", "9")
.attr("d", d0)
.call(transition, digits[0], digits[position]);
function transition(path, d0, d1) {
position++;
if(position==10)
{
position=0;
}
path.transition()
.duration(2000)
.attrTween("d", pathTween(d1, 4))
.each("end", function() { d3.select(this).call(transition, d1, digits[position]); });
}
function pathTween(d1, precision) {
return function() {
var path0 = this,
path1 = path0.cloneNode(),
n0 = path0.getTotalLength(),
n1 = (path1.setAttribute("d", d1), path1).getTotalLength();
// Uniform sampling of distance based on specified precision.
var distances …
Run Code Online (Sandbox Code Playgroud) 在text
,该参数adj
允许调整labels
相对于x
和y
.例如,adj
的值(0,1)是指左上对准,即左侧,标签的顶部拐角被放置在给定的x
,y
坐标.
这适用于默认字符扩展cex = 1
.但是当我想要一个更大的标签,通过增加创建时cex
,标签的位置从给定的坐标和adj
ustment 水平偏移.
这是一个小例子,它说明了这一点:
# a basic plot
plot(1:10, asp = 1, cex = 1)
# a red reference mark at 5, 5
points(x = 5, y = 5, pch = 3, cex = 3, col = 'red')
# a label of default size (cex = 1), left top adjusted
text(x = 5, y = 5, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试添加字形图标作为电子邮件地址链接的一部分.图标显示但图标和电子邮件地址文本之间没有间距(我希望超链接包括图标和文本......包括空格).实现这一目标的最佳方法是什么?
<a href="mailto:someone@somewheredotcom" title="Some Email">
<span class="glyphicon glyphicon-envelope">someone@somewheredotcom</span>
</a>
Run Code Online (Sandbox Code Playgroud) 我想使用 Glyph 渲染从右到左的语言文本(例如阿拉伯语或混合英语和阿拉伯语)。
\n\n我正在使用这段代码:
\n\n Typeface typeface = new Typeface(new FontFamily("Arial"),\n FontStyles.Italic,\n FontWeights.Normal,\n FontStretches.Normal);\n\n GlyphTypeface glyphTypeface;\n if (!typeface.TryGetGlyphTypeface(out glyphTypeface))\n throw new InvalidOperationException("No glyphtypeface found");\n\n string text = "Hello , \xd8\xb3\xd9\x84\xd8\xa7\xd9\x85";\n double size = 40;\n\n ushort[] glyphIndexes = new ushort[text.Length];\n double[] advanceWidths = new double[text.Length];\n\n double totalWidth = 0;\n\n for (int n = 0; n < text.Length; n++)\n {\n ushort glyphIndex = glyphTypeface.CharacterToGlyphMap[text[n]];\n glyphIndexes[n] = glyphIndex;\n\n double width = glyphTypeface.AdvanceWidths[glyphIndex] * size;\n advanceWidths[n] = width;\n\n totalWidth += width;\n }\n\n Point …
Run Code Online (Sandbox Code Playgroud) 我有一个.pfa字体文件,我想阅读"算法"来渲染字体.但是,大多数信息都隐藏在行中的二进制文件中:
currentfile eexec
743F8413F3636CA85A9FFEFB50B4BB27302A5F6C876586CCC1670A7EF5521E6ADE15AAB4
DD2DDDB83735311FC63DB80D2C96AECFA05BB67F865EA35934B4B79A203A8DD489B09C79
FF6EB9DBCFD889C3E73F8C94BC342AF671D6F688870A62EE1A0DF216E150FFEC64A8C2B7
509AD05C011599C1AD84E6C4B668E07EA219BD72663D8AF4CA8EC8E23AA90DE90BE940C6
6DB849CEDB3B64961365A7CCE47F4FC9E30FDEE4B14B90C2E0D8C344EBC974EABF417B3D
28251A78ACEE2BFC4212B1E3E9C7EBC3262821EE98E538713C64DF0BC13C19337B1307DB
D795D285F959C924FC14AEF7E9D406406CDEE1A35377887A16B13DD51717A86284369FA7
6ABB6A4488B9174A561DA854C33821F3172E4CF956EC9B65F829D69E02BC0EE23044DB1D
9A4D45A14A3998115BEE5DDC582F158DB2E..................
Run Code Online (Sandbox Code Playgroud)
我们如何"解码"这些信息?