文件最后提交记录最后更新时间
HO仓Sample同步 Signed-off-by: wanxiajing <leining3@h-partners.com> 4 个月前
!1146 merge capi-js-sample into master refactor(text): 精简文本引擎示例代码 Created-by: mobhot Commit-by: mobHot Merged-by: yangxi23 Description: **IssueNo**: https://gitcode.com/HarmonyOS_Samples/guide-snippets/issues/860 **Description**:(提交描述) https://gitcode.com/HarmonyOS_Samples/guide-snippets/issues/860 **Sig**: SIG_Sample **Feature or Bugfix**:(需求填Feature,缺陷填Bugfix) Bugfix **Binary Source**:No(涉及则Yes) **编译测试结果**:(Pass/Fail/评估不涉及) Pass ![image.png](https://raw.gitcode.com/user-images/assets/7933520/bf4d2c4d-2e87-4921-80c0-5c0315bdc9a9/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7933520/64948e93-ef1e-441f-be78-d38bfdb08a7d/image.png 'image.png') **测试用例测试结果**:(Pass/Fail/评估不涉及) Pass **Signed-off-by:** ### L0新增用例自检结果 - [ ] 是,有新增L0用例,且完成自检 - [ ] 否 See merge request: HarmonyOS_Samples/guide-snippets!114615 天前
refactor(text): 精简文本引擎示例代码,移除字体路径查询示例 Co-Authored-By: Agent Signed-off-by: mobHot <hulei100@huawei.com> 15 天前
图片调整 4 个月前
HO仓Sample同步 Signed-off-by: wanxiajing <leining3@h-partners.com> 4 个月前
refactor(text): 精简文本引擎示例代码,移除字体路径查询示例 Co-Authored-By: Agent Signed-off-by: mobHot <hulei100@huawei.com> 15 天前
refactor(text): 精简文本引擎示例代码,移除字体路径查询示例 Co-Authored-By: Agent Signed-off-by: mobHot <hulei100@huawei.com> 15 天前
HO仓Sample同步 Signed-off-by: wanxiajing <leining3@h-partners.com> 4 个月前
HO仓Sample同步 Signed-off-by: wanxiajing <leining3@h-partners.com> 4 个月前
refactor(text): 精简文本引擎示例代码,移除字体路径查询示例 Co-Authored-By: Agent Signed-off-by: mobHot <hulei100@huawei.com> 15 天前
HO仓Sample同步 Signed-off-by: wanxiajing <leining3@h-partners.com> 4 个月前
README.md

文本测量(C++)

介绍

本工程主要实现了对以下指南文档中 文本测量 示例代码片段的工程化,主要目标是实现指南中示例代码需要与sample工程文件同源,以及除基本文字、排版属性之外,针对应用中不同文本的设计,开发者可能需要设置使用不同的绘制样式或能力,以凸显对应文本的独特表现或风格,此时可以结合使用多种绘制样式进行文本的渲染。

效果预览

使用说明

  1. 该工程可以选择在模拟器和开发板上运行。
  2. 点击构建,即可在生成的应用中点击对应的按钮进行图案的绘制。
  3. 进入“ArkGraphics2D/TextEngine/NDKTextMeasurement/entry/src/ohosTest/ets/test/DrawingAbility.test.ets”文件,可以对本项目进行UI的自动化测试。

工程目录

NDKTextMeasurement
├──entry/src/main
│  ├──cpp                           // C++代码区
│  │  ├──CMakeLists.txt             // CMake配置文件
│  │  ├──hello.cpp                  // Napi模块注册
│  │  ├──common
│  │  │  └──log_common.h            // 日志封装定义文件
│  │  ├──plugin                     // 生命周期管理模块
│  │  │  ├──plugin_manager.cpp
│  │  │  └──plugin_manager.h
│  │  ├──samples                    // samples渲染模块
│  │  │  ├──sample_bitmap.cpp
│  │  │  └──sample_bitmap.h
│  ├──ets                           // ets代码区
│  │  ├──entryability
│  │  │  ├──EntryAbility.ts         // 程序入口类
|  |  |  └──EntryAbility.ets
|  |  ├──interface
│  │  │  └──XComponentContext.ts    // XComponentContext
│  │  └──pages                      // 页面文件
│  │     └──Index.ets               // 主界面
|  ├──resources         			// 资源文件目录

具体实现

  1. 利用Native XComponent来获取NativeWindow实例、获取布局/事件信息、注册事件回调并通过Drawing API实现在页面上绘制形状。
  2. 通过在IDE中创建Native c++ 工程,在c++代码中定义对外接口为drawText,在js侧调用该接口可在页面上绘制出“Hello World Drawing”文字。
  3. 在XComponent的OnSurfaceCreated回调中获取NativeWindow实例并初始化NativeWindow环境。调用OH_Drawing_TypographyGetLongestLine接口获取最长行的宽度,调用OH_Drawing_TypographyGetLongestLineWithIndent接口获取最长行的宽度(该宽度包含当前行缩进的宽度),OH_Drawing_TypographyGetLineCount接口获取文本行数,OH_Drawing_TypographyGetLineMetrics接口获取段落行的度量信息,OH_Drawing_TextStyleGetLetterSpacing接口获取文本的字符间距,OH_Drawing_TypographyLayoutWithConstraintsWithBuffer接口在限定区域内排版文本并返回实际排版尺寸,OH_Drawing_TypographyGetCharacterPositionAtCoordinateWithBuffer接口根据给定坐标获取最接近的字符位置,OH_Drawing_TypographyGetCharacterRangeForGlyphRangeWithBuffer接口根据字形范围获取对应的字符范围,OH_Drawing_TypographyGetGlyphRangeForCharacterRangeWithBuffer接口根据字符范围获取对应的字形范围。

相关权限

无。

依赖

不涉及。

约束和限制

  1. 本示例支持API26版本SDK,版本号:26.0.0。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo ArkGraphics2D/TextEngine/NDKTextMeasurement/ > .git/info/sparse-checkout
git remote add origin https://gitcode.com/HarmonyOS_Samples/guide-snippets.git
git pull origin master