首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果文本中有阿拉伯语或波斯语字母,则通过fontmetrics计算的字符串宽度非常慢

如果文本中包含阿拉伯语或波斯语字母,则通过fontmetrics计算的字符串宽度可能会变慢。这是因为阿拉伯语和波斯语等一些非拉丁字母语言具有特殊的字形和排列规则,这导致在计算字符串宽度时需要进行更复杂的处理。

在前端开发中,通常使用fontmetrics来获取文本的宽度和高度等信息,以便进行布局和渲染。然而,对于包含非拉丁字母的文本,fontmetrics的计算过程可能会更加耗时。

为了解决这个问题,可以考虑以下几点:

  1. 使用缓存:如果需要多次计算同一段文本的宽度,可以将计算结果缓存起来,避免重复计算。
  2. 使用字体子集:对于包含非拉丁字母的文本,可以使用字体子集来优化渲染速度。字体子集是指从完整字体中提取出只包含需要的字符的字体文件,这样可以减少字体文件的大小,提高加载和渲染速度。
  3. 使用优化的字体渲染引擎:一些现代的浏览器和字体渲染引擎已经对非拉丁字母的渲染进行了优化,可以提高计算字符串宽度的速度。

总之,对于包含阿拉伯语或波斯语字母的文本,通过fontmetrics计算字符串宽度可能会变慢。为了提高性能,可以考虑使用缓存、字体子集和优化的字体渲染引擎等方法来优化计算过程。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Draw Text in Deep

(注意以上方法和属性是在API 21引入,对于之前版本,只能通过SpannableString类及相应方法来间接调整。) 通过下面这张图,大家可以非常清楚了解FontMetrics。 ?...如果所选字体为等宽字体,每个字符宽度是相同如果非等宽字体,则不同字符宽度是不同。...一般来说,如果待渲染文本是属于Spannable文本对象,使用动态布局DynamicLayout,否则,使用isBoring判断是不是单纯单行布局,如果使用BoringLayout,其他情况使用...,在不超过这个宽度范围内返回实际测量值,text表示我们文本字符串,start表示测量字符串开始位置,end表示测量字符串结束位置,measureForwards表示测量方向,maxWidth...这个方法在一些自定义文本绘制场景下比较常用,例如阅读类APP文字排版,需要在换行时候动态折断生成一行新字符串。 基本使用方式如下所示。

1.4K30

Android精确测量文本宽高及基线位置方法

通过 Paint measureText 方法,可以测量文字宽度 方案2....通过 Paint getTextBounds 获取文本边界矩形 Rect,根据 Rect 可以计算出文字宽高。 方案4....通过 Paint 获取文字 Path, 根据 Path 获取文本边界矩形 Rect, 根据 Rect 可以计算出文字宽高。 表面上看,我们有以上四种方案可以获取文字高。...与测量文字高度类似,我们如何获取文字基线 baseline 位置。 ? 一般博客上会告诉我们,如果需要计算文字基线 baseline 位置,可以通过 FontMetrics计算。...如果要求不精确,可以使用 Paint measureText 方法计算文本宽度如果要求精确测量,可以使用 Paint getTextBounds 方法 或者 getTextPath 方法,获取文本边界框矩形

1.3K21
  • ex命令

    ex命令 ex命令用于在Ex模式下启动vim文本编辑器,ex执行效果如同vi -e,如要从Ex模式回到普通模式,则在vim中输入:vi:visual指令即可,可以通过运行vi -e来启动ex,也可以通过运行...-n: 不会使用交换文件,这样崩溃后恢复将是不可能如果要在非常介质例如软盘上编辑文件,此功能非常方便。 -r: 列出交换文件,以及有关使用它们进行恢复信息。...-A: 如果vim是在阿拉伯语支持下编译,用于编辑从右向左文件和阿拉伯语键盘映射,此选项将以阿拉伯语模式启动vim,即设置ARABIC,否则将发出错误消息,vim将中止。...-F: 以波斯语模式开始。 -T : 告诉vim正在使用终端名称,仅在自动方式无效时才需要,应该是vim内置已知终端,或在termcapterminfo文件中定义终端。...-O[N]: 并排打开N个窗口,如果省略N,则为每个文件打开一个窗口。 +: 从文件末尾开始。 +: 对于第一个文件,光标将定位在num行上。如果缺少num,光标将位于最后一行。

    92010

    HenCoder Android 开发进阶:自定义 View 1-3 文字绘制

    由于文字绘制和图形 Bitmap 绘制比起来,尺寸计算复杂得多,所以它有一整套方法来计算文字尺寸。 2.2.1 float getFontSpacing() 获取推荐行距。...这并不是 bug,而是因为 getFontSpacing() 结果并不是通过 FontMetrics 标准值计算出来,而是另外计算出来一个值,它能够做到在两行文字不显得拥挤前提下缩短行距,以此来得到更好显示效果...这相当于 measureText() 一个快捷方法,它计算等价于对字符串每个字符分别调用 measureText() ,并把它们计算结果分别填入 widths 不同元素。...(如果宽度没有超限,则是文字总个数)。...2.2.8 hasGlyph(String string) 检查指定字符串中是否是一个单独字形 (glyph)。最简单情况是,string 只有一个字母(比如 a)。

    1.3K20

    AIMCS 与其它压缩算法比较

    这些短文本是在没有任何过滤情况下从英语、阿拉伯语以及波斯语 Twitter 和短文本消息中提取。 为什么使用不同语言来进行实验呢? 那是因为每种语言都有自己熵,而熵直接影响了压缩比。...实验二:压缩阿拉伯和波斯语字符串(Unicode)得到结果 语言 算法 原始大小(Bytes) 压缩比(%) 运行时间(s) Persian Huffman 3243550 67.55 32.56 Persian...另外,AIMCS 是通过压缩数据流来进行压缩,所以词法错误并不会影响 AIMCS 性能。 实验总结 由于以上优点,AIMCS 也适用于基于雾计算(fog computing)方法。...在物联网(IoT)场景中,许多计算能力有限小型智能设备需要不断产生极短字符串(tiny strings)数据,并通过互联网将其发送到远程服务器上进行处理。...其次,AIMCS 不适合压缩文本以外数据,因为AIMCS 设计时压缩单元是一个字符,压缩其它图像、音频等其它数据,这些数据包含很多与文本压缩不同参数,这使得 AIMCS 需要在发送端进行大量计算

    27810

    从数字滚动动画看自定义View绘制思路

    2.通过当前画笔去计算正确drawText基准线。...baseline = (getMeasuredHeight() - fontMetrics.bottom + fontMetrics.top) / 2 - fontMetrics.top; 3.等到数字宽度...如果讲自动循环刷新方法取消掉,并且通知view进行最后一次定位绘制。 以上就是进入i循环先对是否绘制结束判断。 如果没有结束那么继续绘制。...2.帮助计算9上面的是几。8上面是几。 3.将字符串转换为INT数组。 4.通过Handler控制重绘。 我们还需要几个供给用户调用方法: 1.start开始滚动。...4.可能用户不希望每次都设置偏移量数组那么我们提供三种默认偏移量速度数组(高位快,高位,速度相同) 回顾 在自定义view时候如果view是像本文一样,循环去绘制不断刷新的话,就意味着

    2.7K30

    Java 竖排长图文生成

    背景 前面《Java 实现长图文生成》中实现了一个基本长图文生成工具,但遗留了一些问题 文字中包含英文字符时,分行计算问题 暂不支持竖排文字展示 其中英文字符计算已经修复,主要是通过FontMetric...来计算字符串实际占用绘制长度,这一块不做多讲,本篇主要集中在竖排文字支持 设计 有前面的基础,在做竖排文字支持上,本以为是比较简单就能接入,而实际实现过程中,颇为坎坷 1....起始y坐标计算 因为我们支持集中不同对齐方式,所以在计算起始y坐标时,会有出入, 实现如下 上对齐, y = 上边距 下对其, y = 总高度 - 内容高度 - 下边距 居中, y = (...,有些明显区别,所以为了逻辑清晰,将两种场景分开,提供了两个方法 实现步骤: 计算实际绘制内容占用宽度 判断是否需要扩充画布(需要则扩充) 绘制文本 更新内容宽度 private Builder...坐标计算,一个为0,一个为 新宽度-旧宽度 offsetX 计算 上面是文本绘制,图片绘制比较简单,基本上和水平绘制时,没什么区别,只不过是扩充时w,h计算不同罢了 private Builder

    2.1K60

    干货 | 国际化探索之路-Trip.com如何走进阿拉伯市场

    然而由于历史、文化原因,还有部分国家语言书写是从右到左(right-to-left _以下简称RTL),如阿拉伯语波斯语、希伯来语、乌尔都语、维吾尔语等。...自定义控件中如果涉及位置计算(一般出现在onLayout方法中),RTL模式下都需要调整计算方法。...leading trailing设置左右约束,可获得视图布局RTL效果; 文本对齐:未显式设置文本对齐方向段落书写方向,文本对齐方式也将自适应RTL布局; 图片翻转:使用imageWithHorizontallyFlippedOrientation...Android 默认值跟随Text 语言, 如英语Text下为 左对齐,阿拉伯语Text下为右对齐: - 如果Text 设置了 textAlign,该Text会正常显示,无需适配 - 如果Text没有设置...如果APP 有切换 Locale功能,切换Locale前后,Native端isRTL值发生变化,如从en-us 切换到ar-eg,RN端后续读取I18nManager.isRTL 均为错误值。

    4.2K41

    译|你不知道CSS国际化

    lang 属性是一个非常重要属性,因为它标识web上文本内容语言,而且这种信息在许多地方都被使用。上面提到Chrome内置翻译,针对特定语言内容搜索引擎以及屏幕阅读器。...在大多数情况下,你会使用像 zh 这样两个字母代码来表示中文,但中文(在其他语言中,如阿拉伯语)被认为是由许多语言组成大语言,其中有更多主语子标记。...重点是,语言标签可以不只是两个字母,而是可以长一些。但最广义类别永远是第一位,因此,要以特定字符串开头属性值为目标,我们使用这个 ^ 语法开头。...当您在垂直排版东亚文本中插入基于拉丁语字词字符时,通常会起作用。对于缩略语,您可以选择使用 text-combine-upright 方式将字母压缩到一个字符空间。 ?...有些人可能想知道从右到左语言,如阿拉伯语、希伯来语波斯语(仅举几例),以及CSS是否也适用于这些文字。 简而言之,CSS不应该用于双向风格设计。

    1.6K10

    Swahili-text:华中大推出非洲语言场景文本检测和识别数据集 | ICDAR 2024

    斯瓦希里语从阿拉伯语(约占40%)、波斯语、葡萄牙语、英语和德语等外语中借用了许多词汇。尽管如此,斯瓦希里语仍被归类为资源匮乏语言之一,自然语言处理任务受到了注释数据稀缺限制。 ...Alexander R等人关注低资源语言(如斯瓦希里语)中语音数据集缺乏,特别是口语数字识别领域。...与拉丁字母场景文本识别相关流行数据集有以下:ICDAR数据集在文档分析和识别领域非常流行。ICDAR 2013数据集包含462张高分辨率自然场景图像,如户外场景、标志和海报。...通过文本检测转化为回归问题,模型学习估计文本实例空间分布,这使其非常适合需要精确定位文本区域场景。基于部分方法识别并将文本部分与单词边界框关联起来。...注意力机制在计算机视觉领域,包括场景文本识别中,取得了显著成果。注意力机制专注于输入相关部分,从而在复杂变化环境中实现更精确字符识别。

    7210

    .NET WebShell 免杀系列之Unicode编码

    ,所以就开始有了其它编码方法,但因为缺少一个一统天下标准,所以乱码问题非常严重。...2.2 码位 码位英文名为 Code point Code position ,Unicode 字义了字符集合后,需要为每个字符指定一个数字,这样计算机才有办法处理。...,可被利用拆解代码里敏感类名方法名 4.1 零宽度非连接器 零宽度非连接器:ZERO WIDTH NON-JOINER(ZWNJ) U+200C、U+0000200C 通常使用在波斯语多个文字连在一起时起到分割符作用...,用于Microsoft Word 等程序中文字处理,像西里尔语从左到右文本、如叙利亚语从右到左文本,用于设置相邻字符相文本方向分组方式。...例如变成 Sys\u200Ctem.Mana\u200Cgement 免杀成功顺利通过D盾查杀,编码后助手文件运行也一切正常,如下图 0x06 结语 相信通过本文介绍大家对.NET下Unicode

    1.6K30

    Android自定义View实现渐变色进度条

    4.进度值,使用文本来显示; 5.弧形头部,考虑使用直线进行连接,或者使用曲线,例如贝塞尔曲线; 我首先初步实现了进度条模样,发现样子有了,却不太美观。...,后面留空6; 高度分为4个: 外圆:10 字高:9 内圆:6 线粗:5 考虑上下各留空10,视图高度为30。...考虑到视图整体效果,可以由用户来设置长度值与高度值,按比例取最小值来进行绘图。 首先计算出一个单位实际像素数,各部分按比例来显示即可。 还有一个弧形头部,是怎么实现呢?...y 是指字符串baseline位置,不是文本中心。...通过计算可以调整为居中,如下: //计算坐标使文字居中 FontMetrics fontMetrics = mPaint.getFontMetrics(); float fontHeight = fontMetrics.bottom

    2K10

    HTML内超过多少像素以省略号显示

    很多时候都有这种需求,页面上文字显示不下,需要以省略号代替,可能有些人会想到通过控制文字长度实现,的确,在已知文字样式下,如果文字全是中文或者全是非中文是可以通过长度来控制,但是我们情况通常是中英文混合...,但有的时候我想要这种格式,“测试-看我有多长看我....doc”,如果文本过长的话,.doc前文本加省略号,保留格式标志,这种CSS就无法控制了。        ...通过改变要显示文本,前提是动态网站,思路是后台语言取得文本内容后,在显示在前台前,根据页面当前字体样式动态改变文本。...通过JavaScript计算 function test() { var info = "CSS截取字符串,超出用省略号代替"; var temp = info;...span,从而得到文本宽度,效率应该很低。

    1.3K00

    Faker 都能造哪些数据

    我们在测试过程中,会使用一些测试数据,测试数据有时候来自数据库里脱敏数据,有时候需要自己造。自己造一些简单文本还好,一些复杂,比如身份证号,信用卡号,街道地址可就麻烦了。...ar_EG - Arabic (Egypt) 阿拉伯语 - 埃及 ar_PS - Arabic (Palestine) 阿拉伯语 - 巴勒斯坦 ar_SA - Arabic (Saudi...():随机user_agent信息 4、数字、文本、加密相关 numerify():三位随机数字 random_digit():0~9随机数 random_digit_not_null():1~9随机数...random_int():随机数字,默认0~9999,可以通过设置min,max来设置 random_number():随机数字,参数digits设置生成数字位数 pyfloat(): left_digits...():随机Decimal数字(参考pyfloat参数) pystr():随机字符串 random_element():随机字母 random_letter():随机字母 paragraph():随机生成一个段落

    68620

    源代码特洛伊木马攻击

    unicode 文本,中文直译作 “双向文本”,意思是一些语言是从左到右,而另一些则是是从右到左(如:阿拉伯语),如果同一个文件里,即有从左向右文本也有从右向左文本两种混搭,那么,就叫bi-direction...术语通常缩写为“ BiDi ”“ bidi ”。使用双向文本对于中国人来说并不陌生,因为中文又可以从左到右,也可以从右到左,还可以从上到下。 早期计算机仅设计为基于拉丁字母从左到右方式。...添加新字符集和字符编码使许多其他从左到右脚本能够得到支持,但不容易支持从右到左脚本,例如阿拉伯语希伯来语,并且将两者混合使用更是不可能。...从右到左脚本是通过ISO/IEC 8859-6和ISO/IEC 8859-8等编码引入,通常以书写和阅读顺序存储字母。...如果你把上面这段代码拷贝粘贴到字符界面上 vim 编辑器里,你就可以看到下面这一幕。 其中有两个浅蓝色尖括号东西—— 和 。

    87530

    58岁PDF发明人离世!他给男友订了一架直升机,从此相伴13年

    图片 和他在一起13年丈夫,发文哀悼表示: 「如果你使用过PDF,你就用过他代码。 如果你在电脑上使用过阿拉伯语波斯语、乌尔都语中文,你用过他代码。...在丈夫口中,Alan非常谦虚、才华横溢,充满爱心。 在同事口中,Alan同样有非常口碑——知识渊博,技术精湛。...在学校期间,他曾是情景喜剧《家庭关系》摄制组一员。 Alan编程是自学,他从未在学校正式学过计算机科学工程学。 根据他LinkedIn,他毕业后不久就从电影转向了技术。...他是发明PDF核心团队成员之一,他和同事一起,构建了支持阿拉伯语波斯语和乌尔都语等语言打印机驱动程序,这是一个将数据转换为可打印格式软件。...他学术研究主要集中在两个方面,其中有多篇同行评议论文和大约30项专利正在申请中: 资源受限环境下机器学习,例如在电池供电设备和边缘计算上。 为观察性数据开发因果推理方法。

    27120

    iOS MachineLearning 系列(11)—— 自然语言识别与文本分析

    iOS MachineLearning 系列(11)—— 自然语言识别与单词分析 在上一篇文章中,我们介绍了使用NaturalLanguage框架来进行自然语言拆解,可以将一段文本按照单词,句子段落模式进行拆解...甚至我们还可以分析文本积极消极程度来推测内容取向,从而帮助开发者开发出更加智能应用。...1 - 语言识别 NLLanguageRecognizer类用来进行语言识别,其可以对输入文本所使用语言进行推断,使用非常简单。...let string3 = "こんにちは中国" 调用NLLanguageRecognizer实例processString方法即可对字符串进行解析,这个方法是同步,解析完成后,通过dominantLanguage...,对于lemma,language,script,sentimentScore分析方案,其结果会直接包装成字符串,其他分析方案结果进行了定义,如下: extension NLTag { /

    69410

    影响众多编程语言、引发供应链攻击,剑桥大学发布「木马源」漏洞

    然而,也有一些脚本(如阿拉伯语希伯来语)显示文本自然顺序是从右往左。当混合具有不同显示顺序脚本时,必须有一种确定性方法来解决方向冲突。...为了避免这种错误,我们可以利用编程语言以下两个原则: 注释:大多数编程语言都允许编译器和解释器忽略所有文本(包括控制符)注释; 字符串:许多编程语言允许字符串可以包含任意字符,同理也包括控制符。...他们使用了两个看起来相似但实际上不同 H,蓝色拉丁语 H 和红色西里尔字母Н。当进行编译时,该程序输出文本「Goodbye, World!」。...加强防御 这样攻击可能很难检测,因为经过渲染源代码看起来非常完美。如果逻辑上变化足够微小,以至于后续测试中未被发现,那么攻击者可能会在不被发现情况下引入有针对性漏洞。...图源:XKCD.com/2347/ 加州大学伯克利分校计算机科学系讲师 Nicholas Weaver 表示,剑桥提出了一组非常简单、优雅攻击,可能会使供应链攻击变得更加严重。

    88010

    《前端运维》一、Linux基础--08Shell其他及补充

    printf 使用引用文本空格分隔参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串宽度、左右对齐方式等。...2、%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有表示右对齐),任何字符都会被显示在 10 个字符宽字符内,如果不足自动以空格填充,超过也会将内容全部显示出来。...ASCIIBEL字符 \b 后退 \c 抑制(不显示)输出结果中任何结尾换行字符(只在%b格式指示符控制下参数字符串中有效),而且,任何留在参数里字符、任何接下来参数以及任何留在格式字符串字符...仅在格式字符串中有效 \0ddd 表示1到3位八进制值字符 四、awk命令 AWK 是一种处理文本文件语言,是一个强大文本分析工具。...利用wc指令我们可以计算文件Byte数、字数、或是列数,若不指定文件名称、或是所给予文件名为"-",wc指令会从标准输入设备读取数据。

    68620
    领券