Uniscribeは、 UnicodeでエンコードされたテキストをレンダリングするためのMicrosoft Windowsのサービス群であり、複雑なテキストレイアウトをサポートしています。これは、ダイナミックリンクライブラリUSP10.DLLに実装されています。Uniscribeは、Windows 98 SE、Windows 2000、およびInternet Explorer 5.0でリリースされました。さらに、Windows CEプラットフォームはバージョン5.0以降、Uniscribeをサポートしています。
「USP」はUnicodeScripts Processorの略称です。その機能は以下のとおりです。
Uniscribeは2021年現在もメンテナンスが続けられているが、より多くの機能を備えた代替ソフトであるDirectWriteがWindows 7で導入された。[ 1 ]
usp10.dll以下に、 の一般的なバージョンと、それらが配布される方法をいくつか示します。
機能はバージョン番号の「メジャー.マイナー」部分のみに基づいて追加され、完全なバージョン番号の3番目の部分は、MicrosoftがDLLを移植したシステムターゲット識別番号に使用され、最後の部分は各ターゲットシステムバージョンのビルド番号です(これは通常のシステム/ソフトウェア更新で変更される場合があります)。一部のホットフィックスは特定のアプリケーション(特にOfficeインストールディレクトリ内)のみをアップグレードするもので、Windowsシステムディレクトリでの使用には適していません(Windowsシステムディレクトリ内のDLLは決して更新すべきではなく、多くの場合システムによって保護されています)。
ファイルサイズは、DLLの特定のローカライズ(コンパイル対象システムまたはアプリケーションによって異なる)によって異なる場合があります。ここに示されているサイズは、米国英語ローカライズ版のものです。
複雑なテキストレイアウトを持つ文字体系では、タイポグラフィを正しくレンダリングするために、文脈的かつ非線形な要件があります。これらの要件には、連続する2つの文字が1つの形状に結合する合字(ラテン文字、デーヴァナーガリー文字)、発音で続く文字の前に一部の文字が書かれる順序変更(ベンガル文字、シンハラ文字、その他のインド系文字)、単語の最初、中間、または最後に出現するかどうかに応じて一部の文字の形状が変わる文脈による形状変更(アラビア語、モンゴル語)などがあります。
Uniscribe は、サポートされている複雑なスクリプトのタイポグラフィを処理するために、スクリプト固有のシェーピング エンジンをいくつか使用しています。これらは、複雑でないスクリプト (ラテン文字やキリル文字など) 用の汎用エンジンに加えて実装されています。現在使用されているエンジンには、 [ 3 ]インド語 (ベンガル語、デーヴァナーガリー文字、グジャラート語、グルムキー文字、カンナダ語など)、アラビア語、ハングル、ヘブライ語、クメール語、ミャンマー語、タイ語/ラオス語のバリアントが含まれます。
Unicode 標準の複雑さと OpenType 仕様の曖昧さにより、複雑なテキストレイアウトの実装が不完全または誤っていることがよくあります。スクリプト固有のシェーピング エンジンはケースバイケースで動作し、OpenType フォントの共通機能を一貫して処理しないため、OS プログラマーやフォント開発者が新しいスクリプトをサポートすることが困難になります。実装エラーは、既存のドキュメントやフォントとの後方互換性を損なうことなく後から修正することは非常に困難または不可能であり、多くの場合、新しい OpenType レイアウト機能と既存のフォントおよびタイポグラフィ レンダリング エンジンの再設計が必要になります。[ 3 ] [ 7 ] [ 8 ] [ 9 ]
Windows 10 では、Uniscribe に対して、汎用シェーピング モデルである Universal Shaping Engine (USE) を実装するための大規模なリファクタリング作業が行われました。[ 10 ]このエンジンは、Unicode 標準で定義されているグリフ プロパティに直接基づいており、専用のシェーピング エンジンを作成するのに必要な時間と労力をかけずに、適切なフォントを備えた複雑なスクリプトをサポートできることを期待しています。[ 4 ]
USE は、人間の文字体系のスーパーセットをモデル化した、インド系文字用に開発された汎用的な「ユニバーサル クラスタ モデル」に基づいています。このエンジンは、複雑な文字体系の各文字を、いくつかのカテゴリ、基本クラス、およびサブクラスに分類します。たとえば、暫定的なインド系文字の分類には、一般、音節、位置のカテゴリが含まれ、さらに基本 (数字、子音、声調文字、従属母音など)、基本母音 (独立母音)、数字 (ブラーフミー結合数字)、末尾、中間、修飾子子音、中間子音、および上、下、左、右の子音と母音に細分化されます。Unicode シンボル ストリングは、明確に定義されたルールを使用して USE クラスのコレクションに変換され、グリフ構成が標準的な手順となり、OpenType 仕様で定義されている現在の言語機能では不可能な文字間の相互作用が可能になります。[ 3 ]
ユニバーサルシェーピングエンジンは、2014年のOpenType開発者会議で発表されました。互換性のあるアプローチは、オープンソースのテキストシェーパーであるHarfBuzzにも実装されています。 2020 年の時点で、Windows 10 の USE は合計 70 の複雑な文字を処理します: Adlam、Ahom、Balinese、Batak、Bhaiski、Brahmi、Buginese、Buhid、Chakma、Cham、Chorasmian、Dives Akuru、Duployan、エジプト象形文字、Elymaic、Grantha、Gunjala Gondi、Hanifi Rohingya、ハヌヌー語、ジャワ語、カイティ語、カヤ・リー、カロシュティ語、キタン語小文字、ホジキ語、クダワディ語、レプチャ語、リンブ語、マハジャニ語、マカサル語、マンダ語、マニ教、メルヘン、マサラム・ゴンディ、メデファイドリン、メイテイ・マエク、ミャオ語、モディ語、モンゴル語、ムルタニ語、ナンディナガリ語、ネワ語、ンコ語、ニアケン・プアチュ・モン族、パハウモン族、ファグスパ、詩篇パフラヴィー語、レジャン語、サウラーシュトラ語、シャラダ語、シッダム語、シンハラ語、ソグド語、古ソグド語、ソヨンボ、スンダ語、シロティ ナグリ、タガログ語、タグバンワ、タイ レ、タイ タム (限定サポート)、タイ ベト語、タクリ語、チベット語、ティフィナグ、ティルフタ、ワンチョ、ヤジディ語、およびザナバザル広場。[ 10 ]
UniscribeはWindows 2000から利用可能でしたが、新しいバージョンではシステムに多くの機能が追加され、特に他の文字体系のサポートが強化されました。初期のアップデートではアラビア語とヘブライ語の表示がサポートされ、その後タイ語とベトナム語もサポートされました。Windows XP以降では、南アジアやアッシリアの文字体系もサポートされています。