9

Fontforge を使用して、特定のテキスト サンプルで使用されていないすべての文字を TTF フォント ファイルから削除するにはどうすればよいですか? つまり、テキストに実際に表示される文字のみを含む既存のフォントからサブセットを作成したいと考えています。(FontForge 以外の無料ツールを知っていれば、それは私にとってもうまくいきます)。

以下に小さな例を示します。「사슴 코끼리 당나귀」という単語を含むテキスト ファイルがあります。では、その小さなテキスト サンプルの一部ではない他のすべての文字をフォント ファイルから削除するにはどうすればよいでしょうか。最終的には、使用された文字のみを含む新しい TTF ファイルを作成したいと考えています。実際のテキストはこれよりも長いため、FontForge で手動で検索することはできません。

FontForge には特定の選択オプション (メイン メニュー > 編集 > 選択) があり、韓国語の文字を Unicode シーケンスに変換した後、「ワイルドカードによる選択」を試しました。しかし、まだ運がありません。

アイデアをありがとう!敬具

編集: 使用例: 私は子供向けの電子ブックを作成していますが、その性質上、主に画像で構成されています。ただし、テキストは画像の一部ではなく、画像の前景に表示される追加のレイヤーに表示されます。電子ブック ファイル (主に amazon kindle 用に作成しています) は、いくつかのメタ データ、画像ファイル、レイアウト情報、そしてもちろんフォント ファイルで構成されています。Amazon Kindle パブリッシング プログラムには、非常に厳しいファイル サイズ制限があります。私が目指している特定の価格帯で本を販売するには、ファイル サイズが 3 メガバイトを超えてはなりません。洋書体セットを使えばOKです。しかし、私の電子ブックはバイリンガルで、韓国語版の場合は (西洋のフォントに加えて) 韓国語のフォントを追加する必要があります。アジアのフォント ファイルは、アルファベット/グリフの性質上、比較的サイズが大きくなります。20個収納。000 (極端な場合は 200.000 まで) のグリフは、フォントの太さあたり ~ 7-12 メガバイトになります。繰り返しますが、私の本全体のファイル サイズの制限は、すべての画像とフォント ファイル (およびレイアウトとメタ ファイル) に対して 3 メガバイトです。電子ブックのテキストが読者によって変更されないことを知っているので、テキストで使用されていないフォントからすべてのグリフを破棄しても問題ありません。ユーザーの読み取りデバイスのストレージが不必要にいっぱいにならないようにすることも、ここでのもう 1 つの考慮事項です。すでに画像ファイルをかなり圧縮しており、特定の圧縮率で品質が低下し始めるため、圧縮をさらに進めることはできません。フォントのサブセット化が良い解決策であると考える理由が明確になったことを願っています。私の全体的な本のファイルサイズの制限は、すべての写真とフォント ファイル (およびレイアウトとメタ ファイル) に対して行う必要がある 3 メガバイトです。電子ブックのテキストが読者によって変更されないことを知っているので、テキストで使用されていないフォントからすべてのグリフを破棄しても問題ありません。ユーザーの読み取りデバイスのストレージが不必要にいっぱいにならないようにすることも、ここでのもう 1 つの考慮事項です。すでに画像ファイルをかなり圧縮しており、特定の圧縮率で品質が低下し始めるため、圧縮をさらに進めることはできません。フォントのサブセット化が良い解決策であると考える理由が明確になったことを願っています。私の全体的な本のファイルサイズの制限は、すべての写真とフォント ファイル (およびレイアウトとメタ ファイル) に対して行う必要がある 3 メガバイトです。電子ブックのテキストが読者によって変更されないことを知っているので、テキストで使用されていないフォントからすべてのグリフを破棄しても問題ありません。ユーザーの読み取りデバイスのストレージが不必要にいっぱいにならないようにすることも、ここでのもう 1 つの考慮事項です。すでに画像ファイルをかなり圧縮しており、特定の圧縮率で品質が低下し始めるため、圧縮をさらに進めることはできません。フォントのサブセット化が良い解決策であると考える理由が明確になったことを願っています。ユーザーの読み取りデバイスのストレージが不必要にいっぱいにならないようにすることも、ここでのもう 1 つの考慮事項です。すでに画像ファイルをかなり圧縮しており、特定の圧縮率で品質が低下し始めるため、圧縮をさらに進めることはできません。フォントのサブセット化が良い解決策であると考える理由が明確になったことを願っています。ユーザーの読み取りデバイスのストレージが不必要にいっぱいにならないようにすることも、ここでのもう 1 つの考慮事項です。すでに画像ファイルをかなり圧縮しており、特定の圧縮率で品質が低下し始めるため、圧縮をさらに進めることはできません。フォントのサブセット化が良い解決策であると考える理由が明確になったことを願っています。

4

2 に答える 2

16

FontForgeで既存のフォントのサブセットを半自動で作成する方法を見つけました。重要なのは、Fontforge のスクリプト機能を使用することでした。インターネット サービス (以下のリンクを参照) を使用して、本で使用するすべての文字の Unicode を取得しました。これは、「\uc6d0\uc22d\uc774\uac1c\ubbf8\uacf0\ubc8c\ub3cc\uace0\ub798」のようになります。

サービスの出力を取得し、Notepad++ の「検索と置換」機能を使用して、スクリプトの次の構造を取得しました。

SelectMore("uc6d0")
SelectMore("uc22d")
SelectMore("uc774")
SelectMore("uac1c")
SelectMore("ubbf8")
SelectMore("uacf0")
SelectMore("ubc8c")
SelectMore("ub3cc")
SelectMore("uace0")
SelectMore("ub798")

同じ関数SelectMore()を繰り返し呼び出しているだけです。この関数は、以前の選択をクリアせずに、引数として渡されるグリフを選択します。また、このスクリプトは、fontforge が実行中であり、フォント ファイルが開かれていることを前提としていることにも注意してください。(fontforge スクリプトのヘルプへのリンク、以下を参照)。Fontforge 内から直接スクリプトを実行するには、メイン メニューから[ファイル -> スクリプトの実行... ] を選択し、スクリプトを貼り付けて [実行] をクリックします。

これで、使用されているすべてのグリフが選択され、使用されていないすべてのグリフが選択解除されます。メイン メニューで、[編集] -> [選択] -> [選択を反転] をクリックして、未使用のグリフをすべて選択します。これで、メイン メニューの[エンコーディング -> グリフの切り離しと削除] を実行して、選択した (未使用の) グリフをすべて削除できます。フォントを新しいフォントとして保存すると、必要なサブセットが作成されます。

于 2016-03-02T17:43:43.083 に答える