harfbuzz

文字渲染一探

爷,独闯天下 提交于 2020-08-12 20:10:33
引子 近一个月都在与字体打交道,查阅了不少资料。 发现国内很少有这方面的一些资源,有点奇怪。 故此,想稍微梳理一下这方面的一些资料以及信息,方便对这方面感兴趣的朋友参阅。 文字渲染的组成 文字渲染严格意义上来说包含几个主要的核心模块,分别是: 1.字体光栅化 FreeType 它是一个软件字体引擎,它被设计成小巧、高效、可高度定制和可移植,同时能够生成高质量的输出(字形图像)。它还可以用于图形库、显示服务器、字体转换工具、文本图像生成工具和许多其他产品。 2.字体适配 Fontconfig 主要用于配置、定制管理系统里的 字体 ,简单的说就是通过给出的字体信息,例如粗体,斜体等,找到现有系统中最匹配的这些特征的字体文件。 3.Unicode文本双向算法 FriBidi 主要用来转换不同语系中存在的文本方向问题,例如右向左的文本, 翻转后为左向右顺序的文本。 4.文字塑形 HarfBuzz HarfBuzz是一种文字塑形布局引擎(text shaping library),它主要将Unicode转换为格式正确且位置正确的字形输出。 简单地说就是用于适配全世界不同语言的文字编码布局。 另一个非常知名库是 ICU ,而HarfBuzz的实现中将其作为第三方库引入 5.布局渲染 Cairo 或 Skia Graphics Library 当你拿到字体字形的数据之后,毫无疑问,

文字渲染一探

社会主义新天地 提交于 2020-08-09 11:55:16
引子 近一个月都在与字体打交道,查阅了不少资料。 发现国内很少有这方面的一些资源,有点奇怪。 故此,想稍微梳理一下这方面的一些资料以及信息,方便对这方面感兴趣的朋友参阅。 文字渲染的组成 文字渲染严格意义上来说包含几个主要的核心模块,分别是: 1.字体光栅化 FreeType 它是一个软件字体引擎,它被设计成小巧、高效、可高度定制和可移植,同时能够生成高质量的输出(字形图像)。它还可以用于图形库、显示服务器、字体转换工具、文本图像生成工具和许多其他产品。 2.字体适配 Fontconfig 主要用于配置、定制管理系统里的 字体 ,简单的说就是通过给出的字体信息,例如粗体,斜体等,找到现有系统中最匹配的这些特征的字体文件。 3.Unicode文本双向算法 FriBidi 主要用来转换不同语系中存在的文本方向问题,例如右向左的文本, 翻转后为左向右顺序的文本。 4.文字塑形 HarfBuzz HarfBuzz是一种文字塑形布局引擎(text shaping library),它主要将Unicode转换为格式正确且位置正确的字形输出。 简单地说就是用于适配全世界不同语言的文字编码布局。 另一个非常知名库是 ICU ,而HarfBuzz的实现中将其作为第三方库引入 5.布局渲染 Cairo 或 Skia Graphics Library 当你拿到字体字形的数据之后,毫无疑问,

Emoji modifiers & ZWJ sequences using Harfbuzz & Freetype in Apple Color Emoji

蹲街弑〆低调 提交于 2020-01-02 07:10:54
问题 I'm using Freetype 1.9.1 and Harfbuzz 1.7.6 to render text possibly including emoji, however I don't know how to correctly render emoji modifiers and ZWJ sequencces from Apple Color Emoji (sbix color font). I've also tried Noto Color Emoji (CBDT/CBLC color font), which works as expected, and Segoe UI Emoji (COLR/CPAL color font), which renders black & white glyphs, however it seems that support for COLR/CPAL is just being developed in Freetype and therefore is not an issue for me. Has anyone

HarfBuzz - hb_shape() leads to access violation

瘦欲@ 提交于 2019-12-11 13:23:44
问题 Based on this example, I try to implement font rendering in my SDL application. When calling hb_shape() , the application is halted because of an access-violation. DLL-download-link (win32): here {harfbuzz-0.9.26-win32.zip} ErrorMsg (VC2012): Unhandled exception at 0x6160B7F0 (libharfbuzz-0.dll)in ConsoleApplication2.exe: 0xC0000005: Access violation while reading at position 0x00000068 EDIT: I changed the example to a console application, for simplicity. Edit2: Now linking statically, .lib

CTL (Complex Text Language) support in Android

你。 提交于 2019-12-10 13:14:52
问题 I am trying to develop Android IME for Asia language (require complicated rendering such as changing glyph forms, reordering character order, etc). In PC, the use of GTK, Pango, Graphite is sufficient. In Android how can I solve rendering of Unicode for Complex Text Language. Thanks in advance 回答1: You should be using the Harfbuzz stack provided within the Android. If you look within Pango in PC, there is a shaper component called Harfbuzz. Same should exist for Android. Passing any asian

Indic Language Support for SDK but not PhoneGap

烂漫一生 提交于 2019-12-10 01:04:43
问题 I am trying to develop an app in android with Indian language support exclusively. I just want to convert my text page, on app, in any Indian language, selected by user. For this I don't want to use web-service and also don't want to use Phonegap . I did some research and realise that rendering of Indic fonts are complex. I heard that there is a library "Harfbuzz" that render Indic Fonts properly, but it supports only NDK . Is there any library or engine for SDK ? 回答1: Check out this page of

Aspose.Words for Java v19.9新功能:实现创建重复节结构化文档标签能力!

我与影子孤独终老i 提交于 2019-12-09 16:17:55
Aspose.Words for Java 是功能丰富的Word处理API,允许开发人员在不使用Microsoft Word的情况下嵌入在自己的Java应用程序中生成,修改,转换,呈现和打印文档的功能。同时还提供访问和操作所有文档元素的格式属性,高质量转换为多种格式,将单个页面或完整文档呈现为不同文件格式,使用来自各种数据源或业务对象的数据生成报告等功能。 Aspose.Words for Java (点击下载) 更新至新版本v19.9,新增基于HarfBuzz整形器的高级排版以及简化Java上的XML数据源使用,添加对Truncate字体高度兼容性选项的支持,修复多项Bug,我们一起来看一看新功能详解吧! 主要特点 添加基于HarfBuzz整形器的高级排版 提供了用于编写和修改VBA宏的API 实现了创建重复节结构化文档标签的能力 简化了LINQ Reporting Engine的XML和CSV数据源的工作 改进了“Sitka Banner”、“Sitka Display”、“Sitka Heading”、“Sitka Small”、“Sitka Subheading”、“Sitka Text”和“Cambria Math”字体的渲染 实现OpenType数字间距 新功能示例 ▲WORDSNET-12655 - 实现了创建重复节结构化文档标签的能力

新里程碑!Java平台Word处理控件Aspose.Words v19.11支持Harfbuzz Shaper插件!

假如想象 提交于 2019-12-09 11:01:49
很高兴与大家分享Java平台的Aspose.Words最新版v19.11实现了另一个里程碑,该版本在基于Unix的操作系统上支持Harfbuzz Shaper插件,并使开发人员能够使用Web扩展,自定义水平格式规则形状等。接下来,我们一起来聊聊新版本的新功能。 Aspose.Words for Java( 点击下载 ) 是功能丰富的Word处理API,允许开发人员在不使用Microsoft Word的情况下嵌入在自己的Java应用程序中生成,修改,转换,呈现和打印文档的功能。 主要特点 基于Unix的操作系统支持Harfbuzz Shaper插件。 提供了与Web扩展一起使用的功能,新类允许自定义元素和属性,以扩展Office加载项表示形式的XML词汇表。 添加了自定义水平尺形状的格式的功能。 设置了“使用打印机指标”选项时,改进了字符间距计算。 宏支持得到改善。 Web扩展元素的支持 Aspose.Words API提供了WebExtensions命名空间,该命名空间提供了各种类来定制元素和属性,这些元素和属性扩展了XML词汇表以表示Office加载项。现在,可以使用Aspose.Words for Java 与Office加载项和Web Extensions中的任务窗格一起使用。为此,新版本提供了新的TaskPane类,TaskPaneCollection类

indic-text-renderer using harfbuzz and freetype

随声附和 提交于 2019-12-05 00:51:48
问题 I am developing an Android application which should support Devanagari Fonts. So I downloaded indic-text-renderer and tried to run it as per the instruction stated here and managed to successfully compile the NDK part. But when I try to run the Android project on a gingerbread emulator I get following error java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1311]: 33 cannot locate 'hb_buffer_create'... I tried many solution but none of them helped me. How can I fix this? Has

新里程碑!Java平台Word处理控件Aspose.Words v19.11支持Harfbuzz Shaper插件!

▼魔方 西西 提交于 2019-12-04 23:47:24
很高兴与大家分享Java平台的Aspose.Words最新版v19.11实现了另一个里程碑,该版本在基于Unix的操作系统上支持Harfbuzz Shaper插件,并使开发人员能够使用Web扩展,自定义水平格式规则形状等。接下来,我们一起来聊聊新版本的新功能。 Aspose.Words for Java( 点击下载 ) 是功能丰富的Word处理API,允许开发人员在不使用Microsoft Word的情况下嵌入在自己的Java应用程序中生成,修改,转换,呈现和打印文档的功能。 主要特点 基于Unix的操作系统支持Harfbuzz Shaper插件。 提供了与Web扩展一起使用的功能,新类允许自定义元素和属性,以扩展Office加载项表示形式的XML词汇表。 添加了自定义水平尺形状的格式的功能。 设置了“使用打印机指标”选项时,改进了字符间距计算。 宏支持得到改善。 Web扩展元素的支持 Aspose.Words API提供了WebExtensions命名空间,该命名空间提供了各种类来定制元素和属性,这些元素和属性扩展了XML词汇表以表示Office加载项。现在,可以使用Aspose.Words for Java 与Office加载项和Web Extensions中的任务窗格一起使用。为此,新版本提供了新的TaskPane类,TaskPaneCollection类