<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>
<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> <cite><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">The Compact Font Format Specification</anchor> - 5176.CFF.pdf</cite>, <time>2021-02-18T01:31:12.000Z</time>, <time>2022-08-31T12:01:06.024Z</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://adobe-type-tools.github.io/font-tech-notes/pdfs/5176.CFF.pdf">https://adobe-type-tools.github.io/font-tech-notes/pdfs/5176.CFF.pdf</anchor-external></li><li>
<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> <cite>The <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Type 2</anchor> Charstring Format - 5177.Type2.pdf</cite>, <time>2021-02-18T01:31:12.000Z</time>, <time>2022-08-31T12:01:38.416Z</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://adobe-type-tools.github.io/font-tech-notes/pdfs/5177.Type2.pdf">https://adobe-type-tools.github.io/font-tech-notes/pdfs/5177.Type2.pdf</anchor-external></li><li><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="ja-jp">CFF - Compact font format table (OpenType 1.9) - Typography | <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft</anchor> Docs</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2022-08-31T12:00:12.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://docs.microsoft.com/ja-jp/typography/opentype/spec/cff">https://docs.microsoft.com/ja-jp/typography/opentype/spec/cff</anchor-external></li><li>
<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> 
<cite xml:lang="ja-jp">CFF2 - Compact font format version 2 table (OpenType 1.9) - Typography | <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft</anchor> Docs</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2022-08-31T12:00:49.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://docs.microsoft.com/ja-jp/typography/opentype/spec/cff2">https://docs.microsoft.com/ja-jp/typography/opentype/spec/cff2</anchor-external></li></ul></refs></section><section><h1>メモ</h1><ul><li><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="ja">OpenType/CFFの仕様の解説 - Webと文字</cite>, <time>2022-08-14T13:45:20.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://project-the-tower2.hatenadiary.org/entry/20101204/1291482945">https://project-the-tower2.hatenadiary.org/entry/20101204/1291482945</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 消滅確認 <time>2023-09-01T14:02:19.00Z</time></li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="ja">OpenType/CFFのフォントを読んでみる - にせねこメモ</cite>, <time>2023-09-01T14:01:02.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://nixeneko.hatenablog.com/entry/2018/06/20/000000">https://nixeneko.hatenablog.com/entry/2018/06/20/000000</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CFF</anchor> において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を表す <code>CharString</code> の長さには制限があります。
符号化された状態の制限なので正確に説明するのは難しいのかもしれませんが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を表す <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">path</anchor> に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御点</anchor>の数が万単位になると、
上限に到達するようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> の上限に達したフォントを <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CFF</anchor>
が壊れているとして受け付けません。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CFF</anchor> として一応構造上正当なのか、
それとも上限を超えてフォントデータとして壊れてしまっているのかは未確認です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
そのような複雑な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字形</anchor>は1つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>で記述することはできませんが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">連結部分</anchor>の1つ1つが上限に達する複雑さでないなら、
記述可能な複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>に分割し、 <code>GSUB</code> や <code>GPOS</code>
を活用して同じ位置に重ね合わせて表示させることは難しくありません。</p></section></body></html>