<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">Render arabic rtl text properly by solomancode · Pull Request #359 · opentypejs/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">opentype.js</anchor> · GitHub</cite>, <time>2022-08-15T10:10:30.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/opentypejs/opentype.js/pull/359">https://github.com/opentypejs/opentype.js/pull/359</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 
<code>opentype.js</code>
は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>列の処理中に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の元の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Tashkeel</anchor>
なら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">先読み</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">戻り読み</anchor>に於いて (何文字分でも?) 読み飛ばすというかなり無理のある処理を入れています
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p>そうしないと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング</anchor>がおかしくなるらしいのですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> の仕様書にはそんなことをしろとは書かれていません。
他の実装はどうしているのでしょうか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 部分表に <code>lookupFlag</code>
というフラグ集合があって、
そこに読み飛ばすべき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の種類が指定できます。
<code>IGNORE_MARKS</code> フラグが設定されていれば
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Tashkeel</anchor>
も読み飛ばすことになるはず。
そして読み飛ばされるべき mark
は
<code>GDEF</code>
表で定義することになっています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
きちんと定義された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>ときちんと対応した実装ならそれでうまく処理できるはず。
(<code>opentype.js</code> にはその処理が入ってないぽい。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">52204 – Find/Search option should support ignoring diacritics (Arabic Tashkeel and Hebrew nikkud)</cite>, <time>2022-08-15T10:15:16.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://bugs.documentfoundation.org/show_bug.cgi?id=52204">https://bugs.documentfoundation.org/show_bug.cgi?id=52204</anchor-external></p></body></html>