Grapheme Clusters and Terminal Emulators12 hours agohttps://mitchellh.com/writing/grapheme-clusters-in-terminals
Show HN: Mojibake – a low-level Unicode library written in C12 days agohttps://mojibake.zaerl.com/Mojibake 是一个用 C11/C++17 编写的底层 Unicode 17 文本处理库,采用 MIT 许可证发布。它仅需两个文件(mojibake.c、mojibake.h)即可轻松集成,并提供标准化、字符计数和 NFKC 大小写折叠等功能。核心功能包括文本转换(标准化、大小写转换、过滤)、文本分析(字符数据库、分词、双向文本、表情符号、显示宽度)、排序/整理以及安全性(易混淆字符检测、标识符验证)。集成支持多种编码(UTF-8、UTF-16、UTF-32)、C/C++/WASM/TypeScript API、自定义分配器、用于缩小体积的构建时功能标志,以及全面的测试/模糊测试。该库包含用于命令行操作的 CLI 工具,设计小巧、快速、自包含,并兼容现代操作系统。
The footgun of right-to-left decorative characters21 days agohttps://blog.alexbeals.com/posts/the-footgun-of-right-to-left-decorative-charact...花饰(Fleurons)是一种装饰性排版元素,通过Unicode编码已纳入数字字体,包括诸如摩尼教标点花饰等符号。摩尼教花饰()是一个从右向左(R)的字符,在双向文本中可能导致意外渲染问题,例如打乱相邻数字的顺序。Unicode的双向算法根据字符类型(强类型、弱类型、中性类型)确定文本方向,其中R型字符优先于像欧洲数字这样的弱类型字符。为解决渲染问题,可将花饰包裹在HTML的<bdi>标签中,或使用CSS样式'unicode-bidi: bidi-override;'来隔离其方向性。摩尼教是一种历史上的世界性宗教,因迫害、其他宗教的竞争以及支持帝国的崩溃而逐渐衰落。这篇文章为Web开发者在混合方向文本环境中使用装饰性字符提供了实用的解决方案。
Unicode's transliteration rules are Turing-complete20 days agohttps://seriot.ch/computation/uts35/Unicode UTS #35 音译规则在其无界自然语义下允许通用计算,这一结果此前尚未公开发表。这些规则被广泛应用于 ICU 这一常见的 Unicode/全球化库的区域设置数据中,其在给定输入上的终止问题是不可判定的。音译规则包含上下文、捕获组、量词和游标回访等功能,从而支持复杂的重写操作。通过模拟科拉茨函数等模型,可以将二标签系统编译为音译规则,从而证明其通用性。ICU 实现了循环限制以防范无限计算,但规范本身并未定义此类限制。实例表明音译规则文件可以作为程序运行,能够计算诸如规则 110 元胞自动机与素数生成等功能。区域设置数据格式中无界重写能力带来了安全隐患,因为接受转换规则等同于接受代码执行。
Deciphering basmalaa month agohttps://blog.plover.com/lang/bismillah.html阿拉伯语排版由于草书体和必需连字而复杂,不同于拉丁文字体连字较少。早期的字体引擎未能正确渲染阿拉伯语连字,导致文本扭曲,尤其对如奉名句(basmala)等重要短语造成问题。Unicode码点U+FDFD被创建以代表奉名句,但不同设备上的字形各异,有时设计欠佳。奉名句短语'奉至仁至慈的真主之名'由四个单词组成,具有特定的字母连接和变音符标记。阿拉伯文字包含变音符、用于布局的拉伸标记(kashida),以及基于位置的字母形式变化,在书法中具有历史和文化意义。