フォント指定について

@peyton.xu
ありがとうございます。

MS Pゴシックで作成されたExcelファイルを読み込んで、Linuxサーバー上でIPA ゴシックで出力する場合はどのようになりますか?
サンプルコードがあればいただけますか?

@kenable811,

コード行は次のようになります。

FontConfigs.SetFontSubstitutes("MS PGothic", new string[] { "IPA Gothic" });

(注: 正しいフォント名を確認して使用してください)

さらに、プログラムの先頭にも次のコード行があることを確認してください。

FontConfigs.SetFontFolder("/usr/share/fonts", true);
FontConfigs.SetFontFolder("/usr/local/share/fonts", true);

(注意: 環境に応じてフォルダーのパスを変更してください)

@amjad.sahi
ありがとうございます。

しかし、異なるフォントで出力されてしまいます。Windows上でテストをしても同様に指定したフォントで出力することができませんでした。
似ているフォントが存在している場合は、上記で指定してたとしても置換されないのですか?

@kenable811,

以下を圧縮して添付してください。

  1. Excelファイルを入力
  2. Aspose.CellsでPDFファイルを出力
  3. 完全な実行可能なサンプル Java プログラム/コード
  4. 置換したいフォントを送信します

これらのアーティファクトを受け取ったら、作業を開始します。

@amjad.sahi

とりあえず、2のみですがご確認お願いします。
2_出力処理.zip (909 Bytes)

@kenable811,

コードスニペットをありがとう。

また、問題を弊社側で正確に評価するために、入力 Excel ファイルと出力 PDF ファイルも必要です。 したがって、必要に応じてリソース ファイルを圧縮して添付してください。 すぐに問題を確認させていただきます。

@amjad.sahi
リソースファイルを送付します。ご確認お願いします。
ファイル一式.zip (61.6 KB)

@kenable811
フォント置換のメカニズムは、既存のフォントは文字を表示できないか、既存のフォントは置換されたフォントを使用するためにインストールされていません。

あなたのテストコードについては、フォントファイル「ipag.ttf」のフォント名は「IPAPGothic」ではなく「IPAGothic」です。

フォントがインストールされているためフォント置換ができない場合は、スタイルを設定することでフォント置換の問題を解決できます。サンプルコードは次のとおりです。

//   <- 3 セルにアクセス >
Aspose.Cells.Cell cell1 = sht.Cells["B2"];

// ③セルへの書込
cell1.PutValue("テスト");

Style b2Style = cell1.GetStyle();
b2Style.Font.Name = "IPAGothic";
cell1.SetStyle(b2Style);

以下の文書を参照してフォントを設定することもできます。

@John.He
調査いただき、ありがとうございます。
「ipag.ttf」のフォント名を「IPAGothic」に正しく修正をしても解決できませんでした。

スタイルを設定する方法の場合、シート内の全てのセルに対して処理を行う必要があり、
処理に負荷がかかる懸念があります。

その為、フォルダー指定をし、置換処理をする方法で解決を望んでいます。
この方法でフォントが適用されないのはなぜですか?
Linuxサーバーで置換元のMS P ゴシックがうまくロードできないということですか?

@kenable811
フォント置換は、次の2つの場合にのみ機能します。

1、元のフォントがインストールされていない。
2、元のフォントは文字を表示できません 。

@John.He
LinuxサーバーにはIPA明朝、IPAゴシックがそれぞれインストールされています。
しかし、AsposeのAPIにおいて、ExcelのMS PゴシックがIPA 明朝として認識されたということでよろしいでしょうか?

@kenable811
この状況は正常だ。元のフォントが見つからないか、元のフォントが文字を表示できない場合、Aspose.Cellsは文字を表示できるフォントを探して置換します。

@John.He
MS Pゴシックが見つからないからIPA Pゴシックに置換する処理を
Aspose.Cells.FontConfigs.SetFontSubstitutes(“MS PGothic”, new String[] { “IPAPGothic” });

でしています。なぜこれで正しく動作しないのですか?
このコードが間違っているということですか?

@kenable811

前の返信を見てください。あなたが入力したフォントの名前は間違っています。次のコードを使用してください。

Aspose.Cells.FontConfigs.SetFontSubstitutes("MS PGothic", new String[] { "IPAGothic" });

@John.He
間違っているところは既に修正しましたが、それでも解決しませんでした。
前の返信にも記載しているのでみてください。

@kenable811
フォントファイル「ipag.ttf」をアップロードしてください。さらに検討します。

@John.He
IPAフォント一式を送付します。ご確認ください。
IPAfont00303.zip (8.2 MB)

@kenable811,

フォント「MS Pゴシック」がアンインストールまたは削除されたため、フォント英語名「MS PGothic」を取得できません。 したがって、ソースファイルに名前「MS Pゴシック」がある場合でも、次のコードが必要です。

Aspose.Cells.FontConfigs.SetFontSubstitutes("MS Pゴシック", new String[] { "IPAGothic" });

したがって、オリジンコードで行うのと同様に、両方の設定を安全に使用できます。

Aspose.Cells.FontConfigs.SetFontSubstitutes("MS PGothic", new String[] { "IPAGothic" });
Aspose.Cells.FontConfigs.SetFontSubstitutes("MS Pゴシック", new String[] { "IPAGothic" });

この前は誤解を招く回答をしてしまい申し訳ありませんでした

@peyton.xu, @amjad.sahi, @amjad.sahi, @John.He
解決しました。長い対応本当に感謝申し上げます。
ありがとうございました。

@kenable811
あなたの問題が解決されてうれしいです、私たちは常にあなたを助けます