5

我正在使用<p>标签将阿拉伯文本插入 html 页面,并为 CSS 属性text-align: justify;提供特定的宽度和高度(以像素为单位)。

这样一来,段落单词之间就会出现不一致的空格;我们如何在单词内部使用正确的单词拉伸(使用正确的 tatweel/kashida)?

我已经尝试使用text-justify: kashidaCSS 属性,但它只适用于 IE,不适用于任何其他浏览器!如图所示,很明显text-justify: kashidaMozilla 不支持 IE,其他浏览器需要 IE。

如何在所有浏览器中获得相同的行为,以显示与 Internet Explorer 相同的行为?

4

2 回答 2

4

不幸的是,似乎kashidaCSS3 文本中删除并推迟到CSS4 文本,所以如果你想用 Kashida 证明你的文本,你应该尝试移植 harfbuzz-old添加 kashida 算法(它的算法从新一代 harfbuzz,ref中删除),它是基于在此处存档的 Microsoft 规范上。这是 Microsoft 的 kashida 插入优先级表,您应该尝试以某种方式实现: 在此处输入图像描述

ّ为 HTML 本身的文本样式添加 Kashida («ـ») 不是一个好主意(因为如果用户复制文本,它将包含添加的 Kashidas 并且它会给浏览器在页面中查找造成问题)但是作为当前的 webkit错误/blink错误(Safari / Chrome)版本不支持在内联(伪)元素期间加入草书字符(如阿拉伯语/波斯语),似乎没有任何机会在不插入 Kashida 的情况下获得这种类型的理由(或者你应该通过处理oncopy事件你自己有自己的问题)。

有趣的是,微软扩展了 IE Kashida 对齐实现以支持更有趣的东西,例如text-kashida-space(在文本对齐时配置 kashida 与空白扩展的比例)。似乎我们必须再等十年才能在所有主要浏览器中实现这些。

于 2013-12-26T20:17:04.580 回答
2

text-justify属性是在 IE 中实现的,它不是任何完整的 CSS 规范的一部分。它存在于CSS Text Module Level 3工作草案中,但即使在那里,它也被标记为存在风险:“如果没有(正确的)实现,以下特性存在风险,可能会在 CR 期间从规范中删除: [...] 'text-justify' 属性,尤其是它的 'kashida' 值”。

从创作的角度来看,您能做的最好的事情就是希望其他浏览器能够赶上。请求的样式相对复杂,可能无法用 JavaScript 模仿任何东西,就像你可以“填充” CSS 属性一样

于 2013-06-09T17:46:38.187 回答