我注意到,与基于Scintilla的编辑器相比,Sublime Text对某些字体和大小的渲染要好得多.这是如何实现的?它下面是否有一些着名的文字渲染器或者它们自己开发了?
我有一个只有freetype2和cairo库的系统.我想要实现的是:
不幸的是,文档并没有真正解释它应该如何完成,因为他们希望使用像Pango这样的更高级别的库.
我认为可能是正确的:创建一个缩放字体,cairo_scaled_font_create然后使用检索文本的字形cairo_scaled_font_text_to_glyphs.cairo_glyph_extents然后给出每个字形的范围.但是,我怎么能得到像字距调整和进步这样的东西呢?另外,我怎样才能获得每种字体的路径?
有关此主题的更多资源吗?这些功能是预期的方式吗?
此图像是使用PIL创建的.看看这张图片中的g和y是如何被截断的?我怎么能阻止这个?
http://img109.imageshack.us/img109/8874/screenshotep.png
创建此图像的代码非常简单(缩写):
import Image, ImageDraw, ImageFont
im = Image.new("RGBA", (200, 200), 'white')
draw = ImageDraw.Draw(im)
font = ImageFont.truetype("VeraSe.ttf", 12)
draw.text(
(1, 1),
" %s: " % "ggjyfFwe__",
font=font,
fill='black'
)
draw.text(
(1, 30),
" %s" % 15,
font=font,
fill='black'
)
im.show()
Run Code Online (Sandbox Code Playgroud)
我尝试使用几种不同的字体,它总是被剪裁.令人惊讶; y,googleing"PIL字体剪辑"返回很少有用的命中...我在Ubuntu 9.10上使用python 2.6.4和PIL 1.1.6
我在表单上有一个标准的TStringGrid.我在网格中有一个包含许多列的固定行,这些列都是TGridColumns对象.我使用对象检查器设置了列标题,默认方向是水平的.有什么方法可以使方向垂直(就像在Excel中的单元格中一样)?
我做的QML类似于演示系统(含C++后端)这一个.
我希望能够包含一些Latex代码来显示一些数学(只需要最小的Latex功能,例如sums,fractions,super-substript和mathtript).
我看到以下可能性:
latex)dvisvgm)ImageQML(也支持SVG)显示WebKitQML 显示此信息QDeclarativeItem自定义绘画还有其他我看不到的解决方案吗?我更喜欢第一种解决方案,因为第二种解决方案听起来太沉重而第三种解决方
我看到数学公式的基线存在以下问题:我希望能够包含内联公式(在段落中).目前,使用QML Text元素渲染文本段落.是否有可能在具有指定基线的Text元素(可能使用HTML img元素)中包含图像?另外,如何确定渲染的Latex文档的基线?
注意:预渲染Latex代码的时间不成问题.我将缓存已经渲染的公式,因此在演示文档文档中包含的每个公式上调用latex+ 应该没有问题dvisvgm.
还要注意我使用的是预处理器(我不是手工编写QML代码而是生成它).所以我不需要用于Latex代码的QML元素,但我可以生成带有Image元素的QML代码片段(对于第一个解决方案).这应该简化嵌入渲染图像的过程.
使用内联Latex时,我也不需要支持包装公式.(Latex在编写内联公式时会这样做,但我只使用小公式,我不想被包装.)
我想使用 Pango 呈现文本,但找不到不使用 Cairo 的示例代码。有人可以给我一个使用 FreeType 后端的 Pango 用法的简单示例吗?这就是我认为它应该大致工作的方式,但是正如您在代码中看到的那样,有些事情我还不明白。
// context and font stuff
PangoFontMap *fontmap = pango_ft2_font_map_new();
// do I have to initialize the fontmap?
PangoContext *context = pango_font_map_create_context(fontmap);
PangoFontDescription *desc = pango_font_description_new();
pango_font_description_set_style(desc, PANGO_STYLE_NORMAL); // not bold or italic
pango_font_description_set_size(desc, 12); // 12pt font
PangoFont *font = pango_context_load_font(context, desc);
// target bitmap
FT_Bitmap bitmap;
// how do I say how big the bitmap should be? write it into the struct?
FT_Bitmap_New(&bitmap);
// text
char *text = "Hello World"; …Run Code Online (Sandbox Code Playgroud) 我需要显示一个带有居中标签的表单(根据表单的宽度和标签的文本,宽度,字体系列和字体大小).到目前为止,这是我的尝试:
(Me.Width - TextRenderer.MeasureText("Hello word", New Font("Delius", 10,
FontStyle.Regular).Width) / 2
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渲染器; 字形腐败仍然发生.
我是 Flutter 新手,正在尝试使用代码来更改字符串中特定 Unicode 字符的颜色。颜色编码 \\u0951、\\u0952 和 \\u1cda 表示蓝色、红色和绿色。输出字符串与预期格式不匹配。我看到一些字符重复,并且在某些字符中,颜色被应用于相邻的字符。非常感谢任何帮助解决该问题的帮助。\n我希望代码能够在 Android 和 IOS 平台上运行。
\n早些时候,当我使用 spannableStr 在 Android 中开发此应用程序时,我在 Kotlin 中有类似的代码,工作正常。\nFlutter Dart 代码是:
\nimport \'package:flutter/material.dart\';\n\nimport \'package:flutter/painting.dart\';\nimport \'package:google_fonts/google_fonts.dart\';\n\nclass TextModifierScreen extends StatefulWidget{\n @override\n State<StatefulWidget> createState() {\n return TextModifierScreenState();\n }\n}\n\nclass TextModifierScreenState extends State{\n\n List<TextSpan> _displaySpans = [];\n String inputString = "\xe0\xa4\xae\xe0\xa5\x83\xe0\xa5\x92\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb5\xe0\xa5\x87\xe0\xa5\x92 \xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa5\x91 \xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb9\xe0\xa4\xbe\xe1\xb3\x9a \xe0\xa4\xad\xe0\xa5\x82\xe0\xa5\x92 \xe0\xa4\xae\xe0\xa5\x81\xe0\xa5\x92\xe0\xa4\xad\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa5\x92\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa5\xa5";\n\n void replaceVowelsWithColor(String input) {\n List<TextSpan> spans = [];\n for (int i = 0; i < input.length; i++) {\n String char = input[i];\n int unicode = char.codeUnitAt(0);\n …Run Code Online (Sandbox Code Playgroud) text-rendering ×10
c ×2
fonts ×2
freetype ×2
python ×2
qml ×2
qt ×2
cairo ×1
cjk ×1
dart ×1
flutter ×1
glyph ×1
indic ×1
latex ×1
lazarus ×1
matplotlib ×1
measure ×1
pango ×1
sublimetext ×1
tstringgrid ×1
typography ×1
vb.net ×1
width ×1