はじめに

先日無償化が発表された Affinity 3。旧来のPublisher、Designer、Photoが統合され、ペルソナ を切り替えることで各機能を利用できる新しい体系に生まれ変わりました。

本記事では、その中の レイアウトペルソナ(DTP機能)に dvipdfmx で生成したPDFをインポートする際、日本語が文字化けする問題の原因と対策を考察します。

問題の発生条件

項目内容
対象ソフトウェアAffinity 3(レイアウトペルソナ)
バージョン3.0.1.3808
インポートファイルdvipdfmx で日本語フォントを用いて生成されたPDF
発生現象PDF内の日本語テキストが文字化けする

問題の状況

dvipdfmx で出力したPDFをAffinity 3のレイアウトペルソナにインポートすると、インポート前のページプレビューの段階から既に日本語テキストが文字化けしています。

さらに、Affinity 3が「見つからないフォント」として認識したものを、BIZ UDP明朝など別の日本語フォントに置き換えても、文字化けは解消されません。テキストの見た目のデザイン(フォントの持つ雰囲気)だけが変化し、文字の羅列は意味不明なままです。

なお、インポート時の読み込み対象を 「ページ」 または 「アートボード」 のいずれに設定しても、この現象は同様に発生します。

原因の切り分けと考察

切り分け

まず、問題が dvipdfmx 側にあるのか、Affinity側にあるのかを切り分けます。

  1. 他のPDFビューアで確認する: 生成されたPDFをAdobe Acrobat Readerや一般的なウェブブラウザで開きます。
  2. 結果の判断:
    • 他のビューアでも文字化けする場合: dvipdfmx の設定に問題がある可能性が高いです。
    • Acrobat等では正常だが、Affinity 3でのみ文字化けする場合: Affinity 3側のPDF解釈に起因する問題と考えられます。(今回のケースはこちらに該当します)

原因の考察:エンコーディングの問題か?

フォントを正常なものに置き換えても文字化けが解消されないという現象は、単なる「フォントファイルが見つからない」という問題ではないことを強く示唆しています。

これは、PDF内部の 文字エンコーディング情報(どのバイトがどの文字に対応するかを定義する情報。専門的には CMap と呼ばれます)をAffinity 3が正しく解釈できていない可能性が高いです。

つまり、文字の「形」を収めたフォントデータはPDF内に存在していても、どのコードをどの「形」に割り当てるかの対応表が失われている、あるいはAffinity 3に無視されている状態と考えられます。そのため、dvipdfmx 側で単純にフォントの埋め込み方式を変えるだけでは解決しない可能性があり、根深い問題と言えます。

有効な対策

「テキストを曲線に変換」オプションが存在しない問題

回避策として一般的な「テキストを曲線(アウトライン)に変換」ですが、Affinity 3のPDFインポートダイアログには、そもそもこの選択肢自体が存在しません。

そのため、Affinity 3内で完結する手軽な解決策は現状なく、PDF生成側での調整、あるいは代替ツールでの対応が必須となります。

対策1: (非推奨) dvipdfmxでの設定見直しは極めて困難

原因がAffinity 3側のPDF解釈にある可能性が高い以上、dvipdfmx側での対応は非常に困難を極めます。

文字エンコーディング情報(ToUnicode CMapなど)をPDFに含める設定を試行錯誤することになりますが、これはTeXの専門知識を要する上、試した結果必ずしも解決に繋がらない 可能性が高いです。Affinity 3がその情報を正しく解釈してくれなければ、徒労に終わるでしょう。

対策2: (推奨) 代替ソフトウェアを利用する

現時点で最も確実かつ現実的な回避策は、他のDTPソフトウェアを利用することです。

当方で試したところ、Adobe InDesign など、日本語DTP機能が成熟しているアプリケーションでは同じPDFを問題なくインポートできました。

まとめ

Affinity 3のレイアウトペルソナと dvipdfmx の組み合わせで発生する文字化けは、文字エンコーディング(CMap)の解釈に起因する根深い互換性の問題 である可能性が濃厚です。

加えて、Affinity 3は公式に 縦書きをサポートしておらず、将来的な対応計画も示されていません公式ヘルプ参照)。この事実も踏まえると、今回の文字化けは、Affinity 3の日本語や複雑なテキストレイアウトに対するPDF解釈能力が、まだ発展途上であることに起因する問題と考えられます。

Affinity 3のPDFインポート機能には、回避策として有効な「テキストを曲線に変換」の 選択肢自体が存在しない ため、現状では以下のいずれかの方法で対応するのが賢明です。

  • 現実的な回避策(推奨): Adobe InDesignなど、PDFの解釈能力が高い他のDTPソフトウェアでインポートする。
  • dvipdfmx側での試行(非推奨): 解決の保証がないことを理解した上で、専門的なエンコーディング設定を試みる。

今後のAffinity 3のアップデートで、これらの日本語関連機能が改善されることを期待したいところです。